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
59c3c0cc
Commit
59c3c0cc
authored
Nov 21, 2025
by
Cam Hayes
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
QB is now disabled from the ini
parent
962f9e80
Show whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
42 additions
and
6 deletions
+42
-6
View.Customers.pas
kgOrdersClient/View.Customers.pas
+4
-1
View.Items.pas
kgOrdersClient/View.Items.pas
+6
-0
View.OrderEntryCorrugated.pas
kgOrdersClient/View.OrderEntryCorrugated.pas
+7
-0
View.OrderEntryCuttingDie.pas
kgOrdersClient/View.OrderEntryCuttingDie.pas
+5
-0
View.OrderEntryWeb.pas
kgOrdersClient/View.OrderEntryWeb.pas
+5
-0
Auth.ServiceImpl.pas
kgOrdersServer/Source/Auth.ServiceImpl.pas
+12
-1
QBServiceImplementation.pas
kgOrdersServer/Source/QBServiceImplementation.pas
+1
-3
kgOrdersServer.ini
kgOrdersServer/bin/kgOrdersServer.ini
+2
-1
No files found.
kgOrdersClient/View.Customers.pas
View file @
59c3c0cc
...
...
@@ -181,7 +181,10 @@ end;
procedure
TFViewCustomers
.
btnAddCustomerClick
(
Sender
:
TObject
);
begin
ShowSelectCustomerForm
();
if
AuthService
.
TokenPayload
.
Properties
[
'qb_enabled'
]
then
ShowSelectCustomerForm
()
else
ShowToast
(
'QB interface not currently active'
,
'info'
);
end
;
procedure
TFViewCustomers
.
edtFilterChange
(
Sender
:
TObject
);
...
...
kgOrdersClient/View.Items.pas
View file @
59c3c0cc
...
...
@@ -444,6 +444,9 @@ var
itemOptions
:
string
;
newform
:
TFViewAddItem
;
begin
console
.
log
(
AuthService
.
TokenPayload
.
Properties
[
'qb_enabled'
]);
if
AuthService
.
TokenPayload
.
Properties
[
'qb_enabled'
]
then
begin
newform
:=
TFViewAddItem
.
CreateNew
;
newform
.
Caption
:=
'Select Item to Add'
;
...
...
@@ -472,6 +475,9 @@ begin
end
;
end
);
end
else
ShowToast
(
'QB interface not currently active'
,
'info'
);
end
;
procedure
TFViewItems
.
btnCancelClick
(
Sender
:
TObject
);
...
...
kgOrdersClient/View.OrderEntryCorrugated.pas
View file @
59c3c0cc
...
...
@@ -389,6 +389,9 @@ procedure TFOrderEntryCorrugated.btnQBClick(Sender: TObject);
var
orderJSON
:
TJSONObject
;
begin
if
AuthService
.
TokenPayload
.
Properties
[
'qb_enabled'
]
then
begin
begin
if
JS
.
toString
(
AuthService
.
TokenPayload
.
Properties
[
'user_qb_id'
])
<>
''
then
begin
if
(
VerifyQBOrder
()
)
then
...
...
@@ -407,6 +410,10 @@ begin
end
else
ShowToast
(
'Failure:User not authorized to add to QuickBooks'
,
'failure'
);
end
end
else
ShowToast
(
'QB interface not currently active'
,
'info'
);
end
;
[
async
]
procedure
TFOrderEntryCorrugated
.
GenerateReportPDF
;
...
...
kgOrdersClient/View.OrderEntryCuttingDie.pas
View file @
59c3c0cc
...
...
@@ -193,6 +193,8 @@ procedure TFOrderEntryCuttingDie.btnQBClick(Sender: TObject);
var
orderJSON
:
TJSONObject
;
begin
if
AuthService
.
TokenPayload
.
Properties
[
'qb_enabled'
]
then
begin
if
JS
.
toString
(
AuthService
.
TokenPayload
.
Properties
[
'user_qb_id'
])
<>
''
then
begin
if
(
VerifyQBOrder
()
)
then
...
...
@@ -211,6 +213,9 @@ begin
end
else
ShowToast
(
'Failure:User not authorized to add to QuickBooks'
,
'failure'
);
end
else
ShowToast
(
'QB interface not currently active'
,
'info'
);
end
;
procedure
TFOrderEntryCuttingDie
.
WebButton2Click
(
Sender
:
TObject
);
...
...
kgOrdersClient/View.OrderEntryWeb.pas
View file @
59c3c0cc
...
...
@@ -454,6 +454,8 @@ procedure TFOrderEntryWeb.btnQBClick(Sender: TObject);
var
orderJSON
:
TJSONObject
;
begin
if
AuthService
.
TokenPayload
.
Properties
[
'qb_enabled'
]
then
begin
if
JS
.
toString
(
AuthService
.
TokenPayload
.
Properties
[
'user_qb_id'
])
<>
''
then
begin
if
(
VerifyQBOrder
()
)
then
...
...
@@ -472,6 +474,9 @@ begin
end
else
ShowToast
(
'Failure:User not authorized to add to QuickBooks'
,
'failure'
);
end
else
ShowToast
(
'QB interface not currently active'
,
'info'
);
end
;
procedure
TFOrderEntryWeb
.
AddEstimate
(
orderID
:
string
);
...
...
kgOrdersServer/Source/Auth.ServiceImpl.pas
View file @
59c3c0cc
...
...
@@ -27,9 +27,9 @@ type
userAccessType
:
string
;
userEmail
:
string
;
userStatus
:
string
;
qbEnabled
:
boolean
;
procedure
AfterConstruction
;
override
;
procedure
BeforeDestruction
;
override
;
property
Query
:
TUniQuery
read
GetQuery
;
function
CheckUser
(
const
user
,
password
:
string
):
Integer
;
public
function
Login
(
const
user
,
password
:
string
):
string
;
...
...
@@ -81,6 +81,7 @@ begin
try
webClientVersion
:=
iniFile
.
ReadString
(
'Settings'
,
'webClientVersion'
,
''
);
Result
.
AddPair
(
'webClientVersion'
,
webClientVersion
);
qbEnabled
:=
iniFile
.
ReadBool
(
'Quickbooks'
,
'Enabled'
,
false
);
if
webClientVersion
=
''
then
begin
...
...
@@ -102,6 +103,7 @@ end;
function
TAuthService
.
Login
(
const
user
,
password
:
string
):
string
;
var
userState
:
Integer
;
iniFile
:
TIniFile
;
JWT
:
TJWT
;
begin
Logger
.
Log
(
3
,
Format
(
'AuthService.Login - User: "%s"'
,
[
User
]));
...
...
@@ -131,6 +133,14 @@ begin
raise
EXDataHttpUnauthorized
.
Create
(
'User not active!'
);
logger
.
Log
(
2
,
'Login Error: User not active!'
);
iniFile
:=
TIniFile
.
Create
(
ChangeFileExt
(
ParamStr
(
0
),
'.ini'
));
try
qbEnabled
:=
iniFile
.
ReadBool
(
'Quickbooks'
,
'Enabled'
,
false
);
finally
iniFile
.
Free
;
end
;
JWT
:=
TJWT
.
Create
;
try
JWT
.
Claims
.
JWTId
:=
LowerCase
(
Copy
(
TUtils
.
GuidToVariant
(
TUtils
.
NewGuid
),
2
,
36
));
...
...
@@ -144,6 +154,7 @@ begin
JWT
.
Claims
.
SetClaimOfType
<
string
>(
'user_email'
,
userEmail
);
JWT
.
Claims
.
SetClaimOfType
<
string
>(
'user_qb_id'
,
userQBID
);
JWT
.
Claims
.
SetClaimOfType
<
string
>(
'user_access_type'
,
userAccessType
);
JWT
.
Claims
.
SetClaimOfType
<
boolean
>(
'qb_enabled'
,
qbEnabled
);
Result
:=
TJOSE
.
SHA256CompactToken
(
serverConfig
.
jwtTokenSecret
,
JWT
);
finally
...
...
kgOrdersServer/Source/QBServiceImplementation.pas
View file @
59c3c0cc
...
...
@@ -98,7 +98,6 @@ var
f
:
TStringList
;
fi
:
string
;
JSObj
:
TJSONObject
;
iniFile
:
TIniFile
;
Encoder
:
TBase64Encoding
;
begin
// 1. Encode credentials (same as working Postman request)
...
...
@@ -129,7 +128,7 @@ begin
SSLIO
.
SSLOptions
.
SSLVersions
:=
[
sslvTLSv1_2
];
IdHTTP
.
IOHandler
:=
SSLIO
;
// Set headers
(EXACT match with Postman)
// Set headers
IdHTTP
.
Request
.
ContentType
:=
'application/x-www-form-urlencoded'
;
IdHTTP
.
Request
.
Accept
:=
'application/json'
;
IdHTTP
.
Request
.
CustomHeaders
.
AddValue
(
'Authorization'
,
'Basic '
+
EncodedAuth
);
...
...
@@ -162,7 +161,6 @@ end;
procedure
TQBService
.
SaveTokens
(
AccessToken
,
RefreshToken
:
string
);
var
f
:
TStringList
;
iniStr
,
line
:
string
;
iniFile
:
TIniFile
;
begin
iniFile
:=
TIniFile
.
Create
(
ExtractFilePath
(
Application
.
ExeName
)
+
'kgOrdersServer.ini'
);
...
...
kgOrdersServer/bin/kgOrdersServer.ini
View file @
59c3c0cc
...
...
@@ -2,7 +2,7 @@
MemoLogLevel
=
4
FileLogLevel
=
4
webClientVersion
=
1.0.0
LogFileNum
=
1
37
LogFileNum
=
1
41
[Database]
--Server
=
192.168.116.138
...
...
@@ -15,6 +15,7 @@ Password=emsys01
--Password
=
emsys!012
[Quickbooks]
Enabled
=
0
CompanyID
=
9341454336461805
ClientID
=
ABYqlDx1EsacZYXvHIJ7RDB7zmnQdwABU3fwQLIZPmBgU0VW1P
ClientSecret
=
PM7OnvQWsgOqjWfDpZAnyRttDN9446Am6d85pDxr
...
...
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