Description
Return the detail information of current bill such as ShipDate, SO Number, Discount...
Parameters
| icInvoiceNumber | input | character | |
| olAvailItemDetails | output | logical | |
| oiReturnStatus | output | integer | Return status of the method. |
Internal usage
QadFinancials
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 */