project QadFinancials > class BDInvoice > method ValidateComponentAllModify

Description

This method is a submethod of ValidateComponentAll.

This method validates some fields of the Debtor Invoice that can't be modified.


Parameters


oiReturnStatusoutputintegerReturn status of the method.


Internal usage


QadFinancials
method BDInvoice.ValidateComponentAll


program code (program5/bdinvoice.p)

/* ======================================================================== */
/* IMPORTANT: This method is run from ValidateComponentAll                  */
/* The code in this method is nested within the for each t_sDInvoice        */
/* This can only work when both methods are defined in the same segment (5) */
/* ======================================================================== */
    
if t_sDInvoice.tc_status = "C":U 
then do:
    find first t_iDInvoice where
               t_iDInvoice.tc_Rowid = t_sDInvoice.tc_Rowid
               no-error.
    if available t_iDInvoice
    then do:
        /* ================================================ */
        /* Invoice Certification fields may not be modified */
        /* ================================================ */
        if t_sDInvoice.DInvoiceInvCertCertificate   <> t_iDInvoice.DInvoiceInvCertCertificate   or
           t_sDInvoice.DInvoiceInvCertKey           <> t_iDInvoice.DInvoiceInvCertKey           or
           t_sDInvoice.DInvoiceInvCertSignatureCurr <> t_iDInvoice.DInvoiceInvCertSignatureCurr or
           t_sDInvoice.DInvoiceInvCertSignaturePrev <> t_iDInvoice.DInvoiceInvCertSignaturePrev
        then do:
            assign vcMessage     = #T-58'Invoice Certification fields can not be modified after creation.':255(611912985)T-58# + chr(10) +
                                   substitute(#T-37'Invoice Certification Certificate (New - Old): &1 - &2':255(733445926)T-37#, t_sDInvoice.DInvoiceInvCertCertificate, t_iDInvoice.DInvoiceInvCertCertificate) + chr(10) +
                                   substitute(#T-93'Invoice Certification Key (New - Old): &1 - &2':255(739265283)T-93#, t_sDInvoice.DInvoiceInvCertKey, t_iDInvoice.DInvoiceInvCertKey) + chr(10) +
                                   substitute(#T-45'Invoice Certification Signature Current (New - Old): &1 - &2':255(648403153)T-45#, t_sDInvoice.DInvoiceInvCertSignatureCurr, t_iDInvoice.DInvoiceInvCertSignatureCurr) + chr(10) +
                                   substitute(#T-40'Invoice Certification Signature Previous (New - Old): &1 - &2':255(389070722)T-40#, t_sDInvoice.DInvoiceInvCertSignaturePrev, t_iDInvoice.DInvoiceInvCertSignaturePrev)
                   oiReturnStatus = -1.
            <M-85 run SetMessage
               (input  vcMessage (icMessage), 
                input  '' (icArguments), 
                input  'tDInvoice.DInvoiceInvCertCertificate':U (icFieldName), 
                input  t_sDInvoice.DInvoiceInvCertCertificate (icFieldValue), 
                input  'E':U (icType), 
                input  3 (iiSeverity), 
                input  t_sDInvoice.tc_Rowid (icRowid), 
                input  'qadfin-863480':U (icFcMsgNumber), 
                input  '' (icFcExplanation), 
                input  '' (icFcIdentification), 
                input  '' (icFcContext), 
                output viFcReturnSuper (oiReturnStatus)) in BDInvoice>
        end. /* if t_sDInvoice.DInvoiceInvCertCertificate   <> t_iDInvoice.DInvoiceInvCertCertificate   or */

        if t_iDInvoice.LinkedDInvoice_ID <> t_sDInvoice.LinkedDInvoice_ID and
           t_iDInvoice.LinkedDInvoice_ID <> 0 and
           t_iDInvoice.LinkedDInvoice_ID <> ?
        then do:
            assign oiReturnStatus = -1.
            <M-95 run SetMessage
               (input  #T-69'Linked Invoice cannot be modified':255(866022244)T-69# (icMessage), 
                input  '':U (icArguments), 
                input  't_sDInvoice.LinkedDInvoice_ID':U (icFieldName), 
                input  t_sDInvoice.LinkedDInvoice_ID (icFieldValue), 
                input  'E':U (icType), 
                input  3 (iiSeverity), 
                input  t_sDInvoice.tc_Rowid (icRowid), 
                input  'QadFin-682168':U (icFcMsgNumber), 
                input  '':U (icFcExplanation), 
                input  '':U (icFcIdentification), 
                input  '':U (icFcContext), 
                output viFcReturnSuper (oiReturnStatus)) in BDInvoice>       
        end.
       
        if t_sDInvoice.DInvoiceIsTaxable <> t_iDInvoice.DInvoiceIsTaxable
        then do:
            assign vcMessage = trim(#T-32'Invoice Taxable cannot be modified':255(591287479)T-32#)
                   oiReturnStatus = -1.
            <M-30 run SetMessage
               (input  vcMessage (icMessage), 
                input  '' (icArguments), 
                input  'tDInvoice.DInvoiceIsTaxExcluded':U (icFieldName), 
                input  t_sDInvoice.DInvoiceIsTaxExcluded (icFieldValue), 
                input  'E':U (icType), 
                input  3 (iiSeverity), 
                input  '' (icRowid), 
                input  'QadFin-9671':U (icFcMsgNumber), 
                input  '' (icFcExplanation), 
                input  '' (icFcIdentification), 
                input  '' (icFcContext), 
                output viFcReturnSuper (oiReturnStatus)) in BDInvoice>
        end.
    
        if t_sDInvoice.DInvoiceIsTaxExcluded <> t_iDInvoice.DInvoiceIsTaxExcluded
        then do:
          <M-27 run SetMessage
             (input  #T-29'Tax Excluded cannot be modified':100(413957481)T-29# (icMessage), 
              input  '' (icArguments), 
              input  'tDInvoice.DInvoiceIsTaxExcluded':U (icFieldName), 
              input  t_sDInvoice.DInvoiceIsTaxExcluded (icFieldValue), 
              input  'E':U (icType), 
              input  3 (iiSeverity), 
              input  '' (icRowid), 
              input  'QadFin-9670':U (icFcMsgNumber), 
              input  '' (icFcExplanation), 
              input  '' (icFcIdentification), 
              input  '' (icFcContext), 
              output viFcReturnSuper (oiReturnStatus)) in BDInvoice>
         oiReturnStatus = -1.         
        end.
        
        if (t_sDInvoice.DInvoiceIsTaxExcluded = false and 
            (t_sDInvoice.DInvoiceOriginalDebitTC  <> t_iDInvoice.DInvoiceOriginalDebitTC or
             t_sDInvoice.DInvoiceOriginalCreditTC <> t_iDInvoice.DInvoiceOriginalCreditTC))   OR
           (t_sDInvoice.DInvoiceIsTaxExcluded = true and 
            (t_sDInvoice.DInvoiceVatBaseDebitTC  <> t_iDInvoice.DInvoiceVatBaseDebitTC or
             t_sDInvoice.DInvoiceVatBaseCreditTC <> t_iDInvoice.DInvoiceVatBaseCreditTC))
        then do:
            assign vcMessage = trim(substitute(#T-23'TC Invoice Amount cannot be modified. Original value: &1, Current value: &2':255(733742780)T-23#,
                                               (if t_sDInvoice.DInvoiceIsTaxExcluded = false
                                                then (t_iDInvoice.DInvoiceOriginalDebitTC - t_iDInvoice.DInvoiceOriginalCreditTC)
                                                else (t_iDInvoice.DInvoiceVatBaseDebitTC - t_iDInvoice.DInvoiceVatBaseCreditTC)),
                                               (if t_sDInvoice.DInvoiceIsTaxExcluded = false
                                                then (t_sDInvoice.DInvoiceOriginalDebitTC - t_sDInvoice.DInvoiceOriginalCreditTC)
                                                else (t_sDInvoice.DInvoiceVatBaseDebitTC - t_sDInvoice.DInvoiceVatBaseCreditTC))))
                   oiReturnStatus = -1.
            <M-10 run SetMessage
               (input  vcMessage (icMessage), 
                input  '' (icArguments), 
                input  '' (icFieldName), 
                input  '' (icFieldValue), 
                input  'E':U (icType), 
                input  3 (iiSeverity), 
                input  '' (icRowid), 
                input  'QadFin-7411':U (icFcMsgNumber), 
                input  '' (icFcExplanation), 
                input  '' (icFcIdentification), 
                input  '' (icFcContext), 
                output viFcReturnSuper (oiReturnStatus)) in BDInvoice>
        end.
        
        if (t_sDInvoice.DInvoiceIsTaxExcluded = false and 
            (t_sDInvoice.DInvoiceOriginalDebitLC  <> t_iDInvoice.DInvoiceOriginalDebitLC or
             t_sDInvoice.DInvoiceOriginalCreditLC <> t_iDInvoice.DInvoiceOriginalCreditLC))   OR
           (t_sDInvoice.DInvoiceIsTaxExcluded = true and 
            (t_sDInvoice.DInvoiceVatBaseDebitLC  <> t_iDInvoice.DInvoiceVatBaseDebitLC or
             t_sDInvoice.DInvoiceVatBaseCreditLC <> t_iDInvoice.DInvoiceVatBaseCreditLC))
        then do:
            assign vcMessage = trim(substitute(#T-25'LC Invoice Amount cannot be modified. Original value: &1, Current value: &2':255(733744668)T-25#,
                                               (if t_sDInvoice.DInvoiceIsTaxExcluded = false
                                                then (t_iDInvoice.DInvoiceOriginalDebitLC - t_iDInvoice.DInvoiceOriginalCreditLC)
                                                else (t_iDInvoice.DInvoiceVatBaseDebitLC - t_iDInvoice.DInvoiceVatBaseCreditLC)),
                                               (if t_sDInvoice.DInvoiceIsTaxExcluded = false
                                                then (t_sDInvoice.DInvoiceOriginalDebitLC - t_sDInvoice.DInvoiceOriginalCreditLC)
                                                else (t_sDInvoice.DInvoiceVatBaseDebitLC - t_sDInvoice.DInvoiceVatBaseCreditLC))))
                   oiReturnStatus = -1.
            <M-11 run SetMessage
               (input  vcMessage (icMessage), 
                input  '' (icArguments), 
                input  '' (icFieldName), 
                input  '' (icFieldValue), 
                input  'E':U (icType), 
                input  3 (iiSeverity), 
                input  '' (icRowid), 
                input  'QadFin-7412':U (icFcMsgNumber), 
                input  '' (icFcExplanation), 
                input  '' (icFcIdentification), 
                input  '' (icFcContext), 
                output viFcReturnSuper (oiReturnStatus)) in BDInvoice>
        end.
    
        if t_sDInvoice.DInvoiceExchangeRate <> t_iDInvoice.DInvoiceExchangeRate
        then do:
          <M-12 run SetMessage
             (input  #T-18'You cannot modify the Invoice exchange rate.':100(887225165)T-18# (icMessage), 
              input  '' (icArguments), 
              input  'tDInvoice.DInvoiceExchangeRate':U (icFieldName), 
              input  t_sDInvoice.DInvoiceExchangeRate (icFieldValue), 
              input  'E':U (icType), 
              input  3 (iiSeverity), 
              input  '' (icRowid), 
              input  'QadFin-7413':U (icFcMsgNumber), 
              input  '' (icFcExplanation), 
              input  '' (icFcIdentification), 
              input  '' (icFcContext), 
              output viFcReturnSuper (oiReturnStatus)) in BDInvoice>
         oiReturnStatus = -1.         
        end.
    
        if t_sDInvoice.DinvoiceRateScale <> t_iDInvoice.DinvoiceRateScale
        then do:
         <M-13 run SetMessage
            (input  #T-21'Invoice Rate Scale cannot be modified':100(878015398)T-21# (icMessage), 
             input  '' (icArguments), 
             input  tDInvoice.DInvoiceRateScale (icFieldName), 
             input  'tDInvoice.DInvoiceRateScale':U (icFieldValue), 
             input  'E':U (icType), 
             input  3 (iiSeverity), 
             input  '' (icRowid), 
             input  'QadFin-7414':U (icFcMsgNumber), 
             input  '' (icFcExplanation), 
             input  '' (icFcIdentification), 
             input  '' (icFcContext), 
             output viFcReturnSuper (oiReturnStatus)) in BDInvoice>
         oiReturnStatus = -1.         
        end.
              
        /* Modification on TSM Number is only allowed as long as the invoice
        is not included in a payment in treatment or is (partially) paid */
        if not(t_sDInvoice.DInvoiceIsOpen          = True and
               t_sDInvoice.DInvoiceIsSelected      = False and
            (((t_sDInvoice.DInvoiceType            = {&INVOICETYPE-INVOICE} or
               t_sDInvoice.DInvoiceType            = {&INVOICETYPE-FINANCECHARGE} or
               t_sDInvoice.DInvoiceType            = {&INVOICETYPE-INVOICECORRECTION})and
               t_sDInvoice.DInvoiceBalanceDebitTC  = t_sDInvoice.DInvoiceOriginalDebitTC) or
             ((t_sDInvoice.DInvoiceType            = {&INVOICETYPE-CREDITNOTE} or
               t_sDInvoice.DInvoiceType            = {&INVOICETYPE-CREDITNOTECORRECTION})and
               t_sDInvoice.DInvoiceBalanceCreditTC = t_sDInvoice.DInvoiceOriginalCreditTC)))
        then do:
            if t_iDInvoice.DInvoiceTSMNumber   <> t_sDInvoice.DInvoiceTSMNumber
            then do:
                assign vcMessage      = trim(#T-4'You cannot modify the TSM number because the invoice is (partly) paid or included in a payment that is currently being processed.':150(1223)T-4#) + chr(10) +
                                        trim(substitute(#T-5'GL Calendar Year = &1; GL Period = &2; Daybook = &3; Voucher = &4.':255(969)T-5#,string(t_sDInvoice.DInvoicePostingYear),string(t_sDInvoice.DInvoicePostingPeriod), t_sDInvoice.tcJournalCode, string(t_sDInvoice.DInvoiceVoucher)))
                       oiReturnStatus = -1.
                <M-1 run SetMessage (input  vcMessage (icMessage),
                 input  '':U (icArguments),
                 input  'tDInvoice.DInvoiceTSMNumber':U (icFieldName),
                 input  t_sDInvoice.DInvoiceTSMNumber (icFieldValue),
                 input  'E':U (icType),
                 input  3 (iiSeverity),
                 input  t_sDInvoice.tc_Rowid (icRowid),
                 input  'QADFIN-4468':U (icFcMsgNumber),
                 input  '' (icFcExplanation),
                 input  '' (icFcIdentification),
                 input  '' (icFcContext),
                 output viFcReturnSuper (oiReturnStatus)) in BDInvoice>
            end.
        end.
        
        /* modification of Payment allowed from 'yes' to 'no' only allowed if no movements  */
        /* were registered on the debtor credit note                                        */
        if t_sDInvoice.DInvoiceType = {&INVOICETYPE-CREDITNOTE} or
           t_sDInvoice.DInvoiceType = {&INVOICETYPE-CREDITNOTECORRECTION}
        then do:
            if t_iDInvoice.DInvoiceIsPaymentAllowed = yes and
               t_sDInvoice.DInvoiceIsPaymentAllowed = no  and
               can-find(first t_sDInvoiceMovement where
                              t_sDInvoiceMovement.tc_ParentRowid = t_sDInvoice.tc_Rowid)
            then do:
                assign vcMessage      = trim(#T-6'You can only switch from TRUE to FALSE if no activity was registered on the customer credit note.':150(1768)T-6#) + chr(10) +
                                        trim(substitute(#T-7'GL Calendar Year = &1; GL Period = &2; Daybook = &3; Voucher = &4.':255(969)T-7#,string(t_sDInvoice.DInvoicePostingYear),string(t_sDInvoice.DInvoicePostingPeriod), t_sDInvoice.tcJournalCode, string(t_sDInvoice.DInvoiceVoucher)))
                       oiReturnStatus = -1.
                <M-2 run SetMessage (input  vcMessage (icMessage),
                 input  '':U (icArguments),
                 input  'tDInvoice.DInvoiceIsPaymentAllowed':u (icFieldName),
                 input  t_sDInvoice.DInvoiceIsPaymentAllowed (icFieldValue),
                 input  'E':U (icType),
                 input  3 (iiSeverity),
                 input  t_sDInvoice.tc_Rowid (icRowid),
                 input  'QADFIN-4469':U (icFcMsgNumber),
                 input  '' (icFcExplanation),
                 input  '' (icFcIdentification),
                 input  '' (icFcContext),
                 output viFcReturnSuper (oiReturnStatus)) in BDInvoice>
            end.
        end.
    end.
end.


for each t_sDInvoiceBank where
        (t_sDInvoiceBank.tc_status         = "C":U or
         t_sDInvoiceBank.tc_Status         = "D":U ) and
         t_sDInvoiceBank.tc_ParentRowid    = t_sDInvoice.tc_Rowid and
         /* PWI only for the records that are modified by another program then payment selection */
         t_sDInvoiceBank.tlValidatePayment = true:
    find first t_iDInvoice where
               t_iDInvoice.tc_Rowid = t_sDInvoiceBank.tc_ParentRowid
               no-error.
    if not available t_iDInvoice
    then next.

    if t_iDInvoice.DInvoiceIsSelected = true and
       t_sDInvoice.DInvoiceIsSelected = true
    then do:
        find first t_iDInvoiceBank where
                   t_iDInvoiceBank.tc_Rowid = t_sDInvoiceBank.tc_Rowid
               no-error.
        if available t_iDInvoiceBank
        then do:
            if t_iDInvoiceBank.DInvoiceBankToPayTC <> t_sDInvoiceBank.DInvoiceBankToPayTC
            then do:
                assign vcMessage      = trim(#T-8'You cannot modify the payment accounts because the invoice is (partly) paid or included in a payment that is currently being processed.':150(1224)T-8#) + chr(10) +
                                        trim(substitute(#T-9'GL Calendar Year = &1; GL Period = &2; Daybook = &3; Voucher = &4.':255(969)T-9#,string(t_iDInvoice.DInvoicePostingYear),string(t_iDInvoice.DInvoicePostingPeriod), t_iDInvoice.tcJournalCode, string(t_iDInvoice.DInvoiceVoucher)))
                       oiReturnStatus = -1.
                <M-3 run SetMessage (input  vcMessage (icMessage), 
                                      input  '':U (icArguments), 
                                      input  '':U (icFieldName), 
                                      input  '':U (icFieldValue), 
                                      input  'E':U (icType), 
                                      input  3 (iiSeverity), 
                                      input  t_sDInvoice.tc_Rowid (icRowid), 
                                      input  'QADFIN-4470':U (icFcMsgNumber), 
                                      input  '' (icFcExplanation), 
                                      input  '' (icFcIdentification), 
                                      input  '' (icFcContext), 
                                      output viFcReturnSuper (oiReturnStatus)) in BDInvoice>
                return.
            end.
        end.
    end.
end.