Add customer name column, fix date format, fix Critical Parts type casting
- Add customer_name via coitem -> cohead -> custinfo join (blank for stock builds) - Format wo_duedate as YYYY-MM-DD using to_char() - Fix 'unknown to text' error in UNION by casting MTS/MTO literals to ::text Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -17,7 +17,7 @@ WITH fa_wos AS (
|
||||
),
|
||||
mts_shorts AS (
|
||||
SELECT fw.wo_id AS top_wo_id,
|
||||
mi.item_number, mi.item_descrip1, 'MTS' AS shortage_type,
|
||||
mi.item_number, mi.item_descrip1, 'MTS'::text AS shortage_type,
|
||||
(wm.womatl_qtyreq - wm.womatl_qtyiss) AS qty_needed,
|
||||
qtynetable(mis.itemsite_id, true) AS qty_onhand
|
||||
FROM fa_wos fw
|
||||
@@ -32,7 +32,7 @@ mts_shorts AS (
|
||||
),
|
||||
mto_shorts AS (
|
||||
SELECT fw.wo_id AS top_wo_id,
|
||||
mi.item_number, mi.item_descrip1, 'MTO' AS shortage_type,
|
||||
mi.item_number, mi.item_descrip1, 'MTO'::text AS shortage_type,
|
||||
(sub_wo.wo_qtyord - sub_wo.wo_qtyrcv) AS qty_needed,
|
||||
NULL::numeric AS qty_onhand
|
||||
FROM fa_wos fw
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
"pluginType": "DB",
|
||||
"unpublishedAction": {
|
||||
"actionConfiguration": {
|
||||
"body": "WITH fa_wos AS (\n SELECT w.wo_id, w.wo_duedate\n FROM wo w\n JOIN itemsite isite ON w.wo_itemsite_id = isite.itemsite_id\n JOIN item i ON isite.itemsite_item_id = i.item_id\n WHERE w.wo_status IN ('R','E','I')\n AND w.wo_ordtype != 'W'\n AND EXISTS (\n SELECT 1 FROM mpe.itematmdept\n WHERE itematmdept_item_id = i.item_id\n AND 'FA' = ANY(itematmdept_departments)\n )\n AND i.item_id NOT IN (\n SELECT itemgrpitem_item_id FROM itemgrpitem WHERE itemgrpitem_itemgrp_id = 97\n )\n AND w.wo_duedate <= (date_trunc('week', CURRENT_DATE) + interval '11 days')\n),\nmts_shorts AS (\n SELECT fw.wo_id AS top_wo_id,\n mi.item_number, mi.item_descrip1, 'MTS' AS shortage_type,\n (wm.womatl_qtyreq - wm.womatl_qtyiss) AS qty_needed,\n qtynetable(mis.itemsite_id, true) AS qty_onhand\n FROM fa_wos fw\n JOIN mpe.wogrpext wwg ON fw.wo_id = wwg.wogrpext_wo_id\n JOIN mpe.wogrpext rwg ON wwg.wogrpext_root_wo_id = rwg.wogrpext_root_wo_id\n JOIN wo sub_wo ON rwg.wogrpext_wo_id = sub_wo.wo_id\n JOIN womatl wm ON sub_wo.wo_id = wm.womatl_wo_id\n JOIN itemsite mis ON wm.womatl_itemsite_id = mis.itemsite_id\n JOIN item mi ON mis.itemsite_item_id = mi.item_id\n WHERE sub_wo.wo_status IN ('R','I')\n AND wm.womatl_picklist AND wm.womatl_qtyreq > wm.womatl_qtyiss\n),\nmto_shorts AS (\n SELECT fw.wo_id AS top_wo_id,\n mi.item_number, mi.item_descrip1, 'MTO' AS shortage_type,\n (sub_wo.wo_qtyord - sub_wo.wo_qtyrcv) AS qty_needed,\n NULL::numeric AS qty_onhand\n FROM fa_wos fw\n JOIN mpe.wogrpext wwg ON fw.wo_id = wwg.wogrpext_wo_id\n JOIN mpe.wogrpext rwg ON wwg.wogrpext_root_wo_id = rwg.wogrpext_root_wo_id\n JOIN wo sub_wo ON rwg.wogrpext_wo_id = sub_wo.wo_id\n JOIN itemsite mis ON sub_wo.wo_itemsite_id = mis.itemsite_id\n JOIN item mi ON mis.itemsite_item_id = mi.item_id\n WHERE sub_wo.wo_qtyord > sub_wo.wo_qtyrcv\n AND sub_wo.wo_status IN ('R','I')\n AND mi.item_id IN (\n SELECT DISTINCT itemgrpitem_item_id FROM itemgrpitem\n JOIN itemgrp ON itemgrpitem_itemgrp_id = itemgrp_id\n WHERE itemgrp_name IN ('MAGNETIC-TRANSFORMER','MAGNETIC-PLUMBING','SUB-ASSEMBLY','PCB GROUP-WORK','INPUT-BD')\n )\n),\nall_shorts AS (\n SELECT * FROM mts_shorts\n UNION ALL\n SELECT * FROM mto_shorts\n)\nSELECT item_number AS part_number,\n item_descrip1 AS part_description,\n shortage_type,\n COUNT(DISTINCT top_wo_id) AS wos_blocked,\n SUM(qty_needed) AS total_qty_needed,\n MAX(qty_onhand) AS qty_available\nFROM all_shorts\nGROUP BY item_number, item_descrip1, shortage_type\nORDER BY wos_blocked DESC, total_qty_needed DESC;",
|
||||
"body": "WITH fa_wos AS (\n SELECT w.wo_id, w.wo_duedate\n FROM wo w\n JOIN itemsite isite ON w.wo_itemsite_id = isite.itemsite_id\n JOIN item i ON isite.itemsite_item_id = i.item_id\n WHERE w.wo_status IN ('R','E','I')\n AND w.wo_ordtype != 'W'\n AND EXISTS (\n SELECT 1 FROM mpe.itematmdept\n WHERE itematmdept_item_id = i.item_id\n AND 'FA' = ANY(itematmdept_departments)\n )\n AND i.item_id NOT IN (\n SELECT itemgrpitem_item_id FROM itemgrpitem WHERE itemgrpitem_itemgrp_id = 97\n )\n AND w.wo_duedate <= (date_trunc('week', CURRENT_DATE) + interval '11 days')\n),\nmts_shorts AS (\n SELECT fw.wo_id AS top_wo_id,\n mi.item_number, mi.item_descrip1, 'MTS'::text AS shortage_type,\n (wm.womatl_qtyreq - wm.womatl_qtyiss) AS qty_needed,\n qtynetable(mis.itemsite_id, true) AS qty_onhand\n FROM fa_wos fw\n JOIN mpe.wogrpext wwg ON fw.wo_id = wwg.wogrpext_wo_id\n JOIN mpe.wogrpext rwg ON wwg.wogrpext_root_wo_id = rwg.wogrpext_root_wo_id\n JOIN wo sub_wo ON rwg.wogrpext_wo_id = sub_wo.wo_id\n JOIN womatl wm ON sub_wo.wo_id = wm.womatl_wo_id\n JOIN itemsite mis ON wm.womatl_itemsite_id = mis.itemsite_id\n JOIN item mi ON mis.itemsite_item_id = mi.item_id\n WHERE sub_wo.wo_status IN ('R','I')\n AND wm.womatl_picklist AND wm.womatl_qtyreq > wm.womatl_qtyiss\n),\nmto_shorts AS (\n SELECT fw.wo_id AS top_wo_id,\n mi.item_number, mi.item_descrip1, 'MTO'::text AS shortage_type,\n (sub_wo.wo_qtyord - sub_wo.wo_qtyrcv) AS qty_needed,\n NULL::numeric AS qty_onhand\n FROM fa_wos fw\n JOIN mpe.wogrpext wwg ON fw.wo_id = wwg.wogrpext_wo_id\n JOIN mpe.wogrpext rwg ON wwg.wogrpext_root_wo_id = rwg.wogrpext_root_wo_id\n JOIN wo sub_wo ON rwg.wogrpext_wo_id = sub_wo.wo_id\n JOIN itemsite mis ON sub_wo.wo_itemsite_id = mis.itemsite_id\n JOIN item mi ON mis.itemsite_item_id = mi.item_id\n WHERE sub_wo.wo_qtyord > sub_wo.wo_qtyrcv\n AND sub_wo.wo_status IN ('R','I')\n AND mi.item_id IN (\n SELECT DISTINCT itemgrpitem_item_id FROM itemgrpitem\n JOIN itemgrp ON itemgrpitem_itemgrp_id = itemgrp_id\n WHERE itemgrp_name IN ('MAGNETIC-TRANSFORMER','MAGNETIC-PLUMBING','SUB-ASSEMBLY','PCB GROUP-WORK','INPUT-BD')\n )\n),\nall_shorts AS (\n SELECT * FROM mts_shorts\n UNION ALL\n SELECT * FROM mto_shorts\n)\nSELECT item_number AS part_number,\n item_descrip1 AS part_description,\n shortage_type,\n COUNT(DISTINCT top_wo_id) AS wos_blocked,\n SUM(qty_needed) AS total_qty_needed,\n MAX(qty_onhand) AS qty_available\nFROM all_shorts\nGROUP BY item_number, item_descrip1, shortage_type\nORDER BY wos_blocked DESC, total_qty_needed DESC;",
|
||||
"encodeParamsToggle": true,
|
||||
"paginationType": "NONE",
|
||||
"pluginSpecifiedTemplates": [
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -1,9 +1,13 @@
|
||||
WITH fa_wos AS (
|
||||
SELECT w.wo_id, w.wo_number, w.wo_subnumber, w.wo_status, w.wo_duedate,
|
||||
w.wo_qtyord, i.item_number AS wo_item, i.item_descrip1 AS wo_descrip
|
||||
w.wo_qtyord, i.item_number AS wo_item, i.item_descrip1 AS wo_descrip,
|
||||
COALESCE(cust.cust_name, '') AS customer_name
|
||||
FROM wo w
|
||||
JOIN itemsite isite ON w.wo_itemsite_id = isite.itemsite_id
|
||||
JOIN item i ON isite.itemsite_item_id = i.item_id
|
||||
LEFT JOIN coitem ci ON w.wo_ordtype = 'S' AND w.wo_ordid = ci.coitem_id
|
||||
LEFT JOIN cohead ch ON ci.coitem_cohead_id = ch.cohead_id
|
||||
LEFT JOIN custinfo cust ON ch.cohead_cust_id = cust.cust_id
|
||||
WHERE w.wo_status IN ('R','E','I')
|
||||
AND w.wo_ordtype != 'W'
|
||||
AND EXISTS (
|
||||
@@ -36,10 +40,11 @@ SELECT
|
||||
END AS due_group_sort,
|
||||
fw.wo_number || '-' || fw.wo_subnumber AS wo_num,
|
||||
fw.wo_status AS wo_status,
|
||||
fw.wo_duedate,
|
||||
to_char(fw.wo_duedate, 'YYYY-MM-DD') AS wo_duedate,
|
||||
fw.customer_name,
|
||||
fw.wo_item,
|
||||
fw.wo_descrip,
|
||||
'MTS' AS shortage_type,
|
||||
'MTS'::text AS shortage_type,
|
||||
formatwonumber(sub_wo.wo_id) AS sub_wo_num,
|
||||
mi.item_number AS short_part,
|
||||
mi.item_descrip1 AS short_part_desc,
|
||||
@@ -79,10 +84,11 @@ SELECT
|
||||
END AS due_group_sort,
|
||||
fw.wo_number || '-' || fw.wo_subnumber AS wo_num,
|
||||
fw.wo_status AS wo_status,
|
||||
fw.wo_duedate,
|
||||
to_char(fw.wo_duedate, 'YYYY-MM-DD') AS wo_duedate,
|
||||
fw.customer_name,
|
||||
fw.wo_item,
|
||||
fw.wo_descrip,
|
||||
'MTO' AS shortage_type,
|
||||
'MTO'::text AS shortage_type,
|
||||
formatwonumber(sub_wo.wo_id) AS sub_wo_num,
|
||||
mi.item_number AS short_part,
|
||||
mi.item_descrip1 AS short_part_desc,
|
||||
|
||||
@@ -35,6 +35,7 @@
|
||||
"wo_num",
|
||||
"wo_status",
|
||||
"wo_duedate",
|
||||
"customer_name",
|
||||
"wo_item",
|
||||
"wo_descrip",
|
||||
"shortage_type",
|
||||
@@ -50,6 +51,7 @@
|
||||
"wo_num": 100,
|
||||
"wo_status": 70,
|
||||
"wo_duedate": 100,
|
||||
"customer_name": 200,
|
||||
"wo_item": 80,
|
||||
"shortage_type": 65,
|
||||
"sub_wo_num": 110,
|
||||
@@ -71,6 +73,7 @@
|
||||
{"key": "primaryColumns.wo_num.computedValue"},
|
||||
{"key": "primaryColumns.wo_status.computedValue"},
|
||||
{"key": "primaryColumns.wo_duedate.computedValue"},
|
||||
{"key": "primaryColumns.customer_name.computedValue"},
|
||||
{"key": "primaryColumns.wo_item.computedValue"},
|
||||
{"key": "primaryColumns.wo_descrip.computedValue"},
|
||||
{"key": "primaryColumns.shortage_type.computedValue"},
|
||||
@@ -183,7 +186,7 @@
|
||||
"alias": "wo_duedate",
|
||||
"allowCellWrapping": false,
|
||||
"allowSameOptionsInNewRow": true,
|
||||
"columnType": "date",
|
||||
"columnType": "text",
|
||||
"computedValue": "{{(() => { const tableData = ws1tblshort.processedTableData || []; return tableData.length > 0 ? tableData.map((currentRow, currentIndex) => (currentRow[\"wo_duedate\"])) : wo_duedate })()}}",
|
||||
"enableFilter": true,
|
||||
"enableSort": true,
|
||||
@@ -204,6 +207,31 @@
|
||||
"verticalAlignment": "CENTER",
|
||||
"width": 150
|
||||
},
|
||||
"customer_name": {
|
||||
"alias": "customer_name",
|
||||
"allowCellWrapping": false,
|
||||
"allowSameOptionsInNewRow": true,
|
||||
"columnType": "text",
|
||||
"computedValue": "{{(() => { const tableData = ws1tblshort.processedTableData || []; return tableData.length > 0 ? tableData.map((currentRow, currentIndex) => (currentRow[\"customer_name\"])) : customer_name })()}}",
|
||||
"enableFilter": true,
|
||||
"enableSort": true,
|
||||
"horizontalAlignment": "LEFT",
|
||||
"id": "customer_name",
|
||||
"index": 4,
|
||||
"isCellEditable": false,
|
||||
"isCellVisible": true,
|
||||
"isDerived": false,
|
||||
"isDisabled": false,
|
||||
"isEditable": false,
|
||||
"isVisible": true,
|
||||
"label": "customer_name",
|
||||
"originalId": "customer_name",
|
||||
"sticky": "",
|
||||
"textSize": "0.775rem",
|
||||
"validation": {},
|
||||
"verticalAlignment": "CENTER",
|
||||
"width": 150
|
||||
},
|
||||
"wo_item": {
|
||||
"alias": "wo_item",
|
||||
"allowCellWrapping": false,
|
||||
|
||||
Reference in New Issue
Block a user