project QadFinancials > class BCInvoice > method DefaultValuesPaymentCondition
Parameters
icPaymentConditionCode | input | character | |
iiPaymentConditionID | input | integer | |
itCInvoiceDate | input | date | |
icCInvoiceRowID | input | character | |
idCInvoiceOriginalTC | input | decimal | |
icCurrencyCode | input | character | |
ilCInvoiceIsTaxExcluded | input | logical | Input parameter: Supplier invoice uses tax excluded. |
icPaymentConditionPaymentType | input | character | |
icPaymentConditionPeriodType | input | character | |
itPaymentConditionBaseDate | input | date | |
iiPaymentConditionDaysMonths | input | integer | |
iiPaymentConditionSupplDays | input | integer | |
iiPaymentConditionBaseDays | input | integer | |
iiPaymentConditionDueDays | input | integer | |
icPaymentConditionDescript | input | character | |
idPaymentConditionPercentage | input | decimal | |
icPaymentConditionPdtypediscount | input | character | |
iiPaymentConditionDayMthsDisc | input | integer | |
iiPaymentConditionSupDaysDisc | input | integer | |
ocPaymentConditionPaymentType | output | character | |
otCInvoiceDueDate | output | date | |
otCInvoiceDiscountDueDate | output | date | |
tApiCInvoiceStage | output | temp-table | |
oiReturnStatus | output | integer | Return status of the method. |
Internal usage
QadFinancials
program code (program3/bcinvoice.p)
empty temp-table tApiCInvoiceStage.
if icPaymentConditionCode = ?
then assign icPaymentConditionCode = "":U.
if iiPaymentConditionID = ?
then assign iiPaymentConditionID = 0.
if ilCInvoiceIsTaxExcluded = ?
then assign ilCInvoiceIsTaxExcluded = false.
/* if the tax excluded is checked on, then we have to calculated total invoice *
* amount. This total invoice amount is used by CreateCIPosting + all *
* sub-methods */
if ilCInvoiceIsTaxExcluded = true
then do:
for first tCInvoice where tCInvoice.tc_Rowid = icCInvoiceRowID
no-lock:
<M-65 run CreatePostingCalculateTotInvAmount
(input tCInvoice.CInvoice_ID (iiCInvoiceId),
input icCurrencyCode (icCurrencyCode),
input ilCInvoiceIsTaxExcluded (ilCInvoiceIsTaxExcluded),
input tCInvoiceVat (tApiCInvoiceVat),
input tCInvoice.tc_Rowid (icCInvoiceRowid),
input tCInvoice.CInvoiceType (icCInvoiceType),
input tCInvoice.CInvoiceExchangeRate (idExchangeRate),
input tCInvoice.CInvoiceRateScale (idExchangeRateScale),
input-output idCInvoiceOriginalTC (bdInvoiceAmountTC),
input-output vdCInvoiceOriginalLC (bdInvoiceAmountLC),
input-output vdCInvoiceOriginalCC (bdInvoiceAmountCC),
output viFcReturnSuper (oiReturnStatus)) in BCInvoice>
if viFcReturnSuper < 0 or viFcReturnSuper > 0 and oiReturnStatus = 0 then assign oiReturnStatus = viFcReturnSuper.
if viFcReturnSuper < 0 then return.
end.
end.
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.
else do:
<Q-10 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.
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
icPaymentConditionDescript = tqPaymentConditionByIdCode.tcPaymentConditionDescript
idPaymentConditionPercentage = tqPaymentConditionByIdCode.tdPaymentConditionPercentage
icPaymentConditionPdtypediscount = tqPaymentConditionByIdCode.tcPaymentConditionPdDiscType
iiPaymentConditionDayMthsDisc = tqPaymentConditionByIdCode.tiPaymentConditionDayMthDisc
iiPaymentConditionSupDaysDisc = tqPaymentConditionByIdCode.tiPaymentConditionSupDayDisc.
end.
else assign ocPaymentConditionPaymentType = icPaymentConditionPaymentType.
if ocPaymentConditionPaymentType = {&PAYMENTCONDITIONPAYMENTTYPE-STAGED}
then do:
for each tCInvoiceStage where
tCInvoiceStage.tc_ParentRowid = icCInvoiceRowID:
if tCInvoiceStage.tc_Status = "N":U
then delete tCInvoiceStage.
else assign tCInvoiceStage.tc_Status = "D":U.
end.
<Q-12 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-16 {bFcStartAndOpenInstance
&ADD-TO-TRANSACTION = "false"
&CLASS = "BPaymentCondition"}>
assign vlStartPaymentCondition = true.
end.
/* Calculate stages */
assign vdAmountToDistribute = idCInvoiceOriginalTC.
for each tqPaymentConditionStagedByPC where
tqPaymentConditionStagedByPC.tiParentPaymentCondition_ID = iiPaymentConditionID
break by tqPaymentConditionStagedByPC.tiParentPaymentCondition_ID:
<M-4 run AddDetailLine
(input 'CInvoiceStage':U (icTable),
input icCInvoiceRowID (icParentRowid),
output viFcReturnSuper (oiReturnStatus)) in BCInvoice>
assign tCInvoiceStage.CInvoiceStageAmountTC = (if last-of(tqPaymentConditionStagedByPC.tiParentPaymentCondition_ID)
then vdAmountToDistribute
else <M-5 RoundAmount
(input idCInvoiceOriginalTC * tqPaymentConditionStagedByPC.tdPaymentConditionStagedPerc / 100 (idUnroundedAmount),
input ? (iiCurrencyID),
input icCurrencyCode (icCurrencyCode)) in business>)
tCInvoiceStage.CInvoiceStagePercent = tqPaymentConditionStagedByPC.tdPaymentConditionStagedPerc
tCInvoiceStage.PaymentConditionStaged_ID = tqPaymentConditionStagedByPC.tiPaymentConditionStaged_ID
tCInvoiceStage.tcPaymentConditionCode = tqPaymentConditionStagedByPC.tcPaymentConditionCode
tCInvoiceStage.tcPaymentConditionDescript = tqPaymentConditionStagedByPC.tcPaymentConditionDescript
tCInvoiceStage.tdPaymentConditionPercentage = tqPaymentConditionStagedByPC.tdPaymentConditionPercentage
tCInvoiceStage.CInvoiceStageDiscPerc = tqPaymentConditionStagedByPC.tdPaymentConditionPercentage
vdAmountToDistribute = vdAmountToDistribute - tCInvoiceStage.CInvoiceStageAmountTC.
<M-11 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 itCInvoiceDate (itInvoiceDate),
input tqPaymentConditionStagedByPC.tiPaymentConditionDayMthDisc (iiPaymentConditionDayMthDisc),
input tqPaymentConditionStagedByPC.tiPaymentConditionSupDayDisc (iiPaymentConditionSupDayDisc),
input tqPaymentConditionStagedByPC.tcPaymentConditionPdDiscType (icPaymentConditionpDiscType),
output tCInvoiceStage.CInvoiceStageDueDate (otDueDate),
output tCInvoiceStage.CInvoiceStageDiscDate (otDiscountDate),
output viExternalReturnStatus (oiReturnStatus)) in BPaymentCondition>
if viExternalReturnStatus < 0 or
oiReturnStatus = 0
then assign oiReturnStatus = viExternalReturnStatus.
if viExternalReturnStatus < 0
then leave.
create tApiCInvoiceStage.
raw-transfer tCInvoiceStage to tApiCInvoiceStage.
end.
if vlStartPaymentCondition
then do:
<I-17 {bFcCloseAndStopInstance
&CLASS = "BPaymentCondition"}>
if viExternalReturnStatus < 0 then return.
end.
for each tApiCInvoiceStage where
tApiCInvoiceStage.tc_ParentRowid = icCInvoiceRowID
break by tApiCInvoiceStage.CInvoiceStageDueDate descending:
assign
otCInvoiceDueDate = tApiCInvoiceStage.CInvoiceStageDueDate
otCInvoiceDiscountDueDate = tApiCInvoiceStage.CInvoiceStageDiscDate.
end.
end.
else do:
<I-18 {bFcStartAndOpenInstance
&ADD-TO-TRANSACTION = "false"
&CLASS = "BPaymentCondition"}>
<M-13 run CalculateDueDiscountDateNoRead
(input icPaymentConditionPeriodType (icPaymentConditionPeriodType),
input itPaymentConditionBaseDate (itPaymentConditionBaseDate),
input iiPaymentConditionDaysMonths (iiPaymentConditionDaysMonths),
input iiPaymentConditionSupplDays (iiPaymentConditionSupplDays),
input iiPaymentConditionBaseDays (iiPaymentConditionBaseDays),
input iiPaymentConditionDueDays (iiPaymentConditionDueDays),
input itCInvoiceDate (itInvoiceDate),
input iiPaymentConditionDayMthsDisc (iiPaymentConditionDayMthDisc),
input iiPaymentConditionSupDaysDisc (iiPaymentConditionSupDayDisc),
input icPaymentConditionPdtypediscount (icPaymentConditionpDiscType),
output vtCInvoiceDueDate (otDueDate),
output vtCInvoiceDiscountDueDate (otDiscountDate),
output viExternalReturnStatus (oiReturnStatus)) in BPaymentCondition>
<I-19 {bFcCloseAndStopInstance
&CLASS = "BPaymentCondition"}>
if viExternalReturnStatus < 0 or
oiReturnStatus = 0
then assign oiReturnStatus = viExternalReturnStatus.
if viExternalReturnStatus < 0
then return.
assign otCInvoiceDueDate = vtCInvoiceDueDate
otCInvoiceDiscountDueDate = vtCInvoiceDiscountDueDate.
end.