project QadFinancials > class BCInvoice > method CalcAllSelectCInvoiceForExtended

query calculated fields procedure

Description

Assign a value to query calculated fields


Parameters


iiCompanyIdinputintegerCompany id
oiReturnStatusoutputintegerReturn status of the method.


Internal usage


QadFinancials
query SelectCInvoiceForExtended


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:
    if {&tiLinkedCInvoice_ID} <> 0 and
       {&tiLinkedCInvoice_ID} <> ?
    then do:
        <Q-1 run CInvoiceByCyIDYearJrnlVchr (all) (Read) (Cache)
           (input ?, (CompanyId)
            input {&tiLinkedCInvoice_ID}, (CInvoiceId)
            input ?, (PeriodYear)
            input ?, (JournalId)
            input ?, (JournalCode)
            input ?, (Voucher)
            output dataset tqCInvoiceByCyIDYearJrnlVchr) in BCInvoice >
        find first tqCInvoiceByCyIDYearJrnlVchr where
                   tqCInvoiceByCyIDYearJrnlVchr.tiCInvoice_ID = {&tiLinkedCInvoice_ID}
                   no-error.
        if available tqCInvoiceByCyIDYearJrnlVchr
        then assign {&tcLinkedCInvoice} = substitute("&1/&2/&3":U, 
                                                     tqCInvoiceByCyIDYearJrnlVchr.tiCInvoicePostingYear,
                                                     tqCInvoiceByCyIDYearJrnlVchr.tcJournalCode,
                                                     tqCInvoiceByCyIDYearJrnlVchr.tiCInvoiceVoucher).
    end.

    if {&tiReplacedCInvoice_ID} <> 0 and
       {&tiReplacedCInvoice_ID} <> ?
    then do:
        <Q-2 run CInvoiceByCyIDYearJrnlVchr (all) (Read) (Cache)
           (input ?, (CompanyId)
            input {&tiReplacedCInvoice_ID}, (CInvoiceId)
            input ?, (PeriodYear)
            input ?, (JournalId)
            input ?, (JournalCode)
            input ?, (Voucher)
            output dataset tqCInvoiceByCyIDYearJrnlVchr) in BCInvoice >
        find first tqCInvoiceByCyIDYearJrnlVchr where
                   tqCInvoiceByCyIDYearJrnlVchr.tiCInvoice_ID = {&tiReplacedCInvoice_ID}
                   no-error.
        if available tqCInvoiceByCyIDYearJrnlVchr
        then assign {&tcReplacedCInvoice} = substitute("&1/&2/&3":U, 
                                                       tqCInvoiceByCyIDYearJrnlVchr.tiCInvoicePostingYear,
                                                       tqCInvoiceByCyIDYearJrnlVchr.tcJournalCode,
                                                       tqCInvoiceByCyIDYearJrnlVchr.tiCInvoiceVoucher).
    end.
    
    if {&tcPaymentConditionPaymentTyp} = {&PAYMENTCONDITIONPAYMENTTYPE-STAGED}
    then do:

        assign viCount            = 1
               vlIsDueDateApplied = false.

        for each CInvoiceStage no-lock where
                 CInvoiceStage.CInvoice_ID  = {&tiCInvoice_ID} and
                 viCount                   <= 6 
                 by CInvoiceStage.CInvoiceStageDueDate:
            
            if viCount = 1
            then assign {&tdOpenAmtTCStage1} = (CInvoiceStage.CInvoiceStageAmountTC - CInvoiceStage.CInvoiceStageAmtAppliedTC) 
                        {&ttDueDateStage1}   = CInvoiceStage.CInvoiceStageDueDate.
               
            if viCount = 2
            then assign {&tdOpenAmtTCStage2} = (CInvoiceStage.CInvoiceStageAmountTC - CInvoiceStage.CInvoiceStageAmtAppliedTC)
                        {&ttDueDateStage2}   = CInvoiceStage.CInvoiceStageDueDate.

            if viCount = 3
            then assign {&tdOpenAmtTCStage3} = (CInvoiceStage.CInvoiceStageAmountTC - CInvoiceStage.CInvoiceStageAmtAppliedTC) 
                        {&ttDueDateStage3}   = CInvoiceStage.CInvoiceStageDueDate.

            if viCount = 4
            then assign {&tdOpenAmtTCStage4} = (CInvoiceStage.CInvoiceStageAmountTC - CInvoiceStage.CInvoiceStageAmtAppliedTC)
                        {&ttDueDateStage4}   = CInvoiceStage.CInvoiceStageDueDate.

            if viCount = 5
            then assign {&tdOpenAmtTCStage5} = (CInvoiceStage.CInvoiceStageAmountTC - CInvoiceStage.CInvoiceStageAmtAppliedTC)
                        {&ttDueDateStage5}   = CInvoiceStage.CInvoiceStageDueDate.

            if viCount = 6
            then assign {&tdOpenAmtTCStage6} = (CInvoiceStage.CInvoiceStageAmountTC - CInvoiceStage.CInvoiceStageAmtAppliedTC)
                        {&ttDueDateStage6}   = CInvoiceStage.CInvoiceStageDueDate.

            assign viCount = viCount + 1.

            if (CInvoiceStage.CInvoiceStageAmountTC - CInvoiceStage.CInvoiceStageAmtAppliedTC) <> 0     and
                vlIsDueDateApplied                                                              = false
            then assign {&ttNextStageDueDate} = CInvoiceStage.CInvoiceStageDueDate
                        vlIsDueDateApplied    = true.

        end. /* for each CInvoiceStage */

        if vlIsDueDateApplied = false
        then do:
            
            for first CInvoiceStage no-lock where
                      CInvoiceStage.CInvoice_ID                                                       = {&tiCInvoice_ID} and
                     (CInvoiceStage.CInvoiceStageAmountTC - CInvoiceStage.CInvoiceStageAmtAppliedTC) <> 0
                      by CInvoiceStage.CInvoiceStageDueDate:
               
                assign {&ttNextStageDueDate} = CInvoiceStage.CInvoiceStageDueDate
                       vlIsDueDateApplied    = true.

            end. /* for first CInvoiceStage */
        end. /* if vlIsDueDateApplied = false */

    end. /* if {&tcPaymentConditionPaymentTyp} = {&PAYMENTCONDITIONPAYMENTTYPE-STAGED} */

    vhQuery:get-next().
end.
vhQuery:query-close().
delete object vhQuery.