Commit 344aa169 by emsys

Made Changes to the way we retrieve info for an empty order and a customer

parent ca4825e6
......@@ -6,7 +6,7 @@ object FViewAddCustomer: TFViewAddCustomer
object lblFormState: TWebLabel
Left = 19
Top = 578
Width = 79
Width = 3
Height = 15
ElementID = 'lbl_form_state'
HeightPercent = 100.000000000000000000
......
......@@ -505,16 +505,14 @@ procedure TFViewAddCustomer.GetCustomer;
// Retrieves a customer for a given CustomerID.
var
xdcResponse: TXDataClientResponse;
customer : TJSObject;
customer, RepUsers : TJSObject;
items: TJSObject;
ship_block: TStringList;
begin
xdcResponse := await(XDataWebClient1.RawInvokeAsync('ILookupService.GetCustomer', [customerID]));
customer := TJSObject(xdcResponse.Result);
xdwdsUsers.Close;
xdwdsUsers.SetJSONData(customer['USERS']);
xdwdsUsers.Open;
XDataWebDataSet1.Close;
XDataWebDataSet1.SetJsonData(customer);
......@@ -530,7 +528,7 @@ begin
dtpEndDate.Date := XDataWebDataSet1.FieldByName('End_DATE').AsDateTime;
xdwdsShipTo.Close;
xdwdsShipTo.SetJSONData(customer['ADDRESS_LIST']);
xdwdsShipTo.SetJSONData(customer['SHIPPING_ADDRESS_LIST']);
xdwdsShipTo.Open;
memoAddressBlock.Text := string(customer['staff_fields_invoice_to']);
......@@ -545,6 +543,14 @@ begin
edtFirstLine.Text := memoShipBlock.Lines[0]
else
edtFirstLine.Text := '';
xdcResponse := await(XDataWebClient1.RawInvokeAsync('ILookupService.GetRepUsers', []));
RepUsers := TJSObject(xdcResponse.Result);
console.log(RepUsers);
xdwdsUsers.Close;
xdwdsUsers.SetJSONData(RepUsers['value']);
xdwdsUsers.Open;
end;
procedure TFViewAddCustomer.tmrReturnTimer(Sender: TObject);
......
......@@ -67,45 +67,6 @@ object FOrderEntryCuttingDie: TFOrderEntryCuttingDie
DataField = 'QB_ORDER_NUM'
DataSource = wdsOrder
end
object dtpOrderDate: TWebDateTimePicker
Left = 22
Top = 218
Width = 170
Height = 22
ElementID = 'dtporderdate'
BorderStyle = bsSingle
ChildOrder = 4
Color = clWhite
Date = 45638.529943136570000000
Role = ''
Text = ''
end
object dtpProofDate: TWebDateTimePicker
Left = 22
Top = 250
Width = 170
Height = 22
ElementID = 'dtpproofdate'
BorderStyle = bsSingle
ChildOrder = 4
Color = clWhite
Date = 45638.529943136570000000
Role = ''
Text = ''
end
object dtpShipDate: TWebDateTimePicker
Left = 22
Top = 282
Width = 170
Height = 22
ElementID = 'dtpshipdate'
BorderStyle = bsSingle
ChildOrder = 4
Color = clWhite
Date = 45638.529943136570000000
Role = ''
Text = ''
end
object edtShipVia: TWebDBEdit
Left = 24
Top = 314
......@@ -373,7 +334,7 @@ object FOrderEntryCuttingDie: TFOrderEntryCuttingDie
DataField = 'ORDER_ID'
DataSource = wdsOrder
end
object WebButton1: TWebButton
object btnQB: TWebButton
Left = 746
Top = 495
Width = 96
......@@ -383,7 +344,52 @@ object FOrderEntryCuttingDie: TFOrderEntryCuttingDie
ElementID = 'btnsendtoqb'
HeightPercent = 100.000000000000000000
WidthPercent = 100.000000000000000000
OnClick = WebButton1Click
OnClick = btnQBClick
end
object dtpOrderDate: TWebDBDateTimePicker
Left = 22
Top = 218
Width = 170
Height = 22
ElementID = 'dtporderdate'
BorderStyle = bsSingle
ChildOrder = 31
Color = clWhite
Date = 45855.535876481480000000
Role = ''
Text = ''
DataField = 'staff_fields_order_date'
DataSource = wdsOrder
end
object dtpProofDate: TWebDBDateTimePicker
Left = 24
Top = 250
Width = 170
Height = 22
ElementID = 'dtpproofdate'
BorderStyle = bsSingle
ChildOrder = 31
Color = clWhite
Date = 45855.535876481480000000
Role = ''
Text = ''
DataField = 'staff_fields_proof_date'
DataSource = wdsOrder
end
object dtpShipDate: TWebDBDateTimePicker
Left = 24
Top = 282
Width = 170
Height = 22
ElementID = 'dtpshipdate'
BorderStyle = bsSingle
ChildOrder = 31
Color = clWhite
Date = 45855.535876481480000000
Role = ''
Text = ''
DataField = 'staff_fields_ship_date'
DataSource = wdsOrder
end
object wdsOrder: TWebDataSource
AutoEdit = False
......@@ -392,6 +398,7 @@ object FOrderEntryCuttingDie: TFOrderEntryCuttingDie
Top = 86
end
object xdwdsOrder: TXDataWebDataSet
OnCalcFields = xdwdsOrderCalcFields
Connection = DMConnection.ApiConnection
Left = 422
Top = 28
......
......@@ -31,9 +31,6 @@ type
edtCompanyAccountName: TWebDBEdit;
edtQBOrderNum: TWebDBEdit;
WebLabel1: TWebLabel;
dtpOrderDate: TWebDateTimePicker;
dtpProofDate: TWebDateTimePicker;
dtpShipDate: TWebDateTimePicker;
edtShipVia: TWebDBEdit;
edtQuantity: TWebDBEdit;
edtPrice: TWebDBEdit;
......@@ -74,12 +71,15 @@ type
xdwdsOrderORDER_ID: TIntegerField;
edtOrderNum: TWebDBEdit;
xdwdsOrderIN_QB: TStringField;
WebButton1: TWebButton;
btnQB: TWebButton;
dtpOrderDate: TWebDBDateTimePicker;
dtpProofDate: TWebDBDateTimePicker;
dtpShipDate: TWebDBDateTimePicker;
procedure btnSaveClick(Sender: TObject);
procedure btnCancelClick(Sender: TObject);
procedure WebFormCreate(Sender: TObject);
[async] procedure GetCuttingDieOrder(Order_ID: string);
[async] procedure GetCustomer(customerID: string);
[async] procedure GetEmptyOrderInfo(customerID: string);
[async] procedure AddCuttingDieOrder(orderJSON: TJSONObject);
procedure btnPDFClick(Sender: TObject);
[async] procedure GenerateReportPDF;
......@@ -96,7 +96,8 @@ type
procedure WebButton2Click(Sender: TObject);
procedure ShowAddAddressForm();
[async] procedure SendAddressToServer(AddressJSON: TJSONObject);
procedure WebButton1Click(Sender: TObject);
procedure btnQBClick(Sender: TObject);
procedure xdwdsOrderCalcFields(DataSet: TDataSet);
private
FAgencyCode: string;
FCurrentReportType: string;
......@@ -145,7 +146,7 @@ end;
begin
if mode = 'ADD' then
begin
await(getCustomer(customerID));
await(getEmptyOrderInfo(customerID));
EditMode;
end
else
......@@ -159,7 +160,7 @@ begin
end;
procedure TFOrderEntryCuttingDie.WebButton1Click(Sender: TObject);
procedure TFOrderEntryCuttingDie.btnQBClick(Sender: TObject);
begin
ShowToast('Sending Orders To QuickBooks is not yet Implemented', 'info');
end;
......@@ -303,9 +304,9 @@ begin
xdwdsOrder.Edit;
//Convert all dates to strings because I was having less issues with that data type.
xdwdsOrderstaff_fields_proof_date.Value := DateTimeToStr(dtpProofDate.Date);
{xdwdsOrderstaff_fields_proof_date.Value := DateTimeToStr(dtpProofDate.Date);
xdwdsOrderstaff_fields_ship_date.Value := DateTimeToStr(dtpShipDate.Date);
xdwdsOrderstaff_fields_order_date.Value := DateTimeToStr(dtpOrderDate.Date);
xdwdsOrderstaff_fields_order_date.Value := DateTimeToStr(dtpOrderDate.Date);}
xdwdsOrder.Post;
xdwdsOrder.First;
......@@ -333,8 +334,6 @@ begin
xdwdsOrder.Next;
end;
console.log(orderJSON);
orderJSON.AddPair('mode', mode);
AddCuttingDieOrder(orderJSON);
......@@ -356,10 +355,11 @@ end;
procedure TFOrderEntryCuttingDie.btnCopyClick(Sender: TObject);
begin
mode := 'ADD';
dtpOrderDate.Date := 0;
dtpProofDate.Date := 0;
dtpShipDate.Date := 0;
xdwdsOrder.Edit;
xdwdsOrder.FieldByName('staff_fields_order_date').AsDateTime := 0;
xdwdsOrder.FieldByName('staff_fields_proof_date').AsDateTime := 0;
xdwdsOrder.FieldByName('staff_fields_ship_date').AsDateTime := 0;
xdwdsOrder.FieldByName('ORDER_ID').AsString := '';
xdwdsOrder.Post;
ShowToast('Success: Order Successfully Copied');
......@@ -507,8 +507,8 @@ begin
if confirmed then
begin
FViewMain.change := false;
if OrderID <> '' then
FViewMain.ViewOrderEntryCuttingDie(OrderID, '', 'EDIT', 'Failure: Changes Discarded')
if xdwdsOrder.FieldByName('ORDER_ID').AsString <> '' then
FViewMain.ViewOrderEntryCuttingDie(xdwdsOrder.FieldByName('ORDER_ID').AsString, '', 'EDIT', 'Failure: Changes Discarded')
else
FViewMain.ViewOrders('');
end;
......@@ -529,6 +529,12 @@ begin
end;
procedure TFOrderEntryCuttingDie.xdwdsOrderCalcFields(DataSet: TDataSet);
begin
if DataSet.FieldByName('IN_QB').IsNull then
DataSet.FieldByName('IN_QB').AsBoolean := False;
end;
procedure TFOrderEntryCuttingDie.getCuttingDieOrder(Order_ID: string);
// retrieves an order from the server then loads the info into the page
var
......@@ -549,20 +555,6 @@ begin
xdwdsOrder.SetJsonData(order);
xdwdsOrder.Open;
// Dates need to be manually set
if not (xdwdsOrderstaff_fields_order_date.AsString = '') then
dtpOrderDate.Date := StrToDateTime(xdwdsOrderstaff_fields_order_date.Value)
else
dtpOrderDate.Date := 0;
if not (xdwdsOrderstaff_fields_proof_date.AsString = '') then
dtpProofDate.Date := StrToDateTime(xdwdsOrderstaff_fields_proof_date.AsString)
else
dtpProofDate.Date := 0;
if not (xdwdsOrderstaff_fields_ship_date.AsString = '') then
dtpShipDate.Date := StrToDateTime(xdwdsOrderstaff_fields_ship_date.AsString)
else
dtpShipDate.Date := 0;
xdwdsShipTo.Close;
xdwdsShipTo.SetJSONData(order['ADDRESS_LIST']);
xdwdsShipTo.Open;
......@@ -581,37 +573,40 @@ begin
end;
procedure TFOrderEntryCuttingDie.getCustomer(customerID: string);
procedure TFOrderEntryCuttingDie.getEmptyOrderInfo(customerID: string);
// gets a customer from the database then loads the appropiate fields
var
xdcResponse: TXDataClientResponse;
customer : TJSObject;
customer, items : TJSObject;
address: string;
items: TJSObject;
begin
xdcResponse := await(XDataWebClient1.RawInvokeAsync('ILookupService.GetCustomer',
[customerID]));
customer := TJSObject(xdcResponse.Result);
customer := TJSObject(xdcResponse.Result);
xdwdsOrder.Close;
xdwdsOrder.SetJsonData(customer);
xdwdsOrder.Open;
xdwdsOrder.Edit;
xdwdsOrder.FieldByName('COMPANY_ID').AsString := customerID;
xdwdsOrder.Append;
xdwdsOrder.FieldByName('NAME').AsString := string(customer['NAME']);
xdwdsOrder.FieldByName('SHORT_NAME').AsString := string(customer['SHORT_NAME']);
xdwdsOrder.FieldByName('staff_fields_invoice_to').AsString := string(customer['staff_fields_invoice_to']);
xdwdsOrder.FieldByName('COMPANY_ID').AsString := customerID;
xdwdsOrderUSER_ID.AsString := JS.toString(AuthService.TokenPayload.Properties['user_id']);
xdwdsOrder.Post;
dtpOrderDate.Date := 0;
dtpProofDate.Date := 0;
dtpShipDate.Date := 0;
xdwdsShipTo.Close;
xdwdsShipTo.SetJSONData(customer['ADDRESS_LIST']);
xdwdsShipTo.SetJSONData(customer['SHIPPING_ADDRESS_LIST']);
xdwdsShipTo.Open;
xdcResponse := await(XDataWebClient1.RawInvokeAsync('ILookupService.GetItems',
[customerID]));
items := TJSObject(xdcResponse.Result);
xdwdsQBItem.Close;
items := TJSObject(customer['ITEMS']);
xdwdsQBItem.SetJsonData(items['data']);
xdwdsQBITEM.Open;
end;
......@@ -637,6 +632,7 @@ begin
btnCancel.Enabled := True;
btnEdit.Enabled := false;
btnAdd.Enabled := false;
btnQB.Enabled := false;
lblFormState.Caption := 'Edit Mode';
lblFormState.ElementHandle.classList.remove('text-danger');
......@@ -654,6 +650,7 @@ begin
btnCancel.Enabled := false;
btnEdit.Enabled := true;
btnAdd.Enabled := true;
btnQB.Enabled := true;
FViewMain.change := false;
lblFormState.Caption := 'View Mode';
......
......@@ -513,6 +513,7 @@ object FOrderEntryWeb: TFOrderEntryWeb
WidthPercent = 100.000000000000000000
DataField = 'proofing_pdf'
DataSource = WebDataSource1
ValueChecked = 'T'
end
object edtPDFTo: TWebDBEdit
Left = 444
......
......@@ -118,6 +118,15 @@ type
ship_id: string;
end;
TOrderCustomerInfoItem = class
public
NAME: string;
CUSTOMER_ID: integer;
SHORT_NAME: string;
staff_fields_invoice_to: string;
SHIPPING_ADDRESS_LIST: TList<TAddressItem>;
end;
TCustomerItem = class
Public
NAME: string;
......@@ -135,9 +144,8 @@ type
QB_LIST_ID: string;
FFAX: string;
REP_USER_ID: string;
ADDRESS_LIST: TList<TAddressItem>;
ITEMS: TItemList;
USERS: TList<TUserItem>
SHIPPING_ADDRESS_LIST: TList<TAddressItem>;
REP_USERS: TList<TUserItem>;
end;
TCustomerList = class
......@@ -379,6 +387,12 @@ type
general_special_instructions: string;
end;
TEmptyOrderInfo = class
public
CustomerInfo: TOrderCustomerInfoItem;
ITEMS: TItemList;
end;
// These objects are only used for quickbooks estimates.
TRef = record
value: string;
......@@ -492,6 +506,7 @@ type
[HttpGet] function GenerateOrderCuttingPDF(orderID: string): string;
[HttpGet] function getQBCustomers(): TJSONArray;
[HttpGet] function getQBItems(): TJSONArray;
[HttpGet] function GetRepUsers(): TList<TUserItem>;
function AddUser(userInfo: string): string;
......
......@@ -22,7 +22,7 @@ uses
iexProcEffects, frxDBSet, frxExportBaseDialog, frCoreClasses, rOrderList, rOrderCorrugated, Common.Logging,
DateUtils, REST.Client, REST.Types, WEBLib.REST, WEBLib.WebTools,System.Net.HttpClient,
System.Net.URLClient, System.Net.HttpClientComponent, System.netencoding,
IdHTTP, IdSSLOpenSSL, IdSSLOpenSSLHeaders, System.IniFiles;
IdHTTP, IdSSLOpenSSL, IdSSLOpenSSLHeaders, System.IniFiles, System.Generics.Collections;
type
......@@ -41,6 +41,7 @@ type
function GetCuttingDieOrder(orderInfo: string): TCuttingDie;
function GetQBCustomers: TJSONArray;
function GetQBItems: TJSONArray;
function GetRepUsers(): TList<TUserItem>;
function EditUser(const editOptions: string): string;
......@@ -84,7 +85,6 @@ type
implementation
uses
System.Generics.Collections,
XData.Sys.Exceptions, uLibrary, rOrderWeb, rOrderCutting;
......@@ -92,17 +92,14 @@ procedure TLookupService.AfterConstruction;
begin
inherited;
ordersDB := TApiDatabase.Create(nil);
end;
procedure TLookupService.BeforeDestruction;
begin
ordersDB.Free;
inherited;
end;
function TLookupService.DelShippingAddress(AddressID, CustomerID: string): TJSONObject;
var
SQL: string;
......@@ -209,7 +206,7 @@ end;
function TLookupService.GetCustomer(ID: string): TCustomerItem;
// Gets one specific customer from the ID given by the client. This is used for
// the OrderEntry forms.
// the AddCustomer form and Order Entry Forms.
var
SQL: string;
ADDRESS: TAddressItem;
......@@ -222,8 +219,7 @@ begin
SQL := 'select * FROM customers c LEFT JOIN customers_ship s ON c.CUSTOMER_ID = s.customer_id WHERE c.CUSTOMER_ID = ' + ID;
doQuery(ordersDB.UniQuery1, SQL);
result := TCustomerItem.Create;
result.ADDRESS_LIST := TList<TAddressItem>.Create;
TXDataOperationContext.Current.Handler.ManagedObjects.Add( Result.ADDRESS_LIST );
result.NAME := ordersDB.UniQuery1.FieldByName('NAME').AsString;
result.CUSTOMER_ID := ordersDB.UniQuery1.FieldByName('CUSTOMER_ID').AsInteger;
......@@ -242,6 +238,8 @@ begin
result.FFAX := ordersDB.UniQuery1.FieldByName('FAX').AsString;
result.REP_USER_ID := ordersDB.UniQuery1.FieldByName('REP_USER_ID').AsString;
result.SHIPPING_ADDRESS_LIST := TList<TAddressItem>.Create;
TXDataOperationContext.Current.Handler.ManagedObjects.Add( Result.SHIPPING_ADDRESS_LIST );
while not ordersDB.UniQuery1.Eof do
begin
ADDRESS := TAddressItem.Create;
......@@ -253,16 +251,27 @@ begin
ADDRESS.zip := ordersDB.UniQuery1.FieldByName('zip').AsString;
ADDRESS.contact := ordersDB.UniQuery1.FieldByName('contact').AsString;
ADDRESS.ship_id := ordersDB.UniQuery1.FieldByName('customer_ship_id').AsString;
result.ADDRESS_LIST.Add(ADDRESS);
result.SHIPPING_ADDRESS_LIST.Add(ADDRESS);
ordersDB.UniQuery1.Next;
end;
ordersDB.UniQuery1.Close;
result.ITEMS := GetItems('');
except
on E: Exception do
begin
Logger.Log(2, 'Error in GetCustomer: ' + E.Message);
raise EXDataHttpException.Create(500, 'Unable to retrieve customer: A KG Orders database issue has occurred!');
end;
end;
end;
function TLookupService.GetRepUsers: TList<TUserItem>;
// Gets a list of users that qualify to be reps for companies
var
USER: TUserItem;
SQL: string;
begin
SQL := 'SELECT USER_ID, NAME from users where QB_ID IS NOT NULL AND QB_ID <> ' + quotedStr('');
result.USERS := TList<TUserItem>.Create;
result := TList<TUserItem>.Create;
doQuery(ordersDB.UniQuery1, SQL);
while not ordersDB.UniQuery1.Eof do
begin
......@@ -270,20 +279,14 @@ begin
TXDataOperationContext.Current.Handler.ManagedObjects.Add( USER );
USER.userID := ordersDB.UniQuery1.FieldByName('USER_ID').AsString;
USER.full_name := ordersDB.UniQuery1.FieldByName('NAME').AsString;
result.USERS.Add(USER);
result.Add(USER);
ordersDB.UniQuery1.Next;
end;
except
on E: Exception do
begin
Logger.Log(2, 'Error in GetCustomer: ' + E.Message);
raise EXDataHttpException.Create(500, 'Unable to retrieve customer: A KG Orders database issue has occurred!');
end;
end;
end;
function TLookupService.GenerateOrderListPDF(searchOptions: string): string;
// Generates a PDF for the Order Page
var
SQL: string;
rptOrderList: TrptOrderList;
......@@ -2130,14 +2133,14 @@ begin
DateFormat.DateSeparator := '-';
JSONData := TJSONObject.ParseJSONValue(orderInfo) as TJSONObject;
if JSONData = nil then
raise Exception.Create('Invalid JSON format'); // If parsing fails, raise an exception
raise Exception.Create('Invalid JSON format');
mode := JSONData.GetValue<string>('mode');
AddToOrdersTable(mode, 'web_plate', JSONData);
if mode = 'ADD' then
begin
ordersDB.UniQuery1.SQL.Text := 'SELECT LAST_INSERT_ID() AS OrderID'; // Use database's method to get the last inserted ID
ordersDB.UniQuery1.SQL.Text := 'SELECT LAST_INSERT_ID() AS OrderID';
ordersDB.UniQuery1.Open;
ORDER_ID := ordersDB.UniQuery1.FieldByName('OrderID').AsInteger;
end;
......@@ -2160,10 +2163,9 @@ begin
for Pair in JSONData do
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
begin
// handles any dates or datetimes
if (Field is TDateTimeField) then
begin
if (Pair.JsonValue.Value = '') or (Pair.JsonValue.Value = 'null') or (Pair.JsonValue.Value = '12/30/1899') then
......@@ -2178,7 +2180,6 @@ begin
ordersDB.UniQuery1.FieldByName('ORDER_ID').AsInteger := ORDER_ID;
// Post the record to the database
ordersDB.UniQuery1.Post;
if ( JSONData.GetValue<string>('staff_fields_proof_date') <> '' ) and ( JSONData.GetValue<string>('staff_fields_proof_date') <> '12/30/1899' ) then
......
......@@ -2,10 +2,10 @@
MemoLogLevel=3
FileLogLevel=5
webClientVersion=0.9.7
LogFileNum=865
LogFileNum=873
[Database]
Server=192.168.159.144
Server=192.168.159.158
--Server=192.168.102.130
--Server=192.168.75.133
Database=kg_order_entry
......
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