project QadFinancials > class BPosting > method AdditionalUpdatesCreateQPostingLineN

Description

Create record in the temporary table for the History daemon - for new posting lines


Parameters


oiReturnStatusoutputintegerReturn status of the method.


Internal usage


QadFinancials
method BPosting.AdditionalUpdatesPostFallBack
method BPosting.AdditionalUpdatesPreCreateTempTables


program code (program5/bposting.p)

    /* =============================================================== */
    /* Create tApiQPostingLine records based on the tPostingLines      */
    /* =============================================================== */
    create tApiQPostingLine.
    assign viApiQPostingLineID                         = viApiQPostingLineID + 1
           tApiQPostingLine.QPostingLine_ID            = viApiQPostingLineID
           tApiQPostingLine.Company_ID                 = tPosting.Company_ID
           tApiQPostingLine.Period_ID                  = tPosting.Period_ID
           tApiQPostingLine.GL_ID                      = tPostingLine.GL_ID
           tApiQPostingLine.Division_ID                = tPostingLine.Division_ID
           tApiQPostingLine.CostCentre_ID              = tPostingLine.CostCentre_ID
           tApiQPostingLine.Project_ID                 = tPostingLine.Project_ID
           tApiQPostingLine.Journal_ID                 = tPosting.Journal_ID
           tApiQPostingLine.Currency_ID                = tPostingLine.Currency_ID
           tApiQPostingLine.IntercoBusinessRelation_ID = tPostingLine.IntercoBusinessRelation_ID
           tApiQPostingLine.QPostingLineDebitLC        = tPostingLine.PostingLineDebitLC
           tApiQPostingLine.QPostingLineCreditLC       = tPostingLine.PostingLineCreditLC
           tApiQPostingLine.QPostingLineDebitTC        = tPostingLine.PostingLineDebitTC
           tApiQPostingLine.QPostingLineCreditTC       = tPostingLine.PostingLineCreditTC
           tApiQPostingLine.QPostingLineDebitCC        = tPostingLine.PostingLineDebitCC
           tApiQPostingLine.QPostingLineCreditCC       = tPostingLine.PostingLineCreditCC
           tApiQPostingLine.QPostingLineQTY            = tPostingLine.PostingLineQTY
           tApiQPostingLine.QPostingLineInfo           = string(tPosting.PostingYear) + "/":U + string(tPosting.PostingPeriod) + "/":U + tPosting.tcJournalCode + "/":U + string(tPosting.PostingVoucher)
           tApiQPostingLine.PeriodYearPeriod           = (tPosting.PostingYear * 100) + tPosting.PostingPeriod
           tApiQPostingLine.Layer_ID                   = tPosting.tiLayer_ID
           tApiQPostingLine.JournalTypeCode            = tPosting.tcJournalTypeCode
           tApiQPostingLine.tc_Rowid                   = string(viApiQPostingLineID)
           tApiQPostingLine.tc_ParentRowid             = "":U
           tApiQPostingLine.tc_Status                  = "N":U
           tApiQPostingLine.QPostingDate               = tPostingLine.PostingDate.
    
    /* ======================================================================================================= */
    /* Fill in missing fields in temp-table tApiQPostingLine: this cannot be done later on in the processing   */
    /* of the QPostingLine records as in most cases these records will be created already in BPosting:PostSave */
    /* ======================================================================================================= */
    if tApiQPostingLine.Period_ID <> 0 and 
       tApiQPostingLine.Period_ID <> ? and 
       (tApiQPostingLine.PeriodYearPeriod = 0 or 
        tApiQPostingLine.PeriodYearPeriod = ?)
    then do :
        <Q-35 run PeriodPrim (all) (Read) (Cache)
           (input ?, (CompanyId)
            input tApiQPostingLine.Period_ID, (PeriodId)
            input ?, (PeriodYear)
            input ?, (PeriodPeriod)
            output dataset tqPeriodPrim) in BPeriod>
        find tqPeriodPrim where
             tqPeriodPrim.tiPeriod_ID  = tApiQPostingLine.Period_ID
             no-lock no-error.
        if available tqPeriodPrim
        then assign tApiQPostingLine.PeriodYearPeriod = (tqPeriodPrim.tiPeriodYear * 100) + tqPeriodPrim.tiPeriodPeriod.
    end. /* if tApiQPostingLine.Period_ID <> 0 and */
    if tApiQPostingLine.Journal_ID <> 0 and 
       tApiQPostingLine.Journal_ID <> ? and 
       (tApiQPostingLine.Layer_ID        = 0     or 
        tApiQPostingLine.Layer_ID        = ?     or           
        tApiQPostingLine.JournalTypeCode = "":U  or
        tApiQPostingLine.JournalTypeCode = ?)
    then do :
        <Q-30 run JournalByJournalLayerType (all) (Read) (Cache)
           (input tApiQPostingLine.Journal_ID, (JournalId)
            input ?, (JournalCode)
            input ?, (CompanyId)
            input ?, (LayerTypeCode)
            output dataset tqJournalByJournalLayerType) in BJournal>
        find tqJournalByJournalLayerType where
             tqJournalByJournalLayerType.tiJournal_ID = tApiQPostingLine.Journal_ID
             no-error.
        if available tqJournalByJournalLayerType
        then assign tApiQPostingLine.JournalTypeCode = tqJournalByJournalLayerType.tcJournalTypeCode
                    tApiQPostingLine.Layer_ID        = tqJournalByJournalLayerType.tiLayer_ID.
    end. /* if tApiQPostingLine.Journal_ID <> 0 and */
    
    /* =============================================================== */
    /* Create tApiQPostingSaf records for the tApiQPostingLine records */
    /* =============================================================== */
    for each tPostingSaf where
             tPostingSaf.tc_ParentRowid = tPostingLine.tc_Rowid and
             tPostingSaf.tc_Status     <> "D":U:
        create tApiQPostingSaf.
        assign viApiQPostingSafID                       = viApiQPostingSafID + 1
               tApiQPostingSaf.QPostingSaf_ID           = viApiQPostingSafID
               tApiQPostingSaf.QPostingLine_ID          = viApiQPostingLineID
               tApiQPostingSaf.Saf_ID                   = tPostingSaf.Saf_ID
               tApiQPostingSaf.QPostingSafParentType    = tPostingSaf.PostingSafParentType
               tApiQPostingSaf.QPostingSafInputSequence = tPostingSaf.PostingSafInputSequence
               tApiQPostingSaf.SafStructure_ID          = tPostingSaf.SafStructure_ID
               tApiQPostingSaf.tc_Rowid                 = string(viApiQPostingSafID)
               tApiQPostingSaf.tc_ParentRowid           = tApiQPostingLine.tc_Rowid
               tApiQPostingSaf.tc_Status                = "N":U.
        /* ================================================================================ */
        /* In case real-time processing of the posting-lines on the bank-accounts is needed */
        /* then we transfer the data we just created into separate but similar temp-tables  */
        /* ================================================================================ */
        if vlBankCashTrxInRealTime = TRUE and
           (tPostingLine.tcGLTypeCode = {&GLTYPECODE-BANK} or
            tPostingLine.tcGLTypeCode = {&GLTYPECODE-CASH})
        then do:
            create tApiQPostingSafBank.
            buffer-copy tApiQPostingSaf to tApiQPostingSafBank.
            delete tApiQPostingSaf.
        end. /* if vlBankCashTrxInRealTime = TRUE and */
    end. /* for each tPostingSaf where */
    
    /* ================================================================================ */
    /* In case real-time processing of the posting-lines on the bank-accounts is needed */
    /* then we transfer the data we just created into separate but similar temp-tables  */
    /* ================================================================================ */
    if vlBankCashTrxInRealTime = TRUE and
       (tPostingLine.tcGLTypeCode = {&GLTYPECODE-BANK} or
        tPostingLine.tcGLTypeCode = {&GLTYPECODE-CASH})
    then do:
        create tApiQPostingLineBank.
        buffer-copy tApiQPostingLine to tApiQPostingLineBank.
        delete tApiQPostingLine.
    end. /* if vlBankCashTrxInRealTime = TRUE and */