project QadFinancials > class BPaymentCondition > method PreValidateComponent


Parameters


oiReturnStatusoutputintegerReturn status of the method.


Internal usage


QadFinancials
method BPaymentCondition.ValidateComponent


program code (program1/bpaymentcondition.p)

assign oiReturnStatus      = -98
       viLocalReturnStatus = 0.

/* PreValidates all New and Changed Items */
for each t_sPaymentCondition where
         t_sPaymentCondition.tc_Status <> 'D':U:
                  
    /* The fields which cannot be modified within the modify mode */
    /* only handle alreadyused field for modified records */
    if t_sPaymentCondition.tc_Status = 'C':U
    then do:    
        find t_iPaymentCondition where 
             t_iPaymentCondition.tc_Rowid = t_sPaymentCondition.tc_Rowid 
             no-error.
        if available t_iPaymentCondition and
                     t_iPaymentCondition.PaymentConditionPaymentTyp <> t_sPaymentCondition.PaymentConditionPaymentTyp
        then do:
            if t_sPaymentCondition.tlPaymentConditionIsAlreadyUsed = false
            then do:
                <M-1 run ApiIsPaymentConditionAlreadyUsed
                   (input  viCompanyId (iiCompanyId), 
                    input  t_sPaymentCondition.PaymentCondition_ID (iiPaymentConditionID), 
                    input  '':U (icPaymentConditionCode), 
                    output t_sPaymentCondition.tlPaymentConditionIsAlreadyUsed (olIsPaymentConditionAlreadyUsed), 
                    output viFcReturnSuper (oiReturnStatus)) in BPaymentCondition>
                if viFcReturnSuper <> 0 and viLocalReturnStatus >= 0
                then assign viLocalReturnStatus = viFcReturnSuper.                                                                   
            end. /* t_sPaymentCondition.tlPaymentConditionIsAlreadyUsed = false */
            if t_sPaymentCondition.tlPaymentConditionIsAlreadyUsed
            then do:
                <M-2 run SetMessage
          (input  #T-3'You cannot modify the credit terms type when it has already been used.':150(2951)t-3# (icMessage), 
           input  '':U (icArguments), 
           input  'tPaymentCondition.PaymentConditionPaymentTyp':U (icFieldName), 
           input  t_sPaymentCondition.PaymentConditionPaymentTyp (icFieldValue), 
           input  'E':U (icType), 
           input  3 (iiSeverity), 
           input  t_sPaymentCondition.tc_Rowid (icRowid), 
           input  'QADFIN-2252':U (icFcMsgNumber), 
           input  '' (icFcExplanation), 
           input  '' (icFcIdentification), 
           input  '' (icFcContext), 
           output viFcReturnSuper (oiReturnStatus)) in BPaymentCondition>
                assign viLocalReturnStatus = -1.
            end. /* if t_sPaymentCondition.tlPaymentConditionIsAlreadyUsed */
        end. /* if available t_iPaymentCondition and ... */
    end. /* if(t_sPaymentCondition.tc_Status = 'C':U) */
    
    if (t_sPaymentCondition.PaymentConditionPaymentTyp = {&PAYMENTCONDITIONPAYMENTTYPE-STAGED})
    then do:
        /* validate the percentage sum for modified records and new records */
        assign vdStagedPercSum = 0.       
        for each t_sPaymentConditionStaged where 
                 t_sPaymentConditionStaged.PaymentCondition_ID = t_sPaymentCondition.PaymentCondition_ID and 
                 t_sPaymentConditionStaged.tc_Status <> 'D':U:

            assign vdStagedPercSum = vdStagedPercSum + t_sPaymentConditionStaged.PaymentConditionStagedPerc.             

            if t_sPaymentConditionStaged.tcStagedPaymentConditionCode = "" or 
               t_sPaymentConditionStaged.tcStagedPaymentConditionCode = ? then
               assign vlStagedCodeIsBlank = YES.

        end. /* end of for each t_sPaymentConditionStaged */
        /* showing a message if staged percentage sum is not equal to 100 */
        if vdStagedPercSum <> 100
        then do:            
            <M-4 run SetMessage
          (input  #T-4'The sum of all staged credit terms percentages is not equal to 100%.':150(47890)t-4# (icMessage), 
           input  '':U (icArguments), 
           input  'tPaymentConditionStaged.PaymentConditionStagedPerc':U (icFieldName), 
           input  vdStagedPercSum (icFieldValue), 
           input  'E':U (icType), 
           input  3 (iiSeverity), 
           input  t_sPaymentCondition.tc_Rowid (icRowid), 
           input  'QadFin-5142':U (icFcMsgNumber), 
           input  '':U (icFcExplanation), 
           input  '':U (icFcIdentification), 
           input  '':U (icFcContext), 
           output viFcReturnSuper (oiReturnStatus)) in BPaymentCondition>
           assign viLocalReturnStatus = -1.
        end. /* end of if sum is no equal to 100 */

        if vlStagedCodeIsBlank = YES then do: 

            <M-6 run SetMessage
               (input  trim(#T-16'You cannot enter a staged payment with a blank code.':90(65903)T-16#) (icMessage), 
                input  '':U (icArguments), 
                input  't_sPaymentConditionStaged.tcStagedPaymentConditionCode':U (icFieldName), 
                input  '':U (icFieldValue), 
                input  'E':U (icType), 
                input  3 (iiSeverity), 
                input  t_sPaymentCondition.tc_Rowid (icRowid), 
                input  'QadFin-7532':U (icFcMsgNumber), 
                input  '':U (icFcExplanation), 
                input  '':U (icFcIdentification), 
                input  '':U (icFcContext), 
                output viFcReturnSuper (oiReturnStatus)) in BPaymentCondition>
            assign viLocalReturnStatus = -1.
        end. /* end of if staged payment code is blank */    
    end. /* end of if payment condition type is staged */

    /* validation if the paymentcondition has been used in the domainproperty, then the discount should
      always be zero */
    if (t_sPaymentCondition.PaymentConditionPaymentTyp = {&PAYMENTCONDITIONPAYMENTTYPE-NORMAL})
    then do:
        <Q-86 run DomainPropertyByCreditTermId (all) (Read) (NoCache)
           (input t_sPaymentCondition.PaymentCondition_ID, (DeductionPaymentConditionId)
            input t_sPaymentCondition.PaymentCondition_ID, (PrepayPaymentConditionId)
            output dataset tqDomainPropertyByCreditTermId) in BDomainProperty>
        find first tqDomainPropertyByCreditTermId no-error.
        if available tqDomainPropertyByCreditTermId
        then do:
            if t_sPaymentCondition.PaymentConditionPercentage <> 0 or
               t_sPaymentCondition.PaymentConditionDayMthDisc <> 0
            then do:
                <M-71 run SetMessage
                   (input  trim(#T-36'You cannot enter the discount value or discount periods value when the credit term has been used in the domain.':150(638033113)T-36#) (icMessage), 
                    input  '':U (icArguments), 
                    input  '':U (icFieldName), 
                    input  '':U (icFieldValue), 
                    input  'E':U (icType), 
                    input  3 (iiSeverity), 
                    input  t_sPaymentCondition.tc_Rowid (icRowid), 
                    input  'qadfin-275314':U (icFcMsgNumber), 
                    input  '':U (icFcExplanation), 
                    input  '':U (icFcIdentification), 
                    input  '':U (icFcContext), 
                    output viFcReturnSuper (oiReturnStatus)) in BPaymentCondition>
            assign viLocalReturnStatus = -1.
            end.
        end.
    end. /* if (t_sPaymentCondition.PaymentConditionPaymentTyp = {&PAYMENTCONDITIONPAYMENTTYPE-NORMAL}) */
end. /* for each t_sPaymentCondition ... */

assign oiReturnStatus = viLocalReturnStatus.