project QadFinancials > class BAPMatching > method CreateMatchingPosting


Parameters


icAPMatchingTcRowidinputcharacterAPMatchingTcRowid
iiMatchingYearinputinteger
iiMatchingPeriodinputinteger
icMatchingJournalinputcharacter
itMatchingDateinputdate
icCInvoiceReferenceinputcharacter
oiPostingIdoutputinteger
ocPostingTcRowidoutputcharactertc_rowid of the new tposting record
biPostingVoucherinput-outputinteger
oiJournalEntryInstanceIdoutputinteger
oiReturnStatusoutputintegerReturn 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.