project QadFinancials > class BCInvoice > method ValidateComponentPreBank

Description

This method is submethod of ValidateComponentPre.

This method fills some necessary fields on Creditor Invoice Bank records.


Parameters


blStart3input-outputlogicalIs query tqBankNumberPrim already started or not ?
blStart4input-outputlogicalIs query tqPayFormatCodeByGroupId already started or not ?
oiReturnStatusoutputintegerReturn status of the method.


Internal usage


QadFinancials
method BCInvoice.ValidateComponentPre


program code (program5/bcinvoice.p)

for each t_sCInvoiceBank where
         t_sCInvoiceBank.tc_ParentRowid = t_sCInvoice.tc_Rowid and
         t_sCInvoiceBank.tc_Status      <> "D":U:
    if t_sCInvoiceBank.tc_Status = "C":U
    then do:
        find t_iCInvoiceBank where
             t_iCInvoiceBank.tc_Rowid = t_sCInvoiceBank.tc_Rowid
             no-error.

        if not available t_iCInvoiceBank
        then do:
            <M-1 run SetMessage
               (input  trim(#T-2'The system cannot find initial values for supplier invoice bank with bank number $1 (Supplier Invoice $2 $3 $4).':255(65483)t-2#) (icMessage), 
                input  t_sCInvoiceBank.tcBankNumber + chr(2) + string(t_sCInvoice.CInvoicePostingYear) + chr(2) + t_sCInvoice.tcJournalCode + chr(2) + string(t_sCInvoice.CInvoiceVoucher) (icArguments), 
                input  '':U (icFieldName), 
                input  '':U (icFieldValue), 
                input  'E':U (icType), 
                input  '':U (iiSeverity), 
                input  t_sCInvoiceBank.tc_Rowid (icRowid), 
                input  'QadFin-7087':U (icFcMsgNumber), 
                input  '':U (icFcExplanation), 
                input  '':U (icFcIdentification), 
                input  '':U (icFcContext), 
                output viFcReturnSuper (oiReturnStatus)) in BCInvoice>

            assign oiReturnStatus = -1.
            next.
        end.
    end.

    if t_sCInvoiceBank.tc_Status = "N":U
    then assign t_sCInvoiceBank.tiParentObject_ID = t_sCInvoice.Creditor_ID.

    if t_sCInvoiceBank.tc_Status = "N":U or
       t_sCInvoiceBank.tc_Status = "C":U and
       t_sCInvoiceBank.tcBankNumber <> t_iCInvoiceBank.tcBankNumber
    then assign t_sCInvoiceBank.tcBankNumber = replace(t_sCInvoiceBank.tcBankNumber, " ":U, "":U)
                t_sCInvoiceBank.tcBankNumber = replace(t_sCInvoiceBank.tcBankNumber, ".":U, "":U)
                t_sCInvoiceBank.tcBankNumber = replace(t_sCInvoiceBank.tcBankNumber, "/":U, "":U)
                t_sCInvoiceBank.tcBankNumber = replace(t_sCInvoiceBank.tcBankNumber, "-":U, "":U).

    if (t_sCInvoiceBank.tc_Status             = "N":U                                 and
       (t_sCInvoiceBank.BankNumber_ID = ? or t_sCInvoiceBank.BankNumber_ID = 0) )      or
       t_sCInvoiceBank.tc_Status              = "C":U                                 and
      (t_sCInvoiceBank.tiParentObject_ID     <> t_iCInvoiceBank.tiParentObject_ID     or
       t_sCInvoiceBank.tcBankNumber          <> t_iCInvoiceBank.tcBankNumber          or
       t_sCInvoiceBank.tcBankNumberExtension <> t_iCInvoiceBank.tcBankNumberExtension or
       t_sCInvoiceBank.tiBankPayFormat_ID    <> t_iCInvoiceBank.tiBankPayFormat_ID)
    then do:
        if not blStart3
        then do:
            <Q-3 run BankNumberPrim  (Start) in BBankNumber >
            assign blStart3 = true.
        end.

        if t_sCInvoiceBank.tcOwnBankNumber <> "":U and
           t_sCInvoiceBank.tcBankNumber <> "":U 
        then do:
            <Q-23 run BankNumberByPayFormat (all) (Read) (NoCache)
                (input t_sCInvoiceBank.tcBankNumber, (BankNumber)
                 input t_sCInvoice.tcCreditorCode, (CreditorCode)
                 input t_sCInvoiceBank.tcOwnBankNumber, (OwnBankNumber)
                 input ?, (PaymentFormat)
                 input viCompanyId, (CompanyId)
                 output dataset tqBankNumberByPayFormat) in BBankNumber>

            find first tqBankNumberByPayFormat where
                 tqBankNumberByPayFormat.tcBankNumber          = t_sCInvoiceBank.tcBankNumber           and
                 tqBankNumberByPayFormat.tcCreditorCode        = t_sCInvoice.tcCreditorCode             and
                 tqBankNumberByPayFormat.tcOwnBankNumber       = t_sCInvoiceBank.tcOwnBankNumber        and
                 tqBankNumberByPayFormat.tcBankNumberExtension = t_sCInvoiceBank.tcBankNumberExtension  and
                 tqBankNumberByPayFormat.tcPayFormatTypeCode   = t_sCInvoiceBank.tcPayFormatTypeCode    and
                 tqBankNumberByPayFormat.tlBankNumberIsActive  = true      
                 no-error.
           
            assign t_sCInvoiceBank.BankNumber_ID = if available tqBankNumberByPayFormat 
                   then tqBankNumberByPayFormat.tiBankNumber_ID
                   else ?.
        end.

        else if t_sCInvoiceBank.tcOwnBankNumber = "":U and
                t_sCInvoiceBank.tcBankNumber = "":U 
        then do:
            <Q-51 run BankNumberForCIDefault (all) (Read) (NoCache)
               (input t_sCInvoice.Creditor_ID, (ParentObjectId)
                input ?, (BankNumberIsDefault)
                input true, (BankNumberIsActive)
                input ?, (CompanyId)
                output dataset tqBankNumberForCIDefault) in BBankNumber>

           /* Find active default banknumber for current entity */    
           find first tqBankNumberForCIDefault where
                tqBankNumberForCIDefault.tiParentObject_ID     = t_sCInvoice.Creditor_ID and
                tqBankNumberForCIDefault.tlBankNumberIsDefault = true         and
                tqBankNumberForCIDefault.tlBankNumberIsActive  = true         and
                tqBankNumberForCIDefault.tiCompany_ID          = viCompanyId
                no-error.
                
           /* If can not find deafault banknumber just find the active banknumber for current entity */
           if not available tqBankNumberForCIDefault
           then 
              find first tqBankNumberForCIDefault where
                   tqBankNumberForCIDefault.tiParentObject_ID     = t_sCInvoice.Creditor_ID and
                   tqBankNumberForCIDefault.tlBankNumberIsActive  = true         and
                   tqBankNumberForCIDefault.tiCompany_ID          = viCompanyId
                   no-error.
                   
           /* If can not find banknumber in the previous step just find the first active banknumber for the customer */
           if not available tqBankNumberForCIDefault
           then 
              find first tqBankNumberForCIDefault where
                   tqBankNumberForCIDefault.tiParentObject_ID     = t_sCInvoice.Creditor_ID and
                   tqBankNumberForCIDefault.tlBankNumberIsActive  = true         and
                   tqBankNumberForCIDefault.tlBankNumberIsDefault = true
                   no-error.

           assign t_sCInvoiceBank.BankNumber_ID = if available tqBankNumberForCIDefault
                  then tqBankNumberForCIDefault.tiBankNumber_ID
                  else ?.
        end.

        else do:
            <Q-4 run BankNumberPrim (all) (Read) (Cache)
               (input ?, (BankNumberId)
                input t_sCInvoiceBank.tiParentObject_ID, (ParentObjectId)
                input t_sCInvoiceBank.tcBankNumber, (BankNumber)
                input t_sCInvoiceBank.tcBankNumberExtension, (BankNumberExtension)
                input t_sCInvoiceBank.tiBankPayFormat_ID, (BankPayFormatID)
                output dataset tqBankNumberPrim) in BBankNumber >

            find first tqBankNumberPrim where
                       tqBankNumberPrim.tiParentObject_ID = t_sCInvoiceBank.tiParentObject_ID and
                       tqBankNumberPrim.tcBankNumber      = t_sCInvoiceBank.tcBankNumber
                       no-error.

            assign t_sCInvoiceBank.BankNumber_ID = if available tqBankNumberPrim
                                                   then tqBankNumberPrim.tiBankNumber_ID
                                                   else ?.
        end.
    end.

    for each t_sCInvoiceBankPayCode where
             t_sCInvoiceBankPayCode.tc_ParentRowid = t_sCInvoiceBank.tc_Rowid and
            (t_sCInvoiceBankPayCode.tc_Status      = "N":U                    or
             t_sCInvoiceBankPayCode.tc_Status      = "C":U):
        if t_sCInvoiceBankPayCode.tc_Status = "C":U
        then do:
            find t_iCInvoiceBankPayCode where
                 t_iCInvoiceBankPayCode.tc_Rowid = t_sCInvoiceBankPayCode.tc_Rowid
                 no-error.

            if not available t_iCInvoiceBankPayCode
            then do:
                <M-5 run SetMessage
                   (input  trim(#T-6'The system cannot find initial values for supplier invoice bank with bank number $1 (Supplier Invoice $2 $3 $4).':255(65483)t-6#) (icMessage), 
                    input  t_sCInvoiceBank.tcBankNumber + chr(2) + string(t_sCInvoice.CInvoicePostingYear) + chr(2) + t_sCInvoice.tcJournalCode + chr(2) + string(t_sCInvoice.CInvoiceVoucher) (icArguments), 
                    input  '':U (icFieldName), 
                    input  '':U (icFieldValue), 
                    input  'E':U (icType), 
                    input  '':U (iiSeverity), 
                    input  t_sCInvoiceBankPayCode.tc_Rowid (icRowid), 
                    input  'QadFin-7113':U (icFcMsgNumber), 
                    input  '':U (icFcExplanation), 
                    input  '':U (icFcIdentification), 
                    input  '':U (icFcContext), 
                    output viFcReturnSuper (oiReturnStatus)) in BCInvoice>

                assign oiReturnStatus = -1.
                next.
            end.
        end.

        if t_sCInvoiceBankPayCode.tc_Status                = "C":U and
           t_sCInvoiceBankPayCode.CInvoiceBankPayCodeValue = t_iCInvoiceBankPayCode.CInvoiceBankPayCodeValue
        then next.

        if t_sCInvoiceBankPayCode.CInvoiceBankPayCodeValue = "":U or
           t_sCInvoiceBankPayCode.CInvoiceBankPayCodeValue = ?
        then assign t_sCInvoiceBankPayCode.PayFormatCode_ID         = 0
                    t_sCInvoiceBankPayCode.CInvoiceBankPayCodeValue = "":U.
        else do:
            if not blStart4
            then do:
                <Q-7 run PayFormatCodebyGroupID  (Start) in BPaymentFormat >
                assign blStart4 = true.
            end.

            <Q-8 run PayFormatCodebyGroupID (all) (Read) (Cache)
               (input ?, (PayFormatCodeID)
                input t_sCInvoiceBankPayCode.CInvoiceBankPayCodeValue, (PayFormatCode)
                input t_sCInvoiceBankPayCode.PayFormatGroup_ID, (PayFormatGroupID)
                output dataset tqPayFormatCodebyGroupID) in BPaymentFormat >

            find first tqPayFormatCodebyGroupID where
                       tqPayFormatCodebyGroupID.tcPayFormatCode     = t_sCInvoiceBankPayCode.CInvoiceBankPayCodeValue and
                       tqPayFormatCodebyGroupID.tiPayFormatGroup_ID = t_sCInvoiceBankPayCode.PayFormatGroup_ID
                       no-error.

            if available tqPayFormatCodebyGroupID
            then assign t_sCInvoiceBankPayCode.PayFormatCode_ID         = tqPayFormatCodebyGroupID.tiPayFormatCode_ID
                        t_sCInvoiceBankPayCode.CInvoiceBankPayCodeValue = tqPayFormatCodebyGroupID.tcPayFormatCode.
            else assign t_sCInvoiceBankPayCode.PayFormatCode_ID         = 0.
        end.
    end.
end.