Here's the full stored procedure with URL edited for obfuscation:
USE [DatebaseName]
GO
/****** Object: StoredProcedure [dbo].[spPutVoucherEEExpenseE1] Script Date: 8/2/2023 3:13:38 PM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
alter procedure [dbo].[spPutVoucherEEExpenseE1] @SupplierNumber as varchar(8), @InvoiceNumber as varchar(40), @GrossAmt as varchar(40),
@Account as varchar(8000), @AccountAmt as varchar(8000) , @InvoiceDate as varchar(12), @ResponseText as varchar(8000) OUT as
DECLARE @URL NVARCHAR(MAX) = 'http://e1server:9192/jderest/orchestrator/TA_FA_AP03_ORC_AddVoucher';
DECLARE @Object AS INT;
DECLARE @Body AS VARCHAR(8000) =
'{'
if Len(@SupplierNumber) > 0
begin
SET @Body = @Body + '"Company": "00001", '
SET @Body = @Body + '"Long_Address_Number": "'+@SupplierNumber+'",'
end
if Len(@InvoiceNumber) > 0
begin
SET @Body = @Body + '"Invoice_Number": "'+@InvoiceNumber+'",'
end
if Len(@InvoiceDate) > 0
begin
SET @Body = @Body + '"Invoice_Date": "'+@InvoiceDate+'",'
end
if Len(@InvoiceDate) > 0
begin
SET @Body = @Body + '"G_L_Date": "'+@InvoiceDate+'",'
end
if Len(@GrossAmt) > 0
begin
SET @Body = @Body + '"GridData_1":[{"Gross__Amount": "'+@GrossAmt+'",'
SET @Body = @Body + '"Remark": "Expense Reimbursement" }], '
end
if Len( PATINDEX('%|%', @Account))>0
begin
SET @Body = @Body +'"GridData_GL": ['
end
while PATINDEX('%|%', @Account)>0
begin
SET @Body = @Body +'{
"Account_Number": "'+left(@Account, PATINDEX('%|%', @Account)-1)+'",
"Amount": "'+left(@AccountAmt, PATINDEX('%|%', @AccountAmt)-1)+'"
},
'
Select @Account = right(@Account,Len(@Account)-PATINDEX('%|%', @Account))
Select @AccountAmt = right(@AccountAmt,Len(@AccountAmt)-PATINDEX('%|%', @AccountAmt))
end
SET @Body = Left(@Body,Len(@Body)-4) + '
]}'
select @Body
EXEC sp_OACreate 'MSXML2.XMLHTTP', @Object OUT;
EXEC sp_OAMethod @Object, 'open', NULL, 'post', @URL, 'false'
EXEC sp_OAMethod @Object, 'setRequestHeader', null, 'Content-Type', 'application/json'
EXEC sp_OAMethod @Object, 'setRequestHeader', null, 'Authorization', 'Basic redacted'
EXEC sp_OAMethod @Object, 'setRequestHeader', null, 'environment', 'redacted'
EXEC sp_OAMethod @Object, 'setRequestHeader', null, 'role', '*All'
EXEC sp_OAMethod @Object, 'send', null, @body
EXEC sp_OAMethod @Object, 'responseText', @ResponseText OUTPUT
EXEC sp_OADestroy @Object
GO