Commit 36545ef4 by emsys

Merge branch 'mac3' into cam3

parents 5b226bcf 5ee48b91
object FViewAddCustomer: TFViewAddCustomer object FViewAddCustomer: TFViewAddCustomer
Width = 842 Width = 842
Height = 607 Height = 607
OnShow = WebFormShow CSSLibrary = cssBootstrap
ElementFont = efCSS
object lblFormState: TWebLabel
Left = 18
Top = 16
Width = 3
Height = 15
ElementID = 'lbl_form_state'
HeightPercent = 100.000000000000000000
WidthPercent = 100.000000000000000000
end
object dtpStartDate: TWebDateTimePicker object dtpStartDate: TWebDateTimePicker
Left = 19 Left = 19
Top = 216 Top = 216
...@@ -236,7 +246,7 @@ object FViewAddCustomer: TFViewAddCustomer ...@@ -236,7 +246,7 @@ object FViewAddCustomer: TFViewAddCustomer
BorderColor = clSilver BorderColor = clSilver
ChildOrder = 11 ChildOrder = 11
ElementFont = efCSS ElementFont = efCSS
ElementHeaderClassName = 'thead-light sticky-top bg-light' ElementHeaderClassName = 'thead-light sticky-top bg-light border-light'
ElementPosition = epRelative ElementPosition = epRelative
ElementTableClassName = 'table table-striped table-hover table-bordered text-sm' ElementTableClassName = 'table table-striped table-hover table-bordered text-sm'
Footer.ButtonActiveElementClassName = 'btn btn-primary' Footer.ButtonActiveElementClassName = 'btn btn-primary'
...@@ -313,6 +323,7 @@ object FViewAddCustomer: TFViewAddCustomer ...@@ -313,6 +323,7 @@ object FViewAddCustomer: TFViewAddCustomer
Width = 121 Width = 121
Height = 22 Height = 22
ChildOrder = 22 ChildOrder = 22
EditType = weNumeric
ElementID = 'edtshippingzip' ElementID = 'edtshippingzip'
Enabled = False Enabled = False
HeightPercent = 100.000000000000000000 HeightPercent = 100.000000000000000000
...@@ -432,18 +443,6 @@ object FViewAddCustomer: TFViewAddCustomer ...@@ -432,18 +443,6 @@ object FViewAddCustomer: TFViewAddCustomer
WidthPercent = 100.000000000000000000 WidthPercent = 100.000000000000000000
OnClick = btnShipAddClick OnClick = btnShipAddClick
end end
object btn_confirm_delete: TWebButton
Left = 725
Top = 433
Width = 96
Height = 25
Caption = 'Delete'
ChildOrder = 82
ElementID = 'btn_confirm_delete'
HeightPercent = 100.000000000000000000
WidthPercent = 100.000000000000000000
OnClick = btn_confirm_deleteClick
end
object edtFirstLine: TWebEdit object edtFirstLine: TWebEdit
Left = 190 Left = 190
Top = 430 Top = 430
...@@ -475,12 +474,12 @@ object FViewAddCustomer: TFViewAddCustomer ...@@ -475,12 +474,12 @@ object FViewAddCustomer: TFViewAddCustomer
Top = 72 Top = 72
end end
object WebDataSource1: TWebDataSource object WebDataSource1: TWebDataSource
AutoEdit = False
DataSet = XDataWebDataSet1 DataSet = XDataWebDataSet1
Left = 532 Left = 532
Top = 126 Top = 126
end end
object XDataWebDataSet1: TXDataWebDataSet object XDataWebDataSet1: TXDataWebDataSet
AfterEdit = XDataWebDataSet1AfterEdit
Connection = DMConnection.ApiConnection Connection = DMConnection.ApiConnection
Left = 426 Left = 426
Top = 132 Top = 132
...@@ -528,12 +527,12 @@ object FViewAddCustomer: TFViewAddCustomer ...@@ -528,12 +527,12 @@ object FViewAddCustomer: TFViewAddCustomer
end end
end end
object wdsShipTo: TWebDataSource object wdsShipTo: TWebDataSource
AutoEdit = False
DataSet = xdwdsShipTo DataSet = xdwdsShipTo
Left = 698 Left = 698
Top = 128 Top = 128
end end
object xdwdsShipTo: TXDataWebDataSet object xdwdsShipTo: TXDataWebDataSet
AfterEdit = xdwdsShipToAfterEdit
Left = 698 Left = 698
Top = 44 Top = 44
object xdwdsShipToADDRESS: TStringField object xdwdsShipToADDRESS: TStringField
...@@ -565,6 +564,7 @@ object FViewAddCustomer: TFViewAddCustomer ...@@ -565,6 +564,7 @@ object FViewAddCustomer: TFViewAddCustomer
Top = 42 Top = 42
end end
object wdsUsers: TWebDataSource object wdsUsers: TWebDataSource
AutoEdit = False
DataSet = xdwdsUsers DataSet = xdwdsUsers
Left = 776 Left = 776
Top = 144 Top = 144
......
<nav class="navbar navbar-expand navbar-light bg-light sticky-top" style="z-index: 100;">
<div class="container-fluid ps-0"> <nav class="navbar navbar-expand navbar-light bg-light sticky-top border-light" style="z-index: 100;">
<ul class="navbar-nav me-auto ps-2"> <div class="container-fluid d-flex align-items-center ps-0 pe-0">
<!-- Left-aligned form state label -->
<div class="me-auto ps-3">
<label id="lbl_form_state" class="form-label mb-0 fw-bold text-uppercase text-nowrap text-danger" style="font-size: 16px;">View Mode</label>
</div>
<!-- Right-aligned buttons -->
<ul class="navbar-nav ms-auto pe-2 mb-0">
<li class="nav-item pe-2"> <li class="nav-item pe-2">
<button id="btnadd" class="btn btn-primary btn-sm">Add</button> <button id="btnadd" class="btn btn-primary btn-sm">Add</button>
</li> </li>
...@@ -20,9 +28,10 @@ ...@@ -20,9 +28,10 @@
<button id="btnclose" class="btn btn-primary btn-sm">Close</button> <button id="btnclose" class="btn btn-primary btn-sm">Close</button>
</li> </li>
</ul> </ul>
</div> </div>
</nav> </nav>
<div class="row mx-5"> <div class="row mx-5">
<h4 class="custom-h4 mt-3">Customer Information</h4> <h4 class="custom-h4 mt-3">Customer Information</h4>
<hr class="custom-hr"> <hr class="custom-hr">
<div class="row"> <div class="row">
...@@ -120,17 +129,20 @@ ...@@ -120,17 +129,20 @@
<h4 class="custom-h4 mt-3">Shipping Addresses</h4> <h4 class="custom-h4 mt-3">Shipping Addresses</h4>
<hr class="custom-hr"> <hr class="custom-hr">
<div class="row"> <div class="row">
<div class="overflow-auto mt-2"
style="max-height: calc(100vh - 250px); padding-bottom: 0; width: 100%;">
<table id="tblPhoneGrid" class="table table-striped table-bordered" style="width: 100%;"> <table id="tblPhoneGrid" class="table table-striped table-bordered" style="width: 100%;">
<thead class="sticky-top thead-light"> <thead class="sticky-top thead-light">
<tr style="font-size: 0.875rem;"> <tr style="font-size: 0.875rem;">
<!-- Table headers are dynamically generated --> <!-- headers -->
</tr> </tr>
</thead> </thead>
<tbody id="orderTableBody" class="align-middle"> <tbody id="orderTableBody" class="align-middle">
<!-- Table rows are dynamically generated --> <!-- rows -->
</tbody> </tbody>
</table> </table>
</div> </div>
</div>
<div class="row mt-1"> <div class="row mt-1">
<div class="col-auto"> <div class="col-auto">
<button id="btnshipadd" class="btn btn-primary btn-sm">Add</button> <button id="btnshipadd" class="btn btn-primary btn-sm">Add</button>
...@@ -201,29 +213,6 @@ ...@@ -201,29 +213,6 @@
</div> </div>
</div> </div>
</div> </div>
</div> </div>
<div class="modal fade" id="confirmation_modal" tabindex="-1" aria-labelledby="confirmation_modal_label" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="confirmation_modal_label">Confirm</h5>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
</div>
<div class="modal-body" id="modal_body">
Are you sure you want to delete this order?
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal" id= 'btn_confirm_cancel'>Cancel</button>
<button type="button" class="btn btn-primary" data-bs-dismiss="modal" id="btn_confirm_delete">Delete</button>
</div>
</div>
</div>
</div>
<style>
.modal-backdrop {
opacity: 0 !important;
}
</style>
...@@ -70,7 +70,6 @@ type ...@@ -70,7 +70,6 @@ type
btnShipDelete: TWebButton; btnShipDelete: TWebButton;
btnShipEdit: TWebButton; btnShipEdit: TWebButton;
btnShipAdd: TWebButton; btnShipAdd: TWebButton;
btn_confirm_delete: TWebButton;
tmrReturn: TWebTimer; tmrReturn: TWebTimer;
edtFirstLine: TWebEdit; edtFirstLine: TWebEdit;
wdsUsers: TWebDataSource; wdsUsers: TWebDataSource;
...@@ -79,11 +78,9 @@ type ...@@ -79,11 +78,9 @@ type
xdwdsUsersuserID: TStringField; xdwdsUsersuserID: TStringField;
XDataWebDataSet1REP_USER_ID: TStringField; XDataWebDataSet1REP_USER_ID: TStringField;
xdwdsUsersfull_name: TStringField; xdwdsUsersfull_name: TStringField;
procedure WebFormShow(Sender: TObject); lblFormState: TWebLabel;
procedure btnSaveClick(Sender: TObject); procedure btnSaveClick(Sender: TObject);
procedure btnCancelClick(Sender: TObject); procedure btnCancelClick(Sender: TObject);
procedure xdwdsShipToAfterEdit(DataSet: TDataSet);
procedure XDataWebDataSet1AfterEdit(DataSet: TDataSet);
procedure btnCloseClick(Sender: TObject); procedure btnCloseClick(Sender: TObject);
procedure btnEditClick(Sender: TObject); procedure btnEditClick(Sender: TObject);
procedure wdbtcAddressesDblClickCell(Sender: TObject; ACol, ARow: Integer); procedure wdbtcAddressesDblClickCell(Sender: TObject; ACol, ARow: Integer);
...@@ -91,13 +88,13 @@ type ...@@ -91,13 +88,13 @@ type
procedure AddressEditMode(); procedure AddressEditMode();
procedure edtShippingAddressChange(Sender: TObject); procedure edtShippingAddressChange(Sender: TObject);
procedure btnAddClick(Sender: TObject); procedure btnAddClick(Sender: TObject);
procedure btn_confirm_deleteClick(Sender: TObject);
procedure tmrReturnTimer(Sender: TObject); procedure tmrReturnTimer(Sender: TObject);
procedure btnDeleteClick(Sender: TObject); procedure btnDeleteClick(Sender: TObject);
procedure btnShipAddClick(Sender: TObject); procedure btnShipAddClick(Sender: TObject);
procedure btnShipEditClick(Sender: TObject); procedure btnShipEditClick(Sender: TObject);
procedure btnShipSaveClick(Sender: TObject); [async] procedure btnShipSaveClick(Sender: TObject);
procedure btnShipDeleteClick(Sender: TObject); procedure btnShipDeleteClick(Sender: TObject);
procedure btnShipCancelClick(Sender: TObject);
private private
{ Private declarations } { Private declarations }
procedure ViewMode(); procedure ViewMode();
...@@ -110,6 +107,7 @@ type ...@@ -110,6 +107,7 @@ type
function VerifyAddress(): boolean; function VerifyAddress(): boolean;
procedure Clear(); procedure Clear();
procedure ShowSelectCustomerForm(); procedure ShowSelectCustomerForm();
[async] procedure InitializeForm;
var var
customerID: string; customerID: string;
notification: string; notification: string;
...@@ -129,6 +127,45 @@ implementation ...@@ -129,6 +127,45 @@ implementation
uses View.Main, View.Customers, View.SelectCustomer, Utils; uses View.Main, View.Customers, View.SelectCustomer, Utils;
class function TFViewAddCustomer.CreateForm(AElementID, customerInfo, info: string): TWebForm;
begin
Application.CreateForm(TFViewAddCustomer, AElementID, Result,
procedure(AForm: TObject)
begin
with TFViewAddCustomer(AForm) do
begin
customerID := customerInfo;
notification := info;
InitializeForm;
end;
end
);
end;
[async] procedure TFViewAddCustomer.InitializeForm;
begin
if customerID = '' then
mode := 'ADD'
else
mode := 'EDIT';
if notification <> '' then
ShowToast(notification);
if mode = 'ADD' then
EditMode()
else
ViewMode();
await(GetCustomer);
dtpStartDate.Date := 0;
dtpEndDate.Date := 0;
end;
procedure TFViewAddCustomer.Clear(); procedure TFViewAddCustomer.Clear();
// Clears the shipping address fields. // Clears the shipping address fields.
begin begin
...@@ -227,27 +264,28 @@ begin ...@@ -227,27 +264,28 @@ begin
ShowSelectCustomerForm(); ShowSelectCustomerForm();
end; end;
procedure TFViewAddCustomer.btnCancelClick(Sender: TObject); procedure TFViewAddCustomer.btnCancelClick(Sender: TObject);
// Shows a pop-up to confirm the user would like to cancel their changes.
begin begin
document.getElementById('modal_body').innerHTML := 'Are you sure you want to cancel all changes to the customer?'; ShowConfirmationModal(
document.getElementById('btn_confirm_cancel').innerText := 'No'; 'Are you sure you want to cancel all changes to the customer?',
document.getElementById('btn_confirm_delete').innerText := 'Yes'; 'Yes',
asm 'No',
var modal = document.getElementById('confirmation_modal'); procedure(confirmed: Boolean)
begin
// Ensure modal is a direct child of <body> to avoid z-index/backdrop issues if confirmed then
if (modal && modal.parentNode !== document.body) { begin
document.body.appendChild(modal); FViewMain.change := false;
} if CustomerID <> '' then
FViewMain.ViewAddCustomer(CustomerID, 'Failure: Changes Discarded')
var confirmationModal = new bootstrap.Modal(modal, { else
keyboard: false FViewMain.ShowForm(TFViewCustomers);
});
confirmationModal.show();
end; end;
end);
end; end;
procedure TFViewAddCustomer.btnClearClick(Sender: TObject); procedure TFViewAddCustomer.btnClearClick(Sender: TObject);
// Clears the shipping address fields. // Clears the shipping address fields.
begin begin
...@@ -265,7 +303,8 @@ procedure TFViewAddCustomer.btnDeleteClick(Sender: TObject); ...@@ -265,7 +303,8 @@ procedure TFViewAddCustomer.btnDeleteClick(Sender: TObject);
// Eventually will delete customers after a confirmation // Eventually will delete customers after a confirmation
// TODO implement deleting customers // TODO implement deleting customers
begin begin
ShowErrorModal('Deleting Customers Is Not Yet Available'); ShowToast('Deleting Customers Is Not Yet Available', 'danger');
Exit;
end; end;
procedure TFViewAddCustomer.btnEditClick(Sender: TObject); procedure TFViewAddCustomer.btnEditClick(Sender: TObject);
...@@ -280,119 +319,29 @@ begin ...@@ -280,119 +319,29 @@ begin
AddressEditMode(); AddressEditMode();
end; end;
procedure TFViewAddCustomer.EditMode;
// Enables Customer Fields while disabling shipping address fields.
begin
FViewMain.change := true;
btnAdd.Enabled := false;
btnDelete.Enabled := false;
btnClose.Enabled := false;
btnSave.Enabled := true;
btnCancel.Enabled := True;
btnEdit.Enabled := false;
// Disable Shipping Address Editting
edtShippingAddress.Enabled := false;
edtShippingCity.Enabled := false;
edtShippingState.Enabled := false;
edtShippingZip.Enabled := false;
edtShippingContact.Enabled := false;
edtFirstLine.Enabled := false;
btnShipDelete.Enabled := false;
btnShipSave.Enabled := false;
btnShipCancel.Enabled := false;
btnShipEdit.Enabled := false;
btnShipAdd.Enabled := false;
end;
procedure TFViewAddCustomer.AddressEditMode;
// Enables Shipping Address fields while disabling customer fields.
begin
FViewMain.change := true;
btnDelete.Enabled := false;
btnClose.Enabled := false;
btnSave.Enabled := false;
btnCancel.Enabled := false;
btnEdit.Enabled := false;
btnAdd.Enabled := false;
btnShipDelete.Enabled := false;
btnShipSave.Enabled := true;
btnShipCancel.Enabled := true;
btnShipEdit.Enabled := false;
btnShipAdd.Enabled := false;
edtShippingAddress.Enabled := true;
edtShippingCity.Enabled := true;
edtShippingState.Enabled := true;
edtShippingZip.Enabled := true;
edtShippingContact.Enabled := true;
edtFirstLine.Enabled := true;
edtName.Enabled := false;
edtShortName.Enabled := false;
edtBillAddress.Enabled := false;
edtBillCity.Enabled := false;
edtBillState.Enabled := false;
edtBillZip.Enabled := false;
edtBillContact.Enabled := false;
dtpStartDate.Enabled := false;
dtpEndDate.Enabled := false;
edtFax.Enabled := false;
edtPhone.enabled := false;
wdblcbRep.Enabled := false;
end;
procedure TFViewAddCustomer.ViewMode;
// Enables Customer Fields while disabling shipping address fields.
begin
btnAdd.Enabled := true;
btnDelete.Enabled := true;
btnClose.Enabled := true;
btnSave.Enabled := false;
btnCancel.Enabled := false;
btnEdit.Enabled := true;
FViewMain.change := false;
btnShipAdd.Enabled := true;
if ( not xdwdsShipTo.IsEmpty ) then
btnShipDelete.Enabled := true;
btnShipSave.Enabled := false;
btnShipCancel.Enabled := false;
btnShipEdit.Enabled := true;
FViewMain.change := false;
edtName.Enabled := true;
edtShortName.Enabled := true;
edtBillAddress.Enabled := true;
edtBillCity.Enabled := true;
edtBillState.Enabled := true;
edtBillZip.Enabled := true;
edtBillContact.Enabled := true;
dtpStartDate.Enabled := true;
dtpEndDate.Enabled := true;
edtFax.Enabled := true;
edtPhone.enabled := true;
wdblcbRep.Enabled := true;
end;
procedure TFViewAddCustomer.wdbtcAddressesDblClickCell(Sender: TObject; ACol, procedure TFViewAddCustomer.wdbtcAddressesDblClickCell(Sender: TObject; ACol,
ARow: Integer); ARow: Integer);
// Retrieves the shipping address allowing it to be edited. // Retrieves the shipping address allowing it to be edited.
begin begin
xdwdsShipTo.Locate('ship_id', wdbtcAddresses.Cells[0, ARow], []); xdwdsShipTo.Locate('ship_id', wdbtcAddresses.Cells[0, ARow], []);
edtShippingAddress.Text := xdwdsShipTo.FieldByName('shipping_address').AsString; edtShippingAddress.Text := xdwdsShipTo.FieldByName('shipping_address').AsString;
edtShippingCity.Text := xdwdsShipTo.FieldByName('city').AsString; edtShippingCity.Text := xdwdsShipTo.FieldByName('city').AsString;
edtShippingState.Text := xdwdsShipTo.FieldByName('state').AsString; edtShippingState.Text := xdwdsShipTo.FieldByName('state').AsString;
edtShippingZip.Text := xdwdsShipTo.FieldByName('zip').AsString; edtShippingZip.Text := xdwdsShipTo.FieldByName('zip').AsString;
edtShippingContact.Text := xdwdsShipTo.FieldByName('contact').AsString; edtShippingContact.Text := xdwdsShipTo.FieldByName('contact').AsString;
memoShipBlock.Text := xdwdsShipTo.FieldByName('ADDRESS').AsString; memoShipBlock.Text := xdwdsShipTo.FieldByName('ADDRESS').AsString;
edtFirstLine.Text := memoShipBlock.Lines[0];
if memoShipBlock.Lines.Count > 0 then
edtFirstLine.Text := memoShipBlock.Lines[0]
else
edtFirstLine.Text := '';
btnShipEdit.Enabled := true;
end; end;
procedure TFViewAddCustomer.SendCustomerToServer(); procedure TFViewAddCustomer.SendCustomerToServer();
// Creates the customer JSON and then sends it to the server. // Creates the customer JSON and then sends it to the server.
var var
...@@ -489,112 +438,79 @@ begin ...@@ -489,112 +438,79 @@ begin
AddressEditMode(); AddressEditMode();
end; end;
procedure TFViewAddCustomer.btnShipDeleteClick(Sender: TObject);
// Allows the user to delete a Shipping Address.
begin
document.getElementById('modal_body').innerHTML := 'Are you sure you want to delete this address?';
document.getElementById('btn_confirm_cancel').innerText := 'Cancel';
document.getElementById('btn_confirm_delete').innerText := 'Delete';
asm
var confirmationModal = new bootstrap.Modal(document.getElementById('confirmation_modal'), {
keyboard: false });
confirmationModal.show();
end;
end;
procedure TFViewAddCustomer.btnShipEditClick(Sender: TObject);
// Sets the form into AddressEdit mode.
begin
shipmode := 'EDIT';
AddressEditMode();
end;
procedure TFViewAddCustomer.btnShipSaveClick(Sender: TObject); procedure TFViewAddCustomer.btnShipCancelClick(Sender: TObject);
// After Verifying the Address it sends the address down to the server.
begin begin
if VerifyAddress() then ShowConfirmationModal(
'Are you sure you want to cancel address editing?',
'Yes',
'No',
procedure(confirmed: Boolean)
begin
if confirmed then
begin begin
SendAddressToServer(); shipmode := '';
Clear(); Clear();
ViewMode(); ViewMode();
end; end;
end);
end; end;
procedure TFViewAddCustomer.btn_confirm_deleteClick(Sender: TObject);
// Modal Confirmation button. Checks if the user is cancelling changes, or procedure TFViewAddCustomer.btnShipDeleteClick(Sender: TObject);
// Deleting a shipping address/ customer
begin begin
FViewMain.change := false; ShowConfirmationModal(
if document.getElementById('btn_confirm_delete').innerText = 'Yes' then 'Are you sure you want to delete this address?',
// checks if the user is canceling or deleting 'Delete',
begin 'Cancel',
if CustomerID <> '' then procedure(confirmed: Boolean)
begin begin
FViewMain.ViewAddCustomer(CustomerID, 'Failure:Changes Discarded'); if confirmed then
end
else
FViewMain.ShowForm(TFViewCustomers);
end
else if document.getElementById('modal_body').innerHTML.Contains('customer') then
// checks if the user is deleting a customer or a shipping address
begin begin
asm
var confirmationModal = new bootstrap.Modal(document.getElementById('confirmation_modal'), {
keyboard: false });
confirmationModal.hide();
end;
Utils.ShowSpinner('spinner'); Utils.ShowSpinner('spinner');
//delCustomer(); DelAddress();
tmrReturn.Enabled := true;
end
else
begin
asm
var confirmationModal = new bootstrap.Modal(document.getElementById('confirmation_modal'), {
keyboard: false });
confirmationModal.hide();
end;
Utils.ShowSpinner('spinner');
delAddress();
end; end;
end);
end; end;
class function TFViewAddCustomer.CreateForm(AElementID: string; customerInfo: string; info: string): TWebForm;
// Creates the Add Customer form. Setting the customer id so the customer can be
// Retrieved and the notification to be shown. procedure TFViewAddCustomer.btnShipEditClick(Sender: TObject);
// Sets the form into AddressEdit mode.
begin begin
Application.CreateForm(TFViewAddCustomer, AElementID, Result, shipmode := 'EDIT';
procedure(AForm: TObject) AddressEditMode();
begin end;
with TFViewAddCustomer(AForm) do
[async] procedure TFViewAddCustomer.btnShipSaveClick(Sender: TObject);
begin
if (customerID = '') then
begin begin
TFViewAddCustomer(AForm).customerID := customerInfo; ShowErrorModal('Cannot save address: Customer ID is not set.');
TFViewAddCustomer(AForm).notification := info; Exit;
end; end;
end console.log('Saving address. CustomerID = ' + customerID);
);
if VerifyAddress() then
begin
await(SendAddressToServer);
Clear();
await(GetCustomer); // Ensures xdwdsShipTo is refreshed with server data
ViewMode();
end;
end; end;
procedure TFViewAddCustomer.GetCustomer; procedure TFViewAddCustomer.GetCustomer;
// Retrieves a customer for a given CustomerID. // Retrieves a customer for a given CustomerID.
var var
xdcResponse: TXDataClientResponse; xdcResponse: TXDataClientResponse;
customer : TJSObject; customer : TJSObject;
address: string;
items: TJSObject; items: TJSObject;
ship_block: TStringList; ship_block: TStringList;
begin begin
if CustomerID = '' then xdcResponse := await(XDataWebClient1.RawInvokeAsync('ILookupService.GetCustomer', [customerID]));
begin
mode := 'ADD';
end
else
mode := 'EDIT';
xdcResponse := await(XDataWebClient1.RawInvokeAsync('ILookupService.GetCustomer',
[customerID]));
customer := TJSObject(xdcResponse.Result); customer := TJSObject(xdcResponse.Result);
console.log(customer);
xdwdsUsers.Close; xdwdsUsers.Close;
xdwdsUsers.SetJSONData(customer['USERS']); xdwdsUsers.SetJSONData(customer['USERS']);
...@@ -629,43 +545,8 @@ begin ...@@ -629,43 +545,8 @@ begin
edtFirstLine.Text := memoShipBlock.Lines[0] edtFirstLine.Text := memoShipBlock.Lines[0]
else else
edtFirstLine.Text := ''; edtFirstLine.Text := '';
end; end;
procedure TFViewAddCustomer.WebFormShow(Sender: TObject);
// Sets the form up whenever it is shown.
var
SQL: string;
begin
if customerID = '' then
mode := 'ADD'
else
mode := 'EDIT';
if notification <> '' then
begin
showToast(notification);
end;
EditMode();
getCustomer();
dtpStartDate.Date := 0;
dtpEndDate.Date := 0;
end;
procedure TFViewAddCustomer.XDataWebDataSet1AfterEdit(DataSet: TDataSet);
begin
EditMode();
end;
procedure TFViewAddCustomer.xdwdsShipToAfterEdit(DataSet: TDataSet);
begin
EditMode();
end;
procedure TFViewAddCustomer.tmrReturnTimer(Sender: TObject); procedure TFViewAddCustomer.tmrReturnTimer(Sender: TObject);
// Timer to returnto the customer page because it takes slightly too long to // Timer to returnto the customer page because it takes slightly too long to
// Delete customers causing ghost customers to show up. // Delete customers causing ghost customers to show up.
...@@ -811,4 +692,124 @@ begin ...@@ -811,4 +692,124 @@ begin
end; end;
procedure TFViewAddCustomer.EditMode;
// Enables Customer Fields while disabling shipping address fields.
begin
XDataWebDataSet1.Edit;
FViewMain.change := true;
btnAdd.Enabled := false;
btnDelete.Enabled := false;
btnClose.Enabled := false;
btnSave.Enabled := true;
btnCancel.Enabled := True;
btnEdit.Enabled := false;
// Disable Shipping Address Editting
edtShippingAddress.Enabled := false;
edtShippingCity.Enabled := false;
edtShippingState.Enabled := false;
edtShippingZip.Enabled := false;
edtShippingContact.Enabled := false;
edtFirstLine.Enabled := false;
btnShipDelete.Enabled := false;
btnShipSave.Enabled := false;
btnShipCancel.Enabled := false;
btnShipEdit.Enabled := false;
btnShipAdd.Enabled := false;
lblFormState.Caption := 'Edit Mode';
lblFormState.ElementHandle.classList.remove('text-danger');
lblFormState.ElementHandle.classList.add('text-success');
end;
procedure TFViewAddCustomer.AddressEditMode;
// Enables Shipping Address fields while disabling customer fields.
begin
xdwdsShipTo.Edit;
FViewMain.change := true;
btnDelete.Enabled := false;
btnClose.Enabled := false;
btnSave.Enabled := false;
btnCancel.Enabled := false;
btnEdit.Enabled := false;
btnAdd.Enabled := false;
btnShipDelete.Enabled := false;
btnShipSave.Enabled := true;
btnShipCancel.Enabled := true;
btnShipEdit.Enabled := false;
btnShipAdd.Enabled := false;
edtShippingAddress.Enabled := true;
edtShippingCity.Enabled := true;
edtShippingState.Enabled := true;
edtShippingZip.Enabled := true;
edtShippingContact.Enabled := true;
edtFirstLine.Enabled := true;
edtName.Enabled := false;
edtShortName.Enabled := false;
edtBillAddress.Enabled := false;
edtBillCity.Enabled := false;
edtBillState.Enabled := false;
edtBillZip.Enabled := false;
edtBillContact.Enabled := false;
dtpStartDate.Enabled := false;
dtpEndDate.Enabled := false;
edtFax.Enabled := false;
edtPhone.enabled := false;
wdblcbRep.Enabled := false;
lblFormState.Caption := 'Edit Address';
lblFormState.ElementHandle.classList.remove('text-danger');
lblFormState.ElementHandle.classList.add('text-success');
end;
procedure TFViewAddCustomer.ViewMode;
// Enables Customer Fields while disabling shipping address fields.
begin
btnAdd.Enabled := true;
btnDelete.Enabled := true;
btnClose.Enabled := true;
btnSave.Enabled := false;
btnCancel.Enabled := false;
btnEdit.Enabled := true;
FViewMain.change := false;
btnShipAdd.Enabled := true;
if not xdwdsShipTo.IsEmpty then
begin
btnShipDelete.Enabled := true;
btnShipEdit.Enabled := true;
end
else
begin
btnShipDelete.Enabled := false;
btnShipEdit.Enabled := false;
end;
btnShipSave.Enabled := false;
btnShipCancel.Enabled := false;
edtName.Enabled := true;
edtShortName.Enabled := true;
edtBillAddress.Enabled := true;
edtBillCity.Enabled := true;
edtBillState.Enabled := true;
edtBillZip.Enabled := true;
edtBillContact.Enabled := true;
dtpStartDate.Enabled := true;
dtpEndDate.Enabled := true;
edtFax.Enabled := true;
edtPhone.Enabled := true;
wdblcbRep.Enabled := true;
lblFormState.Caption := 'View Mode';
lblFormState.ElementHandle.classList.remove('text-success');
lblFormState.ElementHandle.classList.add('text-danger');
end;
end. end.
\ No newline at end of file
...@@ -3,7 +3,7 @@ unit Utils; ...@@ -3,7 +3,7 @@ unit Utils;
interface interface
uses uses
System.Classes, SysUtils, JS, Web, WEBLib.Forms, WEBLib.Toast, DateUtils; System.Classes, SysUtils, JS, Web, WEBLib.Forms, WEBLib.Toast, DateUtils, WebLib.Dialogs;
procedure ShowStatusMessage(const AMessage, AClass: string; const AElementId: string); procedure ShowStatusMessage(const AMessage, AClass: string; const AElementId: string);
procedure HideStatusMessage(const AElementId: string); procedure HideStatusMessage(const AElementId: string);
...@@ -14,6 +14,7 @@ function CalculateAge(DateOfBirth: TDateTime): Integer; ...@@ -14,6 +14,7 @@ function CalculateAge(DateOfBirth: TDateTime): Integer;
function FormatPhoneNumber(PhoneNumber: string): string; function FormatPhoneNumber(PhoneNumber: string): string;
procedure ApplyReportTitle(CurrentReportType: string); procedure ApplyReportTitle(CurrentReportType: string);
procedure ShowToast(const MessageText: string; const ToastType: string = 'success'); procedure ShowToast(const MessageText: string; const ToastType: string = 'success');
procedure ShowConfirmationModal(msg, leftLabel, rightLabel: string; ConfirmProc: TProc<Boolean>);
// function FormatDollarValue(ValueStr: string): string; // function FormatDollarValue(ValueStr: string): string;
...@@ -67,6 +68,13 @@ begin ...@@ -67,6 +68,13 @@ begin
SpinnerElement := TJSHTMLElement(document.getElementById(SpinnerID)); SpinnerElement := TJSHTMLElement(document.getElementById(SpinnerID));
if Assigned(SpinnerElement) then if Assigned(SpinnerElement) then
begin begin
// Move spinner to the <body> if it's not already there
asm
if (SpinnerElement.parentNode !== document.body) {
document.body.appendChild(SpinnerElement);
}
end;
SpinnerElement.classList.remove('d-none'); SpinnerElement.classList.remove('d-none');
SpinnerElement.classList.add('d-block'); SpinnerElement.classList.add('d-block');
end; end;
...@@ -84,7 +92,7 @@ begin ...@@ -84,7 +92,7 @@ begin
end; end;
end; end;
// The $IFNDEF WIN32 was recommended by Holger to deal with any modal issues
procedure ShowErrorModal(msg: string); procedure ShowErrorModal(msg: string);
begin begin
asm asm
...@@ -113,6 +121,58 @@ begin ...@@ -113,6 +121,58 @@ begin
end; end;
// ShowConfirmationModal displays a two-button modal with custom labels.
// Params:
// - messageText: text shown in the modal body
// - leftButtonText: label for the left button (e.g., "Cancel")
// - rightButtonText: label for the right button (e.g., "Delete")
// - callback: procedure(confirmed: Boolean); confirmed = True if right button clicked
//
// Example:
// ShowConfirmationModal('Delete this?', 'Cancel', 'Delete',
// procedure(confirmed: Boolean)
// begin
// if confirmed then DeleteOrder();
// end);
procedure ShowConfirmationModal(msg, leftLabel, rightLabel: string; ConfirmProc: TProc<Boolean>);
var
modal, body, btnLeft, btnRight: TJSHTMLElement;
bsModal: JSValue;
begin
asm
modal = document.getElementById('main_confirmation_modal');
body = document.getElementById('main_modal_body');
btnLeft = document.getElementById('btn_confirm_left');
btnRight = document.getElementById('btn_confirm_right');
if (body) body.innerText = msg;
if (btnLeft) btnLeft.innerText = leftLabel;
if (btnRight) btnRight.innerText = rightLabel;
if (modal && modal.parentNode !== document.body) {
document.body.appendChild(modal);
}
btnLeft.onclick = null;
btnRight.onclick = null;
btnLeft.onclick = function () {
bsModal.hide();
ConfirmProc(true); // user confirmed
};
btnRight.onclick = function () {
bsModal.hide();
ConfirmProc(false); // user canceled
};
bsModal = new bootstrap.Modal(modal, { keyboard: false });
bsModal.show();
end;
end;
function CalculateAge(DateOfBirth: TDateTime): Integer; function CalculateAge(DateOfBirth: TDateTime): Integer;
var var
Today, BirthDate: TJSDate; Today, BirthDate: TJSDate;
......
...@@ -261,6 +261,9 @@ object fViewAddItem: TfViewAddItem ...@@ -261,6 +261,9 @@ object fViewAddItem: TfViewAddItem
object xdwdsCustomersstatus: TStringField object xdwdsCustomersstatus: TStringField
FieldName = 'status' FieldName = 'status'
end end
object xdwdsCustomersqb_items_qb_id: TStringField
FieldName = 'qb_items_qb_id'
end
end end
object wdsCustomers: TWebDataSource object wdsCustomers: TWebDataSource
DataSet = xdwdsCustomers DataSet = xdwdsCustomers
......
...@@ -29,6 +29,7 @@ type ...@@ -29,6 +29,7 @@ type
xdwdsCustomersqb_item_name: TStringField; xdwdsCustomersqb_item_name: TStringField;
xdwdsCustomersitem_desc: TStringField; xdwdsCustomersitem_desc: TStringField;
xdwdsCustomersstatus: TStringField; xdwdsCustomersstatus: TStringField;
xdwdsCustomersqb_items_qb_id: TStringField;
procedure WebFormCreate(Sender: TObject); procedure WebFormCreate(Sender: TObject);
procedure WebFormShow(Sender: TObject); procedure WebFormShow(Sender: TObject);
procedure TMSFNCGrid1CellClick(Sender: TObject; ACol, ARow: Integer); procedure TMSFNCGrid1CellClick(Sender: TObject; ACol, ARow: Integer);
...@@ -157,6 +158,7 @@ begin ...@@ -157,6 +158,7 @@ begin
ItemJSON.AddPair('qb_item_name', xdwdsCustomers.FieldByName('qb_item_name').AsString); ItemJSON.AddPair('qb_item_name', xdwdsCustomers.FieldByName('qb_item_name').AsString);
ItemJSON.AddPair('item_desc', xdwdsCustomers.FieldByName('item_desc').AsString); ItemJSON.AddPair('item_desc', xdwdsCustomers.FieldByName('item_desc').AsString);
ItemJSON.AddPair('status', xdwdsCustomers.FieldByName('status').AsString); ItemJSON.AddPair('status', xdwdsCustomers.FieldByName('status').AsString);
ItemJSON.AddPair('qb_items_qb_id', xdwdsCustomers.FieldByName('qb_items_qb_id').AsString);
ItemJSON.AddPair('mode', 'ADD'); ItemJSON.AddPair('mode', 'ADD');
......
object FViewCustomers: TFViewCustomers object FViewCustomers: TFViewCustomers
Width = 640 Width = 640
Height = 480 Height = 480
CSSLibrary = cssBootstrap
ElementFont = efCSS
OnCreate = WebFormCreate OnCreate = WebFormCreate
object lblEntries: TWebLabel object lblEntries: TWebLabel
Left = 12 Left = 12
......
...@@ -12,7 +12,7 @@ uses ...@@ -12,7 +12,7 @@ uses
System.SysUtils, System.Classes, Web, WEBLib.Graphics, WEBLib.Forms, WEBLib.Dialogs, System.SysUtils, System.Classes, Web, WEBLib.Graphics, WEBLib.Forms, WEBLib.Dialogs,
Vcl.Controls, Vcl.StdCtrls, WEBLib.StdCtrls, WEBLib.Controls, WEBLib.Grids, WebLib.Lists, Vcl.Controls, Vcl.StdCtrls, WEBLib.StdCtrls, WEBLib.Controls, WEBLib.Grids, WebLib.Lists,
XData.Web.Client, WEBLib.ExtCtrls, DB, XData.Web.JsonDataset, XData.Web.Client, WEBLib.ExtCtrls, DB, XData.Web.JsonDataset,
XData.Web.Dataset, XData.Web.Connection, Vcl.Forms, DateUtils, WebAudio; XData.Web.Dataset, XData.Web.Connection, Vcl.Forms, DateUtils;
type type
TFViewItems = class(TWebForm) TFViewItems = class(TWebForm)
...@@ -404,7 +404,7 @@ var ...@@ -404,7 +404,7 @@ var
begin begin
newform := TFViewAddItem.CreateNew; newform := TFViewAddItem.CreateNew;
newform.Caption := 'Select Customer and Order Type'; newform.Caption := 'Select Item to Add';
newForm.Popup := True; newForm.Popup := True;
newForm.position:= poScreenCenter; newForm.position:= poScreenCenter;
newForm.Border := fbDialog; newForm.Border := fbDialog;
......
...@@ -157,6 +157,12 @@ object FViewMain: TFViewMain ...@@ -157,6 +157,12 @@ object FViewMain: TFViewMain
ChildOrder = 3 ChildOrder = 3
ElementFont = efCSS ElementFont = efCSS
ElementPosition = epIgnore ElementPosition = epIgnore
Font.Charset = ANSI_CHARSET
Font.Color = clBlack
Font.Height = -11
Font.Name = 'Arial'
Font.Style = []
ParentFont = False
Role = 'null' Role = 'null'
TabOrder = 0 TabOrder = 0
end end
...@@ -167,12 +173,14 @@ object FViewMain: TFViewMain ...@@ -167,12 +173,14 @@ object FViewMain: TFViewMain
Height = 83 Height = 83
ElementID = 'main.debugmemo' ElementID = 'main.debugmemo'
ElementPosition = epRelative ElementPosition = epRelative
Enabled = False
HeightPercent = 100.000000000000000000 HeightPercent = 100.000000000000000000
Lines.Strings = ( Lines.Strings = (
'WebMemo1') 'WebMemo1')
Role = 'null' Role = 'null'
SelLength = 0 SelLength = 0
SelStart = 0 SelStart = 0
ShowFocus = False
Visible = False Visible = False
WidthPercent = 100.000000000000000000 WidthPercent = 100.000000000000000000
end end
......
...@@ -95,25 +95,25 @@ ...@@ -95,25 +95,25 @@
Please contact EMSystems to solve the issue. Please contact EMSystems to solve the issue.
</div> </div>
<div class="modal-footer justify-content-center"> <div class="modal-footer justify-content-center">
<button type="button" id="btn_modal_restart" class="btn btn-primary">Restart WebApp</button> <button type="button" id="btn_modal_restart" class="btn btn-primary">Back to Orders</button>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
<div class="modal fade" id="confirmation_modal" tabindex="-1" aria-labelledby="confirmation_modal_label" aria-hidden="true"> <div class="modal fade" id="main_confirmation_modal" tabindex="-1" aria-hidden="true">
<div class="modal-dialog"> <div class="modal-dialog">
<div class="modal-content shadow-lg"> <div class="modal-content shadow-lg">
<div class="modal-header"> <div class="modal-header">
<h5 class="modal-title" id="confirmation_modal_label">Confirm</h5> <h5 class="modal-title">Confirm</h5>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button> <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
</div> </div>
<div class="modal-body fs-6 fw-bold" id="modal_body"> <div class="modal-body fw-bold" id="main_modal_body">
Are you sure you want to delete this order? Placeholder text
</div> </div>
<div class="modal-footer justify-content-center"> <div class="modal-footer justify-content-center">
<button type="button" class="btn btn-secondary me-3" data-bs-dismiss="modal" id="btn_confirm_cancel">Cancel</button> <button type="button" class="btn btn-primary me-3" id="btn_confirm_left">Cancel</button>
<button type="button" class="btn btn-primary" data-bs-dismiss="modal" id="btn_confirm_delete">Delete</button> <button type="button" class="btn btn-secondary" id="btn_confirm_right">Confirm</button>
</div> </div>
</div> </div>
</div> </div>
...@@ -127,3 +127,4 @@ ...@@ -127,3 +127,4 @@
...@@ -47,7 +47,6 @@ type ...@@ -47,7 +47,6 @@ type
function GetUserInfo: string; function GetUserInfo: string;
procedure setActive(page: string); procedure setActive(page: string);
procedure ConfirmLogout; procedure ConfirmLogout;
procedure OnConfirmLogout(Event: TJSEvent);
public public
{ Public declarations } { Public declarations }
class procedure Display(LogoutProc: TLogoutProc); class procedure Display(LogoutProc: TLogoutProc);
...@@ -118,7 +117,7 @@ begin ...@@ -118,7 +117,7 @@ begin
setActive('Customers'); setActive('Customers');
end end
else else
ShowErrorModal('Please Save or Cancel your changes'); ShowToast('Please Save or Cancel your changes', 'danger');
end; end;
procedure TFViewMain.lblHomeClick(Sender: TObject); procedure TFViewMain.lblHomeClick(Sender: TObject);
...@@ -130,12 +129,11 @@ begin ...@@ -130,12 +129,11 @@ begin
//setActive('Home'); //setActive('Home');
end end
else else
ShowErrorModal('Please Save or Cancel your changes'); ShowToast('Please Save or Cancel your changes', 'danger');
end; end;
procedure TFViewMain.lblordersClick(Sender: TObject); procedure TFViewMain.lblordersClick(Sender: TObject);
begin begin
console.log(change);
if ( not ( change ) ) then if ( not ( change ) ) then
begin begin
ShowForm(TFViewOrders); ShowForm(TFViewOrders);
...@@ -143,7 +141,7 @@ begin ...@@ -143,7 +141,7 @@ begin
setActive('Orders'); setActive('Orders');
end end
else else
ShowErrorModal('Please Save or Cancel your changes'); ShowToast('Please Save or Cancel your changes', 'danger');
end; end;
procedure TFViewMain.lblQuickbooksClick(Sender: TObject); procedure TFViewMain.lblQuickbooksClick(Sender: TObject);
...@@ -155,7 +153,7 @@ begin ...@@ -155,7 +153,7 @@ begin
setActive('QuickBooks'); setActive('QuickBooks');
end end
else else
ShowErrorModal('Please Save or Cancel your changes'); ShowToast('Please Save or Cancel your changes', 'danger');
end; end;
procedure TFViewMain.lblUsersClick(Sender: TObject); procedure TFViewMain.lblUsersClick(Sender: TObject);
...@@ -166,7 +164,7 @@ begin ...@@ -166,7 +164,7 @@ begin
lblAppTitle.Caption := 'Koehler-Gibson Users'; lblAppTitle.Caption := 'Koehler-Gibson Users';
end end
else else
ShowErrorModal('Please Save or Cancel your changes'); ShowToast('Please Save or Cancel your changes', 'danger');
end; end;
procedure TFViewMain.lblItemsListClick(Sender: TObject); procedure TFViewMain.lblItemsListClick(Sender: TObject);
...@@ -178,7 +176,7 @@ begin ...@@ -178,7 +176,7 @@ begin
setActive('Items'); setActive('Items');
end end
else else
ShowErrorModal('Please Save or Cancel your changes'); ShowToast('Please Save or Cancel your changes', 'danger');
end; end;
procedure TFViewMain.setActive(page: string); procedure TFViewMain.setActive(page: string);
...@@ -210,47 +208,22 @@ begin ...@@ -210,47 +208,22 @@ begin
ConfirmLogout; ConfirmLogout;
end; end;
procedure TFViewMain.ConfirmLogout; procedure TFViewMain.ConfirmLogout;
var
yesBtn: TJSElement;
begin begin
document.getElementById('modal_body').innerHTML := 'Are you sure you want to log out?'; ShowConfirmationModal(
document.getElementById('btn_confirm_cancel').innerText := 'No'; 'Are you sure you want to log out?',
document.getElementById('btn_confirm_delete').innerText := 'Yes'; 'Yes',
'No',
asm procedure(confirmed: Boolean)
var modal = document.getElementById('confirmation_modal');
if (modal && modal.parentNode !== document.body) {
document.body.appendChild(modal);
}
end;
// Detach any existing click handler (optional cleanup if reused often)
yesBtn := document.getElementById('btn_confirm_delete');
if Assigned(yesBtn) then
begin begin
TJSElement(yesBtn).removeEventListener('click', @OnConfirmLogout); if confirmed and Assigned(FLogoutProc) then
TJSElement(yesBtn).addEventListener('click', @OnConfirmLogout);
end;
asm
var confirmationModal = new bootstrap.Modal(document.getElementById('confirmation_modal'), {
keyboard: false
});
confirmationModal.show();
end;
end;
procedure TFViewMain.OnConfirmLogout(Event: TJSEvent);
begin
if Assigned(FLogoutProc) then
FLogoutProc(''); FLogoutProc('');
end
);
end; end;
procedure TFViewMain.wllblUserProfileClick(Sender: TObject); procedure TFViewMain.wllblUserProfileClick(Sender: TObject);
begin begin
ShowCrudForm(TFViewUserProfile); ShowCrudForm(TFViewUserProfile);
......
...@@ -8,7 +8,6 @@ object FOrderEntryCorrugated: TFOrderEntryCorrugated ...@@ -8,7 +8,6 @@ object FOrderEntryCorrugated: TFOrderEntryCorrugated
Font.Style = [] Font.Style = []
ParentFont = False ParentFont = False
OnCreate = WebFormCreate OnCreate = WebFormCreate
OnShow = WebFormShow
object WebLabel1: TWebLabel object WebLabel1: TWebLabel
Left = 34 Left = 34
Top = 188 Top = 188
...@@ -99,6 +98,15 @@ object FOrderEntryCorrugated: TFOrderEntryCorrugated ...@@ -99,6 +98,15 @@ object FOrderEntryCorrugated: TFOrderEntryCorrugated
Visible = False Visible = False
WidthPercent = 100.000000000000000000 WidthPercent = 100.000000000000000000
end end
object lblFormState: TWebLabel
Left = 18
Top = 16
Width = 3
Height = 14
ElementID = 'lbl_form_state'
HeightPercent = 100.000000000000000000
WidthPercent = 100.000000000000000000
end
object dtpOrderDate: TWebDateTimePicker object dtpOrderDate: TWebDateTimePicker
Left = 22 Left = 22
Top = 218 Top = 218
...@@ -112,7 +120,6 @@ object FOrderEntryCorrugated: TFOrderEntryCorrugated ...@@ -112,7 +120,6 @@ object FOrderEntryCorrugated: TFOrderEntryCorrugated
ElementPosition = epRelative ElementPosition = epRelative
Role = 'null' Role = 'null'
Text = '' Text = ''
OnChange = dtpOrderDateChange
end end
object dtpProofDate: TWebDateTimePicker object dtpProofDate: TWebDateTimePicker
Left = 22 Left = 22
...@@ -127,7 +134,6 @@ object FOrderEntryCorrugated: TFOrderEntryCorrugated ...@@ -127,7 +134,6 @@ object FOrderEntryCorrugated: TFOrderEntryCorrugated
ElementPosition = epRelative ElementPosition = epRelative
Role = 'null' Role = 'null'
Text = '' Text = ''
OnChange = dtpProofDateChange
end end
object dtpShipDate: TWebDateTimePicker object dtpShipDate: TWebDateTimePicker
Left = 22 Left = 22
...@@ -142,7 +148,6 @@ object FOrderEntryCorrugated: TFOrderEntryCorrugated ...@@ -142,7 +148,6 @@ object FOrderEntryCorrugated: TFOrderEntryCorrugated
ElementPosition = epRelative ElementPosition = epRelative
Role = 'null' Role = 'null'
Text = '' Text = ''
OnChange = dtpShipDateChange
end end
object dtpArtDue: TWebDateTimePicker object dtpArtDue: TWebDateTimePicker
Left = 24 Left = 24
...@@ -171,7 +176,6 @@ object FOrderEntryCorrugated: TFOrderEntryCorrugated ...@@ -171,7 +176,6 @@ object FOrderEntryCorrugated: TFOrderEntryCorrugated
ElementPosition = epRelative ElementPosition = epRelative
Role = 'null' Role = 'null'
Text = '' Text = ''
OnChange = dtpPlateDueChange
end end
object dtpMountDue: TWebDateTimePicker object dtpMountDue: TWebDateTimePicker
Left = 24 Left = 24
...@@ -186,7 +190,6 @@ object FOrderEntryCorrugated: TFOrderEntryCorrugated ...@@ -186,7 +190,6 @@ object FOrderEntryCorrugated: TFOrderEntryCorrugated
ElementPosition = epRelative ElementPosition = epRelative
Role = 'null' Role = 'null'
Text = '' Text = ''
OnChange = dtpMountDueChange
end end
object btnAddColor: TWebButton object btnAddColor: TWebButton
Left = 658 Left = 658
...@@ -199,6 +202,7 @@ object FOrderEntryCorrugated: TFOrderEntryCorrugated ...@@ -199,6 +202,7 @@ object FOrderEntryCorrugated: TFOrderEntryCorrugated
ElementPosition = epRelative ElementPosition = epRelative
HeightPercent = 100.000000000000000000 HeightPercent = 100.000000000000000000
Role = 'null' Role = 'null'
TabStop = False
WidthPercent = 100.000000000000000000 WidthPercent = 100.000000000000000000
OnClick = btnAddColorClick OnClick = btnAddColorClick
end end
...@@ -214,8 +218,9 @@ object FOrderEntryCorrugated: TFOrderEntryCorrugated ...@@ -214,8 +218,9 @@ object FOrderEntryCorrugated: TFOrderEntryCorrugated
Date = 45748.499176770830000000 Date = 45748.499176770830000000
ElementPosition = epRelative ElementPosition = epRelative
Role = 'null' Role = 'null'
ShowFocus = False
TabStop = False
Text = '' Text = ''
OnChange = dtpApprovedDateChange
end end
object edtCompanyName: TWebDBEdit object edtCompanyName: TWebDBEdit
Left = 18 Left = 18
...@@ -280,7 +285,7 @@ object FOrderEntryCorrugated: TFOrderEntryCorrugated ...@@ -280,7 +285,7 @@ object FOrderEntryCorrugated: TFOrderEntryCorrugated
DataSource = WebDataSource1 DataSource = WebDataSource1
end end
object edtQuantity: TWebDBEdit object edtQuantity: TWebDBEdit
Left = 24 Left = 26
Top = 346 Top = 346
Width = 121 Width = 121
Height = 22 Height = 22
...@@ -350,7 +355,6 @@ object FOrderEntryCorrugated: TFOrderEntryCorrugated ...@@ -350,7 +355,6 @@ object FOrderEntryCorrugated: TFOrderEntryCorrugated
HeightPercent = 100.000000000000000000 HeightPercent = 100.000000000000000000
HideSelection = False HideSelection = False
WidthPercent = 100.000000000000000000 WidthPercent = 100.000000000000000000
OnChange = edtJobNameChange
DataField = 'staff_fields_job_name' DataField = 'staff_fields_job_name'
DataSource = WebDataSource1 DataSource = WebDataSource1
end end
...@@ -485,6 +489,7 @@ object FOrderEntryCorrugated: TFOrderEntryCorrugated ...@@ -485,6 +489,7 @@ object FOrderEntryCorrugated: TFOrderEntryCorrugated
ElementPosition = epRelative ElementPosition = epRelative
HeightPercent = 100.000000000000000000 HeightPercent = 100.000000000000000000
HideSelection = False HideSelection = False
ShowFocus = False
WidthPercent = 100.000000000000000000 WidthPercent = 100.000000000000000000
DataField = 'mounting_custom_adhesive' DataField = 'mounting_custom_adhesive'
DataSource = WebDataSource1 DataSource = WebDataSource1
...@@ -565,16 +570,18 @@ object FOrderEntryCorrugated: TFOrderEntryCorrugated ...@@ -565,16 +570,18 @@ object FOrderEntryCorrugated: TFOrderEntryCorrugated
DataSource = WebDataSource1 DataSource = WebDataSource1
end end
object edtProofOther: TWebDBEdit object edtProofOther: TWebDBEdit
Left = 666 Left = 658
Top = 458 Top = 458
Width = 121 Width = 121
Height = 22 Height = 22
TabStop = False
AutoSize = True AutoSize = True
ChildOrder = 79 ChildOrder = 79
ElementID = 'edtproofother' ElementID = 'edtproofother'
ElementPosition = epRelative ElementPosition = epRelative
HeightPercent = 100.000000000000000000 HeightPercent = 100.000000000000000000
HideSelection = False HideSelection = False
ShowFocus = False
WidthPercent = 100.000000000000000000 WidthPercent = 100.000000000000000000
DataField = 'proofing_other' DataField = 'proofing_other'
DataSource = WebDataSource1 DataSource = WebDataSource1
...@@ -584,12 +591,14 @@ object FOrderEntryCorrugated: TFOrderEntryCorrugated ...@@ -584,12 +591,14 @@ object FOrderEntryCorrugated: TFOrderEntryCorrugated
Top = 328 Top = 328
Width = 121 Width = 121
Height = 22 Height = 22
TabStop = False
AutoSize = True AutoSize = True
ChildOrder = 79 ChildOrder = 79
ElementID = 'edtproofshipto' ElementID = 'edtproofshipto'
ElementPosition = epRelative ElementPosition = epRelative
HeightPercent = 100.000000000000000000 HeightPercent = 100.000000000000000000
HideSelection = False HideSelection = False
ShowFocus = False
WidthPercent = 100.000000000000000000 WidthPercent = 100.000000000000000000
DataField = 'proofing_ship_to' DataField = 'proofing_ship_to'
DataSource = WebDataSource1 DataSource = WebDataSource1
...@@ -599,12 +608,14 @@ object FOrderEntryCorrugated: TFOrderEntryCorrugated ...@@ -599,12 +608,14 @@ object FOrderEntryCorrugated: TFOrderEntryCorrugated
Top = 300 Top = 300
Width = 121 Width = 121
Height = 22 Height = 22
TabStop = False
AutoSize = True AutoSize = True
ChildOrder = 79 ChildOrder = 79
ElementID = 'edtemailattn' ElementID = 'edtemailattn'
ElementPosition = epRelative ElementPosition = epRelative
HeightPercent = 100.000000000000000000 HeightPercent = 100.000000000000000000
HideSelection = False HideSelection = False
ShowFocus = False
WidthPercent = 100.000000000000000000 WidthPercent = 100.000000000000000000
DataField = 'proofing_e_mail_attn' DataField = 'proofing_e_mail_attn'
DataSource = WebDataSource1 DataSource = WebDataSource1
...@@ -614,12 +625,14 @@ object FOrderEntryCorrugated: TFOrderEntryCorrugated ...@@ -614,12 +625,14 @@ object FOrderEntryCorrugated: TFOrderEntryCorrugated
Top = 272 Top = 272
Width = 121 Width = 121
Height = 22 Height = 22
TabStop = False
AutoSize = True AutoSize = True
ChildOrder = 79 ChildOrder = 79
ElementID = 'edtproofemail' ElementID = 'edtproofemail'
ElementPosition = epRelative ElementPosition = epRelative
HeightPercent = 100.000000000000000000 HeightPercent = 100.000000000000000000
HideSelection = False HideSelection = False
ShowFocus = False
WidthPercent = 100.000000000000000000 WidthPercent = 100.000000000000000000
DataField = 'proofing_e_mail' DataField = 'proofing_e_mail'
DataSource = WebDataSource1 DataSource = WebDataSource1
...@@ -629,12 +642,14 @@ object FOrderEntryCorrugated: TFOrderEntryCorrugated ...@@ -629,12 +642,14 @@ object FOrderEntryCorrugated: TFOrderEntryCorrugated
Top = 244 Top = 244
Width = 121 Width = 121
Height = 22 Height = 22
TabStop = False
AutoSize = True AutoSize = True
ChildOrder = 79 ChildOrder = 79
ElementID = 'edtfaxattn' ElementID = 'edtfaxattn'
ElementPosition = epRelative ElementPosition = epRelative
HeightPercent = 100.000000000000000000 HeightPercent = 100.000000000000000000
HideSelection = False HideSelection = False
ShowFocus = False
WidthPercent = 100.000000000000000000 WidthPercent = 100.000000000000000000
DataField = 'proofing_fax_attn' DataField = 'proofing_fax_attn'
DataSource = WebDataSource1 DataSource = WebDataSource1
...@@ -644,12 +659,14 @@ object FOrderEntryCorrugated: TFOrderEntryCorrugated ...@@ -644,12 +659,14 @@ object FOrderEntryCorrugated: TFOrderEntryCorrugated
Top = 219 Top = 219
Width = 121 Width = 121
Height = 22 Height = 22
TabStop = False
AutoSize = True AutoSize = True
ChildOrder = 79 ChildOrder = 79
ElementID = 'edtfax' ElementID = 'edtfax'
ElementPosition = epRelative ElementPosition = epRelative
HeightPercent = 100.000000000000000000 HeightPercent = 100.000000000000000000
HideSelection = False HideSelection = False
ShowFocus = False
WidthPercent = 100.000000000000000000 WidthPercent = 100.000000000000000000
DataField = 'proofing_fax' DataField = 'proofing_fax'
DataSource = WebDataSource1 DataSource = WebDataSource1
...@@ -665,6 +682,7 @@ object FOrderEntryCorrugated: TFOrderEntryCorrugated ...@@ -665,6 +682,7 @@ object FOrderEntryCorrugated: TFOrderEntryCorrugated
ElementPosition = epRelative ElementPosition = epRelative
HeightPercent = 100.000000000000000000 HeightPercent = 100.000000000000000000
HideSelection = False HideSelection = False
ShowFocus = False
WidthPercent = 100.000000000000000000 WidthPercent = 100.000000000000000000
DataField = 'colors_clemson' DataField = 'colors_clemson'
DataSource = WebDataSource1 DataSource = WebDataSource1
...@@ -680,6 +698,7 @@ object FOrderEntryCorrugated: TFOrderEntryCorrugated ...@@ -680,6 +698,7 @@ object FOrderEntryCorrugated: TFOrderEntryCorrugated
ElementPosition = epRelative ElementPosition = epRelative
HeightPercent = 100.000000000000000000 HeightPercent = 100.000000000000000000
HideSelection = False HideSelection = False
ShowFocus = False
WidthPercent = 100.000000000000000000 WidthPercent = 100.000000000000000000
DataField = 'colors_cross_hairs' DataField = 'colors_cross_hairs'
DataSource = WebDataSource1 DataSource = WebDataSource1
...@@ -695,6 +714,7 @@ object FOrderEntryCorrugated: TFOrderEntryCorrugated ...@@ -695,6 +714,7 @@ object FOrderEntryCorrugated: TFOrderEntryCorrugated
ElementPosition = epRelative ElementPosition = epRelative
HeightPercent = 100.000000000000000000 HeightPercent = 100.000000000000000000
HideSelection = False HideSelection = False
ShowFocus = False
WidthPercent = 100.000000000000000000 WidthPercent = 100.000000000000000000
DataField = 'colors_machine_ident' DataField = 'colors_machine_ident'
DataSource = WebDataSource1 DataSource = WebDataSource1
...@@ -710,6 +730,7 @@ object FOrderEntryCorrugated: TFOrderEntryCorrugated ...@@ -710,6 +730,7 @@ object FOrderEntryCorrugated: TFOrderEntryCorrugated
ElementPosition = epRelative ElementPosition = epRelative
HeightPercent = 100.000000000000000000 HeightPercent = 100.000000000000000000
HideSelection = False HideSelection = False
ShowFocus = False
WidthPercent = 100.000000000000000000 WidthPercent = 100.000000000000000000
DataField = 'colors_cylinder_size' DataField = 'colors_cylinder_size'
DataSource = WebDataSource1 DataSource = WebDataSource1
...@@ -719,12 +740,14 @@ object FOrderEntryCorrugated: TFOrderEntryCorrugated ...@@ -719,12 +740,14 @@ object FOrderEntryCorrugated: TFOrderEntryCorrugated
Top = 105 Top = 105
Width = 121 Width = 121
Height = 22 Height = 22
TabStop = False
AutoSize = True AutoSize = True
ChildOrder = 79 ChildOrder = 79
ElementID = 'edtjobnumber' ElementID = 'edtjobnumber'
ElementPosition = epRelative ElementPosition = epRelative
HeightPercent = 100.000000000000000000 HeightPercent = 100.000000000000000000
HideSelection = False HideSelection = False
ShowFocus = False
WidthPercent = 100.000000000000000000 WidthPercent = 100.000000000000000000
DataField = 'plates_job_number' DataField = 'plates_job_number'
DataSource = WebDataSource1 DataSource = WebDataSource1
...@@ -734,12 +757,15 @@ object FOrderEntryCorrugated: TFOrderEntryCorrugated ...@@ -734,12 +757,15 @@ object FOrderEntryCorrugated: TFOrderEntryCorrugated
Top = 480 Top = 480
Width = 113 Width = 113
Height = 22 Height = 22
TabStop = False
Caption = 'Art Approved As Is' Caption = 'Art Approved As Is'
ChildOrder = 79 ChildOrder = 79
ElementID = 'cbartapprovedasis' ElementID = 'cbartapprovedasis'
ElementPosition = epRelative ElementPosition = epRelative
Enabled = False
HeightPercent = 100.000000000000000000 HeightPercent = 100.000000000000000000
Role = 'null' Role = 'null'
ShowFocus = False
WidthPercent = 100.000000000000000000 WidthPercent = 100.000000000000000000
DataField = 'proofing_art_approved_as_is' DataField = 'proofing_art_approved_as_is'
DataSource = WebDataSource1 DataSource = WebDataSource1
...@@ -751,12 +777,15 @@ object FOrderEntryCorrugated: TFOrderEntryCorrugated ...@@ -751,12 +777,15 @@ object FOrderEntryCorrugated: TFOrderEntryCorrugated
Top = 430 Top = 430
Width = 113 Width = 113
Height = 22 Height = 22
TabStop = False
Caption = 'PDF File' Caption = 'PDF File'
ChildOrder = 79 ChildOrder = 79
ElementID = 'cbpdffile' ElementID = 'cbpdffile'
ElementPosition = epRelative ElementPosition = epRelative
Enabled = False
HeightPercent = 100.000000000000000000 HeightPercent = 100.000000000000000000
Role = 'null' Role = 'null'
ShowFocus = False
WidthPercent = 100.000000000000000000 WidthPercent = 100.000000000000000000
DataField = 'proofing_pdf_file' DataField = 'proofing_pdf_file'
DataSource = WebDataSource1 DataSource = WebDataSource1
...@@ -768,12 +797,15 @@ object FOrderEntryCorrugated: TFOrderEntryCorrugated ...@@ -768,12 +797,15 @@ object FOrderEntryCorrugated: TFOrderEntryCorrugated
Top = 406 Top = 406
Width = 113 Width = 113
Height = 22 Height = 22
TabStop = False
Caption = 'Wide Format' Caption = 'Wide Format'
ChildOrder = 79 ChildOrder = 79
ElementID = 'cbwideformat' ElementID = 'cbwideformat'
ElementPosition = epRelative ElementPosition = epRelative
Enabled = False
HeightPercent = 100.000000000000000000 HeightPercent = 100.000000000000000000
Role = 'null' Role = 'null'
ShowFocus = False
WidthPercent = 100.000000000000000000 WidthPercent = 100.000000000000000000
DataField = 'proofing_wide_format' DataField = 'proofing_wide_format'
DataSource = WebDataSource1 DataSource = WebDataSource1
...@@ -785,12 +817,15 @@ object FOrderEntryCorrugated: TFOrderEntryCorrugated ...@@ -785,12 +817,15 @@ object FOrderEntryCorrugated: TFOrderEntryCorrugated
Top = 382 Top = 382
Width = 113 Width = 113
Height = 22 Height = 22
TabStop = False
Caption = 'Print Card' Caption = 'Print Card'
ChildOrder = 79 ChildOrder = 79
ElementID = 'cbprintcard' ElementID = 'cbprintcard'
ElementPosition = epRelative ElementPosition = epRelative
Enabled = False
HeightPercent = 100.000000000000000000 HeightPercent = 100.000000000000000000
Role = 'null' Role = 'null'
ShowFocus = False
WidthPercent = 100.000000000000000000 WidthPercent = 100.000000000000000000
DataField = 'proofing_print_card' DataField = 'proofing_print_card'
DataSource = WebDataSource1 DataSource = WebDataSource1
...@@ -802,12 +837,15 @@ object FOrderEntryCorrugated: TFOrderEntryCorrugated ...@@ -802,12 +837,15 @@ object FOrderEntryCorrugated: TFOrderEntryCorrugated
Top = 356 Top = 356
Width = 113 Width = 113
Height = 22 Height = 22
TabStop = False
Caption = 'Full Size Panel' Caption = 'Full Size Panel'
ChildOrder = 79 ChildOrder = 79
ElementID = 'cbfullsizepanel' ElementID = 'cbfullsizepanel'
ElementPosition = epRelative ElementPosition = epRelative
Enabled = False
HeightPercent = 100.000000000000000000 HeightPercent = 100.000000000000000000
Role = 'null' Role = 'null'
ShowFocus = False
WidthPercent = 100.000000000000000000 WidthPercent = 100.000000000000000000
DataField = 'proofing_full_size_panel' DataField = 'proofing_full_size_panel'
DataSource = WebDataSource1 DataSource = WebDataSource1
...@@ -819,12 +857,14 @@ object FOrderEntryCorrugated: TFOrderEntryCorrugated ...@@ -819,12 +857,14 @@ object FOrderEntryCorrugated: TFOrderEntryCorrugated
Top = 185 Top = 185
Width = 121 Width = 121
Height = 22 Height = 22
TabStop = False
AutoSize = True AutoSize = True
ChildOrder = 78 ChildOrder = 78
ElementID = 'edtspecialinstructions' ElementID = 'edtspecialinstructions'
ElementPosition = epRelative ElementPosition = epRelative
HeightPercent = 100.000000000000000000 HeightPercent = 100.000000000000000000
HideSelection = False HideSelection = False
ShowFocus = False
WidthPercent = 100.000000000000000000 WidthPercent = 100.000000000000000000
DataField = 'general_special_instructions' DataField = 'general_special_instructions'
DataSource = WebDataSource1 DataSource = WebDataSource1
...@@ -852,8 +892,10 @@ object FOrderEntryCorrugated: TFOrderEntryCorrugated ...@@ -852,8 +892,10 @@ object FOrderEntryCorrugated: TFOrderEntryCorrugated
ChildOrder = 76 ChildOrder = 76
ElementID = 'edtrefartapdf' ElementID = 'edtrefartapdf'
ElementPosition = epRelative ElementPosition = epRelative
Enabled = False
HeightPercent = 100.000000000000000000 HeightPercent = 100.000000000000000000
Role = 'null' Role = 'null'
ShowFocus = False
WidthPercent = 100.000000000000000000 WidthPercent = 100.000000000000000000
end end
object cbRefArtPrintCard: TWebCheckBox object cbRefArtPrintCard: TWebCheckBox
...@@ -865,8 +907,10 @@ object FOrderEntryCorrugated: TFOrderEntryCorrugated ...@@ -865,8 +907,10 @@ object FOrderEntryCorrugated: TFOrderEntryCorrugated
ChildOrder = 76 ChildOrder = 76
ElementID = 'edtrefartprintcard' ElementID = 'edtrefartprintcard'
ElementPosition = epRelative ElementPosition = epRelative
Enabled = False
HeightPercent = 100.000000000000000000 HeightPercent = 100.000000000000000000
Role = 'null' Role = 'null'
ShowFocus = False
WidthPercent = 100.000000000000000000 WidthPercent = 100.000000000000000000
end end
object cbExistingCuttingDie: TWebCheckBox object cbExistingCuttingDie: TWebCheckBox
...@@ -878,8 +922,10 @@ object FOrderEntryCorrugated: TFOrderEntryCorrugated ...@@ -878,8 +922,10 @@ object FOrderEntryCorrugated: TFOrderEntryCorrugated
ChildOrder = 76 ChildOrder = 76
ElementID = 'edtexistingcuttingdie' ElementID = 'edtexistingcuttingdie'
ElementPosition = epRelative ElementPosition = epRelative
Enabled = False
HeightPercent = 100.000000000000000000 HeightPercent = 100.000000000000000000
Role = 'null' Role = 'null'
ShowFocus = False
WidthPercent = 100.000000000000000000 WidthPercent = 100.000000000000000000
end end
object cbFTP: TWebCheckBox object cbFTP: TWebCheckBox
...@@ -891,8 +937,10 @@ object FOrderEntryCorrugated: TFOrderEntryCorrugated ...@@ -891,8 +937,10 @@ object FOrderEntryCorrugated: TFOrderEntryCorrugated
ChildOrder = 76 ChildOrder = 76
ElementID = 'cbftp' ElementID = 'cbftp'
ElementPosition = epRelative ElementPosition = epRelative
Enabled = False
HeightPercent = 100.000000000000000000 HeightPercent = 100.000000000000000000
Role = 'null' Role = 'null'
ShowFocus = False
WidthPercent = 100.000000000000000000 WidthPercent = 100.000000000000000000
end end
object cbSampleCarton: TWebCheckBox object cbSampleCarton: TWebCheckBox
...@@ -904,8 +952,10 @@ object FOrderEntryCorrugated: TFOrderEntryCorrugated ...@@ -904,8 +952,10 @@ object FOrderEntryCorrugated: TFOrderEntryCorrugated
ChildOrder = 76 ChildOrder = 76
ElementID = 'cbsampleCarton' ElementID = 'cbsampleCarton'
ElementPosition = epRelative ElementPosition = epRelative
Enabled = False
HeightPercent = 100.000000000000000000 HeightPercent = 100.000000000000000000
Role = 'null' Role = 'null'
ShowFocus = False
WidthPercent = 100.000000000000000000 WidthPercent = 100.000000000000000000
end end
object cbPlates: TWebCheckBox object cbPlates: TWebCheckBox
...@@ -917,8 +967,10 @@ object FOrderEntryCorrugated: TFOrderEntryCorrugated ...@@ -917,8 +967,10 @@ object FOrderEntryCorrugated: TFOrderEntryCorrugated
ChildOrder = 76 ChildOrder = 76
ElementID = 'cbplates' ElementID = 'cbplates'
ElementPosition = epRelative ElementPosition = epRelative
Enabled = False
HeightPercent = 100.000000000000000000 HeightPercent = 100.000000000000000000
Role = 'null' Role = 'null'
ShowFocus = False
WidthPercent = 100.000000000000000000 WidthPercent = 100.000000000000000000
end end
object cbColorCopy: TWebCheckBox object cbColorCopy: TWebCheckBox
...@@ -930,8 +982,10 @@ object FOrderEntryCorrugated: TFOrderEntryCorrugated ...@@ -930,8 +982,10 @@ object FOrderEntryCorrugated: TFOrderEntryCorrugated
ChildOrder = 76 ChildOrder = 76
ElementID = 'cbcolorcopy' ElementID = 'cbcolorcopy'
ElementPosition = epRelative ElementPosition = epRelative
Enabled = False
HeightPercent = 100.000000000000000000 HeightPercent = 100.000000000000000000
Role = 'null' Role = 'null'
ShowFocus = False
WidthPercent = 100.000000000000000000 WidthPercent = 100.000000000000000000
end end
object cbStripMount: TWebCheckBox object cbStripMount: TWebCheckBox
...@@ -943,8 +997,10 @@ object FOrderEntryCorrugated: TFOrderEntryCorrugated ...@@ -943,8 +997,10 @@ object FOrderEntryCorrugated: TFOrderEntryCorrugated
ChildOrder = 76 ChildOrder = 76
ElementID = 'cbstripmount' ElementID = 'cbstripmount'
ElementPosition = epRelative ElementPosition = epRelative
Enabled = False
HeightPercent = 100.000000000000000000 HeightPercent = 100.000000000000000000
Role = 'null' Role = 'null'
ShowFocus = False
WidthPercent = 100.000000000000000000 WidthPercent = 100.000000000000000000
end end
object cbFullMount: TWebCheckBox object cbFullMount: TWebCheckBox
...@@ -956,8 +1012,10 @@ object FOrderEntryCorrugated: TFOrderEntryCorrugated ...@@ -956,8 +1012,10 @@ object FOrderEntryCorrugated: TFOrderEntryCorrugated
ChildOrder = 76 ChildOrder = 76
ElementID = 'cbfullmount' ElementID = 'cbfullmount'
ElementPosition = epRelative ElementPosition = epRelative
Enabled = False
HeightPercent = 100.000000000000000000 HeightPercent = 100.000000000000000000
Role = 'null' Role = 'null'
ShowFocus = False
WidthPercent = 100.000000000000000000 WidthPercent = 100.000000000000000000
end end
object cbStickyBak: TWebCheckBox object cbStickyBak: TWebCheckBox
...@@ -969,8 +1027,10 @@ object FOrderEntryCorrugated: TFOrderEntryCorrugated ...@@ -969,8 +1027,10 @@ object FOrderEntryCorrugated: TFOrderEntryCorrugated
ChildOrder = 76 ChildOrder = 76
ElementID = 'cbstickybak' ElementID = 'cbstickybak'
ElementPosition = epRelative ElementPosition = epRelative
Enabled = False
HeightPercent = 100.000000000000000000 HeightPercent = 100.000000000000000000
Role = 'null' Role = 'null'
ShowFocus = False
WidthPercent = 100.000000000000000000 WidthPercent = 100.000000000000000000
end end
object cbLoose: TWebCheckBox object cbLoose: TWebCheckBox
...@@ -982,8 +1042,10 @@ object FOrderEntryCorrugated: TFOrderEntryCorrugated ...@@ -982,8 +1042,10 @@ object FOrderEntryCorrugated: TFOrderEntryCorrugated
ChildOrder = 76 ChildOrder = 76
ElementID = 'cbloose' ElementID = 'cbloose'
ElementPosition = epRelative ElementPosition = epRelative
Enabled = False
HeightPercent = 100.000000000000000000 HeightPercent = 100.000000000000000000
Role = 'null' Role = 'null'
ShowFocus = False
WidthPercent = 100.000000000000000000 WidthPercent = 100.000000000000000000
end end
object cbExcaliburDie: TWebCheckBox object cbExcaliburDie: TWebCheckBox
...@@ -995,8 +1057,10 @@ object FOrderEntryCorrugated: TFOrderEntryCorrugated ...@@ -995,8 +1057,10 @@ object FOrderEntryCorrugated: TFOrderEntryCorrugated
ChildOrder = 76 ChildOrder = 76
ElementID = 'cbexcaliburdie' ElementID = 'cbexcaliburdie'
ElementPosition = epRelative ElementPosition = epRelative
Enabled = False
HeightPercent = 100.000000000000000000 HeightPercent = 100.000000000000000000
Role = 'null' Role = 'null'
ShowFocus = False
WidthPercent = 100.000000000000000000 WidthPercent = 100.000000000000000000
end end
object WebDBComboBox1: TWebDBComboBox object WebDBComboBox1: TWebDBComboBox
...@@ -1024,8 +1088,10 @@ object FOrderEntryCorrugated: TFOrderEntryCorrugated ...@@ -1024,8 +1088,10 @@ object FOrderEntryCorrugated: TFOrderEntryCorrugated
ChildOrder = 75 ChildOrder = 75
ElementID = 'edtemail' ElementID = 'edtemail'
ElementPosition = epRelative ElementPosition = epRelative
Enabled = False
HeightPercent = 100.000000000000000000 HeightPercent = 100.000000000000000000
Role = 'null' Role = 'null'
ShowFocus = False
WidthPercent = 100.000000000000000000 WidthPercent = 100.000000000000000000
end end
object btnCancel: TWebButton object btnCancel: TWebButton
...@@ -1067,6 +1133,8 @@ object FOrderEntryCorrugated: TFOrderEntryCorrugated ...@@ -1067,6 +1133,8 @@ object FOrderEntryCorrugated: TFOrderEntryCorrugated
ElementPosition = epRelative ElementPosition = epRelative
HeightPercent = 100.000000000000000000 HeightPercent = 100.000000000000000000
Role = 'null' Role = 'null'
ShowFocus = False
TabStop = False
WidthPercent = 100.000000000000000000 WidthPercent = 100.000000000000000000
ItemIndex = -1 ItemIndex = -1
Items.Strings = ( Items.Strings = (
...@@ -1077,13 +1145,15 @@ object FOrderEntryCorrugated: TFOrderEntryCorrugated ...@@ -1077,13 +1145,15 @@ object FOrderEntryCorrugated: TFOrderEntryCorrugated
end end
object WebDBComboBox4: TWebDBComboBox object WebDBComboBox4: TWebDBComboBox
Left = 833 Left = 833
Top = 48 Top = 49
Width = 145 Width = 145
Height = 22 Height = 22
ElementID = 'wcbthickness' ElementID = 'wcbthickness'
ElementPosition = epRelative ElementPosition = epRelative
HeightPercent = 100.000000000000000000 HeightPercent = 100.000000000000000000
Role = 'null' Role = 'null'
ShowFocus = False
TabStop = False
WidthPercent = 100.000000000000000000 WidthPercent = 100.000000000000000000
ItemIndex = -1 ItemIndex = -1
Items.Strings = ( Items.Strings = (
...@@ -1156,18 +1226,6 @@ object FOrderEntryCorrugated: TFOrderEntryCorrugated ...@@ -1156,18 +1226,6 @@ object FOrderEntryCorrugated: TFOrderEntryCorrugated
HeightPercent = 100.000000000000000000 HeightPercent = 100.000000000000000000
WidthPercent = 100.000000000000000000 WidthPercent = 100.000000000000000000
end end
object btn_modal_confirm: TWebButton
Left = 1094
Top = 414
Width = 96
Height = 25
Caption = 'Delete'
ChildOrder = 82
ElementID = 'btn_confirm_delete'
HeightPercent = 100.000000000000000000
WidthPercent = 100.000000000000000000
OnClick = btn_modal_confirmClick
end
object btnEdit: TWebButton object btnEdit: TWebButton
Left = 1202 Left = 1202
Top = 560 Top = 560
...@@ -1201,6 +1259,7 @@ object FOrderEntryCorrugated: TFOrderEntryCorrugated ...@@ -1201,6 +1259,7 @@ object FOrderEntryCorrugated: TFOrderEntryCorrugated
ChildOrder = 85 ChildOrder = 85
ElementID = 'btnaddaddress' ElementID = 'btnaddaddress'
HeightPercent = 100.000000000000000000 HeightPercent = 100.000000000000000000
TabStop = False
WidthPercent = 100.000000000000000000 WidthPercent = 100.000000000000000000
OnClick = WebButton2Click OnClick = WebButton2Click
end end
...@@ -1209,14 +1268,8 @@ object FOrderEntryCorrugated: TFOrderEntryCorrugated ...@@ -1209,14 +1268,8 @@ object FOrderEntryCorrugated: TFOrderEntryCorrugated
Left = 1014 Left = 1014
Top = 44 Top = 44
end end
object tmrScrollTop: TWebTimer
Interval = 100
OnTimer = tmrScrollTopTimer
Left = 1176
Top = 256
end
object XDataWebDataSet1: TXDataWebDataSet object XDataWebDataSet1: TXDataWebDataSet
AfterEdit = XDataWebDataSet1AfterEdit BeforePost = XDataWebDataSet1BeforePost
Connection = DMConnection.ApiConnection Connection = DMConnection.ApiConnection
Left = 1060 Left = 1060
Top = 182 Top = 182
...@@ -1508,17 +1561,18 @@ object FOrderEntryCorrugated: TFOrderEntryCorrugated ...@@ -1508,17 +1561,18 @@ object FOrderEntryCorrugated: TFOrderEntryCorrugated
end end
end end
object WebDataSource1: TWebDataSource object WebDataSource1: TWebDataSource
AutoEdit = False
DataSet = XDataWebDataSet1 DataSet = XDataWebDataSet1
Left = 1176 Left = 1176
Top = 182 Top = 182
end end
object wdsShipTo: TWebDataSource object wdsShipTo: TWebDataSource
AutoEdit = False
DataSet = xdwdsShipTo DataSet = xdwdsShipTo
Left = 1090 Left = 1090
Top = 124 Top = 124
end end
object xdwdsShipTo: TXDataWebDataSet object xdwdsShipTo: TXDataWebDataSet
AfterEdit = xdwdsShipToAfterEdit
Left = 1096 Left = 1096
Top = 40 Top = 40
object xdwdsShipToADDRESS: TStringField object xdwdsShipToADDRESS: TStringField
...@@ -1526,12 +1580,12 @@ object FOrderEntryCorrugated: TFOrderEntryCorrugated ...@@ -1526,12 +1580,12 @@ object FOrderEntryCorrugated: TFOrderEntryCorrugated
end end
end end
object wdsQBItem: TWebDataSource object wdsQBItem: TWebDataSource
AutoEdit = False
DataSet = xdwdsQBItem DataSet = xdwdsQBItem
Left = 1172 Left = 1172
Top = 128 Top = 128
end end
object xdwdsQBItem: TXDataWebDataSet object xdwdsQBItem: TXDataWebDataSet
AfterEdit = xdwdsQBItemAfterEdit
Left = 1174 Left = 1174
Top = 38 Top = 38
object xdwdsQBItemname: TStringField object xdwdsQBItemname: TStringField
......
<nav class="navbar navbar-expand navbar-light bg-light border-light sticky-top" style="z-index: 100;"> <nav class="navbar navbar-expand navbar-light bg-light border-light sticky-top" style="z-index: 100;">
<div class="container-fluid ps-0"> <div class="container-fluid d-flex align-items-center ps-0 pe-0">
<ul class="navbar-nav me-auto ps-2">
<!-- Left-aligned label -->
<div class="me-auto ps-3">
<label id="lbl_form_state" class="form-label mb-0 fw-bold text-uppercase text-nowrap text-danger" style="font-size: 16px;">Test</label>
</div>
<!-- Right-aligned buttons -->
<ul class="navbar-nav ms-auto pe-2 mb-0">
<li class="nav-item pe-2"> <li class="nav-item pe-2">
<button id="btnadd" class="btn btn-primary btn-sm">Add</button> <button id="btnadd" class="btn btn-primary btn-sm">Add</button>
</li> </li>
...@@ -27,6 +33,7 @@ ...@@ -27,6 +33,7 @@
<button id="btnclose" class="btn btn-primary btn-sm">Close</button> <button id="btnclose" class="btn btn-primary btn-sm">Close</button>
</li> </li>
</ul> </ul>
</div> </div>
</nav> </nav>
<div class="row mx-5"> <div class="row mx-5">
...@@ -357,23 +364,4 @@ ...@@ -357,23 +364,4 @@
<textarea id="edtspecialinstructions" class="form-control" style=" width: 500px; height: 150px;"></textarea> <textarea id="edtspecialinstructions" class="form-control" style=" width: 500px; height: 150px;"></textarea>
</div> </div>
</div> </div>
</div>
<div class="modal fade" id="confirmation_modal" tabindex="-1" aria-labelledby="confirmation_modal_label" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content shadow-lg">
<div class="modal-header">
<h5 class="modal-title" id="confirmation_modal_label">Confirm</h5>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
</div>
<div class="modal-body fs-6 fw-bold" id="modal_body">
Are you sure you want to delete this order?
</div>
<div class="modal-footer justify-content-center">
<button type="button" class="btn btn-secondary me-3" data-bs-dismiss="modal" id="btn_confirm_cancel">Cancel</button>
<button type="button" class="btn btn-primary" data-bs-dismiss="modal" id="btn_confirm_delete">Delete</button>
</div>
</div>
</div> </div>
</div>
...@@ -71,7 +71,6 @@ type ...@@ -71,7 +71,6 @@ type
cbFullSizePanel: TWebDBCheckBox; cbFullSizePanel: TWebDBCheckBox;
XDataWebClient1: TXDataWebClient; XDataWebClient1: TXDataWebClient;
edtSpecialInstructions: TWebDBEdit; edtSpecialInstructions: TWebDBEdit;
tmrScrollTop: TWebTimer;
XDataWebDataSet1: TXDataWebDataSet; XDataWebDataSet1: TXDataWebDataSet;
WebDataSource1: TWebDataSource; WebDataSource1: TWebDataSource;
btnSave: TWebButton; btnSave: TWebButton;
...@@ -195,16 +194,14 @@ type ...@@ -195,16 +194,14 @@ type
btnDelete: TWebButton; btnDelete: TWebButton;
btnClose: TWebButton; btnClose: TWebButton;
edtOrderNum: TWebEdit; edtOrderNum: TWebEdit;
btn_modal_confirm: TWebButton;
tmrReturn: TWebTimer; tmrReturn: TWebTimer;
btnEdit: TWebButton; btnEdit: TWebButton;
btnAdd: TWebButton; btnAdd: TWebButton;
WebButton2: TWebButton; WebButton2: TWebButton;
lblFormState: TWebLabel;
procedure WebFormCreate(Sender: TObject); procedure WebFormCreate(Sender: TObject);
procedure WebFormShow(Sender: TObject);
[async] procedure getOrder(Order_ID: string); [async] procedure getOrder(Order_ID: string);
[async] procedure getCustomer(customerID: string); [async] procedure getCustomer(customerID: string);
procedure tmrScrollTopTimer(Sender: TObject);
procedure btnAddColorClick(Sender: TObject); procedure btnAddColorClick(Sender: TObject);
procedure addColorRow(num, Color, LPI, Size: string); procedure addColorRow(num, Color, LPI, Size: string);
procedure btnSaveClick(Sender: TObject); procedure btnSaveClick(Sender: TObject);
...@@ -217,40 +214,29 @@ type ...@@ -217,40 +214,29 @@ type
procedure sendOrderToServer(); procedure sendOrderToServer();
procedure btnCloseClick(Sender: TObject); procedure btnCloseClick(Sender: TObject);
procedure btnDeleteClick(Sender: TObject); procedure btnDeleteClick(Sender: TObject);
procedure btn_modal_confirmClick(Sender: TObject);
procedure tmrReturnTimer(Sender: TObject); procedure tmrReturnTimer(Sender: TObject);
function VerifyOrder(): boolean; function VerifyOrder(): boolean;
procedure XDataWebDataSet1AfterEdit(DataSet: TDataSet);
procedure xdwdsShipToAfterEdit(DataSet: TDataSet);
procedure dtpApprovedDateChange(Sender: TObject);
procedure dtpMountDueChange(Sender: TObject);
procedure dtpPlateDueChange(Sender: TObject);
procedure dtpShipDateChange(Sender: TObject);
procedure dtpProofDateChange(Sender: TObject);
procedure dtpOrderDateChange(Sender: TObject);
procedure EditMode(); procedure EditMode();
procedure btnEditClick(Sender: TObject); procedure btnEditClick(Sender: TObject);
procedure btnAddClick(Sender: TObject); procedure btnAddClick(Sender: TObject);
procedure xdwdsQBItemAfterEdit(DataSet: TDataSet);
procedure ViewMode(); procedure ViewMode();
procedure WebButton2Click(Sender: TObject); procedure WebButton2Click(Sender: TObject);
procedure ShowAddAddressForm(); procedure ShowAddAddressForm();
[async] procedure SendAddressToServer(AddressJSON: TJSONObject); [async] procedure SendAddressToServer(AddressJSON: TJSONObject);
procedure edtJobNameChange(Sender: TObject);
private private
FModalAction: string;
FAgencyCode: string; FAgencyCode: string;
FCurrentReportType: string; FCurrentReportType: string;
FSelectProc: TSelectProc; FSelectProc: TSelectProc;
mode: string;
orderID: string; orderID: string;
customerID: string; customerID: string;
mode: string;
changed: boolean; changed: boolean;
notification: string; notification: string;
procedure RemoveColorRow(Sender: TObject); procedure RemoveColorRow(Sender: TObject);
[async] procedure InitializeForm;
//FJSONProc1: TJSONProc1; //FJSONProc1: TJSONProc1;
public public
class function CreateForm(AElementID, orderInfo, customerInfo, mode, info: string): TWebForm; class function CreateForm(AElementID, orderInfo, customerInfo, modeparam, info: string): TWebForm;
end; end;
var var
...@@ -263,6 +249,44 @@ implementation ...@@ -263,6 +249,44 @@ implementation
uses uses
View.Home, View.Main, View.AddOrder, View.AddAddress, Utils; View.Home, View.Main, View.AddOrder, View.AddAddress, Utils;
class function TFOrderEntryCorrugated.CreateForm(AElementID, orderInfo, customerInfo, modeParam, info: string): TWebForm;
begin
Application.CreateForm(TFOrderEntryCorrugated, AElementID, Result,
procedure(AForm: TObject)
begin
with TFOrderEntryCorrugated(AForm) do
begin
customerID := customerInfo;
orderID := orderInfo;
mode := modeParam;
notification := info;
console.log('Mode in createform: ' + modeParam);
InitializeForm;
end;
end
);
end;
[async] procedure TFOrderEntryCorrugated.InitializeForm;
begin
if mode = 'ADD' then
begin
await(getCustomer(customerID));
EditMode;
end
else
begin
await(getOrder(orderID));
ViewMode;
end;
edtOrderNum.Text := orderID;
if notification <> '' then
ShowToast(notification);
end;
procedure TFOrderEntryCorrugated.sendOrderToServer(); procedure TFOrderEntryCorrugated.sendOrderToServer();
// This can be improved. I was struggling to get the checkboxes to work with // This can be improved. I was struggling to get the checkboxes to work with
...@@ -493,19 +517,20 @@ end; ...@@ -493,19 +517,20 @@ end;
procedure TFOrderEntryCorrugated.btnDeleteClick(Sender: TObject); procedure TFOrderEntryCorrugated.btnDeleteClick(Sender: TObject);
begin begin
FModalAction := 'delete'; ShowConfirmationModal(
document.getElementById('modal_body').innerHTML := 'Are you sure you want to delete this order?'; 'Are you sure you want to delete this order?',
document.getElementById('btn_confirm_cancel').innerText := 'Cancel'; 'Delete',
document.getElementById('btn_confirm_delete').innerText := 'Delete'; 'Cancel',
procedure(confirmed: Boolean)
asm begin
var modal = document.getElementById('confirmation_modal'); if confirmed then
if (modal && modal.parentNode !== document.body) { begin
document.body.appendChild(modal); Utils.ShowSpinner('spinner');
} DelOrder();
var confirmationModal = new bootstrap.Modal(modal, { keyboard: false }); tmrReturn.Enabled := true;
confirmationModal.show();
end; end;
end
);
end; end;
...@@ -525,34 +550,6 @@ begin ...@@ -525,34 +550,6 @@ begin
end; end;
procedure TFOrderEntryCorrugated.btn_modal_confirmClick(Sender: TObject);
begin
if FModalAction = 'cancel' then
begin
FViewMain.change := false;
if OrderID <> '' then
FViewMain.ViewOrderEntryCorrugated(OrderID, '', 'EDIT', 'Failure: Changes Discarded')
else
FViewMain.ViewOrders('');
end
else if FModalAction = 'delete' then
begin
Utils.ShowSpinner('spinner');
asm
var modal = document.getElementById('confirmation_modal');
if (modal && modal.parentNode !== document.body) {
document.body.appendChild(modal);
}
var bsModal = new bootstrap.Modal(modal, { keyboard: false });
bsModal.hide();
end;
DelOrder();
tmrReturn.Enabled := true;
end;
end;
[async] procedure TFOrderEntryCorrugated.GenerateReportPDF; [async] procedure TFOrderEntryCorrugated.GenerateReportPDF;
// sends the search to the server which then sends back a pdf of the results // sends the search to the server which then sends back a pdf of the results
var var
...@@ -608,26 +605,6 @@ begin ...@@ -608,26 +605,6 @@ begin
end; end;
class function TFOrderEntryCorrugated.CreateForm(AElementID, orderInfo, customerInfo, mode, info: string): TWebForm;
var
localMode: string;
begin
localMode := mode;
Application.CreateForm(TFOrderEntryCorrugated, AElementID, Result,
procedure(AForm: TObject)
begin
with TFOrderEntryCorrugated(AForm) do
begin
TFOrderEntryCorrugated(AForm).customerID := customerInfo;
TFOrderEntryCorrugated(AForm).orderID := orderInfo;
TFOrderEntryCorrugated(AForm).mode := localMode;
TFOrderEntryCorrugated(AForm).notification := info;
end;
end
);
end;
procedure TFOrderEntryCorrugated.addColorRow(num, color, LPI, size: string); procedure TFOrderEntryCorrugated.addColorRow(num, color, LPI, size: string);
var var
container, newRow, col, labelEl, inputEl, removeCol: TJSHTMLElement; container, newRow, col, labelEl, inputEl, removeCol: TJSHTMLElement;
...@@ -820,23 +797,25 @@ end; ...@@ -820,23 +797,25 @@ end;
procedure TFOrderEntryCorrugated.btnCancelClick(Sender: TObject); procedure TFOrderEntryCorrugated.btnCancelClick(Sender: TObject);
begin begin
FModalAction := 'cancel'; ShowConfirmationModal(
document.getElementById('modal_body').innerHTML := 'Are you sure you want to cancel all changes?'; 'Are you sure you want to cancel all changes?',
document.getElementById('btn_confirm_cancel').innerText := 'No'; 'Yes',
document.getElementById('btn_confirm_delete').innerText := 'Yes'; 'No',
procedure(confirmed: Boolean)
asm begin
var modal = document.getElementById('confirmation_modal'); if confirmed then
if (modal && modal.parentNode !== document.body) { begin
document.body.appendChild(modal); FViewMain.change := false;
} if OrderID <> '' then
var confirmationModal = new bootstrap.Modal(modal, { keyboard: false }); FViewMain.ViewOrderEntryCorrugated(OrderID, '', 'EDIT', 'Failure: Changes Discarded')
confirmationModal.show(); else
FViewMain.ViewOrders('');
end; end;
end
);
end; end;
procedure TFOrderEntryCorrugated.btnCloseClick(Sender: TObject); procedure TFOrderEntryCorrugated.btnCloseClick(Sender: TObject);
begin begin
FViewMain.ViewOrders(''); FViewMain.ViewOrders('');
...@@ -878,6 +857,8 @@ begin ...@@ -878,6 +857,8 @@ begin
XDataWebDataSet1.Close; XDataWebDataSet1.Close;
XDataWebDataSet1.SetJsonData(order); XDataWebDataSet1.SetJsonData(order);
XDataWebDataSet1.Open; XDataWebDataSet1.Open;
XDataWebDataSet1.Edit;
if XDataWebDataSet1colors_colors.Value <> '' then if XDataWebDataSet1colors_colors.Value <> '' then
begin begin
colorObject := TJSObject(TJSJSON.parse(XDataWebDataSet1colors_colors.Value)); colorObject := TJSObject(TJSJSON.parse(XDataWebDataSet1colors_colors.Value));
...@@ -1049,42 +1030,6 @@ begin ...@@ -1049,42 +1030,6 @@ begin
end; end;
procedure TFOrderEntryCorrugated.WebFormShow(Sender: TObject);
begin
if mode <> 'ADD' then
begin
getOrder(orderID);
ViewMode();
end
else
begin
getCustomer(customerID);
EditMode();
end;
edtOrderNum.Text := OrderID;
if notification <> '' then
begin
ShowToast(notification);
end;
end;
procedure TFOrderEntryCorrugated.XDataWebDataSet1AfterEdit(DataSet: TDataSet);
begin
EditMode();
end;
procedure TFOrderEntryCorrugated.xdwdsQBItemAfterEdit(DataSet: TDataSet);
begin
EditMode();
end;
procedure TFOrderEntryCorrugated.xdwdsShipToAfterEdit(DataSet: TDataSet);
begin
EditMode();
end;
procedure TFOrderEntryCorrugated.tmrReturnTimer(Sender: TObject); procedure TFOrderEntryCorrugated.tmrReturnTimer(Sender: TObject);
...@@ -1095,15 +1040,9 @@ begin ...@@ -1095,15 +1040,9 @@ begin
end; end;
procedure TFOrderEntryCorrugated.tmrScrollTopTimer(Sender: TObject);
begin
tmrScrollTop.Enabled := False;
window.scrollTo(0, 0);
end;
procedure TFOrderEntryCorrugated.EditMode(); procedure TFOrderEntryCorrugated.EditMode();
begin begin
XDataWebDataSet1.Edit;
FViewMain.change := true; FViewMain.change := true;
btnCopy.Enabled := false; btnCopy.Enabled := false;
btnPDF.Enabled := false; btnPDF.Enabled := false;
...@@ -1113,43 +1052,32 @@ begin ...@@ -1113,43 +1052,32 @@ begin
btnCancel.Enabled := True; btnCancel.Enabled := True;
btnEdit.Enabled := false; btnEdit.Enabled := false;
btnAdd.Enabled := false; btnAdd.Enabled := false;
end;
procedure TFOrderEntryCorrugated.edtJobNameChange(Sender: TObject);
begin
EditMode();
console.log('onChange');
end;
procedure TFOrderEntryCorrugated.dtpApprovedDateChange(Sender: TObject); // Enable all non-DB checkboxes manually
begin cbRefArtAPDF.Enabled := True;
EditMode(); cbRefArtPrintCard.Enabled := True;
cbExistingCuttingDie.Enabled := True;
cbFTP.Enabled := True;
cbSampleCarton.Enabled := True;
cbPlates.Enabled := True;
cbColorCopy.Enabled := True;
cbStripMount.Enabled := True;
cbFullMount.Enabled := True;
cbStickyBak.Enabled := True;
cbLoose.Enabled := True;
cbExcaliburDie.Enabled := True;
cbEmail.Enabled := True;
cbArtApprovedAsIs.Enabled := True;
cbPDFFile.Enabled := True;
cbWideFormat.Enabled := True;
cbPrintCard.Enabled := True;
cbFullSizePanel.Enabled := True;
lblFormState.Caption := 'Edit Mode';
lblFormState.ElementHandle.classList.remove('text-danger');
lblFormState.ElementHandle.classList.add('text-success');
end; end;
procedure TFOrderEntryCorrugated.dtpMountDueChange(Sender: TObject);
begin
EditMode();
end;
procedure TFOrderEntryCorrugated.dtpOrderDateChange(Sender: TObject);
begin
EditMode();
end;
procedure TFOrderEntryCorrugated.dtpPlateDueChange(Sender: TObject);
begin
EditMode();
end;
procedure TFOrderEntryCorrugated.dtpProofDateChange(Sender: TObject);
begin
EditMode();
end;
procedure TFOrderEntryCorrugated.dtpShipDateChange(Sender: TObject);
begin
EditMode();
end;
procedure TFOrderEntryCorrugated.ViewMode; procedure TFOrderEntryCorrugated.ViewMode;
begin begin
...@@ -1162,8 +1090,33 @@ begin ...@@ -1162,8 +1090,33 @@ begin
btnEdit.Enabled := true; btnEdit.Enabled := true;
btnAdd.Enabled := true; btnAdd.Enabled := true;
FViewMain.change := false; FViewMain.change := false;
// Explicitly disable all non-DB checkboxes
cbRefArtAPDF.Enabled := False;
cbRefArtPrintCard.Enabled := False;
cbExistingCuttingDie.Enabled := False;
cbFTP.Enabled := False;
cbSampleCarton.Enabled := False;
cbPlates.Enabled := False;
cbColorCopy.Enabled := False;
cbStripMount.Enabled := False;
cbFullMount.Enabled := False;
cbStickyBak.Enabled := False;
cbLoose.Enabled := False;
cbExcaliburDie.Enabled := False;
cbEmail.Enabled := False;
cbArtApprovedAsIs.Enabled := False;
cbPDFFile.Enabled := False;
cbWideFormat.Enabled := False;
cbPrintCard.Enabled := False;
cbFullSizePanel.Enabled := False;
lblFormState.Caption := 'View Mode';
lblFormState.ElementHandle.classList.remove('text-success');
lblFormState.ElementHandle.classList.add('text-danger');
end; end;
initialization initialization
RegisterClass(TFOrderEntryCorrugated); RegisterClass(TFOrderEntryCorrugated);
......
object FOrderEntryCuttingDie: TFOrderEntryCuttingDie object FOrderEntryCuttingDie: TFOrderEntryCuttingDie
Width = 956 Width = 956
Height = 728 Height = 728
OnShow = WebFormShow
object WebLabel2: TWebLabel object WebLabel2: TWebLabel
Left = 26 Left = 26
Top = 72 Top = 72
...@@ -32,6 +31,15 @@ object FOrderEntryCuttingDie: TFOrderEntryCuttingDie ...@@ -32,6 +31,15 @@ object FOrderEntryCuttingDie: TFOrderEntryCuttingDie
Visible = False Visible = False
WidthPercent = 100.000000000000000000 WidthPercent = 100.000000000000000000
end end
object lblFormState: TWebLabel
Left = 34
Top = 8
Width = 3
Height = 15
ElementID = 'lbl_form_state'
HeightPercent = 100.000000000000000000
WidthPercent = 100.000000000000000000
end
object edtCompanyAccountName: TWebDBEdit object edtCompanyAccountName: TWebDBEdit
Left = 24 Left = 24
Top = 120 Top = 120
...@@ -46,10 +54,11 @@ object FOrderEntryCuttingDie: TFOrderEntryCuttingDie ...@@ -46,10 +54,11 @@ object FOrderEntryCuttingDie: TFOrderEntryCuttingDie
DataSource = WebDataSource1 DataSource = WebDataSource1
end end
object edtInQuickBooks: TWebDBEdit object edtInQuickBooks: TWebDBEdit
Left = 26 Left = 24
Top = 148 Top = 152
Width = 121 Width = 121
Height = 23 Height = 23
AutoCompletion = acNope
AutoSize = True AutoSize = True
ChildOrder = 79 ChildOrder = 79
ElementID = 'edtinquickbooks' ElementID = 'edtinquickbooks'
...@@ -70,7 +79,6 @@ object FOrderEntryCuttingDie: TFOrderEntryCuttingDie ...@@ -70,7 +79,6 @@ object FOrderEntryCuttingDie: TFOrderEntryCuttingDie
Date = 45638.529943136570000000 Date = 45638.529943136570000000
Role = '' Role = ''
Text = '' Text = ''
OnChange = dtpOrderDateChange
end end
object dtpProofDate: TWebDateTimePicker object dtpProofDate: TWebDateTimePicker
Left = 22 Left = 22
...@@ -84,7 +92,6 @@ object FOrderEntryCuttingDie: TFOrderEntryCuttingDie ...@@ -84,7 +92,6 @@ object FOrderEntryCuttingDie: TFOrderEntryCuttingDie
Date = 45638.529943136570000000 Date = 45638.529943136570000000
Role = '' Role = ''
Text = '' Text = ''
OnChange = dtpOrderDateChange
end end
object dtpShipDate: TWebDateTimePicker object dtpShipDate: TWebDateTimePicker
Left = 22 Left = 22
...@@ -98,7 +105,6 @@ object FOrderEntryCuttingDie: TFOrderEntryCuttingDie ...@@ -98,7 +105,6 @@ object FOrderEntryCuttingDie: TFOrderEntryCuttingDie
Date = 45638.529943136570000000 Date = 45638.529943136570000000
Role = '' Role = ''
Text = '' Text = ''
OnChange = dtpOrderDateChange
end end
object edtShipVia: TWebDBEdit object edtShipVia: TWebDBEdit
Left = 24 Left = 24
...@@ -120,6 +126,7 @@ object FOrderEntryCuttingDie: TFOrderEntryCuttingDie ...@@ -120,6 +126,7 @@ object FOrderEntryCuttingDie: TFOrderEntryCuttingDie
Height = 23 Height = 23
AutoSize = True AutoSize = True
ChildOrder = 79 ChildOrder = 79
EditType = weNumeric
ElementID = 'edtquantity' ElementID = 'edtquantity'
HeightPercent = 100.000000000000000000 HeightPercent = 100.000000000000000000
WidthPercent = 100.000000000000000000 WidthPercent = 100.000000000000000000
...@@ -301,18 +308,6 @@ object FOrderEntryCuttingDie: TFOrderEntryCuttingDie ...@@ -301,18 +308,6 @@ object FOrderEntryCuttingDie: TFOrderEntryCuttingDie
WidthPercent = 100.000000000000000000 WidthPercent = 100.000000000000000000
OnClick = btnCloseClick OnClick = btnCloseClick
end end
object btn_confirm_delete: TWebButton
Left = 776
Top = 279
Width = 96
Height = 25
Caption = 'Delete'
ChildOrder = 82
ElementID = 'btn_confirm_delete'
HeightPercent = 100.000000000000000000
WidthPercent = 100.000000000000000000
OnClick = btn_confirm_deleteClick
end
object btnCopy: TWebButton object btnCopy: TWebButton
Left = 746 Left = 746
Top = 453 Top = 453
...@@ -362,15 +357,15 @@ object FOrderEntryCuttingDie: TFOrderEntryCuttingDie ...@@ -362,15 +357,15 @@ object FOrderEntryCuttingDie: TFOrderEntryCuttingDie
OnClick = WebButton2Click OnClick = WebButton2Click
end end
object WebDataSource1: TWebDataSource object WebDataSource1: TWebDataSource
AutoEdit = False
DataSet = XDataWebDataSet1 DataSet = XDataWebDataSet1
OnDataChange = WebDataSource1DataChange Left = 418
Left = 318 Top = 86
Top = 262
end end
object XDataWebDataSet1: TXDataWebDataSet object XDataWebDataSet1: TXDataWebDataSet
Connection = DMConnection.ApiConnection Connection = DMConnection.ApiConnection
Left = 318 Left = 422
Top = 208 Top = 28
object XDataWebDataSet1COMPANY_ID: TIntegerField object XDataWebDataSet1COMPANY_ID: TIntegerField
FieldName = 'COMPANY_ID' FieldName = 'COMPANY_ID'
end end
...@@ -431,40 +426,35 @@ object FOrderEntryCuttingDie: TFOrderEntryCuttingDie ...@@ -431,40 +426,35 @@ object FOrderEntryCuttingDie: TFOrderEntryCuttingDie
object XDataWebDataSet1staff_fields_quantity: TStringField object XDataWebDataSet1staff_fields_quantity: TStringField
FieldName = 'staff_fields_quantity' FieldName = 'staff_fields_quantity'
end end
object XDataWebDataSet1inQuickBooks: TStringField
FieldName = 'inQuickBooks'
end
end end
object XDataWebClient1: TXDataWebClient object XDataWebClient1: TXDataWebClient
Connection = DMConnection.ApiConnection Connection = DMConnection.ApiConnection
Left = 218 Left = 200
Top = 76 Top = 50
end
object tmrScrollTop: TWebTimer
Interval = 100
OnTimer = tmrScrollTopTimer
Left = 240
Top = 8
end end
object wdsShipTo: TWebDataSource object wdsShipTo: TWebDataSource
DataSet = xdwdsShipTo DataSet = xdwdsShipTo
Left = 302 Left = 526
Top = 418 Top = 86
end end
object xdwdsShipTo: TXDataWebDataSet object xdwdsShipTo: TXDataWebDataSet
AfterEdit = xdwdsShipToAfterEdit Left = 528
Left = 438 Top = 26
Top = 208
object xdwdsShipToADDRESS: TStringField object xdwdsShipToADDRESS: TStringField
FieldName = 'ADDRESS' FieldName = 'ADDRESS'
end end
end end
object wdsQBItem: TWebDataSource object wdsQBItem: TWebDataSource
DataSet = xdwdsQBItem DataSet = xdwdsQBItem
Left = 272 Left = 606
Top = 548 Top = 86
end end
object xdwdsQBItem: TXDataWebDataSet object xdwdsQBItem: TXDataWebDataSet
AfterEdit = xdwdsQBItemAfterEdit Left = 608
Left = 568 Top = 30
Top = 216
object xdwdsQBItemname: TStringField object xdwdsQBItemname: TStringField
FieldName = 'name' FieldName = 'name'
end end
......
<nav class="navbar navbar-expand navbar-light bg-light sticky-top" style="z-index: 100;"> <nav class="navbar navbar-expand navbar-light bg-light border-light sticky-top" style="z-index: 100;">
<div class="container-fluid ps-0"> <div class="container-fluid d-flex align-items-center ps-0 pe-0">
<ul class="navbar-nav me-auto ps-2">
<!-- Left-aligned label -->
<div class="me-auto ps-3">
<label id="lbl_form_state" class="form-label mb-0 fw-bold text-uppercase text-nowrap text-danger" style="font-size: 16px;">View Mode</label>
</div>
<!-- Right-aligned buttons -->
<ul class="navbar-nav ms-auto pe-2 mb-0">
<li class="nav-item pe-2"> <li class="nav-item pe-2">
<button id="btnadd" class="btn btn-primary btn-sm">Add</button> <button id="btnadd" class="btn btn-primary btn-sm">Add</button>
</li> </li>
...@@ -23,9 +30,10 @@ ...@@ -23,9 +30,10 @@
<button id="btncancel" class="btn btn-danger btn-sm">Cancel</button> <button id="btncancel" class="btn btn-danger btn-sm">Cancel</button>
</li> </li>
<li class="nav-item"> <li class="nav-item">
<button id="btnclose" class="btn btn-secondary btn-sm">Close</button> <button id="btnclose" class="btn btn-primary btn-sm">Close</button>
</li> </li>
</ul> </ul>
</div> </div>
</nav> </nav>
<div class="row mx-5"> <div class="row mx-5">
...@@ -124,20 +132,4 @@ ...@@ -124,20 +132,4 @@
</div> </div>
</div> </div>
</div> </div>
<div class="modal fade" id="confirmation_modal" tabindex="-1" aria-labelledby="confirmation_modal_label" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content shadow-lg">
<div class="modal-header">
<h5 class="modal-title" id="confirmation_modal_label">Confirm</h5>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
</div>
<div class="modal-body fs-6 fw-bold" id="modal_body">
Are you sure you want to delete this order?
</div>
<div class="modal-footer justify-content-center">
<button type="button" class="btn btn-secondary me-3" data-bs-dismiss="modal" id="btn_confirm_cancel">Cancel</button>
<button type="button" class="btn btn-primary" data-bs-dismiss="modal" id="btn_confirm_delete">Delete</button>
</div>
</div>
</div>
</div>
unit View.OrderEntryCuttingDie; unit View.OrderEntryCuttingDie;
interface interface
...@@ -30,7 +30,6 @@ type ...@@ -30,7 +30,6 @@ type
XDataWebDataSet1staff_fields_proof_date: TStringField; XDataWebDataSet1staff_fields_proof_date: TStringField;
XDataWebDataSet1staff_fields_ship_date: TStringField; XDataWebDataSet1staff_fields_ship_date: TStringField;
XDataWebClient1: TXDataWebClient; XDataWebClient1: TXDataWebClient;
tmrScrollTop: TWebTimer;
WebLabel2: TWebLabel; WebLabel2: TWebLabel;
edtCompanyAccountName: TWebDBEdit; edtCompanyAccountName: TWebDBEdit;
edtInQuickBooks: TWebDBEdit; edtInQuickBooks: TWebDBEdit;
...@@ -65,19 +64,18 @@ type ...@@ -65,19 +64,18 @@ type
edtOrderNum: TWebEdit; edtOrderNum: TWebEdit;
btnDelete: TWebButton; btnDelete: TWebButton;
btnClose: TWebButton; btnClose: TWebButton;
btn_confirm_delete: TWebButton;
btnCopy: TWebButton; btnCopy: TWebButton;
tmrReturn: TWebTimer; tmrReturn: TWebTimer;
btnEdit: TWebButton; btnEdit: TWebButton;
btnAdd: TWebButton; btnAdd: TWebButton;
WebButton2: TWebButton; WebButton2: TWebButton;
XDataWebDataSet1inQuickBooks: TStringField;
lblFormState: TWebLabel;
procedure btnSaveClick(Sender: TObject); procedure btnSaveClick(Sender: TObject);
procedure btnCancelClick(Sender: TObject); procedure btnCancelClick(Sender: TObject);
procedure WebFormCreate(Sender: TObject); procedure WebFormCreate(Sender: TObject);
procedure WebFormShow(Sender: TObject);
[async] procedure GetCuttingDieOrder(Order_ID: string); [async] procedure GetCuttingDieOrder(Order_ID: string);
[async] procedure GetCustomer(customerID: string); [async] procedure GetCustomer(customerID: string);
procedure tmrScrollTopTimer(Sender: TObject);
[async] procedure AddCuttingDieOrder(orderJSON: TJSONObject); [async] procedure AddCuttingDieOrder(orderJSON: TJSONObject);
procedure btnPDFClick(Sender: TObject); procedure btnPDFClick(Sender: TObject);
[async] procedure GenerateReportPDF; [async] procedure GenerateReportPDF;
...@@ -87,23 +85,14 @@ type ...@@ -87,23 +85,14 @@ type
[async] procedure delOrder(); [async] procedure delOrder();
procedure btnCloseClick(Sender: TObject); procedure btnCloseClick(Sender: TObject);
procedure btnCopyClick(Sender: TObject); procedure btnCopyClick(Sender: TObject);
procedure btn_confirm_deleteClick(Sender: TObject);
procedure tmrReturnTimer(Sender: TObject); procedure tmrReturnTimer(Sender: TObject);
procedure btnAddClick(Sender: TObject); procedure btnAddClick(Sender: TObject);
procedure xdwdsShipToAfterEdit(DataSet: TDataSet);
procedure EditMode();
procedure xdwdsQBItemAfterEdit(DataSet: TDataSet);
procedure dtpOrderDateChange(Sender: TObject);
procedure btnEditClick(Sender: TObject); procedure btnEditClick(Sender: TObject);
procedure ViewMode(); procedure ViewMode();
procedure WebButton2Click(Sender: TObject); procedure WebButton2Click(Sender: TObject);
procedure ShowAddAddressForm(); procedure ShowAddAddressForm();
[async] procedure SendAddressToServer(AddressJSON: TJSONObject); [async] procedure SendAddressToServer(AddressJSON: TJSONObject);
procedure WebDataSource1DataChange(Sender: TObject; Field: TField);
procedure XDataWebDataSet1AfterEdit(DataSet: TDataSet);
procedure edtCompanyNameChange(Sender: TObject);
private private
FModalAction: string;
FAgencyCode: string; FAgencyCode: string;
FCurrentReportType: string; FCurrentReportType: string;
FSelectProc: TSelectProc; FSelectProc: TSelectProc;
...@@ -111,8 +100,10 @@ type ...@@ -111,8 +100,10 @@ type
customerID: string; customerID: string;
mode: string; mode: string;
notification: string; notification: string;
procedure EditMode;
[async] procedure InitializeForm;
public public
class function CreateForm(AElementID, orderInfo, customerInfo, mode, info: string): TWebForm; class function CreateForm(AElementID, orderInfo, customerInfo, modeParam, info: string): TWebForm;
end; end;
var var
...@@ -125,22 +116,49 @@ implementation ...@@ -125,22 +116,49 @@ implementation
uses uses
View.Home, View.Main, View.AddOrder, View.AddAddress, Utils; View.Home, View.Main, View.AddOrder, View.AddAddress, Utils;
procedure TFOrderEntryCuttingDie.WebButton2Click(Sender: TObject);
class function TFOrderEntryCuttingDie.CreateForm(AElementID, orderInfo, customerInfo, modeParam, info: string): TWebForm;
begin begin
ShowAddAddressForm(); Application.CreateForm(TFOrderEntryCuttingDie, AElementID, Result,
end; procedure(AForm: TObject)
begin
with TFOrderEntryCuttingDie(AForm) do
begin
customerID := customerInfo;
orderID := orderInfo;
mode := modeParam;
notification := info;
console.log('Mode in createform: ' + modeParam);
InitializeForm;
end;
end
);
end;
procedure TFOrderEntryCuttingDie.WebDataSource1DataChange(Sender: TObject; Field: TField); [async] procedure TFOrderEntryCuttingDie.InitializeForm;
begin begin
if Assigned(Field) then console.log('The mode in initialize form is: ' + mode);
console.log( if mode = 'ADD' then
'Field.OnChange → ' + Field.FieldName + begin
' is now: ' + Field.AsString await(getCustomer(customerID));
) EditMode;
end
else else
console.log('WebDataSource1.OnDataChange fired with no specific Field'); begin
await(getCuttingDieOrder(orderID));
ViewMode;
end;
edtOrderNum.Text := orderID;
if notification <> '' then
ShowToast(notification);
end;
procedure TFOrderEntryCuttingDie.WebButton2Click(Sender: TObject);
begin
ShowAddAddressForm();
end; end;
...@@ -317,7 +335,6 @@ begin ...@@ -317,7 +335,6 @@ begin
ShowToast('Success: Order Edited Successfully'); ShowToast('Success: Order Edited Successfully');
AddCuttingDieOrder(orderJSON); AddCuttingDieOrder(orderJSON);
end; end;
...@@ -347,25 +364,26 @@ end; ...@@ -347,25 +364,26 @@ end;
procedure TFOrderEntryCuttingDie.btnDeleteClick(Sender: TObject); procedure TFOrderEntryCuttingDie.btnDeleteClick(Sender: TObject);
begin begin
FModalAction := 'delete'; ShowConfirmationModal(
document.getElementById('modal_body').innerHTML := 'Are you sure you want to delete this order?'; 'Are you sure you want to delete this order?',
document.getElementById('btn_confirm_cancel').innerText := 'Cancel'; 'Delete',
document.getElementById('btn_confirm_delete').innerText := 'Delete'; 'Cancel',
procedure(confirmed: Boolean)
asm begin
var modal = document.getElementById('confirmation_modal'); if confirmed then
if (modal && modal.parentNode !== document.body) { begin
document.body.appendChild(modal); Utils.ShowSpinner('spinner');
} DelOrder();
var confirmationModal = new bootstrap.Modal(modal, { keyboard: false }); tmrReturn.Enabled := true;
confirmationModal.show();
end; end;
end
);
end; end;
procedure TFOrderEntryCuttingDie.btnEditClick(Sender: TObject); procedure TFOrderEntryCuttingDie.btnEditClick(Sender: TObject);
begin begin
EditMode(); EditMode;
end; end;
...@@ -373,8 +391,7 @@ procedure TFOrderEntryCuttingDie.DelOrder(); ...@@ -373,8 +391,7 @@ procedure TFOrderEntryCuttingDie.DelOrder();
var var
Response: TXDataClientResponse; Response: TXDataClientResponse;
begin begin
Response := await(XDataWebClient1.RawInvokeAsync('ILookupService.DelOrder', Response := await(XDataWebClient1.RawInvokeAsync('ILookupService.DelOrder', [OrderID, 'cutting', JS.toString(AuthService.TokenPayload.Properties['user_id'])]));
[OrderID, 'corrugated', JS.toString(AuthService.TokenPayload.Properties['user_id'])]));
end; end;
...@@ -384,33 +401,6 @@ begin ...@@ -384,33 +401,6 @@ begin
end; end;
procedure TFOrderEntryCuttingDie.btn_confirm_deleteClick(Sender: TObject);
begin
if FModalAction = 'cancel' then
begin
FViewMain.change := false;
if OrderID <> '' then
FViewMain.ViewOrderEntryCuttingDie(OrderID, '', 'EDIT', 'Failure: Changes Discarded')
else
FViewMain.ViewOrders('');
end
else if FModalAction = 'delete' then
begin
Utils.ShowSpinner('spinner');
asm
var modal = document.getElementById('confirmation_modal');
if (modal && modal.parentNode !== document.body) {
document.body.appendChild(modal);
}
var bsModal = new bootstrap.Modal(modal, { keyboard: false });
bsModal.hide();
end;
DelOrder();
tmrReturn.Enabled := true;
end;
end;
[async] procedure TFOrderEntryCuttingDie.GenerateReportPDF; [async] procedure TFOrderEntryCuttingDie.GenerateReportPDF;
// sends the search to the server which then sends back a pdf of the results // sends the search to the server which then sends back a pdf of the results
var var
...@@ -456,26 +446,6 @@ begin ...@@ -456,26 +446,6 @@ begin
end; end;
class function TFOrderEntryCuttingDie.CreateForm(AElementID, orderInfo, customerInfo, mode, info: string): TWebForm;
var
localMode: string;
begin
localMode := mode;
Application.CreateForm(TFOrderEntryCuttingDie, AElementID, Result,
procedure(AForm: TObject)
begin
with TFOrderEntryCuttingDie(AForm) do
begin
TFOrderEntryCuttingDie(AForm).customerID := customerInfo;
TFOrderEntryCuttingDie(AForm).orderID := orderInfo;
TFOrderEntryCuttingDie(AForm).mode := localMode;
TFOrderEntryCuttingDie(AForm).notification := info;
end;
end
);
end;
procedure TFOrderEntryCuttingDie.btnAddClick(Sender: TObject); procedure TFOrderEntryCuttingDie.btnAddClick(Sender: TObject);
var var
newform: TFAddOrder; newform: TFAddOrder;
...@@ -517,21 +487,25 @@ end; ...@@ -517,21 +487,25 @@ end;
procedure TFOrderEntryCuttingDie.btnCancelClick(Sender: TObject); procedure TFOrderEntryCuttingDie.btnCancelClick(Sender: TObject);
begin begin
FModalAction := 'cancel'; ShowConfirmationModal(
document.getElementById('modal_body').innerHTML := 'Are you sure you want to cancel all changes?'; 'Are you sure you want to cancel all changes?',
document.getElementById('btn_confirm_cancel').innerText := 'No'; 'Yes',
document.getElementById('btn_confirm_delete').innerText := 'Yes'; 'No',
procedure(confirmed: Boolean)
asm begin
var modal = document.getElementById('confirmation_modal'); if confirmed then
if (modal && modal.parentNode !== document.body) { begin
document.body.appendChild(modal); FViewMain.change := false;
} if OrderID <> '' then
var confirmationModal = new bootstrap.Modal(modal, { keyboard: false }); FViewMain.ViewOrderEntryCuttingDie(OrderID, '', 'EDIT', 'Failure: Changes Discarded')
confirmationModal.show(); else
FViewMain.ViewOrders('');
end; end;
end
);
end; end;
procedure TFOrderEntryCuttingDie.btnCloseClick(Sender: TObject); procedure TFOrderEntryCuttingDie.btnCloseClick(Sender: TObject);
begin begin
FViewMain.ViewOrders(''); FViewMain.ViewOrders('');
...@@ -634,26 +608,6 @@ begin ...@@ -634,26 +608,6 @@ begin
items := TJSObject(customer['ITEMS']); items := TJSObject(customer['ITEMS']);
xdwdsQBItem.SetJsonData(items['data']); xdwdsQBItem.SetJsonData(items['data']);
xdwdsQBITEM.Open; xdwdsQBITEM.Open;
end;
procedure TFOrderEntryCuttingDie.WebFormShow(Sender: TObject);
begin
if mode <> 'ADD' then
begin
getCuttingDieOrder(orderID);
ViewMode();
end
else
begin
getCustomer(customerID);
EditMode();
end;
edtOrderNum.Text := OrderID;
if notification <> '' then
begin
ShowToast(notification);
end;
end; end;
...@@ -664,15 +618,10 @@ begin ...@@ -664,15 +618,10 @@ begin
FViewMain.ViewOrders('Success: Order Successfully Deleted'); FViewMain.ViewOrders('Success: Order Successfully Deleted');
end; end;
procedure TFOrderEntryCuttingDie.tmrScrollTopTimer(Sender: TObject);
begin
tmrScrollTop.Enabled := False;
window.scrollTo(0, 0);
end;
procedure TFOrderEntryCuttingDie.EditMode; procedure TFOrderEntryCuttingDie.EditMode;
begin begin
XDataWebDataSet1.Edit;
FViewMain.change := true; FViewMain.change := true;
btnCopy.Enabled := false; btnCopy.Enabled := false;
btnPDF.Enabled := false; btnPDF.Enabled := false;
...@@ -682,34 +631,10 @@ begin ...@@ -682,34 +631,10 @@ begin
btnCancel.Enabled := True; btnCancel.Enabled := True;
btnEdit.Enabled := false; btnEdit.Enabled := false;
btnAdd.Enabled := false; btnAdd.Enabled := false;
end;
procedure TFOrderEntryCuttingDie.edtCompanyNameChange(Sender: TObject); lblFormState.Caption := 'Edit Mode';
begin lblFormState.ElementHandle.classList.remove('text-danger');
EditMode(); lblFormState.ElementHandle.classList.add('text-success');
end;
procedure TFOrderEntryCuttingDie.XDataWebDataSet1AfterEdit(DataSet: TDataSet);
begin
EditMode();
end;
procedure TFOrderEntryCuttingDie.xdwdsQBItemAfterEdit(DataSet: TDataSet);
begin
EditMode();
end;
procedure TFOrderEntryCuttingDie.xdwdsShipToAfterEdit(DataSet: TDataSet);
begin
EditMode();
end;
procedure TFOrderEntryCuttingDie.dtpOrderDateChange(Sender: TObject);
begin
EditMode();
end; end;
...@@ -724,6 +649,10 @@ begin ...@@ -724,6 +649,10 @@ begin
btnEdit.Enabled := true; btnEdit.Enabled := true;
btnAdd.Enabled := true; btnAdd.Enabled := true;
FViewMain.change := false; FViewMain.change := false;
lblFormState.Caption := 'View Mode';
lblFormState.ElementHandle.classList.remove('text-success');
lblFormState.ElementHandle.classList.add('text-danger');
end; end;
......
object FOrderEntryWeb: TFOrderEntryWeb object FOrderEntryWeb: TFOrderEntryWeb
Width = 1261 Width = 1261
Height = 628 Height = 628
OnShow = WebFormShow OnCreate = WebFormCreate
object WebLabel2: TWebLabel object WebLabel2: TWebLabel
Left = 26 Left = 26
Top = 72 Top = 72
...@@ -112,6 +112,15 @@ object FOrderEntryWeb: TFOrderEntryWeb ...@@ -112,6 +112,15 @@ object FOrderEntryWeb: TFOrderEntryWeb
Visible = False Visible = False
WidthPercent = 100.000000000000000000 WidthPercent = 100.000000000000000000
end end
object lblFormState: TWebLabel
Left = 18
Top = 16
Width = 3
Height = 15
ElementID = 'lbl_form_state'
HeightPercent = 100.000000000000000000
WidthPercent = 100.000000000000000000
end
object edtCompanyName: TWebDBEdit object edtCompanyName: TWebDBEdit
Left = 24 Left = 24
Top = 92 Top = 92
...@@ -122,6 +131,7 @@ object FOrderEntryWeb: TFOrderEntryWeb ...@@ -122,6 +131,7 @@ object FOrderEntryWeb: TFOrderEntryWeb
ElementID = 'edtcompanyname' ElementID = 'edtcompanyname'
HeightPercent = 100.000000000000000000 HeightPercent = 100.000000000000000000
MaxLength = 90 MaxLength = 90
ShowFocus = False
WidthStyle = ssAuto WidthStyle = ssAuto
WidthPercent = 100.000000000000000000 WidthPercent = 100.000000000000000000
DataField = 'NAME' DataField = 'NAME'
...@@ -136,6 +146,7 @@ object FOrderEntryWeb: TFOrderEntryWeb ...@@ -136,6 +146,7 @@ object FOrderEntryWeb: TFOrderEntryWeb
ChildOrder = 79 ChildOrder = 79
ElementID = 'edtaccountcompanyname' ElementID = 'edtaccountcompanyname'
HeightPercent = 100.000000000000000000 HeightPercent = 100.000000000000000000
ShowFocus = False
WidthPercent = 100.000000000000000000 WidthPercent = 100.000000000000000000
DataField = 'SHORT_NAME' DataField = 'SHORT_NAME'
DataSource = WebDataSource1 DataSource = WebDataSource1
...@@ -149,6 +160,7 @@ object FOrderEntryWeb: TFOrderEntryWeb ...@@ -149,6 +160,7 @@ object FOrderEntryWeb: TFOrderEntryWeb
ChildOrder = 79 ChildOrder = 79
ElementID = 'edtinquickbooks' ElementID = 'edtinquickbooks'
HeightPercent = 100.000000000000000000 HeightPercent = 100.000000000000000000
ShowFocus = False
WidthPercent = 100.000000000000000000 WidthPercent = 100.000000000000000000
DataField = 'inQuickBooks' DataField = 'inQuickBooks'
DataSource = WebDataSource1 DataSource = WebDataSource1
...@@ -164,8 +176,8 @@ object FOrderEntryWeb: TFOrderEntryWeb ...@@ -164,8 +176,8 @@ object FOrderEntryWeb: TFOrderEntryWeb
Color = clWhite Color = clWhite
Date = 45638.529943136570000000 Date = 45638.529943136570000000
Role = '' Role = ''
ShowFocus = False
Text = '' Text = ''
OnChange = dtpOrderDateChange
end end
object dtpProofDate: TWebDateTimePicker object dtpProofDate: TWebDateTimePicker
Left = 22 Left = 22
...@@ -178,8 +190,8 @@ object FOrderEntryWeb: TFOrderEntryWeb ...@@ -178,8 +190,8 @@ object FOrderEntryWeb: TFOrderEntryWeb
Color = clWhite Color = clWhite
Date = 45638.529943136570000000 Date = 45638.529943136570000000
Role = '' Role = ''
ShowFocus = False
Text = '' Text = ''
OnChange = dtpOrderDateChange
end end
object dtpShipDate: TWebDateTimePicker object dtpShipDate: TWebDateTimePicker
Left = 22 Left = 22
...@@ -192,8 +204,8 @@ object FOrderEntryWeb: TFOrderEntryWeb ...@@ -192,8 +204,8 @@ object FOrderEntryWeb: TFOrderEntryWeb
Color = clWhite Color = clWhite
Date = 45638.529943136570000000 Date = 45638.529943136570000000
Role = '' Role = ''
ShowFocus = False
Text = '' Text = ''
OnChange = dtpOrderDateChange
end end
object dtpArtDue: TWebDateTimePicker object dtpArtDue: TWebDateTimePicker
Left = 24 Left = 24
...@@ -206,8 +218,8 @@ object FOrderEntryWeb: TFOrderEntryWeb ...@@ -206,8 +218,8 @@ object FOrderEntryWeb: TFOrderEntryWeb
Color = clWhite Color = clWhite
Date = 45638.529943136570000000 Date = 45638.529943136570000000
Role = '' Role = ''
ShowFocus = False
Text = '' Text = ''
OnChange = dtpOrderDateChange
end end
object dtpPlateDue: TWebDateTimePicker object dtpPlateDue: TWebDateTimePicker
Left = 24 Left = 24
...@@ -220,8 +232,8 @@ object FOrderEntryWeb: TFOrderEntryWeb ...@@ -220,8 +232,8 @@ object FOrderEntryWeb: TFOrderEntryWeb
Color = clWhite Color = clWhite
Date = 45638.529943136570000000 Date = 45638.529943136570000000
Role = '' Role = ''
ShowFocus = False
Text = '' Text = ''
OnChange = dtpOrderDateChange
end end
object edtShipVia: TWebDBEdit object edtShipVia: TWebDBEdit
Left = 24 Left = 24
...@@ -232,6 +244,7 @@ object FOrderEntryWeb: TFOrderEntryWeb ...@@ -232,6 +244,7 @@ object FOrderEntryWeb: TFOrderEntryWeb
ChildOrder = 79 ChildOrder = 79
ElementID = 'edtshipvia' ElementID = 'edtshipvia'
HeightPercent = 100.000000000000000000 HeightPercent = 100.000000000000000000
ShowFocus = False
WidthPercent = 100.000000000000000000 WidthPercent = 100.000000000000000000
DataField = 'staff_fields_ship_via' DataField = 'staff_fields_ship_via'
DataSource = WebDataSource1 DataSource = WebDataSource1
...@@ -245,18 +258,20 @@ object FOrderEntryWeb: TFOrderEntryWeb ...@@ -245,18 +258,20 @@ object FOrderEntryWeb: TFOrderEntryWeb
ChildOrder = 79 ChildOrder = 79
ElementID = 'edtquantity' ElementID = 'edtquantity'
HeightPercent = 100.000000000000000000 HeightPercent = 100.000000000000000000
ShowFocus = False
WidthPercent = 100.000000000000000000 WidthPercent = 100.000000000000000000
DataField = 'staff_fields_quantity' DataField = 'staff_fields_quantity'
DataSource = WebDataSource1 DataSource = WebDataSource1
end end
object edtPrice: TWebDBEdit object edtPrice: TWebDBEdit
Left = 24 Left = 26
Top = 374 Top = 374
Width = 121 Width = 121
Height = 22 Height = 22
ChildOrder = 79 ChildOrder = 79
ElementID = 'edtprice' ElementID = 'edtprice'
HeightPercent = 100.000000000000000000 HeightPercent = 100.000000000000000000
ShowFocus = False
WidthPercent = 100.000000000000000000 WidthPercent = 100.000000000000000000
DataField = 'staff_fields_price' DataField = 'staff_fields_price'
DataSource = WebDataSource1 DataSource = WebDataSource1
...@@ -270,6 +285,7 @@ object FOrderEntryWeb: TFOrderEntryWeb ...@@ -270,6 +285,7 @@ object FOrderEntryWeb: TFOrderEntryWeb
ChildOrder = 79 ChildOrder = 79
ElementID = 'edtinvoiceto' ElementID = 'edtinvoiceto'
HeightPercent = 100.000000000000000000 HeightPercent = 100.000000000000000000
ShowFocus = False
WidthPercent = 100.000000000000000000 WidthPercent = 100.000000000000000000
DataField = 'staff_fields_invoice_to' DataField = 'staff_fields_invoice_to'
DataSource = WebDataSource1 DataSource = WebDataSource1
...@@ -283,6 +299,7 @@ object FOrderEntryWeb: TFOrderEntryWeb ...@@ -283,6 +299,7 @@ object FOrderEntryWeb: TFOrderEntryWeb
ChildOrder = 79 ChildOrder = 79
ElementID = 'edtponumber' ElementID = 'edtponumber'
HeightPercent = 100.000000000000000000 HeightPercent = 100.000000000000000000
ShowFocus = False
WidthPercent = 100.000000000000000000 WidthPercent = 100.000000000000000000
DataField = 'staff_fields_po_number' DataField = 'staff_fields_po_number'
DataSource = WebDataSource1 DataSource = WebDataSource1
...@@ -296,17 +313,19 @@ object FOrderEntryWeb: TFOrderEntryWeb ...@@ -296,17 +313,19 @@ object FOrderEntryWeb: TFOrderEntryWeb
ChildOrder = 79 ChildOrder = 79
ElementID = 'edtjobname' ElementID = 'edtjobname'
HeightPercent = 100.000000000000000000 HeightPercent = 100.000000000000000000
ShowFocus = False
WidthPercent = 100.000000000000000000 WidthPercent = 100.000000000000000000
DataField = 'staff_fields_job_name' DataField = 'staff_fields_job_name'
DataSource = WebDataSource1 DataSource = WebDataSource1
end end
object WebDBComboBox1: TWebDBComboBox object WebDBComboBox1: TWebDBComboBox
Left = 26 Left = 26
Top = 430 Top = 429
Width = 145 Width = 145
Height = 23 Height = 23
ElementID = 'wcbshipto' ElementID = 'wcbshipto'
HeightPercent = 100.000000000000000000 HeightPercent = 100.000000000000000000
ShowFocus = False
WidthPercent = 100.000000000000000000 WidthPercent = 100.000000000000000000
ItemIndex = -1 ItemIndex = -1
DataField = 'staff_fields_ship_to' DataField = 'staff_fields_ship_to'
...@@ -323,6 +342,7 @@ object FOrderEntryWeb: TFOrderEntryWeb ...@@ -323,6 +342,7 @@ object FOrderEntryWeb: TFOrderEntryWeb
ChildOrder = 79 ChildOrder = 79
ElementID = 'edtbworcolorcopy' ElementID = 'edtbworcolorcopy'
HeightPercent = 100.000000000000000000 HeightPercent = 100.000000000000000000
ShowFocus = False
WidthPercent = 100.000000000000000000 WidthPercent = 100.000000000000000000
DataField = 'supplied_by_customer_b_w_or_co' DataField = 'supplied_by_customer_b_w_or_co'
DataSource = WebDataSource1 DataSource = WebDataSource1
...@@ -336,6 +356,7 @@ object FOrderEntryWeb: TFOrderEntryWeb ...@@ -336,6 +356,7 @@ object FOrderEntryWeb: TFOrderEntryWeb
ChildOrder = 79 ChildOrder = 79
ElementID = 'edtplates' ElementID = 'edtplates'
HeightPercent = 100.000000000000000000 HeightPercent = 100.000000000000000000
ShowFocus = False
WidthPercent = 100.000000000000000000 WidthPercent = 100.000000000000000000
DataField = 'supplied_by_customer_plates' DataField = 'supplied_by_customer_plates'
DataSource = WebDataSource1 DataSource = WebDataSource1
...@@ -349,6 +370,7 @@ object FOrderEntryWeb: TFOrderEntryWeb ...@@ -349,6 +370,7 @@ object FOrderEntryWeb: TFOrderEntryWeb
ChildOrder = 79 ChildOrder = 79
ElementID = 'edtdimensionallayout' ElementID = 'edtdimensionallayout'
HeightPercent = 100.000000000000000000 HeightPercent = 100.000000000000000000
ShowFocus = False
WidthPercent = 100.000000000000000000 WidthPercent = 100.000000000000000000
DataField = 'supplied_by_customer_dimension' DataField = 'supplied_by_customer_dimension'
DataSource = WebDataSource1 DataSource = WebDataSource1
...@@ -362,6 +384,7 @@ object FOrderEntryWeb: TFOrderEntryWeb ...@@ -362,6 +384,7 @@ object FOrderEntryWeb: TFOrderEntryWeb
ChildOrder = 79 ChildOrder = 79
ElementID = 'edtsample' ElementID = 'edtsample'
HeightPercent = 100.000000000000000000 HeightPercent = 100.000000000000000000
ShowFocus = False
WidthPercent = 100.000000000000000000 WidthPercent = 100.000000000000000000
DataField = 'supplied_by_customer_sample' DataField = 'supplied_by_customer_sample'
DataSource = WebDataSource1 DataSource = WebDataSource1
...@@ -375,6 +398,7 @@ object FOrderEntryWeb: TFOrderEntryWeb ...@@ -375,6 +398,7 @@ object FOrderEntryWeb: TFOrderEntryWeb
ChildOrder = 79 ChildOrder = 79
ElementID = 'edtother' ElementID = 'edtother'
HeightPercent = 100.000000000000000000 HeightPercent = 100.000000000000000000
ShowFocus = False
WidthPercent = 100.000000000000000000 WidthPercent = 100.000000000000000000
DataField = 'supplied_by_customer_other' DataField = 'supplied_by_customer_other'
DataSource = WebDataSource1 DataSource = WebDataSource1
...@@ -388,6 +412,7 @@ object FOrderEntryWeb: TFOrderEntryWeb ...@@ -388,6 +412,7 @@ object FOrderEntryWeb: TFOrderEntryWeb
ChildOrder = 79 ChildOrder = 79
ElementID = 'edtemail' ElementID = 'edtemail'
HeightPercent = 100.000000000000000000 HeightPercent = 100.000000000000000000
ShowFocus = False
WidthPercent = 100.000000000000000000 WidthPercent = 100.000000000000000000
DataField = 'supplied_by_customer_e_mail' DataField = 'supplied_by_customer_e_mail'
DataSource = WebDataSource1 DataSource = WebDataSource1
...@@ -401,6 +426,7 @@ object FOrderEntryWeb: TFOrderEntryWeb ...@@ -401,6 +426,7 @@ object FOrderEntryWeb: TFOrderEntryWeb
ChildOrder = 79 ChildOrder = 79
ElementID = 'edttotalinchesused' ElementID = 'edttotalinchesused'
HeightPercent = 100.000000000000000000 HeightPercent = 100.000000000000000000
ShowFocus = False
WidthPercent = 100.000000000000000000 WidthPercent = 100.000000000000000000
DataField = 'supplied_by_customer_total_inc' DataField = 'supplied_by_customer_total_inc'
DataSource = WebDataSource1 DataSource = WebDataSource1
...@@ -414,6 +440,7 @@ object FOrderEntryWeb: TFOrderEntryWeb ...@@ -414,6 +440,7 @@ object FOrderEntryWeb: TFOrderEntryWeb
ChildOrder = 79 ChildOrder = 79
ElementID = 'edtftp' ElementID = 'edtftp'
HeightPercent = 100.000000000000000000 HeightPercent = 100.000000000000000000
ShowFocus = False
WidthPercent = 100.000000000000000000 WidthPercent = 100.000000000000000000
DataField = 'supplied_by_customer_ftp' DataField = 'supplied_by_customer_ftp'
DataSource = WebDataSource1 DataSource = WebDataSource1
...@@ -427,6 +454,7 @@ object FOrderEntryWeb: TFOrderEntryWeb ...@@ -427,6 +454,7 @@ object FOrderEntryWeb: TFOrderEntryWeb
ChildOrder = 79 ChildOrder = 79
ElementID = 'edtsheetsused' ElementID = 'edtsheetsused'
HeightPercent = 100.000000000000000000 HeightPercent = 100.000000000000000000
ShowFocus = False
WidthPercent = 100.000000000000000000 WidthPercent = 100.000000000000000000
DataField = 'supplied_by_customer_sheets_us' DataField = 'supplied_by_customer_sheets_us'
DataSource = WebDataSource1 DataSource = WebDataSource1
...@@ -440,6 +468,7 @@ object FOrderEntryWeb: TFOrderEntryWeb ...@@ -440,6 +468,7 @@ object FOrderEntryWeb: TFOrderEntryWeb
ChildOrder = 79 ChildOrder = 79
ElementID = 'edtinitials' ElementID = 'edtinitials'
HeightPercent = 100.000000000000000000 HeightPercent = 100.000000000000000000
ShowFocus = False
WidthPercent = 100.000000000000000000 WidthPercent = 100.000000000000000000
DataField = 'supplied_by_customer_initials' DataField = 'supplied_by_customer_initials'
DataSource = WebDataSource1 DataSource = WebDataSource1
...@@ -449,10 +478,13 @@ object FOrderEntryWeb: TFOrderEntryWeb ...@@ -449,10 +478,13 @@ object FOrderEntryWeb: TFOrderEntryWeb
Top = 96 Top = 96
Width = 113 Width = 113
Height = 22 Height = 22
TabStop = False
Caption = 'PDF' Caption = 'PDF'
ChildOrder = 79 ChildOrder = 79
ElementID = 'cbpdf' ElementID = 'cbpdf'
Enabled = False
HeightPercent = 100.000000000000000000 HeightPercent = 100.000000000000000000
ShowFocus = False
WidthPercent = 100.000000000000000000 WidthPercent = 100.000000000000000000
DataField = 'proofing_pdf' DataField = 'proofing_pdf'
DataSource = WebDataSource1 DataSource = WebDataSource1
...@@ -462,10 +494,12 @@ object FOrderEntryWeb: TFOrderEntryWeb ...@@ -462,10 +494,12 @@ object FOrderEntryWeb: TFOrderEntryWeb
Top = 128 Top = 128
Width = 121 Width = 121
Height = 23 Height = 23
TabStop = False
AutoSize = True AutoSize = True
ChildOrder = 79 ChildOrder = 79
ElementID = 'edtpdfto' ElementID = 'edtpdfto'
HeightPercent = 100.000000000000000000 HeightPercent = 100.000000000000000000
ShowFocus = False
WidthPercent = 100.000000000000000000 WidthPercent = 100.000000000000000000
DataField = 'proofing_pdf_to' DataField = 'proofing_pdf_to'
DataSource = WebDataSource1 DataSource = WebDataSource1
...@@ -481,8 +515,9 @@ object FOrderEntryWeb: TFOrderEntryWeb ...@@ -481,8 +515,9 @@ object FOrderEntryWeb: TFOrderEntryWeb
Color = clWhite Color = clWhite
Date = 45638.529943136570000000 Date = 45638.529943136570000000
Role = '' Role = ''
ShowFocus = False
TabStop = False
Text = '' Text = ''
OnChange = dtpOrderDateChange
end end
object dtpPDFDate3: TWebDateTimePicker object dtpPDFDate3: TWebDateTimePicker
Left = 444 Left = 444
...@@ -495,8 +530,9 @@ object FOrderEntryWeb: TFOrderEntryWeb ...@@ -495,8 +530,9 @@ object FOrderEntryWeb: TFOrderEntryWeb
Color = clWhite Color = clWhite
Date = 45638.529943136570000000 Date = 45638.529943136570000000
Role = '' Role = ''
ShowFocus = False
TabStop = False
Text = '' Text = ''
OnChange = dtpOrderDateChange
end end
object dtpPDFDate2: TWebDateTimePicker object dtpPDFDate2: TWebDateTimePicker
Left = 444 Left = 444
...@@ -509,18 +545,22 @@ object FOrderEntryWeb: TFOrderEntryWeb ...@@ -509,18 +545,22 @@ object FOrderEntryWeb: TFOrderEntryWeb
Color = clWhite Color = clWhite
Date = 45638.529943136570000000 Date = 45638.529943136570000000
Role = '' Role = ''
ShowFocus = False
TabStop = False
Text = '' Text = ''
OnChange = dtpOrderDateChange
end end
object cbInkJet: TWebDBCheckBox object cbInkJet: TWebDBCheckBox
Left = 444 Left = 444
Top = 238 Top = 238
Width = 113 Width = 113
Height = 22 Height = 22
TabStop = False
Caption = 'Full Size Ink Jet For Layout Content Only' Caption = 'Full Size Ink Jet For Layout Content Only'
ChildOrder = 79 ChildOrder = 79
ElementID = 'cbfullsizeinkjet' ElementID = 'cbfullsizeinkjet'
Enabled = False
HeightPercent = 100.000000000000000000 HeightPercent = 100.000000000000000000
ShowFocus = False
WidthPercent = 100.000000000000000000 WidthPercent = 100.000000000000000000
DataField = 'proofing_full_size_ink_jet_for' DataField = 'proofing_full_size_ink_jet_for'
DataSource = WebDataSource1 DataSource = WebDataSource1
...@@ -530,10 +570,12 @@ object FOrderEntryWeb: TFOrderEntryWeb ...@@ -530,10 +570,12 @@ object FOrderEntryWeb: TFOrderEntryWeb
Top = 295 Top = 295
Width = 121 Width = 121
Height = 23 Height = 23
TabStop = False
AutoSize = True AutoSize = True
ChildOrder = 79 ChildOrder = 79
ElementID = 'edtinkjetto2' ElementID = 'edtinkjetto2'
HeightPercent = 100.000000000000000000 HeightPercent = 100.000000000000000000
ShowFocus = False
WidthPercent = 100.000000000000000000 WidthPercent = 100.000000000000000000
DataField = 'proofing_ink_jet_to_2' DataField = 'proofing_ink_jet_to_2'
DataSource = WebDataSource1 DataSource = WebDataSource1
...@@ -543,10 +585,12 @@ object FOrderEntryWeb: TFOrderEntryWeb ...@@ -543,10 +585,12 @@ object FOrderEntryWeb: TFOrderEntryWeb
Top = 266 Top = 266
Width = 121 Width = 121
Height = 23 Height = 23
TabStop = False
AutoSize = True AutoSize = True
ChildOrder = 79 ChildOrder = 79
ElementID = 'edtinkjetto' ElementID = 'edtinkjetto'
HeightPercent = 100.000000000000000000 HeightPercent = 100.000000000000000000
ShowFocus = False
WidthPercent = 100.000000000000000000 WidthPercent = 100.000000000000000000
DataField = 'proofing_ink_jet_to' DataField = 'proofing_ink_jet_to'
DataSource = WebDataSource1 DataSource = WebDataSource1
...@@ -562,8 +606,9 @@ object FOrderEntryWeb: TFOrderEntryWeb ...@@ -562,8 +606,9 @@ object FOrderEntryWeb: TFOrderEntryWeb
Color = clWhite Color = clWhite
Date = 45638.529943136570000000 Date = 45638.529943136570000000
Role = '' Role = ''
ShowFocus = False
TabStop = False
Text = '' Text = ''
OnChange = dtpOrderDateChange
end end
object dtpInkJetDate3: TWebDateTimePicker object dtpInkJetDate3: TWebDateTimePicker
Left = 444 Left = 444
...@@ -576,8 +621,9 @@ object FOrderEntryWeb: TFOrderEntryWeb ...@@ -576,8 +621,9 @@ object FOrderEntryWeb: TFOrderEntryWeb
Color = clWhite Color = clWhite
Date = 45638.529943136570000000 Date = 45638.529943136570000000
Role = '' Role = ''
ShowFocus = False
TabStop = False
Text = '' Text = ''
OnChange = dtpOrderDateChange
end end
object dtpInkJetDate2: TWebDateTimePicker object dtpInkJetDate2: TWebDateTimePicker
Left = 444 Left = 444
...@@ -590,18 +636,21 @@ object FOrderEntryWeb: TFOrderEntryWeb ...@@ -590,18 +636,21 @@ object FOrderEntryWeb: TFOrderEntryWeb
Color = clWhite Color = clWhite
Date = 45638.529943136570000000 Date = 45638.529943136570000000
Role = '' Role = ''
ShowFocus = False
TabStop = False
Text = '' Text = ''
OnChange = dtpOrderDateChange
end end
object edtColorContrastTo: TWebDBEdit object edtColorContrastTo: TWebDBEdit
Left = 444 Left = 444
Top = 435 Top = 435
Width = 121 Width = 121
Height = 23 Height = 23
TabStop = False
AutoSize = True AutoSize = True
ChildOrder = 79 ChildOrder = 79
ElementID = 'edtcolorcontrastto' ElementID = 'edtcolorcontrastto'
HeightPercent = 100.000000000000000000 HeightPercent = 100.000000000000000000
ShowFocus = False
WidthPercent = 100.000000000000000000 WidthPercent = 100.000000000000000000
DataField = 'proofing_color_contrac_to' DataField = 'proofing_color_contrac_to'
DataSource = WebDataSource1 DataSource = WebDataSource1
...@@ -617,8 +666,9 @@ object FOrderEntryWeb: TFOrderEntryWeb ...@@ -617,8 +666,9 @@ object FOrderEntryWeb: TFOrderEntryWeb
Color = clWhite Color = clWhite
Date = 45638.529943136570000000 Date = 45638.529943136570000000
Role = '' Role = ''
ShowFocus = False
TabStop = False
Text = '' Text = ''
OnChange = dtpOrderDateChange
end end
object dtpColorContractDate2: TWebDateTimePicker object dtpColorContractDate2: TWebDateTimePicker
Left = 444 Left = 444
...@@ -631,18 +681,21 @@ object FOrderEntryWeb: TFOrderEntryWeb ...@@ -631,18 +681,21 @@ object FOrderEntryWeb: TFOrderEntryWeb
Color = clWhite Color = clWhite
Date = 45638.529943136570000000 Date = 45638.529943136570000000
Role = '' Role = ''
ShowFocus = False
TabStop = False
Text = '' Text = ''
OnChange = dtpOrderDateChange
end end
object edtDigitalColorTo: TWebDBEdit object edtDigitalColorTo: TWebDBEdit
Left = 444 Left = 444
Top = 545 Top = 545
Width = 121 Width = 121
Height = 23 Height = 23
TabStop = False
AutoSize = True AutoSize = True
ChildOrder = 79 ChildOrder = 79
ElementID = 'edtdigitalcolorto' ElementID = 'edtdigitalcolorto'
HeightPercent = 100.000000000000000000 HeightPercent = 100.000000000000000000
ShowFocus = False
WidthPercent = 100.000000000000000000 WidthPercent = 100.000000000000000000
DataField = 'proofing_digital_color_to' DataField = 'proofing_digital_color_to'
DataSource = WebDataSource1 DataSource = WebDataSource1
...@@ -652,10 +705,12 @@ object FOrderEntryWeb: TFOrderEntryWeb ...@@ -652,10 +705,12 @@ object FOrderEntryWeb: TFOrderEntryWeb
Top = 516 Top = 516
Width = 121 Width = 121
Height = 23 Height = 23
TabStop = False
AutoSize = True AutoSize = True
ChildOrder = 79 ChildOrder = 79
ElementID = 'edtdigitalcolorkey' ElementID = 'edtdigitalcolorkey'
HeightPercent = 100.000000000000000000 HeightPercent = 100.000000000000000000
ShowFocus = False
WidthPercent = 100.000000000000000000 WidthPercent = 100.000000000000000000
DataField = 'proofing_digital_color_key' DataField = 'proofing_digital_color_key'
DataSource = WebDataSource1 DataSource = WebDataSource1
...@@ -671,18 +726,21 @@ object FOrderEntryWeb: TFOrderEntryWeb ...@@ -671,18 +726,21 @@ object FOrderEntryWeb: TFOrderEntryWeb
Color = clWhite Color = clWhite
Date = 45638.529943136570000000 Date = 45638.529943136570000000
Role = '' Role = ''
ShowFocus = False
TabStop = False
Text = '' Text = ''
OnChange = dtpOrderDateChange
end end
object edtAniloxInfo: TWebDBEdit object edtAniloxInfo: TWebDBEdit
Left = 634 Left = 634
Top = 58 Top = 58
Width = 121 Width = 121
Height = 23 Height = 23
TabStop = False
AutoSize = True AutoSize = True
ChildOrder = 79 ChildOrder = 79
ElementID = 'edtanilaxinfo' ElementID = 'edtanilaxinfo'
HeightPercent = 100.000000000000000000 HeightPercent = 100.000000000000000000
ShowFocus = False
WidthPercent = 100.000000000000000000 WidthPercent = 100.000000000000000000
DataField = 'quantity_and_colors_anilox_info' DataField = 'quantity_and_colors_anilox_info'
DataSource = WebDataSource1 DataSource = WebDataSource1
...@@ -692,10 +750,12 @@ object FOrderEntryWeb: TFOrderEntryWeb ...@@ -692,10 +750,12 @@ object FOrderEntryWeb: TFOrderEntryWeb
Top = 29 Top = 29
Width = 121 Width = 121
Height = 23 Height = 23
TabStop = False
AutoSize = True AutoSize = True
ChildOrder = 79 ChildOrder = 79
ElementID = 'edtpressname' ElementID = 'edtpressname'
HeightPercent = 100.000000000000000000 HeightPercent = 100.000000000000000000
ShowFocus = False
WidthPercent = 100.000000000000000000 WidthPercent = 100.000000000000000000
DataField = 'quantity_and_colors_press_name' DataField = 'quantity_and_colors_press_name'
DataSource = WebDataSource1 DataSource = WebDataSource1
...@@ -709,6 +769,7 @@ object FOrderEntryWeb: TFOrderEntryWeb ...@@ -709,6 +769,7 @@ object FOrderEntryWeb: TFOrderEntryWeb
ChildOrder = 59 ChildOrder = 59
ElementID = 'btnaddcolor' ElementID = 'btnaddcolor'
HeightPercent = 100.000000000000000000 HeightPercent = 100.000000000000000000
TabStop = False
WidthPercent = 100.000000000000000000 WidthPercent = 100.000000000000000000
OnClick = WebButton1Click OnClick = WebButton1Click
end end
...@@ -717,10 +778,12 @@ object FOrderEntryWeb: TFOrderEntryWeb ...@@ -717,10 +778,12 @@ object FOrderEntryWeb: TFOrderEntryWeb
Top = 139 Top = 139
Width = 121 Width = 121
Height = 23 Height = 23
TabStop = False
AutoSize = True AutoSize = True
ChildOrder = 79 ChildOrder = 79
ElementID = 'edtmicrodots' ElementID = 'edtmicrodots'
HeightPercent = 100.000000000000000000 HeightPercent = 100.000000000000000000
ShowFocus = False
WidthPercent = 100.000000000000000000 WidthPercent = 100.000000000000000000
DataField = 'plate_marks_microdots' DataField = 'plate_marks_microdots'
DataSource = WebDataSource1 DataSource = WebDataSource1
...@@ -730,10 +793,12 @@ object FOrderEntryWeb: TFOrderEntryWeb ...@@ -730,10 +793,12 @@ object FOrderEntryWeb: TFOrderEntryWeb
Top = 168 Top = 168
Width = 121 Width = 121
Height = 23 Height = 23
TabStop = False
AutoSize = True AutoSize = True
ChildOrder = 79 ChildOrder = 79
ElementID = 'edtmicrodotscomments' ElementID = 'edtmicrodotscomments'
HeightPercent = 100.000000000000000000 HeightPercent = 100.000000000000000000
ShowFocus = False
WidthPercent = 100.000000000000000000 WidthPercent = 100.000000000000000000
DataField = 'plate_marks_microdots_comments' DataField = 'plate_marks_microdots_comments'
DataSource = WebDataSource1 DataSource = WebDataSource1
...@@ -743,10 +808,12 @@ object FOrderEntryWeb: TFOrderEntryWeb ...@@ -743,10 +808,12 @@ object FOrderEntryWeb: TFOrderEntryWeb
Top = 239 Top = 239
Width = 121 Width = 121
Height = 23 Height = 23
TabStop = False
AutoSize = True AutoSize = True
ChildOrder = 79 ChildOrder = 79
ElementID = 'edtcrosshairscomments' ElementID = 'edtcrosshairscomments'
HeightPercent = 100.000000000000000000 HeightPercent = 100.000000000000000000
ShowFocus = False
WidthPercent = 100.000000000000000000 WidthPercent = 100.000000000000000000
DataField = 'plate_marks_crosshairs_comments' DataField = 'plate_marks_crosshairs_comments'
DataSource = WebDataSource1 DataSource = WebDataSource1
...@@ -756,10 +823,12 @@ object FOrderEntryWeb: TFOrderEntryWeb ...@@ -756,10 +823,12 @@ object FOrderEntryWeb: TFOrderEntryWeb
Top = 206 Top = 206
Width = 121 Width = 121
Height = 23 Height = 23
TabStop = False
AutoSize = True AutoSize = True
ChildOrder = 79 ChildOrder = 79
ElementID = 'edtcrosshairs' ElementID = 'edtcrosshairs'
HeightPercent = 100.000000000000000000 HeightPercent = 100.000000000000000000
ShowFocus = False
WidthPercent = 100.000000000000000000 WidthPercent = 100.000000000000000000
DataField = 'plate_marks_crosshairs' DataField = 'plate_marks_crosshairs'
DataSource = WebDataSource1 DataSource = WebDataSource1
...@@ -769,10 +838,12 @@ object FOrderEntryWeb: TFOrderEntryWeb ...@@ -769,10 +838,12 @@ object FOrderEntryWeb: TFOrderEntryWeb
Top = 300 Top = 300
Width = 121 Width = 121
Height = 23 Height = 23
TabStop = False
AutoSize = True AutoSize = True
ChildOrder = 79 ChildOrder = 79
ElementID = 'edtcolorbarscomments' ElementID = 'edtcolorbarscomments'
HeightPercent = 100.000000000000000000 HeightPercent = 100.000000000000000000
ShowFocus = False
WidthPercent = 100.000000000000000000 WidthPercent = 100.000000000000000000
DataField = 'plate_marks_color_bars_comments' DataField = 'plate_marks_color_bars_comments'
DataSource = WebDataSource1 DataSource = WebDataSource1
...@@ -782,10 +853,12 @@ object FOrderEntryWeb: TFOrderEntryWeb ...@@ -782,10 +853,12 @@ object FOrderEntryWeb: TFOrderEntryWeb
Top = 271 Top = 271
Width = 121 Width = 121
Height = 23 Height = 23
TabStop = False
AutoSize = True AutoSize = True
ChildOrder = 79 ChildOrder = 79
ElementID = 'edtcolorbars' ElementID = 'edtcolorbars'
HeightPercent = 100.000000000000000000 HeightPercent = 100.000000000000000000
ShowFocus = False
WidthPercent = 100.000000000000000000 WidthPercent = 100.000000000000000000
DataField = 'plate_marks_color_bars' DataField = 'plate_marks_color_bars'
DataSource = WebDataSource1 DataSource = WebDataSource1
...@@ -795,10 +868,12 @@ object FOrderEntryWeb: TFOrderEntryWeb ...@@ -795,10 +868,12 @@ object FOrderEntryWeb: TFOrderEntryWeb
Top = 329 Top = 329
Width = 121 Width = 121
Height = 23 Height = 23
TabStop = False
AutoSize = True AutoSize = True
ChildOrder = 79 ChildOrder = 79
ElementID = 'edtplateother' ElementID = 'edtplateother'
HeightPercent = 100.000000000000000000 HeightPercent = 100.000000000000000000
ShowFocus = False
WidthPercent = 100.000000000000000000 WidthPercent = 100.000000000000000000
DataField = 'plate_marks_other' DataField = 'plate_marks_other'
DataSource = WebDataSource1 DataSource = WebDataSource1
...@@ -808,10 +883,12 @@ object FOrderEntryWeb: TFOrderEntryWeb ...@@ -808,10 +883,12 @@ object FOrderEntryWeb: TFOrderEntryWeb
Top = 358 Top = 358
Width = 121 Width = 121
Height = 23 Height = 23
TabStop = False
AutoSize = True AutoSize = True
ChildOrder = 79 ChildOrder = 79
ElementID = 'edtplateothercomments' ElementID = 'edtplateothercomments'
HeightPercent = 100.000000000000000000 HeightPercent = 100.000000000000000000
ShowFocus = False
WidthPercent = 100.000000000000000000 WidthPercent = 100.000000000000000000
DataField = 'plate_marks_other_comments' DataField = 'plate_marks_other_comments'
DataSource = WebDataSource1 DataSource = WebDataSource1
...@@ -821,6 +898,7 @@ object FOrderEntryWeb: TFOrderEntryWeb ...@@ -821,6 +898,7 @@ object FOrderEntryWeb: TFOrderEntryWeb
Top = 29 Top = 29
Width = 121 Width = 121
Height = 23 Height = 23
TabStop = False
AutoSize = True AutoSize = True
ChildOrder = 79 ChildOrder = 79
ElementID = 'edtaround' ElementID = 'edtaround'
...@@ -835,6 +913,7 @@ object FOrderEntryWeb: TFOrderEntryWeb ...@@ -835,6 +913,7 @@ object FOrderEntryWeb: TFOrderEntryWeb
Top = 58 Top = 58
Width = 121 Width = 121
Height = 23 Height = 23
TabStop = False
AutoSize = True AutoSize = True
ChildOrder = 79 ChildOrder = 79
ElementID = 'edtaccross' ElementID = 'edtaccross'
...@@ -849,6 +928,7 @@ object FOrderEntryWeb: TFOrderEntryWeb ...@@ -849,6 +928,7 @@ object FOrderEntryWeb: TFOrderEntryWeb
Top = 129 Top = 129
Width = 121 Width = 121
Height = 23 Height = 23
TabStop = False
AutoSize = True AutoSize = True
ChildOrder = 79 ChildOrder = 79
ElementID = 'edtreverseprint' ElementID = 'edtreverseprint'
...@@ -863,6 +943,7 @@ object FOrderEntryWeb: TFOrderEntryWeb ...@@ -863,6 +943,7 @@ object FOrderEntryWeb: TFOrderEntryWeb
Top = 96 Top = 96
Width = 121 Width = 121
Height = 23 Height = 23
TabStop = False
AutoSize = True AutoSize = True
ChildOrder = 79 ChildOrder = 79
ElementID = 'edtsurfaceprint' ElementID = 'edtsurfaceprint'
...@@ -877,6 +958,7 @@ object FOrderEntryWeb: TFOrderEntryWeb ...@@ -877,6 +958,7 @@ object FOrderEntryWeb: TFOrderEntryWeb
Top = 190 Top = 190
Width = 121 Width = 121
Height = 23 Height = 23
TabStop = False
AutoSize = True AutoSize = True
ChildOrder = 79 ChildOrder = 79
ElementID = 'edtcutoffdimension' ElementID = 'edtcutoffdimension'
...@@ -891,6 +973,7 @@ object FOrderEntryWeb: TFOrderEntryWeb ...@@ -891,6 +973,7 @@ object FOrderEntryWeb: TFOrderEntryWeb
Top = 161 Top = 161
Width = 121 Width = 121
Height = 23 Height = 23
TabStop = False
AutoSize = True AutoSize = True
ChildOrder = 79 ChildOrder = 79
ElementID = 'edtcylinderrepeat' ElementID = 'edtcylinderrepeat'
...@@ -905,6 +988,7 @@ object FOrderEntryWeb: TFOrderEntryWeb ...@@ -905,6 +988,7 @@ object FOrderEntryWeb: TFOrderEntryWeb
Top = 219 Top = 219
Width = 121 Width = 121
Height = 23 Height = 23
TabStop = False
AutoSize = True AutoSize = True
ChildOrder = 79 ChildOrder = 79
ElementID = 'edtpitch' ElementID = 'edtpitch'
...@@ -919,6 +1003,7 @@ object FOrderEntryWeb: TFOrderEntryWeb ...@@ -919,6 +1003,7 @@ object FOrderEntryWeb: TFOrderEntryWeb
Top = 282 Top = 282
Width = 121 Width = 121
Height = 23 Height = 23
TabStop = False
AutoSize = True AutoSize = True
ChildOrder = 79 ChildOrder = 79
ElementID = 'edtbleed' ElementID = 'edtbleed'
...@@ -933,6 +1018,7 @@ object FOrderEntryWeb: TFOrderEntryWeb ...@@ -933,6 +1018,7 @@ object FOrderEntryWeb: TFOrderEntryWeb
Top = 248 Top = 248
Width = 121 Width = 121
Height = 23 Height = 23
TabStop = False
AutoSize = True AutoSize = True
ChildOrder = 79 ChildOrder = 79
ElementID = 'edtteeth' ElementID = 'edtteeth'
...@@ -947,6 +1033,7 @@ object FOrderEntryWeb: TFOrderEntryWeb ...@@ -947,6 +1033,7 @@ object FOrderEntryWeb: TFOrderEntryWeb
Top = 311 Top = 311
Width = 121 Width = 121
Height = 23 Height = 23
TabStop = False
AutoSize = True AutoSize = True
ChildOrder = 79 ChildOrder = 79
ElementID = 'edtcutback' ElementID = 'edtcutback'
...@@ -961,6 +1048,7 @@ object FOrderEntryWeb: TFOrderEntryWeb ...@@ -961,6 +1048,7 @@ object FOrderEntryWeb: TFOrderEntryWeb
Top = 344 Top = 344
Width = 121 Width = 121
Height = 23 Height = 23
TabStop = False
AutoSize = True AutoSize = True
ChildOrder = 79 ChildOrder = 79
ElementID = 'edtminimumtrapdimension' ElementID = 'edtminimumtrapdimension'
...@@ -975,6 +1063,7 @@ object FOrderEntryWeb: TFOrderEntryWeb ...@@ -975,6 +1063,7 @@ object FOrderEntryWeb: TFOrderEntryWeb
Top = 373 Top = 373
Width = 121 Width = 121
Height = 23 Height = 23
TabStop = False
AutoSize = True AutoSize = True
ChildOrder = 79 ChildOrder = 79
ElementID = 'edtmaximumtrapdimension' ElementID = 'edtmaximumtrapdimension'
...@@ -989,6 +1078,7 @@ object FOrderEntryWeb: TFOrderEntryWeb ...@@ -989,6 +1078,7 @@ object FOrderEntryWeb: TFOrderEntryWeb
Top = 423 Top = 423
Width = 121 Width = 121
Height = 23 Height = 23
TabStop = False
AutoSize = True AutoSize = True
ChildOrder = 79 ChildOrder = 79
ElementID = 'edtsize' ElementID = 'edtsize'
...@@ -1038,6 +1128,7 @@ object FOrderEntryWeb: TFOrderEntryWeb ...@@ -1038,6 +1128,7 @@ object FOrderEntryWeb: TFOrderEntryWeb
ChildOrder = 79 ChildOrder = 79
ElementID = 'edtdistortionpercent' ElementID = 'edtdistortionpercent'
HeightPercent = 100.000000000000000000 HeightPercent = 100.000000000000000000
ShowFocus = False
WidthPercent = 100.000000000000000000 WidthPercent = 100.000000000000000000
DataField = 'upc_distortion_percent' DataField = 'upc_distortion_percent'
DataSource = WebDataSource1 DataSource = WebDataSource1
...@@ -1047,10 +1138,12 @@ object FOrderEntryWeb: TFOrderEntryWeb ...@@ -1047,10 +1138,12 @@ object FOrderEntryWeb: TFOrderEntryWeb
Top = 516 Top = 516
Width = 121 Width = 121
Height = 23 Height = 23
TabStop = False
AutoSize = True AutoSize = True
ChildOrder = 79 ChildOrder = 79
ElementID = 'edtjobnumber' ElementID = 'edtjobnumber'
HeightPercent = 100.000000000000000000 HeightPercent = 100.000000000000000000
ShowFocus = False
WidthPercent = 100.000000000000000000 WidthPercent = 100.000000000000000000
DataField = 'plates_job_number' DataField = 'plates_job_number'
DataSource = WebDataSource1 DataSource = WebDataSource1
...@@ -1060,10 +1153,12 @@ object FOrderEntryWeb: TFOrderEntryWeb ...@@ -1060,10 +1153,12 @@ object FOrderEntryWeb: TFOrderEntryWeb
Top = 160 Top = 160
Width = 121 Width = 121
Height = 23 Height = 23
TabStop = False
AutoSize = True AutoSize = True
ChildOrder = 79 ChildOrder = 79
ElementID = 'edtcomments' ElementID = 'edtcomments'
HeightPercent = 100.000000000000000000 HeightPercent = 100.000000000000000000
ShowFocus = False
WidthPercent = 100.000000000000000000 WidthPercent = 100.000000000000000000
DataField = 'general_comments' DataField = 'general_comments'
DataSource = WebDataSource1 DataSource = WebDataSource1
...@@ -1111,6 +1206,7 @@ object FOrderEntryWeb: TFOrderEntryWeb ...@@ -1111,6 +1206,7 @@ object FOrderEntryWeb: TFOrderEntryWeb
Height = 23 Height = 23
ElementID = 'wcbqbitem' ElementID = 'wcbqbitem'
HeightPercent = 100.000000000000000000 HeightPercent = 100.000000000000000000
ShowFocus = False
WidthPercent = 100.000000000000000000 WidthPercent = 100.000000000000000000
ItemIndex = -1 ItemIndex = -1
DataField = 'staff_fields_quickbooks_item' DataField = 'staff_fields_quickbooks_item'
...@@ -1125,6 +1221,8 @@ object FOrderEntryWeb: TFOrderEntryWeb ...@@ -1125,6 +1221,8 @@ object FOrderEntryWeb: TFOrderEntryWeb
Height = 23 Height = 23
ElementID = 'wcbmaterial' ElementID = 'wcbmaterial'
HeightPercent = 100.000000000000000000 HeightPercent = 100.000000000000000000
ShowFocus = False
TabStop = False
WidthPercent = 100.000000000000000000 WidthPercent = 100.000000000000000000
ItemIndex = -1 ItemIndex = -1
Items.Strings = ( Items.Strings = (
...@@ -1140,6 +1238,8 @@ object FOrderEntryWeb: TFOrderEntryWeb ...@@ -1140,6 +1238,8 @@ object FOrderEntryWeb: TFOrderEntryWeb
Height = 23 Height = 23
ElementID = 'wcbthickness' ElementID = 'wcbthickness'
HeightPercent = 100.000000000000000000 HeightPercent = 100.000000000000000000
ShowFocus = False
TabStop = False
WidthPercent = 100.000000000000000000 WidthPercent = 100.000000000000000000
ItemIndex = -1 ItemIndex = -1
Items.Strings = ( Items.Strings = (
...@@ -1158,6 +1258,8 @@ object FOrderEntryWeb: TFOrderEntryWeb ...@@ -1158,6 +1258,8 @@ object FOrderEntryWeb: TFOrderEntryWeb
Height = 23 Height = 23
ElementID = 'wcbprint' ElementID = 'wcbprint'
HeightPercent = 100.000000000000000000 HeightPercent = 100.000000000000000000
ShowFocus = False
TabStop = False
WidthPercent = 100.000000000000000000 WidthPercent = 100.000000000000000000
ItemIndex = -1 ItemIndex = -1
Items.Strings = ( Items.Strings = (
...@@ -1173,6 +1275,8 @@ object FOrderEntryWeb: TFOrderEntryWeb ...@@ -1173,6 +1275,8 @@ object FOrderEntryWeb: TFOrderEntryWeb
Height = 23 Height = 23
ElementID = 'wcbcolorcontract' ElementID = 'wcbcolorcontract'
HeightPercent = 100.000000000000000000 HeightPercent = 100.000000000000000000
ShowFocus = False
TabStop = False
WidthPercent = 100.000000000000000000 WidthPercent = 100.000000000000000000
ItemIndex = -1 ItemIndex = -1
Items.Strings = ( Items.Strings = (
...@@ -1226,20 +1330,9 @@ object FOrderEntryWeb: TFOrderEntryWeb ...@@ -1226,20 +1330,9 @@ object FOrderEntryWeb: TFOrderEntryWeb
ElementID = 'edtordernum' ElementID = 'edtordernum'
Enabled = False Enabled = False
HeightPercent = 100.000000000000000000 HeightPercent = 100.000000000000000000
ShowFocus = False
WidthPercent = 100.000000000000000000 WidthPercent = 100.000000000000000000
end end
object btn_confirm_delete: TWebButton
Left = 1094
Top = 414
Width = 96
Height = 25
Caption = 'Delete'
ChildOrder = 82
ElementID = 'btn_confirm_delete'
HeightPercent = 100.000000000000000000
WidthPercent = 100.000000000000000000
OnClick = btn_confirm_deleteClick
end
object btnEdit: TWebButton object btnEdit: TWebButton
Left = 1165 Left = 1165
Top = 560 Top = 560
...@@ -1273,6 +1366,7 @@ object FOrderEntryWeb: TFOrderEntryWeb ...@@ -1273,6 +1366,7 @@ object FOrderEntryWeb: TFOrderEntryWeb
ChildOrder = 85 ChildOrder = 85
ElementID = 'btnaddaddress' ElementID = 'btnaddaddress'
HeightPercent = 100.000000000000000000 HeightPercent = 100.000000000000000000
TabStop = False
WidthPercent = 100.000000000000000000 WidthPercent = 100.000000000000000000
OnClick = WebButton2Click OnClick = WebButton2Click
end end
...@@ -1281,17 +1375,10 @@ object FOrderEntryWeb: TFOrderEntryWeb ...@@ -1281,17 +1375,10 @@ object FOrderEntryWeb: TFOrderEntryWeb
Left = 160 Left = 160
Top = 18 Top = 18
end end
object tmrScrollTop: TWebTimer
Interval = 100
OnTimer = tmrScrollTopTimer
Left = 240
Top = 8
end
object XDataWebDataSet1: TXDataWebDataSet object XDataWebDataSet1: TXDataWebDataSet
AfterEdit = XDataWebDataSet1AfterEdit
Connection = DMConnection.ApiConnection Connection = DMConnection.ApiConnection
Left = 90 Left = 408
Top = 20 Top = 4
object XDataWebDataSet1ORDER_ID: TIntegerField object XDataWebDataSet1ORDER_ID: TIntegerField
FieldName = 'ORDER_ID' FieldName = 'ORDER_ID'
end end
...@@ -1548,32 +1635,33 @@ object FOrderEntryWeb: TFOrderEntryWeb ...@@ -1548,32 +1635,33 @@ object FOrderEntryWeb: TFOrderEntryWeb
end end
end end
object WebDataSource1: TWebDataSource object WebDataSource1: TWebDataSource
AutoEdit = False
DataSet = XDataWebDataSet1 DataSet = XDataWebDataSet1
Left = 22 Left = 406
Top = 10 Top = 38
end end
object wdsShipTo: TWebDataSource object wdsShipTo: TWebDataSource
AutoEdit = False
DataSet = xdwdsShipTo DataSet = xdwdsShipTo
Left = 212 Left = 320
Top = 436 Top = 38
end end
object xdwdsShipTo: TXDataWebDataSet object xdwdsShipTo: TXDataWebDataSet
AfterEdit = XDataWebDataSet1AfterEdit Left = 322
Left = 208 Top = 6
Top = 398
object xdwdsShipToADDRESS: TStringField object xdwdsShipToADDRESS: TStringField
FieldName = 'ADDRESS' FieldName = 'ADDRESS'
end end
end end
object wdsQBItem: TWebDataSource object wdsQBItem: TWebDataSource
AutoEdit = False
DataSet = xdwdsQBItem DataSet = xdwdsQBItem
Left = 240 Left = 244
Top = 518 Top = 34
end end
object xdwdsQBItem: TXDataWebDataSet object xdwdsQBItem: TXDataWebDataSet
AfterEdit = XDataWebDataSet1AfterEdit Left = 246
Left = 200 Top = 2
Top = 512
object xdwdsQBItemname: TStringField object xdwdsQBItemname: TStringField
FieldName = 'name' FieldName = 'name'
end end
...@@ -1581,7 +1669,7 @@ object FOrderEntryWeb: TFOrderEntryWeb ...@@ -1581,7 +1669,7 @@ object FOrderEntryWeb: TFOrderEntryWeb
object tmrReturn: TWebTimer object tmrReturn: TWebTimer
Enabled = False Enabled = False
OnTimer = tmrReturnTimer OnTimer = tmrReturnTimer
Left = 306 Left = 216
Top = 62 Top = 258
end end
end end
<nav class="navbar navbar-expand navbar-light bg-light sticky-top" style="z-index: 100;"> <nav class="navbar navbar-expand navbar-light bg-light border-light sticky-top" style="z-index: 100;">
<div class="container-fluid ps-0"> <div class="container-fluid d-flex align-items-center ps-0 pe-0">
<ul class="navbar-nav me-auto ps-2">
<!-- Left-aligned label -->
<div class="me-auto ps-3">
<label id="lbl_form_state" class="form-label mb-0 fw-bold text-uppercase text-nowrap text-danger" style="font-size: 16px;">Test</label>
</div>
<!-- Right-aligned buttons -->
<ul class="navbar-nav ms-auto pe-2 mb-0">
<li class="nav-item pe-2"> <li class="nav-item pe-2">
<button id="btnadd" class="btn btn-primary btn-sm">Add</button> <button id="btnadd" class="btn btn-primary btn-sm">Add</button>
</li> </li>
...@@ -23,9 +30,10 @@ ...@@ -23,9 +30,10 @@
<button id="btncancel" class="btn btn-danger btn-sm">Cancel</button> <button id="btncancel" class="btn btn-danger btn-sm">Cancel</button>
</li> </li>
<li class="nav-item"> <li class="nav-item">
<button id="btnclose" class="btn btn-secondary btn-sm">Close</button> <button id="btnclose" class="btn btn-primary btn-sm">Close</button>
</li> </li>
</ul> </ul>
</div> </div>
</nav> </nav>
<div class="row mx-5"> <div class="row mx-5">
...@@ -418,20 +426,4 @@ ...@@ -418,20 +426,4 @@
</div> </div>
</div> </div>
</div> </div>
<div class="modal fade" id="confirmation_modal" tabindex="-1" aria-labelledby="confirmation_modal_label" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content shadow-lg">
<div class="modal-header">
<h5 class="modal-title" id="confirmation_modal_label">Confirm</h5>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
</div>
<div class="modal-body fs-6 fw-bold" id="modal_body">
Are you sure you want to delete this order?
</div>
<div class="modal-footer justify-content-center">
<button type="button" class="btn btn-secondary me-3" data-bs-dismiss="modal" id="btn_confirm_cancel">Cancel</button>
<button type="button" class="btn btn-primary" data-bs-dismiss="modal" id="btn_confirm_delete">Delete</button>
</div>
</div>
</div>
</div>
...@@ -16,7 +16,6 @@ type ...@@ -16,7 +16,6 @@ type
edtCompanyAccountName: TWebDBEdit; edtCompanyAccountName: TWebDBEdit;
edtInQuickBooks: TWebDBEdit; edtInQuickBooks: TWebDBEdit;
XDataWebClient1: TXDataWebClient; XDataWebClient1: TXDataWebClient;
tmrScrollTop: TWebTimer;
XDataWebDataSet1: TXDataWebDataSet; XDataWebDataSet1: TXDataWebDataSet;
XDataWebDataSet1ORDER_ID: TIntegerField; XDataWebDataSet1ORDER_ID: TIntegerField;
XDataWebDataSet1COMPANY_ID: TIntegerField; XDataWebDataSet1COMPANY_ID: TIntegerField;
...@@ -199,16 +198,14 @@ type ...@@ -199,16 +198,14 @@ type
btnDelete: TWebButton; btnDelete: TWebButton;
btnClose: TWebButton; btnClose: TWebButton;
edtOrderNum: TWebEdit; edtOrderNum: TWebEdit;
btn_confirm_delete: TWebButton;
tmrReturn: TWebTimer; tmrReturn: TWebTimer;
btnEdit: TWebButton; btnEdit: TWebButton;
btnAdd: TWebButton; btnAdd: TWebButton;
WebButton2: TWebButton; WebButton2: TWebButton;
lblFormState: TWebLabel;
procedure WebFormCreate(Sender: TObject); procedure WebFormCreate(Sender: TObject);
procedure WebFormShow(Sender: TObject);
[async] procedure getOrder(Order_ID: string); [async] procedure getOrder(Order_ID: string);
[async] procedure getCustomer(customerID: string); [async] procedure getCustomer(customerID: string);
procedure tmrScrollTopTimer(Sender: TObject);
procedure WebButton1Click(Sender: TObject); procedure WebButton1Click(Sender: TObject);
procedure addColorRow(num, Color, LPI, Size: string); procedure addColorRow(num, Color, LPI, Size: string);
procedure btnSaveClick(Sender: TObject); procedure btnSaveClick(Sender: TObject);
...@@ -222,13 +219,10 @@ type ...@@ -222,13 +219,10 @@ type
procedure btnDeleteClick(Sender: TObject); procedure btnDeleteClick(Sender: TObject);
[async] procedure DelOrder; [async] procedure DelOrder;
procedure tmrReturnTimer(Sender: TObject); procedure tmrReturnTimer(Sender: TObject);
procedure btn_confirm_deleteClick(Sender: TObject);
function VerifyOrder(): boolean; function VerifyOrder(): boolean;
procedure btnAddClick(Sender: TObject); procedure btnAddClick(Sender: TObject);
procedure btnEditClick(Sender: TObject); procedure btnEditClick(Sender: TObject);
procedure EditMode(); procedure EditMode();
procedure XDataWebDataSet1AfterEdit(DataSet: TDataSet);
procedure dtpOrderDateChange(Sender: TObject);
procedure ViewMode(); procedure ViewMode();
procedure WebButton2Click(Sender: TObject); procedure WebButton2Click(Sender: TObject);
procedure ShowAddAddressForm(); procedure ShowAddAddressForm();
...@@ -243,9 +237,10 @@ type ...@@ -243,9 +237,10 @@ type
mode: string; mode: string;
notification: string; notification: string;
procedure RemoveColorRow(Sender: TObject); procedure RemoveColorRow(Sender: TObject);
[async] procedure InitializeForm;
//FJSONProc1: TJSONProc1; //FJSONProc1: TJSONProc1;
public public
class function CreateForm(AElementID, orderInfo, customerInfo, mode, info: string): TWebForm; class function CreateForm(AElementID, orderInfo, customerInfo, modeParam, info: string): TWebForm;
end; end;
var var
...@@ -258,6 +253,46 @@ implementation ...@@ -258,6 +253,46 @@ implementation
uses uses
View.Home, View.Main, View.AddOrder, View.AddAddress, Utils; View.Home, View.Main, View.AddOrder, View.AddAddress, Utils;
class function TFOrderEntryWeb.CreateForm(AElementID, orderInfo, customerInfo, modeParam, info: string): TWebForm;
begin
Application.CreateForm(TFOrderEntryWeb, AElementID, Result,
procedure(AForm: TObject)
begin
with TFOrderEntryWeb(AForm) do
begin
customerID := customerInfo;
orderID := orderInfo;
mode := modeParam;
notification := info;
console.log('Mode in createform: ' + modeParam);
InitializeForm;
end;
end
);
end;
[async] procedure TFOrderEntryWeb.InitializeForm;
begin
if mode = 'ADD' then
begin
await(getCustomer(customerID));
EditMode;
end
else
begin
await(getOrder(orderID));
ViewMode;
end;
edtOrderNum.Text := orderID;
if notification <> '' then
ShowToast(notification);
end;
procedure TFOrderEntryWeb.WebButton2Click(Sender: TObject); procedure TFOrderEntryWeb.WebButton2Click(Sender: TObject);
begin begin
ShowAddAddressForm(); ShowAddAddressForm();
...@@ -413,21 +448,23 @@ begin ...@@ -413,21 +448,23 @@ begin
window.scrollTo(0, 0); window.scrollTo(0, 0);
end; end;
procedure TFOrderEntryWeb.btnDeleteClick(Sender: TObject); procedure TFOrderEntryWeb.btnDeleteClick(Sender: TObject);
begin begin
FModalAction := 'delete'; ShowConfirmationModal(
document.getElementById('modal_body').innerHTML := 'Are you sure you want to delete this order?'; 'Are you sure you want to delete this order?',
document.getElementById('btn_confirm_cancel').innerText := 'Cancel'; 'Delete',
document.getElementById('btn_confirm_delete').innerText := 'Delete'; 'Cancel',
procedure(confirmed: Boolean)
asm begin
var modal = document.getElementById('confirmation_modal'); if confirmed then
if (modal && modal.parentNode !== document.body) { begin
document.body.appendChild(modal); Utils.ShowSpinner('spinner');
} DelOrder();
var confirmationModal = new bootstrap.Modal(modal, { keyboard: false }); tmrReturn.Enabled := true;
confirmationModal.show();
end; end;
end
);
end; end;
procedure TFOrderEntryWeb.btnEditClick(Sender: TObject); procedure TFOrderEntryWeb.btnEditClick(Sender: TObject);
...@@ -435,30 +472,12 @@ begin ...@@ -435,30 +472,12 @@ begin
EditMode(); EditMode();
end; end;
procedure TFOrderEntryWeb.EditMode;
begin
FViewMain.change := true;
btnCopy.Enabled := false;
btnPDF.Enabled := false;
btnDelete.Enabled := false;
btnClose.Enabled := false;
btnSave.Enabled := true;
btnCancel.Enabled := True;
btnEdit.Enabled := false;
btnAdd.Enabled := false;
end;
[async] procedure TFOrderEntryWeb.DelOrder(); [async] procedure TFOrderEntryWeb.DelOrder();
var var
Response: TXDataClientResponse; Response: TXDataClientResponse;
begin begin
Response := await(XDataWebClient1.RawInvokeAsync('ILookupService.DelOrder', Response := await(XDataWebClient1.RawInvokeAsync('ILookupService.DelOrder', [OrderID, 'web', JS.toString(AuthService.TokenPayload.Properties['user_id'])]));
[OrderID, 'web', JS.toString(AuthService.TokenPayload.Properties['user_id'])]));
end;
procedure TFOrderEntryWeb.dtpOrderDateChange(Sender: TObject);
begin
EditMode();
end; end;
procedure TFOrderEntryWeb.SendOrderToServer(); procedure TFOrderEntryWeb.SendOrderToServer();
...@@ -557,32 +576,6 @@ begin ...@@ -557,32 +576,6 @@ begin
GenerateReportPDF; GenerateReportPDF;
end; end;
procedure TFOrderEntryWeb.btn_confirm_deleteClick(Sender: TObject);
begin
if FModalAction = 'cancel' then
begin
FViewMain.change := false;
if OrderID <> '' then
FViewMain.ViewOrderEntryWeb(OrderID, '', 'EDIT', 'Failure: Changes Discarded')
else
FViewMain.ViewOrders('');
end
else if FModalAction = 'delete' then
begin
Utils.ShowSpinner('spinner');
asm
var modal = document.getElementById('confirmation_modal');
if (modal && modal.parentNode !== document.body) {
document.body.appendChild(modal);
}
var bsModal = new bootstrap.Modal(modal, { keyboard: false });
bsModal.hide();
end;
DelOrder();
tmrReturn.Enabled := true;
end;
end;
procedure TFOrderEntryWeb.GenerateReportPDF; procedure TFOrderEntryWeb.GenerateReportPDF;
// sends the search to the server which then sends back a pdf of the results // sends the search to the server which then sends back a pdf of the results
var var
...@@ -625,27 +618,6 @@ begin ...@@ -625,27 +618,6 @@ begin
end; end;
end; end;
class function TFOrderEntryWeb.CreateForm(AElementID, orderInfo, customerInfo, mode, info: string): TWebForm;
var
localMode: string;
begin
localMode := mode;
Application.CreateForm(TFOrderEntryWeb, AElementID, Result,
procedure(AForm: TObject)
begin
with TFOrderEntryWeb(AForm) do
begin
TFOrderEntryWeb(AForm).customerID := customerInfo;
TFOrderEntryWeb(AForm).orderID := orderInfo;
TFOrderEntryWeb(AForm).mode := localMode;
TFOrderEntryWeb(AForm).notification := info;
end;
end
);
end;
procedure TFOrderEntryWeb.addColorRow(num: string; Color: string; LPI: string; Size: string); procedure TFOrderEntryWeb.addColorRow(num: string; Color: string; LPI: string; Size: string);
var var
container, newRow, col, labelEl, inputEl, removeCol: TJSHTMLElement; container, newRow, col, labelEl, inputEl, removeCol: TJSHTMLElement;
...@@ -764,19 +736,22 @@ end; ...@@ -764,19 +736,22 @@ end;
procedure TFOrderEntryWeb.btnCancelClick(Sender: TObject); procedure TFOrderEntryWeb.btnCancelClick(Sender: TObject);
begin begin
FModalAction := 'cancel'; ShowConfirmationModal(
document.getElementById('modal_body').innerHTML := 'Are you sure you want to cancel all changes?'; 'Are you sure you want to cancel all changes?',
document.getElementById('btn_confirm_cancel').innerText := 'No'; 'Yes',
document.getElementById('btn_confirm_delete').innerText := 'Yes'; 'No',
procedure(confirmed: Boolean)
asm begin
var modal = document.getElementById('confirmation_modal'); if confirmed then
if (modal && modal.parentNode !== document.body) { begin
document.body.appendChild(modal); FViewMain.change := false;
} if OrderID <> '' then
var confirmationModal = new bootstrap.Modal(modal, { keyboard: false }); FViewMain.ViewOrderEntryWeb(OrderID, '', 'EDIT', 'Failure: Changes Discarded')
confirmationModal.show(); else
FViewMain.ViewOrders('');
end; end;
end
);
end; end;
procedure TFOrderEntryWeb.btnCloseClick(Sender: TObject); procedure TFOrderEntryWeb.btnCloseClick(Sender: TObject);
...@@ -958,31 +933,6 @@ begin ...@@ -958,31 +933,6 @@ begin
end; end;
procedure TFOrderEntryWeb.WebFormShow(Sender: TObject);
begin
if mode <> 'ADD' then
begin
getOrder(orderID);
ViewMode();
end
else
begin
getCustomer(customerID);
EditMode();
end;
edtOrderNum.Text := OrderID;
if notification <> '' then
begin
ShowToast(notification);
end;
end;
procedure TFOrderEntryWeb.XDataWebDataSet1AfterEdit(DataSet: TDataSet);
begin
EditMode();
end;
procedure TFOrderEntryWeb.tmrReturnTimer(Sender: TObject); procedure TFOrderEntryWeb.tmrReturnTimer(Sender: TObject);
begin begin
Utils.HideSpinner('spinner'); Utils.HideSpinner('spinner');
...@@ -990,10 +940,25 @@ begin ...@@ -990,10 +940,25 @@ begin
FViewMain.ViewOrders('Success: Order Successfully Deleted'); FViewMain.ViewOrders('Success: Order Successfully Deleted');
end; end;
procedure TFOrderEntryWeb.tmrScrollTopTimer(Sender: TObject); procedure TFOrderEntryWeb.EditMode;
begin begin
tmrScrollTop.Enabled := False; XDataWebDataSet1.Edit;
window.scrollTo(0, 0); FViewMain.change := true;
btnCopy.Enabled := false;
btnPDF.Enabled := false;
btnDelete.Enabled := false;
btnClose.Enabled := false;
btnSave.Enabled := true;
btnCancel.Enabled := True;
btnEdit.Enabled := false;
btnAdd.Enabled := false;
cbPdf.Enabled := True;
cbInkJet.Enabled := True;
lblFormState.Caption := 'Edit Mode';
lblFormState.ElementHandle.classList.remove('text-danger');
lblFormState.ElementHandle.classList.add('text-success');
end; end;
procedure TFOrderEntryWeb.ViewMode; procedure TFOrderEntryWeb.ViewMode;
...@@ -1007,6 +972,13 @@ begin ...@@ -1007,6 +972,13 @@ begin
btnEdit.Enabled := true; btnEdit.Enabled := true;
btnAdd.Enabled := true; btnAdd.Enabled := true;
FViewMain.change := false; FViewMain.change := false;
cbPdf.Enabled := False;
cbInkJet.Enabled := False;
lblFormState.Caption := 'View Mode';
lblFormState.ElementHandle.classList.remove('text-success');
lblFormState.ElementHandle.classList.add('text-danger');
end; end;
......
...@@ -76,7 +76,7 @@ type ...@@ -76,7 +76,7 @@ type
procedure ClearTable(); procedure ClearTable();
procedure GeneratePagination(TotalPages: Integer); procedure GeneratePagination(TotalPages: Integer);
function GenerateSearchOptions(): string; function GenerateSearchOptions(): string;
procedure orderEntry(orderInfo, customerInfo, mode, orderType: string); procedure OrderEntry(orderInfo, customerInfo, mode, orderType: string);
procedure ShowAddOrderForm(); procedure ShowAddOrderForm();
procedure ShowSearchForm(); procedure ShowSearchForm();
procedure ShowSetStatusForm(); procedure ShowSetStatusForm();
...@@ -141,38 +141,25 @@ begin ...@@ -141,38 +141,25 @@ begin
); );
end; end;
procedure TFViewOrders.btnPDFClick(Sender: TObject); procedure TFViewOrders.btnPDFClick(Sender: TObject);
var
confirmBtn: TJSHTMLElement;
begin begin
if xdwdsOrders.RecordCount >= 100 then if xdwdsOrders.RecordCount >= 100 then
begin begin
FPendingPdfTab := nil; FPendingPdfTab := nil;
document.getElementById('modal_body').innerHTML := ShowConfirmationModal(
'You are about to generate a PDF for over 100 orders. This may take some time. Continue?'; 'You are about to generate a PDF for over 100 orders. This may take some time. Continue?',
document.getElementById('btn_confirm_cancel').innerText := 'Cancel'; 'Yes',
document.getElementById('btn_confirm_delete').innerText := 'Yes'; 'Cancel',
procedure(confirmed: Boolean)
confirmBtn := TJSHTMLElement(document.getElementById('btn_confirm_delete')); begin
confirmBtn.addEventListener('click', if confirmed then
TJSEventHandler(
procedure(Event: TJSEvent)
begin begin
asm bootstrap.Modal.getInstance(document.getElementById('confirmation_modal')).hide(); end;
HandlePDFConfirmation; HandlePDFConfirmation;
end;
end end
)
); );
asm
var modal = document.getElementById('confirmation_modal');
if (modal && modal.parentNode !== document.body) {
document.body.appendChild(modal);
}
var confirmationModal = new bootstrap.Modal(modal, { keyboard: false });
confirmationModal.show();
end;
end end
else else
begin begin
...@@ -200,6 +187,7 @@ begin ...@@ -200,6 +187,7 @@ begin
end; end;
procedure TFViewOrders.HandlePDFConfirmation; procedure TFViewOrders.HandlePDFConfirmation;
begin begin
// Open tab only now // Open tab only now
...@@ -767,7 +755,10 @@ begin ...@@ -767,7 +755,10 @@ begin
// Update label // Update label
if orderListLength = 0 then if orderListLength = 0 then
lblEntries.Caption := 'No entries found' begin
lblEntries.Caption := 'No entries found';
ShowToast('No entries found', 'danger');
end
else if (PageNumber * PageSize) < orderListLength then else if (PageNumber * PageSize) < orderListLength then
lblEntries.Caption := Format('Showing entries %d - %d of %d', lblEntries.Caption := Format('Showing entries %d - %d of %d',
[(PageNumber - 1) * PageSize + 1, PageNumber * PageSize, orderListLength]) [(PageNumber - 1) * PageSize + 1, PageNumber * PageSize, orderListLength])
...@@ -786,18 +777,18 @@ begin ...@@ -786,18 +777,18 @@ begin
end; end;
procedure TFViewOrders.btnAddOrderClick(Sender: TObject); procedure TFViewOrders.btnAddOrderClick(Sender: TObject);
begin begin
ShowAddOrderForm(); ShowAddOrderForm();
end; end;
procedure TFViewOrders.orderEntry(orderInfo, customerInfo, mode, orderType: string); procedure TFViewOrders.OrderEntry(orderInfo, customerInfo, mode, orderType: string);
begin begin
if orderType = 'corrugated' then if orderType = 'corrugated' then
FViewMain.ViewOrderEntryCorrugated(orderInfo, customerInfo, mode, '') begin
FViewMain.ViewOrderEntryCorrugated(orderInfo, customerInfo, mode, '');
end
else if orderType = 'web' then else if orderType = 'web' then
FViewMain.ViewOrderEntryWeb(orderInfo, customerInfo, mode, '') FViewMain.ViewOrderEntryWeb(orderInfo, customerInfo, mode, '')
else else
......
object FSelectCustomer: TFSelectCustomer object FSelectCustomer: TFSelectCustomer
Width = 765 Width = 765
Height = 480 Height = 416
OnCreate = WebFormCreate OnCreate = WebFormCreate
OnShow = WebFormShow OnShow = WebFormShow
object WebLabel1: TWebLabel object WebLabel1: TWebLabel
Left = 8 Left = 8
Top = 81 Top = 27
Width = 95 Width = 95
Height = 15 Height = 15
Caption = 'Search Customers' Caption = 'Search Customers'
...@@ -14,7 +14,7 @@ object FSelectCustomer: TFSelectCustomer ...@@ -14,7 +14,7 @@ object FSelectCustomer: TFSelectCustomer
end end
object WebLabel2: TWebLabel object WebLabel2: TWebLabel
Left = 279 Left = 279
Top = 81 Top = 27
Width = 134 Width = 134
Height = 15 Height = 15
Caption = 'Selected Customer Name' Caption = 'Selected Customer Name'
...@@ -23,7 +23,7 @@ object FSelectCustomer: TFSelectCustomer ...@@ -23,7 +23,7 @@ object FSelectCustomer: TFSelectCustomer
end end
object WebLabel3: TWebLabel object WebLabel3: TWebLabel
Left = 131 Left = 131
Top = 81 Top = 27
Width = 113 Width = 113
Height = 15 Height = 15
Caption = 'Selected Customer ID' Caption = 'Selected Customer ID'
...@@ -32,7 +32,7 @@ object FSelectCustomer: TFSelectCustomer ...@@ -32,7 +32,7 @@ object FSelectCustomer: TFSelectCustomer
end end
object edtSearch: TWebEdit object edtSearch: TWebEdit
Left = 4 Left = 4
Top = 102 Top = 48
Width = 121 Width = 121
Height = 22 Height = 22
ChildOrder = 2 ChildOrder = 2
...@@ -42,7 +42,7 @@ object FSelectCustomer: TFSelectCustomer ...@@ -42,7 +42,7 @@ object FSelectCustomer: TFSelectCustomer
end end
object edtName: TWebEdit object edtName: TWebEdit
Left = 279 Left = 279
Top = 102 Top = 48
Width = 142 Width = 142
Height = 22 Height = 22
ChildOrder = 1 ChildOrder = 1
...@@ -52,7 +52,7 @@ object FSelectCustomer: TFSelectCustomer ...@@ -52,7 +52,7 @@ object FSelectCustomer: TFSelectCustomer
end end
object TMSFNCGrid1: TTMSFNCGrid object TMSFNCGrid1: TTMSFNCGrid
Left = 0 Left = 0
Top = 163 Top = 99
Width = 765 Width = 765
Height = 317 Height = 317
Align = alBottom Align = alBottom
...@@ -206,10 +206,11 @@ object FSelectCustomer: TFSelectCustomer ...@@ -206,10 +206,11 @@ object FSelectCustomer: TFSelectCustomer
ScrollMode = scmItemScrolling ScrollMode = scmItemScrolling
DesignTimeSampleData = True DesignTimeSampleData = True
OnCellClick = TMSFNCGrid1CellClick OnCellClick = TMSFNCGrid1CellClick
ExplicitTop = 163
end end
object btnCancel: TWebButton object btnCancel: TWebButton
Left = 556 Left = 556
Top = 101 Top = 47
Width = 96 Width = 96
Height = 25 Height = 25
Caption = 'Cancel' Caption = 'Cancel'
...@@ -220,7 +221,7 @@ object FSelectCustomer: TFSelectCustomer ...@@ -220,7 +221,7 @@ object FSelectCustomer: TFSelectCustomer
end end
object btnConfirm: TWebButton object btnConfirm: TWebButton
Left = 440 Left = 440
Top = 101 Top = 47
Width = 96 Width = 96
Height = 25 Height = 25
Caption = 'Select' Caption = 'Select'
...@@ -229,30 +230,9 @@ object FSelectCustomer: TFSelectCustomer ...@@ -229,30 +230,9 @@ object FSelectCustomer: TFSelectCustomer
WidthPercent = 100.000000000000000000 WidthPercent = 100.000000000000000000
OnClick = btnConfirmClick OnClick = btnConfirmClick
end end
object edtNotification: TWebEdit
Left = 4
Top = 16
Width = 510
Height = 22
HelpType = htKeyword
TabStop = False
ChildOrder = 8
ElementFont = efCSS
Enabled = False
Font.Charset = ANSI_CHARSET
Font.Color = clRed
Font.Height = -13
Font.Name = 'Arial'
Font.Style = []
HeightPercent = 100.000000000000000000
HideSelection = False
ParentFont = False
TabOrder = 1
WidthPercent = 100.000000000000000000
end
object edtID: TWebEdit object edtID: TWebEdit
Left = 131 Left = 131
Top = 102 Top = 48
Width = 142 Width = 142
Height = 22 Height = 22
ChildOrder = 1 ChildOrder = 1
......
<html> <div id="spinner" class="position-absolute top-50 start-50 translate-middle d-none">
<head> <div class="lds-roller">
<meta http-equiv="Content-type" content="text/html; charset=utf-8" /> <div></div><div></div><div></div><div></div>
<title>TMS Web Project</title> <div></div><div></div><div></div><div></div>
<style> </div>
</style> </div>
</head>
<body>
</body>
</html>
\ No newline at end of file
...@@ -21,7 +21,6 @@ type ...@@ -21,7 +21,6 @@ type
TMSFNCGrid1: TTMSFNCGrid; TMSFNCGrid1: TTMSFNCGrid;
btnCancel: TWebButton; btnCancel: TWebButton;
btnConfirm: TWebButton; btnConfirm: TWebButton;
edtNotification: TWebEdit;
XDataWebClient1: TXDataWebClient; XDataWebClient1: TXDataWebClient;
xdwdsCustomers: TXDataWebDataSet; xdwdsCustomers: TXDataWebDataSet;
wdsCustomers: TWebDataSource; wdsCustomers: TWebDataSource;
...@@ -81,7 +80,6 @@ end; ...@@ -81,7 +80,6 @@ end;
procedure TFSelectCustomer.WebFormShow(Sender: TObject); procedure TFSelectCustomer.WebFormShow(Sender: TObject);
begin begin
Utils.ShowSpinner('spinner');
getCustomers(); getCustomers();
end; end;
...@@ -93,7 +91,7 @@ end; ...@@ -93,7 +91,7 @@ end;
procedure TFSelectCustomer.btnConfirmClick(Sender: TObject); procedure TFSelectCustomer.btnConfirmClick(Sender: TObject);
begin begin
if edtID.Text = '' then if edtID.Text = '' then
edtNotification.Text := 'Please Select a Customer' ShowToast('Please Select a Customer', 'danger')
else else
begin begin
xdwdsCustomers.Locate('Id', edtID.Text, []); xdwdsCustomers.Locate('Id', edtID.Text, []);
...@@ -114,6 +112,7 @@ var ...@@ -114,6 +112,7 @@ var
i: integer; i: integer;
begin begin
try try
Utils.ShowSpinner('spinner');
// Fetch data from XData service // Fetch data from XData service
xdcResponse := await(XDataWebClient1.RawInvokeAsync('ILookupService.getQBCustomers', [])); xdcResponse := await(XDataWebClient1.RawInvokeAsync('ILookupService.getQBCustomers', []));
customerList := TJSObject(xdcResponse.Result); customerList := TJSObject(xdcResponse.Result);
...@@ -129,7 +128,6 @@ begin ...@@ -129,7 +128,6 @@ begin
on E: EXDataClientRequestException do on E: EXDataClientRequestException do
Utils.ShowErrorModal('Could not retrieve QuickBooks customers: ' + E.ErrorResult.ErrorMessage); Utils.ShowErrorModal('Could not retrieve QuickBooks customers: ' + E.ErrorResult.ErrorMessage);
end; end;
Utils.HideSpinner('spinner');
end; end;
...@@ -168,6 +166,7 @@ begin ...@@ -168,6 +166,7 @@ begin
finally finally
TMSFNCGrid1.EndUpdate; TMSFNCGrid1.EndUpdate;
end; end;
Utils.HideSpinner('spinner');
end; end;
procedure TFSelectCustomer.TMSFNCGrid1CellClick(Sender: TObject; ACol, procedure TFSelectCustomer.TMSFNCGrid1CellClick(Sender: TObject; ACol,
......
object FSetStatus: TFSetStatus object FSetStatus: TFSetStatus
Width = 640 Width = 640
Height = 361 Height = 278
OnShow = WebFormShow OnShow = WebFormShow
object lblStatus1: TWebLabel object lblStatus1: TWebLabel
Left = 326 Left = 328
Top = 80 Top = 32
Width = 38 Width = 38
Height = 14 Height = 14
Caption = 'Status:' Caption = 'Status:'
...@@ -18,8 +18,8 @@ object FSetStatus: TFSetStatus ...@@ -18,8 +18,8 @@ object FSetStatus: TFSetStatus
WidthPercent = 100.000000000000000000 WidthPercent = 100.000000000000000000
end end
object WebLabel1: TWebLabel object WebLabel1: TWebLabel
Left = 484 Left = 486
Top = 80 Top = 32
Width = 91 Width = 91
Height = 14 Height = 14
Caption = 'Date Completed:' Caption = 'Date Completed:'
...@@ -33,8 +33,8 @@ object FSetStatus: TFSetStatus ...@@ -33,8 +33,8 @@ object FSetStatus: TFSetStatus
WidthPercent = 100.000000000000000000 WidthPercent = 100.000000000000000000
end end
object WebLabel2: TWebLabel object WebLabel2: TWebLabel
Left = 14 Left = 16
Top = 80 Top = 32
Width = 48 Width = 48
Height = 14 Height = 14
Caption = 'Order ID:' Caption = 'Order ID:'
...@@ -48,8 +48,8 @@ object FSetStatus: TFSetStatus ...@@ -48,8 +48,8 @@ object FSetStatus: TFSetStatus
WidthPercent = 100.000000000000000000 WidthPercent = 100.000000000000000000
end end
object WebLabel3: TWebLabel object WebLabel3: TWebLabel
Left = 172 Left = 174
Top = 78 Top = 30
Width = 57 Width = 57
Height = 14 Height = 14
Caption = 'Job Name:' Caption = 'Job Name:'
...@@ -63,8 +63,8 @@ object FSetStatus: TFSetStatus ...@@ -63,8 +63,8 @@ object FSetStatus: TFSetStatus
WidthPercent = 100.000000000000000000 WidthPercent = 100.000000000000000000
end end
object WebLabel4: TWebLabel object WebLabel4: TWebLabel
Left = 11 Left = 13
Top = 142 Top = 94
Width = 51 Width = 51
Height = 14 Height = 14
Caption = 'Ship Due:' Caption = 'Ship Due:'
...@@ -78,8 +78,8 @@ object FSetStatus: TFSetStatus ...@@ -78,8 +78,8 @@ object FSetStatus: TFSetStatus
WidthPercent = 100.000000000000000000 WidthPercent = 100.000000000000000000
end end
object WebLabel5: TWebLabel object WebLabel5: TWebLabel
Left = 169 Left = 171
Top = 142 Top = 94
Width = 78 Width = 78
Height = 14 Height = 14
Caption = 'New Due Date:' Caption = 'New Due Date:'
...@@ -93,8 +93,8 @@ object FSetStatus: TFSetStatus ...@@ -93,8 +93,8 @@ object FSetStatus: TFSetStatus
WidthPercent = 100.000000000000000000 WidthPercent = 100.000000000000000000
end end
object lblMount: TWebLabel object lblMount: TWebLabel
Left = 324 Left = 326
Top = 200 Top = 152
Width = 62 Width = 62
Height = 14 Height = 14
Caption = 'Mount Due:' Caption = 'Mount Due:'
...@@ -108,8 +108,8 @@ object FSetStatus: TFSetStatus ...@@ -108,8 +108,8 @@ object FSetStatus: TFSetStatus
WidthPercent = 100.000000000000000000 WidthPercent = 100.000000000000000000
end end
object lblMountNew: TWebLabel object lblMountNew: TWebLabel
Left = 482 Left = 484
Top = 200 Top = 152
Width = 78 Width = 78
Height = 14 Height = 14
Caption = 'New Due Date:' Caption = 'New Due Date:'
...@@ -123,8 +123,8 @@ object FSetStatus: TFSetStatus ...@@ -123,8 +123,8 @@ object FSetStatus: TFSetStatus
WidthPercent = 100.000000000000000000 WidthPercent = 100.000000000000000000
end end
object lblPlate: TWebLabel object lblPlate: TWebLabel
Left = 11 Left = 13
Top = 200 Top = 152
Width = 54 Width = 54
Height = 14 Height = 14
Caption = 'Plate Due:' Caption = 'Plate Due:'
...@@ -138,8 +138,8 @@ object FSetStatus: TFSetStatus ...@@ -138,8 +138,8 @@ object FSetStatus: TFSetStatus
WidthPercent = 100.000000000000000000 WidthPercent = 100.000000000000000000
end end
object lblPlateNew: TWebLabel object lblPlateNew: TWebLabel
Left = 169 Left = 171
Top = 200 Top = 152
Width = 78 Width = 78
Height = 14 Height = 14
Caption = 'New Due Date:' Caption = 'New Due Date:'
...@@ -153,8 +153,8 @@ object FSetStatus: TFSetStatus ...@@ -153,8 +153,8 @@ object FSetStatus: TFSetStatus
WidthPercent = 100.000000000000000000 WidthPercent = 100.000000000000000000
end end
object lblArt: TWebLabel object lblArt: TWebLabel
Left = 324 Left = 326
Top = 142 Top = 94
Width = 44 Width = 44
Height = 14 Height = 14
Caption = 'Art Due:' Caption = 'Art Due:'
...@@ -168,8 +168,8 @@ object FSetStatus: TFSetStatus ...@@ -168,8 +168,8 @@ object FSetStatus: TFSetStatus
WidthPercent = 100.000000000000000000 WidthPercent = 100.000000000000000000
end end
object lblArtNew: TWebLabel object lblArtNew: TWebLabel
Left = 482 Left = 484
Top = 142 Top = 94
Width = 78 Width = 78
Height = 14 Height = 14
Caption = 'New Due Date:' Caption = 'New Due Date:'
...@@ -183,8 +183,8 @@ object FSetStatus: TFSetStatus ...@@ -183,8 +183,8 @@ object FSetStatus: TFSetStatus
WidthPercent = 100.000000000000000000 WidthPercent = 100.000000000000000000
end end
object wlcbStatus: TWebLookupComboBox object wlcbStatus: TWebLookupComboBox
Left = 326 Left = 328
Top = 100 Top = 52
Width = 145 Width = 145
Height = 22 Height = 22
ElementClassName = 'custom-select' ElementClassName = 'custom-select'
...@@ -194,8 +194,8 @@ object FSetStatus: TFSetStatus ...@@ -194,8 +194,8 @@ object FSetStatus: TFSetStatus
LookupValues = <> LookupValues = <>
end end
object dtpDate: TWebDateTimePicker object dtpDate: TWebDateTimePicker
Left = 484 Left = 486
Top = 100 Top = 52
Width = 145 Width = 145
Height = 22 Height = 22
BorderStyle = bsSingle BorderStyle = bsSingle
...@@ -206,8 +206,8 @@ object FSetStatus: TFSetStatus ...@@ -206,8 +206,8 @@ object FSetStatus: TFSetStatus
Text = '' Text = ''
end end
object btnConfirm: TWebButton object btnConfirm: TWebButton
Left = 14 Left = 16
Top = 273 Top = 225
Width = 96 Width = 96
Height = 25 Height = 25
Caption = 'Confirm' Caption = 'Confirm'
...@@ -222,8 +222,8 @@ object FSetStatus: TFSetStatus ...@@ -222,8 +222,8 @@ object FSetStatus: TFSetStatus
OnClick = btnConfirmClick OnClick = btnConfirmClick
end end
object btnCancel: TWebButton object btnCancel: TWebButton
Left = 125 Left = 127
Top = 273 Top = 225
Width = 96 Width = 96
Height = 25 Height = 25
Caption = 'Cancel' Caption = 'Cancel'
...@@ -238,8 +238,8 @@ object FSetStatus: TFSetStatus ...@@ -238,8 +238,8 @@ object FSetStatus: TFSetStatus
OnClick = btnCancelClick OnClick = btnCancelClick
end end
object edtOrderID: TWebEdit object edtOrderID: TWebEdit
Left = 14 Left = 16
Top = 100 Top = 52
Width = 145 Width = 145
Height = 22 Height = 22
HelpType = htKeyword HelpType = htKeyword
...@@ -259,31 +259,9 @@ object FSetStatus: TFSetStatus ...@@ -259,31 +259,9 @@ object FSetStatus: TFSetStatus
TabOrder = 1 TabOrder = 1
WidthPercent = 100.000000000000000000 WidthPercent = 100.000000000000000000
end end
object edtNotification: TWebEdit
Left = 14
Top = 24
Width = 303
Height = 22
HelpType = htKeyword
TabStop = False
ChildOrder = 8
ElementClassName = 'form-control'
ElementFont = efCSS
Enabled = False
Font.Charset = ANSI_CHARSET
Font.Color = clBlack
Font.Height = -8
Font.Name = 'Arial'
Font.Style = []
HeightPercent = 100.000000000000000000
HideSelection = False
ParentFont = False
TabOrder = 1
WidthPercent = 100.000000000000000000
end
object edtJobName: TWebEdit object edtJobName: TWebEdit
Left = 172 Left = 174
Top = 100 Top = 52
Width = 145 Width = 145
Height = 22 Height = 22
HelpType = htKeyword HelpType = htKeyword
...@@ -304,8 +282,8 @@ object FSetStatus: TFSetStatus ...@@ -304,8 +282,8 @@ object FSetStatus: TFSetStatus
WidthPercent = 100.000000000000000000 WidthPercent = 100.000000000000000000
end end
object dtpShipDue: TWebDateTimePicker object dtpShipDue: TWebDateTimePicker
Left = 11 Left = 13
Top = 162 Top = 114
Width = 145 Width = 145
Height = 22 Height = 22
BorderStyle = bsSingle BorderStyle = bsSingle
...@@ -317,8 +295,8 @@ object FSetStatus: TFSetStatus ...@@ -317,8 +295,8 @@ object FSetStatus: TFSetStatus
Text = '' Text = ''
end end
object dtpNewShipDue: TWebDateTimePicker object dtpNewShipDue: TWebDateTimePicker
Left = 169 Left = 171
Top = 162 Top = 114
Width = 145 Width = 145
Height = 22 Height = 22
BorderStyle = bsSingle BorderStyle = bsSingle
...@@ -329,8 +307,8 @@ object FSetStatus: TFSetStatus ...@@ -329,8 +307,8 @@ object FSetStatus: TFSetStatus
Text = '' Text = ''
end end
object dtpMountDue: TWebDateTimePicker object dtpMountDue: TWebDateTimePicker
Left = 324 Left = 326
Top = 220 Top = 172
Width = 145 Width = 145
Height = 22 Height = 22
BorderStyle = bsSingle BorderStyle = bsSingle
...@@ -342,8 +320,8 @@ object FSetStatus: TFSetStatus ...@@ -342,8 +320,8 @@ object FSetStatus: TFSetStatus
Text = '' Text = ''
end end
object dtpNewMountDue: TWebDateTimePicker object dtpNewMountDue: TWebDateTimePicker
Left = 482 Left = 484
Top = 220 Top = 172
Width = 145 Width = 145
Height = 22 Height = 22
BorderStyle = bsSingle BorderStyle = bsSingle
...@@ -354,8 +332,8 @@ object FSetStatus: TFSetStatus ...@@ -354,8 +332,8 @@ object FSetStatus: TFSetStatus
Text = '' Text = ''
end end
object dtpPlateDue: TWebDateTimePicker object dtpPlateDue: TWebDateTimePicker
Left = 11 Left = 13
Top = 220 Top = 172
Width = 145 Width = 145
Height = 22 Height = 22
BorderStyle = bsSingle BorderStyle = bsSingle
...@@ -367,8 +345,8 @@ object FSetStatus: TFSetStatus ...@@ -367,8 +345,8 @@ object FSetStatus: TFSetStatus
Text = '' Text = ''
end end
object dtpNewPlateDue: TWebDateTimePicker object dtpNewPlateDue: TWebDateTimePicker
Left = 169 Left = 171
Top = 220 Top = 172
Width = 145 Width = 145
Height = 22 Height = 22
BorderStyle = bsSingle BorderStyle = bsSingle
...@@ -379,8 +357,8 @@ object FSetStatus: TFSetStatus ...@@ -379,8 +357,8 @@ object FSetStatus: TFSetStatus
Text = '' Text = ''
end end
object dtpArtDue: TWebDateTimePicker object dtpArtDue: TWebDateTimePicker
Left = 324 Left = 326
Top = 162 Top = 114
Width = 145 Width = 145
Height = 22 Height = 22
BorderStyle = bsSingle BorderStyle = bsSingle
...@@ -392,8 +370,8 @@ object FSetStatus: TFSetStatus ...@@ -392,8 +370,8 @@ object FSetStatus: TFSetStatus
Text = '' Text = ''
end end
object dtpNewArtDue: TWebDateTimePicker object dtpNewArtDue: TWebDateTimePicker
Left = 482 Left = 484
Top = 162 Top = 114
Width = 145 Width = 145
Height = 22 Height = 22
BorderStyle = bsSingle BorderStyle = bsSingle
......
...@@ -17,7 +17,6 @@ type ...@@ -17,7 +17,6 @@ type
btnCancel: TWebButton; btnCancel: TWebButton;
WebLabel2: TWebLabel; WebLabel2: TWebLabel;
edtOrderID: TWebEdit; edtOrderID: TWebEdit;
edtNotification: TWebEdit;
edtJobName: TWebEdit; edtJobName: TWebEdit;
WebLabel3: TWebLabel; WebLabel3: TWebLabel;
WebLabel4: TWebLabel; WebLabel4: TWebLabel;
......
...@@ -57,35 +57,19 @@ begin ...@@ -57,35 +57,19 @@ begin
Exit; Exit;
end; end;
asm ShowConfirmationModal(
var modal = document.getElementById('confirmation_modal'); 'Are you sure you want to save changes to your profile?',
var btnCancel = document.getElementById('btn_confirm_cancel'); 'Save',
var btnConfirm = document.getElementById('btn_confirm_delete'); 'Cancel',
var modalBody = document.getElementById('modal_body'); procedure(confirmed: Boolean)
var self = this; begin
if confirmed then
if (modal && btnCancel && btnConfirm && modalBody) { EditUser;
modalBody.innerText = 'Are you sure you want to save changes to your profile?'; end
btnCancel.innerText = 'Cancel'; );
btnConfirm.innerText = 'Save';
if (modal.parentNode !== document.body) {
document.body.appendChild(modal);
}
var bsModal = new bootstrap.Modal(modal, { keyboard: false });
bsModal.show();
btnConfirm.onclick = function () {
self.EditUser();
bsModal.hide();
};
}
end;
end; end;
[async] procedure TFViewUserProfile.EditUser; [async] procedure TFViewUserProfile.EditUser;
var var
xdcResponse: TXDataClientResponse; xdcResponse: TXDataClientResponse;
...@@ -114,28 +98,33 @@ begin ...@@ -114,28 +98,33 @@ begin
end; end;
procedure TFViewUserProfile.btnCancelClick(Sender: TObject); procedure TFViewUserProfile.btnCancelClick(Sender: TObject);
var
xdcResponse: TXDataClientResponse;
userList: TJSObject;
data: TJSArray;
user: TJSObject;
begin begin
ShowConfirmationModal(
'Are you sure you want to cancel all your changes?',
'Yes',
'No',
procedure(confirmed: Boolean)
begin
if confirmed then
begin
GetUser(); GetUser();
showToast('Failure: Changes discarded'); ShowToast('Changes discarded', 'danger');
end;
end
);
end; end;
procedure TFViewUserProfile.WebFormShow(Sender: TObject); procedure TFViewUserProfile.WebFormShow(Sender: TObject);
begin begin
GetUser(); GetUser();
//edtJwt.Text := TJSJSON.stringify(AuthService.TokenPayload); //edtJwt.Text := TJSJSON.stringify(AuthService.TokenPayload);
// View.UserProfile.WebFormShow // View.UserProfile.WebFormShow
chkAdminUser.Checked := SameText(string(AuthService.TokenPayload.Properties['user_admin']), 'true'); chkAdminUser.Checked := SameText(string(AuthService.TokenPayload.Properties['user_admin']), 'true');
end; end;
procedure TFViewUserProfile.GetUser; procedure TFViewUserProfile.GetUser;
var var
xdcResponse: TXDataClientResponse; xdcResponse: TXDataClientResponse;
......
...@@ -43,22 +43,5 @@ ...@@ -43,22 +43,5 @@
</div> </div>
</div> </div>
</div> </div>
<!--</div> -->
<!--</div> -->
<div class="modal fade" id="confirmation_modal" tabindex="-1" aria-labelledby="confirmation_modal_label" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="confirmation_modal_label">Confirm</h5>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
</div>
<div class="modal-body">
Are you sure you want to make these changes?
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Cancel</button>
<button type="button" class="btn btn-primary" data-bs-dismiss="modal" id="btn_confirm_delete" >Confirm</button>
</div>
</div>
</div>
</div>
...@@ -382,6 +382,15 @@ is-invalid .form-check-input { ...@@ -382,6 +382,15 @@ is-invalid .form-check-input {
animation: slideInLeft 0.4s ease-out forwards; animation: slideInLeft 0.4s ease-out forwards;
} }
#spinner {
position: fixed !important;
z-index: 9999 !important;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
}
......
...@@ -87,6 +87,7 @@ uses ...@@ -87,6 +87,7 @@ uses
System.Generics.Collections, System.Generics.Collections,
XData.Sys.Exceptions, uLibrary, rOrderWeb, rOrderCutting; XData.Sys.Exceptions, uLibrary, rOrderWeb, rOrderCutting;
procedure TLookupService.AfterConstruction; procedure TLookupService.AfterConstruction;
begin begin
inherited; inherited;
...@@ -94,12 +95,14 @@ begin ...@@ -94,12 +95,14 @@ begin
end; end;
procedure TLookupService.BeforeDestruction; procedure TLookupService.BeforeDestruction;
begin begin
ordersDB.Free; ordersDB.Free;
inherited; inherited;
end; end;
function TLookupService.DelShippingAddress(AddressID, CustomerID: string): TJSONObject; function TLookupService.DelShippingAddress(AddressID, CustomerID: string): TJSONObject;
var var
SQL: string; SQL: string;
...@@ -300,7 +303,6 @@ begin ...@@ -300,7 +303,6 @@ begin
end; end;
function TLookupService.AddShippingAddress(AddressInfo: string): TJSONObject; function TLookupService.AddShippingAddress(AddressInfo: string): TJSONObject;
var var
JSONData: TJSONObject; JSONData: TJSONObject;
...@@ -1686,7 +1688,7 @@ begin ...@@ -1686,7 +1688,7 @@ begin
if ( JSONData.GetValue<string>('staff_fields_mount_due') <> '' ) and ( JSONData.GetValue<string>('staff_fields_mount_due') <> '12/30/1899' ) then if ( JSONData.GetValue<string>('staff_fields_mount_due') <> '' ) and ( JSONData.GetValue<string>('staff_fields_mount_due') <> '12/30/1899' ) then
AddStatusSchedule('MOUNT', JSONData, ORDER_ID); AddStatusSchedule('MOUNT', JSONData, ORDER_ID);
addToRevisionsTable(intToStr(ORDER_ID), 'corrugated_plate_orders_revisions', JSONData); AddToRevisionsTable(intToStr(ORDER_ID), 'corrugated_plate_orders_revisions', JSONData);
if mode = 'ADD' then if mode = 'ADD' then
msg := 'Success: Order Successfully Added' msg := 'Success: Order Successfully Added'
...@@ -2009,6 +2011,8 @@ begin ...@@ -2009,6 +2011,8 @@ begin
else else
ordersDB.UniQuery1.FieldByName('status').AsString := 'INACTIVE'; ordersDB.UniQuery1.FieldByName('status').AsString := 'INACTIVE';
ordersDB.UniQuery1.FieldByName('qb_items_qb_id').AsString := JSONData.GetValue<string>('qb_items_qb_id');
ordersDB.UniQuery1.Post; ordersDB.UniQuery1.Post;
Result.AddPair('msg', 'Success: Item successfully added'); Result.AddPair('msg', 'Success: Item successfully added');
end end
...@@ -2237,25 +2241,22 @@ end; ...@@ -2237,25 +2241,22 @@ end;
function TLookupService.delOrder(OrderID, orderType, UserID: string): TJSONObject; function TLookupService.delOrder(OrderID, orderType, UserID: string): TJSONObject;
var var
table: string; table, table2, SQL: string;
table2: string; stream: TStringStream;
sql: string;
CorrugatedOrder: TFullOrder;
WebOrder: TWebOrder;
CuttingDieOrder: TCuttingDie;
DateFormat: TFormatSettings; DateFormat: TFormatSettings;
JSONData: TJSONObject; JSONValue: TJSONValue;
JSONObject, DataObject, JSONData: TJSONObject;
JSONArray: TJSONArray; JSONArray: TJSONArray;
Pair: TJSONPair; Pair: TJSONPair;
Field: TField; Field: TField;
mode: string; RevisionID, rev_num, OrderIDInt: Integer;
stream: TStringStream;
RevisionID, rev_num: integer;
JSONValue: TJSONValue;
JSONObject: TJSONObject;
DataObject: TJSONObject;
begin begin
try try
// Convert ORDER_ID to integer safely
OrderIDInt := StrToIntDef(OrderID, -1);
if OrderIDInt = -1 then
raise Exception.Create('Invalid OrderID: not a valid integer');
if orderType = 'corrugated' then if orderType = 'corrugated' then
begin begin
table := 'corrugated_plate_orders'; table := 'corrugated_plate_orders';
...@@ -2272,64 +2273,58 @@ begin ...@@ -2272,64 +2273,58 @@ begin
table2 := 'cutting_die_orders_revisions'; table2 := 'cutting_die_orders_revisions';
end; end;
stream := TStringStream.Create('', TEncoding.UTF8); // Get new revision ID
DateFormat := TFormatSettings.Create; SQL := 'UPDATE idfield SET KEYVALUE = KEYVALUE + 1 WHERE KEYNAME = ' + QuotedStr('GEN_ORDER_REVISION_ID');
DateFormat.ShortDateFormat := 'yyyy-mm-dd';
DateFormat.DateSeparator := '-';
//Update RevisionID
SQL := 'UPDATE idfield set KEYVALUE = KEYVALUE + 1 WHERE KEYNAME = ' + quotedStr('GEN_ORDER_REVISION_ID');
OrdersDB.UniQuery1.SQL.Text := SQL; OrdersDB.UniQuery1.SQL.Text := SQL;
OrdersDB.UniQuery1.ExecSQL; OrdersDB.UniQuery1.ExecSQL;
//Retrieve updated RevisionID SQL := 'SELECT KEYVALUE FROM idfield WHERE KEYNAME = ' + QuotedStr('GEN_ORDER_REVISION_ID');
SQL := 'select KEYVALUE from idfield where KEYNAME = ' + quotedStr('GEN_ORDER_REVISION_ID');
doQuery(OrdersDB.UniQuery1, SQL); doQuery(OrdersDB.UniQuery1, SQL);
RevisionID := OrdersDB.UniQuery1.FieldByName('KEYVALUE').AsInteger; RevisionID := OrdersDB.UniQuery1.FieldByName('KEYVALUE').AsInteger;
// Convert Order into JSON // Fetch the order to archive it
SQL := 'select * from ' + table + ' where ORDER_ID = ' + OrderID; SQL := 'SELECT * FROM ' + table + ' WHERE ORDER_ID = ' + IntToStr(OrderIDInt);
doQuery(ordersDB.UniQuery1, SQL); doQuery(OrdersDB.UniQuery1, SQL);
ordersDB.UniQuery1.SaveToJSON(stream); stream := TStringStream.Create('', TEncoding.UTF8);
try
OrdersDB.UniQuery1.SaveToJSON(stream);
stream.Position := 0; stream.Position := 0;
JSONValue := TJSONObject.ParseJSONValue(Stream.DataString); JSONValue := TJSONObject.ParseJSONValue(stream.DataString);
if not Assigned(JSONValue) then if not Assigned(JSONValue) then
raise Exception.Create('Invalid JSON content'); raise Exception.Create('Invalid JSON content');
try
if not (JSONValue is TJSONObject) then if not (JSONValue is TJSONObject) then
raise Exception.Create('Expected JSON object'); raise Exception.Create('Expected JSON object');
JSONObject := TJSONObject(JSONValue); JSONObject := TJSONObject(JSONValue);
// Get the "data" object
if not JSONObject.TryGetValue('data', DataObject) then if not JSONObject.TryGetValue('data', DataObject) then
raise Exception.Create('Missing "data" object in JSON'); raise Exception.Create('Missing "data" object in JSON');
// Get the "rows" array
if not DataObject.TryGetValue('rows', JSONArray) then if not DataObject.TryGetValue('rows', JSONArray) then
raise Exception.Create('Missing "rows" array in JSON data'); raise Exception.Create('Missing "rows" array in JSON data');
JSONData := JSONArray.Items[0] as TJSONObject; if JSONArray.Count = 0 then
raise Exception.Create('No order found with ORDER_ID = ' + IntToStr(OrderIDInt));
SQL := 'select max(REVISION_NUMBER) as rev_num from ' + table2 + ' where ORDER_ID = ' + orderID; JSONData := JSONArray.Items[0] as TJSONObject;
doQuery(ordersDB.UniQuery1, SQL);
rev_num := ordersDB.UniQuery1.FieldByName('rev_num').AsInteger + 1;
SQL := 'select * from ' + table2 + ' where ORDER_ID = ' + orderID; // Get current max revision number
doQuery(ordersDB.UniQuery1, SQL); SQL := 'SELECT MAX(REVISION_NUMBER) AS rev_num FROM ' + table2 + ' WHERE ORDER_ID = ' + IntToStr(OrderIDInt);
doQuery(OrdersDB.UniQuery1, SQL);
rev_num := OrdersDB.UniQuery1.FieldByName('rev_num').AsInteger + 1;
doQuery(ordersDB.UniQuery1, SQL); // Insert into revisions
try SQL := 'SELECT * FROM ' + table2 + ' WHERE ORDER_ID = ' + IntToStr(OrderIDInt);
ordersDB.UniQuery1.Insert; doQuery(OrdersDB.UniQuery1, SQL);
OrdersDB.UniQuery1.Insert;
for Pair in JSONData do for Pair in JSONData do
begin begin
Field := ordersDB.UniQuery1.FindField(Pair.JsonString.Value); // Checks if the field exists in the dataset Field := OrdersDB.UniQuery1.FindField(Pair.JsonString.Value);
if Assigned(Field) then if Assigned(Field) then
begin begin
// handles any dates or datetimes
if (Field is TDateTimeField) and (Pair.JsonValue.Value <> '') then if (Field is TDateTimeField) and (Pair.JsonValue.Value <> '') then
TDateTimeField(Field).AsDateTime := ISO8601ToDate(Pair.JsonValue.Value, False) TDateTimeField(Field).AsDateTime := ISO8601ToDate(Pair.JsonValue.Value, False)
else if Pair.JsonValue.Value <> '' then else if Pair.JsonValue.Value <> '' then
...@@ -2337,32 +2332,33 @@ begin ...@@ -2337,32 +2332,33 @@ begin
end; end;
end; end;
ordersDB.UniQuery1.FieldByName('ORDER_ID').AsString := OrderID; OrdersDB.UniQuery1.FieldByName('ORDER_ID').AsInteger := OrderIDInt;
ordersDB.UniQuery1.FieldByName('ORDER_STATUS').AsString := 'DELETED'; OrdersDB.UniQuery1.FieldByName('ORDER_STATUS').AsString := 'DELETED';
ordersDB.UniQuery1.FieldByName('REVISION_NUMBER').AsInteger := 1; 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 := UserID; OrdersDB.UniQuery1.FieldByName('REVISION_USER_ID').AsString := UserID;
// Post the record to the database OrdersDB.UniQuery1.Post;
ordersDB.UniQuery1.Post;
Result := TJSONObject.Create.AddPair('status', 'success');
Result.AddPair('OrderID', OrderID);
TXDataOperationContext.Current.Handler.ManagedObjects.Add(Result);
except
on E: Exception do
begin
Result := TJSONObject.Create.AddPair('error', E.Message);
end
end;
finally finally
JSONData.Free; stream.Free;
JSONValue.Free;
end; end;
sql := 'delete from ' + table + ' where ORDER_ID = ' + OrderID;
// Delete from order tables
SQL := 'DELETE FROM ' + table + ' WHERE ORDER_ID = ' + IntToStr(OrderIDInt);
OrdersDB.UniQuery1.SQL.Text := SQL; OrdersDB.UniQuery1.SQL.Text := SQL;
OrdersDB.UniQuery1.ExecSQL; OrdersDB.UniQuery1.ExecSQL;
sql := 'delete from orders where ORDER_ID = ' + OrderID;
SQL := 'DELETE FROM orders WHERE ORDER_ID = ' + IntToStr(OrderIDInt);
OrdersDB.UniQuery1.SQL.Text := SQL; OrdersDB.UniQuery1.SQL.Text := SQL;
OrdersDB.UniQuery1.ExecSQL; OrdersDB.UniQuery1.ExecSQL;
// Return result
Result := TJSONObject.Create;
Result.AddPair('status', 'success');
Result.AddPair('OrderID', IntToStr(OrderIDInt));
TXDataOperationContext.Current.Handler.ManagedObjects.Add(Result);
except except
on E: Exception do on E: Exception do
begin begin
...@@ -2659,6 +2655,7 @@ begin ...@@ -2659,6 +2655,7 @@ begin
else else
ParsedItem.AddPair('item_desc', 'N/A'); ParsedItem.AddPair('item_desc', 'N/A');
ParsedItem.AddPair('status', item.GetValue<string>('Active')); ParsedItem.AddPair('status', item.GetValue<string>('Active'));
ParsedItem.AddPair('qb_items_qb_id', item.GetValue<string>('Id'));
Result.AddElement(ParsedItem); Result.AddElement(ParsedItem);
end; end;
......
...@@ -69,9 +69,9 @@ object fQB: TfQB ...@@ -69,9 +69,9 @@ object fQB: TfQB
end end
object Memo1: TMemo object Memo1: TMemo
Left = 0 Left = 0
Top = 53 Top = 63
Width = 982 Width = 982
Height = 228 Height = 218
Align = alBottom Align = alBottom
Lines.Strings = ( Lines.Strings = (
'') '')
...@@ -239,7 +239,7 @@ object fQB: TfQB ...@@ -239,7 +239,7 @@ object fQB: TfQB
SortSettings.HeaderColorTo = clWhite SortSettings.HeaderColorTo = clWhite
SortSettings.HeaderMirrorColor = clWhite SortSettings.HeaderMirrorColor = clWhite
SortSettings.HeaderMirrorColorTo = clWhite SortSettings.HeaderMirrorColorTo = clWhite
Version = '9.1.4.1' Version = '9.1.4.5'
ColWidths = ( ColWidths = (
64 64
64 64
...@@ -394,7 +394,7 @@ object fQB: TfQB ...@@ -394,7 +394,7 @@ object fQB: TfQB
SortSettings.HeaderColorTo = clWhite SortSettings.HeaderColorTo = clWhite
SortSettings.HeaderMirrorColor = clWhite SortSettings.HeaderMirrorColor = clWhite
SortSettings.HeaderMirrorColorTo = clWhite SortSettings.HeaderMirrorColorTo = clWhite
Version = '9.1.4.1' Version = '9.1.4.5'
ColWidths = ( ColWidths = (
64 64
64 64
...@@ -423,6 +423,42 @@ object fQB: TfQB ...@@ -423,6 +423,42 @@ object fQB: TfQB
TabOrder = 10 TabOrder = 10
OnClick = Button8Click OnClick = Button8Click
end end
object Button9: TButton
Left = 121
Top = 32
Width = 95
Height = 25
Caption = 'Get Estimate'
TabOrder = 11
OnClick = Button9Click
end
object Button10: TButton
Left = 222
Top = 32
Width = 75
Height = 25
Caption = 'Update QB ID'
TabOrder = 12
OnClick = Button10Click
end
object Button11: TButton
Left = 316
Top = 32
Width = 113
Height = 25
Caption = 'update QB Items'
TabOrder = 13
OnClick = Button11Click
end
object Button12: TButton
Left = 435
Top = 32
Width = 190
Height = 25
Caption = 'Delete Customers without orders'
TabOrder = 14
OnClick = Button12Click
end
object uq: TUniQuery object uq: TUniQuery
Connection = ApiDatabase.ucKG Connection = ApiDatabase.ucKG
SQL.Strings = ( SQL.Strings = (
......
unit qbAPI; unit qbAPI;
interface interface
...@@ -117,6 +117,10 @@ type ...@@ -117,6 +117,10 @@ type
asgData: TAdvStringGrid; asgData: TAdvStringGrid;
Splitter2: TSplitter; Splitter2: TSplitter;
Button8: TButton; Button8: TButton;
Button9: TButton;
Button10: TButton;
Button11: TButton;
Button12: TButton;
procedure Button1Click(Sender: TObject); procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject); procedure FormCreate(Sender: TObject);
procedure Button2Click(Sender: TObject); procedure Button2Click(Sender: TObject);
...@@ -131,6 +135,10 @@ type ...@@ -131,6 +135,10 @@ type
procedure Panel1Resize(Sender: TObject); procedure Panel1Resize(Sender: TObject);
procedure Panel2Resize(Sender: TObject); procedure Panel2Resize(Sender: TObject);
procedure Button8Click(Sender: TObject); procedure Button8Click(Sender: TObject);
procedure Button9Click(Sender: TObject);
procedure Button10Click(Sender: TObject);
procedure Button11Click(Sender: TObject);
procedure Button12Click(Sender: TObject);
private private
{ Private declarations } { Private declarations }
strict private strict private
...@@ -140,6 +148,7 @@ type ...@@ -140,6 +148,7 @@ type
var var
AccessToken,RefreshToken,CompanyID,Client,Secret: string; AccessToken,RefreshToken,CompanyID,Client,Secret: string;
LastRefresh: TDateTime; LastRefresh: TDateTime;
ID, QB_ID: string;
public public
{ Public declarations } { Public declarations }
procedure findMatches(CustomerList: TJSONArray; JSONfield, DBField: string); procedure findMatches(CustomerList: TJSONArray; JSONfield, DBField: string);
...@@ -150,6 +159,12 @@ type ...@@ -150,6 +159,12 @@ type
procedure ConfigureSSL(IOHandler: TIdSSLIOHandlerSocketOpenSSL); procedure ConfigureSSL(IOHandler: TIdSSLIOHandlerSocketOpenSSL);
procedure SaveTokens(AccessToken, RefreshToken: string); procedure SaveTokens(AccessToken, RefreshToken: string);
procedure getCustomers(); procedure getCustomers();
procedure addEstimate(orderInfo: string);
procedure getQBCustomers();
procedure ShowDeleteConfirm(msg: string);
procedure ShowLinkConfirm(msg: string);
procedure DeleteCustomers();
procedure LinkCustomers();
end; end;
var var
...@@ -168,21 +183,239 @@ var ...@@ -168,21 +183,239 @@ var
begin begin
origin := TPoint.Create(1,1); origin := TPoint.Create(1,1);
point := asgData.find(origin, asgData2.Cells[2, ARow], []); point := asgData.find(origin, asgData2.Cells[2, ARow], []);
if point.Y = -1 then
point.Y := 0;
if point.X = -1 then
point.X := 0;
asgData.Row := point.Y; asgData.Row := point.Y;
asgData.Col := point.X; asgData.Col := point.X;
if ( (point.X <> 0) and (point.Y <> 0) ) then
begin
QB_ID := asgData.Cells[1, asgData.Row];
ID := asgData2.Cells[1, asgData2.Row];
end
else
ID := asgData2.Cells[1, asgData2.Row];
end; end;
procedure TfQB.asgDataClickCell(Sender: TObject; ARow, ACol: Integer); procedure TfQB.asgDataClickCell(Sender: TObject; ARow, ACol: Integer);
var var
point, origin: TPoint; point, origin: TPoint;
begin begin
origin := TPoint.Create(1,1); QB_ID := asgData.Cells[1, asgData.Row];
point := asgData2.find(origin, asgData.Cells[2, ARow], []); end;
asgData2.Row := point.Y;
asgData2.Col := point.X; procedure TfQB.Button10Click(Sender: TObject);
var
msg: string;
begin
if( ( QB_ID = '' ) or ( ID = '' ) ) then
begin
Memo1.Lines.Add('Please select a Quickbooks Customer and a KG Orders Customer');
Memo1.Lines.Add('Current QB ID: ' + QB_ID);
Memo1.Lines.Add('Current KG Orders ID: ' + ID);
end
else
begin
msg := 'Are you sure you want to link QB ID: ' + QB_ID + ' with KG Orders ID: ' + ID;
ShowLinkConfirm(msg);
end;
end;
procedure TfQB.LinkCustomers();
var
sql: string;
begin
sql := 'select QB_LIST_ID from customers where CUSTOMER_ID = ' + ID;
doQuery(ordersDB.UniQuery1, SQL);
ordersDB.UniQuery1.Edit;
ordersDB.UniQuery1.FieldByName('QB_LIST_ID').AsString := QB_ID;
ordersDB.UniQuery1.Post;
getCustomers();
QB_ID := '';
ID := '';
end;
procedure TfQB.ShowLinkConfirm(msg: string);
begin
if MessageDlg(msg, mtConfirmation, [mbYes, mbNo], 0) = mrYes then
begin
// User confirmed
LinkCustomers();
end
else
begin
// User canceled
ShowMessage('Cancelled.');
end;
end;
procedure TfQB.Button11Click(Sender: TObject);
var
restClient: TRESTClient;
restRequest: TRESTRequest;
restResponse: TRESTResponse;
param: TRESTRequestParameter;
res: string;
jsValue: TJSONValue;
jsObj: TJSONObject;
ItemList: TJSONArray;
pair: TJSONPair;
ModifiedList: TJSONArray;
ParsedCustomer, Item: TJSONObject;
I: integer;
BillAddr: TJSONObject;
ShipAddr: TJSONObject;
sql: string;
begin
restClient := TRESTClient.Create(nil);
restClient.BaseURL := 'https://sandbox-quickbooks.api.intuit.com';
restRequest := TRESTRequest.Create(nil);
restRequest.Client := restClient;
restResponse := TRESTResponse.Create(nil);
restRequest.Response := restResponse;
if MinutesBetween(Now, LastRefresh) > 58 then
begin
RefreshAccessToken();
end;
restRequest.Method := rmGET;
//res := '/v3/company/' + companyID + '/preferences';
res := '/v3/company/' + companyID + '/query?query=select * from Item&minorversion=75'; // '/customer/58';
restRequest.Resource := res;
param := restRequest.Params.AddItem;
param.Name := 'Authorization';
param.Kind := pkHTTPHEADER;
param.Options := param.Options + [TRESTRequestParameterOption.poDoNotEncode];
param.Value := 'Bearer ' + AccessToken;
restRequest.Execute;
//memo1.Lines.Add(restresponse.Content);
jsValue := restResponse.JSONValue;
jsObj := TJSONObject(jsValue);
//CustomerList := TJSONArray(restResponse.JSONValue);
Memo1.Lines.Add( jsObj.Format(2) );
ItemList := TJSONArray( TJSONObject( jsObj.GetValue('QueryResponse') ).GetValue('Item'));
for i := 0 to ItemList.Count - 1 do
begin
Item := ItemList.Items[i] as TJSONObject;
sql := 'select * from qb_items where qb_item_name = ' + quotedStr(Item.GetValue<string>('Name'));
doQuery(ordersDB.UniQuery1, sql);
if ( not ordersDB.UniQuery1.IsEmpty ) then
begin
ordersDB.UniQuery1.Edit;
ordersDB.uniquery1.FieldByName('qb_items_qb_id').AsString := Item.GetValue<string>('Id');
ordersDB.UniQuery1.Post;
end;
end;
// Load customer info
restClient.Free;
restRequest.Free;
restResponse.Free;
end;
procedure TfQB.Button12Click(Sender: TObject);
var
SQL: string;
cust_count, ship_count: string;
msg: string;
begin
SQL := 'select count(*) as cust_count from customers c ' +
' WHERE NOT EXISTS (SELECT 1 FROM corrugated_plate_orders cpo WHERE cpo.COMPANY_ID = c.CUSTOMER_ID) '+
'AND NOT EXISTS (SELECT 1 FROM web_plate_orders wpo WHERE wpo.COMPANY_ID = c.CUSTOMER_ID) ORDER BY c.SHORT_NAME';
DoQuery(ordersDB.UniQuery1, SQL);
cust_count := ordersDB.UniQuery1.FieldByName('cust_count').AsString;
SQL := 'select count(*) as ship_count from customers c join customers_ship cs on c.CUSTOMER_ID = cs.customer_id' +
' WHERE NOT EXISTS (SELECT 1 FROM corrugated_plate_orders cpo WHERE cpo.COMPANY_ID = c.CUSTOMER_ID) '+
'AND NOT EXISTS (SELECT 1 FROM web_plate_orders wpo WHERE wpo.COMPANY_ID = c.CUSTOMER_ID) ORDER BY c.SHORT_NAME';
DoQuery(ordersDB.UniQuery1, SQL);
ship_count := ordersDB.UniQuery1.FieldByName('ship_count').AsString;
msg := 'You will be deleting ' + cust_count + ' customers and their ' + ship_count + ' assoicated shipping addresses. Are you sure you want to continue?';
ShowDeleteConfirm(msg);
end;
procedure TfQB.DeleteCustomers();
var
SQL: string;
count: integer;
ModifiedList: TJSONArray;
Customer, ParsedCustomer: TJSONObject;
I: integer;
ship_count, cust_count: integer;
begin
Memo1.Lines.Add('Beginning to Delete Customers');
SQL := 'SELECT * FROM customers c ' +
'WHERE NOT EXISTS (SELECT 1 FROM corrugated_plate_orders cpo WHERE cpo.COMPANY_ID = c.CUSTOMER_ID) '+
'AND NOT EXISTS (SELECT 1 FROM web_plate_orders wpo WHERE wpo.COMPANY_ID = c.CUSTOMER_ID) ORDER BY c.SHORT_NAME';
doQuery(ordersDB.UniQuery1, SQL);
cust_count := 0;
ship_count := 0;
while( not ordersDB.UniQuery1.Eof ) do
begin
SQL := 'Select * from customers_ship where customer_id = ' + ordersDB.UniQuery1.FieldByName('CUSTOMER_ID').AsString;
doQuery(ordersDB.UniQuery2, SQL);
ordersDB.UniQuery2.First;
while ( not ordersDB.UniQuery2.Eof) do
begin
ordersDB.UniQuery2.Delete;
ship_count := ship_count + 1;
end;
cust_count := cust_count + 1;
ordersDB.UniQuery1.Delete;
end;
Memo1.Lines.Add('Customers deleted: ' + inttostr(cust_count));
memo1.Lines.Add('Shipping Addresses deleted: '+ inttostr(ship_count));
end;
procedure TfQB.ShowDeleteConfirm(msg: string);
begin
if MessageDlg(msg, mtConfirmation, [mbYes, mbNo], 0) = mrYes then
begin
// User confirmed
DeleteCustomers();
end
else
begin
// User canceled
ShowMessage('Cancelled.');
end;
end; end;
procedure TfQB.Button1Click(Sender: TObject); procedure TfQB.Button1Click(Sender: TObject);
begin
getCustomers();
end;
procedure TfQB.getCustomers();
var var
SQL: string; SQL: string;
count: integer; count: integer;
...@@ -211,6 +444,7 @@ begin ...@@ -211,6 +444,7 @@ begin
ParsedCustomer.AddPair('BillAddrState', ordersDB.UniQuery1.FieldByName('BILL_STATE').AsString); ParsedCustomer.AddPair('BillAddrState', ordersDB.UniQuery1.FieldByName('BILL_STATE').AsString);
ParsedCustomer.AddPair('BillAddrZip', ordersDB.UniQuery1.FieldByName('BILL_ZIP').AsString); ParsedCustomer.AddPair('BillAddrZip', ordersDB.UniQuery1.FieldByName('BILL_ZIP').AsString);
ParsedCustomer.AddPair('BillAddr', ordersDB.UniQuery1.FieldByName('BILL_ADDRESS_BLOCK').AsString); ParsedCustomer.AddPair('BillAddr', ordersDB.UniQuery1.FieldByName('BILL_ADDRESS_BLOCK').AsString);
ParsedCustomer.AddPair('QB_ID', TJSONString.Create(ordersDB.UniQuery1.FieldByName('QB_LIST_ID').AsString));
ModifiedList.AddElement(ParsedCustomer); ModifiedList.AddElement(ParsedCustomer);
...@@ -250,7 +484,7 @@ end; ...@@ -250,7 +484,7 @@ end;
procedure TfQB.Button2Click(Sender: TObject); procedure TfQB.Button2Click(Sender: TObject);
begin begin
GetCustomers(); GetQBCustomers();
end; end;
procedure TfQB.Button3Click(Sender: TObject); procedure TfQB.Button3Click(Sender: TObject);
...@@ -313,11 +547,21 @@ end; ...@@ -313,11 +547,21 @@ end;
procedure TfQB.Button4Click(Sender: TObject); procedure TfQB.Button4Click(Sender: TObject);
var var
orderJSON: TJSONObject;
begin
orderJSON := TJSONObject.Create;
orderJSON.AddPair('ORDER_ID', '19814');
addEstimate(orderJSON.ToString);
end;
procedure tfQb.addEstimate(orderInfo: string);
var
restClient: TRESTClient; restClient: TRESTClient;
restRequest: TRESTRequest; restRequest: TRESTRequest;
restResponse: TRESTResponse; restResponse: TRESTResponse;
param: TRESTRequestParameter; param: TRESTRequestParameter;
res: string; res: string;
i: integer;
jsValue: TJSONValue; jsValue: TJSONValue;
Customer: TJSONValue; Customer: TJSONValue;
jsObj: TJSONObject; jsObj: TJSONObject;
...@@ -326,17 +570,149 @@ var ...@@ -326,17 +570,149 @@ var
estimateJSON: TJSONObject; estimateJSON: TJSONObject;
SQL: string; SQL: string;
estimate: TEstimate; estimate: TEstimate;
CustomerRef: TRef;
CustomerRefJSON: TJSONObject;
Lines: TArray<string>;
BillAddr: TAddress;
BillAddrJSON: TJSONObject;
CustomField:TJSONObject;
CustomFields: TJSONArray;
ShipAddr: TAddress;
ShipAddrJSON: TJSONObject;
Items: TArray<TLine>;
ItemRef: TRef;
SalesItemLineDetail: TSalesItemLineDetail;
LineArray: TJSONArray;
LineObj, DetailObj, ItemRefObj: TJSONObject;
TaxCodeRef: TJSONObject;
TxnTaxCodeRef: TJSONObject;
TxnTaxDetail: TJSONObject;
JSONData: TJSONObject;
ORDER_ID: string;
table: string;
ShipMethodRef: TJSONObject;
begin begin
BillAddrJSON := TJSONObject.Create;
ShipAddrJSON := TJSONObject.Create;
EstimateJSON := TJSONObject.Create;
CustomerRefJSON := TJSONObject.Create;
CustomFields := TJSONArray.Create;
CustomField := TJSONObject.Create;
LineArray := TJSONArray.Create;
LineObj := TJSONObject.Create;
DetailObj := TJSONObject.Create;
ItemRefObj := TJSONObject.Create;
TaxCodeRef := TJSONObject.Create;
TxnTaxCodeRef := TJSONObject.Create;
TxnTaxDetail := TJSONObject.Create;
JSONData := TJSONObject.ParseJSONValue(orderInfo) as TJSONObject;
ORDER_ID := JSONData.GetValue<string>('ORDER_ID');
// add logic to figure out what type of order it is
SQL := 'select * from orders where ORDER_ID = ' + ORDER_ID;
doQuery(ordersDB.UniQuery1, SQL);
if ordersDB.UniQuery1.FieldByName('ORDER_TYPE').AsString = 'corrugated_plate' then
begin
table := 'corrugated_plate_orders';
end
else if ordersDB.UniQuery1.FieldByName('ORDER_TYPE').AsString = 'web_plate' then
begin
table := 'web_plate_orders';
end
else
table := 'cutting_die_orders';
SQL := 'select * from corrugated_plate_orders cpo join customers c on cpo.COMPANY_ID = c.CUSTOMER_ID where ORDER_ID = 18690';
SQL := 'select * from ' + table + ' cpo join customers c on cpo.COMPANY_ID = c.CUSTOMER_ID join customers_ship cs on cpo.staff_fields_ship_to = cs.ship_block JOIN qb_items ON cpo.staff_fields_quickbooks_item = qb_items.qb_item_name where ORDER_ID = ' + ORDER_ID;
doQuery(ordersDB.UniQuery1, SQL); doQuery(ordersDB.UniQuery1, SQL);
estimate.TxnDate := DateTimeToStr(Now); estimateJSON.AddPair('TxnDate', ordersDB.UniQuery1.FieldByName('staff_fields_order_date').AsString);
estimate.PrivateNote := ordersDB.UniQuery1.FieldByName('general_special_instructions').AsString;
//estimate.CustomerRef := order // Update the Quickbooks list ID in the database
// CustomerRef.value :=
CustomerRefJSON := TJSONObject.Create;
CustomerRefJSON.AddPair('value', ordersDB.UniQuery1.FieldByName('QB_LIST_ID').AsString);
//CustomerRef.value := '59'
;
estimateJSON.AddPair('CustomerRef', CustomerRefJSON);
Lines := ordersDB.UniQuery1.FieldByName('staff_fields_invoice_to').AsString.Split([sLineBreak]);
for i := 0 to Length(Lines) - 2 do
begin
case i of
0: BillAddrJSON.AddPair('Line1', Lines[0]);
1: BillAddrJSON.AddPair('Line2', Lines[1]);
2: BillAddrJSON.AddPair('Line3', Lines[2]);
3: BillAddrJSON.AddPair('Line4', Lines[3]);
4: BillAddrJSON.AddPair('Line5', Lines[4]);
end;
end;
BillAddrJSON.AddPair('City', ordersDB.UniQuery1.FieldByName('BILL_CITY').AsString);
BillAddrJSON.AddPair('CountrySubDivisionCode', ordersDB.UniQuery1.FieldByName('BILL_STATE').AsString);
BillAddrJSON.AddPair('PostalCode', ordersDB.UniQuery1.FieldByName('BILL_ZIP').AsString);
estimateJSON.AddPair('BillAddr', BillAddrJSON);
CustomField.AddPair('DefinitionId', '1');
CustomField.AddPair('Name', 'CUSTID');
CustomField.AddPair('Type', 'StringType');
CustomField.AddPair('StringValue', ordersDB.UniQuery1.FieldByName('SHORT_NAME').AsString);
CustomFields.AddElement(CustomField);
EstimateJSON.AddPair('CustomField', CustomFields);
Lines := ordersDB.UniQuery1.FieldByName('ship_block').AsString.Split([sLineBreak]);
for i := 0 to Length(Lines) - 2 do
begin
case i of
0: ShipAddrJSON.AddPair('Line1', Lines[0]);
1: ShipAddrJSON.AddPair('Line2', Lines[1]);
2: ShipAddrJSON.AddPair('Line3', Lines[2]);
3: ShipAddrJSON.AddPair('Line4', Lines[3]);
4: ShipAddrJSON.AddPair('Line5', Lines[4]);
end;
end;
ShipAddrJSON.AddPair('City', ordersDB.UniQuery1.FieldByName('city').AsString);
ShipAddrJSON.AddPair('CountrySubDivisionCode', ordersDB.UniQuery1.FieldByName('state').AsString);
ShipAddrJSON.AddPair('PostalCode', ordersDB.UniQuery1.FieldByName('zip').AsString);
estimateJSON.AddPair('ShipAddr', ShipAddrJSON);
// 🔹 Line object representing one line item
LineObj := TJSONObject.Create;
if ( table = 'corrugated_plate_orders') or (table = 'cutting_die_orders' ) then
begin
if ordersDB.UniQuery1.FieldByName('general_special_instructions').AsString <> '' then
LineObj.AddPair('Description', ordersDB.UniQuery1.FieldByName('item_desc').AsString + ' - ' + ordersDB.UniQuery1.FieldByName('general_special_instructions').AsString);
end;
memo1.Lines.Add(ordersDB.UniQuery1.FieldByName('staff_fields_price').AsString);
memo1.Lines.Add(ordersDB.UniQuery1.FieldByName('staff_fields_quantity').AsString);
LineObj.AddPair('Amount', TJSONNumber.Create(ordersDB.UniQuery1.FieldByName('staff_fields_price').AsFloat));
memo1.Lines.Add(ordersDB.UniQuery1.FieldByName('staff_fields_price').AsString);
LineObj.AddPair('DetailType', 'SalesItemLineDetail');
ItemRefObj.AddPair('value', ordersDB.UniQuery1.FieldByName('qb_items_qb_id').AsString);
DetailObj.AddPair('ItemRef', ItemRefObj);
DetailObj.AddPair('Qty', TJSONNumber.Create(ordersDB.UniQuery1.FieldByName('staff_fields_quantity').AsFloat));
DetailObj.AddPair('UnitPrice', TJSONNumber.Create(ordersDB.UniQuery1.FieldByName('staff_fields_price').AsFloat));
LineObj.AddPair('SalesItemLineDetail', DetailObj);
LineArray.AddElement(LineObj);
EstimateJSON.AddPair('Line', LineArray);
if ordersDB.UniQuery1.FieldByName('staff_fields_ship_date').AsString <> '' then
begin
estimateJSON.AddPair('ShipDate', ordersDB.UniQuery1.FieldByName('staff_fields_ship_date').AsString)
end;
///v3/company/<realmID>/estimate
restClient := TRESTClient.Create(nil); restClient := TRESTClient.Create(nil);
restClient.BaseURL := 'https://sandbox-quickbooks.api.intuit.com'; restClient.BaseURL := 'https://sandbox-quickbooks.api.intuit.com';
...@@ -362,6 +738,10 @@ begin ...@@ -362,6 +738,10 @@ begin
param.Options := param.Options + [TRESTRequestParameterOption.poDoNotEncode]; param.Options := param.Options + [TRESTRequestParameterOption.poDoNotEncode];
param.Value := 'Bearer ' + AccessToken; param.Value := 'Bearer ' + AccessToken;
Memo1.Lines.Add( estimateJSON.Format(2) );
restRequest.AddBody(estimateJSON.ToJSON, TRESTContentType.ctAPPLICATION_JSON);
restRequest.Execute; restRequest.Execute;
//memo1.Lines.Add(restresponse.Content); //memo1.Lines.Add(restresponse.Content);
...@@ -593,7 +973,9 @@ begin ...@@ -593,7 +973,9 @@ begin
//CustomerList := TJSONArray(restResponse.JSONValue); //CustomerList := TJSONArray(restResponse.JSONValue);
Memo1.Lines.Add( jsObj.Format(2) ); Memo1.Lines.Add( jsObj.Format(2) );
CustomerList := TJSONArray( TJSONObject( jsObj.GetValue('QueryResponse') ).GetValue('Customer')) ; CustomerList := TJSONArray( TJSONObject( jsObj.GetValue('QueryResponse') ).GetValue('Item'));
loadJSONArray(CustomerList);
// Load customer info // Load customer info
...@@ -604,7 +986,68 @@ begin ...@@ -604,7 +986,68 @@ begin
end; end;
procedure TfQB.getCustomers(); procedure TfQB.Button9Click(Sender: TObject);
var
restClient: TRESTClient;
restRequest: TRESTRequest;
restResponse: TRESTResponse;
param: TRESTRequestParameter;
res: string;
jsValue: TJSONValue;
jsObj: TJSONObject;
CustomerList: TJSONArray;
pair: TJSONPair;
ModifiedList: TJSONArray;
ParsedCustomer, Customer: TJSONObject;
I: integer;
BillAddr: TJSONObject;
ShipAddr: TJSONObject;
begin
restClient := TRESTClient.Create(nil);
restClient.BaseURL := 'https://sandbox-quickbooks.api.intuit.com';
restRequest := TRESTRequest.Create(nil);
restRequest.Client := restClient;
restResponse := TRESTResponse.Create(nil);
restRequest.Response := restResponse;
if MinutesBetween(Now, LastRefresh) > 58 then
begin
RefreshAccessToken();
end;
restRequest.Method := rmGET;
//GET /v3/company/9341454243251288/query?query=<selectStatement>&minorversion=75
res := '/v3/company/' + companyID + '/query?query=select * from estimate where DocNumber = ' + quotedStr('1002') + '&minorversion=75';
restRequest.Resource := res;
param := restRequest.Params.AddItem;
param.Name := 'Authorization';
param.Kind := pkHTTPHEADER;
param.Options := param.Options + [TRESTRequestParameterOption.poDoNotEncode];
param.Value := 'Bearer ' + AccessToken;
restRequest.Execute;
memo1.Lines.Add(restresponse.Content);
jsValue := restResponse.JSONValue;
jsObj := TJSONObject(jsValue);
Memo1.Lines.Add( jsObj.Format(2) );
restClient.Free;
restRequest.Free;
restResponse.Free;
end;
procedure TfQB.getQBCustomers();
var var
restClient: TRESTClient; restClient: TRESTClient;
restRequest: TRESTRequest; restRequest: TRESTRequest;
...@@ -762,6 +1205,10 @@ begin ...@@ -762,6 +1205,10 @@ begin
Secret := iniFile.ReadString('Quickbooks', 'ClientSecret', ''); Secret := iniFile.ReadString('Quickbooks', 'ClientSecret', '');
CompanyID := iniFile.ReadString('Quickbooks', 'CompanyID', ''); CompanyID := iniFile.ReadString('Quickbooks', 'CompanyID', '');
RefreshToken := iniFile.ReadString('Quickbooks', 'RefreshToken', ''); RefreshToken := iniFile.ReadString('Quickbooks', 'RefreshToken', '');
AccessToken := iniFile.ReadString('Quickbooks', 'AccessToken', '');
LastRefresh := StrToDateTime(iniFile.ReadString('Quickbooks', 'LastRefresh', ''));
QB_ID := '';
ID := '';
end; end;
procedure TfQB.FormDestroy(Sender: TObject); procedure TfQB.FormDestroy(Sender: TObject);
...@@ -929,16 +1376,19 @@ var ...@@ -929,16 +1376,19 @@ var
row: integer; row: integer;
begin begin
Memo1.Lines.Add( '---------------------------------------------------------------' ); Memo1.Lines.Add( '---------------------------------------------------------------' );
Memo1.Lines.Add( 'LoadJsonArray into asgData' ); Memo1.Lines.Add( 'LoadJsonArray into asgData2' );
asgData2.ClearAll; asgData2.ClearAll;
asgData2.RowCount := 1; asgData2.RowCount := 1;
asgData2.StartUpdate; asgData2.StartUpdate;
jso := TJSONObject(jaData.Items[0]); jso := TJSONObject(jaData.Items[0]);
asgData2.ColCount := jso.Count; asgData2.ColCount := jso.Count+1;
for i := 0 to jso.Count - 1 do for i := 0 to jso.Count - 1 do
begin
asgData2.Cells[i+1, 0] := jso.Pairs[i].JsonString.Value; asgData2.Cells[i+1, 0] := jso.Pairs[i].JsonString.Value;
Memo1.Lines.Add('Header Key: ' + jso.Pairs[i].JsonString.Value);
end;
for i := 0 to jaData.Count - 1 do for i := 0 to jaData.Count - 1 do
begin begin
......
...@@ -2,11 +2,11 @@ ...@@ -2,11 +2,11 @@
MemoLogLevel=3 MemoLogLevel=3
FileLogLevel=5 FileLogLevel=5
webClientVersion=0.9.6 webClientVersion=0.9.6
LogFileNum=762 LogFileNum=819
[Database] [Database]
Server=192.168.159.145 --Server=192.168.159.153
--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
...@@ -17,6 +17,6 @@ Password=emsys01 ...@@ -17,6 +17,6 @@ Password=emsys01
CompanyID=9341454272655710 CompanyID=9341454272655710
ClientID=ABgO14uvjh8XqLud7spQ8lkb98AUpcdA7HbyMJfCAtl65sQ5yy ClientID=ABgO14uvjh8XqLud7spQ8lkb98AUpcdA7HbyMJfCAtl65sQ5yy
ClientSecret=bQ06TRemHeAGFzVHRaTUvUoBU9jpU9itK6MOMgqN ClientSecret=bQ06TRemHeAGFzVHRaTUvUoBU9jpU9itK6MOMgqN
RefreshToken=RT1-251-H0-1759499151mghzkhn74tjkqi2vg5c0 RefreshToken=RT1-10-H0-1760618473k44t73jittvqlr4wynn6
AccessToken=eyJhbGciOiJkaXIiLCJlbmMiOiJBMTI4Q0JDLUhTMjU2IiwieC5vcmciOiJIMCJ9..BPFIXN1xTjdWuZGjkh1jUQ.IghcYUEoPWx47KnmuIbgZBNm1EhInMZjAXUi68M-l6zZkuKnlQYmbYq6gC3gIyTd66cx85t7pMmdBAH_q-v3qkUKx2ZqVSRZyYVKSrxYWFl0Vafzbj_BY-4kjrGEqZRFtR4dfQfbFmmlDW215Vjn8MO9v3tvgAVbWO9kafJ3Frv4KtNRgJQPmC01nz4ixF5RD91EnCSo-q4DuuRtCERkjjIiEW9D8ODt1GexshbHxam7dWCDGM2yHX_V0trWi37X5jBBrWgTYRogXhTPfpvlfkCQKTrNmKWhVDuVUxJB3aPREI43IMlW6h3hf445quAjINvgK5wokDCnmVPW3XvIDvnckgAaa9qOLzpl5UktpjqDRRiI4zVNs6BXP7kCsZs9ez0Ai5oeWgj0_j0NKbuVW1exkLcrinmYrMny-s8XpADNDslW8XCmJnHPsOWqZZL5bEXFJXPcYfPkGkV7rt-ln84gRD9413Ji05cmOzO1X5ClhrRhFRwjT3dbrgh88Dro-vMNs3weRdYOVpYFvA5aDXs9xkmHx8auphCdZo5a3sB8n9iKiM618HR-mSeYwCIU3aF2xE8kx0ljH8qVgX1bI2w9ByfM-mNBkasu3uKDH3HcpfqJBKWNOkG692JjzBoy.6H4UaInosVyqlMSCqGMAaA AccessToken=eyJhbGciOiJkaXIiLCJlbmMiOiJBMTI4Q0JDLUhTMjU2IiwieC5vcmciOiJIMCJ9..IwosInYT2Am8LdNGXuY-zQ._QdW6AZ0up2uAna580wQy7qAZPo3nkfHo0eeSpKllcJ_s69nh33Ld41MnTkxeAv1v1bxhvkDxEvkevfNGnggNHU3XSqIqb6tTKcAqR4zPf14JYgOkn82tw_q2VXWLgboMMpP6CfcBHeZPIbJcEOkmX5g4CY0NOum1-_beYmDHE2sxAxnKxcg3rhjBo33BTFjXSg1xknvkTO_GVbyAWdyZmQOpFRfdXAeUDnPAEZhYNVfACFkEDubdK7PyfcAs_7un_E0NZf270tMc2W0HTyk24wCSLbfeeH2Su-G2wi21JszcNsXSNt9ayGtHEXNcWG6A54k1M8U7o_mvpCXLPEXDtJkx8HnBvTz_ZXrFaztQf0_c8DLld5zW8FC1wn-SzHyoCbYbR2M6tBjVLiK80_FlAal_YjBI8fk9BX7nBab6LbCBIcunt7hRsLWCPiRI8_fwM_Nj8rlvxtIoClcyV7_VpIpxCVUgmxKmgf7zuWD3fYc3i8Bg-DpgGgWPVATXSlfNKhOWIDZfyy0YOlkreXPlNdQwCJ1Su3_3yzu_DioV76C5orqoeWk25NiopiAqJ7cBMj15EiuFx-w3jaqCv6ovzEc5r3by510TNu6msjUh2RQ-nxVqLjyLt6VIp3O00e_.2itJJ0rFwI-foW2v1hDSrw
LastRefresh=6/24/2025 10:51:36 AM LastRefresh=7/7/2025 1:49:30 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