
[dbo].[GenerateAccountingBatches_XLedger]
CREATE PROCEDURE [dbo].[GenerateAccountingBatches_XLedger]
@inBatchDescription nvarchar(64),
@inBatProcessAcctTransctionsMap BATProcessAcctTransactions readonly,
@inSubmittedBySysUserId int,
@outErrorCode int output,
@outXLedgerJournalEntryBatchId int output
as
begin
set nocount on
set @outErrorCode = 0
;with SubmittedBySysUser as
(
select
SysUserId = @inSubmittedBySysUserId
)
insert into XLedgerJournalEntryBatch
(
[Description],
SubmittedBySysUserFid,
CreatedOn
)
select
[Description] = @inBatchDescription,
SubmittedBySysUserFid = SysUser.SysUserId,
CreatedOn = sysdatetimeoffset()
from SubmittedBySysUser
left outer join SysUser on SysUser.SysUserId = SubmittedBySysUser.SysUserId
set @outXLedgerJournalEntryBatchId = scope_identity()
insert into XLedgerJournalEntryBatchItem
(
XLedgerJournalEntryBatchFid,
AcctTransactionFid,
XglFid,
NominalXLedgerCompanyXLedgerDbId,
OpposingXLedgerCompanyXLedgerDbId,
NominalBranchObjectValueXLedgerDbId,
OpposingBranchObjectValueXLedgerDbId,
NominalAccountingAccountFid,
OpposingAccountingAccountFid,
XLedgerCustomerXLedgerDbId,
XLedgerSupplierXLedgerDbId
)
select
XLedgerJournalEntryBatchFid = @outXLedgerJournalEntryBatchId,
AcctTransactionFid = BATProcessAcctTransactionMap.AcctTransactionsID,
XglFid = BATProcess.XglFid,
NominalXLedgerCompanyXLedgerDbId = NominalXLedgerCompany.XLedgerDbId,
OpposingXLedgerCompanyXLedgerDbId = OpposingXLedgerCompany.XLedgerDbId,
NominalBranchObjectValueXLedgerDbId = NominalXLedgerBranchObjectValue.XLedgerDbId,
OpposingBranchObjectValueXLedgerDbId = OpposingXLedgerBranchObjectValue.XLedgerDbId,
NominalAccountingAccountFid = BATProcess.NominalAccountingAccountFid,
OpposingAccountingAccountFid = BATProcess.OpposingAccountingAccountFid,
XLedgerCustomerXLedgerDbId = XLedgerCustomer.ExternalDbId,
XLedgerSupplierXLedgerDbId = XLedgerSupplier.ExternalDbId
from @inBatProcessAcctTransctionsMap as BATProcessAcctTransactionMap
inner join BATProcess on BATProcess.BATProcessPriKey = BATProcessAcctTransactionMap.BATProcessID
inner join XLedgerBranchObjectValue as NominalXLedgerBranchObjectValue on
NominalXLedgerBranchObjectValue.BranchFid = BATProcess.NominalBranchFid
inner join XLedgerCompany as NominalXLedgerCompany on
NominalXLedgerCompany.XLedgerCompanyId = NominalXLedgerBranchObjectValue.XLedgerCompanyFid
inner join XLedgerBranchObjectValue as OpposingXLedgerBranchObjectValue on
OpposingXLedgerBranchObjectValue.BranchFid = BATProcess.OpposingBranchFid
inner join XLedgerCompany as OpposingXLedgerCompany on
OpposingXLedgerCompany.XLedgerCompanyId = OpposingXLedgerBranchObjectValue.XLedgerCompanyFid
left outer join XLedgerCustomer on XLedgerCustomer.AccountingCustomerFid = BATProcess.AccountingCustomerFid
left outer join XLedgerSupplier on XLedgerSupplier.AccountingVendorFid = BATProcess.AccountingVendorFid
insert into XLedgerJournalEntryBatchQueue
(
XLedgerJournalEntryBatchFid
)
select
XLedgerJournalEntryBatchFid = @outXLedgerJournalEntryBatchId
insert into MssWebEvent( MssWebEventTypeFid )
select MssWebEventType.MssWebEventTypeId
from MssWebEventType
where MssWebEventType.EventTypeName = 'XLedgerTransactionUploadRequested'
end
GO
GRANT EXECUTE ON [dbo].[GenerateAccountingBatches_XLedger] TO [MssExec]
GO