project QadFinancials > class BDInvoice > method DefaultValuesPaymentCondition
Description
Called when the Payment Condition changes - defaults related fields
Parameters
icPaymentConditionCode | input | character | |
iiPaymentConditionID | input | integer | |
itDInvoiceDate | input | date | |
icDInvoiceRowID | input | character | |
idDInvoiceOriginalTC | input | decimal | |
icCurrencyCode | input | character | |
icPaymentConditionPaymentType | input | character | |
icPaymentConditionPeriodType | input | character | |
itPaymentConditionBaseDate | input | date | |
iiPaymentConditionDaysMonths | input | integer | |
iiPaymentconditionSupplDays | input | integer | |
iiPaymentConditionBaseDays | input | integer | |
iiPaymentConditionDueDays | input | integer | |
icPaymentConditionDescription | input | character | |
idPaymentConditionPercentage | input | decimal | |
icPaymentConditionPdtypediscount | input | character | |
iiPaymentConditionDayMthsDisc | input | integer | |
iiPaymentConditionSupDaysDisc | input | integer | |
ocPaymentConditionPaymentType | output | character | |
otDInvoiceDueDate | output | date | |
otDInvoiceDiscountDueDate | output | date | |
tApiDInvoiceStage | output | temp-table | |
oiReturnStatus | output | integer | Return status of the method. |
Internal usage
QadFinancials
program code (program3/bdinvoice.p)
empty temp-table tApiDInvoiceStage.
if icPaymentConditionCode = ?
then assign icPaymentConditionCode = "":U.
if iiPaymentConditionID = ?
then assign iiPaymentConditionID = 0.
if (icPaymentConditionCode <> "":U or
iiPaymentConditionID <> 0) and
icPaymentConditionPaymentType <> {&PAYMENTCONDITIONPAYMENTTYPE-STAGED}
then do:
if iiPaymentConditionID = 0
then do:
<Q-1 run PaymentConditionByIdCode (all) (Read) (NoCache)
(input ?, (PaymentConditionId)
input icPaymentConditionCode, (PaymentConditionCode)
output dataset tqPaymentConditionByIdCode) in BPaymentCondition >
find first tqPaymentConditionByIdCode where
tqPaymentConditionByIdCode.tcPaymentConditionCode = icPaymentConditionCode
no-error.
end. /* end if iiPaymentConditionID = 0 */
else do:
<Q-2 run PaymentConditionByIdCode (all) (Read) (NoCache)
(input iiPaymentConditionID, (PaymentConditionId)
input ?, (PaymentConditionCode)
output dataset tqPaymentConditionByIdCode) in BPaymentCondition >
find first tqPaymentConditionByIdCode where
tqPaymentConditionByIdCode.tiPaymentCondition_ID = iiPaymentConditionID
no-error.
end. /* end else if iiPaymentConditionID = 0 */
if not available tqPaymentConditionByIdCode
then return.
assign ocPaymentConditionPaymentType = tqPaymentConditionByIdCode.tcPaymentConditionPaymentTyp
icPaymentConditionPeriodType = tqPaymentConditionByIdCode.tcPaymentConditionPeriodType
itPaymentConditionBaseDate = tqPaymentConditionByIdCode.ttPaymentConditionBaseDate
iiPaymentConditionDaysMonths = tqPaymentConditionByIdCode.tiPaymentConditionDaysMonths
iiPaymentConditionSupplDays = tqPaymentConditionByIdCode.tiPaymentConditionSupplDays
iiPaymentConditionBaseDays = tqPaymentConditionByIdCode.tiPaymentConditionBaseDays
iiPaymentConditionDueDays = tqPaymentConditionByIdCode.tiPaymentConditionDueDays
iiPaymentConditionID = tqPaymentConditionByIdCode.tiPaymentCondition_ID
icPaymentConditionCode = tqPaymentConditionByIdCode.tcPaymentConditionCode
icPaymentConditionDescription = tqPaymentConditionByIdCode.tcPaymentConditionDescript
idPaymentConditionPercentage = tqPaymentConditionByIdCode.tdPaymentConditionPercentage
icPaymentConditionPdtypediscount = tqPaymentConditionByIdCode.tcPaymentConditionPdDiscType
iiPaymentConditionDayMthsDisc = tqPaymentConditionByIdCode.tiPaymentConditionDayMthDisc
iiPaymentConditionSupDaysDisc = tqPaymentConditionByIdCode.tiPaymentConditionSupDayDisc.
end. /* end if icPaymentConditionCode <> ... */
else assign ocPaymentConditionPaymentType = icPaymentConditionPaymentType.
if ocPaymentConditionPaymentType = {&PAYMENTCONDITIONPAYMENTTYPE-STAGED}
then do:
for each tDInvoiceStage where
tDInvoiceStage.tc_ParentRowid = icDInvoiceRowID:
if tDInvoiceStage.tc_Status = "N":U
then delete tDInvoiceStage.
else assign tDInvoiceStage.tc_Status = "D":U.
end. /* end for each tDInvoiceStage */
<Q-3 run PaymentConditionStagedByPC (all) (Read) (NoCache)
(input iiPaymentConditionID, (ParentPaymentConditionID)
output dataset tqPaymentConditionStagedByPC) in BPaymentCondition >
if can-find(first tqPaymentConditionStagedByPC where
tqPaymentConditionStagedByPC.tiParentPaymentCondition_ID = iiPaymentConditionID)
then do:
<I-8 {bFcStartAndOpenInstance
&ADD-TO-TRANSACTION = "false"
&CLASS = "BPaymentCondition"}>
assign vlStartPaymentCondition = true.
end. /* end can-find */
assign vdstagedTotalWithoutLast = 0.
for each tqPaymentConditionStagedByPC where
tqPaymentConditionStagedByPC.tiParentPaymentCondition_ID = iiPaymentConditionID
break by tqPaymentConditionStagedByPC.tiParentPaymentCondition_ID:
<M-4 run AddDetailLine
(input 'DInvoiceStage':U (icTable),
input icDInvoiceRowID (icParentRowid),
output viFcReturnSuper (oiReturnStatus)) in BDInvoice>
if viFcReturnSuper < 0 or (viFcReturnSuper > 0 and oiReturnStatus = 0)
then assign oiReturnStatus = viFcReturnSuper.
if oiReturnStatus < 0
then leave.
if not last-of(tqPaymentConditionStagedByPC.tiParentPaymentCondition_ID)
then assign tDInvoiceStage.DInvoiceStageAmountTC = <M-5 RoundAmount
(input idDInvoiceOriginalTC * tqPaymentConditionStagedByPC.tdPaymentConditionStagedPerc / 100 (idUnroundedAmount),
input ? (iiCurrencyID),
input icCurrencyCode (icCurrencyCode)) in business>
vdstagedTotalWithoutLast = vdstagedTotalWithoutLast + tDInvoiceStage.DInvoiceStageAmountTC.
else assign tDInvoiceStage.DInvoiceStageAmountTC = <M-12 RoundAmount
(input idDInvoiceOriginalTC - vdStagedTotalWithoutLast (idUnroundedAmount),
input ? (iiCurrencyID),
input icCurrencyCode (icCurrencyCode)) in business>.
assign tDInvoiceStage.DInvoiceStagePercent = tqPaymentConditionStagedByPC.tdPaymentConditionStagedPerc
tDInvoiceStage.PaymentConditionStaged_ID = tqPaymentConditionStagedByPC.tiPaymentConditionStaged_ID
tDInvoiceStage.tcPaymentConditionCode = tqPaymentConditionStagedByPC.tcPaymentConditionCode
tDInvoiceStage.tcPaymentConditionDescript = tqPaymentConditionStagedByPC.tcPaymentConditionDescript
tDInvoiceStage.tdPaymentConditionPercentage = tqPaymentConditionStagedByPC.tdPaymentConditionPercentage
tDInvoiceStage.DInvoiceStageDiscPerc = tqPaymentConditionStagedByPC.tdPaymentConditionPercentage.
<M-6 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 itDInvoiceDate (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
oiReturnStatus = 0
then assign oiReturnStatus = viExternalReturnStatus.
if viExternalReturnStatus < 0
then leave.
create tApiDInvoiceStage.
raw-transfer tDInvoiceStage to tApiDInvoiceStage.
end. /* end for each tqPaymentConditionStagedByPC */
if vlStartPaymentCondition
then do:
<I-9 {bFcCloseAndStopInstance
&CLASS = "BPaymentCondition"}>
if viExternalReturnStatus < 0 then return.
end. /* end if vlStartPaymentCondition */
for each tApiDInvoiceStage where
tApiDInvoiceStage.tc_ParentRowid = icDInvoiceRowID
break by tApiDInvoiceStage.DInvoiceStageDueDate descending:
assign otDInvoiceDueDate = tApiDInvoiceStage.DInvoiceStageDueDate
otDInvoiceDiscountDueDate = tApiDInvoiceStage.DInvoiceStageDiscDate.
end. /* end for each tApiDInvoiceStage */
end. /* end if ocPaymentConditionPaymentType = {&PAYMENTCONDITIONPAYMENTTYPE-STAGED} */
else do:
<I-10 {bFcStartAndOpenInstance
&ADD-TO-TRANSACTION = "false"
&CLASS = "BPaymentCondition"}>
<M-7 run CalculateDueDiscountDateNoRead
(input icPaymentConditionPeriodType (icPaymentConditionPeriodType),
input itPaymentConditionBaseDate (itPaymentConditionBaseDate),
input iiPaymentConditionDaysMonths (iiPaymentConditionDaysMonths),
input iiPaymentConditionSupplDays (iiPaymentConditionSupplDays),
input iiPaymentConditionBaseDays (iiPaymentConditionBaseDays),
input iiPaymentConditionDueDays (iiPaymentConditionDueDays),
input itDInvoiceDate (itInvoiceDate),
input iiPaymentConditionDayMthsDisc (iiPaymentConditionDayMthDisc),
input iiPaymentConditionSupDaysDisc (iiPaymentConditionSupDayDisc),
input icPaymentConditionPdtypediscount (icPaymentConditionpDiscType),
output vtDInvoiceDueDate (otDueDate),
output vtDInvoiceDiscountDueDate (otDiscountDate),
output viExternalReturnStatus (oiReturnStatus)) in BPaymentCondition>
<I-11 {bFcCloseAndStopInstance
&CLASS = "BPaymentCondition"}>
if viExternalReturnStatus < 0 or
oiReturnStatus = 0
then assign oiReturnStatus = viExternalReturnStatus.
if viExternalReturnStatus < 0
then return.
assign otDInvoiceDueDate = vtDInvoiceDueDate
otDInvoiceDiscountDueDate = vtDInvoiceDiscountDueDate.
end. /* end else if ocPaymentConditionPaymentType = {&PAYMENTCONDITIONPAYMENTTYPE-STAGED} */