project QadFinancials > class BCInvoice > method CreateCInvoiceMovementsDiffCC

function returns logical

Description

Calculates possible difference in CC that should be applied in postinng when both TC and LC becomes balanced


Parameters


idDebitTCinputdecimal
idCreditTCinputdecimal
idDebitLCinputdecimal
idCreditLCinputdecimal
bdDebitCCinput-outputdecimal
bdCreditCCinput-outputdecimal


Internal usage


unused


program code (program7/bcinvoice.p)

assign vdNewBalanceDebitTC  = 0
       vdNewBalanceCreditTC = 0
       vdNewBalanceDebitLC  = 0
       vdNewBalanceCreditLC = 0
       vdNewBalanceDebitCC  = 0
       vdNewBalanceCreditCC = 0
       vdNewBalanceTC       = 0
       vdNewBalanceLC       = 0
       vdNewBalanceCC       = 0
       idDebitTC            = if idDebitTC = ? then 0 else idDebitTC
       idCreditTC           = if idCreditTC = ? then 0 else idCreditTC
       idDebitLC            = if idDebitLC = ? then 0 else idDebitLC
       idCreditLC           = if idCreditLC = ? then 0 else idCreditLC
       bdDebitCC            = if bdDebitCC = ? then 0 else bdDebitCC
       bdCreditCC           = if bdCreditCC = ? then 0 else bdCreditCC.
       
if tCInvoice.CInvoiceBalanceDebitTC <> ? and tCInvoice.CInvoiceBalanceDebitTC <> 0
then assign vdNewBalanceDebitTC = tCInvoice.CInvoiceBalanceDebitTC - idCreditTC + idDebitTC
            vdNewBalanceDebitLC = tCInvoice.CInvoiceBalanceDebitLC - idCreditLC + idDebitLC
            vdNewBalanceDebitCC = tCInvoice.CInvoiceBalanceDebitCC - bdCreditCC + bdDebitCC.
else do:
    if tCInvoice.CInvoiceBalanceCreditTC <> ? and tCInvoice.CInvoiceBalanceCreditTC <> 0
    then assign vdNewBalanceCreditTC = tCInvoice.CInvoiceBalanceCreditTC + idCreditTC - idDebitTC
                vdNewBalanceCreditLC = tCInvoice.CInvoiceBalanceCreditLC + idCreditLC - idDebitLC
                vdNewBalanceCreditCC = tCInvoice.CInvoiceBalanceCreditCC + bdCreditCC - bdDebitCC.
    else assign vdNewBalanceDebitTC  = idDebitTC
                vdNewBalanceDebitLC  = idDebitLC 
                vdNewBalanceDebitCC  = bdDebitCC
                vdNewBalanceCreditTC = idCreditTC
                vdNewBalanceCreditLC = idCreditLC 
                vdNewBalanceCreditCC = bdCreditCC.
end.
assign vdNewBalanceTC = vdNewBalanceDebitTC - vdNewBalanceCreditTC
       vdNewBalanceLC = vdNewBalanceDebitLC - vdNewBalanceCreditLC
       vdNewBalanceCC = vdNewBalanceDebitCC - vdNewBalanceCreditCC.              

if vdNewBalanceTC = 0 and
   vdNewBalanceLC = 0 and
   vdNewBalanceCC <> 0
then do:    
    /*as the above calculated balances vdNewBalanceDebitCC, vdNewBalanceCreditCC can be both + or - 
    I can always use this formula  "+ vdNewBalanceDebitCC + vdNewBalanceCreditCC" so to get the right CC amounts */
    if tCInvoice.CInvoiceBalanceDebitTC <> ? and tCInvoice.CInvoiceBalanceDebitTC <> 0
    then do:
        if bdDebitCC <> 0
        then assign bdDebitCC = bdDebitCC + vdNewBalanceDebitCC + vdNewBalanceCreditCC.
        else if bdCreditCC <> 0
             then assign bdCreditCC = bdCreditCC + vdNewBalanceDebitCC + vdNewBalanceCreditCC. 
    end.
    else do:
        if tCInvoice.CInvoiceBalanceCreditTC <> ? and tCInvoice.CInvoiceBalanceCreditTC <> 0 
        then do:
            if bdDebitCC <> 0
            then assign bdDebitCC = bdDebitCC + vdNewBalanceDebitCC + vdNewBalanceCreditCC.
            else if bdCreditCC <> 0
                 then assign bdCreditCC = bdCreditCC + vdNewBalanceDebitCC + vdNewBalanceCreditCC.
        end.
    end.
    return true.
end.
return false.