project QadFinancials > class BDInvoice > method DefaultValuesDueDates
Description
Default the due date and discount due date if necessary
Parameters
tDIDefault | input | temp-table | Default values |
tDInvoiceDefault | output | temp-table | default output values |
oiReturnStatus | output | integer | Return status of the method. |
Internal usage
unused
program code (program3/bdinvoice.p)
/* due date */
if tDIDefault.tiNormalPaymentConditionId <> 0 or
tDIDefault.tcNormalPaymentConditionCode <> "":U or
tDInvoiceDefault.tiNormalPaymentConditionId <> 0 or
tDInvoiceDefault.tcNormalPaymentConditionCode <> "":U
then do:
assign viId = if tDIDefault.tiNormalPaymentConditionId = 0
then tDInvoiceDefault.tiNormalPaymentConditionId
else tDIDefault.tiNormalPaymentConditionId
vcParam = if tDIDefault.tcNormalPaymentConditionCode = "":U
then tDInvoiceDefault.tcNormalPaymentConditionCode
else tDIDefault.tcNormalPaymentConditionCode.
if tDInvoiceDefault.tcNormalPaymentConditionPayType = "":U
then do:
<Q-6 run PaymentConditionByIdCode (all) (Read) (NoCache)
(input viId, (PaymentConditionId)
input vcParam, (PaymentConditionCode)
output dataset tqPaymentConditionByIdCode) in BPaymentCondition >
for first tqPaymentConditionByIdCode where
tqPaymentConditionByIdCode.tiPaymentCondition_ID = viId or
tqPaymentConditionByIdCode.tcPaymentConditionCode = vcParam:
assign vcPaymentConditionType = tqPaymentConditionByIdCode.tcPaymentConditionPaymentTyp.
end.
end. /* end tDInvoiceDefault.tcNormalPaymentConditionPayType = "":U */
else assign vcPaymentConditionType = tDInvoiceDefault.tcNormalPaymentConditionPayType.
if vcPaymentConditionType <> {&PAYMENTCONDITIONPAYMENTTYPE-STAGED}
then do:
<I-11 {bFcStartAndOpenInstance
&ADD-TO-TRANSACTION = "false"
&CLASS = "BPaymentCondition"}>
<M-5 run CalculateDueDiscountDate
(input viId (iiPaymentConditionID),
input vcParam (icPaymentConditionCode),
input tDIDefault.ttDInvoiceDate (itInvoiceDate),
output tDInvoiceDefault.ttDInvoiceDueDate (otDueDate),
output tDInvoiceDefault.ttDInvoiceDiscountDueDate (otDiscountDate),
output viFcReturnSuper (oiReturnStatus)) in BPaymentCondition>
if viFcReturnSuper < 0 or (viFcReturnSuper > 0 and oiReturnStatus = 0)
then assign oiReturnStatus = viFcReturnSuper.
<I-12 {bFcCloseAndStopInstance
&CLASS = "BPaymentCondition"}>
if oiReturnStatus < 0 then return.
end. /* end vcPaymentConditionType <> {&PAYMENTCONDITIONPAYMENTTYPE-STAGED} */
else do:
for each tDInvoiceStage where
tDInvoiceStage.tc_ParentRowid = tDInvoice.tc_Rowid:
if tDInvoiceStage.tc_Status = "N":U
then delete tDInvoiceStage.
else assign tDInvoiceStage.tc_Status = "D":U.
end. /* end for each tDInvoiceStage */
<Q-7 run PaymentConditionStagedByPC (all) (Read) (NoCache)
(input viID, (ParentPaymentConditionID)
output dataset tqPaymentConditionStagedByPC) in BPaymentCondition >
if can-find (first tqPaymentConditionStagedByPC where
tqPaymentConditionStagedByPC.tiParentPaymentCondition_ID = viId)
then do:
<I-13 {bFcStartAndOpenInstance
&ADD-TO-TRANSACTION = "false"
&CLASS = "BPaymentCondition"}>
assign vlStartBPaymentCondition = true.
end.
for each tqPaymentConditionStagedByPC where
tqPaymentConditionStagedByPC.tiParentPaymentCondition_ID = viId:
<M-8 run AddDetailLine
(input 'DinvoiceStage':U (icTable),
input tDinvoice.tc_rowid (icParentRowid),
output viFcReturnSuper (oiReturnStatus)) in BDInvoice>
if viFcReturnSuper < 0 or (viFcReturnSuper > 0 and oiReturnStatus = 0)
then assign oiReturnStatus = viFcReturnSuper.
if oiReturnStatus < 0 then leave.
assign tDInvoiceStage.DInvoiceStageAmountTC = <M-10 RoundAmount
(input tDIDefault.tdDInvoiceOriginalTC * tqPaymentConditionStagedByPC.tdPaymentConditionStagedPerc / 100 (idUnroundedAmount),
input ? (iiCurrencyID),
input tDInvoiceDefault.tcCurrencyCode (icCurrencyCode)) in business>
tDInvoiceStage.DInvoiceStagePercent = tqPaymentConditionStagedByPC.tdPaymentConditionStagedPerc
tDInvoiceStage.PaymentConditionStaged_ID = tqPaymentConditionStagedByPC.tiPaymentConditionStaged_ID
tDInvoiceStage.tcPaymentConditionCode = tqPaymentConditionStagedByPC.tcPaymentConditionCode
tDInvoiceStage.tcPaymentConditionDescript = tqPaymentConditionStagedByPC.tcPaymentConditionDescript
tDInvoiceStage.tdPaymentConditionPercentage = tqPaymentConditionStagedByPC.tdPaymentConditionPercentage.
<M-9 run CalculateDueDiscountDateNoRead
(input tqPaymentConditionStagedByPC.tcPaymentConditionPeriodType (icPaymentConditionPeriodType),
input tqPaymentConditionStagedByPC.ttPaymentConditionBaseDate (itPaymentConditionBaseDate),
input tqPaymentConditionStagedByPC.tiPaymentConditionDaysMonths (iiPaymentConditionDaysMonths),
input tqPaymentConditionStagedByPC.tiPaymentConditionSupplDays (iiPaymentConditionSupplDays),
input tqPaymentConditionStagedByPC.tiPaymentConditionBaseDays (iiPaymentConditionBaseDays),
input tqPaymentConditionStagedByPC.tiPaymentConditionDueDays (iiPaymentConditionDueDays),
input tDIDefault.ttDInvoiceDate (itInvoiceDate),
input tqPaymentConditionStagedByPC.tiPaymentConditionDayMthDisc (iiPaymentConditionDayMthDisc),
input tqPaymentConditionStagedByPC.tiPaymentConditionSupDayDisc (iiPaymentConditionSupDayDisc),
input tqPaymentConditionStagedByPC.tcPaymentConditionPdDiscType (icPaymentConditionpDiscType),
output tDInvoiceStage.DInvoiceStageDueDate (otDueDate),
output tDInvoiceStage.DInvoiceStageDiscDate (otDiscountDate),
output viExternalReturnStatus (oiReturnStatus)) in BPaymentCondition>
if viExternalReturnStatus < 0 or (viExternalReturnStatus > 0 and oiReturnStatus = 0)
then assign oiReturnStatus = viExternalReturnStatus.
if viExternalReturnStatus < 0 then leave.
end. /* end for each tqPaymentConditionStagedByPC */
if vlStartBPaymentCondition
then do:
<I-14 {bFcCloseAndStopInstance
&CLASS = "BPaymentCondition"}>
if viExternalReturnStatus < 0 then return.
end.
for each tDinvoiceStage where
tDInvoiceStage.tc_ParentRowid = tDInvoice.tc_Rowid
break by tDInvoiceStage.DInvoiceStageDueDate descending:
/* assign the nearest due date to the parent invoice */
assign tDInvoiceDefault.ttDinvoiceDueDate = tDInvoiceStage.DInvoiceStageDueDate
tDInvoiceDefault.ttDInvoiceDiscountDueDate = tDInvoiceStage.DInvoiceStageDiscDate.
end. /* end for each tdinvoicestage */
end. /* end else vcPaymentConditionType <> {&PAYMENTCONDITIONPAYMENTTYPE-STAGED} */
end. /* end invoice id */