project QadFinancials > class BCInvoice > method CalculateCInvoiceBank

Description

Calculate calculated fields for CInvoiceBank and CInvoiceBankPayCode.


Parameters


oiReturnStatusoutputintegerReturn status of the method.


Internal usage


QadFinancials
method BCInvoice.Calculate


program code (program1/bcinvoice.p)

       
for each tCInvoiceBank where
         tCInvoiceBank.tc_Status = "":U and 
         (tCInvoiceBank.tcOwnBankNumber = "":U or 
          tCInvoiceBank.tcOwnBankNumber = ?):
          
    /* ============================================================== */
    /* BankNumber should be displayed in a formatted way              */
    /* The 'format'-characters are removed again in ValidateComponent */
    /* ============================================================== */
    if tCInvoiceBank.tcBankNumberFormatted <> "":U and
       tCInvoiceBank.tcBankNumberFormatted <> ?
    then assign tCInvoiceBank.tcBankNumber = tCInvoiceBank.tcBankNumberFormatted.

    <Q-3 run BankNumberPrim (all) (Read) (Cache)
       (input tCInvoiceBank.BankNumber_ID, (BankNumberId)
        input ?, (ParentObjectId)
        input ?, (BankNumber)
        input ?, (BankNumberExtension)
        input ?, (BankPayFormatID)
        output dataset tqBankNumberPrim) in BBankNumber >

    find first tqBankNumberPrim where
               tqBankNumberPrim.tiBankNumber_ID = tCInvoiceBank.BankNumber_ID
               no-error.

    if available tqBankNumberPrim
    then do:

        <Q-4 run BankPayFormatByID (all) (Read) (Cache)
           (input tqBankNumberPrim.tiBankPayFormat_ID, (BankPayFormatId)
            input viCompanyId, (CompanyId)
            output dataset tqBankPayFormatByID) in BBankPayFormat>

        find first tqBankPayFormatByID where
                   tqBankPayFormatByID.tiBankPayFormat_ID = tqBankNumberPrim.tiBankPayFormat_ID
                   no-error.

        if available tqBankPayFormatByID
        then do:
            assign tCInvoiceBank.tcOwnBankNumber              = tqBankPayFormatByID.tcBankNumber
                   tCInvoiceBank.tcOwnGLCode                  = tqBankPayFormatByID.tcGLCode
                   tCInvoiceBank.tcPayFormatTypeCode          = tqBankPayFormatByID.tcPayFormatTypeCode
                   tCInvoiceBank.tcPayFormatTypePayInstrument = "?":U.
            if vcPAYFORMATPAYINSTRUMENTS = "":U or
               vcPAYFORMATPAYINSTRUMENTS = ?
            then assign vcPAYFORMATPAYINSTRUMENTS = {&PAYFORMATPAYINSTRUMENTS}.
            do viCounter = num-entries(vcPAYFORMATPAYINSTRUMENTS,chr(2)) to 1 by -2 :
                if entry(viCounter,vcPAYFORMATPAYINSTRUMENTS,chr(2)) = tqBankPayFormatByID.tcPayFormatTypePayInstrument
                then do :
                    assign tCInvoiceBank.tcPayFormatTypePayInstrument = entry(viCounter - 1,vcPAYFORMATPAYINSTRUMENTS,chr(2)) no-error.
                    leave.
                end. /* if entry */
            end.
        end.
    end.

    /* Make sure t_iCInvoiceBank is up-to-date */
    find t_iCInvoiceBank where
         t_iCInvoiceBank.tc_Rowid = tCInvoiceBank.tc_Rowid
         no-error.

    if available t_iCInvoiceBank
    then raw-transfer tCInvoiceBank to t_iCInvoiceBank.
end.




if can-find (first tCInvoiceBankPayCode where 
                   (tCInvoiceBankPayCode.PayFormatCode_ID <> ? and
                    tCInvoiceBankPayCode.PayFormatCode_ID <> 0 and 
                    (tCInvoiceBankPayCode.tc_Status = "":U or 
                     tCInvoiceBankPayCode.tc_Status = ?))                   or
                   (tCInvoiceBankPayCode.PayFormatGroup_ID <> ? and 
                    tCInvoiceBankPayCode.PayFormatGroup_ID <> 0 and 
                    (tCInvoiceBankPayCode.tcPayFormatGroupCode = "":U or 
                     tCInvoiceBankPayCode.tcPayFormatGroupCode = ?)) )
then do :
    
    
    
    for each tCInvoiceBankPayCode where
             tCInvoiceBankPayCode.tc_Status = "":U:
        
        if tCInvoiceBankPayCode.PayFormatCode_ID <> ? and
           tCInvoiceBankPayCode.PayFormatCode_ID <> 0
        then do:
    
            <Q-10 run PayFormatCodePrim (all) (Read) (Cache)
               (input tCInvoiceBankPayCode.PayFormatCode_ID, (PayFormatCodeID)
                input ?, (PayFormatCode)
                output dataset tqPayFormatCodePrim) in BPaymentFormat >
    
            find first tqPayFormatCodePrim where
                       tqPayFormatCodePrim.tiPayFormatCode_ID = tCInvoiceBankPayCode.PayFormatCode_ID
                       no-error.
    
            if available tqPayFormatCodePrim and
               tCInvoiceBankPayCode.CInvoiceBankPayCodeValue <> tqPayFormatCodePrim.tcPayFormatCode
            then assign tCInvoiceBankPayCode.CInvoiceBankPayCodeValue = tqPayFormatCodePrim.tcPayFormatCode
                        tCInvoiceBankPayCode.tc_Status                = (if tCInvoiceBankPayCode.tc_Status = "":U
                                                                         then "C":U
                                                                         else tCInvoiceBankPayCode.tc_Status).
        end.
    
        
        <Q-8 run PayFormatGroupPrim (all) (Read) (Cache)
           (input tCInvoiceBankPayCode.PayFormatGroup_ID, (PayFormatGroupID)
            input ?, (PayFormatTypeCode)
            input ?, (PayFormatGroupSequence)
            output dataset tqPayFormatGroupPrim) in BPaymentFormat >
    
        find first tqPayFormatGroupPrim where
                   tqPayFormatGroupPrim.tiPayFormatGroup_ID = tCInvoiceBankPayCode.PayFormatGroup_ID
                   no-error.
    
        if available tqPayFormatGroupPrim
        then assign tCInvoiceBankPayCode.tcPayFormatGroupCode        = tqPayFormatGroupPrim.tcPayFormatGroupCode
                    tCInvoiceBankPayCode.tcPayFormatGroupDescription = tqPayFormatGroupPrim.tcPayFormatGroupDescription
                    tCInvoiceBankPayCode.tlPayFormatGroupIsMandatory = tqPayFormatGroupPrim.tlPayFormatGroupIsMandatory
                    tCInvoiceBankPayCode.tcPayFormatGroupInputOption = tqPayFormatGroupPrim.tcPayFormatGroupInputOption
                    tCInvoiceBankPayCode.tcPayFormatGroupDataType    = tqPayFormatGroupPrim.tcPayFormatGroupDataType.
    
        /* Make sure t_iCInvoiceBankPayCode is up-to-date */
        find t_iCInvoiceBankPayCode where
             t_iCInvoiceBankPayCode.tc_Rowid = tCInvoiceBankPayCode.tc_Rowid
             no-error.
    
        if available t_iCInvoiceBankPayCode
        then buffer-copy tCInvoiceBankPayCode
                  except CInvoiceBankPayCodeValue 
                      to t_iCInvoiceBankPayCode.
    end.
    
end. /* if can-find first (tCInvoiceBankPayCode where  */