project QadFinancials > class BBankNumber > method ValidateComponentPostDebtor

Description

Validation done for banknumbers of debtors.


Parameters


oiReturnStatusoutputintegerReturn status of the method.


Internal usage


QadFinancials
method BBankNumber.ValidateComponentPost


program code (program5/bbanknumber.p)

assign oiReturnStatus             = -98
       viLocalReturnStatus        = 0
       vlQueryDDocumentStatusPrim = false
       vlQueryPayFormatGroup      = false
       vcDocumentStatusDebtors    ={&DOCUMENTSTATUSDEBTORS}.

VALDEBTORBLOCK:
for each t_sBankNumber where
         t_sBankNumber.BankNumberParentType =  {&BANKNUMBERPARENTTYPE-DEBTOR} and
         t_sBankNumber.BankNumberIsActive   =  true                           and
        (t_sBankNumber.tc_Status            = "C":U or
         t_sBankNumber.tc_Status            = "N":U):

    /* ========================================= */
    /* Error when Bank is not linked to Own Bank */
    /* ========================================= */
    if (t_sBankNumber.tcOwnBankNumber = "" or        
        t_sBankNumber.tcOwnBankNumber = ?)
    then do:
        assign vcMessage           = trim(#T-33'Own bank number cannot be blank or unknown.':50(57162)T-33#)
               viLocalReturnStatus = -1.
        <M-32 run SetMessage
           (input  trim(vcMessage) (icMessage), 
            input  '':U (icArguments), 
            input  'tBankNumber.tcOwnBankNumber':U (icFieldName), 
            input  t_sBankNumber.tcOwnBankNumber (icFieldValue), 
            input  'E':U (icType), 
            input  3 (iiSeverity), 
            input  t_sBankNumber.tc_Rowid (icRowid), 
            input  'QadFin-9720':U (icFcMsgNumber), 
            input  '':U (icFcExplanation), 
            input  '':U (icFcIdentification), 
            input  '':U (icFcContext), 
            output viFcReturnSuper (oiReturnStatus)) in BBankNumber>
    end. /* if (t_sBankNumber.tcOwnBankNumber = "" or */

    /* ================================================= */
    /* Error when Bank is not linked to a Payment Format */
    /* ================================================= */
    if (t_sBankNumber.tcPayFormatTypeCode = "":U or
        t_sBankNumber.tcPayFormatTypeCode = ?)
    then do:
        assign vcMessage           = trim(#T-35'Payment format code cannot be blank or unknown.':50(999890802)T-35#)
               viLocalReturnStatus = -1.
        <M-34 run SetMessage
           (input  trim(vcMessage) (icMessage), 
            input  '':U (icArguments), 
            input  'tBankNumber.tcPayFormatTypeCode':U (icFieldName), 
            input  t_sBankNumber.tcPayFormatTypeCode (icFieldValue), 
            input  'E':U (icType), 
            input  3 (iiSeverity), 
            input  t_sBankNumber.tc_Rowid (icRowid), 
            input  'QadFin-9721':U (icFcMsgNumber), 
            input  '':U (icFcExplanation), 
            input  '':U (icFcIdentification), 
            input  '':U (icFcContext), 
            output viFcReturnSuper (oiReturnStatus)) in BBankNumber>
    end. /* if (t_sBankNumber.tcPayFormatTypeCode = "":U or */

    /* ======================================================== */
    /* Validate the payment status and self bill default values */
    /* ======================================================== */
    /* First retrieve the database value of the status */
    assign vcDocumentStatus        = '':U.
    do viDocumentStatusCount = num-entries(vcDocumentStatusDebtors, chr(2)) to 1 by -2:
        if entry(viDocumentStatusCount - 1, vcDocumentStatusDebtors, chr(2)) = t_sBankNumber.tcDDocumentStatusTR
        then do:
            assign vcDocumentStatus = entry(viDocumentStatusCount, vcDocumentStatusDebtors, chr(2)).
            leave.
        end. /* if entry(viDocumentStatusCount, vcDocumentStatusDebtors, chr(2)) = t_sBankNumber.tcDDocumentStatusTR */
    end. /* do viDocumentStatusCount = num-entries(vcDocumentStatusDebtors, chr(2)) to 1 by -2: */

    if t_sBankNumber.tcDDocumentStatusTR <> "":U and
       t_sBankNumber.tcDDocumentStatusTR <> ?
    then do:
        /* Start query when first time use */
        if vlQueryDDocumentStatusPrim = false
        then do:
            <Q-40 run DDocumentStatusPrim  (Start) in BDDocumentStatus > 
            assign vlQueryDDocumentStatusPrim = true.
        end. /* if vlQueryDDocumentStatusPrim = false */
        
        <Q-37 run DDocumentStatusPrim (all) (Read) (NoCache)
           (input ?, (DDocumentStatusID)
            input vcDocumentStatus, (DDocumentStatusStatus)
            input t_sBankNumber.tcPayFormatTypePaymentInstrument, (DDocumentStatusDocumentType)
            input t_sBankNumber.tcOwnGLCode, (BankGLCode)
            input viCompanyID, (CompanyId)
            output dataset tqDDocumentStatusPrim) in BDDocumentStatus >

        find first tqDDocumentStatusPrim where 
                  tqDDocumentStatusPrim.tcDDocumentStatusStatus  = vcDocumentStatus and
                  tqDDocumentStatusPrim.tcDDocumentStatusDocType = t_sBankNumber.tcPayFormatTypePaymentInstrument and
                  tqDDocumentStatusPrim.tcGLCode                 = t_sBankNumber.tcOwnGLCode 
                  no-lock no-error.
        if not available tqDDocumentStatusPrim
        then do:
            assign vcMessage           = trim(#T-39'Invalid Payment Status Specified for Bank Data Specified':255(733760936)T-39#)
                   viLocalReturnStatus = -1.
            <M-38 run SetMessage
               (input  vcMessage (icMessage), 
                input  '' (icArguments), 
                input  'tBankNumber.tcDDocumentStatusTR' (icFieldName), 
                input  t_sBankNumber.tcDDocumentStatusTR (icFieldValue), 
                input  'E':U (icType), 
                input  3 (iiSeverity), 
                input  t_sBankNumber.tc_Rowid (icRowid), 
                input  'QadFin-9722':U (icFcMsgNumber), 
                input  '' (icFcExplanation), 
                input  '' (icFcIdentification), 
                input  '' (icFcContext), 
                output viFcReturnSuper (oiReturnStatus)) in BBankNumber>
        end. /* if not available tqDDocumentStatusPrim */
        else assign t_sBankNumber.DDocumentStatus_ID = tqDDocumentStatusPrim.tiDDocumentStatus_ID.
    end. /* end of DDocumentStatusStatus <> "" */

    /* ================================ */
    /* Bank must have a bank pay format */
    /* ================================ */
    if(t_sBankNumber.BankPayFormat_ID = ? or 
       t_sBankNumber.BankPayFormat_ID = 0) 
    then do:
        assign vcMessage           = trim(#T-48'Bank must have a bank pay format':60(733739713)T-48#)
               viLocalReturnStatus = -1.
        <M-43 run SetMessage
           (input  vcMessage (icMessage), 
            input  '' (icArguments), 
            input  'tBankNumber.BankNumber':U (icFieldName), 
            input  t_sBankNumber.BankNumber (icFieldValue), 
            input  'E':U (icType), 
            input  3 (iiSeverity), 
            input  t_sBankNumber.tc_Rowid (icRowid), 
            input  'QadFin-9723':U (icFcMsgNumber), 
            input  '' (icFcExplanation), 
            input  '' (icFcIdentification), 
            input  '' (icFcContext), 
            output viFcReturnSuper (oiReturnStatus)) in BBankNumber>
    end. /* if(t_sBankNumber.BankPayFormat_ID = ? or  */

    for each t_sBankNumberPayCode where
             t_sBankNumberPayCodeRef.BankNumber_ID = t_sBankNumber.BankNumber_ID:

        if vlQueryPayFormatGroup = false
        then do:
            <Q-51 run PayFormatGroupByTypeSeq  (Start) in BPaymentFormat >        
            assign vlQueryPayFormatGroup = true.
        end. /* if vlQueryPayFormatGroup = false */
                                                                          
        <Q-44 run PayFormatGroupByTypeSeq (all) (Read) (NoCache)
           (input t_sBankNumberPayCode.tiPayFormatGroupSequence, (PayFormatGroupSequence)
            input true, (PayFormatGroupIsActive)
            input t_sBankNumber.tcPayFormatTypeCode, (PayFormatTypeCode)
            output dataset tqPayFormatGroupByTypeSeq) in BPaymentFormat >

        /* Check if mandatory fields and filled in */
        for each tqPayFormatGroupByTypeSeq:
            /* Validate Attribute Data Type */
            case tqPayFormatGroupByTypeSeq.tcPayFormatGroupDataType:
                when {&PAYFORMATGROUPDATATYPE-INTEGER} 
                then assign viPayFormatIntegerValue = int(t_sBankNumberPayCode.tcPayFormatCodeValue) no-error.
                when {&PAYFORMATGROUPDATATYPE-AMOUNT} 
                then assign vdPayFormatDecimalValue = dec(t_sBankNumberPayCode.tcPayFormatCodeValue) no-error.
                when {&PAYFORMATGROUPDATATYPE-DATE} 
                then assign vtPayFormatDateValue = date(t_sBankNumberPayCode.tcPayFormatCodeValue) no-error.
                when {&PAYFORMATGROUPDATATYPE-LOGICAL} 
                then assign vlPayFormatLogicalValue = logical(t_sBankNumberPayCode.tcPayFormatCodeValue) no-error.
                otherwise
                    assign vcPayFormatTextValue = string(t_sBankNumberPayCode.tcPayFormatCodeValue) no-error.                
            end case.
            
            /* Log Progress errors for datatype mismatches */
            if error-status:error 
            then do:
                assign viLocalReturnStatus = -1.
                do viProgressErrorCount = 1 to error-status:num-messages:
                    <M-46 run SetMessage
                       (input  error-status:get-message(viProgressErrorCount) (icMessage), 
                        input  '':U (icArguments), 
                        input  'tBankNumberPayCode.tcPayFormatCodeValue':U (icFieldName), 
                        input  t_sBankNumberPayCode.tcPayFormatCodeValue (icFieldValue), 
                        input  'E':U (icType), 
                        input  3 (iiSeverity), 
                        input  t_sBankNumberPayCode.tc_Rowid (icRowid), 
                        input  'QadFin-9725':U (icFcMsgNumber), 
                        input  '':U (icFcExplanation), 
                        input  '':U (icFcIdentification), 
                        input  '':U (icFcContext), 
                        output viFcReturnSuper (oiReturnStatus)) in BBankNumber>                
                end. /* do viProgressErrorCount ... */
            end. /* if error-status:error then do */            
        end. /* for each tqPayFormatGroupByTypeSeq */
    end. /* for each t_sBankNumberPayCode */
end. /* for each t_sBankNumber where */

/* Stop Queries */
if vlQueryDDocumentStatusPrim = true
then do:
    <Q-41 run DDocumentStatusPrim  (Stop) in BDDocumentStatus > 
    assign vlQueryDDocumentStatusPrim = false.
end. /* if vlQueryDDocumentStatusPrim = true */

if vlQueryPayFormatGroup = true
then do:
    <Q-52 run PayFormatGroupByTypeSeq (Stop) in BPaymentFormat >
    assign vlQueryPayFormatGroup = false.
end. /* if vlQueryPayFormatGroup = true */

assign oiReturnStatus = viLocalReturnStatus.