project QadFinancials > class BBillReport > method GetDInvoiceDetailInfo

Description

Return the detail information of current bill such as ShipDate, SO Number, Discount...


Parameters


icInvoiceNumberinputcharacter
olAvailItemDetailsoutputlogical
oiReturnStatusoutputintegerReturn status of the method.


Internal usage


QadFinancials
method BBillReport.GetBillReportDInvoice


program code (program1/bbillreport.p)

empty temp-table tBillReportBillItemDetails.
assign olAvailItemDetails = yes.

<Q-66 run InvoiceHistoryByInvNbr (all) (Read) (NoCache)
   (input icInvoiceNumber, (InvoiceNumber)
    input vcDomainCode, (DomainCode)
    output dataset tqInvoiceHistoryByInvNbr) in BMfgInvoiceHistory>
find first tqInvoiceHistoryByInvNbr no-error.
if not available tqInvoiceHistoryByInvNbr then
do:
    olAvailItemDetails = no.
    return.
end.
else do:
    for each tqInvoiceHistoryByInvNbr:
        assign vtShipDate     = tqInvoiceHistoryByInvNbr.ttih_ship_date
               vcSONbr        = tqInvoiceHistoryByInvNbr.tcih_nbr
               vcRmks         = tqInvoiceHistoryByInvNbr.tcih_rmks
               vdSODiscount   = tqInvoiceHistoryByInvNbr.tdih_disc_pct
               vdTrailerAmt1  = tqInvoiceHistoryByInvNbr.tdih_trl1_amt
               vcTrailerCode1 = tqInvoiceHistoryByInvNbr.tcih_trl1_cd
               vdTrailerAmt2  = tqInvoiceHistoryByInvNbr.tdih_trl2_amt
               vcTrailerCode2 = tqInvoiceHistoryByInvNbr.tcih_trl2_cd
               vdTrailerAmt3  = tqInvoiceHistoryByInvNbr.tdih_trl3_amt
               vcTrailerCode3 = tqInvoiceHistoryByInvNbr.tcih_trl3_cd
               vdDiscountAmt  = 0.

        <Q-11 run InvoiceDetailHistoryByInvNbr (all) (Read) (NoCache)
           (input icInvoiceNumber, (InvoiceNumber)
            input vcDomainCode, (DomainCode)
            input vcSONbr, (SONbr)
            output dataset tqInvoiceDetailHistoryByInvNbr) in BMfgInvoiceHistory>
        find first tqInvoiceDetailHistoryByInvNbr no-error.
        if not available tqInvoiceDetailHistoryByInvNbr then
        do:
            olAvailItemDetails = no.
            return.
        end.
        else do:      
            for each tqInvoiceDetailHistoryByInvNbr:
                viSOLine = tqInvoiceDetailHistoryByInvNbr.tiidh_line.
                /* Get tax detail for SO detial line */
                <Q-32 run TaxDetailLineForBillReport (all) (Read) (NoCache)
                   (input IcInvoiceNumber, (InvNbr)
                    input vcSONbr, (Number)
                    input viSOLine, (Line)
                    input vcDomainCode, (Tx2dDomain)
                    output dataset tqTaxDetailLineForBillReport) in BMfgTaxDetail>  
                find first tqTaxDetailLineForBillReport where tqTaxDetailLineForBillReport.tctx2d_trl = "" and
                                                              tqTaxDetailLineForBillReport.tltx2d_by_line no-error.
                if available tqTaxDetailLineForBillReport then
                do:
                    if tqInvoiceDetailHistoryByInvNbr.tlidh_taxable then
                        assign vdTax = tqTaxDetailLineForBillReport.tdtx2d_cur_tax_amt.
                    else vdTax = 0.                             
                end.
                else vdTax = 0.                               

                create tBillReportBillItemDetails.
                assign tBillReportBillItemDetails.ttShipDate = vtShipDate
                       tBillReportBillItemDetails.tcSONbr    = vcSONbr
                       tBillReportBillItemDetails.tiSOLine   = tqInvoiceDetailHistoryByInvNbr.tiidh_line
                       tBillReportBillItemDetails.tcItemCode = tqInvoiceDetailHistoryByInvNbr.tcidh_part
                       tBillReportBillItemDetails.tdQty      = tqInvoiceDetailHistoryByInvNbr.tdidh_qty_inv
                       tBillReportBillItemDetails.tcUM       = tqInvoiceDetailHistoryByInvNbr.tcidh_um
                       tBillReportBillItemDetails.tdPrice    = tqInvoiceDetailHistoryByInvNbr.tdidh_price
                       tBillReportBillItemDetails.tdSales    = tqInvoiceDetailHistoryByInvNbr.tdidh_qty_inv * 
                                                               tqInvoiceDetailHistoryByInvNbr.tdidh_price
                       tBillReportBillItemDetails.tdTax      = vdTax
                       tBillReportBillItemDetails.tcRmks     = vcRmks. 

                vdDiscountAmt = vdDiscountAmt - tqInvoiceDetailHistoryByInvNbr.tdidh_qty_inv * 
                                tqInvoiceDetailHistoryByInvNbr.tdidh_price * vdSODiscount / 100.   
      
                /* Get item description */
                <Q-71 run ItemForBillReport (all) (Read) (NoCache)
                   (input tqInvoiceDetailHistoryByInvNbr.tcidh_part, (Part)
                    input vcDomainCode, (Domain)
                    output dataset tqItemForBillReport) in BMfgItem>
                find first tqItemForBillReport no-error.
                if available tqItemForBillReport then
                do:
                    assign tBillReportBillItemDetails.tcItemDescription1 = tqItemForBillReport.tcpt_desc1
                           tBillReportBillItemDetails.tcItemDescription2 = tqItemForBillReport.tcpt_desc2.
                end. 

                /* get line charge info for each SO detail line */
                <Q-91 run InvoiceHistoryLCForBillReport (all) (Read) (NoCache)
                   (input vcDomainCode, (DomainCode)
                    input viSOLine, (SOLine)
                    input vcSONbr, (SONbr)
                    input icInvoiceNumber, (InvNbr)
                    output dataset tqInvoiceHistoryLCForBillReport) in BMFGInvoiceHistoryLC>  
                find first tqInvoiceHistoryLCForBillReport no-error.
                if available tqInvoiceHistoryLCForBillReport then
                do:
                    for each tqInvoiceHistoryLCForBillReport:
                        create tBillReportBillItemDetails.
                        assign tBillReportBillItemDetails.ttShipDate         = vtShipDate
                               tBillReportBillItemDetails.tcSONbr            = vcSONbr 
                               tBillReportBillItemDetails.tcRmks             = vcRmks
                               tBillReportBillItemDetails.tiSOLine           = tqInvoiceDetailHistoryByInvNbr.tiidh_line
                               tBillReportBillItemDetails.tcItemCode         = tqInvoiceHistoryLCForBillReport.tcidhlc_trl
                               tBillReportBillItemDetails.tcItemDescription1 = tqInvoiceHistoryLCForBillReport.tcidhlc_desc
                               tBillReportBillItemDetails.tdSales            = tqInvoiceHistoryLCForBillReport.tdidhlc_qty_inv * 
                                                                               tqInvoiceHistoryLCForBillReport.tdidhlc_price.
                        
                            /* Get tax for each line charge */
                            <Q-96 run TaxDetailTrailerForBillReport (all) (Read) (NoCache)
                               (input icInvoiceNumber, (InvNbr)
                                input vcSONbr, (Number)
                                input tqInvoiceHistoryLCForBillReport.tcidhlc_trl, (Trailer)
                                input vcDomainCode, (Tx2dDomain)
                                input tqInvoiceHistoryLCForBillReport.tiidhlc_line, (SOLine)
                                output dataset tqTaxDetailTrailerForBillReport) in BMfgTaxDetail>
                            find first tqTaxDetailTrailerForBillReport no-error.
                            if available tqTaxDetailTrailerForBillReport then
                                assign tBillReportBillItemDetails.tdTax = tqTaxDetailTrailerForBillReport.tdtx2d_cur_tax_amt.
                    end.
                end.
            end. /* for each tqInvoiceDetailHistoryByInvNbr: */          
        end. /* else do */

        /* if not tax by line, show total tax of SO detail line */
        viSOLine = 0.
        <Q-98 run TaxDetailLineForBillReport (all) (Read) (NoCache)
           (input IcInvoiceNumber, (InvNbr)
            input vcSONbr, (Number)
            input viSOLine, (Line)
            input vcDomainCode, (Tx2dDomain)
            output dataset tqTaxDetailLineForBillReport) in BMfgTaxDetail>
        find first tqTaxDetailLineForBillReport where 
            tqTaxDetailLineForBillReport.tctx2d_trl = "" and
            (not tqTaxDetailLineForBillReport.tltx2d_by_line)  no-error.
        if available tqTaxDetailLineForBillReport then
        do:
            assign vdTax = tqTaxDetailLineForBillReport.tdtx2d_cur_tax_amt. 
            create tBillReportBillItemDetails.
            assign tBillReportBillItemDetails.ttShipDate         = vtShipDate
                   tBillReportBillItemDetails.tcSONbr            = vcSONbr 
                   tBillReportBillItemDetails.tcRmks             = vcRmks
                   tBillReportBillItemDetails.tcItemDescription1 = trim(#T-18'Tax':40(4579)T-18#)
                   tBillReportBillItemDetails.tdTax              = vdTax.   
        end.              

        /* discount line for total discount in each SONumber */
        if vdSODiscount <> 0 then
        do:
            create tBillReportBillItemDetails.
            assign tBillReportBillItemDetails.ttShipDate         = vtShipDate
                   tBillReportBillItemDetails.tcSONbr            = vcSONbr 
                   tBillReportBillItemDetails.tcRmks             = vcRmks
                   tBillReportBillItemDetails.tcItemDescription1 = trim(#T-10'Discount':40(4387)T-10#)
                   tBillReportBillItemDetails.tdSales            = vdDiscountAmt.
        end.                
       
        /* Trailer Amount - Trailer 1 */ 
        if vdTrailerAmt1 <> 0 then
        do:
            <Q-34 run TrailerByCode (all) (Read) (NoCache)
               (input vcTrailerCode1, (TrailerCode)
                input vcDomainCode, (DomainCode)
                output dataset tqTrailerByCode) in BMFGTrailer>
            find first tqTrailerByCode no-error.
            if available tqTrailerByCode then
            do:
                create tBillReportBillItemDetails.
                assign tBillReportBillItemDetails.ttShipDate         = vtShipDate
                       tBillReportBillItemDetails.tcSONbr            = vcSONbr
                       tBillReportBillItemDetails.tcRmks             = vcRmks
                       tBillReportBillItemDetails.tcItemCode         = vcTrailerCode1
                       tBillReportBillItemDetails.tcItemDescription1 = tqTrailerByCode.tctrl_desc
                       tBillReportBillItemDetails.tdSales            = vdTrailerAmt1.

                /* if tax by line, show tax amount in trailer amount line */
                if tqTrailerByCode.tltrl_taxable then
                do:
                    viSOLine = 99999999.
                    <Q-3 run TaxDetailTrailerForBillReport (all) (Read) (NoCache)
                       (input icInvoiceNumber, (InvNbr)
                        input vcSONbr, (Number)
                        input vcTrailerCode1, (Trailer)
                        input vcDomainCode, (Tx2dDomain)
                        input viSOLine, (SOLine)
                        output dataset tqTaxDetailTrailerForBillReport) in BMfgTaxDetail> 
                    find first tqTaxDetailTrailerForBillReport where 
                        tqTaxDetailTrailerForBillReport.tltx2d_by_line = yes no-error.
                    if available tqTaxDetailTrailerForBillReport then
                        assign tBillReportBillItemDetails.tdTax = tqTaxDetailTrailerForBillReport.tdtx2d_cur_tax_amt.
                end.
            end.
        end.

        /* Trailer Amount - Trailer 2 */
        if vdTrailerAmt2 <> 0 then
        do:
            <Q-50 run TrailerByCode (all) (Read) (NoCache)
               (input vcTrailerCode2, (TrailerCode)
                input vcDomainCode, (DomainCode)
                output dataset tqTrailerByCode) in BMFGTrailer>
            find first tqTrailerByCode no-error.
            if available tqTrailerByCode then
            do:
                create tBillReportBillItemDetails.
                assign tBillReportBillItemDetails.ttShipDate         = vtShipDate
                       tBillReportBillItemDetails.tcSONbr            = vcSONbr
                       tBillReportBillItemDetails.tcRmks             = vcRmks
                       tBillReportBillItemDetails.tcItemCode         = vcTrailerCode2
                       tBillReportBillItemDetails.tcItemDescription1 = tqTrailerByCode.tctrl_desc
                       tBillReportBillItemDetails.tdSales            = vdTrailerAmt2.
    
                /* if tax by line, show tax amount in trailer amount line */
                if tqTrailerByCode.tltrl_taxable then
                do:
                    viSOLine = 99999999.
                    <Q-68 run TaxDetailTrailerForBillReport (all) (Read) (NoCache)
                       (input icInvoiceNumber, (InvNbr)
                        input vcSONbr, (Number)
                        input vcTrailerCode2, (Trailer)
                        input vcDomainCode, (Tx2dDomain)
                        input viSOLine, (SOLine)
                        output dataset tqTaxDetailTrailerForBillReport) in BMfgTaxDetail> 
                    find first tqTaxDetailTrailerForBillReport where 
                        tqTaxDetailTrailerForBillReport.tltx2d_by_line = yes no-error.
                    if available tqTaxDetailTrailerForBillReport then
                        assign tBillReportBillItemDetails.tdTax = tqTaxDetailTrailerForBillReport.tdtx2d_cur_tax_amt.
                end.                               
            end.
        end.

        /* Trailer Amount - Trailer 3 */
        if vdTrailerAmt3 <> 0 then
        do:
            <Q-73 run TrailerByCode (all) (Read) (NoCache)
               (input vcTrailerCode3, (TrailerCode)
                input vcDomainCode, (DomainCode)
                output dataset tqTrailerByCode) in BMFGTrailer>
            find first tqTrailerByCode no-error.
            if available tqTrailerByCode then
            do:
                create tBillReportBillItemDetails.
                assign tBillReportBillItemDetails.ttShipDate         = vtShipDate
                       tBillReportBillItemDetails.tcSONbr            = vcSONbr
                       tBillReportBillItemDetails.tcRmks             = vcRmks
                       tBillReportBillItemDetails.tcItemCode         = vcTrailerCode3
                       tBillReportBillItemDetails.tcItemDescription1 = tqTrailerByCode.tctrl_desc
                       tBillReportBillItemDetails.tdSales            = vdTrailerAmt3.
                  
                /* if tax by line, show tax amount in trailer amount line */
                if tqTrailerByCode.tltrl_taxable then
                do:
                    viSOLine = 99999999.
                    <Q-83 run TaxDetailTrailerForBillReport (all) (Read) (NoCache)
                       (input icInvoiceNumber, (InvNbr)
                        input vcSONbr, (Number)
                        input vcTrailerCode3, (Trailer)
                        input vcDomainCode, (Tx2dDomain)
                        input viSOLine, (SOLine)
                        output dataset tqTaxDetailTrailerForBillReport) in BMfgTaxDetail> 
                    find first tqTaxDetailTrailerForBillReport where 
                        tqTaxDetailTrailerForBillReport.tltx2d_by_line = yes no-error.
                    if available tqTaxDetailTrailerForBillReport then
                        assign tBillReportBillItemDetails.tdTax = tqTaxDetailTrailerForBillReport.tdtx2d_cur_tax_amt.
                end.
            end.
        end.

        /* if not tax by line, show total tax by each trailer, including trailer amount and line charge tax */
        viSOLine = 0.
    
        /* Trailer total tax */
        <Q-85 run TaxDetailTrailerForBillReport (all) (Read) (NoCache)
           (input icInvoiceNumber, (InvNbr)
            input vcSONbr, (Number)
            input ?, (Trailer)
            input vcDomainCode, (Tx2dDomain)
            input viSOLine, (SOLine)
            output dataset tqTaxDetailTrailerForBillReport) in BMfgTaxDetail> 
        find first tqTaxDetailTrailerForBillReport no-error.
        if available tqTaxDetailTrailerForBillReport then
        do:
            for each tqTaxDetailTrailerForBillReport where tqTaxDetailTrailerForBillReport.tctx2d_trl <> "" and
                                                           (not tqTaxDetailTrailerForBillReport.tltx2d_by_line):
                if tqTaxDetailTrailerForBillReport.tdtx2d_cur_tax_amt <> 0 then
                do:
                    create tBillReportBillItemDetails.
                    assign tBillReportBillItemDetails.ttShipDate         = vtShipDate
                           tBillReportBillItemDetails.tcSONbr            = vcSONbr
                           tBillReportBillItemDetails.tcRmks             = vcRmks
                           tBillReportBillItemDetails.tdTax              = tqTaxDetailTrailerForBillReport.tdtx2d_cur_tax_amt                     
                           tBillReportBillItemDetails.tcItemDescription1 = tqTaxDetailTrailerForBillReport.tctx2_desc + " - " + tqTaxDetailTrailerForBillReport.tctx2d_trl.
                end.
            end. /* for each tqTaxDetailTrailerForBillReport */
        end. /* if available tqTaxDetailTrailerForBillReport */
    end. /* for each tqInvoiceHistoryByInvNbr */ 

    /* Consolidate tax */
    <Q-44 run TaxDetailTrailerForBillReport (all) (Read) (NoCache)
       (input icInvoiceNumber, (InvNbr)
        input 'CONSOL', (Number)
        input ?, (Trailer)
        input vcDomainCode, (Tx2dDomain)
        input ?, (SOLine)
        output dataset tqTaxDetailTrailerForBillReport) in BMfgTaxDetail> 
    find first tqTaxDetailTrailerForBillReport no-error.
    if available tqTaxDetailTrailerForBillReport then
    do:
        empty temp-table tTaxDetailTrailerForBillReport.
        for each tqTaxDetailTrailerForBillReport:
            create tTaxDetailTrailerForBillReport.
            buffer-copy tqTaxDetailTrailerForBillReport to tTaxDetailTrailerForBillReport.
        end.

        for each tqTaxDetailTrailerForBillReport break by tqTaxDetailTrailerForBillReport.tdtx2_tax_pct:
            if first-of(tqTaxDetailTrailerForBillReport.tdtx2_tax_pct) then
            do:
                create tBillReportBillItemDetails.
                assign tBillReportBillItemDetails.ttShipDate         = vtShipDate
                       tBillReportBillItemDetails.tcSONbr            = trim(#T-67'ZSO-CONSOL':255(353628442)T-67#)
                       tBillReportBillItemDetails.tcRmks             = vcRmks
                       tBillReportBillItemDetails.tcItemDescription1 = "Tax" + " - " + string(tqTaxDetailTrailerForBillReport.tdtx2_tax_pct) + "%".

                vdConsolidateTax = 0.
                for each tTaxDetailTrailerForBillReport where
                    tTaxDetailTrailerForBillReport.tdtx2_tax_pct = tqTaxDetailTrailerForBillReport.tdtx2_tax_pct:
                    vdConsolidateTax = vdConsolidateTax + tTaxDetailTrailerForBillReport.tdtx2d_cur_tax_amt.
                end.
    
                tBillReportBillItemDetails.tdTax = vdConsolidateTax.
            end.
        end.
    end.       
end. /* else do */