Compare commits

3 Commits

Author SHA1 Message Date
ef9e518e01 Pre-merge 2026-04-03 17:42:41 +00:00
5f6d54e72c Fix Critical Parts qty_available to show actual QOH from MPE warehouse
Join directly to itemsite (warehouse 35/MPE) and call qtynetable() per
part instead of using MAX from shortage lines, which was NULL for MTO parts.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-03 13:40:19 -04:00
c3d0cb8ff6 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>
2026-04-03 13:36:52 -04:00
6 changed files with 310 additions and 187 deletions

View File

@@ -17,9 +17,8 @@ WITH fa_wos AS (
), ),
mts_shorts AS ( mts_shorts AS (
SELECT fw.wo_id AS top_wo_id, SELECT fw.wo_id AS top_wo_id,
mi.item_number, mi.item_descrip1, 'MTS' AS shortage_type, mi.item_number, mi.item_descrip1, mi.item_id, 'MTS'::text AS shortage_type,
(wm.womatl_qtyreq - wm.womatl_qtyiss) AS qty_needed, (wm.womatl_qtyreq - wm.womatl_qtyiss) AS qty_needed
qtynetable(mis.itemsite_id, true) AS qty_onhand
FROM fa_wos fw FROM fa_wos fw
JOIN mpe.wogrpext wwg ON fw.wo_id = wwg.wogrpext_wo_id JOIN mpe.wogrpext wwg ON fw.wo_id = wwg.wogrpext_wo_id
JOIN mpe.wogrpext rwg ON wwg.wogrpext_root_wo_id = rwg.wogrpext_root_wo_id JOIN mpe.wogrpext rwg ON wwg.wogrpext_root_wo_id = rwg.wogrpext_root_wo_id
@@ -32,9 +31,8 @@ mts_shorts AS (
), ),
mto_shorts AS ( mto_shorts AS (
SELECT fw.wo_id AS top_wo_id, SELECT fw.wo_id AS top_wo_id,
mi.item_number, mi.item_descrip1, 'MTO' AS shortage_type, mi.item_number, mi.item_descrip1, mi.item_id, 'MTO'::text AS shortage_type,
(sub_wo.wo_qtyord - sub_wo.wo_qtyrcv) AS qty_needed, (sub_wo.wo_qtyord - sub_wo.wo_qtyrcv) AS qty_needed
NULL::numeric AS qty_onhand
FROM fa_wos fw FROM fa_wos fw
JOIN mpe.wogrpext wwg ON fw.wo_id = wwg.wogrpext_wo_id JOIN mpe.wogrpext wwg ON fw.wo_id = wwg.wogrpext_wo_id
JOIN mpe.wogrpext rwg ON wwg.wogrpext_root_wo_id = rwg.wogrpext_root_wo_id JOIN mpe.wogrpext rwg ON wwg.wogrpext_root_wo_id = rwg.wogrpext_root_wo_id
@@ -54,12 +52,14 @@ all_shorts AS (
UNION ALL UNION ALL
SELECT * FROM mto_shorts SELECT * FROM mto_shorts
) )
SELECT item_number AS part_number, SELECT s.item_number AS part_number,
item_descrip1 AS part_description, s.item_descrip1 AS part_description,
shortage_type, s.shortage_type,
COUNT(DISTINCT top_wo_id) AS wos_blocked, COUNT(DISTINCT s.top_wo_id) AS wos_blocked,
SUM(qty_needed) AS total_qty_needed, SUM(s.qty_needed) AS total_qty_needed,
MAX(qty_onhand) AS qty_available qtynetable(isite.itemsite_id, true) AS qty_available
FROM all_shorts FROM all_shorts s
GROUP BY item_number, item_descrip1, shortage_type JOIN itemsite isite ON isite.itemsite_item_id = s.item_id
AND isite.itemsite_warehous_id = 35
GROUP BY s.item_number, s.item_descrip1, s.shortage_type, isite.itemsite_id
ORDER BY wos_blocked DESC, total_qty_needed DESC; ORDER BY wos_blocked DESC, total_qty_needed DESC;

View File

@@ -5,7 +5,7 @@
"pluginType": "DB", "pluginType": "DB",
"unpublishedAction": { "unpublishedAction": {
"actionConfiguration": { "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, mi.item_id, 'MTS'::text AS shortage_type,\n (wm.womatl_qtyreq - wm.womatl_qtyiss) AS qty_needed\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, mi.item_id, 'MTO'::text AS shortage_type,\n (sub_wo.wo_qtyord - sub_wo.wo_qtyrcv) AS qty_needed\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 s.item_number AS part_number,\n s.item_descrip1 AS part_description,\n s.shortage_type,\n COUNT(DISTINCT s.top_wo_id) AS wos_blocked,\n SUM(s.qty_needed) AS total_qty_needed,\n qtynetable(isite.itemsite_id, true) AS qty_available\nFROM all_shorts s\nJOIN itemsite isite ON isite.itemsite_item_id = s.item_id\n AND isite.itemsite_warehous_id = 35\nGROUP BY s.item_number, s.item_descrip1, s.shortage_type, isite.itemsite_id\nORDER BY wos_blocked DESC, total_qty_needed DESC;",
"encodeParamsToggle": true, "encodeParamsToggle": true,
"paginationType": "NONE", "paginationType": "NONE",
"pluginSpecifiedTemplates": [ "pluginSpecifiedTemplates": [

File diff suppressed because one or more lines are too long

View File

@@ -1,9 +1,13 @@
WITH fa_wos AS ( WITH fa_wos AS (
SELECT w.wo_id, w.wo_number, w.wo_subnumber, w.wo_status, w.wo_duedate, 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 FROM wo w
JOIN itemsite isite ON w.wo_itemsite_id = isite.itemsite_id JOIN itemsite isite ON w.wo_itemsite_id = isite.itemsite_id
JOIN item i ON isite.itemsite_item_id = i.item_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') WHERE w.wo_status IN ('R','E','I')
AND w.wo_ordtype != 'W' AND w.wo_ordtype != 'W'
AND EXISTS ( AND EXISTS (
@@ -36,10 +40,11 @@ SELECT
END AS due_group_sort, END AS due_group_sort,
fw.wo_number || '-' || fw.wo_subnumber AS wo_num, fw.wo_number || '-' || fw.wo_subnumber AS wo_num,
fw.wo_status AS wo_status, 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_item,
fw.wo_descrip, fw.wo_descrip,
'MTS' AS shortage_type, 'MTS'::text AS shortage_type,
formatwonumber(sub_wo.wo_id) AS sub_wo_num, formatwonumber(sub_wo.wo_id) AS sub_wo_num,
mi.item_number AS short_part, mi.item_number AS short_part,
mi.item_descrip1 AS short_part_desc, mi.item_descrip1 AS short_part_desc,
@@ -79,10 +84,11 @@ SELECT
END AS due_group_sort, END AS due_group_sort,
fw.wo_number || '-' || fw.wo_subnumber AS wo_num, fw.wo_number || '-' || fw.wo_subnumber AS wo_num,
fw.wo_status AS wo_status, 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_item,
fw.wo_descrip, fw.wo_descrip,
'MTO' AS shortage_type, 'MTO'::text AS shortage_type,
formatwonumber(sub_wo.wo_id) AS sub_wo_num, formatwonumber(sub_wo.wo_id) AS sub_wo_num,
mi.item_number AS short_part, mi.item_number AS short_part,
mi.item_descrip1 AS short_part_desc, mi.item_descrip1 AS short_part_desc,

View File

@@ -5,18 +5,22 @@
"borderColor": "#E0DEDE", "borderColor": "#E0DEDE",
"borderRadius": "0.375rem", "borderRadius": "0.375rem",
"borderWidth": 1, "borderWidth": 1,
"bottomRow": 122, "bottomRow": 124,
"boxShadow": "{{appsmith.theme.boxShadow.appBoxShadow}}", "boxShadow": "{{appsmith.theme.boxShadow.appBoxShadow}}",
"children": [ "children": [
{ {
"borderRadius": "{{appsmith.theme.borderRadius.appBorderRadius}}", "borderRadius": "{{appsmith.theme.borderRadius.appBorderRadius}}",
"bottomRow": 1130, "bottomRow": 1150,
"boxShadow": "{{appsmith.theme.boxShadow.appBoxShadow}}", "boxShadow": "{{appsmith.theme.boxShadow.appBoxShadow}}",
"canExtend": true, "canExtend": true,
"detachFromLayout": true, "detachFromLayout": true,
"dynamicBindingPathList": [ "dynamicBindingPathList": [
{"key": "borderRadius"}, {
{"key": "boxShadow"} "key": "borderRadius"
},
{
"key": "boxShadow"
}
], ],
"dynamicHeight": "AUTO_HEIGHT", "dynamicHeight": "AUTO_HEIGHT",
"dynamicTriggerPathList": [], "dynamicTriggerPathList": [],
@@ -52,13 +56,17 @@
}, },
{ {
"borderRadius": "{{appsmith.theme.borderRadius.appBorderRadius}}", "borderRadius": "{{appsmith.theme.borderRadius.appBorderRadius}}",
"bottomRow": 1130, "bottomRow": 1150,
"boxShadow": "{{appsmith.theme.boxShadow.appBoxShadow}}", "boxShadow": "{{appsmith.theme.boxShadow.appBoxShadow}}",
"canExtend": true, "canExtend": true,
"detachFromLayout": true, "detachFromLayout": true,
"dynamicBindingPathList": [ "dynamicBindingPathList": [
{"key": "borderRadius"}, {
{"key": "boxShadow"} "key": "borderRadius"
},
{
"key": "boxShadow"
}
], ],
"dynamicHeight": "AUTO_HEIGHT", "dynamicHeight": "AUTO_HEIGHT",
"dynamicTriggerPathList": [], "dynamicTriggerPathList": [],
@@ -95,8 +103,12 @@
], ],
"defaultTab": "WO Shortages", "defaultTab": "WO Shortages",
"dynamicBindingPathList": [ "dynamicBindingPathList": [
{"key": "accentColor"}, {
{"key": "boxShadow"} "key": "accentColor"
},
{
"key": "boxShadow"
}
], ],
"dynamicHeight": "AUTO_HEIGHT", "dynamicHeight": "AUTO_HEIGHT",
"dynamicTriggerPathList": [], "dynamicTriggerPathList": [],

View File

@@ -35,6 +35,7 @@
"wo_num", "wo_num",
"wo_status", "wo_status",
"wo_duedate", "wo_duedate",
"customer_name",
"wo_item", "wo_item",
"wo_descrip", "wo_descrip",
"shortage_type", "shortage_type",
@@ -43,46 +44,91 @@
"short_part_desc", "short_part_desc",
"qty_required", "qty_required",
"qty_issued", "qty_issued",
"qty_onhand" "qty_onhand",
"due_group_sort"
], ],
"columnUpdatedAt": 1775238074046,
"columnWidthMap": { "columnWidthMap": {
"customer_name": 200,
"due_group": 100, "due_group": 100,
"wo_num": 100, "qty_issued": 80,
"wo_status": 70, "qty_onhand": 80,
"wo_duedate": 100, "qty_required": 80,
"wo_item": 80, "short_part": 80,
"shortage_type": 65, "shortage_type": 65,
"sub_wo_num": 110, "sub_wo_num": 110,
"short_part": 80, "wo_duedate": 100,
"qty_required": 80, "wo_item": 80,
"qty_issued": 80, "wo_num": 100,
"qty_onhand": 80 "wo_status": 70
}, },
"compactMode": "SHORT", "compactMode": "SHORT",
"defaultPageSize": 0, "defaultPageSize": 0,
"defaultSelectedRowIndex": 0, "defaultSelectedRowIndex": 0,
"defaultSelectedRowIndices": [0], "defaultSelectedRowIndices": [
0
],
"delimiter": ",", "delimiter": ",",
"dynamicBindingPathList": [ "dynamicBindingPathList": [
{"key": "accentColor"}, {
{"key": "boxShadow"}, "key": "accentColor"
{"key": "tableData"}, },
{"key": "primaryColumns.due_group.computedValue"}, {
{"key": "primaryColumns.wo_num.computedValue"}, "key": "boxShadow"
{"key": "primaryColumns.wo_status.computedValue"}, },
{"key": "primaryColumns.wo_duedate.computedValue"}, {
{"key": "primaryColumns.wo_item.computedValue"}, "key": "tableData"
{"key": "primaryColumns.wo_descrip.computedValue"}, },
{"key": "primaryColumns.shortage_type.computedValue"}, {
{"key": "primaryColumns.sub_wo_num.computedValue"}, "key": "primaryColumns.due_group.computedValue"
{"key": "primaryColumns.short_part.computedValue"}, },
{"key": "primaryColumns.short_part_desc.computedValue"}, {
{"key": "primaryColumns.qty_required.computedValue"}, "key": "primaryColumns.wo_num.computedValue"
{"key": "primaryColumns.qty_issued.computedValue"}, },
{"key": "primaryColumns.qty_onhand.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"
},
{
"key": "primaryColumns.sub_wo_num.computedValue"
},
{
"key": "primaryColumns.short_part.computedValue"
},
{
"key": "primaryColumns.short_part_desc.computedValue"
},
{
"key": "primaryColumns.qty_required.computedValue"
},
{
"key": "primaryColumns.qty_issued.computedValue"
},
{
"key": "primaryColumns.qty_onhand.computedValue"
},
{
"key": "primaryColumns.due_group_sort.computedValue"
}
], ],
"dynamicPropertyPathList": [ "dynamicPropertyPathList": [
{"key": "textSize"} {
"key": "textSize"
}
], ],
"dynamicTriggerPathList": [], "dynamicTriggerPathList": [],
"enableClientSideSearch": true, "enableClientSideSearch": true,
@@ -104,6 +150,31 @@
"parentId": "ws1cnvstab1", "parentId": "ws1cnvstab1",
"parentRowSpace": 10, "parentRowSpace": 10,
"primaryColumns": { "primaryColumns": {
"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
},
"due_group": { "due_group": {
"alias": "due_group", "alias": "due_group",
"allowCellWrapping": false, "allowCellWrapping": false,
@@ -129,175 +200,109 @@
"verticalAlignment": "CENTER", "verticalAlignment": "CENTER",
"width": 150 "width": 150
}, },
"wo_num": { "due_group_sort": {
"alias": "wo_num", "alias": "due_group_sort",
"allowCellWrapping": false, "allowCellWrapping": false,
"allowSameOptionsInNewRow": true, "allowSameOptionsInNewRow": true,
"columnType": "text", "cellBackground": "",
"computedValue": "{{(() => { const tableData = ws1tblshort.processedTableData || []; return tableData.length > 0 ? tableData.map((currentRow, currentIndex) => (currentRow[\"wo_num\"])) : wo_num })()}}", "columnType": "number",
"computedValue": "{{(() => { const tableData = ws1tblshort.processedTableData || []; return tableData.length > 0 ? tableData.map((currentRow, currentIndex) => (currentRow[\"due_group_sort\"])) : due_group_sort })()}}",
"currencyCode": "USD",
"decimals": 0,
"enableFilter": true, "enableFilter": true,
"enableSort": true, "enableSort": true,
"fontStyle": "",
"horizontalAlignment": "LEFT", "horizontalAlignment": "LEFT",
"id": "wo_num", "id": "due_group_sort",
"index": 1, "index": 1,
"isCellEditable": false, "isCellEditable": false,
"isCellVisible": true, "isCellVisible": true,
"isDerived": false, "isDerived": false,
"isDisabled": false, "isDisabled": false,
"isDiscardVisible": true,
"isEditable": false, "isEditable": false,
"isSaveVisible": true,
"isVisible": true, "isVisible": true,
"label": "wo_num", "label": "due_group_sort",
"originalId": "wo_num", "notation": "standard",
"originalId": "due_group_sort",
"sticky": "", "sticky": "",
"textColor": "",
"textSize": "0.775rem", "textSize": "0.775rem",
"thousandSeparator": true,
"validation": {}, "validation": {},
"verticalAlignment": "CENTER", "verticalAlignment": "CENTER",
"width": 150 "width": 150
}, },
"wo_status": { "qty_issued": {
"alias": "wo_status", "alias": "qty_issued",
"allowCellWrapping": false, "allowCellWrapping": false,
"allowSameOptionsInNewRow": true, "allowSameOptionsInNewRow": true,
"columnType": "text", "columnType": "number",
"computedValue": "{{(() => { const tableData = ws1tblshort.processedTableData || []; return tableData.length > 0 ? tableData.map((currentRow, currentIndex) => (currentRow[\"wo_status\"])) : wo_status })()}}", "computedValue": "{{(() => { const tableData = ws1tblshort.processedTableData || []; return tableData.length > 0 ? tableData.map((currentRow, currentIndex) => (currentRow[\"qty_issued\"])) : qty_issued })()}}",
"enableFilter": true, "enableFilter": true,
"enableSort": true, "enableSort": true,
"horizontalAlignment": "LEFT", "horizontalAlignment": "LEFT",
"id": "wo_status", "id": "qty_issued",
"index": 2, "index": 11,
"isCellEditable": false, "isCellEditable": false,
"isCellVisible": true, "isCellVisible": true,
"isDerived": false, "isDerived": false,
"isDisabled": false, "isDisabled": false,
"isEditable": false, "isEditable": false,
"isVisible": true, "isVisible": true,
"label": "wo_status", "label": "qty_issued",
"originalId": "wo_status", "originalId": "qty_issued",
"sticky": "", "sticky": "",
"textSize": "0.775rem", "textSize": "0.775rem",
"validation": {}, "validation": {},
"verticalAlignment": "CENTER", "verticalAlignment": "CENTER",
"width": 150 "width": 150
}, },
"wo_duedate": { "qty_onhand": {
"alias": "wo_duedate", "alias": "qty_onhand",
"allowCellWrapping": false, "allowCellWrapping": false,
"allowSameOptionsInNewRow": true, "allowSameOptionsInNewRow": true,
"columnType": "date", "columnType": "number",
"computedValue": "{{(() => { const tableData = ws1tblshort.processedTableData || []; return tableData.length > 0 ? tableData.map((currentRow, currentIndex) => (currentRow[\"wo_duedate\"])) : wo_duedate })()}}", "computedValue": "{{(() => { const tableData = ws1tblshort.processedTableData || []; return tableData.length > 0 ? tableData.map((currentRow, currentIndex) => (currentRow[\"qty_onhand\"])) : qty_onhand })()}}",
"enableFilter": true, "enableFilter": true,
"enableSort": true, "enableSort": true,
"horizontalAlignment": "LEFT", "horizontalAlignment": "LEFT",
"id": "wo_duedate", "id": "qty_onhand",
"index": 3, "index": 12,
"isCellEditable": false, "isCellEditable": false,
"isCellVisible": true, "isCellVisible": true,
"isDerived": false, "isDerived": false,
"isDisabled": false, "isDisabled": false,
"isEditable": false, "isEditable": false,
"isVisible": true, "isVisible": true,
"label": "wo_duedate", "label": "qty_onhand",
"originalId": "wo_duedate", "originalId": "qty_onhand",
"sticky": "", "sticky": "",
"textSize": "0.775rem", "textSize": "0.775rem",
"validation": {}, "validation": {},
"verticalAlignment": "CENTER", "verticalAlignment": "CENTER",
"width": 150 "width": 150
}, },
"wo_item": { "qty_required": {
"alias": "wo_item", "alias": "qty_required",
"allowCellWrapping": false, "allowCellWrapping": false,
"allowSameOptionsInNewRow": true, "allowSameOptionsInNewRow": true,
"columnType": "text", "columnType": "number",
"computedValue": "{{(() => { const tableData = ws1tblshort.processedTableData || []; return tableData.length > 0 ? tableData.map((currentRow, currentIndex) => (currentRow[\"wo_item\"])) : wo_item })()}}", "computedValue": "{{(() => { const tableData = ws1tblshort.processedTableData || []; return tableData.length > 0 ? tableData.map((currentRow, currentIndex) => (currentRow[\"qty_required\"])) : qty_required })()}}",
"enableFilter": true, "enableFilter": true,
"enableSort": true, "enableSort": true,
"horizontalAlignment": "LEFT", "horizontalAlignment": "LEFT",
"id": "wo_item", "id": "qty_required",
"index": 4, "index": 10,
"isCellEditable": false, "isCellEditable": false,
"isCellVisible": true, "isCellVisible": true,
"isDerived": false, "isDerived": false,
"isDisabled": false, "isDisabled": false,
"isEditable": false, "isEditable": false,
"isVisible": true, "isVisible": true,
"label": "wo_item", "label": "qty_required",
"originalId": "wo_item", "originalId": "qty_required",
"sticky": "",
"textSize": "0.775rem",
"validation": {},
"verticalAlignment": "CENTER",
"width": 150
},
"wo_descrip": {
"alias": "wo_descrip",
"allowCellWrapping": false,
"allowSameOptionsInNewRow": true,
"columnType": "text",
"computedValue": "{{(() => { const tableData = ws1tblshort.processedTableData || []; return tableData.length > 0 ? tableData.map((currentRow, currentIndex) => (currentRow[\"wo_descrip\"])) : wo_descrip })()}}",
"enableFilter": true,
"enableSort": true,
"horizontalAlignment": "LEFT",
"id": "wo_descrip",
"index": 5,
"isCellEditable": false,
"isCellVisible": true,
"isDerived": false,
"isDisabled": false,
"isEditable": false,
"isVisible": true,
"label": "wo_descrip",
"originalId": "wo_descrip",
"sticky": "",
"textSize": "0.775rem",
"validation": {},
"verticalAlignment": "CENTER",
"width": 150
},
"shortage_type": {
"alias": "shortage_type",
"allowCellWrapping": false,
"allowSameOptionsInNewRow": true,
"columnType": "text",
"computedValue": "{{(() => { const tableData = ws1tblshort.processedTableData || []; return tableData.length > 0 ? tableData.map((currentRow, currentIndex) => (currentRow[\"shortage_type\"])) : shortage_type })()}}",
"enableFilter": true,
"enableSort": true,
"horizontalAlignment": "LEFT",
"id": "shortage_type",
"index": 6,
"isCellEditable": false,
"isCellVisible": true,
"isDerived": false,
"isDisabled": false,
"isEditable": false,
"isVisible": true,
"label": "shortage_type",
"originalId": "shortage_type",
"sticky": "",
"textSize": "0.775rem",
"validation": {},
"verticalAlignment": "CENTER",
"width": 150
},
"sub_wo_num": {
"alias": "sub_wo_num",
"allowCellWrapping": false,
"allowSameOptionsInNewRow": true,
"columnType": "text",
"computedValue": "{{(() => { const tableData = ws1tblshort.processedTableData || []; return tableData.length > 0 ? tableData.map((currentRow, currentIndex) => (currentRow[\"sub_wo_num\"])) : sub_wo_num })()}}",
"enableFilter": true,
"enableSort": true,
"horizontalAlignment": "LEFT",
"id": "sub_wo_num",
"index": 7,
"isCellEditable": false,
"isCellVisible": true,
"isDerived": false,
"isDisabled": false,
"isEditable": false,
"isVisible": true,
"label": "sub_wo_num",
"originalId": "sub_wo_num",
"sticky": "", "sticky": "",
"textSize": "0.775rem", "textSize": "0.775rem",
"validation": {}, "validation": {},
@@ -354,75 +359,175 @@
"verticalAlignment": "CENTER", "verticalAlignment": "CENTER",
"width": 150 "width": 150
}, },
"qty_required": { "shortage_type": {
"alias": "qty_required", "alias": "shortage_type",
"allowCellWrapping": false, "allowCellWrapping": false,
"allowSameOptionsInNewRow": true, "allowSameOptionsInNewRow": true,
"columnType": "number", "columnType": "text",
"computedValue": "{{(() => { const tableData = ws1tblshort.processedTableData || []; return tableData.length > 0 ? tableData.map((currentRow, currentIndex) => (currentRow[\"qty_required\"])) : qty_required })()}}", "computedValue": "{{(() => { const tableData = ws1tblshort.processedTableData || []; return tableData.length > 0 ? tableData.map((currentRow, currentIndex) => (currentRow[\"shortage_type\"])) : shortage_type })()}}",
"enableFilter": true, "enableFilter": true,
"enableSort": true, "enableSort": true,
"horizontalAlignment": "LEFT", "horizontalAlignment": "LEFT",
"id": "qty_required", "id": "shortage_type",
"index": 10, "index": 6,
"isCellEditable": false, "isCellEditable": false,
"isCellVisible": true, "isCellVisible": true,
"isDerived": false, "isDerived": false,
"isDisabled": false, "isDisabled": false,
"isEditable": false, "isEditable": false,
"isVisible": true, "isVisible": true,
"label": "qty_required", "label": "shortage_type",
"originalId": "qty_required", "originalId": "shortage_type",
"sticky": "", "sticky": "",
"textSize": "0.775rem", "textSize": "0.775rem",
"validation": {}, "validation": {},
"verticalAlignment": "CENTER", "verticalAlignment": "CENTER",
"width": 150 "width": 150
}, },
"qty_issued": { "sub_wo_num": {
"alias": "qty_issued", "alias": "sub_wo_num",
"allowCellWrapping": false, "allowCellWrapping": false,
"allowSameOptionsInNewRow": true, "allowSameOptionsInNewRow": true,
"columnType": "number", "columnType": "text",
"computedValue": "{{(() => { const tableData = ws1tblshort.processedTableData || []; return tableData.length > 0 ? tableData.map((currentRow, currentIndex) => (currentRow[\"qty_issued\"])) : qty_issued })()}}", "computedValue": "{{(() => { const tableData = ws1tblshort.processedTableData || []; return tableData.length > 0 ? tableData.map((currentRow, currentIndex) => (currentRow[\"sub_wo_num\"])) : sub_wo_num })()}}",
"enableFilter": true, "enableFilter": true,
"enableSort": true, "enableSort": true,
"horizontalAlignment": "LEFT", "horizontalAlignment": "LEFT",
"id": "qty_issued", "id": "sub_wo_num",
"index": 11, "index": 7,
"isCellEditable": false, "isCellEditable": false,
"isCellVisible": true, "isCellVisible": true,
"isDerived": false, "isDerived": false,
"isDisabled": false, "isDisabled": false,
"isEditable": false, "isEditable": false,
"isVisible": true, "isVisible": true,
"label": "qty_issued", "label": "sub_wo_num",
"originalId": "qty_issued", "originalId": "sub_wo_num",
"sticky": "", "sticky": "",
"textSize": "0.775rem", "textSize": "0.775rem",
"validation": {}, "validation": {},
"verticalAlignment": "CENTER", "verticalAlignment": "CENTER",
"width": 150 "width": 150
}, },
"qty_onhand": { "wo_descrip": {
"alias": "qty_onhand", "alias": "wo_descrip",
"allowCellWrapping": false, "allowCellWrapping": false,
"allowSameOptionsInNewRow": true, "allowSameOptionsInNewRow": true,
"columnType": "number", "columnType": "text",
"computedValue": "{{(() => { const tableData = ws1tblshort.processedTableData || []; return tableData.length > 0 ? tableData.map((currentRow, currentIndex) => (currentRow[\"qty_onhand\"])) : qty_onhand })()}}", "computedValue": "{{(() => { const tableData = ws1tblshort.processedTableData || []; return tableData.length > 0 ? tableData.map((currentRow, currentIndex) => (currentRow[\"wo_descrip\"])) : wo_descrip })()}}",
"enableFilter": true, "enableFilter": true,
"enableSort": true, "enableSort": true,
"horizontalAlignment": "LEFT", "horizontalAlignment": "LEFT",
"id": "qty_onhand", "id": "wo_descrip",
"index": 12, "index": 5,
"isCellEditable": false, "isCellEditable": false,
"isCellVisible": true, "isCellVisible": true,
"isDerived": false, "isDerived": false,
"isDisabled": false, "isDisabled": false,
"isEditable": false, "isEditable": false,
"isVisible": true, "isVisible": true,
"label": "qty_onhand", "label": "wo_descrip",
"originalId": "qty_onhand", "originalId": "wo_descrip",
"sticky": "",
"textSize": "0.775rem",
"validation": {},
"verticalAlignment": "CENTER",
"width": 150
},
"wo_duedate": {
"alias": "wo_duedate",
"allowCellWrapping": false,
"allowSameOptionsInNewRow": true,
"columnType": "text",
"computedValue": "{{(() => { const tableData = ws1tblshort.processedTableData || []; return tableData.length > 0 ? tableData.map((currentRow, currentIndex) => (currentRow[\"wo_duedate\"])) : wo_duedate })()}}",
"enableFilter": true,
"enableSort": true,
"horizontalAlignment": "LEFT",
"id": "wo_duedate",
"index": 3,
"isCellEditable": false,
"isCellVisible": true,
"isDerived": false,
"isDisabled": false,
"isEditable": false,
"isVisible": true,
"label": "wo_duedate",
"originalId": "wo_duedate",
"sticky": "",
"textSize": "0.775rem",
"validation": {},
"verticalAlignment": "CENTER",
"width": 150
},
"wo_item": {
"alias": "wo_item",
"allowCellWrapping": false,
"allowSameOptionsInNewRow": true,
"columnType": "text",
"computedValue": "{{(() => { const tableData = ws1tblshort.processedTableData || []; return tableData.length > 0 ? tableData.map((currentRow, currentIndex) => (currentRow[\"wo_item\"])) : wo_item })()}}",
"enableFilter": true,
"enableSort": true,
"horizontalAlignment": "LEFT",
"id": "wo_item",
"index": 4,
"isCellEditable": false,
"isCellVisible": true,
"isDerived": false,
"isDisabled": false,
"isEditable": false,
"isVisible": true,
"label": "wo_item",
"originalId": "wo_item",
"sticky": "",
"textSize": "0.775rem",
"validation": {},
"verticalAlignment": "CENTER",
"width": 150
},
"wo_num": {
"alias": "wo_num",
"allowCellWrapping": false,
"allowSameOptionsInNewRow": true,
"columnType": "text",
"computedValue": "{{(() => { const tableData = ws1tblshort.processedTableData || []; return tableData.length > 0 ? tableData.map((currentRow, currentIndex) => (currentRow[\"wo_num\"])) : wo_num })()}}",
"enableFilter": true,
"enableSort": true,
"horizontalAlignment": "LEFT",
"id": "wo_num",
"index": 1,
"isCellEditable": false,
"isCellVisible": true,
"isDerived": false,
"isDisabled": false,
"isEditable": false,
"isVisible": true,
"label": "wo_num",
"originalId": "wo_num",
"sticky": "",
"textSize": "0.775rem",
"validation": {},
"verticalAlignment": "CENTER",
"width": 150
},
"wo_status": {
"alias": "wo_status",
"allowCellWrapping": false,
"allowSameOptionsInNewRow": true,
"columnType": "text",
"computedValue": "{{(() => { const tableData = ws1tblshort.processedTableData || []; return tableData.length > 0 ? tableData.map((currentRow, currentIndex) => (currentRow[\"wo_status\"])) : wo_status })()}}",
"enableFilter": true,
"enableSort": true,
"horizontalAlignment": "LEFT",
"id": "wo_status",
"index": 2,
"isCellEditable": false,
"isCellVisible": true,
"isDerived": false,
"isDisabled": false,
"isEditable": false,
"isVisible": true,
"label": "wo_status",
"originalId": "wo_status",
"sticky": "", "sticky": "",
"textSize": "0.775rem", "textSize": "0.775rem",
"validation": {}, "validation": {},