Commit 2d9baac6 by Cameron Hayes

Finished the Order Entry Corrugated changes and will be moving to web plate

parent b3095bc3
......@@ -61,6 +61,7 @@ object FViewAddAddress: TFViewAddAddress
Width = 78
Height = 22
HeightPercent = 100.000000000000000000
TabOrder = 4
WidthPercent = 100.000000000000000000
end
object edtFirstLine: TWebEdit
......@@ -70,6 +71,7 @@ object FViewAddAddress: TFViewAddAddress
Height = 22
ChildOrder = 1
HeightPercent = 100.000000000000000000
TabOrder = 1
WidthPercent = 100.000000000000000000
end
object edtCity: TWebEdit
......@@ -79,6 +81,7 @@ object FViewAddAddress: TFViewAddAddress
Height = 22
ChildOrder = 2
HeightPercent = 100.000000000000000000
TabOrder = 3
WidthPercent = 100.000000000000000000
end
object edtZip: TWebEdit
......@@ -88,6 +91,7 @@ object FViewAddAddress: TFViewAddAddress
Height = 22
ChildOrder = 3
HeightPercent = 100.000000000000000000
TabOrder = 5
WidthPercent = 100.000000000000000000
end
object edtContact: TWebEdit
......@@ -97,6 +101,7 @@ object FViewAddAddress: TFViewAddAddress
Height = 22
ChildOrder = 4
HeightPercent = 100.000000000000000000
TabOrder = 6
WidthPercent = 100.000000000000000000
end
object edtAddress: TWebEdit
......@@ -106,6 +111,7 @@ object FViewAddAddress: TFViewAddAddress
Height = 22
ChildOrder = 1
HeightPercent = 100.000000000000000000
TabOrder = 2
WidthPercent = 100.000000000000000000
end
object edtNotification: TWebEdit
......
......@@ -29,6 +29,9 @@
<li class="nav-item pe-2">
<button id="btncancel" class="btn btn-danger btn-sm">Cancel</button>
</li>
<li class="nav-item pe-2">
<button id="btnsendtoqb" class="btn btn-primary btn-sm">Send To QB</button>
</li>
<li class="nav-item">
<button id="btnclose" class="btn btn-primary btn-sm">Close</button>
</li>
......@@ -37,9 +40,6 @@
</div>
</nav>
<div class="row mx-5">
<div class="col-12 col-md-8">
</div>
<h4 class="custom-h4 mt-3">Customer</h4>
<hr class="custom-hr">
<div class="row">
......@@ -57,9 +57,13 @@
Please Provide a Customer ID Name.
</div>
</div>
<div class="col-auto d-flex flex-column">
<label for="wdbcbinqb" class="form-label mt-2" style="font-weight: 700; font-size: 15px;">In QB?:</label>
<input id="wdbcbinqb" type="checkbox" class="form-check-input mt-1">
</div>
<div class="col-auto">
<label for="wdbe_first_name" style="font-weight: 700; font-size: 15px;" class="form-label mt-2">In Quickbooks?:</label>
<input id="edtinquickbooks"type="text" class="form-control" style="width: 150px"/>
<label for="wdbe_first_name" style="font-weight: 700; font-size: 15px;" class="form-label mt-2">QB Order Number:</label>
<input id="edtqbordernum"type="text" class="form-control" style="width: 150px" required/>
</div>
</div>
<h4 class="custom-h4 mt-3">Staff Fields</h4>
......@@ -90,11 +94,17 @@
</div>
<div class="col-auto">
<label for="wdbe_first_name" style="font-weight: 700; font-size: 15px;" class="form-label mt-2">Quantity:</label>
<input id="edtquantity" class="form-control input-sm" style="width: 100px"/>
<input id="edtquantity" class="form-control input-sm" style="width: 100px" type="number" min="1" required/>
<div class="invalid-feedback" style="font-size: 15px;" required>
Please Provide a Quantity.
</div>
</div>
<div class="col-auto">
<label for="wdbe_first_name" style="font-weight: 700; font-size: 15px;" class="form-label mt-2">Price:</label>
<input id="edtprice" class="form-control input-sm" style="width: 100px" type="number" min="0"/>
<input id="edtprice" class="form-control input-sm" style="width: 100px" type="number" min="1" required/>
<div class="invalid-feedback" style="font-size: 15px;">
Please Provide a Price.
</div>
</div>
<div>
<label for="wdbe_first_name" style="font-weight: 700; font-size: 15px;" class="form-label mt-2">Invoice To:</label>
......@@ -118,12 +128,26 @@
<input id="edtponumber" class="form-control input-sm" width='50%'/>
</div>
<div class="col-auto">
<label for="wdbe_first_name" style="font-weight: 700; font-size: 15px;" class="form-label mt-2">Job Name:</label>
<input id="edtjobname" class="form-control input-sm" style="width: 300px"/>
<label style="font-weight: 700; font-size: 15px;" class="form-label mt-2">QB Item:</label>
<select id="wcbqbitem" class='form-select' required></select>
<div class="invalid-feedback" style="font-size: 15px;">
Please Provide a QB Item.
</div>
</div>
<div class="col-auto">
<label for="wdbe_first_name" style="font-weight: 700; font-size: 15px;" class="form-label mt-2">QuickBooks Item:</label>
<select id="wcbqbitem" class='form-select'></select>
<label for="wdbe_first_name" style="font-weight: 700; font-size: 15px;" class="form-label mt-2">Job Name:</label>
<input id="edtjobname" class="form-control input-sm" style="width: 600px"/>
<div class="invalid-feedback" style="font-size: 15px;">
Please Provide a Job Name.
</div>
</div>
<div class="row">
<div class="col-12">
<label for="edtitemdescription" class="form-label mt-2" style="font-weight: 700; font-size: 15px;">
Item Description:
</label>
<input id="edtitemdescription" class="form-control" style="width: 100%;" />
</div>
</div>
<div class="col-auto">
<label for="wdbe_first_name" style="font-weight: 700; font-size: 15px;" class="form-label mt-2">Art Due:</label>
......
......@@ -83,11 +83,10 @@ type
procedure btnCancelClick(Sender: TObject);
procedure WebFormCreate(Sender: TObject);
[async] procedure GetCuttingDieOrder(Order_ID: string);
[async] procedure GetEmptyOrderInfo(customerID: string);
[async] procedure AddCuttingDieOrder(orderJSON: TJSONObject);
[async] procedure SetNewOrderInfo(customerID: string);
[async] procedure SendCuttingDieOrder();
procedure btnPDFClick(Sender: TObject);
[async] procedure GenerateReportPDF;
procedure SendOrderToServer();
function VerifyOrder(): boolean;
[async] procedure btnDeleteClick(Sender: TObject);
[async] procedure delOrder();
......@@ -155,7 +154,7 @@ end;
begin
if mode = 'ADD' then
begin
await(getEmptyOrderInfo(customerID));
await(SetNewOrderInfo(customerID));
EditMode;
end
else
......@@ -191,8 +190,6 @@ end;
procedure TFOrderEntryCuttingDie.btnQBClick(Sender: TObject);
begin
//ShowToast('Sending Orders To QuickBooks is not yet Implemented', 'info');
console.log(customer_qb_id);
if JS.toString(AuthService.TokenPayload.Properties['user_qb_id']) <> '' then
begin
if ( VerifyQBOrder() )then
......@@ -373,57 +370,12 @@ begin
input.classList.remove('is-invalid');
end;
procedure TFOrderEntryCuttingDie.SendOrderToServer;
var
orderJSON: TJSONObject;
fieldNames: TStringList;
itemList: TJSNodeList;
header, value: string;
Field: TField;
Response: TXDataClientResponse;
begin
orderJSON := TJSONObject.Create;
xdwdsOrder.Edit;
xdwdsOrder.Post;
xdwdsOrder.First;
while not xdwdsOrder.Eof do
begin
for Field in xdwdsOrder.Fields do
begin
if Field is TStringField then
begin
if Field.AsString = '' then
orderJSON.AddPair(Field.FieldName, '')
else
orderJSON.AddPair(Field.FieldName, Field.AsString); // Add all other fields
end
else if Field is TBooleanField then
begin
if Field.AsBoolean then
orderJSON.AddPair(Field.FieldName, 'T')
else
orderJSON.AddPair(Field.FieldName, '');
end
else if Field is TIntegerField then
orderJSON.AddPair(Field.FieldName, Field.AsInteger);
end;
xdwdsOrder.Next;
end;
orderJSON.AddPair('mode', mode);
console.log(orderJSON);
AddCuttingDieOrder(orderJSON);
end;
procedure TFOrderEntryCuttingDie.btnSaveClick(Sender: TObject);
// Converts all the information on the page into a JSON to then send to the server
begin
if VerifyOrder() then
begin
sendOrderToServer();
sendCuttingDieOrder();
ViewMode();
end;
window.scrollTo(0, 0);
......@@ -437,6 +389,8 @@ begin
xdwdsOrder.FieldByName('staff_fields_order_date').AsDateTime := 0;
xdwdsOrder.FieldByName('staff_fields_proof_date').AsDateTime := 0;
xdwdsOrder.FieldByName('staff_fields_ship_date').AsDateTime := 0;
xdwdsOrder.FieldByName('IN_QB').AsString := 'F';
xdwdsOrder.FieldByName('QB_ORDER_NUM').AsString := '';
xdwdsOrder.FieldByName('ORDER_ID').AsString := '';
xdwdsOrder.Post;
......@@ -508,24 +462,60 @@ begin
end;
procedure TFOrderEntryCuttingDie.AddCuttingDieOrder(orderJSON: TJSONObject);
procedure TFOrderEntryCuttingDie.SendCuttingDieOrder();
// sends the order JSON object to the server
var
Response: TXDataClientResponse;
jsObj: TJSObject;
orderJSON: TJSONObject;
fieldNames: TStringList;
itemList: TJSNodeList;
header, value: string;
Field: TField;
begin
orderJSON := TJSONObject.Create;
xdwdsOrder.Edit;
xdwdsOrderUSER_ID.AsString := JS.toString(AuthService.TokenPayload.Properties['user_id']);
xdwdsOrder.Post;
xdwdsOrder.First;
while not xdwdsOrder.Eof do
begin
for Field in xdwdsOrder.Fields do
begin
if Field is TStringField then
begin
if Field.AsString = '' then
orderJSON.AddPair(Field.FieldName, '')
else
orderJSON.AddPair(Field.FieldName, Field.AsString);
end
else if Field is TBooleanField then
begin
if Field.AsBoolean then
orderJSON.AddPair(Field.FieldName, 'T')
else
orderJSON.AddPair(Field.FieldName, 'F');
end
else if Field is TIntegerField then
orderJSON.AddPair(Field.FieldName, Field.AsInteger);
end;
xdwdsOrder.Next;
end;
orderJSON.AddPair('mode', mode);
try
Response := await(XDataWebClient1.RawInvokeAsync('ILookupService.AddCuttingDieOrder',
[orderJSON.ToString]));
jsObj := JS.TJSObject(Response.Result);
{if mode = 'ADD' then
OrderID := String(jsObj.Properties['OrderID']);}
xdwdsOrder.Close;
xdwdsOrder.SetJsonData(jsObj);
xdwdsOrder.Open;
edtOrderNum.Text := xdwdsOrder.FieldByName('ORDER_ID').AsString;
//edtOrderNum.Text := xdwdsOrder.FieldByName('ORDER_ID').AsString;
mode := 'EDIT';
ShowToast(String(jsObj.Properties['status']));
except
......@@ -662,8 +652,9 @@ begin
end;
procedure TFOrderEntryCuttingDie.getEmptyOrderInfo(customerID: string);
// gets a customer from the database then loads the appropiate fields
procedure TFOrderEntryCuttingDie.SetNewOrderInfo(customerID: string);
// Set new blank order and then gets the customer and items from the database
// then loads the appropiate fields
var
xdcResponse: TXDataClientResponse;
customer, items : TJSObject;
......@@ -684,7 +675,6 @@ begin
xdwdsOrder.FieldByName('staff_fields_invoice_to').AsString := string(customer['staff_fields_invoice_to']);
xdwdsOrder.FieldByName('COMPANY_ID').AsString := customerID;
xdwdsOrderUSER_ID.AsString := JS.toString(AuthService.TokenPayload.Properties['user_id']);
xdwdsOrder.Post;
xdwdsShipTo.Close;
......
......@@ -206,7 +206,6 @@ object FSelectCustomer: TFSelectCustomer
ScrollMode = scmItemScrolling
DesignTimeSampleData = True
OnCellClick = TMSFNCGrid1CellClick
ExplicitTop = 163
end
object btnCancel: TWebButton
Left = 556
......
......@@ -146,15 +146,15 @@ type
data: TList<TCustomerItem>;
end;
TFullOrder = class //TODO change name to TCorrugatedOrder
TCorrugatedOrder = class
Public
//Company
ORDER_ID: integer;
COMPANY_ID: integer;
NAME: string;
SHORT_NAME: string;
inQuickBooks: string;
ADDRESS_LIST: TList<TAddressItem>;
ITEMS: TItemList;
IN_QB: string;
QB_ORDER_NUM: string;
// Staff Fields:
staff_fields_order_date: string;
......@@ -174,12 +174,10 @@ type
staff_fields_art_location: string;
// Supplied by Customer:
supplied_by_customer_b_w_copy: boolean;
supplied_by_customer_color_copy: boolean;
supplied_by_customer_plates: boolean;
supplied_by_customer_sample_ca: boolean;
supplied_by_customer_color_copy: string;
supplied_by_customer_plates: string;
supplied_by_customer_sample_ca: string;
supplied_by_customer_dimension: string;
supplied_by_customer_disk_or_cd: boolean;
supplied_by_customer_e_mail: string;
supplied_by_customer_ftp: string;
supplied_by_customer_other: string;
......@@ -198,13 +196,13 @@ type
layout_accross_no: string;
layout_around_no: string;
layout_cad_file: string;
layout_excalibur_die: boolean;
layout_excalibur_die: string;
layout_rsc_style: string;
// Mounting
mounting_loose: string;
mounting_sticky_bak: boolean;
mounting_full_mount: boolean;
mounting_sticky_bak: string;
mounting_full_mount: string;
mounting_strip_mount: string;
mounting_standard_setup: string;
mounting_custom_backing: string;
......@@ -223,12 +221,12 @@ type
proofing_e_mail: string;
proofing_e_mail_attn: string;
proofing_ship_to: string;
proofing_full_size_panel: boolean;
proofing_print_card: boolean;
proofing_wide_format: boolean;
proofing_pdf_file: boolean;
proofing_full_size_panel: string;
proofing_print_card: string;
proofing_wide_format: string;
proofing_pdf_file: string;
proofing_other: string;
proofing_art_approved_as_is: boolean;
proofing_art_approved_as_is: string;
proofing_approved_date: string;
// Plates
......@@ -479,7 +477,7 @@ type
[HttpGet] function GetUsers(searchOptions: string): TUserList;
[HttpGet] function GetItems(searchOptions: string): TItemList;
[HttpGet] function GetOrders(searchOptions: string): TOrderList;
[HttpGet] function GetOrder(orderInfo: string): TFullOrder;
[HttpGet] function GetCorrugatedOrder(orderInfo: string): TCorrugatedOrder;
[HttpGet] function GetWebOrder(orderInfo: string): TWebOrder;
[HttpGet] function GetCuttingDieOrder(orderInfo: string): TCuttingDie;
[HttpGet] function GetCustomers(customerInfo: string): TCustomerList;
......
......@@ -475,12 +475,6 @@ begin
finally
IniFile.Free;
end;
f := TStringList.Create;
// Save to file (overwrites existing file)
f.SaveToFile('QB.txt');
f.Free;
end;
procedure TfQB.Button2Click(Sender: TObject);
......
......@@ -2,7 +2,7 @@
MemoLogLevel=3
FileLogLevel=5
webClientVersion=0.9.7
LogFileNum=927
LogFileNum=940
[Database]
Server=192.168.159.155
......@@ -17,8 +17,8 @@ Password=emsys01
CompanyID=9341454272655710
ClientID=ABgO14uvjh8XqLud7spQ8lkb98AUpcdA7HbyMJfCAtl65sQ5yy
ClientSecret=bQ06TRemHeAGFzVHRaTUvUoBU9jpU9itK6MOMgqN
RefreshToken=RT1-44-H0-1762010333a3v07cb5eb0luyn2rppm
AccessToken=eyJhbGciOiJkaXIiLCJlbmMiOiJBMTI4Q0JDLUhTMjU2IiwieC5vcmciOiJIMCJ9..7T78YBCSmvuJPRsZ9lGwuQ.1VJssLuNBAPKI7RAJOPluhtlA8DYgNcmXebNkWSxrHJ1949vjY4SPt5JjruuLsNOV09i_xKrQ76w9Zhjom1MiQaSyNoZHU-CZLfOtWgr9r3-gLxizdTlrTs9cEZs__8ep4_oe2r3n2u34QlM0xdVdLWxQbKYjpCl0k_58XPbS5Z_Vo2Y5qqoAuGJIRxMaTueMOH1ut-bV4Em318Ca1jN2DFCh_NYjLwFQQenWxOrCRMBaj7ZgB2yjtS5mEUxhuxsB7FAeONYqBSJ0OAy1yzWE-Ycxzt4dcZBCTHxzUCTH0-P0Mb_M6ivfmiYyKctf2gsZD8Xw91MgnF9TPwG8yXdej05fWr94VWeC3tFp0V-RYYv3_XRuim6fCvxJjWzfVEZwv9jUiZ6WByNSzu1k1W5_rQuSG7_Hs8WiDC1sBChJLfDclLO8pMoznqpSrM8ZmiNoYm4aZPQrpO6rgY8NiTokZRyeTw2adtW1YgDJsZdoEw.i2MSpKztX0v6UN0vZz5gQg
LastRefresh=7/23/2025 11:18:54 AM
RefreshToken=RT1-75-H0-17621978856h99eylecajhs2sw9gvm
AccessToken=eyJhbGciOiJkaXIiLCJlbmMiOiJBMTI4Q0JDLUhTMjU2IiwieC5vcmciOiJIMCJ9..bxX38cX1EtQoXIcJyc1aXQ.PAkiydy6yOM54Qzsyu7V2ztL6yuSg0SWBUuAPHAuMHboDIfDJleOAvINtZtBKNPNwsicE9kn9myqRSuIrMBNIMrONueVYFn5mQk1tSGL21rsQ0PYtYITMtOaE3xwqmjAk_MGDFq7NVbI51MQOvdUe1UwPXEX7GnRUf9W_XrIWksMujZh7n2dmbLyppee5VCC-FNWt3fqhxNQpA3zrQLXXrgK9MNei1A3jgnYhVscNUiIBJm2JBqK1YMbXwQ1MoP_YPJPvw7k8nyPRzY3KO90Egr25M9l-lI3C4oIKvaTs64uLCXxINX_9yI4CDbJWnreA6PrubvWfuJralTCvvWsTnEPGBABu2A1ArrpnaSiGr_XgxQAHE9gHAU2YA4tb20RoAY5CPxpH-DhpoxqkyOvdQJzWXVcxlChXQmN1yzKJALJGRNZfnp4DD2CtLN202YHMY9EOTMw6PkcKCC8PD8T-hg22uT6fLOf8pAGq-svy58.rgWZyjDgeaMfm98j_xsfWw
LastRefresh=7/25/2025 3:42:20 PM
--RefreshToken=RT1-10-H0-1760618473k44t73jittvqlr4wynn6
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