project QadFinancials > class BCInvoiceJournalEntry > method ApiStdMaintainTTSub

Description

This method is a submethod of ApiStdMaintainTT.
This method writes the posting id in the tApiCInvoicePostingCIJE records


Parameters


icLstPrimKeyinputcharacterChar4 separated list with the primary keys of the newly created main-table records. The fields of a primkey are separated with Char2.
E.g. 1<Char2>2002<Char2>100<Char4>1<Char2>2002<Char2>101
oiReturnStatusoutputintegerReturn status of the method.


Internal usage


QadFinancials
method BCInvoiceJournalEntry.ApiStdMaintainTTV01


program code (program9/bcinvoicejournalentry.p)

/* =========================================================== */
    /* Write the posting-id in the t_sApiCInvoicePostingCIJE records */
    /* =========================================================== */
    find first t_sApiCInvoiceCIJE no-error.
    if not available t_sApiCInvoiceCIJE
    then return.
    
    assign viMainTableRecordCount = 0.
    for each t_sApiPostingCIJE:
        assign viMainTableRecordCount = viMainTableRecordCount + 1.
        <Q-1 run JournalByJournalIDCodeType (all) (Read) (NoCache)
           (input t_sApiPostingCIJE.Company_ID, (CompanyId)
            input t_sApiPostingCIJE.Journal_ID, (JournalID)
            input t_sApiPostingCIJE.tcJournalCode, (JournalCode)
            input '':U, (JournalTypeCode)
            output dataset tqJournalByJournalIDCodeType) in BJournal >
        find first tqJournalByJournalIDCodeType no-lock no-error.
        if not available tqJournalByJournalIDCodeType
        then return.

        if tqJournalByJournalIDCodeType.tcJournalTypeCode = {&JOURNALTYPE-CIREC}
        then do:
            find t_sApiCinvoicePostingCIJE where
                 t_sApiCInvoicePostingCIJE.CInvoicePostingType = {&INVOICEPOSTINGTYPE-ALLOCATION}
                 no-lock no-error.
            if available t_sApiCInvoicePostingCIJE
            then do :
                assign t_sApiCInvoicePostingCIJE.Posting_ID = integer(entry(viMainTableRecordCount, icLstPrimKey, chr(4))) no-error.
                if error-status:error
                then do :
                    assign oiReturnStatus = -1
                           vcMsgApi       = trim(substitute(#T-8'An invoice/journal entry integration error occurred. The system was unable to find the link between the invoice and the allocation posting (&1).':255(14409)T-8#,trim("CInvoicePostingCIJE":U)))  + chr(10) + 
                                            trim(substitute(#T-13'List of primary keys: &1.':255(14419)T-13#,icLstPrimKey)).
                    if error-status:num-messages > 0
                    then assign vcMsgApi = vcMsgApi + chr(10) + ERROR-STATUS:GET-MESSAGE(1).
                    <M-2 run SetMessage (input  vcMsgApi (icMessage),
                             input  '':U (icArguments),
                             input  '':U (icFieldName),
                             input  '':U (icFieldValue),
                             input  'E':U (icType),
                             input  1 (iiSeverity),
                             input  '':U (icRowid),
                             input  'QADFIN-3315':U (icFcMsgNumber),
                             input  '' (icFcExplanation),
                             input  '' (icFcIdentification),
                             input  '' (icFcContext),
                             output viFcReturnSuper (oiReturnStatus)) in BCInvoiceJournalEntry>
                    Return. 
                end. /* if error-status:error */
            end. /* if available t_sApiCInvoicePostingCIJE */
            else do :
                /* default the cinvoiceposting record for type Allocation */
                create t_sApiCInvoicePostingCIJE.
                assign t_sApiCInvoicePostingCIJE.tc_ParentRowid         = t_sApiCInvoiceCIJE.tc_Rowid
                       t_sApiCInvoicePostingCIJE.tc_Rowid               = "X":U
                       t_sApiCInvoicePostingCIJE.CInvoicePostingType    = {&INVOICEPOSTINGTYPE-ALLOCATION}
                       t_sApiCInvoicePostingCIJE.Posting_ID             = integer(entry(viMainTableRecordCount, icLstPrimKey, chr(4))) no-error.
                if error-status:error
                then do :
                    assign oiReturnStatus = -1
                           vcMsgApi       = trim(substitute(#T-14'Invoice/journal entry integration: unable to find the link between the invoice and the allocation posting (&1).':255(999890658)T-14#,trim("CInvoicePostingCIJE":U)))  + chr(10) + 
                                            trim(substitute(#T-15'List of primary keys: &1.':255(14419)T-15#,icLstPrimKey)).
                    if error-status:num-messages > 0
                    then assign vcMsgApi = vcMsgApi + chr(10) + ERROR-STATUS:GET-MESSAGE(1).       
                    <M-3 run SetMessage (input  vcMsgApi (icMessage),
                             input  '':U (icArguments),
                             input  '':U (icFieldName),
                             input  '':U (icFieldValue),
                             input  'E':U (icType),
                             input  1 (iiSeverity),
                             input  '':U (icRowid),
                             input  'QADFIN-3316':U (icFcMsgNumber),
                             input  '' (icFcExplanation),
                             input  '' (icFcIdentification),
                             input  '' (icFcContext),
                             output viFcReturnSuper (oiReturnStatus)) in BCInvoiceJournalEntry>
                    Return.
                end.
            end. /* if not available t_sApiCInvoicePostingCIJE */
            <M-4 run GetCIRECPostingLineID (input  t_sApiCInvoicePostingCIJE.Posting_ID (iiPostingId), 
                                     output t_sApiCInvoicePostingCIJE.CIRECPostingLine_ID (oiCIRECPostingLineId), 
                                     output viFcReturnSuper (oiReturnStatus)) in BJournalEntry>
            if viFcReturnSuper <> 0
            then do:
                assign oiReturnStatus = viFcReturnSuper.
                if oiReturnStatus < 0
                then Return.
            end. /* if viFcReturnSuper <> 0 */
        end. /* if tqJournalByJournalIDCodeType.tcJournalTypeCode = {&JOURNALTYPE-CIREC} */
        else do:
            find t_sApiCinvoicePostingCIJE where
                 t_sApiCInvoicePostingCIJE.CInvoicePostingType = {&INVOICEPOSTINGTYPE-INITIAL}
                 no-lock no-error.
            if available t_sApiCInvoicePostingCIJE
            then do :
                assign t_sApiCInvoicePostingCIJE.Posting_ID = integer(entry(viMainTableRecordCount, icLstPrimKey, chr(4))) no-error.
                if error-status:error
                then do :
                    assign oiReturnStatus = -1
                           vcMsgApi       = trim(substitute(#T-10'An invoice/journal entry integration error occurred. The system was unable to find the link between the invoice and the initial posting (&1).':255(14413)T-10#,trim("CInvoicePostingCIJE":U))) + chr(10) + 
                                            trim(substitute(#T-12'List of primary keys: &1.':255(14419)T-12#,icLstPrimKey)).
                    if error-status:num-messages > 0
                    then assign vcMsgApi = vcMsgApi + chr(10) + ERROR-STATUS:GET-MESSAGE(1).
                    <M-5 run SetMessage (input  vcMsgApi (icMessage),
                             input  '':U (icArguments),
                             input  '':U (icFieldName),
                             input  '':U (icFieldValue),
                             input  'E':U (icType),
                             input  1 (iiSeverity),
                             input  '':U (icRowid),
                             input  'QADFIN-3317':U (icFcMsgNumber),
                             input  '' (icFcExplanation),
                             input  '' (icFcIdentification),
                             input  '' (icFcContext),
                             output viFcReturnSuper (oiReturnStatus)) in BCInvoiceJournalEntry>
                    Return. 
                end. /* if error-status:error */
            end. /* if available t_sApiCInvoicePostingCIJE */
            else do :
                /* default the cinvoiceposting record for type Allocation */
                create t_sApiCInvoicePostingCIJE.
                assign t_sApiCInvoicePostingCIJE.tc_ParentRowid         = t_sApiCInvoiceCIJE.tc_Rowid
                       t_sApiCInvoicePostingCIJE.tc_Rowid               = "Y":U
                       t_sApiCInvoicePostingCIJE.CInvoicePostingType    = {&INVOICEPOSTINGTYPE-INITIAL}
                       t_sApiCInvoicePostingCIJE.Posting_ID             = integer(entry(viMainTableRecordCount, icLstPrimKey, chr(4))) no-error.
                if error-status:error
                then do :
                    assign oiReturnStatus = -1
                           vcMsgApi       = trim(substitute(#T-18'Invoice/journal entry integration: unable to find the link between the invoice and the initial posting (&1).':255(999890659)T-18#,trim("CInvoicePostingCIJE":U))) + chr(10) + 
                                            trim(substitute(#T-19'List of primary keys: &1.':255(14419)T-19#,icLstPrimKey)).
                    if error-status:num-messages > 0
                    then assign vcMsgApi = vcMsgApi + chr(10) + ERROR-STATUS:GET-MESSAGE(1).
                    <M-6 run SetMessage (input  vcMsgApi (icMessage),
                             input  '':U (icArguments),
                             input  '':U (icFieldName),
                             input  '':U (icFieldValue),
                             input  'E':U (icType),
                             input  1 (iiSeverity),
                             input  '':U (icRowid),
                             input  'QADFIN-3318':U (icFcMsgNumber),
                             input  '' (icFcExplanation),
                             input  '' (icFcIdentification),
                             input  '' (icFcContext),
                             output viFcReturnSuper (oiReturnStatus)) in BCInvoiceJournalEntry>
                    Return.
                end.
            end. /* if not available t_sApiCInvoicePostingCIJE */
            <M-7 run GetCIRECPostingLineID (input  t_sApiCInvoicePostingCIJE.Posting_ID (iiPostingId), 
                                     output t_sApiCInvoicePostingCIJE.CIRECPostingLine_ID (oiCIRECPostingLineId), 
                                     output viFcReturnSuper (oiReturnStatus)) in BJournalEntry>
            if viFcReturnSuper <> 0
            then do:
                assign oiReturnStatus = viFcReturnSuper.
                if oiReturnStatus < 0
                then Return.
            end. /* if viFcReturnSuper */

            for each t_sApiCInvoiceVatCIJE:
                <M-40 run GetPostingVatID
                   (input  t_sApiCInvoiceVatCIJE.tcDomainCode (icDomainCode), 
                    input  t_sApiCInvoiceVatCIJE.TxclTaxCls (icTxclTaxCls), 
                    input  t_sApiCInvoiceVatCIJE.TxenvTaxEnv (icTxenvTaxEnv), 
                    input  t_sApiCInvoiceVatCIJE.TxuTaxUsage (icTxuTaxUsage), 
                    input  t_sApiCInvoiceVatCIJE.tcVatCode (icVatCode), 
                    input  t_sApiCInvoiceVatCIJE.tcVatInOut (icVatInOut), 
                    input  t_sApiCInvoicePostingCIJE.Posting_ID (iiPostingID), 
                    output t_sApiCInvoiceVatCIJE.PostingVat_ID (oiPostingVatID), 
                    output viFcReturnSuper (oiReturnStatus)) in BJournalEntry>

                if viFcReturnSuper <> 0
                then do:
                    assign oiReturnStatus = viFcReturnSuper.
                    if oiReturnStatus < 0
                    then Return.
                end. /* if viFcReturnSuper */
            end. /* for each t_sApiCInvoiceVatCIJE */
        end. /* if tqJournalByJournalIDCodeType.tcJournalTypeCode = {&JOURNALTYPE-CIREC} */
    end. /* for each t_sApiPostingCIJE: */