project QadFinancials > class BCInvoice > method ValidateComponentPostDueDate

Description

Method holding the validations on the due date comparing with the invoicedate


Parameters


oiReturnStatusoutputintegerReturn status of the method.


Internal usage


QadFinancials
method BCInvoice.ValidateComponentPost


program code (program5/bcinvoice.p)

/* ================== */
    /* Exception handling */
    /* ================== */
    assign oiReturnStatus      = -98
           viLocalReturnStatus = 0.
    
    /* ==================================================================================================================================================================== */
    /* Due date cannot be before invoice date - but this is not the case if the invoice has stage-payment-coditions that are all pointing to a fixed-date payment-condition */
    /* ==================================================================================================================================================================== */
    if t_sCInvoice.CInvoiceDueDate  < t_sCInvoice.CInvoiceDate and 
       (t_sCInvoice.tc_Status = "N":U or
        (t_sCInvoice.tc_Status = "C":U and
         (t_sCInvoice.CInvoiceDate    <> t_iCInvoice.CInvoiceDate Or
          t_sCInvoice.CInvoiceDueDate <> t_iCInvoice.CInvoiceDueDate)))
    then do :
        if t_sCInvoice.tcNormalPaymentConditionType = {&PAYMENTCONDITIONPAYMENTTYPE-STAGED} 
        then do :
            assign vlAllFixedDateStages = true.
            <Q-35 run PaymentConditionStagedByID  (Start) in BPaymentCondition >
            for each tCInvoiceStage where 
                     tCInvoiceStage.tc_ParentRowid  = tCInvoice.tc_Rowid and 
                     tCInvoiceStage.tc_Status      <> "D":U :
                <Q-19 run PaymentConditionStagedByID (all) (Read) (NoCache)
                   (input t_sCInvoiceStage.PaymentConditionStaged_ID, (PaymentConditionStagedID)
                    output dataset tqPaymentConditionStagedByID) in BPaymentCondition >
                Find tqPaymentConditionStagedByID where 
                     tqPaymentConditionStagedByID.tiPaymentConditionStaged_ID   = t_sCInvoiceStage.PaymentConditionStaged_ID and 
                     (tqPaymentConditionStagedByID.ttPaymentConditionBaseDate   = ?  or 
                      tqPaymentConditionStagedByID.tiPaymentConditionDaysMonths <> 0 or
                      tqPaymentConditionStagedByID.tiPaymentConditionSupplDays  <> 0 or
                      tqPaymentConditionStagedByID.tiPaymentConditionBaseDays   <> 0)
                     no-lock no-error.
                if available tqPaymentConditionStagedByID
                then do :
                    assign vlAllFixedDateStages = false.
                    Leave.
                end. /* if available tqPaymentConditionStagedByID */
            end. /* for each tCInvoiceStage where  */
            <Q-47 run PaymentConditionStagedByID  (Stop) in BPaymentCondition >
        end. /* if t_sCInvoice.tcNormalPaymentConditionType = {&PAYMENTCONDITIONPAYMENTTYPE-STAGED}  */
        else assign vlAllFixedDateStages = false.
        if vlAllFixedDateStages = false
        then do :
            assign vcDatetemp = <M-45 DisplayDate  (input  t_sCInvoice.CInvoiceDueDate (itDate)) in BCInvoice>
                   vcDatetemp1 =  <M-7 DisplayDate  (input  t_sCInvoice.CInvoiceDate (itDate)) in BCInvoice>.
            assign viLocalReturnStatus = -1
                   vcMessage           = trim(substitute(#T-87'The due date (&1) cannot be before the invoice date (&2).':255(42114699)T-87#,vcDatetemp,vcDatetemp1)).
           
            <M-34 run SetMessage
               (input  vcMessage (icMessage), 
                input  '':U (icArguments), 
                input  'tCInvoice.CInvoiceDueDate':U (icFieldName), 
                input  vcDatetemp (icFieldValue), 
                input  'E':U (icType), 
                input  3 (iiSeverity), 
                input  t_sCInvoice.tc_Rowid (icRowid), 
                input  'QadFin-390074':U (icFcMsgNumber), 
                input  '':U (icFcExplanation), 
                input  '':U (icFcIdentification), 
                input  '':U (icFcContext), 
                output viFcReturnSuper (oiReturnStatus)) in BCInvoice>
        end. /* if AllFixedDateStages = false */
    end. /* if t_sCInvoice.CInvoiceDueDate  < t_sCInvoice.CInvoiceDate */
        
    /* ================== */
    /* Exception handling */
    /* ================== */
    assign oiReturnStatus = viLocalReturnStatus.