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
...
@@ -24,18 +24,6 @@ object FViewOrders: TFViewOrders
HeightPercent = 100.000000000000000000
HeightPercent = 100.000000000000000000
WidthPercent = 100.000000000000000000
WidthPercent = 100.000000000000000000
end
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
object btnAddOrder: TWebButton
Left = 59
Left = 59
Top = 79
Top = 79
...
@@ -340,6 +328,20 @@ object FViewOrders: TFViewOrders
...
@@ -340,6 +328,20 @@ object FViewOrders: TFViewOrders
DisplayText = 'Ship Done'
DisplayText = 'Ship Done'
end>
end>
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
object XDataWebClient1: TXDataWebClient
Connection = DMConnection.ApiConnection
Connection = DMConnection.ApiConnection
Left = 28
Left = 28
...
...
kgOrdersClient/View.Orders.html
View file @
37788721
...
@@ -36,11 +36,13 @@
...
@@ -36,11 +36,13 @@
<!-- Entries Label Section d-flex justify-content-between w-100 mt-2-->
<!-- Entries Label Section d-flex justify-content-between w-100 mt-2-->
<div
class=
"row"
>
<div
class=
"row"
>
<div
class=
"col
text-start
"
>
<div
class=
"col
-auto
"
>
<label
id=
"lblentries"
></label>
<label
id=
"lblentries"
></label>
</div>
</div>
<div
class=
"col text-end"
>
</div>
<label
id=
"lblsearch"
></label>
<div
class=
"row"
>
<div
class=
"col-12"
>
<input
id=
"edtsearch"
type=
"text"
class=
"form-control"
style=
"width: 100%;"
/>
</div>
</div>
</div>
</div>
...
...
kgOrdersClient/View.Orders.pas
View file @
37788721
...
@@ -58,7 +58,7 @@ type
...
@@ -58,7 +58,7 @@ type
wdbtcOrders
:
TWebDBTableControl
;
wdbtcOrders
:
TWebDBTableControl
;
wcbPageSize
:
TWebComboBox
;
wcbPageSize
:
TWebComboBox
;
wlcbOrderBy
:
TWebLookupComboBox
;
wlcbOrderBy
:
TWebLookupComboBox
;
lblSearch
:
TWebLabel
;
edtSearch
:
TWebEdit
;
procedure
WebFormCreate
(
Sender
:
TObject
);
procedure
WebFormCreate
(
Sender
:
TObject
);
procedure
btnAddOrderClick
(
Sender
:
TObject
);
procedure
btnAddOrderClick
(
Sender
:
TObject
);
procedure
btnSearchClick
(
Sender
:
TObject
);
procedure
btnSearchClick
(
Sender
:
TObject
);
...
@@ -291,7 +291,7 @@ begin
...
@@ -291,7 +291,7 @@ begin
orderType
:=
newform
.
wcbOrderType
.
Text
;
orderType
:=
newform
.
wcbOrderType
.
Text
;
searchOptions
:=
generateSearchOptions
();
searchOptions
:=
generateSearchOptions
();
lblSearch
.
Caption
:=
searchOptions
;
edtSearch
.
Text
:=
searchOptions
;
getOrders
(
searchOptions
);
getOrders
(
searchOptions
);
end
;
end
;
end
end
...
@@ -646,13 +646,13 @@ searchOptions: string;
...
@@ -646,13 +646,13 @@ searchOptions: string;
begin
begin
searchOptions
:=
'&pagenumber='
+
IntToStr
(
PageNumber
)
+
searchOptions
:=
'&pagenumber='
+
IntToStr
(
PageNumber
)
+
'&pagesize='
+
IntToStr
(
PageSize
)
+
'&pagesize='
+
IntToStr
(
PageSize
)
+
'&orderby='
+
OrderBy
+
'&orderby='
+
OrderBy
;
//Status 1
//Status 1
'&filterType1='
+
filterType1
;
if
(
(
filterType1
<>
''
)
and
(
filterType1
<>
'NONE'
)
)
then
if
(
(
filterType1
<>
''
)
and
(
filterType1
<>
'NONE'
)
)
then
begin
begin
searchOptions
:=
searchOptions
+
searchOptions
:=
searchOptions
+
'&filterType1='
+
filterType1
+
'&null1='
+
BoolToStr
(
null1
);
'&null1='
+
BoolToStr
(
null1
);
if
(
not
(
null1
))
then
if
(
not
(
null1
))
then
begin
begin
...
@@ -664,11 +664,11 @@ begin
...
@@ -664,11 +664,11 @@ begin
// Status2
// Status2
searchOptions
:=
searchOptions
+
'&filterType2='
+
filterType2
;
if
(
(
filterType2
<>
''
)
and
(
filterType2
<>
'NONE'
)
)
then
if
(
(
filterType2
<>
''
)
and
(
filterType2
<>
'NONE'
)
)
then
begin
begin
searchOptions
:=
searchOptions
+
'&null2='
+
BoolToStr
(
null2
);
searchOptions
:=
searchOptions
+
'&filterType2='
+
filterType2
+
'&null2='
+
BoolToStr
(
null2
);
if
(
not
(
null2
))
then
if
(
not
(
null2
))
then
begin
begin
searchOptions
:=
searchOptions
+
searchOptions
:=
searchOptions
+
...
@@ -677,7 +677,8 @@ begin
...
@@ -677,7 +677,8 @@ begin
end
;
end
;
end
;
end
;
if
(
(
orderType
<>
''
)
AND
(
orderType
<>
'ANY'
)
)
then
console
.
log
(
orderType
);
if
(
(
orderType
<>
''
)
AND
(
orderType
<>
'Any'
)
)
then
searchOptions
:=
searchOptions
+
'&orderType='
+
orderType
;
searchOptions
:=
searchOptions
+
'&orderType='
+
orderType
;
if
jobName
<>
''
then
if
jobName
<>
''
then
...
...
kgOrdersClient/View.Search.dfm
View file @
37788721
...
@@ -40,7 +40,7 @@ object FSearch: TFSearch
...
@@ -40,7 +40,7 @@ object FSearch: TFSearch
WidthPercent = 100.000000000000000000
WidthPercent = 100.000000000000000000
end
end
object lblStartDate1: TWebLabel
object lblStartDate1: TWebLabel
Left =
200
Left =
404
Top = 442
Top = 442
Width = 56
Width = 56
Height = 14
Height = 14
...
@@ -55,7 +55,7 @@ object FSearch: TFSearch
...
@@ -55,7 +55,7 @@ object FSearch: TFSearch
WidthPercent = 100.000000000000000000
WidthPercent = 100.000000000000000000
end
end
object lblEndDate1: TWebLabel
object lblEndDate1: TWebLabel
Left =
384
Left =
588
Top = 442
Top = 442
Width = 47
Width = 47
Height = 14
Height = 14
...
@@ -100,8 +100,8 @@ object FSearch: TFSearch
...
@@ -100,8 +100,8 @@ object FSearch: TFSearch
WidthPercent = 100.000000000000000000
WidthPercent = 100.000000000000000000
end
end
object lblStartDate2: TWebLabel
object lblStartDate2: TWebLabel
Left =
200
Left =
404
Top = 5
16
Top = 5
20
Width = 56
Width = 56
Height = 14
Height = 14
Caption = 'Start Date:'
Caption = 'Start Date:'
...
@@ -115,8 +115,8 @@ object FSearch: TFSearch
...
@@ -115,8 +115,8 @@ object FSearch: TFSearch
WidthPercent = 100.000000000000000000
WidthPercent = 100.000000000000000000
end
end
object lblEndDate2: TWebLabel
object lblEndDate2: TWebLabel
Left =
384
Left =
588
Top = 5
16
Top = 5
20
Width = 47
Width = 47
Height = 14
Height = 14
Caption = 'End Date'
Caption = 'End Date'
...
@@ -277,6 +277,7 @@ object FSearch: TFSearch
...
@@ -277,6 +277,7 @@ object FSearch: TFSearch
ItemIndex = -1
ItemIndex = -1
Items.Strings = (
Items.Strings = (
'NONE'
'NONE'
'ORDER DATE'
'PROOF DUE'
'PROOF DUE'
'PROOF DONE'
'PROOF DONE'
'ART DUE'
'ART DUE'
...
@@ -326,7 +327,7 @@ object FSearch: TFSearch
...
@@ -326,7 +327,7 @@ object FSearch: TFSearch
WidthPercent = 100.000000000000000000
WidthPercent = 100.000000000000000000
end
end
object dtpStartDate1: TWebDateTimePicker
object dtpStartDate1: TWebDateTimePicker
Left =
200
Left =
404
Top = 462
Top = 462
Width = 127
Width = 127
Height = 22
Height = 22
...
@@ -348,7 +349,7 @@ object FSearch: TFSearch
...
@@ -348,7 +349,7 @@ object FSearch: TFSearch
Text = ''
Text = ''
end
end
object dtpEndDate1: TWebDateTimePicker
object dtpEndDate1: TWebDateTimePicker
Left =
384
Left =
588
Top = 462
Top = 462
Width = 135
Width = 135
Height = 22
Height = 22
...
@@ -370,7 +371,7 @@ object FSearch: TFSearch
...
@@ -370,7 +371,7 @@ object FSearch: TFSearch
Text = ''
Text = ''
end
end
object cbNull1: TWebCheckBox
object cbNull1: TWebCheckBox
Left =
566
Left =
188
Top = 462
Top = 462
Width = 185
Width = 185
Height = 22
Height = 22
...
@@ -409,6 +410,7 @@ object FSearch: TFSearch
...
@@ -409,6 +410,7 @@ object FSearch: TFSearch
ItemIndex = -1
ItemIndex = -1
Items.Strings = (
Items.Strings = (
'NONE'
'NONE'
'ORDER DATE'
'PROOF DUE'
'PROOF DUE'
'PROOF DONE'
'PROOF DONE'
'ART DUE'
'ART DUE'
...
@@ -421,8 +423,8 @@ object FSearch: TFSearch
...
@@ -421,8 +423,8 @@ object FSearch: TFSearch
'SHIP DONE')
'SHIP DONE')
end
end
object dtpStartDate2: TWebDateTimePicker
object dtpStartDate2: TWebDateTimePicker
Left =
200
Left =
404
Top = 5
36
Top = 5
40
Width = 127
Width = 127
Height = 22
Height = 22
HeightStyle = ssAuto
HeightStyle = ssAuto
...
@@ -437,8 +439,8 @@ object FSearch: TFSearch
...
@@ -437,8 +439,8 @@ object FSearch: TFSearch
Text = ''
Text = ''
end
end
object dtpEndDate2: TWebDateTimePicker
object dtpEndDate2: TWebDateTimePicker
Left =
384
Left =
588
Top = 5
36
Top = 5
40
Width = 135
Width = 135
Height = 22
Height = 22
HeightStyle = ssAuto
HeightStyle = ssAuto
...
@@ -453,7 +455,7 @@ object FSearch: TFSearch
...
@@ -453,7 +455,7 @@ object FSearch: TFSearch
Text = ''
Text = ''
end
end
object cbNull2: TWebCheckBox
object cbNull2: TWebCheckBox
Left =
566
Left =
188
Top = 536
Top = 536
Width = 185
Width = 185
Height = 22
Height = 22
...
...
kgOrdersServer/Source/Lookup.ServiceImpl.pas
View file @
37788721
...
@@ -173,16 +173,11 @@ var
...
@@ -173,16 +173,11 @@ var
SQL
:
string
;
SQL
:
string
;
rptOrders
:
TrptOrders
;
// Local instance of rptOrders
rptOrders
:
TrptOrders
;
// Local instance of rptOrders
begin
begin
// Create instance of rptOrders
rptOrders
:=
TrptOrders
.
Create
(
nil
);
rptOrders
:=
TrptOrders
.
Create
(
nil
);
try
try
// Generate SQL dynamically using the existing GetOrders logic
SQL
:=
GenerateOrdersSQL
(
searchOptions
).
SQL
;
SQL
:=
GenerateOrdersSQL
(
searchOptions
).
SQL
;
// Prepare the report dataset
result
:=
rptOrders
.
PrepareReport
(
SQL
);
result
:=
rptOrders
.
PrepareReport
(
SQL
);
// Generate the PDF report
//rptOrders.GeneratePDF;
//rptOrders.GeneratePDF;
// Optionally, log success
// Optionally, log success
...
@@ -217,7 +212,7 @@ begin
...
@@ -217,7 +212,7 @@ begin
if
startDate
<>
''
then
if
startDate
<>
''
then
begin
begin
result
:=
result
+
' AND '
+
quotedStr
(
end
Date
)
+
' <= STATUS_DATE'
;
result
:=
result
+
' AND '
+
quotedStr
(
start
Date
)
+
' <= STATUS_DATE'
;
end
;
end
;
if
(
(
endDate
<>
'1899/12/30'
)
AND
(
endDate
<>
''
)
)
then
if
(
(
endDate
<>
'1899/12/30'
)
AND
(
endDate
<>
''
)
)
then
...
@@ -268,10 +263,11 @@ end;
...
@@ -268,10 +263,11 @@ end;
function
TLookupService
.
generateStatusWhereSQL
(
status
:
TStatusSearchInfo
):
string
;
function
TLookupService
.
generateStatusWhereSQL
(
status
:
TStatusSearchInfo
):
string
;
begin
begin
result
:=
' AND '
;
if
status
.
filterType
<>
'ORDER_DATE'
then
begin
if
status
.
null
then
if
status
.
null
then
begin
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
+
' where '
+
status
.
statusTableShort
+
'.ORDER_ID = o.ORDER_ID '
+
+
status
.
statusTableShort
+
'.ORDER_ID = o.ORDER_ID '
+
'AND '
+
status
.
statusTableShort
+
'.ORDER_STATUS = '
+
'AND '
+
status
.
statusTableShort
+
'.ORDER_STATUS = '
+
...
@@ -279,7 +275,20 @@ begin
...
@@ -279,7 +275,20 @@ begin
generateStatusSelectSQL
(
status
.
altStatusTableShort
,
status
.
altStatusTableLong
,
status
.
startDate
,
status
.
endDate
,
status
.
statusType
);
generateStatusSelectSQL
(
status
.
altStatusTableShort
,
status
.
altStatusTableLong
,
status
.
startDate
,
status
.
endDate
,
status
.
statusType
);
end
end
else
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
;
end
;
function
TLookupService
.
generateOrdersSQL
(
searchOptions
:
string
):
TSQLQuery
;
function
TLookupService
.
generateOrdersSQL
(
searchOptions
:
string
):
TSQLQuery
;
...
@@ -375,24 +384,34 @@ begin
...
@@ -375,24 +384,34 @@ begin
result
.
whereSQL
:=
whereSQL
;
result
.
whereSQL
:=
whereSQL
;
end
;
end
;
function
TLookupService
.
g
etColorCount
(
colors
:
string
):
string
;
function
TLookupService
.
G
etColorCount
(
colors
:
string
):
string
;
var
var
colorObject
:
TJSONObject
;
colorObject
:
TJSONObject
;
colorList
:
TJSONArray
;
colorList
:
TJSONArray
;
temp
:
string
;
temp2
:
string
;
begin
begin
if
colors
=
''
then
if
colors
=
''
then
r
esult
:=
'0'
R
esult
:=
'0'
else
else
begin
begin
colorObject
:=
TJSONObject
.
ParseJSONValue
(
colors
)
as
TJSONObject
;
colorObject
:=
TJSONObject
.
ParseJSONValue
(
colors
)
as
TJSONObject
;
colorList
:=
TJSONArray
(
colorObject
.
GetValue
(
'items'
));
try
//temp := colorList.toString;
if
Assigned
(
colorObject
)
then
result
:=
IntToStr
(
colorList
.
Count
);
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
;
end
;
end
;
function
TLookupService
.
GetOrders
(
searchOptions
:
string
):
TOrderList
;
function
TLookupService
.
GetOrders
(
searchOptions
:
string
):
TOrderList
;
var
var
SQL
:
string
;
SQL
:
string
;
...
@@ -400,69 +419,76 @@ var
...
@@ -400,69 +419,76 @@ var
Order
:
TOrderItem
;
Order
:
TOrderItem
;
colors
:
string
;
colors
:
string
;
ColorType
:
string
;
ColorType
:
string
;
SQLArray
:
TArray
<
string
>;
SQLQuery
:
TSQLQuery
;
SQLQuery
:
TSQLQuery
;
begin
begin
SQLQuery
:=
generateOrdersSQL
(
searchOptions
);
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
;
SQL
:=
SQLQuery
.
SQL
;
whereSQL
:=
SQLQuery
.
whereSQL
;
whereSQL
:=
SQLQuery
.
whereSQL
;
doQuery
(
ordersDB
.
UniQuery1
,
SQL
);
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
while
not
ordersDB
.
UniQuery1
.
Eof
do
begin
begin
Order
:=
TOrderItem
.
Create
;
Order
:=
TOrderItem
.
Create
;
TXDataOperationContext
.
Current
.
Handler
.
ManagedObjects
.
Add
(
Order
);
TXDataOperationContext
.
Current
.
Handler
.
ManagedObjects
.
Add
(
Order
);
Result
.
data
.
Add
(
Order
);
Result
.
data
.
Add
(
Order
);
order
.
ID
:=
ordersDB
.
UniQuery1
.
FieldByName
(
'ORDER_ID'
).
AsString
;
order
.
companyName
:=
ordersDB
.
UniQuery1
.
FieldByName
(
'COMPANY_NAME'
).
AsString
;
Order
.
ID
:=
ordersDB
.
UniQuery1
.
FieldByName
(
'ORDER_ID'
).
AsString
;
order
.
jobName
:=
ordersDB
.
UniQuery1
.
FieldByName
(
'JOB_NAME'
).
AsString
;
Order
.
companyName
:=
ordersDB
.
UniQuery1
.
FieldByName
(
'COMPANY_NAME'
).
AsString
;
order
.
orderDate
:=
ordersDB
.
UniQuery1
.
FieldByName
(
'ORDER_DATE'
).
AsString
;
Order
.
jobName
:=
ordersDB
.
UniQuery1
.
FieldByName
(
'JOB_NAME'
).
AsString
;
order
.
proofDue
:=
ordersDB
.
UniQuery1
.
FieldByName
(
'PROOF_DUE'
).
AsString
;
Order
.
orderDate
:=
ordersDB
.
UniQuery1
.
FieldByName
(
'ORDER_DATE'
).
AsString
;
order
.
proofDone
:=
ordersDB
.
UniQuery1
.
FieldByName
(
'PROOF_DONE'
).
AsString
;
Order
.
proofDue
:=
ordersDB
.
UniQuery1
.
FieldByName
(
'PROOF_DUE'
).
AsString
;
order
.
artDue
:=
ordersDB
.
UniQuery1
.
FieldByName
(
'ART_DUE'
).
AsString
;
Order
.
proofDone
:=
ordersDB
.
UniQuery1
.
FieldByName
(
'PROOF_DONE'
).
AsString
;
order
.
artDone
:=
ordersDB
.
UniQuery1
.
FieldByName
(
'ART_DONE'
).
AsString
;
Order
.
artDue
:=
ordersDB
.
UniQuery1
.
FieldByName
(
'ART_DUE'
).
AsString
;
order
.
plateDue
:=
ordersDB
.
UniQuery1
.
FieldByName
(
'PLATE_DUE'
).
AsString
;
Order
.
artDone
:=
ordersDB
.
UniQuery1
.
FieldByName
(
'ART_DONE'
).
AsString
;
order
.
plateDone
:=
ordersDB
.
UniQuery1
.
FieldByName
(
'PLATE_DONE'
).
AsString
;
Order
.
plateDue
:=
ordersDB
.
UniQuery1
.
FieldByName
(
'PLATE_DUE'
).
AsString
;
order
.
mountDue
:=
ordersDB
.
UniQuery1
.
FieldByName
(
'MOUNT_DUE'
).
AsString
;
Order
.
plateDone
:=
ordersDB
.
UniQuery1
.
FieldByName
(
'PLATE_DONE'
).
AsString
;
order
.
mountDone
:=
ordersDB
.
UniQuery1
.
FieldByName
(
'MOUNT_DONE'
).
AsString
;
Order
.
mountDue
:=
ordersDB
.
UniQuery1
.
FieldByName
(
'MOUNT_DUE'
).
AsString
;
order
.
shipDue
:=
ordersDB
.
UniQuery1
.
FieldByName
(
'SHIP_DUE'
).
AsString
;
Order
.
mountDone
:=
ordersDB
.
UniQuery1
.
FieldByName
(
'MOUNT_DONE'
).
AsString
;
order
.
shipDone
:=
ordersDB
.
UniQuery1
.
FieldByName
(
'SHIP_DONE'
).
AsString
;
Order
.
shipDue
:=
ordersDB
.
UniQuery1
.
FieldByName
(
'SHIP_DUE'
).
AsString
;
order
.
price
:=
ordersDB
.
UniQuery1
.
FieldByName
(
'PRICE'
).
AsString
;
Order
.
shipDone
:=
ordersDB
.
UniQuery1
.
FieldByName
(
'SHIP_DONE'
).
AsString
;
order
.
qbRefNum
:=
ordersDB
.
UniQuery1
.
FieldByName
(
'QB_REF_NUM'
).
AsString
;
Order
.
price
:=
ordersDB
.
UniQuery1
.
FieldByName
(
'PRICE'
).
AsString
;
order
.
orderType
:=
ordersDB
.
UniQuery1
.
FieldByName
(
'ORDER_TYPE'
).
AsString
.
Replace
(
'_'
,
' '
);
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
if
ordersDB
.
UniQuery1
.
FieldByName
(
'ORDER_TYPE'
).
AsString
=
'web_plate'
then
begin
begin
c
olorType
:=
'quantity_and_colors_qty_colors'
;
C
olorType
:=
'quantity_and_colors_qty_colors'
;
SQL
:=
'Select quantity_and_colors_qty_colors from web_plate_orders where order_id = '
+
o
rder
.
ID
;
SQL
:=
'Select quantity_and_colors_qty_colors from web_plate_orders where order_id = '
+
O
rder
.
ID
;
end
end
else
else
begin
begin
c
olorType
:=
'colors_colors'
;
C
olorType
:=
'colors_colors'
;
SQL
:=
'Select colors_colors from corrugated_plate_orders where order_id = '
+
o
rder
.
ID
;
SQL
:=
'Select colors_colors from corrugated_plate_orders where order_id = '
+
O
rder
.
ID
;
end
;
end
;
doQuery
(
ordersDB
.
UniQuery2
,
SQL
);
doQuery
(
ordersDB
.
UniQuery2
,
SQL
);
colors
:=
ordersDB
.
UniQuery2
.
FieldByName
(
ColorType
).
AsString
;
colors
:=
ordersDB
.
UniQuery2
.
FieldByName
(
ColorType
).
AsString
;
order
.
colors
:=
g
etColorCount
(
colors
);
Order
.
colors
:=
G
etColorCount
(
colors
);
ordersDB
.
UniQuery1
.
Next
;
ordersDB
.
UniQuery1
.
Next
;
end
;
end
;
ordersDB
.
UniQuery1
.
Close
;
ordersDB
.
UniQuery1
.
Close
;
SQL
:=
'SELECT COUNT(*) AS total_count '
+
whereSQL
;
SQL
:=
'SELECT COUNT(*) AS total_count '
+
whereSQL
;
doQuery
(
ordersDB
.
UniQuery1
,
SQL
);
doQuery
(
ordersDB
.
UniQuery1
,
SQL
);
Result
.
count
:=
ordersDB
.
UniQuery1
.
FieldByName
(
'total_count'
).
AsInteger
;
Result
.
count
:=
ordersDB
.
UniQuery1
.
FieldByName
(
'total_count'
).
AsInteger
;
ordersDB
.
UniQuery1
.
Close
;
ordersDB
.
UniQuery1
.
Close
;
except
Result
.
Free
;
// Cleaned up memory in case of exceptions
end
;
end
;
end
;
function
TLookupService
.
GetOrder
(
orderInfo
:
string
):
TFullOrder
;
function
TLookupService
.
GetOrder
(
orderInfo
:
string
):
TFullOrder
;
var
var
orderType
:
string
;
orderType
:
string
;
...
@@ -818,23 +844,140 @@ begin
...
@@ -818,23 +844,140 @@ begin
ordersDB
.
UniQuery1
.
Close
;
ordersDB
.
UniQuery1
.
Close
;
end
;
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
;
function
TLookupService
.
AddCorrugatedOrder
(
orderInfo
:
string
):
TJSONObject
;
var
var
JSONData
,
ResponseData
:
TJSONObject
;
JSONData
:
TJSONObject
;
SQL
:
string
;
SQL
:
string
;
Pair
:
TJSONPair
;
Pair
:
TJSONPair
;
Field
:
TField
;
Field
:
TField
;
DateFormat
:
TFormatSettings
;
DateFormat
:
TFormatSettings
;
CurrDate
:
TDateTime
;
ORDER_ID
:
integer
;
ORDER_ID
:
integer
;
mode
:
string
;
mode
:
string
;
begin
begin
DateFormat
:=
TFormatSettings
.
Create
;
DateFormat
:=
TFormatSettings
.
Create
;
DateFormat
.
ShortDateFormat
:=
'yyyy-mm-dd'
;
DateFormat
.
ShortDateFormat
:=
'yyyy-mm-dd'
;
DateFormat
.
DateSeparator
:=
'-'
;
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
;
JSONData
:=
TJSONObject
.
ParseJSONValue
(
orderInfo
)
as
TJSONObject
;
if
JSONData
=
nil
then
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'
);
mode
:=
JSONData
.
GetValue
<
string
>(
'mode'
);
if
mode
=
'ADD'
then
if
mode
=
'ADD'
then
SQL
:=
'select * from corrugated_plate_orders where ORDER_ID = 0 and ORDER_ID <> 0'
SQL
:=
'select * from corrugated_plate_orders where ORDER_ID = 0 and ORDER_ID <> 0'
...
@@ -843,8 +986,10 @@ begin
...
@@ -843,8 +986,10 @@ begin
ORDER_ID
:=
JSONData
.
GetValue
<
integer
>(
'ORDER_ID'
);
ORDER_ID
:=
JSONData
.
GetValue
<
integer
>(
'ORDER_ID'
);
SQL
:=
'select * from corrugated_plate_orders where ORDER_ID = '
+
IntToStr
(
ORDER_ID
);
SQL
:=
'select * from corrugated_plate_orders where ORDER_ID = '
+
IntToStr
(
ORDER_ID
);
end
;
end
;
doQuery
(
ordersDB
.
UniQuery1
,
SQL
);
try
try
doQuery
(
ordersDB
.
UniQuery1
,
SQL
);
if
mode
=
'ADD'
then
if
mode
=
'ADD'
then
ordersDB
.
UniQuery1
.
Insert
ordersDB
.
UniQuery1
.
Insert
else
else
...
@@ -852,18 +997,16 @@ begin
...
@@ -852,18 +997,16 @@ begin
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
:=
StrToDate
(
Pair
.
JsonValue
.
Value
)
TDateTimeField
(
Field
).
AsDateTime
:=
StrToDate
(
Pair
.
JsonValue
.
Value
,
DateFormat
)
else
if
Pair
.
JsonValue
.
Value
<>
''
then
else
if
Pair
.
JsonValue
.
Value
<>
''
then
Field
.
AsString
:=
Pair
.
JsonValue
.
Value
;
Field
.
AsString
:=
Pair
.
JsonValue
.
Value
;
end
;
end
;
end
;
end
;
// Post the record to the database
ordersDB
.
UniQuery1
.
Post
;
ordersDB
.
UniQuery1
.
Post
;
if
mode
=
'ADD'
then
if
mode
=
'ADD'
then
...
@@ -896,6 +1039,7 @@ begin
...
@@ -896,6 +1039,7 @@ begin
ordersDB
.
UniQuery1
.
Post
;
ordersDB
.
UniQuery1
.
Post
;
ordersDB
.
UniQuery1
.
Close
;
ordersDB
.
UniQuery1
.
Close
;
if
mode
=
'ADD'
then
if
mode
=
'ADD'
then
begin
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'
;
// Use database's method to get the last inserted ID
...
@@ -914,16 +1058,17 @@ begin
...
@@ -914,16 +1058,17 @@ begin
if
JSONData
.
GetValue
<
string
>(
'staff_fields_mount_due'
)
<>
''
then
if
JSONData
.
GetValue
<
string
>(
'staff_fields_mount_due'
)
<>
''
then
AddStatusSchedule
(
'MOUNT'
,
JSONData
,
ORDER_ID
);
AddStatusSchedule
(
'MOUNT'
,
JSONData
,
ORDER_ID
);
Result
:=
TJSONObject
.
Create
.
AddPair
(
'status'
,
'success'
);
// Updated so an object isn't being created in the exception for memory control
TXDataOperationContext
.
Current
.
Handler
.
ManagedObjects
.
Add
(
Result
);
Result
.
AddPair
(
'status'
,
'success'
);
except
except
on
E
:
Exception
do
on
E
:
Exception
do
begin
begin
Result
:=
TJSONObject
.
Create
.
AddPair
(
'error'
,
E
.
Message
);
Result
.
AddPair
(
'error'
,
E
.
Message
);
end
;
end
;
end
;
end
;
end
;
end
;
function
TLookupService
.
AddStatusSchedule
(
StatusType
:
string
;
order
:
TJSONObject
;
ORDER_ID
:
integer
):
string
;
function
TLookupService
.
AddStatusSchedule
(
StatusType
:
string
;
order
:
TJSONObject
;
ORDER_ID
:
integer
):
string
;
var
var
SQL
:
string
;
SQL
:
string
;
...
...
kgOrdersServer/Source/rOrders.pas
View file @
37788721
...
@@ -133,7 +133,7 @@ begin
...
@@ -133,7 +133,7 @@ begin
colorList
:=
TJSONArray
(
colorObject
.
GetValue
(
'items'
));
colorList
:=
TJSONArray
(
colorObject
.
GetValue
(
'items'
));
result
:=
IntToStr
(
colorList
.
Count
);
result
:=
IntToStr
(
colorList
.
Count
);
finally
finally
colorObject
.
Free
;
// Free TJSONObject to avoid leaks
colorObject
.
Free
;
end
;
end
;
end
;
end
;
end
;
end
;
...
@@ -161,7 +161,7 @@ begin
...
@@ -161,7 +161,7 @@ begin
frxOrders
.
Export
(
frxPDFExport1
);
frxOrders
.
Export
(
frxPDFExport1
);
//frxOrders.ShowPreparedReport;
//frxOrders.ShowPreparedReport;
finally
finally
frxOrders
.
Clear
;
// Clear
the report to avoid memory bloat
frxOrders
.
Clear
;
// Clears
the report to avoid memory bloat
end
;
end
;
Logger
.
Log
(
5
,
'PDF saved to: '
+
ReportFileName
);
Logger
.
Log
(
5
,
'PDF saved to: '
+
ReportFileName
);
...
...
kgOrdersServer/Source/uLibrary.pas
View file @
37788721
...
@@ -7,7 +7,6 @@ uses
...
@@ -7,7 +7,6 @@ uses
procedure
LoadDatabaseSettings
(
uc
:
TUniConnection
;
iniFilename
:
string
);
procedure
LoadDatabaseSettings
(
uc
:
TUniConnection
;
iniFilename
:
string
);
procedure
DoQuery
(
uq
:
TUniQuery
;
sql
:
string
);
procedure
DoQuery
(
uq
:
TUniQuery
;
sql
:
string
);
function
CalculateAge
(
const
dob
,
dt
:
TDateTime
):
Integer
;
implementation
implementation
...
@@ -39,33 +38,5 @@ begin
...
@@ -39,33 +38,5 @@ begin
uq
.
Open
;
uq
.
Open
;
end
;
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
.
end
.
kgOrdersServer/kgOrdersServer.ini
View file @
37788721
[Settings]
[Settings]
MemoLogLevel
=
4
MemoLogLevel
=
4
FileLogLevel
=
5
FileLogLevel
=
5
LogFileNum
=
63
LogFileNum
=
90
webClientVersion
=
1.0.0
webClientVersion
=
1.0.0
[Database]
[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