project QadFinancials > class BCInvoice > method ValidateComponentPostDueDate
Description
Method holding the validations on the due date comparing with the invoicedate
Parameters
oiReturnStatus | output | integer | Return status of the method. |
Internal usage
QadFinancials
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.