project QadFinancials > class BBillSchedule > method ValidateComponentPost

validation procedure


Parameters


oiReturnStatusoutputintegerReturn status of the method.


Internal usage


QadFinancials
method BBillSchedule.ValidateComponent


program code (program1/bbillschedule.p)

assign oiReturnStatus      = -98
       viLocalReturnStatus = 0
       vcMessageBuffer     = "".

/* PreValidates all New and Changed Items */
for each t_sBillSchedule where
         t_sBillSchedule.tc_Status <> 'D':U:
    /* Day in month pattern */
    if t_sBillSchedule.BillSchedulePattern = {&BILLSCHEDULEPATTERN-DAYINMTH} 
    then do:
        /* First Date cannot be empty. */
        if t_sBillSchedule.BillScheduleMthBillDay1 =  0
        then do:
            assign vcMessageBuffer = #T-7'Occurrence':255(101094581)T-7# + " ":U + '1':U.
            <M-73 run SetMessage
               (input  trim(substitute(#T-54'If you select Day in Month, you must specify a value in the Billing Day (&1) field.':255(884870611)T-54#, vcMessageBuffer)) (icMessage), 
                input  '':U (icArguments), 
                input  'tBillSchedule.BillScheduleMthBillDay1':U (icFieldName), 
                input  t_sBillSchedule.BillScheduleMthBillDay1 (icFieldValue), 
                input  'E':U (icType), 
                input  3 (iiSeverity), 
                input  ? (icRowid), 
                input  'qadfin-709262':U (icFcMsgNumber), 
                input  '':U (icFcExplanation), 
                input  '':U (icFcIdentification), 
                input  '':U (icFcContext), 
                output viFcReturnSuper (oiReturnStatus)) in BBillSchedule>
            assign oiReturnStatus = -1.
            return.
        end.

        /* Validate billing day range */
        <M-41 run ValidateCompnentDayRange
           (input  t_sBillSchedule.BillScheduleMthBillDay1 (iiTargetField), 
            input  'tBillSchedule.BillScheduleMthBillDay1':U (icTargetFieldName), 
            output viFcReturnSuper (oiReturnStatus)) in BBillSchedule>
        if viFcReturnSuper <> 0 then assign viLocalReturnStatus = viFcReturnSuper.

        <M-19 run ValidateCompnentDayRange
           (input  t_sBillSchedule.BillScheduleMthBillDay2 (iiTargetField), 
            input  'tBillSchedule.BillScheduleMthBillDay2':U (icTargetFieldName), 
            output viFcReturnSuper (oiReturnStatus)) in BBillSchedule>
        if viFcReturnSuper <> 0 then assign viLocalReturnStatus = viFcReturnSuper.

        <M-14 run ValidateCompnentDayRange
           (input  t_sBillSchedule.BillScheduleMthBillDay3 (iiTargetField), 
            input  'tBillSchedule.BillScheduleMthBillDay3':U (icTargetFieldName), 
            output viFcReturnSuper (oiReturnStatus)) in BBillSchedule>
        if viFcReturnSuper <> 0 then assign viLocalReturnStatus = viFcReturnSuper.

        <M-43 run ValidateCompnentDayRange
           (input  t_sBillSchedule.BillScheduleMthBillDay4 (iiTargetField), 
            input  'tBillSchedule.BillScheduleMthBillDay4':U (icTargetFieldName), 
            output viFcReturnSuper (oiReturnStatus)) in BBillSchedule>
        if viFcReturnSuper <> 0 then assign viLocalReturnStatus = viFcReturnSuper.

        if viLocalReturnStatus < 0 
        then do:
            assign oiReturnStatus = viLocalReturnStatus.
            return.
        end.

        /* Date must be set one by one */
        if (t_sBillSchedule.BillScheduleMthBillDay1 =  0 and 
            (t_sBillSchedule.BillScheduleMthBillDay2 <> 0 or
            t_sBillSchedule.BillScheduleMthBillDay3 <> 0 or
            t_sBillSchedule.BillScheduleMthBillDay4 <> 0)) or
           (t_sBillSchedule.BillScheduleMthBillDay2 =  0 and 
            (t_sBillSchedule.BillScheduleMthBillDay3 <> 0 or
            t_sBillSchedule.BillScheduleMthBillDay4 <> 0)) or 
           (t_sBillSchedule.BillScheduleMthBillDay3 =  0 and 
            t_sBillSchedule.BillScheduleMthBillDay4 <> 0)
        then do:
             <M-23 run SetMessage
                (input  trim(#T-42'You must set the billing days consecutively without gaps.':255(428283025)T-42#) (icMessage), 
                 input  '':U (icArguments), 
                 input  '':U (icFieldName), 
                 input  '':U (icFieldValue), 
                 input  'E':U (icType), 
                 input  3 (iiSeverity), 
                 input  ? (icRowid), 
                 input  'qadfin-662622':U (icFcMsgNumber), 
                 input  '':U (icFcExplanation), 
                 input  '':U (icFcIdentification), 
                 input  '':U (icFcContext), 
                 output viFcReturnSuper (oiReturnStatus)) in BBillSchedule>
            assign oiReturnStatus = -1.
            return.
        end.

        /* Bill date must be less than next one */
        <M-48 run ValidateComponentBillingDayCompare
           (input  t_sBillSchedule.BillScheduleMthBillDay2 (iiTargetBillingDay), 
            input  'tBillSchedule.BillScheduleMthBillDay2':U (icTargetFieldName), 
            input  t_sBillSchedule.BillScheduleMthBillDay1 (iiPreviousBillingDay), 
            output viFcReturnSuper (oiReturnStatus)) in BBillSchedule>
        if viFcReturnSuper <> 0 then assign viLocalReturnStatus = viFcReturnSuper.

        <M-82 run ValidateComponentBillingDayCompare
           (input  t_sBillSchedule.BillScheduleMthBillDay3 (iiTargetBillingDay), 
            input  'tBillSchedule.BillScheduleMthBillDay3':U (icTargetFieldName), 
            input  t_sBillSchedule.BillScheduleMthBillDay2 (iiPreviousBillingDay), 
            output viFcReturnSuper (oiReturnStatus)) in BBillSchedule>
        if viFcReturnSuper <> 0 then assign viLocalReturnStatus = viFcReturnSuper.

        <M-47 run ValidateComponentBillingDayCompare
           (input  t_sBillSchedule.BillScheduleMthBillDay4 (iiTargetBillingDay), 
            input  'tBillSchedule.BillScheduleMthBillDay4':U (icTargetFieldName), 
            input  t_sBillSchedule.BillScheduleMthBillDay3 (iiPreviousBillingDay), 
            output viFcReturnSuper (oiReturnStatus)) in BBillSchedule>
        if viFcReturnSuper <> 0 then assign viLocalReturnStatus = viFcReturnSuper.

        if viLocalReturnStatus < 0
        then do:
            assign oiReturnStatus = viLocalReturnStatus.
            return.
        end.
    end.
    else do: /* Weekly pattern */
        if not(t_sBillSchedule.BillScheduleIsWeek1InMnth) and 
           not(t_sBillSchedule.BillScheduleIsWeek2InMnth) and
           not(t_sBillSchedule.BillScheduleIsWeek3InMnth) and
           not(t_sBillSchedule.BillScheduleIsWeek4InMnth)
        then do:
            <M-93 run SetMessage
               (input  trim(#T-76'You must choose at least one week for a Weekly pattern.':255(706964756)T-76#) (icMessage), 
                input  '':U (icArguments), 
                input  '':U (icFieldName), 
                input  '':U (icFieldValue), 
                input  'E':U (icType), 
                input  3 (iiSeverity), 
                input  t_sBillSchedule.tc_Rowid (icRowid), 
                input  'qadfin-213542':U (icFcMsgNumber), 
                input  '':U (icFcExplanation), 
                input  '':U (icFcIdentification), 
                input  '':U (icFcContext), 
                output viFcReturnSuper (oiReturnStatus)) in BBillSchedule>
            assign viLocalReturnStatus = -1. 
        end.
    end.

    /* Due date patern is "Months Delay and Due Date"*/
    if t_sBillSchedule.BillScheduleDueDateCalType = {&BILLSCHEDULEDUEDATE-MTHDELAYDUEDAY}
    then do:
        /* validate due date range */
        <M-17 run ValidateCompnentDayRange
           (input  t_sBillSchedule.BillScheduleMthDueDay1 (iiTargetField), 
            input  'tBillSchedule.BillScheduleMthDueDay1':U (icTargetFieldName), 
            output viFcReturnSuper (oiReturnStatus)) in BBillSchedule>
        if viFcReturnSuper <> 0 then assign viLocalReturnStatus = viFcReturnSuper.

        <M-39 run ValidateCompnentDayRange
           (input  t_sBillSchedule.BillScheduleMthDueDay2 (iiTargetField), 
            input  'tBillSchedule.BillScheduleMthDueDay2':U (icTargetFieldName), 
            output viFcReturnSuper (oiReturnStatus)) in BBillSchedule>
        if viFcReturnSuper <> 0 then assign viLocalReturnStatus = viFcReturnSuper.

        <M-92 run ValidateCompnentDayRange
           (input  t_sBillSchedule.BillScheduleMthDueDay3 (iiTargetField), 
            input  'tBillSchedule.BillScheduleMthDueDay3':U (icTargetFieldName), 
            output viFcReturnSuper (oiReturnStatus)) in BBillSchedule>
        if viFcReturnSuper <> 0 then assign viLocalReturnStatus = viFcReturnSuper.

        <M-51 run ValidateCompnentDayRange
           (input  t_sBillSchedule.BillScheduleMthDueDay4 (iiTargetField), 
            input  'tBillSchedule.BillScheduleMthDueDay4':U (icTargetFieldName), 
            output viFcReturnSuper (oiReturnStatus)) in BBillSchedule>
        if viFcReturnSuper <> 0 then assign viLocalReturnStatus = viFcReturnSuper.
        
        if viLocalReturnStatus < 0
        then do:
            assign oiReturnStatus = viLocalReturnStatus.
            return.
        end.

        /* Day In Month */
        if t_sBillSchedule.BillSchedulePattern = {&BILLSCHEDULEPATTERN-DAYINMTH} 
        then do:
            /* validate due date in step with billing date */
            <M-35 run ValidateComponentDueDayForDayInMth
               (input  t_sBillSchedule.BillScheduleMthDueDay1 (iiDueDate), 
                input  'tBillSchedule.BillScheduleMthDueDay1':U (icDueDateFieldName), 
                input  t_sBillSchedule.BillScheduleMthBillDay1 (iiBillingDate), 
                input  t_sBillSchedule.BillScheduleMthDelay1 (iiDelayMth), 
                input  '1':U (icOccuranceNbr), 
                input  'tBillSchedule.BillScheduleMthDelay1':U (icMonthsDelayFieldName), 
                output viFcReturnSuper (oiReturnStatus)) in BBillSchedule>
            if viFcReturnSuper <> 0 then assign viLocalReturnStatus = viFcReturnSuper.
            
            <M-3 run ValidateComponentDueDayForDayInMth
               (input  t_sBillSchedule.BillScheduleMthDueDay2 (iiDueDate), 
                input  'tBillSchedule.BillScheduleMthDueDay2':U (icDueDateFieldName), 
                input  t_sBillSchedule.BillScheduleMthBillDay2 (iiBillingDate), 
                input  t_sBillSchedule.BillScheduleMthDelay2 (iiDelayMth), 
                input  '2':U (icOccuranceNbr), 
                input  'tBillSchedule.BillScheduleMthDelay2':U (icMonthsDelayFieldName), 
                output viFcReturnSuper (oiReturnStatus)) in BBillSchedule>
            if viFcReturnSuper <> 0 then assign viLocalReturnStatus = viFcReturnSuper.
        
            <M-42 run ValidateComponentDueDayForDayInMth
               (input  t_sBillSchedule.BillScheduleMthDueDay3 (iiDueDate), 
                input  'tBillSchedule.BillScheduleMthDueDay3':U (icDueDateFieldName), 
                input  t_sBillSchedule.BillScheduleMthBillDay3 (iiBillingDate), 
                input  t_sBillSchedule.BillScheduleMthDelay3 (iiDelayMth), 
                input  '3':U (icOccuranceNbr), 
                input  'tBillSchedule.BillScheduleMthDelay3':U (icMonthsDelayFieldName), 
                output viFcReturnSuper (oiReturnStatus)) in BBillSchedule>
            if viFcReturnSuper <> 0 then assign viLocalReturnStatus = viFcReturnSuper.
        
            <M-69 run ValidateComponentDueDayForDayInMth
               (input  t_sBillSchedule.BillScheduleMthDueDay4 (iiDueDate), 
                input  'tBillSchedule.BillScheduleMthDueDay4':U (icDueDateFieldName), 
                input  t_sBillSchedule.BillScheduleMthBillDay4 (iiBillingDate), 
                input  t_sBillSchedule.BillScheduleMthDelay4 (iiDelayMth), 
                input  '4':U (icOccuranceNbr), 
                input  'tBillSchedule.BillScheduleMthDelay4':U (icMonthsDelayFieldName), 
                output viFcReturnSuper (oiReturnStatus)) in BBillSchedule>
            if viFcReturnSuper <> 0 then assign viLocalReturnStatus = viFcReturnSuper.
            if viLocalReturnStatus < 0
            then do:
                assign oiReturnStatus = viLocalReturnStatus.
                return.
            end.
        end.
        /* Day In Month */
        else do:
            <M-33 run ValidateComponentDueDayForDayInWeek
               (input  t_sBillSchedule.BillScheduleMthDueDay1 (iiDueDate), 
                input  'tBillSchedule.BillScheduleMthDueDay1':U (icDueDateFieldName), 
                input  t_sBillSchedule.BillScheduleIsWeek1InMnth (ilWeekInMonth), 
                input  t_sBillSchedule.BillScheduleMthDelay1 (iiDelayMth), 
                input  '1':U (icWeekNbr), 
                input  'tBillSchedule.BillScheduleMthDelay1':U (icMonthsDelayFieldName), 
                output viFcReturnSuper (oiReturnStatus)) in BBillSchedule>
            if viFcReturnSuper <> 0 then assign viLocalReturnStatus = viFcReturnSuper.

            <M-75 run ValidateComponentDueDayForDayInWeek
               (input  t_sBillSchedule.BillScheduleMthDueDay2 (iiDueDate), 
                input  'tBillSchedule.BillScheduleMthDueDay2':U (icDueDateFieldName), 
                input  t_sBillSchedule.BillScheduleIsWeek2InMnth (ilWeekInMonth), 
                input  t_sBillSchedule.BillScheduleMthDelay2 (iiDelayMth), 
                input  '2':U (icWeekNbr), 
                input  'tBillSchedule.BillScheduleMthDelay2':U (icMonthsDelayFieldName), 
                output viFcReturnSuper (oiReturnStatus)) in BBillSchedule>
            if viFcReturnSuper <> 0 then assign viLocalReturnStatus = viFcReturnSuper.

            <M-40 run ValidateComponentDueDayForDayInWeek
               (input  t_sBillSchedule.BillScheduleMthDueDay3 (iiDueDate), 
                input  'tBillSchedule.BillScheduleMthDueDay3':U (icDueDateFieldName), 
                input  t_sBillSchedule.BillScheduleIsWeek3InMnth (ilWeekInMonth), 
                input  t_sBillSchedule.BillScheduleMthDelay3 (iiDelayMth), 
                input  '3':U (icWeekNbr), 
                input  'tBillSchedule.BillScheduleMthDelay3':U (icMonthsDelayFieldName), 
                output viFcReturnSuper (oiReturnStatus)) in BBillSchedule>
            if viFcReturnSuper <> 0 then assign viLocalReturnStatus = viFcReturnSuper.

            <M-31 run ValidateComponentDueDayForDayInWeek
               (input  t_sBillSchedule.BillScheduleMthDueDay4 (iiDueDate), 
                input  'tBillSchedule.BillScheduleMthDueDay4':U (icDueDateFieldName), 
                input  t_sBillSchedule.BillScheduleIsWeek4InMnth (ilWeekInMonth), 
                input  t_sBillSchedule.BillScheduleMthDelay4 (iiDelayMth), 
                input  '4':U (icWeekNbr), 
                input  'tBillSchedule.BillScheduleMthDelay4':U (icMonthsDelayFieldName), 
                output viFcReturnSuper (oiReturnStatus)) in BBillSchedule>
            if viFcReturnSuper <> 0 then assign viLocalReturnStatus = viFcReturnSuper.
            if viLocalReturnStatus < 0
            then do:
                assign oiReturnStatus = viLocalReturnStatus.
                return.
            end.
        end.
    end.
end.

assign oiReturnStatus = viLocalReturnStatus.