project QadFinancials > class BCInvoice > method ValidateComponentPostReason

Description

This method is a submethod of ValidateComponentPost.

This method does some validations on the creditor invoice reason code.


Parameters


blStart14input-outputlogicalobsolete parameter
oiReturnStatusoutputintegerReturn status of the method.


Internal usage


QadFinancials
method BCInvoice.ValidateComponentPost


program code (program5/bcinvoice.p)

if (t_sCInvoice.tc_Status                 = "N":U                     or
    t_sCInvoice.tc_Status                 = "C":U                     and
    t_sCInvoice.Reason_ID                <> t_iCInvoice.Reason_ID)    and
   (t_sCInvoice.CInvoiceIsInvoiceApproved = true                      or
    t_sCInvoice.CInvoiceIsLockPayment     = false                     or
    t_sCInvoice.tcReasonAllocationStatus  = {&ALLOCSTATUS-TRANSALLOC} or
    t_sCInvoice.tcReasonAllocationStatus  = {&ALLOCSTATUS-ALLOC})
then do:
    
    if t_sCInvoice.CInvoiceIsInvoiceApproved = true
    then do:
        <Q-2 assign vlFcQueryRecordsAvailable = BusCompByActivityUserComp (Cache)
           (input vcFcComponentName, (BusComponentCode)
            input 'Approve':U, (BusActivityCode)
            input ?, (UsrName)
            input ?, (UsrLogin)
            input t_sCInvoice.Company_ID, (CompanyID)
            input viUsrId, (UsrID)) in BBusinessComponent >

        if not vlFcQueryRecordsAvailable
        then do:
            assign vcMessage      = trim(subst(#T-4'You cannot use an invoice status code with the payment status Can Pay. Please review target status and/or your permission to Release for Payment  (invoice status code = &1).':200(27922991)T-4#, t_sCInvoice.tcReasonCode)) + chr(10) +
                                    trim(subst(#T-5'GL Calendar Year = &1; GL Period = &2; Daybook = &3; Voucher = &4.':255(969)T-5#, string(t_sCInvoice.CInvoicePostingYear), string(t_sCInvoice.CInvoicePostingPeriod), t_sCInvoice.tcJournalCode, string(t_sCInvoice.CInvoiceVoucher)))
                   oiReturnStatus = -1.

            <M-3 run SetMessage
               (input  vcMessage (icMessage), 
                input  '':U (icArguments), 
                input  'tCInvoice.tcReasonCode':U (icFieldName), 
                input  t_sCInvoice.tcReasonCode (icFieldValue), 
                input  'E':U (icType), 
                input  3 (iiSeverity), 
                input  t_sCInvoice.tc_Rowid (icRowid), 
                input  'QadFin-7119':U (icFcMsgNumber), 
                input  '':U (icFcExplanation), 
                input  '':U (icFcIdentification), 
                input  '':U (icFcContext), 
                output viFcReturnSuper (oiReturnStatus)) in BCInvoice>
        end.
    end.

    if t_sCInvoice.CInvoiceIsLockPayment = false
    then do:
        <Q-6 assign vlFcQueryRecordsAvailable = BusCompByActivityUserComp (Cache)
           (input vcFcComponentName, (BusComponentCode)
            input 'Release For Payment':U, (BusActivityCode)
            input ?, (UsrName)
            input ?, (UsrLogin)
            input t_sCInvoice.Company_ID, (CompanyID)
            input viUsrId, (UsrID)) in BBusinessComponent >

        if not vlFcQueryRecordsAvailable
        then do:
            assign vcMessage      = trim(subst(#T-8'You cannot use an invoice status code with the payment status Can Pay. Please review target status and/or your permission to Release for Payment  (invoice status code = &1).':200(27922991)T-8#, t_sCInvoice.tcReasonCode)) + chr(10) +
                                    trim(subst(#T-9'GL Calendar Year = &1; GL Period = &2; Daybook = &3; Voucher = &4.':255(969)T-9#, string(t_sCInvoice.CInvoicePostingYear), string(t_sCInvoice.CInvoicePostingPeriod), t_sCInvoice.tcJournalCode, string(t_sCInvoice.CInvoiceVoucher)))
                   oiReturnStatus = -1.

            <M-7 run SetMessage
               (input  vcMessage (icMessage), 
                input  '':U (icArguments), 
                input  'tCInvoice.tcReasonCode':U (icFieldName), 
                input  t_sCInvoice.tcReasonCode (icFieldValue), 
                input  'E':U (icType), 
                input  3 (iiSeverity), 
                input  t_sCInvoice.tc_Rowid (icRowid), 
                input  'QadFin-7121':U (icFcMsgNumber), 
                input  '':U (icFcExplanation), 
                input  '':U (icFcIdentification), 
                input  '':U (icFcContext), 
                output viFcReturnSuper (oiReturnStatus)) in BCInvoice>
        end.
    end.

    if t_sCInvoice.tcReasonAllocationStatus = {&ALLOCSTATUS-TRANSALLOC}
    then do:
        <Q-10 assign vlFcQueryRecordsAvailable = BusCompByActivityUserComp (Cache)
           (input vcFcComponentName, (BusComponentCode)
            input 'Prepare Allocation':U, (BusActivityCode)
            input ?, (UsrName)
            input ?, (UsrLogin)
            input t_sCInvoice.Company_ID, (CompanyID)
            input viUsrId, (UsrID)) in BBusinessComponent >

        if not vlFcQueryRecordsAvailable
        then do:
            assign vcMessage      = trim(subst(#T-12'You cannot use an invoice status code with allocation status &1 (invoice status code = &2).':150(971)T-12#, {&ALLOCSTATUS-TRANSALLOC-TR},t_sCInvoice.tcReasonCode)) + chr(10) +
                                    trim(subst(#T-13'GL Calendar Year = &1; GL Period = &2; Daybook = &3; Voucher = &4.':255(969)T-13#, string(t_sCInvoice.CInvoicePostingYear), string(t_sCInvoice.CInvoicePostingPeriod), t_sCInvoice.tcJournalCode, string(t_sCInvoice.CInvoiceVoucher)))
                   oiReturnStatus = -1.

            <M-11 run SetMessage
               (input  vcMessage (icMessage), 
                input  '':U (icArguments), 
                input  'tCInvoice.tcReasonCode':U (icFieldName), 
                input  t_sCInvoice.tcReasonCode (icFieldValue), 
                input  'E':U (icType), 
                input  3 (iiSeverity), 
                input  t_sCInvoice.tc_Rowid (icRowid), 
                input  'QadFin-7122':U (icFcMsgNumber), 
                input  '':U (icFcExplanation), 
                input  '':U (icFcIdentification), 
                input  '':U (icFcContext), 
                output viFcReturnSuper (oiReturnStatus)) in BCInvoice>
        end.
    end.

    if t_sCInvoice.tcReasonAllocationStatus = {&ALLOCSTATUS-ALLOC}
    then do:
        <Q-14 assign vlFcQueryRecordsAvailable = BusCompByActivityUserComp (Cache)
           (input vcFcComponentName, (BusComponentCode)
            input 'Allocate':U, (BusActivityCode)
            input ?, (UsrName)
            input ?, (UsrLogin)
            input t_sCInvoice.Company_ID, (CompanyID)
            input viUsrId, (UsrID)) in BBusinessComponent >

        if not vlFcQueryRecordsAvailable
        then do:
            assign vcMessage      = trim(subst(#T-16'You cannot use an invoice status code with allocation status &1 (invoice status code = &2).':150(971)T-16#, {&ALLOCSTATUS-ALLOC-TR},t_sCInvoice.tcReasonCode)) + chr(10) +
                                    trim(subst(#T-17'GL Calendar Year = &1; GL Period = &2; Daybook = &3; Voucher = &4.':255(969)T-17#, string(t_sCInvoice.CInvoicePostingYear), string(t_sCInvoice.CInvoicePostingPeriod), t_sCInvoice.tcJournalCode, string(t_sCInvoice.CInvoiceVoucher)))
                   oiReturnStatus = -1.

            <M-15 run SetMessage
               (input  vcMessage (icMessage), 
                input  '':U (icArguments), 
                input  'tCInvoice.tcReasonCode':U (icFieldName), 
                input  t_sCInvoice.tcReasonCode (icFieldValue), 
                input  'E':U (icType), 
                input  3 (iiSeverity), 
                input  t_sCInvoice.tc_Rowid (icRowid), 
                input  'QadFin-7123':U (icFcMsgNumber), 
                input  '':U (icFcExplanation), 
                input  '':U (icFcIdentification), 
                input  '':U (icFcContext), 
                output viFcReturnSuper (oiReturnStatus)) in BCInvoice>
        end.
    end.
    if (t_sCInvoice.CInvoiceIsInitialStatus = true and  
        t_sCInvoice.tcReasonAllocationStatus <> {&ALLOCSTATUS-NOALLOC})
    then do:
            assign vcMessage = trim(subst(#T-24'You can only create an initial invoice with the allocation status &1.':255(68730)t-24#,{&ALLOCSTATUS-NOALLOC-TR}))                                    
                   oiReturnStatus = -1.

            <M-19 run SetMessage
               (input  vcMessage (icMessage), 
                input  '':U (icArguments), 
                input  'tCInvoice.tcReasonCode':U (icFieldName), 
                input  t_sCInvoice.tcReasonCode (icFieldValue), 
                input  'E':U (icType), 
                input  3 (iiSeverity), 
                input  t_sCInvoice.tc_Rowid (icRowid), 
                input  'QadFin-7772':U (icFcMsgNumber), 
                input  '':U (icFcExplanation), 
                input  '':U (icFcIdentification), 
                input  '':U (icFcContext), 
                output viFcReturnSuper (oiReturnStatus)) in BCInvoice>
     end.
end.