project QadFinancials > class BCInvoice > method CalcAllCInvoiceMovementByCreditor

query calculated fields procedure

Description

Assign a value to query calculated fields


Parameters


iiCompanyIdinputintegerCompany id
icCompanyListIDinputcharacter
iiCreditorIDinputinteger
itPostingStartDateinputdate
itPostingEndDateinputdate
icCreditorCodeinputcharacter
itPostingDateinputdate
icCInvoiceMovementTypeinputcharacter
icCreditorCodeListinputcharacter
oiReturnStatusoutputintegerReturn status of the method.


Internal usage


QadFinancials
query CInvoiceMovementByCreditor


program code (program1/bcinvoice.p)

create query vhQuery in widget-pool "non-persistent".
vhQuery:forward-only = yes.
vhQuery:set-buffers(ih_Buffer).
vhQuery:query-prepare("for each ":U + ih_Buffer:table).
vhQuery:query-open().
vhQuery:get-first().
do while not vhQuery:query-off-end:
    assign {&tcCInvoiceNumber}   = substitute("&1/&2/&3":U, {&tiCInvoicePostingYear}, {&tcJournalInvoiceCode}, string({&tiCInvoiceVoucher},"999999999"))
           {&tcDocumentNumber}   = substitute("&1/&2/&3":U, {&tiPostingYear}, {&tcJournalCode}, string({&tiPostingVoucher},"999999999":U))
           {&tdOpenAmountLC}     = {&tdCInvoiceBalanceCreditLC} - {&tdCInvoiceBalanceDebitLC}
           {&tdOpenAmountCC}     = {&tdCInvoiceBalanceCreditCC} - {&tdCInvoiceBalanceDebitCC}
           {&tdOpenAmountTC}     = {&tdCInvoiceBalanceCreditTC} - {&tdCInvoiceBalanceDebitTC}
           {&tdOriginalAmountLC} = {&tdCInvoiceOriginalCreditLC} - {&tdCInvoiceOriginalDebitLC}
           {&tdOriginalAmountCC} = {&tdCInvoiceOriginalCreditCC} - {&tdCInvoiceOriginalDebitCC}
           {&tdOriginalAmountTC} = {&tdCInvoiceOriginalCreditTC} - {&tdCInvoiceOriginalDebitTC}
           {&tdPaymentAmountTC}  = {&tdPostingLineDebitTC} - {&tdPostingLineCreditTC}.

    /* Invoice is open and overdue */
    if {&tlCInvoiceIsOpen}   = true  and
       {&ttCInvoiceDueDate} <= today
    then assign {&tiOverdueDays} = today - {&ttCInvoiceDueDate}.
    /* Invoice is closed but payed after due date */
    else if {&tlCInvoiceIsOpen}  = false                    and
            {&ttCInvoiceDueDate} < {&ttCInvoiceClosingDate}
    then assign {&tiOverdueDays} = {&ttCInvoiceClosingDate} - {&ttCInvoiceDueDate}.
    /* Invoice is payed within time or is still opened but not overdue */
    else assign {&tiOverdueDays} = 0. 

    assign vtTempDate = date(1,1,year({&ttPostingDate})) + (2 - weekday(date(1,1,year({&ttPostingDate})))).
    if weekday(date(1,1,year({&ttPostingDate}))) >= 6 then 
        vtTempDate = vtTempDate + 7.
    
    assign {&tiWeekNumbers} = truncate(((date({&ttPostingDate}) - vtTempDate) + 7) / 7 , 0).
    
    if {&tiWeekNumbers} > 52 
    then do:
        assign vtTempDate = date(1,1,year({&ttPostingDate}) + 1) + (2 - weekday(date(1,1,year({&ttPostingDate}) + 1))).
        if weekday(date(1,1,year({&ttPostingDate}) + 1)) >= 6 then 
            vtTempDate = vtTempDate + 7.
        if {&ttPostingDate} < vtTempDate then
             {&tiWeekNumbers} = 52.           
    end.
        
    vhQuery:get-next().
end.
vhQuery:query-close().
delete object vhQuery.