Parameters
icAPMatchingTcRowid | input | character | APMatchingTcRowid |
iiMatchingYear | input | integer | |
iiMatchingPeriod | input | integer | |
icMatchingJournal | input | character | |
itMatchingDate | input | date | |
icCInvoiceReference | input | character | |
oiPostingId | output | integer | |
ocPostingTcRowid | output | character | tc_rowid of the new tposting record |
biPostingVoucher | input-output | integer | |
oiJournalEntryInstanceId | output | integer | |
oiReturnStatus | output | integer | Return status of the method. |
Internal usage
unused
program code (program7/bapmatching.p)
/* Exception handling */
assign oiReturnStatus = -98
viLocalReturnStatus = 0.
/* Start BJournalEntry */
if viBJournalEntryAPMID = 0 or
viBJournalEntryAPMID = ?
then do:
<I-1 {bFcStartAndOpenInstance
&ADD-TO-TRANSACTION = "true"
&CLASS = "BJournalEntry"}>
assign vlBJournalEntryStart = true.
end. /* if viBJournalEntryAPMID = 0 or */
else do:
<I-2 {bFcOpenInstance
&CLASS = "BJournalEntry"}>
end. /* Not if viBJournalEntryAPMID = 0 or */
/* Start Block */
CREATEAPMPOSTINGBLOCK: DO :
/* Find the tAPMatching record to get the business-relation-code and some other data of the invoice */
Find tAPMatching where
tAPMatching.tc_Rowid = icAPMatchingTcRowid and
tAPMatching.tc_Status <> "D":U
no-lock no-error.
if not available tAPMatching
then do :
assign vcMessage = trim(substitute(#T-9'The system cannot find the matching based upon its row ID (&1)':255(999890413)T-9#,icAPMatchingTcRowid))
viLocalReturnStatus = -3.
<M-8 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-9684':U (icFcMsgNumber),
input '':U (icFcExplanation),
input '':U (icFcIdentification),
input '':U (icFcContext),
output viFcReturnSuper (oiReturnStatus)) in BAPMatching>
Leave CREATEAPMPOSTINGBLOCK.
end. /* if not available tAPMatching */
if tAPMatching.CInvoice_ID = 0 or
tAPMatching.CInvoice_ID = ?
then do :
assign vcMessage = trim(substitute(#T-11'Unable to create a posting for the matching with row ID (&1) as the invoice is not yet stated on the matching.':255(733775591)T-11#,icAPMatchingTcRowid))
viLocalReturnStatus = -3.
<M-10 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-9685':U (icFcMsgNumber),
input '':U (icFcExplanation),
input '':U (icFcIdentification),
input '':U (icFcContext),
output viFcReturnSuper (oiReturnStatus)) in BAPMatching>
Leave CREATEAPMPOSTINGBLOCK.
end. /* if tAPMatching.CInvoice_ID = 0 or */
/* Retrieve the further information of the invoice by reading it from the db */
/* We can use tAPMatching.CInvoice_ID for reading it from db as that is already */
/* filled by method DefaultValuesInvoice when the invoice-information was entered */
<Q-12 run CInvoiceByMatchingInfo (all) (Read) (NoCache)
(input ?, (CompanyId)
input tAPMatching.CInvoice_ID, (CInvoiceID)
output dataset tqCInvoiceByMatchingInfo) in BCInvoice >
find first tqCInvoiceByMatchingInfo where
tqCInvoiceByMatchingInfo.tiCInvoice_ID = tAPMatching.CInvoice_ID
no-error.
if not available tqCInvoiceByMatchingInfo
then do:
assign vcMsgAPMatching = trim(substitute(#T-14'Internal error: Cannot find the supplier invoice based on its ID (&1).':252(56460)T-14#,string(tAPMatching.CInvoice_ID)))
viLocalReturnStatus = -3.
<M-13 run SetMessage
(input vcMsgAPMatching (icMessage),
input '':U (icArguments),
input 'tAPMatching.CInvoice_ID':U (icFieldName),
input string(tAPMatching.CInvoice_ID) (icFieldValue),
input 'E':U (icType),
input 3 (iiSeverity),
input '':U (icRowid),
input 'QadFin-9686':U (icFcMsgNumber),
input '':U (icFcExplanation),
input '':U (icFcIdentification),
input '':U (icFcContext),
output viFcReturnSuper (oiReturnStatus)) in BAPMatching>
Leave CREATEAPMPOSTINGBLOCK.
end. /* if not available tqCInvoiceByMatchingInfo */
/* Fill PostingText and ExternalInvoiceReference for the new matching posting */
assign vcPostingText = trim(#T-7'AP Matching':20(49266)T-7#) + ": ":U +
string(iiMatchingYear, "9999":U) + "/":U +
string(iiMatchingPeriod, "99":U) + "/":U +
icMatchingJournal
vcPostingInvoiceReferenceText = string(tqCInvoiceByMatchingInfo.tiCInvoicePostingYear, "9999":U) + "/":U +
string(tqCInvoiceByMatchingInfo.tiCInvoicePostingPeriod ,"99":U) + " ":U +
tqCInvoiceByMatchingInfo.tcJournalCode + " ":U +
string(tqCInvoiceByMatchingInfo.tiCInvoiceVoucher, "999999999":U) + " ":U +
trim(tqCInvoiceByMatchingInfo.tcCInvoiceReference).
/* Create the posting header */
<M-3 run AddPostingHeader
(input ? (iiCompanyId),
input iiMatchingYear (iiPeriodYear),
input iiMatchingPeriod (iiPeriodPeriod),
input icMatchingJournal (icJournalCode),
input '' (icReportingJournalCode),
input biPostingVoucher (iiVoucher),
input itMatchingDate (itPostingDate),
input ? (itValueDate),
input vcPostingText (icPostingText),
input tAPMatching.tcBusinessRelationCode (icPostingBusinessRelationText),
input vcPostingInvoiceReferenceText (icPostingInvoiceReferenceText),
input {&POSTINGPARENTTEXT-APMATCHING} (icPostingParentText),
input ? (iiBPeriodId),
input tAPMatching.tcCreditorCode (icPostingOriginAddressCode),
input tAPMatching.tcCreditorCode (icPostingOriginDocument),
input ? (icPostingOriginDocumentType),
input '':U (icBatchNumber),
input ? (icBankImpLineRef),
output oiPostingId (oiPostingId),
output ocPostingTcRowid (ocRowid),
output biPostingVoucher (oiPostingVoucher),
output viLocalReturnStatus (oiReturnStatus)) in BJournalEntry>
if viFcReturnSuper <> 0
then assign viLocalReturnStatus = viFcReturnSuper.
if viFcReturnSuper < 0
then Leave CREATEAPMPOSTINGBLOCK.
END. /* CREATEAPMPOSTINGBLOCK */
/* Close BJournalEntry and return its instance-ID to the caller */
<I-6 {bFcCloseInstance
&CLASS = "BJournalEntry"}>
assign oiJournalEntryInstanceId = viBJournalEntryAPMID.
/* Exception handling */
assign oiReturnStatus = viLocalReturnStatus.