project QadFinancials > class BCInvoice > method CreateCIPostingExt
Description
Extension on CreateCIPosting (becaus it is growing outside of its limits)
Parameters
| iiCInvoiceId | input | integer | |
| icCInvoiceType | input | character | |
| idInvoiceAmountTC | input | decimal | |
| idInvoiceAmountLC | input | decimal | |
| idInvoiceAmountCC | input | decimal | |
| icPostingType | input | character | |
| iiControlPostingLineId | input | integer | |
| ilIsInitialStatus | input | logical | at modify: pass the initial value of the IsInitialStatus flag, in all other cases, pass false |
| oiReturnStatus | output | integer | Return status of the method. |
Internal usage
QadFinancials
program code (program3/bcinvoice.p)
if not can-find(first tCInvoiceMovement where
tCInvoiceMovement.tc_ParentRowid = tCInvoice.tc_Rowid)
then do:
<M-1 run AddDetailLine
(input 'CInvoiceMovement':U (icTable),
input tCInvoice.tc_Rowid (icParentRowid),
output viFcReturnSuper (oiReturnStatus)) in BCInvoice>
if viFcReturnSuper < 0 or
oiReturnStatus = 0
then assign oiReturnStatus = viFcReturnSuper.
assign tCInvoiceMovement.CInvoice_ID = iiCInvoiceId
tCInvoiceMovement.PostingLine_ID = iiControlPostingLineId
tCInvoiceMovement.CInvoiceMovementType = {&MOVEMENTTYPE-INITIAL}.
/* only update the balances for the records that have the initial status flag on false */
/* for example : modify initial status invoice, change invoice status code to one with initial status = false
then the balances don't need to update here anymore, already done in ValidateComponent */
if not ilIsInitialStatus
then do:
if icPostingType = {&POSTINGTYPE-DEBIT}
then assign tCInvoice.CInvoiceBalanceDebitTC = idInvoiceAmountTC
tCInvoice.CInvoiceBalanceDebitLC = idInvoiceAmountLC
tCInvoice.CInvoiceBalanceDebitCC = if idInvoiceAmountCC = ? then 0
else idInvoiceAmountCC
tCInvoice.CInvoiceBalanceCreditTC = 0
tCInvoice.CInvoiceBalanceCreditLC = 0
tCInvoice.CInvoiceBalanceCreditCC = 0.
if icPostingType = {&POSTINGTYPE-CREDIT}
then assign tCInvoice.CInvoiceBalanceCreditTC = idInvoiceAmountTC
tCInvoice.CInvoiceBalanceCreditLC = idInvoiceAmountLC
tCInvoice.CInvoiceBalanceCreditCC = if idInvoiceAmountCC = ? then 0
else idInvoiceAmountCC
tCInvoice.CInvoiceBalanceDebitTC = 0
tCInvoice.CInvoiceBalanceDebitLC = 0
tCInvoice.CInvoiceBalanceDebitCC = 0.
assign tCInvoice.CInvoiceBalanceTC = tCInvoice.CInvoiceBalanceDebitTC - tCInvoice.CInvoiceBalanceCreditTC
tCInvoice.CInvoiceBalanceLC = tCInvoice.CInvoiceBalanceDebitLC - tCInvoice.CInvoiceBalanceCreditLC
tCInvoice.CInvoiceBalanceCC = tCInvoice.CInvoiceBalanceDebitCC - tCInvoice.CInvoiceBalanceCreditCC
tCInvoice.CInvoiceIsOpen =
tCInvoice.CInvoiceBalanceTC <> 0 or
tCInvoice.CInvoiceBalanceLC <> 0 or
tCInvoice.CInvoiceBalanceCC <> 0
tCInvoice.tc_Status =
if tCInvoice.tc_Status = "":U
then "C":U
else tCInvoice.tc_Status.
end. /* if not ilIsInitialStatus */
end. /* if not can-find(first tCInvoiceMovement where */