project QadFinancials > class BDInvoice > method DefaultDuedatesForDeduction
Description
calculate deduction due date according to the credit terms.
for stage credit terms, the due date is the last stage end
date.
Parameters
icPaymentConditionCode | input | character | |
iiPaymentConditionID | input | integer | |
itDInvoiceDate | input | date | |
iiDInvoiceRowID | input | integer | |
idDInvoiceOriginalTC | input | decimal | |
icCurrencyCode | input | character | |
otDInvoiceDueDate | output | date | |
otDInvoiceDiscountDueDate | output | date | |
oiReturnStatus | output | integer | Return status of the method. |
Internal usage
QadFinancials
program code (program1/bdinvoice.p)
if icPaymentConditionCode = ?
then assign icPaymentConditionCode = "":U.
if iiPaymentConditionID = 0
then assign iiPaymentConditionID = ?.
assign vcPaymentConditionPaymentType = '':U
oiReturnStatus = -99.
if (icPaymentConditionCode <> "":U or
iiPaymentConditionID <> 0)
then do:
<Q-17 run PaymentConditionByIdCode (all) (Read) (NoCache)
(input iiPaymentConditionID, (PaymentConditionId)
input icPaymentConditionCode, (PaymentConditionCode)
output dataset tqPaymentConditionByIdCode) in BPaymentCondition>
find first tqPaymentConditionByIdCode where
tqPaymentConditionByIdCode.tcPaymentConditionCode = icPaymentConditionCode
no-error.
if not available tqPaymentConditionByIdCode
then return.
assign vcPaymentConditionPaymentType = tqPaymentConditionByIdCode.tcPaymentConditionPaymentTyp
vcPaymentConditionPeriodType = tqPaymentConditionByIdCode.tcPaymentConditionPeriodType
vtPaymentConditionBaseDate = tqPaymentConditionByIdCode.ttPaymentConditionBaseDate
viPaymentConditionDaysMonths = tqPaymentConditionByIdCode.tiPaymentConditionDaysMonths
viPaymentConditionSupplDays = tqPaymentConditionByIdCode.tiPaymentConditionSupplDays
viPaymentConditionBaseDays = tqPaymentConditionByIdCode.tiPaymentConditionBaseDays
viPaymentConditionDueDays = tqPaymentConditionByIdCode.tiPaymentConditionDueDays
iiPaymentConditionID = tqPaymentConditionByIdCode.tiPaymentCondition_ID
icPaymentConditionCode = tqPaymentConditionByIdCode.tcPaymentConditionCode
vcPaymentConditionDescription = tqPaymentConditionByIdCode.tcPaymentConditionDescript
vdPaymentConditionPercentage = tqPaymentConditionByIdCode.tdPaymentConditionPercentage
vcPaymentConditionTypediscount = tqPaymentConditionByIdCode.tcPaymentConditionPdDiscType
viPaymentConditionDayMthsDisc = tqPaymentConditionByIdCode.tiPaymentConditionDayMthDisc
viPaymentConditionSupDaysDisc = tqPaymentConditionByIdCode.tiPaymentConditionSupDayDisc.
end. /* end if icPaymentConditionCode <> ... */
/*for stage, use the last stage date as the due date. */
if vcPaymentConditionPaymentType ={&PAYMENTCONDITIONPAYMENTTYPE-STAGED}
then do: /*stage case */
<Q-36 run PaymentConditionStagedByPC (all) (Read) (NoCache)
(input iiPaymentConditionID, (ParentPaymentConditionID)
output dataset tqPaymentConditionStagedByPC) in BPaymentCondition>
find last tqPaymentConditionStagedByPC where tqPaymentConditionStagedByPC.tiParentPaymentCondition_ID = iiPaymentConditionID no-error.
if not available tqPaymentConditionStagedByPC then return.
assign vcPaymentConditionPeriodType = tqPaymentConditionStagedByPC.tcPaymentConditionPeriodType
vtPaymentConditionBaseDate = tqPaymentConditionStagedByPC.ttPaymentConditionBaseDate
viPaymentConditionDaysMonths = tqPaymentConditionStagedByPC.tiPaymentConditionDaysMonths
viPaymentConditionSupplDays = tqPaymentConditionStagedByPC.tiPaymentConditionSupplDays
viPaymentConditionBaseDays = tqPaymentConditionStagedByPC.tiPaymentConditionBaseDays
vdPaymentConditionPercentage = tqPaymentConditionStagedByPC.tdPaymentConditionPercentage
vcPaymentConditionTypediscount = tqPaymentConditionStagedByPC.tcPaymentConditionPdDiscType
viPaymentConditionDayMthsDisc = tqPaymentConditionStagedByPC.tiPaymentConditionDayMthDisc
viPaymentConditionSupDaysDisc = tqPaymentConditionStagedByPC.tiPaymentConditionSupDayDisc.
end.
<I-45 {bFcStartAndOpenInstance
&ADD-TO-TRANSACTION = "false"
&CLASS = "BPaymentCondition"}>
<M-32 run CalculateDueDiscountDateNoRead
(input vcPaymentConditionPeriodType (icPaymentConditionPeriodType),
input vtPaymentConditionBaseDate (itPaymentConditionBaseDate),
input viPaymentConditionDaysMonths (iiPaymentConditionDaysMonths),
input viPaymentConditionSupplDays (iiPaymentConditionSupplDays),
input viPaymentConditionBaseDays (iiPaymentConditionBaseDays),
input viPaymentConditionDueDays (iiPaymentConditionDueDays),
input itDInvoiceDate (itInvoiceDate),
input viPaymentConditionDayMthsDisc (iiPaymentConditionDayMthDisc),
input viPaymentConditionSupDaysDisc (iiPaymentConditionSupDayDisc),
input vcPaymentConditionTypediscount (icPaymentConditionpDiscType),
output otDInvoiceDueDate (otDueDate),
output otDInvoiceDiscountDueDate (otDiscountDate),
output viFcReturnSuper (oiReturnStatus)) in BPaymentCondition>
<I-14 {bFcCloseAndStopInstance
&CLASS = "BPaymentCondition"}>
if viFcReturnSuper < 0
then do: assign oiReturnStatus = viFcReturnSuper.
return.
end.
assign oiReturnStatus = 0.