Commit 1f190ab3 by Elias Sarraf

Add revision notes and audit tracking for adding to QB. Also added pdf for DB update steps

parent 9b92df15
...@@ -242,6 +242,7 @@ type ...@@ -242,6 +242,7 @@ type
changed: boolean; changed: boolean;
notification: string; notification: string;
customer_qb_id: string; customer_qb_id: string;
REVISION_NOTES: string;
procedure RemoveColorRow(Sender: TObject); procedure RemoveColorRow(Sender: TObject);
[async] procedure InitializeForm; [async] procedure InitializeForm;
[async] procedure AddEstimate(orderID: string); [async] procedure AddEstimate(orderID: string);
...@@ -318,7 +319,7 @@ begin ...@@ -318,7 +319,7 @@ begin
notification := TJSObject(Response.Result); notification := TJSObject(Response.Result);
msg := string(notification['status']); msg := string(notification['status']);
Utils.HideSpinner('spinner'); Utils.HideSpinner('spinner');
getOrder(orderID); getOrder(xdwdsOrder.FieldByName('ORDER_ID').AsString);
ShowToast(msg); ShowToast(msg);
except except
...@@ -341,6 +342,7 @@ begin ...@@ -341,6 +342,7 @@ begin
xdwdsOrder.FieldByName('IN_QB').AsString := 'F'; xdwdsOrder.FieldByName('IN_QB').AsString := 'F';
xdwdsOrder.FieldByName('QB_ORDER_NUM').AsString := ''; xdwdsOrder.FieldByName('QB_ORDER_NUM').AsString := '';
REVISION_NOTES := 'Order was copied from ORDER_ID: ' + xdwdsOrder.FieldByName('ORDER_ID').AsString;
xdwdsOrder.FieldByName('ORDER_ID').AsString := ''; xdwdsOrder.FieldByName('ORDER_ID').AsString := '';
xdwdsOrder.Post; xdwdsOrder.Post;
EditMode(); EditMode();
...@@ -384,6 +386,8 @@ end; ...@@ -384,6 +386,8 @@ end;
procedure TFOrderEntryCorrugated.btnQBClick(Sender: TObject); procedure TFOrderEntryCorrugated.btnQBClick(Sender: TObject);
var
orderJSON: TJSONObject;
begin begin
if JS.toString(AuthService.TokenPayload.Properties['user_qb_id']) <> '' then if JS.toString(AuthService.TokenPayload.Properties['user_qb_id']) <> '' then
begin begin
...@@ -392,7 +396,10 @@ begin ...@@ -392,7 +396,10 @@ begin
if wdbcbINQB.Checked = false then if wdbcbINQB.Checked = false then
begin begin
Utils.ShowSpinner('spinner'); Utils.ShowSpinner('spinner');
addEstimate(xdwdsOrder.FieldByName('ORDER_ID').AsString); orderJSON := TJSONObject.Create;
orderJSON.AddPair('ORDER_ID', xdwdsOrder.FieldByName('ORDER_ID').AsString);
orderJSON.AddPair('USER_ID', JS.toString(AuthService.TokenPayload.Properties['user_id']));
addEstimate(orderJSON.ToString);
end end
else else
ShowToast('Failure:Cannot submit orders already in QuickBooks', 'failure'); ShowToast('Failure:Cannot submit orders already in QuickBooks', 'failure');
...@@ -495,6 +502,7 @@ begin ...@@ -495,6 +502,7 @@ begin
end; end;
orderJSON.AddPair('mode', mode); orderJSON.AddPair('mode', mode);
orderJSON.AddPair('REVISION_NOTES', REVISION_NOTES);
Response := await(XDataWebClient1.RawInvokeAsync('ILookupService.AddCorrugatedOrder', Response := await(XDataWebClient1.RawInvokeAsync('ILookupService.AddCorrugatedOrder',
[orderJSON.ToString])); [orderJSON.ToString]));
......
...@@ -114,6 +114,7 @@ type ...@@ -114,6 +114,7 @@ type
customer_qb_id: string; customer_qb_id: string;
mode: string; mode: string;
notification: string; notification: string;
REVISION_NOTES: string;
procedure EditMode; procedure EditMode;
[async] procedure InitializeForm; [async] procedure InitializeForm;
public public
...@@ -179,7 +180,7 @@ begin ...@@ -179,7 +180,7 @@ begin
notification := TJSObject(Response.Result); notification := TJSObject(Response.Result);
msg := string(notification['status']); msg := string(notification['status']);
Utils.HideSpinner('spinner'); Utils.HideSpinner('spinner');
getCuttingDieOrder(orderID); getCuttingDieOrder(xdwdsOrder.FieldByName('ORDER_ID').AsString);
ShowToast(msg); ShowToast(msg);
except except
...@@ -189,6 +190,8 @@ begin ...@@ -189,6 +190,8 @@ begin
end; end;
procedure TFOrderEntryCuttingDie.btnQBClick(Sender: TObject); procedure TFOrderEntryCuttingDie.btnQBClick(Sender: TObject);
var
orderJSON: TJSONObject;
begin begin
if JS.toString(AuthService.TokenPayload.Properties['user_qb_id']) <> '' then if JS.toString(AuthService.TokenPayload.Properties['user_qb_id']) <> '' then
begin begin
...@@ -197,7 +200,10 @@ begin ...@@ -197,7 +200,10 @@ begin
if wdbcbINQB.Checked = false then if wdbcbINQB.Checked = false then
begin begin
Utils.ShowSpinner('spinner'); Utils.ShowSpinner('spinner');
addEstimate(xdwdsOrder.FieldByName('ORDER_ID').AsString); orderJSON := TJSONObject.Create;
orderJSON.AddPair('ORDER_ID', xdwdsOrder.FieldByName('ORDER_ID').AsString);
orderJSON.AddPair('USER_ID', JS.toString(AuthService.TokenPayload.Properties['user_id']));
addEstimate(orderJSON.ToString);
end end
else else
ShowToast('Failure:Cannot submit orders already in QuickBooks', 'failure'); ShowToast('Failure:Cannot submit orders already in QuickBooks', 'failure');
...@@ -296,7 +302,7 @@ begin ...@@ -296,7 +302,7 @@ begin
xdwdsOrder.FieldByName('staff_fields_ship_date').AsDateTime := 0; xdwdsOrder.FieldByName('staff_fields_ship_date').AsDateTime := 0;
xdwdsOrder.FieldByName('IN_QB').AsString := 'F'; xdwdsOrder.FieldByName('IN_QB').AsString := 'F';
xdwdsOrder.FieldByName('QB_ORDER_NUM').AsString := ''; xdwdsOrder.FieldByName('QB_ORDER_NUM').AsString := '';
REVISION_NOTES := 'Order was copied from ORDER_ID: ' + xdwdsOrder.FieldByName('ORDER_ID').AsString;
xdwdsOrder.FieldByName('ORDER_ID').AsString := ''; xdwdsOrder.FieldByName('ORDER_ID').AsString := '';
xdwdsOrder.Post; xdwdsOrder.Post;
ShowToast('Success: Order Successfully Copied'); ShowToast('Success: Order Successfully Copied');
...@@ -410,6 +416,7 @@ begin ...@@ -410,6 +416,7 @@ begin
end; end;
orderJSON.AddPair('mode', mode); orderJSON.AddPair('mode', mode);
orderJSON.AddPair('REVISION_NOTES', REVISION_NOTES);
try try
Response := await(XDataWebClient1.RawInvokeAsync('ILookupService.AddCuttingDieOrder', Response := await(XDataWebClient1.RawInvokeAsync('ILookupService.AddCuttingDieOrder',
......
...@@ -249,6 +249,7 @@ type ...@@ -249,6 +249,7 @@ type
mode: string; mode: string;
notification: string; notification: string;
customer_qb_id: string; customer_qb_id: string;
REVISION_NOTES: string;
procedure RemoveColorRow(Sender: TObject); procedure RemoveColorRow(Sender: TObject);
[async] procedure InitializeForm; [async] procedure InitializeForm;
//FJSONProc1: TJSONProc1; //FJSONProc1: TJSONProc1;
...@@ -404,6 +405,7 @@ begin ...@@ -404,6 +405,7 @@ begin
xdwdsOrder.FieldByName('IN_QB').AsString := 'F'; xdwdsOrder.FieldByName('IN_QB').AsString := 'F';
xdwdsOrder.FieldByName('QB_ORDER_NUM').AsString := ''; xdwdsOrder.FieldByName('QB_ORDER_NUM').AsString := '';
REVISION_NOTES := 'Order was copied from ORDER_ID: ' + xdwdsOrder.FieldByName('ORDER_ID').AsString;
xdwdsOrder.FieldByName('ORDER_ID').AsString := ''; xdwdsOrder.FieldByName('ORDER_ID').AsString := '';
xdwdsOrder.Post; xdwdsOrder.Post;
EditMode(); EditMode();
...@@ -449,6 +451,8 @@ begin ...@@ -449,6 +451,8 @@ begin
end; end;
procedure TFOrderEntryWeb.btnQBClick(Sender: TObject); procedure TFOrderEntryWeb.btnQBClick(Sender: TObject);
var
orderJSON: TJSONObject;
begin begin
if JS.toString(AuthService.TokenPayload.Properties['user_qb_id']) <> '' then if JS.toString(AuthService.TokenPayload.Properties['user_qb_id']) <> '' then
begin begin
...@@ -457,7 +461,10 @@ begin ...@@ -457,7 +461,10 @@ begin
if wdbcbINQB.Checked = false then if wdbcbINQB.Checked = false then
begin begin
Utils.ShowSpinner('spinner'); Utils.ShowSpinner('spinner');
addEstimate(xdwdsOrder.FieldByName('ORDER_ID').AsString); orderJSON := TJSONObject.Create;
orderJSON.AddPair('ORDER_ID', xdwdsOrder.FieldByName('ORDER_ID').AsString);
orderJSON.AddPair('USER_ID', JS.toString(AuthService.TokenPayload.Properties['user_id']));
addEstimate(orderJSON.ToString);
end end
else else
ShowToast('Failure:Cannot submit orders already in QuickBooks', 'failure'); ShowToast('Failure:Cannot submit orders already in QuickBooks', 'failure');
...@@ -479,7 +486,7 @@ begin ...@@ -479,7 +486,7 @@ begin
notification := TJSObject(Response.Result); notification := TJSObject(Response.Result);
msg := string(notification['status']); msg := string(notification['status']);
Utils.HideSpinner('spinner'); Utils.HideSpinner('spinner');
getOrder(orderID); getOrder(xdwdsOrder.FieldByName('ORDER_ID').AsString);
ShowToast(msg); ShowToast(msg);
except except
...@@ -575,9 +582,9 @@ begin ...@@ -575,9 +582,9 @@ begin
end; end;
xdwdsOrder.Next; xdwdsOrder.Next;
end; end;
orderJSON.AddPair('mode', mode);
console.log(orderJSON); orderJSON.AddPair('mode', mode);
orderJSON.AddPair('REVISION_NOTES', REVISION_NOTES);
try try
Response := await(XDataWebClient1.RawInvokeAsync('ILookupService.AddWebOrder', [orderJSON.ToString])); Response := await(XDataWebClient1.RawInvokeAsync('ILookupService.AddWebOrder', [orderJSON.ToString]));
......
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup> <PropertyGroup>
<ProjectGuid>{DB6F5DBF-7E4B-45DA-AFFA-6C8DF15BA740}</ProjectGuid> <ProjectGuid>{DB6F5DBF-7E4B-45DA-AFFA-6C8DF15BA740}</ProjectGuid>
<ProjectVersion>20.2</ProjectVersion> <ProjectVersion>20.3</ProjectVersion>
<FrameworkType>VCL</FrameworkType> <FrameworkType>VCL</FrameworkType>
<MainSource>webKGOrders.dpr</MainSource> <MainSource>webKGOrders.dpr</MainSource>
<Base>True</Base> <Base>True</Base>
...@@ -432,6 +432,16 @@ ...@@ -432,6 +432,16 @@
<Operation>1</Operation> <Operation>1</Operation>
</Platform> </Platform>
</DeployClass> </DeployClass>
<DeployClass Name="AndroidSplashStylesV35">
<Platform Name="Android">
<RemoteDir>res\values-v35</RemoteDir>
<Operation>1</Operation>
</Platform>
<Platform Name="Android64">
<RemoteDir>res\values-v35</RemoteDir>
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="Android_AdaptiveIcon"> <DeployClass Name="Android_AdaptiveIcon">
<Platform Name="Android"> <Platform Name="Android">
<RemoteDir>res\drawable-anydpi-v26</RemoteDir> <RemoteDir>res\drawable-anydpi-v26</RemoteDir>
......
...@@ -124,7 +124,7 @@ var ...@@ -124,7 +124,7 @@ var
TxnTaxCodeRef: TJSONObject; TxnTaxCodeRef: TJSONObject;
TxnTaxDetail: TJSONObject; TxnTaxDetail: TJSONObject;
JSONData: TJSONObject; JSONData: TJSONObject;
ORDER_ID, companyID, RefreshToken, AccessToken: string; ORDER_ID, companyID, RefreshToken, AccessToken, USER_ID: string;
table, msg: string; table, msg: string;
ShipMethodRef: TJSONObject; ShipMethodRef: TJSONObject;
LastRefresh: TDateTime; LastRefresh: TDateTime;
...@@ -148,7 +148,13 @@ begin ...@@ -148,7 +148,13 @@ begin
Logger.Log(3, 'TLookupService.AddEstimate'); Logger.Log(3, 'TLookupService.AddEstimate');
try try
try try
ORDER_ID := orderInfo; JSONData := TJSONObject.ParseJSONValue(orderInfo) as TJSONObject;
if JSONData = nil then
raise Exception.Create('Invalid JSON format');
ORDER_ID := JSONData.GetValue<string>('ORDER_ID');
USER_ID := JSONData.GetValue<string>('USER_ID');
SQL := 'select * from orders where ORDER_ID = ' + ORDER_ID; SQL := 'select * from orders where ORDER_ID = ' + ORDER_ID;
doQuery(ordersDB.UniQuery1, SQL); doQuery(ordersDB.UniQuery1, SQL);
if ordersDB.UniQuery1.FieldByName('ORDER_TYPE').AsString = 'corrugated_plate' then if ordersDB.UniQuery1.FieldByName('ORDER_TYPE').AsString = 'corrugated_plate' then
...@@ -281,8 +287,6 @@ begin ...@@ -281,8 +287,6 @@ begin
restRequest.Execute; restRequest.Execute;
//memo1.Lines.Add(restresponse.Content);
jsValue := restResponse.JSONValue; jsValue := restResponse.JSONValue;
jsObj := TJSONObject(jsValue).GetValue<TJSONObject>('Estimate'); jsObj := TJSONObject(jsValue).GetValue<TJSONObject>('Estimate');
...@@ -295,6 +299,7 @@ begin ...@@ -295,6 +299,7 @@ begin
ordersDB.UniQuery1.FieldByName('QB_ORDER_NUM').AsString := jsObj.GetValue<string>('DocNumber'); ordersDB.UniQuery1.FieldByName('QB_ORDER_NUM').AsString := jsObj.GetValue<string>('DocNumber');
ordersDB.UniQuery1.FieldByName('QB_ESTIMATE_ID').AsString := jsObj.GetValue<string>('Id'); ordersDB.UniQuery1.FieldByName('QB_ESTIMATE_ID').AsString := jsObj.GetValue<string>('Id');
ordersDB.UniQuery1.FieldByName('QB_CREATE_DATE').AsDateTime := Now; ordersDB.UniQuery1.FieldByName('QB_CREATE_DATE').AsDateTime := Now;
ordersDB.UniQuery1.FieldByName('QB_ORDER_USER').AsString := USER_ID;
ordersDB.UniQuery1.Post; ordersDB.UniQuery1.Post;
result := TJSONObject.Create; result := TJSONObject.Create;
...@@ -2597,8 +2602,6 @@ begin ...@@ -2597,8 +2602,6 @@ begin
doQuery(OrdersDB.UniQuery1, SQL); doQuery(OrdersDB.UniQuery1, SQL);
RevisionID := OrdersDB.UniQuery1.FieldByName('KEYVALUE').AsInteger; RevisionID := OrdersDB.UniQuery1.FieldByName('KEYVALUE').AsInteger;
// Begin Area where we could replace this with marks code(need to convert from c++
SQL := 'select * from ' + table + ' where ORDER_ID = -1'; SQL := 'select * from ' + table + ' where ORDER_ID = -1';
doQuery(ordersDB.UniQuery1, SQL); doQuery(ordersDB.UniQuery1, SQL);
...@@ -2618,19 +2621,16 @@ begin ...@@ -2618,19 +2621,16 @@ begin
Field.AsString := Pair.JsonValue.Value Field.AsString := Pair.JsonValue.Value
else if field is TIntegerField then else if field is TIntegerField then
Field.AsInteger := Pair.JsonValue.AsType<Integer>; Field.AsInteger := Pair.JsonValue.AsType<Integer>;
end; end;
end; end;
ordersDB.UniQuery1.FieldByName('ORDER_ID').AsString := OrderID; ordersDB.UniQuery1.FieldByName('ORDER_ID').AsString := OrderID;
ordersDB.UniQuery1.FieldByName('ORDER_DATE').AsDateTime := Now; ordersDB.UniQuery1.FieldByName('ORDER_DATE').AsDateTime := Now;
// End Area
ordersDB.UniQuery1.FieldByName('ORDER_STATUS').AsString := 'ACTIVE'; ordersDB.UniQuery1.FieldByName('ORDER_STATUS').AsString := 'ACTIVE';
ordersDB.UniQuery1.FieldByName('REVISION_NUMBER').AsInteger := rev_num; ordersDB.UniQuery1.FieldByName('REVISION_NUMBER').AsInteger := rev_num;
ordersDB.UniQuery1.FieldByName('ORDER_REVISION_ID').AsInteger := RevisionID; ordersDB.UniQuery1.FieldByName('ORDER_REVISION_ID').AsInteger := RevisionID;
ordersDB.UniQuery1.FieldByName('REVISION_USER_ID').AsString := order.GetValue<string>('USER_ID'); ordersDB.UniQuery1.FieldByName('REVISION_USER_ID').AsString := order.GetValue<string>('USER_ID');
// Post the record to the database
ordersDB.UniQuery1.Post; ordersDB.UniQuery1.Post;
end; end;
......
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup> <PropertyGroup>
<ProjectGuid>{2A3028D9-BC39-4625-9BA5-0338012E2824}</ProjectGuid> <ProjectGuid>{2A3028D9-BC39-4625-9BA5-0338012E2824}</ProjectGuid>
<ProjectVersion>20.2</ProjectVersion> <ProjectVersion>20.3</ProjectVersion>
<FrameworkType>VCL</FrameworkType> <FrameworkType>VCL</FrameworkType>
<Base>True</Base> <Base>True</Base>
<Config Condition="'$(Config)'==''">Debug</Config> <Config Condition="'$(Config)'==''">Debug</Config>
...@@ -355,6 +355,16 @@ ...@@ -355,6 +355,16 @@
<Operation>1</Operation> <Operation>1</Operation>
</Platform> </Platform>
</DeployClass> </DeployClass>
<DeployClass Name="AndroidSplashStylesV35">
<Platform Name="Android">
<RemoteDir>res\values-v35</RemoteDir>
<Operation>1</Operation>
</Platform>
<Platform Name="Android64">
<RemoteDir>res\values-v35</RemoteDir>
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="Android_AdaptiveIcon"> <DeployClass Name="Android_AdaptiveIcon">
<Platform Name="Android"> <Platform Name="Android">
<RemoteDir>res\drawable-anydpi-v26</RemoteDir> <RemoteDir>res\drawable-anydpi-v26</RemoteDir>
......
...@@ -2,12 +2,12 @@ ...@@ -2,12 +2,12 @@
MemoLogLevel=5 MemoLogLevel=5
FileLogLevel=5 FileLogLevel=5
webClientVersion=1.0.0 webClientVersion=1.0.0
LogFileNum=981 LogFileNum=993
[Database] [Database]
--Server=192.168.159.158 Server=192.168.159.158
--Server=192.168.102.130 --Server=192.168.102.130
Server=192.168.75.133 --Server=192.168.75.133
Database=kg_order_entry Database=kg_order_entry
Username=root Username=root
Password=emsys01 Password=emsys01
...@@ -17,6 +17,6 @@ Password=emsys01 ...@@ -17,6 +17,6 @@ Password=emsys01
CompanyID=9341454336461805 CompanyID=9341454336461805
ClientID=ABYqlDx1EsacZYXvHIJ7RDB7zmnQdwABU3fwQLIZPmBgU0VW1P ClientID=ABYqlDx1EsacZYXvHIJ7RDB7zmnQdwABU3fwQLIZPmBgU0VW1P
ClientSecret=PM7OnvQWsgOqjWfDpZAnyRttDN9446Am6d85pDxr ClientSecret=PM7OnvQWsgOqjWfDpZAnyRttDN9446Am6d85pDxr
RefreshToken=RT1-234-H0-1766080860lt6q6wexz5p1797m4pfa RefreshToken=RT1-2-H0-1769887296o3747tv75irrt167rolf
AccessToken=eyJhbGciOiJkaXIiLCJlbmMiOiJBMTI4Q0JDLUhTMjU2IiwieC5vcmciOiJIMCJ9..4Lnl865y7RBKrwAlYrUdZw.-NX4xZUYbruXp8U0WT0guGo_MdrKBVAFacX_wbynpC0-kj48Avrm-c-JVsgU32egu40w_-4OIuo3Zt2dIZ12oCb108eysVI0njIa81noaCmS86tsjM1Lc8mO6O4uEVUiquwtkAKyJcMb16EfcWs05iEHj7alkL5G3O95JvH2xTC-N1rLUAEmPohEk-FJL0gdWKxO1905Q3EdCDCrFImg7WwCdeC3SDG5Ne9DIUIy0FWqA3wRHwOZllBxGT-M3PCpwGvVEcPd7EimdlteijNoIB_F55cRHQYgPGWPS779EVHa7m279rSJXAdL6ZLW76iorTGnXVnhQs162ejQiXIY8FFmTJOQWZxIVLDA44CQfcS4cwpTbDvVveoyZsh9NP4KaRai2fu4llzKB5Miqqjh5AEvX8w66XYhoC9J-lYFu8IBk0YQuVF2E3Vkf4dNwIiaFfgBOj7OR1tR1WCFiT-I5ipI4zS-BZaVFbLtIIYCKX8.0jpvxgPnhLC0gJMFpbfcCA AccessToken=eyJhbGciOiJkaXIiLCJlbmMiOiJBMTI4Q0JDLUhTMjU2IiwieC5vcmciOiJIMCJ9..84BZUCQk1D0zH5dIEEW2zw.tmbh1n6DyHI3Z9BVuuztZNe8Y75GzsC5sMwqrIec0-yfcr9aBxO8FTQOAhpe4JLeZ1M2hatEf430cH_iYvK0lzV5HNl888ZlYiR8yDL4bfUj5PyNXdffmFZ5-yrtVTuC8heBWl_6VJDP0GSZXz5OtiG_0-Tn1kY6i6jZvQ1UFu9l7tgwVN-4bxoP2s36e-4llhD8Y-H7WreulFCJ5-k-73ICL5aBi7gn8eX9T3PpXSROyWqHIQ0ph5eOumCeykjaRkWn4GafmZSp20IaWg7Er1gZluzEOGc_TZ_5GkSt1_Bx-JpH9piDioF91BynHgDszIZ3mD18QNmmisVKzO6Z1eBT753RhaPEPa_qruR7oHay0s3RO1PhGf5UpQ4cTP-h0e_2hD02P-x1Svj-zlwDUyiiOrgwyPHiSjiTMv32puMoT-dGrBDWnt0BPp7A5Dle8CgUczw_SAnNZFtQMTZRbKJq8B7URe6M2Fs87HYs1HU.uWftkuUZ_GRIVaAg5k8pLw
LastRefresh=8/7/2025 12:51:00 PM LastRefresh=10/22/2025 3:52:18 PM
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment