4 -- Copyright (c) 1999-2014 by OpenMFG LLC, d/b/a xTuple.
5 -- See www.xtuple.com/CPAL for the full text of the software license.
7 SELECT coitem_id AS id, coitem_cohead_id AS altId,
8 formatSoLineNumber(coitem_id) AS f_linenumber,
9 getSoSchedDate(cohead_id) AS sort_scheddate,
11 cust_number, cust_name,
12 item_number, item_descrip1, (item_descrip1 || ' ' || item_descrip2) AS itemdescription,
15 qtyAtShipping(coitem_id) AS qtyatshipping,
16 -- TODO - not needed, remove? (very slow)
17 -- qtyAvailable(itemsite_id, coitem_scheddate) AS qtyavailable,
18 -- (qtyAvailable(itemsite_id, coitem_scheddate) < 0.0) AS stockout,
19 -- CASE WHEN (itemsite_useparams) THEN (qtyAvailable(itemsite_id, coitem_scheddate) <= itemsite_reorderlevel)
20 -- ELSE (qtyAvailable(itemsite_id, coitem_scheddate) <= 0.0)
22 noNeg(coitem_qtyord - coitem_qtyshipped + coitem_qtyreturned) AS qtybalance,
23 currtobase(cohead_curr_id, coitem_price, cohead_orderdate) AS baseunitprice,
24 round((coitem_qtyord * coitem_qty_invuomratio) *
25 (coitem_price / coitem_price_invuomratio), 2) AS extprice,
26 round((coitem_qtyord * coitem_qty_invuomratio) *
27 (currtobase(cohead_curr_id, coitem_price, cohead_orderdate) / coitem_price_invuomratio), 2) AS baseextprice,
28 round((noNeg(coitem_qtyord - coitem_qtyshipped + coitem_qtyreturned) * coitem_qty_invuomratio) *
29 (coitem_price / coitem_price_invuomratio), 2) AS extpricebalance,
30 round((noNeg(coitem_qtyord - coitem_qtyshipped + coitem_qtyreturned) * coitem_qty_invuomratio) *
31 (currtobase(cohead_curr_id, coitem_price, cohead_orderdate) / coitem_price_invuomratio), 2) AS baseextpricebalance,
32 round((coitem_qtyord * coitem_qty_invuomratio) *
33 (coitem_unitcost / coitem_price_invuomratio), 2) AS extcost,
34 (round((coitem_qtyord * coitem_qty_invuomratio) *
35 (currtobase(cohead_curr_id, coitem_price, cohead_orderdate) / coitem_price_invuomratio), 2) -
36 round((coitem_qtyord * coitem_qty_invuomratio) *
37 (coitem_unitcost / coitem_price_invuomratio), 2)) AS margin,
38 CASE WHEN (coitem_price > 0.0) THEN
39 (round((coitem_qtyord * coitem_qty_invuomratio) *
40 (currtobase(cohead_curr_id, coitem_price, cohead_orderdate) / coitem_price_invuomratio), 2) -
41 round((coitem_qtyord * coitem_qty_invuomratio) *
42 (coitem_unitcost / coitem_price_invuomratio), 2)) /
43 round((coitem_qtyord * coitem_qty_invuomratio) *
44 (currtobase(cohead_curr_id, coitem_price, cohead_orderdate) / coitem_price_invuomratio), 2)
47 curr_abbr AS currAbbr,
48 -- TODO - not needed, remove? (very slow)
49 -- CASE WHEN (qtyAvailable(itemsite_id, coitem_scheddate) < 0.0) THEN 'error'
50 -- WHEN itemsite_useparams AND (qtyAvailable(itemsite_id, coitem_scheddate) <= itemsite_reorderlevel) THEN 'warning'
51 -- WHEN NOT itemsite_useparams AND (qtyAvailable(itemsite_id, coitem_scheddate) <= 0.0) THEN 'warning'
52 -- END AS qtyavailable_qtforegroundrole,
53 'qty' AS coitem_qtyord_xtnumericrole,
54 'qty' AS coitem_qtyshipped_xtnumericrole,
55 'qty' AS coitem_qtyreturned_xtnumericrole,
56 'qty' AS qtyatshipping_xtnumericrole,
57 'qty' AS qtybalance_xtnumericrole,
58 'qty' AS qtyavailable_xtnumericrole,
59 'salesprice' AS coitem_price_xtnumericrole,
60 'salesprice' AS baseunitprice_xtnumericrole,
61 'cost' AS coitem_unitcost_xtnumericrole,
62 'curr' AS extprice_xtnumericrole,
63 'curr' AS extcost_xtnumericrole,
64 'curr' AS margin_xtnumericrole,
65 'percent' AS marginpercent_xtnumericrole,
66 'curr' AS baseextprice_xtnumericrole,
67 'curr' AS extpricebalance_xtnumericrole,
68 'curr' AS baseextpricebalance_xtnumericrole,
69 0 AS coitem_qtyord_xttotalrole,
70 0 AS coitem_qtyshipped_xttotalrole,
71 0 AS coitem_qtyreturned_xttotalrole,
72 0 AS qtybalance_xttotalrole,
73 0 AS baseextprice_xttotalrole,
74 0 AS baseextpricebalance_xttotalrole
75 FROM coitem JOIN cohead ON (cohead_id=coitem_cohead_id)
76 JOIN custinfo ON (cust_id=cohead_cust_id)
77 JOIN itemsite ON (itemsite_id=coitem_itemsite_id)
78 JOIN site() ON (warehous_id=itemsite_warehous_id)
79 JOIN item ON (item_id=itemsite_item_id)
80 JOIN uom ON (uom_id=coitem_qty_uom_id)
81 JOIN curr_symbol ON (curr_id=cohead_curr_id)
82 <? foreach("char_id_text_list") ?>
83 LEFT OUTER JOIN charass charass_alias<? literal("char_id_text_list") ?>
84 ON ((charass_alias<? literal("char_id_text_list") ?>.charass_target_type='SO')
85 AND (charass_alias<? literal("char_id_text_list") ?>.charass_target_id=cohead_id)
86 AND (charass_alias<? literal("char_id_text_list") ?>.charass_char_id=<? value("char_id_text_list") ?>))
87 LEFT OUTER JOIN char char_alias<? literal("char_id_text_list") ?>
88 ON (charass_alias<? literal("char_id_text_list") ?>.charass_char_id=char_alias<? literal("char_id_text_list") ?>.char_id)
90 <? foreach("char_id_list_list") ?>
91 LEFT OUTER JOIN charass charass_alias<? literal("char_id_list_list") ?>
92 ON ((charass_alias<? literal("char_id_list_list") ?>.charass_target_type='SO')
93 AND (charass_alias<? literal("char_id_list_list") ?>.charass_target_id=cohead_id)
94 AND (charass_alias<? literal("char_id_list_list") ?>.charass_char_id=<? value("char_id_list_list") ?>))
95 LEFT OUTER JOIN char char_alias<? literal("char_id_list_list") ?>
96 ON (charass_alias<? literal("char_id_list_list") ?>.charass_char_id=char_alias<? literal("char_id_list_list") ?>.char_id)
98 <? foreach("char_id_date_list") ?>
99 LEFT OUTER JOIN charass charass_alias<? literal("char_id_date_list") ?>
100 ON ((charass_alias<? literal("char_id_date_list") ?>.charass_target_type='SO')
101 AND (charass_alias<? literal("char_id_date_list") ?>.charass_target_id=cohead_id)
102 AND (charass_alias<? literal("char_id_date_list") ?>.charass_char_id=<? value("char_id_date_list") ?>))
103 LEFT OUTER JOIN char char_alias<? literal("char_id_date_list") ?>
104 ON (charass_alias<? literal("char_id_date_list") ?>.charass_char_id=char_alias<? literal("char_id_date_list") ?>.char_id)
106 WHERE ( (coitem_status<>'X')
107 <? if exists("cohead_id") ?>
108 AND (coitem_cohead_id=<? value("cohead_id") ?>)
110 <? if exists("openOnly") ?>
111 AND (coitem_status<>'C')
113 <? if exists("startDate") ?>
114 AND (cohead_orderdate BETWEEN <? value("startDate") ?> AND <? value("endDate") ?>)
117 <? if exists("salesrep_id") ?>
118 AND (cohead_salesrep_id=<? value("salesrep_id") ?>)
120 <? if exists("shipto_id") ?>
121 AND (cohead_shipto_id=<? value("shipto_id") ?>)
123 <? if exists("cust_id") ?>
124 AND (cohead_cust_id=<? value("cust_id") ?>)
125 <? elseif exists("custtype_id") ?>
126 AND (cust_custtype_id=<? value("custtype_id") ?>)
127 <? elseif exists("custtype_pattern") ?>
128 AND (cust_custtype_id IN (SELECT DISTINCT custtype_id
130 WHERE (custtype_code ~ <? value("custtype_pattern") ?>)))
131 <? elseif exists("custgrp") ?>
132 AND (cust_id IN (SELECT DISTINCT custgrpitem_cust_id
134 <? elseif exists("custgrp_id") ?>
135 AND (cust_id IN (SELECT DISTINCT custgrpitem_cust_id
137 WHERE (custgrpitem_custgrp_id=<? value("custgrp_id") ?>)))
138 <? elseif exists("custgrp_pattern") ?>
139 AND (cust_id IN (SELECT DISTINCT custgrpitem_cust_id
140 FROM custgrp, custgrpitem
141 WHERE ( (custgrpitem_custgrp_id=custgrp_id)
142 AND (custgrp_name ~ <? value("custgrp_pattern") ?>) )) )
145 <? if exists("item_id") ?>
146 AND (itemsite_item_id=<? value("item_id") ?>)
147 <? elseif exists("prodcat_id") ?>
148 AND (item_prodcat_id=<? value("prodcat_id") ?>)
149 <? elseif exists("prodcat_pattern") ?>
150 AND (item_prodcat_id IN (SELECT DISTINCT prodcat_id
152 WHERE (prodcat_code ~ <? value("prodcat_pattern") ?>)))
155 <? if exists("warehous_id") ?>
156 AND (itemsite_warehous_id=<? value("warehous_id") ?>)
158 <? literal("charClause") ?>
161 <? if exists("orderByScheddate") ?>
162 ORDER BY sort_scheddate, cohead_number, coitem_linenumber, coitem_subnumber
163 <? elseif exists("orderByOrderdate") ?>
164 ORDER BY cohead_orderdate, cohead_number, coitem_linenumber, coitem_subnumber
166 ORDER BY cohead_number, coitem_linenumber, coitem_subnumber