Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
K
KGOrders
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Cam Hayes
KGOrders
Commits
37788721
Commit
37788721
authored
Jan 30, 2025
by
Mac Stephens
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'origin/mac3'
parents
6417f9f6
7c0f2fe8
Show whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
248 additions
and
125 deletions
+248
-125
View.Orders.dfm
kgOrdersClient/View.Orders.dfm
+14
-12
View.Orders.html
kgOrdersClient/View.Orders.html
+5
-3
View.Orders.pas
kgOrdersClient/View.Orders.pas
+9
-8
View.Search.dfm
kgOrdersClient/View.Search.dfm
+16
-14
Lookup.ServiceImpl.pas
kgOrdersServer/Source/Lookup.ServiceImpl.pas
+201
-56
rOrders.pas
kgOrdersServer/Source/rOrders.pas
+2
-2
uLibrary.pas
kgOrdersServer/Source/uLibrary.pas
+0
-29
kgOrdersServer.ini
kgOrdersServer/kgOrdersServer.ini
+1
-1
No files found.
kgOrdersClient/View.Orders.dfm
View file @
37788721
...
...
@@ -24,18 +24,6 @@ object FViewOrders: TFViewOrders
HeightPercent = 100.000000000000000000
WidthPercent = 100.000000000000000000
end
object lblSearch: TWebLabel
Left = 594
Top = 116
Width = 47
Height = 13
Caption = 'Search = '
ElementID = 'lblsearch'
ElementFont = efCSS
HeightStyle = ssAuto
HeightPercent = 100.000000000000000000
WidthPercent = 100.000000000000000000
end
object btnAddOrder: TWebButton
Left = 59
Top = 79
...
...
@@ -340,6 +328,20 @@ object FViewOrders: TFViewOrders
DisplayText = 'Ship Done'
end>
end
object edtSearch: TWebEdit
Left = 428
Top = 110
Width = 121
Height = 22
ChildOrder = 10
ElementClassName = 'form-control'
ElementID = 'edtsearch'
ElementFont = efCSS
Enabled = False
HeightStyle = ssAuto
HeightPercent = 100.000000000000000000
WidthPercent = 100.000000000000000000
end
object XDataWebClient1: TXDataWebClient
Connection = DMConnection.ApiConnection
Left = 28
...
...
kgOrdersClient/View.Orders.html
View file @
37788721
...
...
@@ -36,11 +36,13 @@
<!-- Entries Label Section d-flex justify-content-between w-100 mt-2-->
<div
class=
"row"
>
<div
class=
"col
text-start
"
>
<div
class=
"col
-auto
"
>
<label
id=
"lblentries"
></label>
</div>
<div
class=
"col text-end"
>
<label
id=
"lblsearch"
></label>
</div>
<div
class=
"row"
>
<div
class=
"col-12"
>
<input
id=
"edtsearch"
type=
"text"
class=
"form-control"
style=
"width: 100%;"
/>
</div>
</div>
...
...
kgOrdersClient/View.Orders.pas
View file @
37788721
...
...
@@ -58,7 +58,7 @@ type
wdbtcOrders
:
TWebDBTableControl
;
wcbPageSize
:
TWebComboBox
;
wlcbOrderBy
:
TWebLookupComboBox
;
lblSearch
:
TWebLabel
;
edtSearch
:
TWebEdit
;
procedure
WebFormCreate
(
Sender
:
TObject
);
procedure
btnAddOrderClick
(
Sender
:
TObject
);
procedure
btnSearchClick
(
Sender
:
TObject
);
...
...
@@ -291,7 +291,7 @@ begin
orderType
:=
newform
.
wcbOrderType
.
Text
;
searchOptions
:=
generateSearchOptions
();
lblSearch
.
Caption
:=
searchOptions
;
edtSearch
.
Text
:=
searchOptions
;
getOrders
(
searchOptions
);
end
;
end
...
...
@@ -646,13 +646,13 @@ searchOptions: string;
begin
searchOptions
:=
'&pagenumber='
+
IntToStr
(
PageNumber
)
+
'&pagesize='
+
IntToStr
(
PageSize
)
+
'&orderby='
+
OrderBy
+
'&orderby='
+
OrderBy
;
//Status 1
'&filterType1='
+
filterType1
;
if
(
(
filterType1
<>
''
)
and
(
filterType1
<>
'NONE'
)
)
then
begin
searchOptions
:=
searchOptions
+
'&filterType1='
+
filterType1
+
'&null1='
+
BoolToStr
(
null1
);
if
(
not
(
null1
))
then
begin
...
...
@@ -664,11 +664,11 @@ begin
// Status2
searchOptions
:=
searchOptions
+
'&filterType2='
+
filterType2
;
if
(
(
filterType2
<>
''
)
and
(
filterType2
<>
'NONE'
)
)
then
begin
searchOptions
:=
searchOptions
+
'&null2='
+
BoolToStr
(
null2
);
searchOptions
:=
searchOptions
+
'&filterType2='
+
filterType2
+
'&null2='
+
BoolToStr
(
null2
);
if
(
not
(
null2
))
then
begin
searchOptions
:=
searchOptions
+
...
...
@@ -677,7 +677,8 @@ begin
end
;
end
;
if
(
(
orderType
<>
''
)
AND
(
orderType
<>
'ANY'
)
)
then
console
.
log
(
orderType
);
if
(
(
orderType
<>
''
)
AND
(
orderType
<>
'Any'
)
)
then
searchOptions
:=
searchOptions
+
'&orderType='
+
orderType
;
if
jobName
<>
''
then
...
...
kgOrdersClient/View.Search.dfm
View file @
37788721
...
...
@@ -40,7 +40,7 @@ object FSearch: TFSearch
WidthPercent = 100.000000000000000000
end
object lblStartDate1: TWebLabel
Left =
200
Left =
404
Top = 442
Width = 56
Height = 14
...
...
@@ -55,7 +55,7 @@ object FSearch: TFSearch
WidthPercent = 100.000000000000000000
end
object lblEndDate1: TWebLabel
Left =
384
Left =
588
Top = 442
Width = 47
Height = 14
...
...
@@ -100,8 +100,8 @@ object FSearch: TFSearch
WidthPercent = 100.000000000000000000
end
object lblStartDate2: TWebLabel
Left =
200
Top = 5
16
Left =
404
Top = 5
20
Width = 56
Height = 14
Caption = 'Start Date:'
...
...
@@ -115,8 +115,8 @@ object FSearch: TFSearch
WidthPercent = 100.000000000000000000
end
object lblEndDate2: TWebLabel
Left =
384
Top = 5
16
Left =
588
Top = 5
20
Width = 47
Height = 14
Caption = 'End Date'
...
...
@@ -277,6 +277,7 @@ object FSearch: TFSearch
ItemIndex = -1
Items.Strings = (
'NONE'
'ORDER DATE'
'PROOF DUE'
'PROOF DONE'
'ART DUE'
...
...
@@ -326,7 +327,7 @@ object FSearch: TFSearch
WidthPercent = 100.000000000000000000
end
object dtpStartDate1: TWebDateTimePicker
Left =
200
Left =
404
Top = 462
Width = 127
Height = 22
...
...
@@ -348,7 +349,7 @@ object FSearch: TFSearch
Text = ''
end
object dtpEndDate1: TWebDateTimePicker
Left =
384
Left =
588
Top = 462
Width = 135
Height = 22
...
...
@@ -370,7 +371,7 @@ object FSearch: TFSearch
Text = ''
end
object cbNull1: TWebCheckBox
Left =
566
Left =
188
Top = 462
Width = 185
Height = 22
...
...
@@ -409,6 +410,7 @@ object FSearch: TFSearch
ItemIndex = -1
Items.Strings = (
'NONE'
'ORDER DATE'
'PROOF DUE'
'PROOF DONE'
'ART DUE'
...
...
@@ -421,8 +423,8 @@ object FSearch: TFSearch
'SHIP DONE')
end
object dtpStartDate2: TWebDateTimePicker
Left =
200
Top = 5
36
Left =
404
Top = 5
40
Width = 127
Height = 22
HeightStyle = ssAuto
...
...
@@ -437,8 +439,8 @@ object FSearch: TFSearch
Text = ''
end
object dtpEndDate2: TWebDateTimePicker
Left =
384
Top = 5
36
Left =
588
Top = 5
40
Width = 135
Height = 22
HeightStyle = ssAuto
...
...
@@ -453,7 +455,7 @@ object FSearch: TFSearch
Text = ''
end
object cbNull2: TWebCheckBox
Left =
566
Left =
188
Top = 536
Width = 185
Height = 22
...
...
kgOrdersServer/Source/Lookup.ServiceImpl.pas
View file @
37788721
...
...
@@ -173,16 +173,11 @@ var
SQL
:
string
;
rptOrders
:
TrptOrders
;
// Local instance of rptOrders
begin
// Create instance of rptOrders
rptOrders
:=
TrptOrders
.
Create
(
nil
);
try
// Generate SQL dynamically using the existing GetOrders logic
SQL
:=
GenerateOrdersSQL
(
searchOptions
).
SQL
;
// Prepare the report dataset
result
:=
rptOrders
.
PrepareReport
(
SQL
);
// Generate the PDF report
//rptOrders.GeneratePDF;
// Optionally, log success
...
...
@@ -217,7 +212,7 @@ begin
if
startDate
<>
''
then
begin
result
:=
result
+
' AND '
+
quotedStr
(
end
Date
)
+
' <= STATUS_DATE'
;
result
:=
result
+
' AND '
+
quotedStr
(
start
Date
)
+
' <= STATUS_DATE'
;
end
;
if
(
(
endDate
<>
'1899/12/30'
)
AND
(
endDate
<>
''
)
)
then
...
...
@@ -268,10 +263,11 @@ end;
function
TLookupService
.
generateStatusWhereSQL
(
status
:
TStatusSearchInfo
):
string
;
begin
result
:=
' AND '
;
if
status
.
filterType
<>
'ORDER_DATE'
then
begin
if
status
.
null
then
begin
result
:=
result
+
'
not exists (select 1 from '
+
status
.
statusTableLong
+
result
:=
result
+
' AND
not exists (select 1 from '
+
status
.
statusTableLong
+
' '
+
status
.
statusTableShort
+
' where '
+
status
.
statusTableShort
+
'.ORDER_ID = o.ORDER_ID '
+
'AND '
+
status
.
statusTableShort
+
'.ORDER_STATUS = '
+
...
...
@@ -279,7 +275,20 @@ begin
generateStatusSelectSQL
(
status
.
altStatusTableShort
,
status
.
altStatusTableLong
,
status
.
startDate
,
status
.
endDate
,
status
.
statusType
);
end
else
result
:=
result
+
generateStatusSelectSQL
(
status
.
statusTableShort
,
status
.
statusTableLong
,
status
.
startDate
,
status
.
endDate
,
status
.
statusType
);
result
:=
result
+
' AND '
+
generateStatusSelectSQL
(
status
.
statusTableShort
,
status
.
statusTableLong
,
status
.
startDate
,
status
.
endDate
,
status
.
statusType
);
end
else
begin
if
status
.
startDate
<>
''
then
begin
result
:=
result
+
' AND '
+
quotedStr
(
status
.
startDate
)
+
' <= o.ORDER_DATE'
;
end
;
if
(
(
status
.
endDate
<>
'1899/12/30'
)
AND
(
status
.
endDate
<>
''
)
)
then
begin
result
:=
result
+
' AND '
+
quotedStr
(
status
.
endDate
)
+
' >= o.ORDER_DATE'
;
end
;
end
;
end
;
function
TLookupService
.
generateOrdersSQL
(
searchOptions
:
string
):
TSQLQuery
;
...
...
@@ -375,24 +384,34 @@ begin
result
.
whereSQL
:=
whereSQL
;
end
;
function
TLookupService
.
g
etColorCount
(
colors
:
string
):
string
;
function
TLookupService
.
G
etColorCount
(
colors
:
string
):
string
;
var
colorObject
:
TJSONObject
;
colorList
:
TJSONArray
;
temp
:
string
;
temp2
:
string
;
begin
if
colors
=
''
then
r
esult
:=
'0'
R
esult
:=
'0'
else
begin
colorObject
:=
TJSONObject
.
ParseJSONValue
(
colors
)
as
TJSONObject
;
colorList
:=
TJSONArray
(
colorObject
.
GetValue
(
'items'
));
//temp := colorList.toString;
result
:=
IntToStr
(
colorList
.
Count
);
try
if
Assigned
(
colorObject
)
then
begin
colorList
:=
colorObject
.
GetValue
<
TJSONArray
>(
'items'
);
if
Assigned
(
colorList
)
then
Result
:=
IntToStr
(
colorList
.
Count
)
else
Result
:=
'0'
;
end
else
Result
:=
'0'
;
finally
colorObject
.
Free
;
end
;
end
;
end
;
function
TLookupService
.
GetOrders
(
searchOptions
:
string
):
TOrderList
;
var
SQL
:
string
;
...
...
@@ -400,69 +419,76 @@ var
Order
:
TOrderItem
;
colors
:
string
;
ColorType
:
string
;
SQLArray
:
TArray
<
string
>;
SQLQuery
:
TSQLQuery
;
begin
SQLQuery
:=
generateOrdersSQL
(
searchOptions
);
TXDataOperationContext
.
Current
.
Handler
.
ManagedObjects
.
Add
(
SQLQuery
);
// Added SQLQuery to ManagedObjects
Result
:=
TOrderList
.
Create
;
try
Result
.
data
:=
TList
<
TOrderItem
>.
Create
;
TXDataOperationContext
.
Current
.
Handler
.
ManagedObjects
.
Add
(
Result
.
data
);
SQL
:=
SQLQuery
.
SQL
;
whereSQL
:=
SQLQuery
.
whereSQL
;
doQuery
(
ordersDB
.
UniQuery1
,
SQL
);
Result
:=
TOrderList
.
Create
;
Result
.
data
:=
TList
<
TOrderItem
>.
Create
;
TXDataOperationContext
.
Current
.
Handler
.
ManagedObjects
.
Add
(
Result
.
data
);
while
not
ordersDB
.
UniQuery1
.
Eof
do
begin
Order
:=
TOrderItem
.
Create
;
TXDataOperationContext
.
Current
.
Handler
.
ManagedObjects
.
Add
(
Order
);
Result
.
data
.
Add
(
Order
);
order
.
ID
:=
ordersDB
.
UniQuery1
.
FieldByName
(
'ORDER_ID'
).
AsString
;
order
.
companyName
:=
ordersDB
.
UniQuery1
.
FieldByName
(
'COMPANY_NAME'
).
AsString
;
order
.
jobName
:=
ordersDB
.
UniQuery1
.
FieldByName
(
'JOB_NAME'
).
AsString
;
order
.
orderDate
:=
ordersDB
.
UniQuery1
.
FieldByName
(
'ORDER_DATE'
).
AsString
;
order
.
proofDue
:=
ordersDB
.
UniQuery1
.
FieldByName
(
'PROOF_DUE'
).
AsString
;
order
.
proofDone
:=
ordersDB
.
UniQuery1
.
FieldByName
(
'PROOF_DONE'
).
AsString
;
order
.
artDue
:=
ordersDB
.
UniQuery1
.
FieldByName
(
'ART_DUE'
).
AsString
;
order
.
artDone
:=
ordersDB
.
UniQuery1
.
FieldByName
(
'ART_DONE'
).
AsString
;
order
.
plateDue
:=
ordersDB
.
UniQuery1
.
FieldByName
(
'PLATE_DUE'
).
AsString
;
order
.
plateDone
:=
ordersDB
.
UniQuery1
.
FieldByName
(
'PLATE_DONE'
).
AsString
;
order
.
mountDue
:=
ordersDB
.
UniQuery1
.
FieldByName
(
'MOUNT_DUE'
).
AsString
;
order
.
mountDone
:=
ordersDB
.
UniQuery1
.
FieldByName
(
'MOUNT_DONE'
).
AsString
;
order
.
shipDue
:=
ordersDB
.
UniQuery1
.
FieldByName
(
'SHIP_DUE'
).
AsString
;
order
.
shipDone
:=
ordersDB
.
UniQuery1
.
FieldByName
(
'SHIP_DONE'
).
AsString
;
order
.
price
:=
ordersDB
.
UniQuery1
.
FieldByName
(
'PRICE'
).
AsString
;
order
.
qbRefNum
:=
ordersDB
.
UniQuery1
.
FieldByName
(
'QB_REF_NUM'
).
AsString
;
order
.
orderType
:=
ordersDB
.
UniQuery1
.
FieldByName
(
'ORDER_TYPE'
).
AsString
.
Replace
(
'_'
,
' '
);
TXDataOperationContext
.
Current
.
Handler
.
ManagedObjects
.
Add
(
Order
);
Result
.
data
.
Add
(
Order
);
Order
.
ID
:=
ordersDB
.
UniQuery1
.
FieldByName
(
'ORDER_ID'
).
AsString
;
Order
.
companyName
:=
ordersDB
.
UniQuery1
.
FieldByName
(
'COMPANY_NAME'
).
AsString
;
Order
.
jobName
:=
ordersDB
.
UniQuery1
.
FieldByName
(
'JOB_NAME'
).
AsString
;
Order
.
orderDate
:=
ordersDB
.
UniQuery1
.
FieldByName
(
'ORDER_DATE'
).
AsString
;
Order
.
proofDue
:=
ordersDB
.
UniQuery1
.
FieldByName
(
'PROOF_DUE'
).
AsString
;
Order
.
proofDone
:=
ordersDB
.
UniQuery1
.
FieldByName
(
'PROOF_DONE'
).
AsString
;
Order
.
artDue
:=
ordersDB
.
UniQuery1
.
FieldByName
(
'ART_DUE'
).
AsString
;
Order
.
artDone
:=
ordersDB
.
UniQuery1
.
FieldByName
(
'ART_DONE'
).
AsString
;
Order
.
plateDue
:=
ordersDB
.
UniQuery1
.
FieldByName
(
'PLATE_DUE'
).
AsString
;
Order
.
plateDone
:=
ordersDB
.
UniQuery1
.
FieldByName
(
'PLATE_DONE'
).
AsString
;
Order
.
mountDue
:=
ordersDB
.
UniQuery1
.
FieldByName
(
'MOUNT_DUE'
).
AsString
;
Order
.
mountDone
:=
ordersDB
.
UniQuery1
.
FieldByName
(
'MOUNT_DONE'
).
AsString
;
Order
.
shipDue
:=
ordersDB
.
UniQuery1
.
FieldByName
(
'SHIP_DUE'
).
AsString
;
Order
.
shipDone
:=
ordersDB
.
UniQuery1
.
FieldByName
(
'SHIP_DONE'
).
AsString
;
Order
.
price
:=
ordersDB
.
UniQuery1
.
FieldByName
(
'PRICE'
).
AsString
;
Order
.
qbRefNum
:=
ordersDB
.
UniQuery1
.
FieldByName
(
'QB_REF_NUM'
).
AsString
;
Order
.
orderType
:=
ordersDB
.
UniQuery1
.
FieldByName
(
'ORDER_TYPE'
).
AsString
.
Replace
(
'_'
,
' '
);
if
ordersDB
.
UniQuery1
.
FieldByName
(
'ORDER_TYPE'
).
AsString
=
'web_plate'
then
begin
c
olorType
:=
'quantity_and_colors_qty_colors'
;
SQL
:=
'Select quantity_and_colors_qty_colors from web_plate_orders where order_id = '
+
o
rder
.
ID
;
C
olorType
:=
'quantity_and_colors_qty_colors'
;
SQL
:=
'Select quantity_and_colors_qty_colors from web_plate_orders where order_id = '
+
O
rder
.
ID
;
end
else
begin
c
olorType
:=
'colors_colors'
;
SQL
:=
'Select colors_colors from corrugated_plate_orders where order_id = '
+
o
rder
.
ID
;
C
olorType
:=
'colors_colors'
;
SQL
:=
'Select colors_colors from corrugated_plate_orders where order_id = '
+
O
rder
.
ID
;
end
;
doQuery
(
ordersDB
.
UniQuery2
,
SQL
);
colors
:=
ordersDB
.
UniQuery2
.
FieldByName
(
ColorType
).
AsString
;
order
.
colors
:=
g
etColorCount
(
colors
);
Order
.
colors
:=
G
etColorCount
(
colors
);
ordersDB
.
UniQuery1
.
Next
;
end
;
ordersDB
.
UniQuery1
.
Close
;
SQL
:=
'SELECT COUNT(*) AS total_count '
+
whereSQL
;
SQL
:=
'SELECT COUNT(*) AS total_count '
+
whereSQL
;
doQuery
(
ordersDB
.
UniQuery1
,
SQL
);
Result
.
count
:=
ordersDB
.
UniQuery1
.
FieldByName
(
'total_count'
).
AsInteger
;
ordersDB
.
UniQuery1
.
Close
;
except
Result
.
Free
;
// Cleaned up memory in case of exceptions
end
;
end
;
function
TLookupService
.
GetOrder
(
orderInfo
:
string
):
TFullOrder
;
var
orderType
:
string
;
...
...
@@ -818,23 +844,140 @@ begin
ordersDB
.
UniQuery1
.
Close
;
end
;
// -- Keeping this here in case you need to revert to it for some reason.
// -- The new version handles the memory issue on the exception.
//function TLookupService.AddCorrugatedOrder(orderInfo: string): TJSONObject;
//var
// JSONData, ResponseData: TJSONObject;
// SQL: string;
// Pair: TJSONPair;
// Field: TField;
// DateFormat: TFormatSettings;
// ORDER_ID: integer;
// mode: string;
//begin
// DateFormat := TFormatSettings.Create;
// DateFormat.ShortDateFormat := 'yyyy-mm-dd';
// DateFormat.DateSeparator := '-';
// JSONData := TJSONObject.ParseJSONValue(orderInfo) as TJSONObject;
// if JSONData = nil then
// raise Exception.Create('Invalid JSON format'); // If parsing fails, raise an exception
// mode := JSONData.GetValue<string>('mode');
// if mode = 'ADD' then
// SQL := 'select * from corrugated_plate_orders where ORDER_ID = 0 and ORDER_ID <> 0'
// else
// begin
// ORDER_ID := JSONData.GetValue<integer>('ORDER_ID');
// SQL := 'select * from corrugated_plate_orders where ORDER_ID = ' + IntToStr(ORDER_ID);
// end;
// doQuery(ordersDB.UniQuery1, SQL);
// try
// if mode = 'ADD' then
// ordersDB.UniQuery1.Insert
// else
// ordersDB.UniQuery1.Edit;
//
// for Pair in JSONData do
// begin
// Field := ordersDB.UniQuery1.FindField(Pair.JsonString.Value); // Checks if the field exists in the dataset
// if Assigned(Field) then
// begin
// // handles any dates or datetimes
// if (Field is TDateTimeField) and (Pair.JsonValue.Value <> '') then
// TDateTimeField(Field).AsDateTime := StrToDate(Pair.JsonValue.Value)
// else if Pair.JsonValue.Value <> '' then
// Field.AsString := Pair.JsonValue.Value;
// end;
// end;
//
// // Post the record to the database
// ordersDB.UniQuery1.Post;
//
// if mode = 'ADD' then
// begin
// SQL := 'select * from orders where ORDER_ID = 0 and ORDER_ID <> 0';
// doQuery(ordersDB.UniQuery1, SQL);
// ordersDB.UniQuery1.Insert;
// end
// else
// begin
// SQL := 'select * from orders where ORDER_ID = ' + IntToStr(ORDER_ID);
// doQuery(ordersDB.UniQuery1, SQL);
// end;
//
// ordersDB.UniQuery1.FieldByName('COMPANY_ID').AsString := JSONData.GetValue<string>('COMPANY_ID');
// ordersDB.UniQuery1.FieldByName('ORDER_TYPE').AsString := 'corrugated_plate';
//
// if mode = 'ADD' then
// ordersDB.UniQuery1.FieldByName('ORDER_DATE').AsDateTime := Now;
//
// if JSONData.GetValue<string>('staff_fields_price') = '' then
// ordersDB.UniQuery1.FieldByName('PRICE').AsString := '0'
// else
// ordersDB.UniQuery1.FieldByName('PRICE').AsString := JSONData.GetValue<string>('staff_fields_price');
//
// ordersDB.UniQuery1.FieldByName('JOB_NAME').AsString := JSONData.GetValue<string>('staff_fields_job_name');
// ordersDB.UniQuery1.FieldByName('USER_ID').AsString := JSONData.GetValue<string>('USER_ID');
// ordersDB.UniQuery1.FieldByName('LOCATION').AsString := JSONData.GetValue<string>('staff_fields_art_location');
//
// ordersDB.UniQuery1.Post;
//
// ordersDB.UniQuery1.Close;
// 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.Open;
// ORDER_ID := ordersDB.UniQuery1.FieldByName('OrderID').AsInteger;
// end;
//
// if JSONData.GetValue<string>('staff_fields_proof_date') <> '' then
// AddStatusSchedule('PROOF', JSONData, ORDER_ID);
// if JSONData.GetValue<string>('staff_fields_ship_date') <> '' then
// AddStatusSchedule('SHIP', JSONData, ORDER_ID);
// if JSONData.GetValue<string>('staff_fields_art_due') <> '' then
// AddStatusSchedule('ART', JSONData, ORDER_ID);
// if JSONData.GetValue<string>('staff_fields_plate_due') <> '' then
// AddStatusSchedule('PLATE', JSONData, ORDER_ID);
// if JSONData.GetValue<string>('staff_fields_mount_due') <> '' then
// AddStatusSchedule('MOUNT', JSONData, ORDER_ID);
//
// Result := TJSONObject.Create.AddPair('status', 'success');
// TXDataOperationContext.Current.Handler.ManagedObjects.Add(Result);
// except
// on E: Exception do
// begin
// Result := TJSONObject.Create.AddPair('error', E.Message);
// end;
// end;
//end;
function
TLookupService
.
AddCorrugatedOrder
(
orderInfo
:
string
):
TJSONObject
;
var
JSONData
,
ResponseData
:
TJSONObject
;
JSONData
:
TJSONObject
;
SQL
:
string
;
Pair
:
TJSONPair
;
Field
:
TField
;
DateFormat
:
TFormatSettings
;
CurrDate
:
TDateTime
;
ORDER_ID
:
integer
;
mode
:
string
;
begin
DateFormat
:=
TFormatSettings
.
Create
;
DateFormat
.
ShortDateFormat
:=
'yyyy-mm-dd'
;
DateFormat
.
DateSeparator
:=
'-'
;
// Initialize Result object and add it to ManagedObjects upfront
Result
:=
TJSONObject
.
Create
;
TXDataOperationContext
.
Current
.
Handler
.
ManagedObjects
.
Add
(
Result
);
JSONData
:=
TJSONObject
.
ParseJSONValue
(
orderInfo
)
as
TJSONObject
;
if
JSONData
=
nil
then
raise
Exception
.
Create
(
'Invalid JSON format'
);
// If parsing fails, raise an exception
begin
Result
.
AddPair
(
'error'
,
'Invalid JSON format'
);
// Populate error in Result
Exit
;
end
;
mode
:=
JSONData
.
GetValue
<
string
>(
'mode'
);
if
mode
=
'ADD'
then
SQL
:=
'select * from corrugated_plate_orders where ORDER_ID = 0 and ORDER_ID <> 0'
...
...
@@ -843,8 +986,10 @@ begin
ORDER_ID
:=
JSONData
.
GetValue
<
integer
>(
'ORDER_ID'
);
SQL
:=
'select * from corrugated_plate_orders where ORDER_ID = '
+
IntToStr
(
ORDER_ID
);
end
;
doQuery
(
ordersDB
.
UniQuery1
,
SQL
);
try
doQuery
(
ordersDB
.
UniQuery1
,
SQL
);
if
mode
=
'ADD'
then
ordersDB
.
UniQuery1
.
Insert
else
...
...
@@ -852,18 +997,16 @@ 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
)
and
(
Pair
.
JsonValue
.
Value
<>
''
)
then
TDateTimeField
(
Field
).
AsDateTime
:=
StrToDate
(
Pair
.
JsonValue
.
Value
)
TDateTimeField
(
Field
).
AsDateTime
:=
StrToDate
(
Pair
.
JsonValue
.
Value
,
DateFormat
)
else
if
Pair
.
JsonValue
.
Value
<>
''
then
Field
.
AsString
:=
Pair
.
JsonValue
.
Value
;
end
;
end
;
// Post the record to the database
ordersDB
.
UniQuery1
.
Post
;
if
mode
=
'ADD'
then
...
...
@@ -896,6 +1039,7 @@ begin
ordersDB
.
UniQuery1
.
Post
;
ordersDB
.
UniQuery1
.
Close
;
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
...
...
@@ -914,16 +1058,17 @@ begin
if
JSONData
.
GetValue
<
string
>(
'staff_fields_mount_due'
)
<>
''
then
AddStatusSchedule
(
'MOUNT'
,
JSONData
,
ORDER_ID
);
Result
:=
TJSONObject
.
Create
.
AddPair
(
'status'
,
'success'
);
TXDataOperationContext
.
Current
.
Handler
.
ManagedObjects
.
Add
(
Result
);
// Updated so an object isn't being created in the exception for memory control
Result
.
AddPair
(
'status'
,
'success'
);
except
on
E
:
Exception
do
begin
Result
:=
TJSONObject
.
Create
.
AddPair
(
'error'
,
E
.
Message
);
Result
.
AddPair
(
'error'
,
E
.
Message
);
end
;
end
;
end
;
function
TLookupService
.
AddStatusSchedule
(
StatusType
:
string
;
order
:
TJSONObject
;
ORDER_ID
:
integer
):
string
;
var
SQL
:
string
;
...
...
kgOrdersServer/Source/rOrders.pas
View file @
37788721
...
...
@@ -133,7 +133,7 @@ begin
colorList
:=
TJSONArray
(
colorObject
.
GetValue
(
'items'
));
result
:=
IntToStr
(
colorList
.
Count
);
finally
colorObject
.
Free
;
// Free TJSONObject to avoid leaks
colorObject
.
Free
;
end
;
end
;
end
;
...
...
@@ -161,7 +161,7 @@ begin
frxOrders
.
Export
(
frxPDFExport1
);
//frxOrders.ShowPreparedReport;
finally
frxOrders
.
Clear
;
// Clear
the report to avoid memory bloat
frxOrders
.
Clear
;
// Clears
the report to avoid memory bloat
end
;
Logger
.
Log
(
5
,
'PDF saved to: '
+
ReportFileName
);
...
...
kgOrdersServer/Source/uLibrary.pas
View file @
37788721
...
...
@@ -7,7 +7,6 @@ uses
procedure
LoadDatabaseSettings
(
uc
:
TUniConnection
;
iniFilename
:
string
);
procedure
DoQuery
(
uq
:
TUniQuery
;
sql
:
string
);
function
CalculateAge
(
const
dob
,
dt
:
TDateTime
):
Integer
;
implementation
...
...
@@ -39,33 +38,5 @@ begin
uq
.
Open
;
end
;
function
CalculateAge
(
const
dob
,
dt
:
TDateTime
):
Integer
;
var
age
:
Integer
;
y1
,
m1
,
d1
,
y2
,
m2
,
d2
:
Word
;
begin
Result
:=
0
;
if
dt
<
dob
then
Exit
;
DecodeDate
(
dob
,
y1
,
m1
,
d1
);
DecodeDate
(
dt
,
y2
,
m2
,
d2
);
age
:=
y2
-
y1
;
// Feb 29
//if ( (m1=2) and (d1=29) ) and ( not IsLeapYear(y2) ) then
// d1 := 28;
if
(
m1
=
2
)
and
(
d1
=
29
)
and
(
not
(
IsLeapYear
(
y2
)))
then
begin
m1
:=
3
;
d1
:=
1
;
end
;
if
(
m2
<
m1
)
or
((
m2
=
m1
)
and
(
d2
<
d1
))
then
Dec
(
age
);
Result
:=
age
end
;
end
.
kgOrdersServer/kgOrdersServer.ini
View file @
37788721
[Settings]
MemoLogLevel
=
4
FileLogLevel
=
5
LogFileNum
=
63
LogFileNum
=
90
webClientVersion
=
1.0.0
[Database]
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment