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 (
SELECT fw.wo_id AS top_wo_id,
mi.item_number, mi.item_descrip1, 'MTS' AS shortage_type,
(wm.womatl_qtyreq - wm.womatl_qtyiss) AS qty_needed,
qtynetable(mis.itemsite_id, true) AS qty_onhand
mi.item_number, mi.item_descrip1, mi.item_id, 'MTS'::text AS shortage_type,
(wm.womatl_qtyreq - wm.womatl_qtyiss) AS qty_needed
FROM fa_wos fw
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
@@ -32,9 +31,8 @@ mts_shorts AS (
),
mto_shorts AS (
SELECT fw.wo_id AS top_wo_id,
mi.item_number, mi.item_descrip1, 'MTO' AS shortage_type,
(sub_wo.wo_qtyord - sub_wo.wo_qtyrcv) AS qty_needed,
NULL::numeric AS qty_onhand
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
FROM fa_wos fw
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
@@ -54,12 +52,14 @@ all_shorts AS (
UNION ALL
SELECT * FROM mto_shorts
)
SELECT item_number AS part_number,
item_descrip1 AS part_description,
shortage_type,
COUNT(DISTINCT top_wo_id) AS wos_blocked,
SUM(qty_needed) AS total_qty_needed,
MAX(qty_onhand) AS qty_available
FROM all_shorts
GROUP BY item_number, item_descrip1, shortage_type
SELECT s.item_number AS part_number,
s.item_descrip1 AS part_description,
s.shortage_type,
COUNT(DISTINCT s.top_wo_id) AS wos_blocked,
SUM(s.qty_needed) AS total_qty_needed,
qtynetable(isite.itemsite_id, true) AS qty_available
FROM all_shorts s
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;

View File

@@ -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, 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,
"paginationType": "NONE",
"pluginSpecifiedTemplates": [

File diff suppressed because one or more lines are too long

View File

@@ -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,

View File

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

View File

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