Description
Reverse of supplier invoice
Parameters
iiReversedCInvoiceId | input | integer | |
icReverseInvoiceType | input | character | |
iiReversePostingYear | input | integer | |
iiReversePostingPeriod | input | integer | |
itReversePostingDate | input | date | |
icReverseInvoiceJournal | input | character | |
iiReverseInvoiceVoucher | input | integer | |
icAdjustmentJournal | input | character | |
iiAdjustmentVoucher | input | integer | |
icReverseDescription | input | character | |
oiReverseCInvoiceId | output | integer | |
oiReturnStatus | output | integer | Return status of the method. |
Internal usage
QadFitnesse
program code (program3/bcinvoice.p)
/* =================================================================================================== */
/* Method : ReverseCInvoice */
/* Desc : This method does reversing of Supplier invoice */
/* --------------------------------------------------------------------------------------------------- */
/* Params: (I) ReversedCInvoiceId ID of supplier invoice to be reversed */
/* (I) ReverseInvoiceType Invoice type used for reversing of original invoice */
/* (I) ReversePostingYear Posting year of reverse invoice */
/* (I) ReversePostingPeriod Posting period of reverse invoice */
/* (I) ReversePostingDate Posting date of reverse invoice */
/* (I) ReverseInvoiceJournal Posting journal of journal of reverse invoice */
/* (I) ReverseInvoiceVoucher Posting voucher of reverse invoice */
/* (I) AdjustmentJournal Posting journal used for adjustment posting of both invoices */
/* (I) AdjustmentVoucher Posting voucher used for adjustment posting of both invoices */
/* (I) ReverseDescription Description of reverse invoice */
/* (O) ReverseCInvoiceId ID of reverse supplier invoice */
/* =================================================================================================== */
assign oiReturnStatus = -98.
/* Clear previous reverse attempt first */
<M-90 run ClearAllData (output viFcReturnSuper (oiReturnStatus)) in BCInvoice>
if viFcReturnSuper <> 0
then assign oiReturnStatus = viFcReturnSuper.
if viFcReturnSuper < 0
then return.
/* =================================================================================================== */
/* Default output values */
/* =================================================================================================== */
assign oiReverseCInvoiceId = ?.
/* =================================================================================================== */
/* Load original Supplier invoice to be reversed */
/* =================================================================================================== */
if iiReversedCInvoiceId <> ?
then do:
find tCInvoice where
tCInvoice.CInvoice_ID = iiReversedCInvoiceId
no-error.
if not available tCInvoice
then do:
<M-1 run DataLoad
(input ? (icRowids),
input ? (icPkeys),
input string(iireversedCInvoiceId) (icObjectIds),
input ? (icFreeform),
input true (ilKeepPrevious),
output viFcReturnSuper (oiReturnStatus)) in BCInvoice>
find tCInvoice where
tCInvoice.CInvoice_ID = iiReversedCInvoiceId
no-error.
if not available tCInvoice
then assign viFcReturnSuper = -1.
if viFcReturnSuper <> 0
then do:
assign oiReturnStatus = viFcReturnSuper.
if viFcReturnSuper < 0
then do:
assign vcMessage = substitute(#T-2'The system cannot reverse the selected invoice. The system cannot load data for the supplier invoice (&1) to reverse.':255(69109)T-2#,iiReversedCInvoiceId).
<M-3 run SetMessage
(input vcMessage (icMessage),
input '':U (icArguments),
input '':U (icFieldName),
input '':U (icFieldValue),
input 'E':U (icType),
input 3 (iiSeverity),
input '':U (icRowid),
input 'QadFin-7889':U (icFcMsgNumber),
input '':U (icFcExplanation),
input '':U (icFcIdentification),
input '':U (icFcContext),
output viFcReturnSuper (oiReturnStatus)) in BCInvoice>
return.
end. /* if viFcReturnSuper < 0 */
end. /* if viFcReturnSuper <> 0 */
end. /* if not available tCInvoice */
end. /* if iiReversedCInvoiceId <> ? */
/* =================================================================================================== */
/* Validate input parameters */
/* =================================================================================================== */
<M-4 run ReverseCInvoiceValidate
(input-output iiReversedCInvoiceId (biReversedCInvoiceId),
input-output icReverseInvoiceType (bcReverseInvoiceType),
input-output iiReversePostingYear (biReversePostingYear),
input-output iiReversePostingPeriod (biReversePostingPeriod),
input-output itReversePostingDate (btReversePostingDate),
input-output icReverseInvoiceJournal (bcReverseInvoiceJournal),
input-output iiReverseInvoiceVoucher (biReverseInvoiceVoucher),
input-output icAdjustmentJournal (bcAdjustmentJournal),
input-output iiAdjustmentVoucher (biAdjustmentVoucher),
input-output icReverseDescription (bcReverseDescription),
output viFcReturnSuper (oiReturnStatus)) in BCInvoice>
if viFcReturnSuper <> 0 then assign oiReturnStatus = viFcReturnSuper.
if viFcReturnSuper < 0 then return.
/* =================================================================================================== */
/* Create new invoice which will be reversal of original one */
/* =================================================================================================== */
<M-5 run CopyIntoNew
(input iiReversedCInvoiceId (iiOriginalCInvoiceId),
input false (ilClearData),
input icReverseInvoiceJournal (icNewJournal),
input itReversePostingDate (itNewPostingDate),
input iiReversePostingYear (iiNewYear),
input iiReversePostingPeriod (iiNewPeriod),
input iiReverseInvoiceVoucher (iiNewVoucher),
input false (ilRemoveOrigCInvFromInstance),
output vcNewInvRowId (ocNewInvRowId),
output viFcReturnSuper (oiReturnStatus)) in BCInvoice>
if viFcReturnSuper <> 0 then assign oiReturnStatus = viFcReturnSuper.
if viFcReturnSuper < 0 then return.
find bOrigCInvoice where
bOrigCInvoice.CInvoice_ID = iiReversedCInvoiceId
no-error.
find tCInvoice where
tCInvoice.tc_Rowid = vcNewInvRowId
no-error.
if not available bOrigCInvoice or
not available tCInvoice
then do:
assign vcMessage = #T-7'Cannot process the reversing of the supplier invoice.':255(69124)T-7#
vcContext = "iiReversedCInvoiceId=&1|available orig CInvoice=&2|vcNewInvRowId=&3|available new CInvoice=&4":U
vcContext = substitute(vcContext, iiReversedCInvoiceId, available bOrigCInvoice, vcNewInvRowId, available tCInvoice)
vcContext = replace(vcContext, "|":U, chr(2)).
<M-6 run SetMessage
(input vcMessage (icMessage),
input '':U (icArguments),
input '':U (icFieldName),
input '':U (icFieldValue),
input 'S':U (icType),
input 3 (iiSeverity),
input '':U (icRowid),
input 'QadFin-7898':U (icFcMsgNumber),
input '':U (icFcExplanation),
input '':U (icFcIdentification),
input vcContext (icFcContext),
output viFcReturnSuper (oiReturnStatus)) in BCInvoice>
assign oiReturnStatus = -1.
return.
end.
assign oiReverseCInvoiceId = tCInvoice.CInvoice_ID.
/*Reset the value of original invoice to make sure that they were not overwritten during the Reverse */
<Q-10 run CInvoiceByCyIDYearJrnlVchr (all) (Read) (NoCache)
(input ?, (CompanyId)
input iiReversedCInvoiceId, (CInvoiceId)
input ?, (PeriodYear)
input ?, (JournalId)
input ?, (JournalCode)
input ?, (Voucher)
output dataset tqCInvoiceByCyIDYearJrnlVchr) in BCInvoice >
find first tqCInvoiceByCyIDYearJrnlVchr no-error.
assign bOrigCInvoice.tcJournalCode = tqCInvoiceByCyIDYearJrnlVchr.tcJournalCode
bOrigCInvoice.CInvoicePostingYear = tqCInvoiceByCyIDYearJrnlVchr.tiCInvoicePostingYear
bOrigCInvoice.CInvoiceVoucher = tqCInvoiceByCyIDYearJrnlVchr.tiCInvoiceVoucher.
/* Set Value of new invoice */
assign tCInvoice.CInvoiceType = icReverseInvoiceType
tCInvoice.LinkedCInvoice_ID = bOrigCInvoice.CInvoice_ID
tCInvoice.tcLinkedJournalCode = bOrigCInvoice.tcJournalCode
tCInvoice.tiLinkedPeriodYear = bOrigCInvoice.CInvoicePostingYear
tCInvoice.tiLinkedCInvoiceVoucher = bOrigCInvoice.CInvoiceVoucher
tCInvoice.tcCAJournalCode = icAdjustmentJournal
tCInvoice.tiCAVoucher = iiAdjustmentVoucher
tCInvoice.CInvoiceDescription = icReverseDescription
tCInvoice.CInvoiceHoldAmountTC = 0.
assign tCInvoice.tlCInvoiceIsReverseBySign = false.
if (tCInvoice.CInvoiceType = {&INVOICETYPE-INVOICECORRECTION} and
bOrigCInvoice.CInvoiceType = {&INVOICETYPE-INVOICE}) or
(tCInvoice.CInvoiceType = {&INVOICETYPE-CREDITNOTECORRECTION} and
bOrigCInvoice.CInvoiceType = {&INVOICETYPE-CREDITNOTE}) or
(tCInvoice.CInvoiceType = {&INVOICETYPE-INVOICE} and
bOrigCInvoice.CInvoiceType = {&INVOICETYPE-INVOICECORRECTION}) or
(tCInvoice.CInvoiceType = {&INVOICETYPE-CREDITNOTE} and
bOrigCInvoice.CInvoiceType = {&INVOICETYPE-CREDITNOTECORRECTION})
then assign tCInvoice.tlCInvoiceIsReverseBySign = true.
if tCInvoice.tlCInvoiceIsReverseBySign = true
then assign tCInvoice.CInvoiceOriginalDebitTC = - bOrigCInvoice.CInvoiceOriginalDebitTC
tCInvoice.CInvoiceOriginalDebitLC = - bOrigCInvoice.CInvoiceOriginalDebitLC
tCInvoice.CInvoiceOriginalDebitCC = - bOrigCInvoice.CInvoiceOriginalDebitCC
tCInvoice.CInvoiceOriginalCreditTC = - bOrigCInvoice.CInvoiceOriginalCreditTC
tCInvoice.CInvoiceOriginalCreditLC = - bOrigCInvoice.CInvoiceOriginalCreditLC
tCInvoice.CInvoiceOriginalCreditCC = - bOrigCInvoice.CInvoiceOriginalCreditCC
tCInvoice.CInvoiceBalanceDebitTC = - bOrigCInvoice.CInvoiceBalanceDebitTC
tCInvoice.CInvoiceBalanceDebitLC = - bOrigCInvoice.CInvoiceBalanceDebitLC
tCInvoice.CInvoiceBalanceDebitCC = - bOrigCInvoice.CInvoiceBalanceDebitCC
tCInvoice.CInvoiceBalanceCreditTC = - bOrigCInvoice.CInvoiceBalanceCreditTC
tCInvoice.CInvoiceBalanceCreditLC = - bOrigCInvoice.CInvoiceBalanceCreditLC
tCInvoice.CInvoiceBalanceCreditCC = - bOrigCInvoice.CInvoiceBalanceCreditCC
tCInvoice.CInvoiceVatBaseDebitTC = - bOrigCInvoice.CInvoiceVatBaseDebitTC
tCInvoice.CInvoiceVatBaseDebitLC = - bOrigCInvoice.CInvoiceVatBaseDebitLC
tCInvoice.CInvoiceVatBaseDebitCC = - bOrigCInvoice.CInvoiceVatBaseDebitCC
tCInvoice.CInvoiceVatBaseCreditTC = - bOrigCInvoice.CInvoiceVatBaseCreditTC
tCInvoice.CInvoiceVatBaseCreditLC = - bOrigCInvoice.CInvoiceVatBaseCreditLC
tCInvoice.CInvoiceVatBaseCreditCC = - bOrigCInvoice.CInvoiceVatBaseCreditCC
tCInvoice.CInvoiceVatDebitTC = - bOrigCInvoice.CInvoiceVatDebitTC
tCInvoice.CInvoiceVatDebitLC = - bOrigCInvoice.CInvoiceVatDebitLC
tCInvoice.CInvoiceVatDebitCC = - bOrigCInvoice.CInvoiceVatDebitCC
tCInvoice.CInvoiceVatCreditTC = - bOrigCInvoice.CInvoiceVatCreditTC
tCInvoice.CInvoiceVatCreditLC = - bOrigCInvoice.CInvoiceVatCreditLC
tCInvoice.CInvoiceVatCreditCC = - bOrigCInvoice.CInvoiceVatCreditCC
tCInvoice.tdCInvoiceOriginalTC = - tCInvoice.tdCInvoiceOriginalTC
tCInvoice.tdCInvoiceOriginalLC = - tCInvoice.tdCInvoiceOriginalLC
tCInvoice.tdTotalAmountDebitTC = - tCInvoice.tdTotalAmountDebitTC
tCInvoice.tdTotalAmountCreditTC = - tCInvoice.tdTotalAmountCreditTC
tCInvoice.tdCInvoiceVatBaseTC = - tCInvoice.tdCInvoiceVatBaseTC
tCInvoice.tdCInvoiceVatBaseLC = - tCInvoice.tdCInvoiceVatBaseLC
tCInvoice.tdCInvoiceOriginalAmount = - tCInvoice.tdCInvoiceOriginalAmount
tCInvoice.tdCInvoiceOpenAmount = - tCInvoice.tdCInvoiceOpenAmount
tCInvoice.tdCInvoiceOriginalAmountLC = - tCInvoice.tdCInvoiceOriginalAmountLC
tCInvoice.tdCInvoiceOpenAmountLC = - tCInvoice.tdCInvoiceOpenAmountLC
tCInvoice.CInvoiceWHTTotAmtDebitTC = - bOrigCInvoice.CInvoiceWHTTotAmtDebitTC
tCInvoice.CInvoiceWHTTotAmtDebitLC = - bOrigCInvoice.CInvoiceWHTTotAmtDebitLC
tCInvoice.CInvoiceWHTTotAmtDebitCC = - bOrigCInvoice.CInvoiceWHTTotAmtDebitCC
tCInvoice.CInvoiceWHTTotAmtCreditTC = - bOrigCInvoice.CInvoiceWHTTotAmtCreditTC
tCInvoice.CInvoiceWHTTotAmtCreditLC = - bOrigCInvoice.CInvoiceWHTTotAmtCreditLC
tCInvoice.CInvoiceWHTTotAmtCreditCC = - bOrigCInvoice.CInvoiceWHTTotAmtCreditCC
tCInvoice.CInvoiceWHTBaseAmtDebitTC = - bOrigCInvoice.CInvoiceWHTBaseAmtDebitTC
tCInvoice.CInvoiceWHTBaseAmtDebitLC = - bOrigCInvoice.CInvoiceWHTBaseAmtDebitLC
tCInvoice.CInvoiceWHTBaseAmtDebitCC = - bOrigCInvoice.CInvoiceWHTBaseAmtDebitCC
tCInvoice.CInvoiceWHTBaseAmtCreditTC = - bOrigCInvoice.CInvoiceWHTBaseAmtCreditTC
tCInvoice.CInvoiceWHTBaseAmtCreditLC = - bOrigCInvoice.CInvoiceWHTBaseAmtCreditLC
tCInvoice.CInvoiceWHTBaseAmtCreditCC = - bOrigCInvoice.CInvoiceWHTBaseAmtCreditCC.
else assign tCInvoice.CInvoiceOriginalDebitTC = bOrigCInvoice.CInvoiceOriginalCreditTC
tCInvoice.CInvoiceOriginalDebitLC = bOrigCInvoice.CInvoiceOriginalCreditLC
tCInvoice.CInvoiceOriginalDebitCC = bOrigCInvoice.CInvoiceOriginalCreditCC
tCInvoice.CInvoiceOriginalCreditTC = bOrigCInvoice.CInvoiceOriginalDebitTC
tCInvoice.CInvoiceOriginalCreditLC = bOrigCInvoice.CInvoiceOriginalDebitLC
tCInvoice.CInvoiceOriginalCreditCC = bOrigCInvoice.CInvoiceOriginalDebitCC
tCInvoice.CInvoiceBalanceDebitTC = bOrigCInvoice.CInvoiceBalanceCreditTC
tCInvoice.CInvoiceBalanceDebitLC = bOrigCInvoice.CInvoiceBalanceCreditLC
tCInvoice.CInvoiceBalanceDebitCC = bOrigCInvoice.CInvoiceBalanceCreditCC
tCInvoice.CInvoiceBalanceCreditTC = bOrigCInvoice.CInvoiceBalanceDebitTC
tCInvoice.CInvoiceBalanceCreditLC = bOrigCInvoice.CInvoiceBalanceDebitLC
tCInvoice.CInvoiceBalanceCreditCC = bOrigCInvoice.CInvoiceBalanceDebitCC
tCInvoice.CInvoiceVatBaseDebitTC = bOrigCInvoice.CInvoiceVatBaseCreditTC
tCInvoice.CInvoiceVatBaseDebitLC = bOrigCInvoice.CInvoiceVatBaseCreditLC
tCInvoice.CInvoiceVatBaseDebitCC = bOrigCInvoice.CInvoiceVatBaseCreditCC
tCInvoice.CInvoiceVatBaseCreditTC = bOrigCInvoice.CInvoiceVatBaseDebitTC
tCInvoice.CInvoiceVatBaseCreditLC = bOrigCInvoice.CInvoiceVatBaseDebitLC
tCInvoice.CInvoiceVatBaseCreditCC = bOrigCInvoice.CInvoiceVatBaseDebitCC
tCInvoice.CInvoiceVatDebitTC = bOrigCInvoice.CInvoiceVatCreditTC
tCInvoice.CInvoiceVatDebitLC = bOrigCInvoice.CInvoiceVatCreditLC
tCInvoice.CInvoiceVatDebitCC = bOrigCInvoice.CInvoiceVatCreditCC
tCInvoice.CInvoiceVatCreditTC = bOrigCInvoice.CInvoiceVatDebitTC
tCInvoice.CInvoiceVatCreditLC = bOrigCInvoice.CInvoiceVatDebitLC
tCInvoice.CInvoiceVatCreditCC = bOrigCInvoice.CInvoiceVatDebitCC
tCInvoice.CInvoiceWHTTotAmtCreditTC = bOrigCInvoice.CInvoiceWHTTotAmtDebitTC
tCInvoice.CInvoiceWHTTotAmtCreditLC = bOrigCInvoice.CInvoiceWHTTotAmtDebitLC
tCInvoice.CInvoiceWHTTotAmtCreditCC = bOrigCInvoice.CInvoiceWHTTotAmtDebitCC
tCInvoice.CInvoiceWHTTotAmtDebitTC = bOrigCInvoice.CInvoiceWHTTotAmtCreditTC
tCInvoice.CInvoiceWHTTotAmtDebitLC = bOrigCInvoice.CInvoiceWHTTotAmtCreditLC
tCInvoice.CInvoiceWHTTotAmtDebitCC = bOrigCInvoice.CInvoiceWHTTotAmtCreditCC
tCInvoice.CInvoiceWHTBaseAmtCreditTC = bOrigCInvoice.CInvoiceWHTBaseAmtDebitTC
tCInvoice.CInvoiceWHTBaseAmtCreditLC = bOrigCInvoice.CInvoiceWHTBaseAmtDebitLC
tCInvoice.CInvoiceWHTBaseAmtCreditCC = bOrigCInvoice.CInvoiceWHTBaseAmtDebitCC
tCInvoice.CInvoiceWHTBaseAmtDebitTC = bOrigCInvoice.CInvoiceWHTBaseAmtCreditTC
tCInvoice.CInvoiceWHTBaseAmtDebitLC = bOrigCInvoice.CInvoiceWHTBaseAmtCreditLC
tCInvoice.CInvoiceWHTBaseAmtDebitCC = bOrigCInvoice.CInvoiceWHTBaseAmtCreditCC.
assign tCInvoice.CInvoiceBalanceTC = tCInvoice.CInvoiceBalanceDebitTC - tCInvoice.CInvoiceBalanceCreditTC
tCInvoice.CInvoiceBalanceLC = tCInvoice.CInvoiceBalanceDebitLC - tCInvoice.CInvoiceBalanceCreditLC
tCInvoice.CInvoiceBalanceCC = tCInvoice.CInvoiceBalanceDebitCC - tCInvoice.CInvoiceBalanceCreditCC
tCInvoice.CInvoiceIsOpen = true
tCInvoice.CInvoiceClosingDate = ?
tCInvoice.CInvoiceCirecClosingDate = if tCInvoice.CInvoiceAllocationStatus = {&ALLOCSTATUS-NOALLOC}
then 12/31/9999
else bOrigCInvoice.CInvoicePostingDate.
assign tCInvoice.CInvoiceIsLogisticMatching = No.
<Q-73 run APMatchingByCInvoice (all) (Read) (NoCache)
(input ?, (CompanyId)
input iiReversedCInvoiceId, (CInvoiceId)
input ?, (CInvoiceYear)
input ?, (CInvoiceJournalCode)
input ?, (CInvoiceVoucher)
output dataset tqAPMatchingByCInvoice) in BAPMatching>
find first tqAPMatchingByCInvoice where
tqAPMatchingByCInvoice.tiCInvoice_ID = iiReversedCInvoiceId
no-error.
if not available tqAPMatchingByCInvoice
then do:
assign bOrigCInvoice.CInvoiceIsLogisticMatching = No.
end.
/* =================================================================================================== */
/* reverse subtables : CInvoiceVat, CInvoiceBank, CInvoiceStage */
/* =================================================================================================== */
<M-20 run ReverseCInvoiceSubTables
(input tCInvoice.tc_Rowid (icCInvoiceRowId),
input tCInvoice.tlCInvoiceIsReverseBySign (ilReverseBySign),
output viFcReturnSuper (oiReturnStatus)) in BCInvoice>
if viFcReturnSuper <> 0 then assign oiReturnStatus = viFcReturnSuper.
if viFcReturnSuper < 0 then return.
/* =================================================================================================== */
/* Change Supplier control account if needed */
/* =================================================================================================== */
assign vcNewControlGLCode = ?.
if ((bOrigCInvoice.CInvoiceType = {&INVOICETYPE-INVOICE} or
bOrigCInvoice.CInvoiceType = {&INVOICETYPE-INVOICECORRECTION}) and
(tCInvoice.CInvoiceType = {&INVOICETYPE-CREDITNOTE} or
tCInvoice.CInvoiceType = {&INVOICETYPE-CREDITNOTECORRECTION})) or
((bOrigCInvoice.CInvoiceType = {&INVOICETYPE-CREDITNOTE} or
bOrigCInvoice.CInvoiceType = {&INVOICETYPE-CREDITNOTECORRECTION}) and
(tCInvoice.CInvoiceType = {&INVOICETYPE-INVOICE} or
tCInvoice.CInvoiceType = {&INVOICETYPE-INVOICECORRECTION}))
then do:
/* Get correct control G/L account */
<Q-11 run CreditorForCInvoiceDefault (all) (Read) (NoCache)
(input viCompanyId, (CompanyId)
input tCInvoice.tcCreditorCode, (CreditorCode)
input {&ADDRESSTYPECODESYSTEM-HEADOFFICE}, (AddressTypeCode)
output dataset tqCreditorForCInvoiceDefault) in BCreditor >
find first tqCreditorForCInvoiceDefault where
tqCreditorForCInvoiceDefault.tcCreditorCode = tCInvoice.tcCreditorCode and
tqCreditorForCInvoiceDefault.tlCreditorIsActive = true and
tqCreditorForCInvoiceDefault.tcAddressTypeCode = {&ADDRESSTYPECODESYSTEM-HEADOFFICE}
no-error.
if not available tqCreditorForCInvoiceDefault
then do:
assign vcMessage = #T-16'Some data is missing for supplier &1.':255(69587)T-16#
vcMessage = substitute(vcMessage, tCInvoice.tcCreditorCode).
<M-14 run SetMessage
(input vcMessage (icMessage),
input '':U (icArguments),
input '':U (icFieldName),
input '':U (icFieldValue),
input 'E':U (icType),
input 3 (iiSeverity),
input '':U (icRowid),
input 'QadFin-8176':U (icFcMsgNumber),
input '':U (icFcExplanation),
input '':U (icFcIdentification),
input '':U (icFcContext),
output viFcReturnSuper (oiReturnStatus)) in BCInvoice>
assign oiReturnStatus = -1.
return.
end.
assign viControlGLProfileId = if tCInvoice.CInvoiceType = {&INVOICETYPE-INVOICE} or
tCInvoice.CInvoiceType = {&INVOICETYPE-INVOICECORRECTION}
then tqCreditorForCInvoiceDefault.tiInvControlGLProfile_ID
else tqCreditorForCInvoiceDefault.tiCnControlGLProfile_ID.
<Q-13 run ProfileLinkByGL (all) (Read) (NoCache)
(input viControlGLProfileId, (GlProfileId)
input viCompanyId, (CompanyId)
output dataset tqProfileLinkByGL) in BProfile >
find tqProfileLinkByGL where
tqProfileLinkByGL.tiProfile_ID = viControlGlProfileId
no-error.
if not available tqProfileLinkByGL
then do:
assign vcMessage = #T-18'The supplier control account is not defined in the system.':255(69590)T-18#.
<M-17 run SetMessage
(input vcMessage (icMessage),
input '':U (icArguments),
input '':U (icFieldName),
input '':U (icFieldValue),
input 'E':U (icType),
input 3 (iiSeverity),
input '':U (icRowid),
input 'QadFin-8177':U (icFcMsgNumber),
input '':U (icFcExplanation),
input '':U (icFcIdentification),
input '':U (icFcContext),
output viFcReturnSuper (oiReturnStatus)) in BCInvoice>
assign oiReturnStatus = -1.
return.
end.
assign vcNewControlGLCode = tqProfileLinkByGL.tcGLCode.
end.
/* =================================================================================================== */
/* Reverse Posting and Movements or original invoice */
/* =================================================================================================== */
<M-19 run ReverseCInvoicePosting
(input bOrigCInvoice.tc_Rowid (icOrigCInvoiceRowId),
input tCInvoice.tc_Rowid (icNewCInvoiceRowId),
input iiReversePostingYear (iiReverseInvYear),
input iiReversePostingPeriod (iiReverseInvPeriod),
input icReverseInvoiceJournal (icReverseInvJournal),
input iiReverseInvoiceVoucher (iiReverseInvVoucher),
input itReversePostingDate (itReverseInvPostingDate),
input icReverseDescription (icReverseInvDescription),
input tCInvoice.tlCInvoiceIsReverseBySign (ilReverseBySign),
input vcNewControlGLCode (icNewControlGLCode),
input tCInvoice.tcDivisionCode (icDivisionCode),
input tCInvoice.tcCostCentreCode (icCostCentreCode),
input tCInvoice.tcProjectCode (icProjectCode),
output viFcReturnSuper (oiReturnStatus)) in BCInvoice>
if viFcReturnSuper <> 0 then assign oiReturnStatus = viFcReturnSuper.
if viFcReturnSuper < 0 then return.
/* ====================================================================================================================== */
/* Specific actions in case the Invoice is based upon a legal-document: then CInvoiceReference consists of 2 entries */
/* The financials should flag in this case the Legal-Document as being non-posted when the associated Invoice is reversed */
/* ====================================================================================================================== */
<M-64 run ReverseCInvoiceUpdateLegalDocument
(input bOrigCInvoice.CInvoice_ID (iiCInvoice_ID),
output viFcReturnSuper (oiReturnStatus)) in BCInvoice>
if viFcReturnSuper <> 0 then assign oiReturnStatus = viFcReturnSuper.
if viFcReturnSuper < 0 then return.
/* ====== */
/* Return */
/* ====== */
if oiReturnStatus = -98 then assign oiReturnStatus = 0.