Add Operations - WO Shortages page with MTS/MTO shortage tracking

Automates the production manager's manual workflow of checking xTuple WO
Schedule + Kit Material Shortage for FA department work orders. Two tabs:
WO Shortages (detail per WO + shortage line with customer name, YYYY-MM-DD
dates) and Critical Parts (aggregated parts blocking near-term shipments
with QOH from MPE warehouse). Nav button added to all pages.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-04-03 13:47:58 -04:00
parent 9fc5f608d4
commit b5e74cebb7
178 changed files with 4158 additions and 1286 deletions

View File

@@ -0,0 +1,12 @@
---
description: Do not create or add to the /docs directory
alwaysApply: true
---
# No /docs Directory Changes
Do **not** create new files under `docs/` or add to or modify any content in the `docs/` directory.
- Do not create new files in `docs/`.
- Do not edit or append to existing files in `docs/`.
- When a task would normally involve documentation (e.g. README updates, changelog notes), skip any changes under `docs/` unless the user explicitly asks to change that directory.

BIN
.cursor/skills/.DS_Store vendored Normal file

Binary file not shown.

View File

@@ -0,0 +1,107 @@
---
name: add-query-to-table
description: Adds a new DB query to a page and wires it to a Table widget; documents how parameter/search syntax works (widget bindings, optional date range). Use when the user asks to add a query, connect a query to a table, create a new query, or how parameters/filters work in queries.
---
# Add Query to Table & Parameter Search Syntax
Use this skill when adding a new query to a page, wiring a query to a table, or when you need the correct syntax for parameterized filters (e.g. date range from widgets).
## 1. Query structure (single source of truth)
Each query lives under the page in a folder named after the query:
- **Path**: `pages/<PageName>/queries/<query_name>/`
- **Files**:
- **`<query_name>.txt`** -- Raw SQL. This is the **source of truth** for the query body. Keep it readable (real newlines, no escaping).
- **`metadata.json`** -- Appsmith action config. The `body` inside `unpublishedAction.actionConfiguration` must match the SQL in the `.txt` file, stored as a single-line string with `\n` for newlines and `\"` for double quotes.
**Naming**: Use lowercase with underscores (e.g. `units_ordered_by_series`, `pending_pos_slx_pending`). The query name is the identifier used in bindings (e.g. `{{query_name.data}}`).
## 2. Metadata.json required fields
- **`gitSyncId`** (CRITICAL): Must be the **first field** in the root object. Format: `"<24-char-hex>_<uuid-v4>"`. Without this, Appsmith will auto-remove the query on the next pull/sync. Generate with:
```bash
python3 -c "import uuid; print(uuid.uuid4().hex[:24] + '_' + str(uuid.uuid4()))"
```
Use the same 24-char hex prefix as the page's `gitSyncId` but a unique UUID suffix.
- **`id`**: `"<PageName>_<query_name>"` (e.g. `"Pending POs - SLx Pending_pending_pos_slx_pending"`).
- **`name`**: `"<query_name>"` (must match the folder and the name used in bindings).
- **`unpublishedAction.actionConfiguration.body`**: The exact SQL from `<query_name>.txt`, escaped for JSON (newlines -> `\n`, `"` -> `\"`).
- **`unpublishedAction.datasource`**: Use the same as other queries on the page (e.g. `xTuple_Sandbox`).
- **`unpublishedAction.pageId`**: `"<PageName>"`.
- **`unpublishedAction.dynamicBindingPathList`**: `[{"key":"body"}]` when the body contains `{{...}}` widget references.
- Keep **`pluginId`**: `"postgres-plugin"`, **`pluginType`**: `"DB"`, and existing flags like **`encodeParamsToggle`**, **`paginationType`**, **`pluginSpecifiedTemplates`**, **`timeoutInMillisecond`** consistent with other DB queries in the app.
When adding a new query, copy an existing query's `metadata.json` from the same page and change `gitSyncId`, `id`, `name`, and `body` (and ensure `body` stays in sync with the new `.txt` file).
## 3. Wiring the query to a Table widget
- In the Table widget JSON (e.g. `widgets/.../Table1.json`), set:
- **`tableData`**: `"{{<query_name>.data}}"`
- Table columns read from the query result by **key**. The key is the **SELECT alias** from the query (e.g. `"Product"`, `"Qty Ordered"`). In `primaryColumns`, the column **id** can be a safe identifier (e.g. `Qty_Ordered`) while **originalId** / **alias** / **label** match the display name; **computedValue** must use the same key as in the query result, e.g. `currentRow["Qty Ordered"]`.
So: **query SELECT aliases = keys in the table's row object**. Keep column keys and any `currentRow["..."]` references in the table in sync with those aliases.
## 4. Parameter search syntax (widgets in SQL)
### 4.1 Referencing a widget value
- **Syntax**: `{{WidgetName.property}}`
- **Examples**:
- DatePicker date: `{{SeriesDateFrom.selectedDate}}`, `{{PowerDateTo.selectedDate}}`
- Other widgets: use the widget's value property (e.g. `selectedOptionValue`, `text`) as per Appsmith docs.
Values are injected as strings. For PostgreSQL dates you typically cast in SQL, e.g. `'{{DatePicker1.selectedDate}}'::date`.
### 4.2 Optional date range (no filter when either date is empty)
Use this pattern so that:
- If **either** date widget is empty -> the date condition is **not** applied (all dates allowed).
- If **both** are set -> filter by `date_column BETWEEN from ::date AND to ::date`.
**SQL pattern** (replace widget names and column as needed):
```sql
AND (
NULLIF('{{DateFromWidget.selectedDate}}','') IS NULL
OR NULLIF('{{DateToWidget.selectedDate}}','') IS NULL
OR date_column BETWEEN
NULLIF('{{DateFromWidget.selectedDate}}','')::date
AND NULLIF('{{DateToWidget.selectedDate}}','')::date
)
```
- **Logic**: `NULLIF('{{...}}','')` turns an empty string into SQL `NULL`. If either widget is empty, one of the first two conditions is true, so the whole `AND (...)` is true and the BETWEEN is not applied. When both are non-empty, the third branch applies the range.
- **Widget names**: Use the actual widget names (e.g. `SeriesDateFrom` / `SeriesDateTo` for one tab, `PowerDateFrom` / `PowerDateTo` for another). Ensure those widgets exist on the same page and (if in a tab) the same tab so the query runs with the right context.
### 4.3 Required parameters (always filter)
If the filter must always be applied (no "show all" when empty):
- Use the binding directly and ensure the widget always has a value, or use a default in the widget.
- Example: `AND cohead_orderdate BETWEEN '{{DateFrom.selectedDate}}'::date AND '{{DateTo.selectedDate}}'::date` -- then empty dates may produce invalid SQL or empty results, so prefer the optional pattern above unless the UI guarantees non-empty values.
## 5. Checklist when adding a new query
1. Create `pages/<PageName>/queries/<query_name>/`.
2. Add `<query_name>.txt` with the full SQL (source of truth).
3. Add `metadata.json` with correct `gitSyncId`, `id`, `name`, `body` (body = SQL from .txt, JSON-escaped), and same datasource/pageId as other page queries.
4. If the SQL uses `{{...}}`, set `dynamicBindingPathList` to `[{"key":"body"}]`.
5. In the Table widget that should show the data, set `tableData` to `{{<query_name>.data}}`.
6. Ensure table column keys / `currentRow["..."]` match the query's SELECT aliases.
## 6. Renaming or replacing a query
- To **rename** (e.g. `units_shipped_by_series` -> `units_ordered_by_series`):
- Create the new folder and files under the new name (with a new `gitSyncId`).
- Update every reference to the old query (e.g. `tableData`: `{{old_name.data}}` -> `{{new_name.data}}`).
- Remove the old query folder (both `.txt` and `metadata.json`).
- When **replacing** the SQL but keeping the same name, update the `.txt` first, then update the `body` in `metadata.json` to match (same content, JSON-escaped).
## Reference
- **gitSyncId**: `<24-char-hex>_<uuid-v4>`. Without this, Appsmith auto-removes the query on sync.
- **Optional date range**: NULLIF + IS NULL + OR + BETWEEN as above.
- **Table data binding**: `{{<query_name>.data}}`.
- **Column keys**: Must match query SELECT aliases (e.g. `"Product"`, `"Qty Ordered"`).

View File

@@ -0,0 +1,216 @@
---
name: add-tabs-to-page
description: Adds a TABS_WIDGET to a page so multiple data views live under one page instead of separate pages. Use when the user asks to add tabs, consolidate pages into tabs, create tabbed views, or replace a single table with a tabbed layout.
---
# Add Tabs to a Page
Replaces a page's standalone content (e.g. a single `TABLE_WIDGET_V2`) with a `TABS_WIDGET` containing multiple tabs, each with its own widgets and query binding.
## Prerequisites
- **Tab definitions**: User must provide the tab labels and the query each tab should display.
- **Page prefix**: Each page uses a short widget-ID prefix (e.g. `pa1`, `cp1`). Reuse the existing prefix from the page's widgets.
- Follow the **add-query-to-table** skill for creating any new queries needed by the tabs.
## File Layout
The Tabs widget and all widgets **inside** tabs live under a `Tabs1/` directory:
```
pages/<PageName>/widgets/Tabs1/
├── Tabs1.json # The TABS_WIDGET itself
├── <Table1>.json # Table inside tab 1
├── <Table2>.json # Table inside tab 2
├── <DatePicker>.json # Optional: date pickers inside a tab
└── ...
```
If the page previously had a standalone `Table1.json` at `widgets/Table1.json`, **delete it** after creating the tabbed replacement.
## Instructions
### 1. Design the tab structure
Decide on tab count, labels, and content. Example:
| Tab ID | Label | Canvas widgetId | Content |
|--------|-------|-----------------|---------|
| tab1 | All | `{prefix}cnvsall` | TableAll bound to `query_all` |
| tab2 | SLx | `{prefix}cnvsslx` | TableSLx bound to `query_slx` |
### 2. Create `Tabs1.json`
The TABS_WIDGET has three critical sections:
**A) `tabsObj`** — declares each tab with id, label, index, and canvas widgetId:
```json
"tabsObj": {
"tab1": {
"id": "tab1",
"index": 0,
"isVisible": true,
"label": "All",
"positioning": "vertical",
"widgetId": "<canvas-widgetId-for-tab1>"
},
"tab2": { ... }
}
```
**B) `children`** — array of `CANVAS_WIDGET` entries, one per tab. Each canvas must reference:
- `"parentId"`: the Tabs widget's `widgetId`
- `"tabId"`: matching key from `tabsObj` (e.g. `"tab1"`)
- `"tabName"`: the display label
- `"widgetId"`: unique canvas ID (referenced in `tabsObj` and by child widgets)
**C) Top-level Tabs properties:
```json
{
"type": "TABS_WIDGET",
"version": 3,
"isCanvas": true,
"shouldShowTabs": true,
"defaultTab": "<label of default tab>",
"parentId": "0",
"leftColumn": 9,
"rightColumn": 64,
"topRow": 5,
"bottomRow": 67,
"dynamicHeight": "AUTO_HEIGHT",
"dynamicBindingPathList": [
{"key": "accentColor"},
{"key": "boxShadow"}
],
"accentColor": "{{appsmith.theme.colors.primaryColor}}",
"boxShadow": "{{appsmith.theme.boxShadow.appBoxShadow}}",
"backgroundColor": "#FFFFFF",
"borderColor": "#E0DEDE",
"borderRadius": "0.375rem",
"borderWidth": 1
}
```
### 3. Create widgets inside each tab
Each widget inside a tab sets `"parentId"` to that tab's **canvas widgetId** (not the Tabs widgetId). Widgets start at `topRow: 0` within each canvas.
**Table-only tabs** (no date pickers):
```json
{
"type": "TABLE_WIDGET_V2",
"parentId": "<canvas-widgetId>",
"topRow": 0,
"bottomRow": 58,
"leftColumn": 0,
"rightColumn": 62,
"tableData": "{{<query_name>.data}}",
...
}
```
**Tabs with date pickers** (see Sales - Units Shipped for reference):
| Widget | topRow | bottomRow | leftColumn | rightColumn |
|--------|--------|-----------|------------|-------------|
| DateFrom | 0 | 7 | 0 | 5 |
| DateTo | 0 | 7 | 5 | 10 |
| Table | 7 | 58 | 0 | 62 |
Date pickers use `"type": "DATE_PICKER_WIDGET2"`, `"dateFormat": "YYYY-MM-DD HH:mm"`, and `"parentId"` set to the tab's canvas widgetId.
### 4. Create queries for each tab
Follow the **add-query-to-table** skill. Each query's `metadata.json` must have:
- `"pageId"`: the page name (e.g. `"Pending POs"`)
- `"gitSyncId"`: use the same 24-char hex prefix as the page, with a unique UUID suffix
- `"runBehaviour": "AUTOMATIC"`
### 5. Delete the old standalone widget
If the page had a `widgets/Table1.json` (or similar) that the Tabs widget replaces, delete it.
### 6. Verify
- Each canvas `widgetId` in `children` matches the corresponding `widgetId` in `tabsObj`.
- Each widget inside a tab has `parentId` set to its tab's canvas `widgetId`.
- `defaultTab` matches one of the tab labels (not the tab ID).
- All queries reference the correct `pageId`.
- Run `git status` / `git diff` to confirm only intended changes.
## Canvas Widget Template
Each canvas child in the `children` array follows this template:
```json
{
"borderRadius": "{{appsmith.theme.borderRadius.appBorderRadius}}",
"bottomRow": 620,
"boxShadow": "{{appsmith.theme.boxShadow.appBoxShadow}}",
"canExtend": true,
"detachFromLayout": true,
"dynamicBindingPathList": [
{"key": "borderRadius"},
{"key": "boxShadow"}
],
"dynamicHeight": "AUTO_HEIGHT",
"dynamicTriggerPathList": [],
"flexLayers": [],
"isDisabled": false,
"isLoading": false,
"isVisible": true,
"key": "<unique-key>",
"leftColumn": 0,
"maxDynamicHeight": 9000,
"minDynamicHeight": 4,
"minHeight": 150,
"minWidth": 450,
"mobileBottomRow": 150,
"mobileLeftColumn": 0,
"mobileRightColumn": 602.625,
"mobileTopRow": 0,
"needsErrorInfo": false,
"parentColumnSpace": 1,
"parentId": "<tabs-widgetId>",
"parentRowSpace": 1,
"renderMode": "CANVAS",
"responsiveBehavior": "fill",
"rightColumn": 602.625,
"shouldScrollContents": false,
"tabId": "<tab-id>",
"tabName": "<tab-label>",
"topRow": 0,
"type": "CANVAS_WIDGET",
"version": 1,
"widgetId": "<unique-canvas-widgetId>",
"widgetName": "Canvas<N>"
}
```
## Consolidating Multiple Pages into Tabs
When merging separate pages into one tabbed page:
1. **Choose the surviving page** (or create a new one via **create-new-page** skill).
2. **Move each page's query** into the surviving page's `queries/` directory. Update `pageId` and generate new `gitSyncId` values (same 24-char prefix as the surviving page).
3. **Create the Tabs widget** with one tab per former page, plus any additional tabs (e.g. "All").
4. **Delete the old page directories** entirely.
5. **Remove old navigation buttons** from all remaining pages (delete the button JSON files).
6. **Update `application.json`** to remove entries for deleted pages.
7. **Keep one nav button** pointing to the surviving page.
## Reference
| Item | Value |
|------|-------|
| Widget type | `TABS_WIDGET` version `3` |
| Widget directory | `widgets/Tabs1/` |
| Canvas parent | Tabs `widgetId` |
| Widget-in-tab parent | Canvas `widgetId` for that tab |
| `defaultTab` | Tab **label** (not tab ID) |
| `tabsObj` keys | `tab1`, `tab2`, `tab3`, ... |
| Existing examples | `Sales - Units Shipped`, `Pending POs` |

View File

@@ -0,0 +1,119 @@
---
name: create-new-page
description: Creates a new page by cloning Sales - Capacity Planning, adds a nav button for it on every page, and sets the new page name for the button label and the page Heading. Use when the user asks to add a new page, clone a page, create a page from template, or add a new navigation page.
---
# Create New Page (Clone + Navigation)
Creates a new page from the **Sales - Capacity Planning** template, registers it in the app, adds a navigation button on every page, and uses the **new page name** for both the nav button label and the Heading on the new page.
## Prerequisites
- **New page name**: User must provide the exact display name (e.g. `Sales - Units Planning`, `Pending POs - SLx Pending`). Use it consistently for:
- Page folder name: `pages/<New Page Name>/`
- Page JSON filename: `<New Page Name>.json`
- `unpublishedPage.name` and `unpublishedPage.slug` (slug = lowercase, spaces to hyphens, e.g. `pending-pos-slx-pending`)
- Heading widget `text` on the new page
- Nav button `text` on all pages
- `navigateTo('<New Page Name>', {}, 'SAME_WINDOW')` in the new button's `onClick`
- Follow the **navigation-button-add** skill for button styling and placement.
- If the page belongs to a **new section** (e.g. "Pending POs" section distinct from "Sales"), follow the **navigation-section-add** skill to add the section label on all pages.
## Instructions
### 1. Clone the template page
- **Template**: `pages/Sales - Capacity Planning/`
- **Target**: `pages/<New Page Name>/`
- Copy the entire directory tree (widgets, queries, and the page JSON).
- In the new folder, rename the page file to `<New Page Name>.json` and update inside it:
- `unpublishedPage.name` -> `<New Page Name>`
- `unpublishedPage.slug` -> slug form (e.g. `pending-pos-slx-pending`)
- Replace all widget IDs in the new page's JSON files with new unique IDs (e.g. new UUIDs or unique strings) so the new page does not conflict with the template. Update any `parentId` references to the new IDs.
- In every widget JSON under the new page, replace any reference to the old page name or slug with the new page name or slug (e.g. in queries or onClick that might point to the template page).
### 2. Add gitSyncId (CRITICAL)
Appsmith's git sync uses `gitSyncId` to track entities. **Without this field, Appsmith will auto-remove the page and query on the next pull/sync.**
- **Page JSON** (`<New Page Name>.json`): Add `"gitSyncId"` as the **first field** in the root object.
- **Query metadata** (`queries/<query_name>/metadata.json`): Add `"gitSyncId"` as the **first field** in the root object.
**Format**: `"<24-char-hex>_<uuid-v4>"`
Generate unique IDs:
```bash
python3 -c "import uuid; print(uuid.uuid4().hex[:24] + '_' + str(uuid.uuid4()))"
```
Use the **same 24-char hex prefix** for both the page and its queries (they share a creation context), but a **unique UUID suffix** for each.
**Example** (page JSON):
```json
{
"gitSyncId": "3ac30122d2934ca9bf65e36a_54bc4b88-d468-4faa-bab0-80921aa88795",
"unpublishedPage": { ... }
}
```
**Example** (query metadata):
```json
{
"gitSyncId": "3ac30122d2934ca9bf65e36a_da6910cc-4263-496f-ba35-ffc773eddaae",
"id": "PageName_query_name",
...
}
```
### 3. Set the new page's Heading
- In `pages/<New Page Name>/widgets/Heading.json`, set:
- `"text": "<New Page Name>"`
so the heading always shows the page name (no dynamic binding; `appsmith.page` is undefined in this app).
### 4. Register the new page in the app
- In `application.json`, add to the `pages` array one entry:
- `{"id": "<New Page Name>", "isDefault": false}`
- Do not change `isDefault: true` on the existing default page unless the user asks to make the new page default.
### 5. Add the new nav button on every page
Apply the **navigation-button-add** skill:
- **Pages to update**: **All** existing pages **and** the new page.
- **On each page**, in `widgets/Container1/`, add a new button:
- `text`: short label for the page (e.g. "SLx Pending" for "Pending POs - SLx Pending").
- `onClick`: `{{navigateTo('<New Page Name>', {}, 'SAME_WINDOW');}}`
- `buttonColor`:
- On the **new page only**: `{{appsmith.theme.colors.backgroundColor}}` and add `{"key":"buttonColor"}` to `dynamicBindingPathList`.
- On all **other** pages: `#ffffff`, and do not add `buttonColor` to `dynamicBindingPathList`.
- Place the new button below existing nav items within its section. Each button occupies 4 rows (e.g. topRow 22, bottomRow 26).
- Assign a new unique `widgetId` and `widgetName` for the new button on each page.
- Set `parentId` to the **Canvas widget ID** inside that page's `Container1.json` (the `widgetId` of the `CANVAS_WIDGET` child). This varies per page -- read `Container1.json` to find it.
### 6. Verify
- Run `git status` / `git diff` and confirm only intended files were added or changed.
- Ensure no duplicate `widgetId` values across pages and that the new page's slug and name are used consistently.
- Confirm `gitSyncId` is present in both the page JSON and every query metadata.
## Summary
| Item | Value |
|------|--------|
| Template | Sales - Capacity Planning |
| New page folder | `pages/<New Page Name>/` |
| gitSyncId | `<24-char-hex>_<uuid-v4>` in page JSON + query metadata |
| Heading text | `<New Page Name>` |
| Nav button text | Short label (e.g. "SLx Pending") |
| Nav button onClick | `navigateTo('<New Page Name>', {}, 'SAME_WINDOW')` |
| Highlight (new page) | `buttonColor`: `{{appsmith.theme.colors.backgroundColor}}` |
| Inactive (other pages) | `buttonColor`: `#ffffff` |
## Reference
- Nav button behavior and layout: follow **navigation-button-add** skill.
- New nav sections: follow **navigation-section-add** skill.
- Slug format: lowercase, spaces to hyphens (e.g. `Pending POs - SLx Pending` -> `pending-pos-slx-pending`).
- `gitSyncId` format: `<24-char-hex>_<uuid-v4>`. Without this, Appsmith auto-removes the entity on sync.

View File

@@ -0,0 +1,54 @@
---
name: navigation-button-add
description: Implements a new navigation button with the existing highlight/default colors. Use when the user asks to add buttons to the nav block, mentions page navigation, or instructs to keep the highlight behavior consistent with the latest change.
---
# Navigation Button Addition
## Instructions
1. **Understand the current navigation canvas** by checking `pages/*/widgets/Container1/`. Each page reuses the same container structure. The navigation is organized into **sections**, each with a Text label and one or more buttons:
- **Sales** section: `Text1` (label), `Button1` (Capacity Planning), `Button1Copy` (Units Shipped), `Button1Copy2` (Units Ordered)
- **Pending POs** section: `Text2` (label), `Button2` (SLx Pending)
- Future sections follow the same pattern (`Text3`/`Button3`, etc.)
2. **Follow the established color scheme**:
- The highlighted button (current page) uses `appsmith.theme.colors.backgroundColor`.
- The inactive buttons use `#ffffff`.
3. **When adding a new navigation button**:
- Copy one of the existing `Button*` definitions, adjusting `text`, `onClick`, `widgetId`, `widgetName`, `topRow`, `bottomRow`, and any other placement metadata so it fits below the existing items in its section.
- Set `buttonColor` to `#ffffff` (inactive) unless the button is on its own page; then set its definition to `appsmith.theme.colors.backgroundColor` with `dynamicBindingPathList: [{"key": "buttonColor"}]`.
- Ensure `dynamicBindingPathList` stays empty when `buttonColor` is static white.
- Point `onClick` to `navigateTo('<Page Name>', {}, 'SAME_WINDOW')` and keep `placement`/`responsiveBehavior` matching other nav buttons.
- Set `parentId` to the **Canvas widget ID** inside that page's `Container1.json` (the `widgetId` of the `CANVAS_WIDGET` child). This varies per page -- always read `Container1.json` to find the correct value.
4. **Add the button on ALL pages** (not just pages in the same section). Every page gets the full navigation.
5. **If adding a button to a new section**, follow the **navigation-section-add** skill first to create the section label.
6. **Run git status/diff** to verify only the intended files changed before reporting back.
## Row Layout
Each widget occupies 4 rows. Sections are separated by a 2-row gap:
| Widget | topRow | bottomRow |
|--------|--------|-----------|
| Text1 "Sales" | 0 | 4 |
| Button1 "Capacity Planning" | 4 | 8 |
| Button1Copy "Units Shipped" | 8 | 12 |
| Button1Copy2 "Units Ordered" | 12 | 16 |
| *(2-row gap)* | 16 | 18 |
| Text2 "Pending POs" | 18 | 22 |
| Button2 "SLx Pending" | 22 | 26 |
When adding a new button within a section, increment from the last button's `bottomRow` by 4. When adding a new section after the last one, add 2 rows gap, then 4 for the label, then 4 for each button.
## Examples
- *Adding "Units Ordered" button to Sales section*:
1. Copy `Button1Copy` (Units Shipped) in each page's `Container1`.
2. Set `text` to "Units Ordered", `onClick` to `navigateTo('Sales - Units Ordered', {}, 'SAME_WINDOW');`.
3. Assign `buttonColor` to `#ffffff` for inactive cases and to `appsmith.theme.colors.backgroundColor` inside the `Sales - Units Ordered` page definition for highlight.
4. Set `topRow: 12`, `bottomRow: 16` (next slot after Units Shipped).
- *Adding a second button to Pending POs section*:
1. Create `Button2Copy.json` in each page's `Container1`.
2. Set `topRow: 26`, `bottomRow: 30` (next slot after SLx Pending at 22-26).
3. Follow the same highlight/inactive pattern.

View File

@@ -0,0 +1,124 @@
---
name: navigation-section-add
description: Adds a new navigation section (label + first button) to the sidebar on all pages. Use when the user asks to create a new section like "Pending POs", add a section header to navigation, or group pages under a new category separate from "Sales".
---
# Navigation Section Addition
Adds a new **section** to the left-side navigation container on **all pages**. A section consists of a bold Text label (e.g. "Pending POs") followed by one or more page buttons. This skill covers adding the section label and first button; additional buttons follow the **navigation-button-add** skill.
## Current Sections
| Section | Label widget | Buttons | Row range |
|---------|-------------|---------|-----------|
| Sales | `Text1` | `Button1`, `Button1Copy`, `Button1Copy2` | 0-16 |
| Pending POs | `Text2` | `Button2` | 18-26 |
## Instructions
### 1. Determine row placement
Sections are separated by a **2-row gap**. Find the last widget's `bottomRow` in the current navigation, add 2 for the gap, then place:
- **Section label** (Text widget): 4 rows (e.g. topRow 18, bottomRow 22)
- **First button**: 4 rows immediately after (e.g. topRow 22, bottomRow 26)
### 2. Choose widget names
Follow the naming sequence based on existing sections:
- First section: `Text1`, `Button1` / `Button1Copy` / `Button1Copy2`
- Second section: `Text2`, `Button2` / `Button2Copy` / ...
- Third section: `Text3`, `Button3` / `Button3Copy` / ...
### 3. Create the Text label widget on ALL pages
Add a `Text<N>.json` file in `pages/<each page>/widgets/Container1/` with:
```json
{
"animateLoading": true,
"borderRadius": "{{appsmith.theme.borderRadius.appBorderRadius}}",
"bottomRow": <calculated>,
"dynamicBindingPathList": [
{"key": "truncateButtonColor"},
{"key": "fontFamily"},
{"key": "borderRadius"}
],
"dynamicHeight": "AUTO_HEIGHT",
"dynamicTriggerPathList": [],
"fontFamily": "{{appsmith.theme.fontFamily.appFont}}",
"fontSize": "1rem",
"fontStyle": "BOLD",
"isLoading": false,
"isVisible": true,
"key": "<unique-key>",
"leftColumn": 0,
"maxDynamicHeight": 9000,
"minDynamicHeight": 4,
"minWidth": 450,
"mobileBottomRow": <calculated>,
"mobileLeftColumn": 10,
"mobileRightColumn": 26,
"mobileTopRow": <calculated>,
"needsErrorInfo": false,
"originalBottomRow": <calculated>,
"originalTopRow": <calculated>,
"overflow": "NONE",
"parentColumnSpace": 3.841796875,
"parentId": "<Canvas widgetId from Container1.json>",
"parentRowSpace": 10,
"renderMode": "CANVAS",
"responsiveBehavior": "fill",
"rightColumn": 64,
"shouldTruncate": false,
"text": "<Section Name>",
"textAlign": "LEFT",
"textColor": "#231F20",
"topRow": <calculated>,
"truncateButtonColor": "{{appsmith.theme.colors.primaryColor}}",
"type": "TEXT_WIDGET",
"version": 1,
"widgetId": "<unique per page>",
"widgetName": "Text<N>"
}
```
### 4. Create the first button on ALL pages
Follow the **navigation-button-add** skill to add `Button<N>.json`. Key points:
- On the page the button navigates to: `buttonColor` = `{{appsmith.theme.colors.backgroundColor}}` (highlighted), with `dynamicBindingPathList: [{"key": "buttonColor"}]`.
- On all other pages: `buttonColor` = `#ffffff` (inactive), with empty `dynamicBindingPathList`.
- `topRow` = label's `bottomRow`, `bottomRow` = topRow + 4.
### 5. parentId -- CRITICAL
Each page's Container1 has a **different Canvas widget ID**. The `parentId` for all nav widgets must match the `widgetId` of the `CANVAS_WIDGET` child inside that page's `Container1.json`.
**Always read** `pages/<PageName>/widgets/Container1/Container1.json` to find the Canvas `widgetId` before creating widgets. Do NOT copy parentId from another page.
Example Canvas widget IDs (verify these are still current):
- Sales - Capacity Planning: `x3pc17vp6q`
- Sales - Units Shipped: `wj6fxg5wpg`
- Sales - Units Ordered: `wj6fxg5wpg`
### 6. Widget IDs -- must be unique
Every widget across all pages must have a **unique `widgetId`**. Use a short, unique string per widget per page. A practical pattern: `<page-prefix><widget-abbrev>` (e.g. `cp1txtpndpo` for Capacity Planning's "Pending POs" text label).
### 7. Apply to ALL pages
The section label and button must appear on **every page in the app** -- not just pages within the new section. This ensures the full navigation is visible regardless of which page the user is on.
## Example: Adding "Pending POs" section
Files created on each page's `widgets/Container1/`:
- `Text2.json` -- "Pending POs" label, topRow 18, bottomRow 22
- `Button2.json` -- "SLx Pending" button, topRow 22, bottomRow 26
On `Pending POs - SLx Pending` page: Button2 is highlighted.
On all Sales pages: Button2 is white/inactive.
## Reference
- Button styling and highlight pattern: **navigation-button-add** skill.
- Creating the page itself: **create-new-page** skill.
- Row layout: 4 rows per widget, 2-row gap between sections.

View File

@@ -0,0 +1,53 @@
---
name: prepare-for-launch
description: Prepares the app for production launch by moving from sandbox to production (GoLive) database and related steps. Use when the user asks to prepare for launch, move to production, switch to GoLive, or launch the app.
---
# Prepare for Launch
Use this skill when preparing to launch the app: moving all data sources from sandbox to the production (xTuple_GoLive) database and performing launch checklist steps.
## Launch checklist (run in order)
1. **Switch all queries to xTuple_GoLive** (see below).
2. Add or run any other launch steps you need (e.g. env/config, final checks).
---
## Step 1: Move every query to xTuple_GoLive
Ensure every DB query in the app uses the production datasource `xTuple_GoLive` instead of `xTuple_Sandbox`.
### How to do it
1. **Find all query metadata files**
Under `pages/`, each query has a `metadata.json` in `pages/<PageName>/queries/<query_name>/metadata.json`.
2. **In each `metadata.json`**, locate the datasource block inside `unpublishedAction`:
```json
"datasource": {
"id": "xTuple_Sandbox",
"isAutoGenerated": false,
"name": "xTuple_Sandbox",
"pluginId": "postgres-plugin"
}
```
3. **Replace** both `"id"` and `"name"` from `xTuple_Sandbox` to `xTuple_GoLive`:
```json
"datasource": {
"id": "xTuple_GoLive",
"isAutoGenerated": false,
"name": "xTuple_GoLive",
"pluginId": "postgres-plugin"
}
```
4. **Verify**
- No query under `pages/**/queries/**/metadata.json` should reference `xTuple_Sandbox`.
- Search the repo for `xTuple_Sandbox`; the only remaining references should be the datasource definition (e.g. `datasources/xTuple_Sandbox.json`) and any docs/skills that describe sandbox as the default (e.g. add-query skill).
### Scope
- Update **every** query that currently uses `xTuple_Sandbox`. Queries already using `xTuple_GoLive` can be left unchanged.
- Do not change the add-query (or other) skills that say to use Sandbox by default; those are for day-to-day development. This skill is only for the one-time (or repeated) launch prep.

9
.gitignore vendored Normal file
View File

@@ -0,0 +1,9 @@
# Cursor AI reference documentation (internal use only)
.cursor/*
# Claude Code local settings
.claude/settings.local.json
!.cursor/rules/
!.cursor/rules/**
!.cursor/skills/
!.cursor/skills/**

159
AGENTS.md Normal file
View File

@@ -0,0 +1,159 @@
# AGENTS.md — Statistics App (Appsmith)
## Project Overview
Internal statistics dashboard built on **Appsmith** (file-based git sync mode). Displays filtered data from a **PostgreSQL / xTuple ERP** database (`xTuple_GoLive` datasource). The app is a collection of JSON widget definitions, SQL query files, and Appsmith configuration — there is no traditional application code.
**Live URL**: `https://appsmith.mpeapp.com/applications/6947cc068872ae1d129983a0/pages/6947cc068872ae1d129983a3`
## Tech Stack
| Layer | Technology |
|-------|-----------|
| Platform | Appsmith (file format v5, 64-column grid layout) |
| Database | PostgreSQL via xTuple ERP (`mpe` and `public` schemas) |
| Datasource | `xTuple_GoLive` (production) / `xTuple_Sandbox` (development) |
| Version control | Git (Bitbucket), Appsmith git sync |
## Repository Structure
```
statistics-app/
├── AGENTS.md # This file — keep up to date after every change
├── application.json # Page registry, app metadata
├── metadata.json # Appsmith schema versions
├── theme.json # UI theme (colors, fonts, borders)
├── datasources/
│ └── xTuple_GoLive.json # PostgreSQL connection config (credentials managed by Appsmith server, not stored here)
├── pages/ # One directory per page
│ └── <Page Name>/
│ ├── <Page Name>.json # Page definition (gitSyncId required)
│ ├── widgets/ # Widget JSON files
│ │ ├── Heading.json
│ │ ├── Container1/ # Navigation sidebar widgets
│ │ └── Tabs1/ # Tabbed content (if applicable)
│ └── queries/ # SQL queries
│ └── <query_name>/
│ ├── <query_name>.txt # Raw SQL (source of truth)
│ └── metadata.json # Appsmith action config
└── .cursor/skills/ # AI agent workflows (Cursor-specific)
```
## Pages
| Section | Page | Key Data |
|---------|------|----------|
| Sales | Capacity Planning (default) | `mpe.poormancapacity` |
| Sales | Units Shipped | Orders shipped by series / power input, date-filtered |
| Sales | Units Ordered | Orders placed by series / power input, date-filtered |
| Engineering | Pending POs | Purchase orders via `mpe.get_prototype_po_dashboard_data()` |
| Engineering | Pending Revisions | Revisions via `mpe.get_prototype_dashboard_data()` |
| Engineering | xGen | 8 tabs: build info, compatibility, firmware, test measurements |
| Operations | Engineering Holds | Work orders with active engineering holds |
| Operations | Job Drawing Status | CAD drawing builds from `mpe.inventortools` |
| Operations | Unused Items | Items with no inventory transactions for X days (default 365), filterable via input widget |
| Operations | WO Shortages | 2 tabs: WO shortage details (MTS/MTO) for FA dept top-level WOs; Critical Parts aggregation. Uses `mpe.itematmdept`, `mpe.wogrpext`, `womatl`, `qtynetable()` |
## Critical Conventions
### gitSyncId (REQUIRED)
Every page JSON and query `metadata.json` **must** have a `gitSyncId` as the first field. Format: `"<24-char-hex>_<uuid-v4>"`. Without it, Appsmith silently deletes the entity on next sync.
Generate:
```bash
python3 -c "import uuid; print(uuid.uuid4().hex[:24] + '_' + str(uuid.uuid4()))"
```
### Widget IDs
Every `widgetId` across all pages must be globally unique. Use short descriptive strings with a 2-3 character page prefix (e.g., `ui1btn3jds`, `eh1heading1`).
### Navigation
- Every page has identical nav sidebar (`Container1/`) with buttons for all pages.
- Active page button: `buttonColor` = `{{appsmith.theme.colors.backgroundColor}}` (dynamic binding).
- Inactive buttons: `buttonColor` = `#ffffff` (static, no dynamic binding).
- `parentId` for nav widgets = the Canvas `widgetId` inside that page's `Container1.json` (varies per page — always read it).
- Current nav sections: **Sales** (rows 016), **Engineering** (rows 1834), **Operations** (rows 3656).
### Canvas Widget IDs (for parentId in Container1 children)
| Page | Canvas widgetId |
|------|----------------|
| Sales - Capacity Planning | `x3pc17vp6q` |
| Sales - Units Shipped | `wj6fxg5wpg` |
| Sales - Units Ordered | `wj6fxg5wpg` |
| Pending POs | `pa1canvas01` |
| Pending Revisions | `pr1canvas01` |
| xGen | `xg1canvas01` |
| Operations - Job Drawing Status | `jd1canvas01` |
| Operations - Engineering Holds | `eh1canvas01` |
| Operations - Unused Items | `ui1canvas01` |
| Operations - WO Shortages | `ws1canvas01` |
### Grid Layout
- 64 columns wide, 10px per row.
- Nav container: rows 07. Content starts at row 8.
- Nav buttons: 4 rows each, 2-row gap between sections.
### Queries
- SQL source of truth: `<query_name>.txt` (readable, real newlines).
- `metadata.json` `body` field: same SQL but JSON-escaped (`\n`, `\"`).
- Table binding: `{{query_name.data}}`.
- All production queries use `xTuple_GoLive` datasource.
- **Database credentials are managed by Appsmith server-side** — they are not stored in this repository. The datasource JSON only contains the name and plugin reference. When developing/testing SQL queries locally, use separate read-only credentials provided by the user — never embed them in committed files.
### Widget Bindings in SQL (IMPORTANT)
Appsmith uses prepared statements (`pluginSpecifiedTemplates[0].value = true`). When a query body contains `{{Widget.property}}`, Appsmith replaces each binding with a typed prepared statement parameter (`$1`, `$2`, etc.).
**For DATE_PICKER_WIDGET2** (text/date type parameters):
- The `NULLIF` pattern works: `NULLIF('{{DateWidget.selectedDate}}','')::date`
- This is safe because the parameter is always typed as `text`.
**For INPUT_WIDGET_V2 with `inputType: "NUMBER"`** (integer type parameters):
- Do **NOT** use `NULLIF('{{Widget.text}}','')::int` — this fails because Appsmith may type the parameter as `integer`, and `NULLIF(integer, '')` causes a type mismatch error (`invalid input syntax for integer: ""`).
- Instead, use a direct cast: `'{{Widget.text}}'::int`
- The widget's `defaultText` property ensures there is always a value on page load, so NULL/empty handling is unnecessary.
**General rule**: Match the SQL cast to the widget's output type. When in doubt, test with a hardcoded value first to confirm the base query works, then add the binding.
## Common Tasks
### Add a new page
Provide: page name (`<Section> - <Label>`), section, SQL query. The workflow:
1. Clone `Sales - Capacity Planning` as template
2. Generate new `gitSyncId` values for page and queries
3. Update page name, slug, heading, and widget IDs
4. Register in `application.json`
5. Add nav button on **all** pages (highlighted on own page, white elsewhere)
6. If new section needed, add section label (`Text<N>`) on all pages first
7. **Update this AGENTS.md file** (add the page to the Pages table, update Canvas Widget IDs table, and note any new conventions)
See `.cursor/skills/create-new-page/SKILL.md` for full procedure.
### Add tabs to a page
Replace standalone table with `TABS_WIDGET` containing multiple tabs, each with its own query and table. See `.cursor/skills/add-tabs-to-page/SKILL.md`.
### Add a query
Create `queries/<name>/` with `.txt` and `metadata.json`. Wire to table via `tableData: "{{name.data}}"`. See `.cursor/skills/add-query-to-table/SKILL.md`.
### Launch prep (sandbox → production)
Replace all `xTuple_Sandbox` references in query `metadata.json` files with `xTuple_GoLive`. See `.cursor/skills/prepare-for-launch/SKILL.md`.
## Rules
- **After every change to this project, update this AGENTS.md file** to reflect the current state — new pages, changed navigation layout, new conventions, etc. This file is the single source of truth for AI agents working in this repo.
- Do **not** create or modify files in the `docs/` directory.
- Template page for cloning: `Sales - Capacity Planning`.
- Slug format: lowercase, spaces to hyphens (e.g., `operations-unused-items`).
- Product lines tracked: XR, SL, TS, MS, MT, Harmonic Neutralizer (mapped by item number in SQL CASE statements).
- Database credentials are never stored in this repository. Use the Appsmith-managed `xTuple_GoLive` datasource for all queries.

View File

@@ -8,4 +8,90 @@ This app is built using Appsmith. Turn any datasource into an internal app in mi
##### You can visit the application using the below link
###### [![](https://assets.appsmith.com/git-sync/Buttons.svg) ](https://appsmith.mpeapp.com/applications/6947cc068872ae1d129983a0/pages/69b7fdef00dc506d32d9eacf) [![](https://assets.appsmith.com/git-sync/Buttons2.svg)](https://appsmith.mpeapp.com/applications/6947cc068872ae1d129983a0/pages/69b7fdef00dc506d32d9eacf/edit)
###### [![](https://assets.appsmith.com/git-sync/Buttons.svg) ](https://appsmith.mpeapp.com/applications/6947cc068872ae1d129983a0/pages/6947cc068872ae1d129983a3) [![](https://assets.appsmith.com/git-sync/Buttons2.svg)](https://appsmith.mpeapp.com/applications/6947cc068872ae1d129983a0/pages/6947cc068872ae1d129983a3/edit)
---
## Widget Positioning & Spacing
Appsmith uses a **grid-based layout system** for widget positioning.
### Grid Basics
| Property | Description | Default |
|----------|-------------|---------|
| `topRow` | Starting row position (0-based) | - |
| `bottomRow` | Ending row position | - |
| `leftColumn` | Starting column (0-based) | - |
| `rightColumn` | Ending column | - |
| `parentRowSpace` | Pixels per row | 10px |
| `parentColumnSpace` | Pixels per column | ~25px |
The canvas is **64 columns wide**. Each row is **10 pixels tall**.
### Calculating Size
```
Height = (bottomRow - topRow) × 10px
Width = (rightColumn - leftColumn) × 25px
```
### Visual Example
```
Row 0 ┌────────────────────────────────────────┐
│ Navigation (topRow: 0) │
Row 7 └────────────────────────────────────────┘ ← bottomRow: 7
Row 8 ┌────────────────────────────────────────┐ ← topRow: 8 (1 row gap = 10px)
│ Content Widget │
Row 16 └────────────────────────────────────────┘
```
### This Project's Standard
| Widget | topRow | bottomRow | Notes |
|--------|--------|-----------|-------|
| Navigation | 0 | 7 | 70px tall |
| First Content | 8 | 16 | 10px gap below nav |
### Dynamic Height
Widgets with `"dynamicHeight": "AUTO_HEIGHT"` adjust height based on content. The `bottomRow` serves as an initial guide, and `originalTopRow`/`originalBottomRow` store the original placement values.
---
## Adding a New Page
New pages are added via AI agent (Cursor). The agent follows the skills in `.cursor/skills/` to clone the template, create the query, wire the table, add navigation buttons to all pages, and register the page in `application.json`.
### What You Need
1. **Page name** — Full display name in the format `<Section> - <Label>` (e.g. `Pending POs - ALx Pending`).
2. **Section** — Which navigation section the page belongs to (e.g. `Pending POs`, `Sales`). If the section already exists, the button is appended; otherwise a new section is created first.
3. **SQL query** — The exact query the page's table should run.
### Prompt Format
Tell the agent which section, what name, and what query. One sentence is enough:
> Add a new page under the Pending POs section "Pending POs - ALx Pending" with `select * from mpe.get_prototype_po_dashboard_data(array['25502', '27985']::text[])` query
### What the Agent Does
| Step | Detail |
|------|--------|
| Clone template | Copies `Sales - Capacity Planning` page structure (page JSON, widgets, Container1 nav) |
| Create query | Adds `queries/<query_name>/` with `.txt` (raw SQL) and `metadata.json` |
| Wire table | Sets `Table1.tableData` to `{{<query_name>.data}}` |
| Set heading | Updates `Heading.json` text to the page name |
| Generate gitSyncIds | Creates unique `<24-char-hex>_<uuid>` IDs for the page JSON and query metadata (required for Appsmith git sync) |
| Register page | Adds entry to `application.json` `pages` array |
| Add nav button | Creates `Button2Copy<N>.json` on **every** page — highlighted on its own page, white on all others |
### Verifying
After the agent finishes, run `git status` to confirm only the expected files were added/changed:
- `application.json` — one new page entry
- `pages/<New Page>/` — full page directory (page JSON, query, widgets)
- `pages/<Every Other Page>/widgets/Container1/Button2Copy<N>.json` — new nav button on each existing page

View File

@@ -64,6 +64,10 @@
{
"id": "Operations - Unused Items",
"isDefault": false
},
{
"id": "Operations - WO Shortages",
"isDefault": false
}
],
"unpublishedAppLayout": {

4
docs/README.md Normal file
View File

@@ -0,0 +1,4 @@
# Navigation updates
- Added the **Units Ordered** nav button beneath **Units Shipped** on every Sales canvas so the new sales dashboard route is reachable from Capacity Planning, Units Ordered, and Units Shipped.
- Each page now hardcodes the highlighted button to `appsmith.theme.colors.backgroundColor` (what used to be the default background) and keeps the inactive buttons at `#ffffff`, so the active canvas still renders distinctly without referencing `appsmith.page`.

View File

@@ -8,9 +8,7 @@
"disabledWhenInvalid": false,
"dynamicBindingPathList": [],
"dynamicTriggerPathList": [
{
"key": "onClick"
}
{"key": "onClick"}
],
"isDefaultClickDisabled": true,
"isDisabled": false,

View File

@@ -8,9 +8,7 @@
"disabledWhenInvalid": false,
"dynamicBindingPathList": [],
"dynamicTriggerPathList": [
{
"key": "onClick"
}
{"key": "onClick"}
],
"isDefaultClickDisabled": true,
"isDisabled": false,

View File

@@ -8,9 +8,7 @@
"disabledWhenInvalid": false,
"dynamicBindingPathList": [],
"dynamicTriggerPathList": [
{
"key": "onClick"
}
{"key": "onClick"}
],
"isDefaultClickDisabled": true,
"isDisabled": false,

View File

@@ -8,9 +8,7 @@
"disabledWhenInvalid": false,
"dynamicBindingPathList": [],
"dynamicTriggerPathList": [
{
"key": "onClick"
}
{"key": "onClick"}
],
"isDefaultClickDisabled": true,
"isDisabled": false,

View File

@@ -8,9 +8,7 @@
"disabledWhenInvalid": false,
"dynamicBindingPathList": [],
"dynamicTriggerPathList": [
{
"key": "onClick"
}
{"key": "onClick"}
],
"isDefaultClickDisabled": true,
"isDisabled": false,

View File

@@ -8,9 +8,7 @@
"disabledWhenInvalid": false,
"dynamicBindingPathList": [],
"dynamicTriggerPathList": [
{
"key": "onClick"
}
{"key": "onClick"}
],
"isDefaultClickDisabled": true,
"isDisabled": false,

View File

@@ -8,9 +8,7 @@
"disabledWhenInvalid": false,
"dynamicBindingPathList": [],
"dynamicTriggerPathList": [
{
"key": "onClick"
}
{"key": "onClick"}
],
"isDefaultClickDisabled": true,
"isDisabled": false,

View File

@@ -7,14 +7,10 @@
"buttonVariant": "PRIMARY",
"disabledWhenInvalid": false,
"dynamicBindingPathList": [
{
"key": "buttonColor"
}
{"key": "buttonColor"}
],
"dynamicTriggerPathList": [
{
"key": "onClick"
}
{"key": "onClick"}
],
"isDefaultClickDisabled": true,
"isDisabled": false,

View File

@@ -2,7 +2,6 @@
"animateLoading": true,
"borderRadius": "0.375rem",
"bottomRow": 52,
"boxShadow": "none",
"buttonColor": "#ffffff",
"buttonVariant": "PRIMARY",
"disabledWhenInvalid": false,
@@ -43,5 +42,6 @@
"type": "BUTTON_WIDGET",
"version": 1,
"widgetId": "eh1btn3ui",
"widgetName": "Button3Copy2"
"widgetName": "Button3Copy2",
"boxShadow": "none"
}

View File

@@ -0,0 +1,45 @@
{
"animateLoading": true,
"borderRadius": "0.375rem",
"bottomRow": 56,
"boxShadow": "none",
"buttonColor": "#ffffff",
"buttonVariant": "PRIMARY",
"disabledWhenInvalid": false,
"dynamicBindingPathList": [],
"dynamicTriggerPathList": [
{
"key": "onClick"
}
],
"isDefaultClickDisabled": true,
"isDisabled": false,
"isLoading": false,
"isVisible": true,
"key": "eh1btnwosk",
"leftColumn": 0,
"minWidth": 120,
"mobileBottomRow": 56,
"mobileLeftColumn": 0,
"mobileRightColumn": 16,
"mobileTopRow": 52,
"needsErrorInfo": false,
"onClick": "{{navigateTo('Operations - WO Shortages', {}, 'SAME_WINDOW');}}",
"originalBottomRow": 56,
"originalTopRow": 52,
"parentColumnSpace": 3.841796875,
"parentId": "eh1canvas01",
"parentRowSpace": 10,
"placement": "START",
"recaptchaType": "V3",
"renderMode": "CANVAS",
"resetFormOnClick": false,
"responsiveBehavior": "hug",
"rightColumn": 64,
"text": "WO Shortages",
"topRow": 52,
"type": "BUTTON_WIDGET",
"version": 1,
"widgetId": "eh1btnwos",
"widgetName": "Button3Copy3"
}

View File

@@ -15,12 +15,8 @@
"containerStyle": "none",
"detachFromLayout": true,
"dynamicBindingPathList": [
{
"key": "borderRadius"
},
{
"key": "boxShadow"
}
{"key": "borderRadius"},
{"key": "boxShadow"}
],
"dynamicHeight": "AUTO_HEIGHT",
"flexLayers": [],
@@ -52,9 +48,7 @@
],
"containerStyle": "card",
"dynamicBindingPathList": [
{
"key": "boxShadow"
}
{"key": "boxShadow"}
],
"dynamicHeight": "FIXED",
"dynamicTriggerPathList": [],

View File

@@ -3,15 +3,9 @@
"borderRadius": "{{appsmith.theme.borderRadius.appBorderRadius}}",
"bottomRow": 4,
"dynamicBindingPathList": [
{
"key": "truncateButtonColor"
},
{
"key": "fontFamily"
},
{
"key": "borderRadius"
}
{"key": "truncateButtonColor"},
{"key": "fontFamily"},
{"key": "borderRadius"}
],
"dynamicHeight": "AUTO_HEIGHT",
"dynamicTriggerPathList": [],

View File

@@ -3,15 +3,9 @@
"borderRadius": "{{appsmith.theme.borderRadius.appBorderRadius}}",
"bottomRow": 22,
"dynamicBindingPathList": [
{
"key": "truncateButtonColor"
},
{
"key": "fontFamily"
},
{
"key": "borderRadius"
}
{"key": "truncateButtonColor"},
{"key": "fontFamily"},
{"key": "borderRadius"}
],
"dynamicHeight": "AUTO_HEIGHT",
"dynamicTriggerPathList": [],

View File

@@ -3,15 +3,9 @@
"borderRadius": "{{appsmith.theme.borderRadius.appBorderRadius}}",
"bottomRow": 40,
"dynamicBindingPathList": [
{
"key": "truncateButtonColor"
},
{
"key": "fontFamily"
},
{
"key": "borderRadius"
}
{"key": "truncateButtonColor"},
{"key": "fontFamily"},
{"key": "borderRadius"}
],
"dynamicHeight": "AUTO_HEIGHT",
"dynamicTriggerPathList": [],

View File

@@ -3,15 +3,9 @@
"borderRadius": "{{appsmith.theme.borderRadius.appBorderRadius}}",
"bottomRow": 5,
"dynamicBindingPathList": [
{
"key": "truncateButtonColor"
},
{
"key": "fontFamily"
},
{
"key": "borderRadius"
}
{"key": "truncateButtonColor"},
{"key": "fontFamily"},
{"key": "borderRadius"}
],
"dynamicHeight": "AUTO_HEIGHT",
"dynamicTriggerPathList": [],

View File

@@ -8,9 +8,7 @@
"disabledWhenInvalid": false,
"dynamicBindingPathList": [],
"dynamicTriggerPathList": [
{
"key": "onClick"
}
{"key": "onClick"}
],
"isDefaultClickDisabled": true,
"isDisabled": false,

View File

@@ -8,9 +8,7 @@
"disabledWhenInvalid": false,
"dynamicBindingPathList": [],
"dynamicTriggerPathList": [
{
"key": "onClick"
}
{"key": "onClick"}
],
"isDefaultClickDisabled": true,
"isDisabled": false,

View File

@@ -8,9 +8,7 @@
"disabledWhenInvalid": false,
"dynamicBindingPathList": [],
"dynamicTriggerPathList": [
{
"key": "onClick"
}
{"key": "onClick"}
],
"isDefaultClickDisabled": true,
"isDisabled": false,

View File

@@ -8,9 +8,7 @@
"disabledWhenInvalid": false,
"dynamicBindingPathList": [],
"dynamicTriggerPathList": [
{
"key": "onClick"
}
{"key": "onClick"}
],
"isDefaultClickDisabled": true,
"isDisabled": false,

View File

@@ -8,9 +8,7 @@
"disabledWhenInvalid": false,
"dynamicBindingPathList": [],
"dynamicTriggerPathList": [
{
"key": "onClick"
}
{"key": "onClick"}
],
"isDefaultClickDisabled": true,
"isDisabled": false,

View File

@@ -8,9 +8,7 @@
"disabledWhenInvalid": false,
"dynamicBindingPathList": [],
"dynamicTriggerPathList": [
{
"key": "onClick"
}
{"key": "onClick"}
],
"isDefaultClickDisabled": true,
"isDisabled": false,

View File

@@ -7,14 +7,10 @@
"buttonVariant": "PRIMARY",
"disabledWhenInvalid": false,
"dynamicBindingPathList": [
{
"key": "buttonColor"
}
{"key": "buttonColor"}
],
"dynamicTriggerPathList": [
{
"key": "onClick"
}
{"key": "onClick"}
],
"isDefaultClickDisabled": true,
"isDisabled": false,

View File

@@ -8,9 +8,7 @@
"disabledWhenInvalid": false,
"dynamicBindingPathList": [],
"dynamicTriggerPathList": [
{
"key": "onClick"
}
{"key": "onClick"}
],
"isDefaultClickDisabled": true,
"isDisabled": false,

View File

@@ -2,7 +2,6 @@
"animateLoading": true,
"borderRadius": "0.375rem",
"bottomRow": 52,
"boxShadow": "none",
"buttonColor": "#ffffff",
"buttonVariant": "PRIMARY",
"disabledWhenInvalid": false,
@@ -43,5 +42,6 @@
"type": "BUTTON_WIDGET",
"version": 1,
"widgetId": "jd1btn3ui",
"widgetName": "Button3Copy2"
"widgetName": "Button3Copy2",
"boxShadow": "none"
}

View File

@@ -0,0 +1,45 @@
{
"animateLoading": true,
"borderRadius": "0.375rem",
"bottomRow": 56,
"boxShadow": "none",
"buttonColor": "#ffffff",
"buttonVariant": "PRIMARY",
"disabledWhenInvalid": false,
"dynamicBindingPathList": [],
"dynamicTriggerPathList": [
{
"key": "onClick"
}
],
"isDefaultClickDisabled": true,
"isDisabled": false,
"isLoading": false,
"isVisible": true,
"key": "jd1btnwosk",
"leftColumn": 0,
"minWidth": 120,
"mobileBottomRow": 56,
"mobileLeftColumn": 0,
"mobileRightColumn": 16,
"mobileTopRow": 52,
"needsErrorInfo": false,
"onClick": "{{navigateTo('Operations - WO Shortages', {}, 'SAME_WINDOW');}}",
"originalBottomRow": 56,
"originalTopRow": 52,
"parentColumnSpace": 3.841796875,
"parentId": "jd1canvas01",
"parentRowSpace": 10,
"placement": "START",
"recaptchaType": "V3",
"renderMode": "CANVAS",
"resetFormOnClick": false,
"responsiveBehavior": "hug",
"rightColumn": 64,
"text": "WO Shortages",
"topRow": 52,
"type": "BUTTON_WIDGET",
"version": 1,
"widgetId": "jd1btnwos",
"widgetName": "Button3Copy3"
}

View File

@@ -15,12 +15,8 @@
"containerStyle": "none",
"detachFromLayout": true,
"dynamicBindingPathList": [
{
"key": "borderRadius"
},
{
"key": "boxShadow"
}
{"key": "borderRadius"},
{"key": "boxShadow"}
],
"dynamicHeight": "AUTO_HEIGHT",
"flexLayers": [],
@@ -52,9 +48,7 @@
],
"containerStyle": "card",
"dynamicBindingPathList": [
{
"key": "boxShadow"
}
{"key": "boxShadow"}
],
"dynamicHeight": "FIXED",
"dynamicTriggerPathList": [],

View File

@@ -3,15 +3,9 @@
"borderRadius": "{{appsmith.theme.borderRadius.appBorderRadius}}",
"bottomRow": 4,
"dynamicBindingPathList": [
{
"key": "truncateButtonColor"
},
{
"key": "fontFamily"
},
{
"key": "borderRadius"
}
{"key": "truncateButtonColor"},
{"key": "fontFamily"},
{"key": "borderRadius"}
],
"dynamicHeight": "AUTO_HEIGHT",
"dynamicTriggerPathList": [],

View File

@@ -3,15 +3,9 @@
"borderRadius": "{{appsmith.theme.borderRadius.appBorderRadius}}",
"bottomRow": 22,
"dynamicBindingPathList": [
{
"key": "truncateButtonColor"
},
{
"key": "fontFamily"
},
{
"key": "borderRadius"
}
{"key": "truncateButtonColor"},
{"key": "fontFamily"},
{"key": "borderRadius"}
],
"dynamicHeight": "AUTO_HEIGHT",
"dynamicTriggerPathList": [],

View File

@@ -3,15 +3,9 @@
"borderRadius": "{{appsmith.theme.borderRadius.appBorderRadius}}",
"bottomRow": 40,
"dynamicBindingPathList": [
{
"key": "truncateButtonColor"
},
{
"key": "fontFamily"
},
{
"key": "borderRadius"
}
{"key": "truncateButtonColor"},
{"key": "fontFamily"},
{"key": "borderRadius"}
],
"dynamicHeight": "AUTO_HEIGHT",
"dynamicTriggerPathList": [],

View File

@@ -3,15 +3,9 @@
"borderRadius": "{{appsmith.theme.borderRadius.appBorderRadius}}",
"bottomRow": 5,
"dynamicBindingPathList": [
{
"key": "truncateButtonColor"
},
{
"key": "fontFamily"
},
{
"key": "borderRadius"
}
{"key": "truncateButtonColor"},
{"key": "fontFamily"},
{"key": "borderRadius"}
],
"dynamicHeight": "AUTO_HEIGHT",
"dynamicTriggerPathList": [],

View File

@@ -8,9 +8,7 @@
"disabledWhenInvalid": false,
"dynamicBindingPathList": [],
"dynamicTriggerPathList": [
{
"key": "onClick"
}
{"key": "onClick"}
],
"isDefaultClickDisabled": true,
"isDisabled": false,

View File

@@ -8,9 +8,7 @@
"disabledWhenInvalid": false,
"dynamicBindingPathList": [],
"dynamicTriggerPathList": [
{
"key": "onClick"
}
{"key": "onClick"}
],
"isDefaultClickDisabled": true,
"isDisabled": false,

View File

@@ -8,9 +8,7 @@
"disabledWhenInvalid": false,
"dynamicBindingPathList": [],
"dynamicTriggerPathList": [
{
"key": "onClick"
}
{"key": "onClick"}
],
"isDefaultClickDisabled": true,
"isDisabled": false,

View File

@@ -8,9 +8,7 @@
"disabledWhenInvalid": false,
"dynamicBindingPathList": [],
"dynamicTriggerPathList": [
{
"key": "onClick"
}
{"key": "onClick"}
],
"isDefaultClickDisabled": true,
"isDisabled": false,

View File

@@ -8,9 +8,7 @@
"disabledWhenInvalid": false,
"dynamicBindingPathList": [],
"dynamicTriggerPathList": [
{
"key": "onClick"
}
{"key": "onClick"}
],
"isDefaultClickDisabled": true,
"isDisabled": false,

View File

@@ -8,9 +8,7 @@
"disabledWhenInvalid": false,
"dynamicBindingPathList": [],
"dynamicTriggerPathList": [
{
"key": "onClick"
}
{"key": "onClick"}
],
"isDefaultClickDisabled": true,
"isDisabled": false,

View File

@@ -8,9 +8,7 @@
"disabledWhenInvalid": false,
"dynamicBindingPathList": [],
"dynamicTriggerPathList": [
{
"key": "onClick"
}
{"key": "onClick"}
],
"isDefaultClickDisabled": true,
"isDisabled": false,

View File

@@ -8,9 +8,7 @@
"disabledWhenInvalid": false,
"dynamicBindingPathList": [],
"dynamicTriggerPathList": [
{
"key": "onClick"
}
{"key": "onClick"}
],
"isDefaultClickDisabled": true,
"isDisabled": false,

View File

@@ -0,0 +1,45 @@
{
"animateLoading": true,
"borderRadius": "0.375rem",
"bottomRow": 56,
"boxShadow": "none",
"buttonColor": "#ffffff",
"buttonVariant": "PRIMARY",
"disabledWhenInvalid": false,
"dynamicBindingPathList": [],
"dynamicTriggerPathList": [
{
"key": "onClick"
}
],
"isDefaultClickDisabled": true,
"isDisabled": false,
"isLoading": false,
"isVisible": true,
"key": "ui1btnwosk",
"leftColumn": 0,
"minWidth": 120,
"mobileBottomRow": 56,
"mobileLeftColumn": 0,
"mobileRightColumn": 16,
"mobileTopRow": 52,
"needsErrorInfo": false,
"onClick": "{{navigateTo('Operations - WO Shortages', {}, 'SAME_WINDOW');}}",
"originalBottomRow": 56,
"originalTopRow": 52,
"parentColumnSpace": 3.841796875,
"parentId": "ui1canvas01",
"parentRowSpace": 10,
"placement": "START",
"recaptchaType": "V3",
"renderMode": "CANVAS",
"resetFormOnClick": false,
"responsiveBehavior": "hug",
"rightColumn": 64,
"text": "WO Shortages",
"topRow": 52,
"type": "BUTTON_WIDGET",
"version": 1,
"widgetId": "ui1btnwos",
"widgetName": "Button3Copy3"
}

View File

@@ -15,12 +15,8 @@
"containerStyle": "none",
"detachFromLayout": true,
"dynamicBindingPathList": [
{
"key": "borderRadius"
},
{
"key": "boxShadow"
}
{"key": "borderRadius"},
{"key": "boxShadow"}
],
"dynamicHeight": "AUTO_HEIGHT",
"flexLayers": [],
@@ -52,9 +48,7 @@
],
"containerStyle": "card",
"dynamicBindingPathList": [
{
"key": "boxShadow"
}
{"key": "boxShadow"}
],
"dynamicHeight": "FIXED",
"dynamicTriggerPathList": [],

View File

@@ -3,15 +3,9 @@
"borderRadius": "{{appsmith.theme.borderRadius.appBorderRadius}}",
"bottomRow": 4,
"dynamicBindingPathList": [
{
"key": "truncateButtonColor"
},
{
"key": "fontFamily"
},
{
"key": "borderRadius"
}
{"key": "truncateButtonColor"},
{"key": "fontFamily"},
{"key": "borderRadius"}
],
"dynamicHeight": "AUTO_HEIGHT",
"dynamicTriggerPathList": [],

View File

@@ -3,15 +3,9 @@
"borderRadius": "{{appsmith.theme.borderRadius.appBorderRadius}}",
"bottomRow": 22,
"dynamicBindingPathList": [
{
"key": "truncateButtonColor"
},
{
"key": "fontFamily"
},
{
"key": "borderRadius"
}
{"key": "truncateButtonColor"},
{"key": "fontFamily"},
{"key": "borderRadius"}
],
"dynamicHeight": "AUTO_HEIGHT",
"dynamicTriggerPathList": [],

View File

@@ -3,15 +3,9 @@
"borderRadius": "{{appsmith.theme.borderRadius.appBorderRadius}}",
"bottomRow": 40,
"dynamicBindingPathList": [
{
"key": "truncateButtonColor"
},
{
"key": "fontFamily"
},
{
"key": "borderRadius"
}
{"key": "truncateButtonColor"},
{"key": "fontFamily"},
{"key": "borderRadius"}
],
"dynamicHeight": "AUTO_HEIGHT",
"dynamicTriggerPathList": [],

View File

@@ -3,15 +3,9 @@
"borderRadius": "{{appsmith.theme.borderRadius.appBorderRadius}}",
"bottomRow": 5,
"dynamicBindingPathList": [
{
"key": "truncateButtonColor"
},
{
"key": "fontFamily"
},
{
"key": "borderRadius"
}
{"key": "truncateButtonColor"},
{"key": "fontFamily"},
{"key": "borderRadius"}
],
"dynamicHeight": "AUTO_HEIGHT",
"dynamicTriggerPathList": [],

View File

@@ -0,0 +1,33 @@
{
"gitSyncId": "5a6b061faad540f286ebea06_720e519a-3116-4557-ad8e-350b8cc846d1",
"unpublishedPage": {
"isHidden": false,
"layouts": [
{
"dsl": {
"backgroundColor": "none",
"bottomRow": 1240,
"canExtend": true,
"containerStyle": "none",
"detachFromLayout": true,
"dynamicBindingPathList": [],
"dynamicTriggerPathList": [],
"leftColumn": 0,
"minHeight": 1292,
"parentColumnSpace": 1,
"parentRowSpace": 1,
"rightColumn": 4896,
"snapColumns": 64,
"snapRows": 124,
"topRow": 0,
"type": "CANVAS_WIDGET",
"version": 94,
"widgetId": "0",
"widgetName": "MainContainer"
}
}
],
"name": "Operations - WO Shortages",
"slug": "operations-wo-shortages"
}
}

View File

@@ -0,0 +1,65 @@
WITH fa_wos AS (
SELECT w.wo_id, w.wo_duedate
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
WHERE w.wo_status IN ('R','E','I')
AND w.wo_ordtype != 'W'
AND EXISTS (
SELECT 1 FROM mpe.itematmdept
WHERE itematmdept_item_id = i.item_id
AND 'FA' = ANY(itematmdept_departments)
)
AND i.item_id NOT IN (
SELECT itemgrpitem_item_id FROM itemgrpitem WHERE itemgrpitem_itemgrp_id = 97
)
AND w.wo_duedate <= (date_trunc('week', CURRENT_DATE) + interval '11 days')
),
mts_shorts AS (
SELECT fw.wo_id AS top_wo_id,
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
JOIN wo sub_wo ON rwg.wogrpext_wo_id = sub_wo.wo_id
JOIN womatl wm ON sub_wo.wo_id = wm.womatl_wo_id
JOIN itemsite mis ON wm.womatl_itemsite_id = mis.itemsite_id
JOIN item mi ON mis.itemsite_item_id = mi.item_id
WHERE sub_wo.wo_status IN ('R','I')
AND wm.womatl_picklist AND wm.womatl_qtyreq > wm.womatl_qtyiss
),
mto_shorts AS (
SELECT fw.wo_id AS top_wo_id,
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
JOIN wo sub_wo ON rwg.wogrpext_wo_id = sub_wo.wo_id
JOIN itemsite mis ON sub_wo.wo_itemsite_id = mis.itemsite_id
JOIN item mi ON mis.itemsite_item_id = mi.item_id
WHERE sub_wo.wo_qtyord > sub_wo.wo_qtyrcv
AND sub_wo.wo_status IN ('R','I')
AND mi.item_id IN (
SELECT DISTINCT itemgrpitem_item_id FROM itemgrpitem
JOIN itemgrp ON itemgrpitem_itemgrp_id = itemgrp_id
WHERE itemgrp_name IN ('MAGNETIC-TRANSFORMER','MAGNETIC-PLUMBING','SUB-ASSEMBLY','PCB GROUP-WORK','INPUT-BD')
)
),
all_shorts AS (
SELECT * FROM mts_shorts
UNION ALL
SELECT * FROM mto_shorts
)
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

@@ -0,0 +1,31 @@
{
"gitSyncId": "5a6b061faad540f286ebea06_4161599c-ad00-4cae-814b-58edf5cbacd5",
"id": "Operations - WO Shortages_critical_parts",
"pluginId": "postgres-plugin",
"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, 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": [
{
"value": true
}
],
"timeoutInMillisecond": 30000
},
"confirmBeforeExecute": false,
"datasource": {
"id": "xTuple_GoLive",
"isAutoGenerated": false,
"name": "xTuple_GoLive",
"pluginId": "postgres-plugin"
},
"dynamicBindingPathList": [],
"name": "critical_parts",
"pageId": "Operations - WO Shortages",
"runBehaviour": "AUTOMATIC",
"userSetOnLoad": false
}
}

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,112 @@
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,
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 (
SELECT 1 FROM mpe.itematmdept
WHERE itematmdept_item_id = i.item_id
AND 'FA' = ANY(itematmdept_departments)
)
AND i.item_id NOT IN (
SELECT itemgrpitem_item_id FROM itemgrpitem
WHERE itemgrpitem_itemgrp_id = 97
)
)
-- MTS shortages (stock material lines)
SELECT
CASE
WHEN fw.wo_duedate < CURRENT_DATE THEN 'Past Due'
WHEN fw.wo_duedate <= (date_trunc('week', CURRENT_DATE) + interval '4 days') THEN 'This Week'
WHEN fw.wo_duedate <= (date_trunc('week', CURRENT_DATE) + interval '11 days') THEN 'Next Week'
WHEN fw.wo_duedate <= (date_trunc('week', CURRENT_DATE) + interval '18 days') THEN '2 Weeks'
WHEN fw.wo_duedate <= (date_trunc('week', CURRENT_DATE) + interval '25 days') THEN '3 Weeks'
ELSE '3+ Weeks'
END AS due_group,
CASE
WHEN fw.wo_duedate < CURRENT_DATE THEN 1
WHEN fw.wo_duedate <= (date_trunc('week', CURRENT_DATE) + interval '4 days') THEN 2
WHEN fw.wo_duedate <= (date_trunc('week', CURRENT_DATE) + interval '11 days') THEN 3
WHEN fw.wo_duedate <= (date_trunc('week', CURRENT_DATE) + interval '18 days') THEN 4
WHEN fw.wo_duedate <= (date_trunc('week', CURRENT_DATE) + interval '25 days') THEN 5
ELSE 6
END AS due_group_sort,
fw.wo_number || '-' || fw.wo_subnumber AS wo_num,
fw.wo_status AS wo_status,
to_char(fw.wo_duedate, 'YYYY-MM-DD') AS wo_duedate,
fw.customer_name,
fw.wo_item,
fw.wo_descrip,
'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,
wm.womatl_qtyreq AS qty_required,
wm.womatl_qtyiss AS qty_issued,
qtynetable(mis.itemsite_id, true) AS qty_onhand
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
JOIN wo sub_wo ON rwg.wogrpext_wo_id = sub_wo.wo_id
JOIN womatl wm ON sub_wo.wo_id = wm.womatl_wo_id
JOIN itemsite mis ON wm.womatl_itemsite_id = mis.itemsite_id
JOIN item mi ON mis.itemsite_item_id = mi.item_id
WHERE sub_wo.wo_status IN ('R','I')
AND wm.womatl_picklist
AND wm.womatl_qtyreq > wm.womatl_qtyiss
UNION ALL
-- MTO shortages (manufactured sub-assemblies not complete)
SELECT
CASE
WHEN fw.wo_duedate < CURRENT_DATE THEN 'Past Due'
WHEN fw.wo_duedate <= (date_trunc('week', CURRENT_DATE) + interval '4 days') THEN 'This Week'
WHEN fw.wo_duedate <= (date_trunc('week', CURRENT_DATE) + interval '11 days') THEN 'Next Week'
WHEN fw.wo_duedate <= (date_trunc('week', CURRENT_DATE) + interval '18 days') THEN '2 Weeks'
WHEN fw.wo_duedate <= (date_trunc('week', CURRENT_DATE) + interval '25 days') THEN '3 Weeks'
ELSE '3+ Weeks'
END AS due_group,
CASE
WHEN fw.wo_duedate < CURRENT_DATE THEN 1
WHEN fw.wo_duedate <= (date_trunc('week', CURRENT_DATE) + interval '4 days') THEN 2
WHEN fw.wo_duedate <= (date_trunc('week', CURRENT_DATE) + interval '11 days') THEN 3
WHEN fw.wo_duedate <= (date_trunc('week', CURRENT_DATE) + interval '18 days') THEN 4
WHEN fw.wo_duedate <= (date_trunc('week', CURRENT_DATE) + interval '25 days') THEN 5
ELSE 6
END AS due_group_sort,
fw.wo_number || '-' || fw.wo_subnumber AS wo_num,
fw.wo_status AS wo_status,
to_char(fw.wo_duedate, 'YYYY-MM-DD') AS wo_duedate,
fw.customer_name,
fw.wo_item,
fw.wo_descrip,
'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,
sub_wo.wo_qtyord AS qty_required,
sub_wo.wo_qtyrcv AS qty_issued,
NULL::numeric AS qty_onhand
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
JOIN wo sub_wo ON rwg.wogrpext_wo_id = sub_wo.wo_id
JOIN itemsite mis ON sub_wo.wo_itemsite_id = mis.itemsite_id
JOIN item mi ON mis.itemsite_item_id = mi.item_id
WHERE sub_wo.wo_qtyord > sub_wo.wo_qtyrcv
AND sub_wo.wo_status IN ('R','I')
AND mi.item_id IN (
SELECT DISTINCT itemgrpitem_item_id FROM itemgrpitem
JOIN itemgrp ON itemgrpitem_itemgrp_id = itemgrp_id
WHERE itemgrp_name IN ('MAGNETIC-TRANSFORMER','MAGNETIC-PLUMBING','SUB-ASSEMBLY','PCB GROUP-WORK','INPUT-BD')
)
ORDER BY due_group_sort, wo_duedate, wo_num, shortage_type, short_part;

View File

@@ -0,0 +1,45 @@
{
"animateLoading": true,
"borderRadius": "0.375rem",
"bottomRow": 8,
"boxShadow": "none",
"buttonColor": "#ffffff",
"buttonVariant": "PRIMARY",
"disabledWhenInvalid": false,
"dynamicBindingPathList": [],
"dynamicTriggerPathList": [
{
"key": "onClick"
}
],
"isDefaultClickDisabled": true,
"isDisabled": false,
"isLoading": false,
"isVisible": true,
"key": "ws1btn1capk",
"leftColumn": 0,
"minWidth": 120,
"mobileBottomRow": 8,
"mobileLeftColumn": 0,
"mobileRightColumn": 16,
"mobileTopRow": 4,
"needsErrorInfo": false,
"onClick": "{{navigateTo('Sales - Capacity Planning', {}, 'SAME_WINDOW');}}",
"originalBottomRow": 8,
"originalTopRow": 4,
"parentColumnSpace": 3.841796875,
"parentId": "ws1canvas01",
"parentRowSpace": 10,
"placement": "START",
"recaptchaType": "V3",
"renderMode": "CANVAS",
"resetFormOnClick": false,
"responsiveBehavior": "hug",
"rightColumn": 64,
"text": "Capacity Planning",
"topRow": 4,
"type": "BUTTON_WIDGET",
"version": 1,
"widgetId": "ws1btn1cap",
"widgetName": "Button1"
}

View File

@@ -0,0 +1,45 @@
{
"animateLoading": true,
"borderRadius": "0.375rem",
"bottomRow": 12,
"boxShadow": "none",
"buttonColor": "#ffffff",
"buttonVariant": "PRIMARY",
"disabledWhenInvalid": false,
"dynamicBindingPathList": [],
"dynamicTriggerPathList": [
{
"key": "onClick"
}
],
"isDefaultClickDisabled": true,
"isDisabled": false,
"isLoading": false,
"isVisible": true,
"key": "ws1btn1shpk",
"leftColumn": 0,
"minWidth": 120,
"mobileBottomRow": 12,
"mobileLeftColumn": 0,
"mobileRightColumn": 16,
"mobileTopRow": 8,
"needsErrorInfo": false,
"onClick": "{{navigateTo('Sales - Units Shipped', {}, 'SAME_WINDOW');}}",
"originalBottomRow": 12,
"originalTopRow": 8,
"parentColumnSpace": 3.841796875,
"parentId": "ws1canvas01",
"parentRowSpace": 10,
"placement": "START",
"recaptchaType": "V3",
"renderMode": "CANVAS",
"resetFormOnClick": false,
"responsiveBehavior": "hug",
"rightColumn": 64,
"text": "Units Shipped",
"topRow": 8,
"type": "BUTTON_WIDGET",
"version": 1,
"widgetId": "ws1btn1shp",
"widgetName": "Button1Copy"
}

View File

@@ -0,0 +1,45 @@
{
"animateLoading": true,
"borderRadius": "0.375rem",
"bottomRow": 16,
"boxShadow": "none",
"buttonColor": "#ffffff",
"buttonVariant": "PRIMARY",
"disabledWhenInvalid": false,
"dynamicBindingPathList": [],
"dynamicTriggerPathList": [
{
"key": "onClick"
}
],
"isDefaultClickDisabled": true,
"isDisabled": false,
"isLoading": false,
"isVisible": true,
"key": "ws1btn1ordk",
"leftColumn": 0,
"minWidth": 120,
"mobileBottomRow": 16,
"mobileLeftColumn": 0,
"mobileRightColumn": 16,
"mobileTopRow": 12,
"needsErrorInfo": false,
"onClick": "{{navigateTo('Sales - Units Ordered', {}, 'SAME_WINDOW');}}",
"originalBottomRow": 16,
"originalTopRow": 12,
"parentColumnSpace": 3.841796875,
"parentId": "ws1canvas01",
"parentRowSpace": 10,
"placement": "START",
"recaptchaType": "V3",
"renderMode": "CANVAS",
"resetFormOnClick": false,
"responsiveBehavior": "hug",
"rightColumn": 64,
"text": "Units Ordered",
"topRow": 12,
"type": "BUTTON_WIDGET",
"version": 1,
"widgetId": "ws1btn1ord",
"widgetName": "Button1Copy2"
}

View File

@@ -0,0 +1,45 @@
{
"animateLoading": true,
"borderRadius": "0.375rem",
"bottomRow": 26,
"boxShadow": "none",
"buttonColor": "#ffffff",
"buttonVariant": "PRIMARY",
"disabledWhenInvalid": false,
"dynamicBindingPathList": [],
"dynamicTriggerPathList": [
{
"key": "onClick"
}
],
"isDefaultClickDisabled": true,
"isDisabled": false,
"isLoading": false,
"isVisible": true,
"key": "ws1btn2posk",
"leftColumn": 0,
"minWidth": 120,
"mobileBottomRow": 26,
"mobileLeftColumn": 0,
"mobileRightColumn": 16,
"mobileTopRow": 22,
"needsErrorInfo": false,
"onClick": "{{navigateTo('Pending POs', {}, 'SAME_WINDOW');}}",
"originalBottomRow": 26,
"originalTopRow": 22,
"parentColumnSpace": 3.841796875,
"parentId": "ws1canvas01",
"parentRowSpace": 10,
"placement": "START",
"recaptchaType": "V3",
"renderMode": "CANVAS",
"resetFormOnClick": false,
"responsiveBehavior": "hug",
"rightColumn": 64,
"text": "Pending POs",
"topRow": 22,
"type": "BUTTON_WIDGET",
"version": 1,
"widgetId": "ws1btn2pos",
"widgetName": "Button2All"
}

View File

@@ -0,0 +1,45 @@
{
"animateLoading": true,
"borderRadius": "0.375rem",
"bottomRow": 30,
"boxShadow": "none",
"buttonColor": "#ffffff",
"buttonVariant": "PRIMARY",
"disabledWhenInvalid": false,
"dynamicBindingPathList": [],
"dynamicTriggerPathList": [
{
"key": "onClick"
}
],
"isDefaultClickDisabled": true,
"isDisabled": false,
"isLoading": false,
"isVisible": true,
"key": "ws1btn2revk",
"leftColumn": 0,
"minWidth": 120,
"mobileBottomRow": 30,
"mobileLeftColumn": 0,
"mobileRightColumn": 16,
"mobileTopRow": 26,
"needsErrorInfo": false,
"onClick": "{{navigateTo('Pending Revisions', {}, 'SAME_WINDOW');}}",
"originalBottomRow": 30,
"originalTopRow": 26,
"parentColumnSpace": 3.841796875,
"parentId": "ws1canvas01",
"parentRowSpace": 10,
"placement": "START",
"recaptchaType": "V3",
"renderMode": "CANVAS",
"resetFormOnClick": false,
"responsiveBehavior": "hug",
"rightColumn": 64,
"text": "Pending Revisions",
"topRow": 26,
"type": "BUTTON_WIDGET",
"version": 1,
"widgetId": "ws1btn2rev",
"widgetName": "Button2Copy"
}

View File

@@ -0,0 +1,45 @@
{
"animateLoading": true,
"borderRadius": "0.375rem",
"bottomRow": 34,
"boxShadow": "none",
"buttonColor": "#ffffff",
"buttonVariant": "PRIMARY",
"disabledWhenInvalid": false,
"dynamicBindingPathList": [],
"dynamicTriggerPathList": [
{
"key": "onClick"
}
],
"isDefaultClickDisabled": true,
"isDisabled": false,
"isLoading": false,
"isVisible": true,
"key": "ws1btn2xgnk",
"leftColumn": 0,
"minWidth": 120,
"mobileBottomRow": 34,
"mobileLeftColumn": 0,
"mobileRightColumn": 16,
"mobileTopRow": 30,
"needsErrorInfo": false,
"onClick": "{{navigateTo('xGen', {}, 'SAME_WINDOW');}}",
"originalBottomRow": 34,
"originalTopRow": 30,
"parentColumnSpace": 3.841796875,
"parentId": "ws1canvas01",
"parentRowSpace": 10,
"placement": "START",
"recaptchaType": "V3",
"renderMode": "CANVAS",
"resetFormOnClick": false,
"responsiveBehavior": "hug",
"rightColumn": 64,
"text": "xGen",
"topRow": 30,
"type": "BUTTON_WIDGET",
"version": 1,
"widgetId": "ws1btn2xgn",
"widgetName": "Button2Copy2"
}

View File

@@ -0,0 +1,45 @@
{
"animateLoading": true,
"borderRadius": "0.375rem",
"bottomRow": 44,
"boxShadow": "none",
"buttonColor": "#ffffff",
"buttonVariant": "PRIMARY",
"disabledWhenInvalid": false,
"dynamicBindingPathList": [],
"dynamicTriggerPathList": [
{
"key": "onClick"
}
],
"isDefaultClickDisabled": true,
"isDisabled": false,
"isLoading": false,
"isVisible": true,
"key": "ws1btn3jdsk",
"leftColumn": 0,
"minWidth": 120,
"mobileBottomRow": 44,
"mobileLeftColumn": 0,
"mobileRightColumn": 16,
"mobileTopRow": 40,
"needsErrorInfo": false,
"onClick": "{{navigateTo('Operations - Job Drawing Status', {}, 'SAME_WINDOW');}}",
"originalBottomRow": 44,
"originalTopRow": 40,
"parentColumnSpace": 3.841796875,
"parentId": "ws1canvas01",
"parentRowSpace": 10,
"placement": "START",
"recaptchaType": "V3",
"renderMode": "CANVAS",
"resetFormOnClick": false,
"responsiveBehavior": "hug",
"rightColumn": 64,
"text": "Job Drawing Status",
"topRow": 40,
"type": "BUTTON_WIDGET",
"version": 1,
"widgetId": "ws1btn3jds",
"widgetName": "Button3"
}

View File

@@ -0,0 +1,45 @@
{
"animateLoading": true,
"borderRadius": "0.375rem",
"bottomRow": 48,
"boxShadow": "none",
"buttonColor": "#ffffff",
"buttonVariant": "PRIMARY",
"disabledWhenInvalid": false,
"dynamicBindingPathList": [],
"dynamicTriggerPathList": [
{
"key": "onClick"
}
],
"isDefaultClickDisabled": true,
"isDisabled": false,
"isLoading": false,
"isVisible": true,
"key": "ws1btn3enhk",
"leftColumn": 0,
"minWidth": 120,
"mobileBottomRow": 48,
"mobileLeftColumn": 0,
"mobileRightColumn": 16,
"mobileTopRow": 44,
"needsErrorInfo": false,
"onClick": "{{navigateTo('Operations - Engineering Holds', {}, 'SAME_WINDOW');}}",
"originalBottomRow": 48,
"originalTopRow": 44,
"parentColumnSpace": 3.841796875,
"parentId": "ws1canvas01",
"parentRowSpace": 10,
"placement": "START",
"recaptchaType": "V3",
"renderMode": "CANVAS",
"resetFormOnClick": false,
"responsiveBehavior": "hug",
"rightColumn": 64,
"text": "Engineering Holds",
"topRow": 44,
"type": "BUTTON_WIDGET",
"version": 1,
"widgetId": "ws1btn3enh",
"widgetName": "Button3Copy"
}

View File

@@ -0,0 +1,45 @@
{
"animateLoading": true,
"borderRadius": "0.375rem",
"bottomRow": 52,
"boxShadow": "none",
"buttonColor": "#ffffff",
"buttonVariant": "PRIMARY",
"disabledWhenInvalid": false,
"dynamicBindingPathList": [],
"dynamicTriggerPathList": [
{
"key": "onClick"
}
],
"isDefaultClickDisabled": true,
"isDisabled": false,
"isLoading": false,
"isVisible": true,
"key": "ws1btn3uik",
"leftColumn": 0,
"minWidth": 120,
"mobileBottomRow": 52,
"mobileLeftColumn": 0,
"mobileRightColumn": 16,
"mobileTopRow": 48,
"needsErrorInfo": false,
"onClick": "{{navigateTo('Operations - Unused Items', {}, 'SAME_WINDOW');}}",
"originalBottomRow": 52,
"originalTopRow": 48,
"parentColumnSpace": 3.841796875,
"parentId": "ws1canvas01",
"parentRowSpace": 10,
"placement": "START",
"recaptchaType": "V3",
"renderMode": "CANVAS",
"resetFormOnClick": false,
"responsiveBehavior": "hug",
"rightColumn": 64,
"text": "Unused Items",
"topRow": 48,
"type": "BUTTON_WIDGET",
"version": 1,
"widgetId": "ws1btn3ui",
"widgetName": "Button3Copy2"
}

View File

@@ -0,0 +1,49 @@
{
"animateLoading": true,
"borderRadius": "0.375rem",
"bottomRow": 56,
"boxShadow": "none",
"buttonColor": "{{appsmith.theme.colors.backgroundColor}}",
"buttonVariant": "PRIMARY",
"disabledWhenInvalid": false,
"dynamicBindingPathList": [
{
"key": "buttonColor"
}
],
"dynamicTriggerPathList": [
{
"key": "onClick"
}
],
"isDefaultClickDisabled": true,
"isDisabled": false,
"isLoading": false,
"isVisible": true,
"key": "ws1btn3wosk",
"leftColumn": 0,
"minWidth": 120,
"mobileBottomRow": 56,
"mobileLeftColumn": 0,
"mobileRightColumn": 16,
"mobileTopRow": 52,
"needsErrorInfo": false,
"onClick": "{{navigateTo('Operations - WO Shortages', {}, 'SAME_WINDOW');}}",
"originalBottomRow": 56,
"originalTopRow": 52,
"parentColumnSpace": 3.841796875,
"parentId": "ws1canvas01",
"parentRowSpace": 10,
"placement": "START",
"recaptchaType": "V3",
"renderMode": "CANVAS",
"resetFormOnClick": false,
"responsiveBehavior": "hug",
"rightColumn": 64,
"text": "WO Shortages",
"topRow": 52,
"type": "BUTTON_WIDGET",
"version": 1,
"widgetId": "ws1btn3wos",
"widgetName": "Button3Copy3"
}

View File

@@ -0,0 +1,87 @@
{
"animateLoading": true,
"backgroundColor": "#FFFFFF",
"borderColor": "#E0DEDE",
"borderRadius": "0px",
"borderWidth": "1",
"bottomRow": 124,
"boxShadow": "{{appsmith.theme.boxShadow.appBoxShadow}}",
"children": [
{
"borderRadius": "{{appsmith.theme.borderRadius.appBorderRadius}}",
"bottomRow": 1240,
"boxShadow": "{{appsmith.theme.boxShadow.appBoxShadow}}",
"canExtend": false,
"containerStyle": "none",
"detachFromLayout": true,
"dynamicBindingPathList": [
{
"key": "borderRadius"
},
{
"key": "boxShadow"
}
],
"dynamicHeight": "AUTO_HEIGHT",
"flexLayers": [],
"isLoading": false,
"isVisible": true,
"key": "ws1cnvskey",
"leftColumn": 0,
"maxDynamicHeight": 9000,
"minDynamicHeight": 4,
"minHeight": 100,
"minWidth": 450,
"mobileBottomRow": 100,
"mobileLeftColumn": 0,
"mobileRightColumn": 132.9375,
"mobileTopRow": 0,
"needsErrorInfo": false,
"parentColumnSpace": 1,
"parentId": "ws1contain",
"parentRowSpace": 1,
"renderMode": "CANVAS",
"responsiveBehavior": "fill",
"rightColumn": 132.9375,
"topRow": 0,
"type": "CANVAS_WIDGET",
"version": 1,
"widgetId": "ws1canvas01",
"widgetName": "Canvas1"
}
],
"containerStyle": "card",
"dynamicBindingPathList": [
{
"key": "boxShadow"
}
],
"dynamicHeight": "FIXED",
"dynamicTriggerPathList": [],
"flexVerticalAlignment": "stretch",
"isCanvas": true,
"isLoading": false,
"isVisible": true,
"key": "ws1cntkey1",
"leftColumn": 0,
"maxDynamicHeight": 12,
"minDynamicHeight": 10,
"minWidth": 450,
"mobileBottomRow": 10,
"mobileLeftColumn": 0,
"mobileRightColumn": 3,
"mobileTopRow": 0,
"needsErrorInfo": false,
"parentColumnSpace": 44.3125,
"parentId": "0",
"parentRowSpace": 10,
"renderMode": "CANVAS",
"responsiveBehavior": "fill",
"rightColumn": 9,
"shouldScrollContents": true,
"topRow": 0,
"type": "CONTAINER_WIDGET",
"version": 1,
"widgetId": "ws1contain",
"widgetName": "Container1"
}

View File

@@ -0,0 +1,46 @@
{
"animateLoading": true,
"borderRadius": "{{appsmith.theme.borderRadius.appBorderRadius}}",
"bottomRow": 4,
"dynamicBindingPathList": [
{"key": "truncateButtonColor"},
{"key": "fontFamily"},
{"key": "borderRadius"}
],
"dynamicHeight": "AUTO_HEIGHT",
"dynamicTriggerPathList": [],
"fontFamily": "{{appsmith.theme.fontFamily.appFont}}",
"fontSize": "1rem",
"fontStyle": "BOLD",
"isLoading": false,
"isVisible": true,
"key": "ws1t1salky",
"leftColumn": 0,
"maxDynamicHeight": 9000,
"minDynamicHeight": 4,
"minWidth": 450,
"mobileBottomRow": 6,
"mobileLeftColumn": 10,
"mobileRightColumn": 26,
"mobileTopRow": 2,
"needsErrorInfo": false,
"originalBottomRow": 4,
"originalTopRow": 0,
"overflow": "NONE",
"parentColumnSpace": 3.841796875,
"parentId": "ws1canvas01",
"parentRowSpace": 10,
"renderMode": "CANVAS",
"responsiveBehavior": "fill",
"rightColumn": 64,
"shouldTruncate": false,
"text": "Sales",
"textAlign": "LEFT",
"textColor": "#231F20",
"topRow": 0,
"truncateButtonColor": "{{appsmith.theme.colors.primaryColor}}",
"type": "TEXT_WIDGET",
"version": 1,
"widgetId": "ws1txt1sal",
"widgetName": "Text1"
}

View File

@@ -0,0 +1,46 @@
{
"animateLoading": true,
"borderRadius": "{{appsmith.theme.borderRadius.appBorderRadius}}",
"bottomRow": 22,
"dynamicBindingPathList": [
{"key": "truncateButtonColor"},
{"key": "fontFamily"},
{"key": "borderRadius"}
],
"dynamicHeight": "AUTO_HEIGHT",
"dynamicTriggerPathList": [],
"fontFamily": "{{appsmith.theme.fontFamily.appFont}}",
"fontSize": "1rem",
"fontStyle": "BOLD",
"isLoading": false,
"isVisible": true,
"key": "ws1t2engky",
"leftColumn": 0,
"maxDynamicHeight": 9000,
"minDynamicHeight": 4,
"minWidth": 450,
"mobileBottomRow": 6,
"mobileLeftColumn": 10,
"mobileRightColumn": 26,
"mobileTopRow": 2,
"needsErrorInfo": false,
"originalBottomRow": 22,
"originalTopRow": 18,
"overflow": "NONE",
"parentColumnSpace": 3.841796875,
"parentId": "ws1canvas01",
"parentRowSpace": 10,
"renderMode": "CANVAS",
"responsiveBehavior": "fill",
"rightColumn": 64,
"shouldTruncate": false,
"text": "Engineering",
"textAlign": "LEFT",
"textColor": "#231F20",
"topRow": 18,
"truncateButtonColor": "{{appsmith.theme.colors.primaryColor}}",
"type": "TEXT_WIDGET",
"version": 1,
"widgetId": "ws1txt2eng",
"widgetName": "Text2"
}

View File

@@ -0,0 +1,46 @@
{
"animateLoading": true,
"borderRadius": "{{appsmith.theme.borderRadius.appBorderRadius}}",
"bottomRow": 40,
"dynamicBindingPathList": [
{"key": "truncateButtonColor"},
{"key": "fontFamily"},
{"key": "borderRadius"}
],
"dynamicHeight": "AUTO_HEIGHT",
"dynamicTriggerPathList": [],
"fontFamily": "{{appsmith.theme.fontFamily.appFont}}",
"fontSize": "1rem",
"fontStyle": "BOLD",
"isLoading": false,
"isVisible": true,
"key": "ws1t3opsky",
"leftColumn": 0,
"maxDynamicHeight": 9000,
"minDynamicHeight": 4,
"minWidth": 450,
"mobileBottomRow": 6,
"mobileLeftColumn": 10,
"mobileRightColumn": 26,
"mobileTopRow": 2,
"needsErrorInfo": false,
"originalBottomRow": 40,
"originalTopRow": 36,
"overflow": "NONE",
"parentColumnSpace": 3.841796875,
"parentId": "ws1canvas01",
"parentRowSpace": 10,
"renderMode": "CANVAS",
"responsiveBehavior": "fill",
"rightColumn": 64,
"shouldTruncate": false,
"text": "Operations",
"textAlign": "LEFT",
"textColor": "#231F20",
"topRow": 36,
"truncateButtonColor": "{{appsmith.theme.colors.primaryColor}}",
"type": "TEXT_WIDGET",
"version": 1,
"widgetId": "ws1txt3ops",
"widgetName": "Text3"
}

View File

@@ -0,0 +1,52 @@
{
"animateLoading": true,
"borderRadius": "{{appsmith.theme.borderRadius.appBorderRadius}}",
"bottomRow": 5,
"dynamicBindingPathList": [
{
"key": "truncateButtonColor"
},
{
"key": "fontFamily"
},
{
"key": "borderRadius"
}
],
"dynamicHeight": "AUTO_HEIGHT",
"dynamicTriggerPathList": [],
"fontFamily": "{{appsmith.theme.fontFamily.appFont}}",
"fontSize": "1.875rem",
"fontStyle": "BOLD",
"isLoading": false,
"isVisible": true,
"key": "ws1headkey",
"leftColumn": 9,
"maxDynamicHeight": 9000,
"minDynamicHeight": 4,
"minWidth": 450,
"mobileBottomRow": 5,
"mobileLeftColumn": 1,
"mobileRightColumn": 17,
"mobileTopRow": 1,
"needsErrorInfo": false,
"originalBottomRow": 5,
"originalTopRow": 0,
"overflow": "NONE",
"parentColumnSpace": 25.109375,
"parentId": "0",
"parentRowSpace": 10,
"renderMode": "CANVAS",
"responsiveBehavior": "fill",
"rightColumn": 64,
"shouldTruncate": false,
"text": "Operations - WO Shortages",
"textAlign": "LEFT",
"textColor": "#231F20",
"topRow": 0,
"truncateButtonColor": "{{appsmith.theme.colors.primaryColor}}",
"type": "TEXT_WIDGET",
"version": 1,
"widgetId": "ws1heading",
"widgetName": "Heading"
}

View File

@@ -0,0 +1,150 @@
{
"accentColor": "{{appsmith.theme.colors.primaryColor}}",
"animateLoading": true,
"backgroundColor": "#FFFFFF",
"borderColor": "#E0DEDE",
"borderRadius": "0.375rem",
"borderWidth": 1,
"bottomRow": 122,
"boxShadow": "{{appsmith.theme.boxShadow.appBoxShadow}}",
"children": [
{
"borderRadius": "{{appsmith.theme.borderRadius.appBorderRadius}}",
"bottomRow": 1130,
"boxShadow": "{{appsmith.theme.boxShadow.appBoxShadow}}",
"canExtend": true,
"detachFromLayout": true,
"dynamicBindingPathList": [
{"key": "borderRadius"},
{"key": "boxShadow"}
],
"dynamicHeight": "AUTO_HEIGHT",
"dynamicTriggerPathList": [],
"flexLayers": [],
"isDisabled": false,
"isLoading": false,
"isVisible": true,
"key": "ws1cnvt1ky",
"leftColumn": 0,
"maxDynamicHeight": 9000,
"minDynamicHeight": 4,
"minHeight": 150,
"minWidth": 450,
"mobileBottomRow": 150,
"mobileLeftColumn": 0,
"mobileRightColumn": 602.625,
"mobileTopRow": 0,
"needsErrorInfo": false,
"parentColumnSpace": 1,
"parentId": "ws1tabs001",
"parentRowSpace": 1,
"renderMode": "CANVAS",
"responsiveBehavior": "fill",
"rightColumn": 602.625,
"shouldScrollContents": false,
"tabId": "tab1",
"tabName": "WO Shortages",
"topRow": 0,
"type": "CANVAS_WIDGET",
"version": 1,
"widgetId": "ws1cnvstab1",
"widgetName": "Canvas2"
},
{
"borderRadius": "{{appsmith.theme.borderRadius.appBorderRadius}}",
"bottomRow": 1130,
"boxShadow": "{{appsmith.theme.boxShadow.appBoxShadow}}",
"canExtend": true,
"detachFromLayout": true,
"dynamicBindingPathList": [
{"key": "borderRadius"},
{"key": "boxShadow"}
],
"dynamicHeight": "AUTO_HEIGHT",
"dynamicTriggerPathList": [],
"flexLayers": [],
"isDisabled": false,
"isLoading": false,
"isVisible": true,
"key": "ws1cnvt2ky",
"leftColumn": 0,
"maxDynamicHeight": 9000,
"minDynamicHeight": 4,
"minHeight": 150,
"minWidth": 450,
"mobileBottomRow": 150,
"mobileLeftColumn": 0,
"mobileRightColumn": 602.625,
"mobileTopRow": 0,
"needsErrorInfo": false,
"parentColumnSpace": 1,
"parentId": "ws1tabs001",
"parentRowSpace": 1,
"renderMode": "CANVAS",
"responsiveBehavior": "fill",
"rightColumn": 602.625,
"shouldScrollContents": false,
"tabId": "tab2",
"tabName": "Critical Parts",
"topRow": 0,
"type": "CANVAS_WIDGET",
"version": 1,
"widgetId": "ws1cnvstab2",
"widgetName": "Canvas3"
}
],
"defaultTab": "WO Shortages",
"dynamicBindingPathList": [
{"key": "accentColor"},
{"key": "boxShadow"}
],
"dynamicHeight": "AUTO_HEIGHT",
"dynamicTriggerPathList": [],
"flexVerticalAlignment": "stretch",
"isCanvas": true,
"isLoading": false,
"isVisible": true,
"key": "ws1tabskey",
"leftColumn": 9,
"maxDynamicHeight": 9000,
"minDynamicHeight": 15,
"minWidth": 450,
"mobileBottomRow": 76,
"mobileLeftColumn": 2,
"mobileRightColumn": 26,
"mobileTopRow": 61,
"needsErrorInfo": false,
"originalBottomRow": 122,
"originalTopRow": 5,
"parentColumnSpace": 25.109375,
"parentId": "0",
"parentRowSpace": 10,
"renderMode": "CANVAS",
"responsiveBehavior": "fill",
"rightColumn": 64,
"shouldScrollContents": true,
"shouldShowTabs": true,
"tabsObj": {
"tab1": {
"id": "tab1",
"index": 0,
"isVisible": true,
"label": "WO Shortages",
"positioning": "vertical",
"widgetId": "ws1cnvstab1"
},
"tab2": {
"id": "tab2",
"index": 1,
"isVisible": true,
"label": "Critical Parts",
"positioning": "vertical",
"widgetId": "ws1cnvstab2"
}
},
"topRow": 5,
"type": "TABS_WIDGET",
"version": 3,
"widgetId": "ws1tabs001",
"widgetName": "Tabs1"
}

View File

@@ -0,0 +1,251 @@
{
"accentColor": "{{appsmith.theme.colors.primaryColor}}",
"animateLoading": true,
"borderColor": "#E0DEDE",
"borderRadius": "0.375rem",
"borderWidth": "1",
"bottomRow": 113,
"boxShadow": "{{appsmith.theme.boxShadow.appBoxShadow}}",
"canFreezeColumn": true,
"childStylesheet": {
"button": {
"borderRadius": "{{appsmith.theme.borderRadius.appBorderRadius}}",
"boxShadow": "none",
"buttonColor": "{{appsmith.theme.colors.primaryColor}}"
},
"editActions": {
"discardBorderRadius": "{{appsmith.theme.borderRadius.appBorderRadius}}",
"discardButtonColor": "{{appsmith.theme.colors.primaryColor}}",
"saveBorderRadius": "{{appsmith.theme.borderRadius.appBorderRadius}}",
"saveButtonColor": "{{appsmith.theme.colors.primaryColor}}"
},
"iconButton": {
"borderRadius": "{{appsmith.theme.borderRadius.appBorderRadius}}",
"boxShadow": "none",
"buttonColor": "{{appsmith.theme.colors.primaryColor}}"
},
"menuButton": {
"borderRadius": "{{appsmith.theme.borderRadius.appBorderRadius}}",
"boxShadow": "none",
"menuColor": "{{appsmith.theme.colors.primaryColor}}"
}
},
"columnOrder": [
"part_number",
"part_description",
"shortage_type",
"wos_blocked",
"total_qty_needed",
"qty_available"
],
"columnWidthMap": {
"part_number": 100,
"wos_blocked": 100,
"total_qty_needed": 120,
"qty_available": 100,
"shortage_type": 80
},
"compactMode": "SHORT",
"defaultPageSize": 0,
"defaultSelectedRowIndex": 0,
"defaultSelectedRowIndices": [0],
"delimiter": ",",
"dynamicBindingPathList": [
{"key": "accentColor"},
{"key": "boxShadow"},
{"key": "tableData"},
{"key": "primaryColumns.part_number.computedValue"},
{"key": "primaryColumns.part_description.computedValue"},
{"key": "primaryColumns.shortage_type.computedValue"},
{"key": "primaryColumns.wos_blocked.computedValue"},
{"key": "primaryColumns.total_qty_needed.computedValue"},
{"key": "primaryColumns.qty_available.computedValue"}
],
"dynamicPropertyPathList": [
{"key": "textSize"}
],
"dynamicTriggerPathList": [],
"enableClientSideSearch": true,
"horizontalAlignment": "LEFT",
"inlineEditingSaveOption": "ROW_LEVEL",
"isLoading": false,
"isSortable": true,
"isVisible": true,
"isVisibleDownload": true,
"isVisibleFilters": true,
"isVisiblePagination": true,
"isVisibleSearch": true,
"key": "ws1tblptkey",
"label": "Data",
"leftColumn": 0,
"minWidth": 450,
"needsErrorInfo": false,
"parentColumnSpace": 11.265625,
"parentId": "ws1cnvstab2",
"parentRowSpace": 10,
"primaryColumns": {
"part_number": {
"alias": "part_number",
"allowCellWrapping": false,
"allowSameOptionsInNewRow": true,
"columnType": "text",
"computedValue": "{{(() => { const tableData = ws1tblparts.processedTableData || []; return tableData.length > 0 ? tableData.map((currentRow, currentIndex) => (currentRow[\"part_number\"])) : part_number })()}}",
"enableFilter": true,
"enableSort": true,
"horizontalAlignment": "LEFT",
"id": "part_number",
"index": 0,
"isCellEditable": false,
"isCellVisible": true,
"isDerived": false,
"isDisabled": false,
"isEditable": false,
"isVisible": true,
"label": "part_number",
"originalId": "part_number",
"sticky": "",
"textSize": "0.775rem",
"validation": {},
"verticalAlignment": "CENTER",
"width": 150
},
"part_description": {
"alias": "part_description",
"allowCellWrapping": false,
"allowSameOptionsInNewRow": true,
"columnType": "text",
"computedValue": "{{(() => { const tableData = ws1tblparts.processedTableData || []; return tableData.length > 0 ? tableData.map((currentRow, currentIndex) => (currentRow[\"part_description\"])) : part_description })()}}",
"enableFilter": true,
"enableSort": true,
"horizontalAlignment": "LEFT",
"id": "part_description",
"index": 1,
"isCellEditable": false,
"isCellVisible": true,
"isDerived": false,
"isDisabled": false,
"isEditable": false,
"isVisible": true,
"label": "part_description",
"originalId": "part_description",
"sticky": "",
"textSize": "0.775rem",
"validation": {},
"verticalAlignment": "CENTER",
"width": 150
},
"shortage_type": {
"alias": "shortage_type",
"allowCellWrapping": false,
"allowSameOptionsInNewRow": true,
"columnType": "text",
"computedValue": "{{(() => { const tableData = ws1tblparts.processedTableData || []; return tableData.length > 0 ? tableData.map((currentRow, currentIndex) => (currentRow[\"shortage_type\"])) : shortage_type })()}}",
"enableFilter": true,
"enableSort": true,
"horizontalAlignment": "LEFT",
"id": "shortage_type",
"index": 2,
"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
},
"wos_blocked": {
"alias": "wos_blocked",
"allowCellWrapping": false,
"allowSameOptionsInNewRow": true,
"columnType": "number",
"computedValue": "{{(() => { const tableData = ws1tblparts.processedTableData || []; return tableData.length > 0 ? tableData.map((currentRow, currentIndex) => (currentRow[\"wos_blocked\"])) : wos_blocked })()}}",
"enableFilter": true,
"enableSort": true,
"horizontalAlignment": "LEFT",
"id": "wos_blocked",
"index": 3,
"isCellEditable": false,
"isCellVisible": true,
"isDerived": false,
"isDisabled": false,
"isEditable": false,
"isVisible": true,
"label": "wos_blocked",
"originalId": "wos_blocked",
"sticky": "",
"textSize": "0.775rem",
"validation": {},
"verticalAlignment": "CENTER",
"width": 150
},
"total_qty_needed": {
"alias": "total_qty_needed",
"allowCellWrapping": false,
"allowSameOptionsInNewRow": true,
"columnType": "number",
"computedValue": "{{(() => { const tableData = ws1tblparts.processedTableData || []; return tableData.length > 0 ? tableData.map((currentRow, currentIndex) => (currentRow[\"total_qty_needed\"])) : total_qty_needed })()}}",
"enableFilter": true,
"enableSort": true,
"horizontalAlignment": "LEFT",
"id": "total_qty_needed",
"index": 4,
"isCellEditable": false,
"isCellVisible": true,
"isDerived": false,
"isDisabled": false,
"isEditable": false,
"isVisible": true,
"label": "total_qty_needed",
"originalId": "total_qty_needed",
"sticky": "",
"textSize": "0.775rem",
"validation": {},
"verticalAlignment": "CENTER",
"width": 150
},
"qty_available": {
"alias": "qty_available",
"allowCellWrapping": false,
"allowSameOptionsInNewRow": true,
"columnType": "number",
"computedValue": "{{(() => { const tableData = ws1tblparts.processedTableData || []; return tableData.length > 0 ? tableData.map((currentRow, currentIndex) => (currentRow[\"qty_available\"])) : qty_available })()}}",
"enableFilter": true,
"enableSort": true,
"horizontalAlignment": "LEFT",
"id": "qty_available",
"index": 5,
"isCellEditable": false,
"isCellVisible": true,
"isDerived": false,
"isDisabled": false,
"isEditable": false,
"isVisible": true,
"label": "qty_available",
"originalId": "qty_available",
"sticky": "",
"textSize": "0.775rem",
"validation": {},
"verticalAlignment": "CENTER",
"width": 150
}
},
"renderMode": "CANVAS",
"responsiveBehavior": "fill",
"rightColumn": 62,
"searchKey": "",
"tableData": "{{critical_parts.data}}",
"textSize": "0.775rem",
"topRow": 0,
"totalRecordsCount": 0,
"type": "TABLE_WIDGET_V2",
"version": 2,
"verticalAlignment": "CENTER",
"widgetId": "ws1tblparts",
"widgetName": "ws1tblparts"
}

View File

@@ -0,0 +1,474 @@
{
"accentColor": "{{appsmith.theme.colors.primaryColor}}",
"animateLoading": true,
"borderColor": "#E0DEDE",
"borderRadius": "0.375rem",
"borderWidth": "1",
"bottomRow": 113,
"boxShadow": "{{appsmith.theme.boxShadow.appBoxShadow}}",
"canFreezeColumn": true,
"childStylesheet": {
"button": {
"borderRadius": "{{appsmith.theme.borderRadius.appBorderRadius}}",
"boxShadow": "none",
"buttonColor": "{{appsmith.theme.colors.primaryColor}}"
},
"editActions": {
"discardBorderRadius": "{{appsmith.theme.borderRadius.appBorderRadius}}",
"discardButtonColor": "{{appsmith.theme.colors.primaryColor}}",
"saveBorderRadius": "{{appsmith.theme.borderRadius.appBorderRadius}}",
"saveButtonColor": "{{appsmith.theme.colors.primaryColor}}"
},
"iconButton": {
"borderRadius": "{{appsmith.theme.borderRadius.appBorderRadius}}",
"boxShadow": "none",
"buttonColor": "{{appsmith.theme.colors.primaryColor}}"
},
"menuButton": {
"borderRadius": "{{appsmith.theme.borderRadius.appBorderRadius}}",
"boxShadow": "none",
"menuColor": "{{appsmith.theme.colors.primaryColor}}"
}
},
"columnOrder": [
"due_group",
"wo_num",
"wo_status",
"wo_duedate",
"customer_name",
"wo_item",
"wo_descrip",
"shortage_type",
"sub_wo_num",
"short_part",
"short_part_desc",
"qty_required",
"qty_issued",
"qty_onhand"
],
"columnWidthMap": {
"due_group": 100,
"wo_num": 100,
"wo_status": 70,
"wo_duedate": 100,
"customer_name": 200,
"wo_item": 80,
"shortage_type": 65,
"sub_wo_num": 110,
"short_part": 80,
"qty_required": 80,
"qty_issued": 80,
"qty_onhand": 80
},
"compactMode": "SHORT",
"defaultPageSize": 0,
"defaultSelectedRowIndex": 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.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"}
],
"dynamicPropertyPathList": [
{"key": "textSize"}
],
"dynamicTriggerPathList": [],
"enableClientSideSearch": true,
"horizontalAlignment": "LEFT",
"inlineEditingSaveOption": "ROW_LEVEL",
"isLoading": false,
"isSortable": true,
"isVisible": true,
"isVisibleDownload": true,
"isVisibleFilters": true,
"isVisiblePagination": true,
"isVisibleSearch": true,
"key": "ws1tblshkey",
"label": "Data",
"leftColumn": 0,
"minWidth": 450,
"needsErrorInfo": false,
"parentColumnSpace": 11.265625,
"parentId": "ws1cnvstab1",
"parentRowSpace": 10,
"primaryColumns": {
"due_group": {
"alias": "due_group",
"allowCellWrapping": false,
"allowSameOptionsInNewRow": true,
"columnType": "text",
"computedValue": "{{(() => { const tableData = ws1tblshort.processedTableData || []; return tableData.length > 0 ? tableData.map((currentRow, currentIndex) => (currentRow[\"due_group\"])) : due_group })()}}",
"enableFilter": true,
"enableSort": true,
"horizontalAlignment": "LEFT",
"id": "due_group",
"index": 0,
"isCellEditable": false,
"isCellVisible": true,
"isDerived": false,
"isDisabled": false,
"isEditable": false,
"isVisible": true,
"label": "due_group",
"originalId": "due_group",
"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": {},
"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
},
"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,
"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_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": "",
"textSize": "0.775rem",
"validation": {},
"verticalAlignment": "CENTER",
"width": 150
},
"short_part": {
"alias": "short_part",
"allowCellWrapping": false,
"allowSameOptionsInNewRow": true,
"columnType": "text",
"computedValue": "{{(() => { const tableData = ws1tblshort.processedTableData || []; return tableData.length > 0 ? tableData.map((currentRow, currentIndex) => (currentRow[\"short_part\"])) : short_part })()}}",
"enableFilter": true,
"enableSort": true,
"horizontalAlignment": "LEFT",
"id": "short_part",
"index": 8,
"isCellEditable": false,
"isCellVisible": true,
"isDerived": false,
"isDisabled": false,
"isEditable": false,
"isVisible": true,
"label": "short_part",
"originalId": "short_part",
"sticky": "",
"textSize": "0.775rem",
"validation": {},
"verticalAlignment": "CENTER",
"width": 150
},
"short_part_desc": {
"alias": "short_part_desc",
"allowCellWrapping": false,
"allowSameOptionsInNewRow": true,
"columnType": "text",
"computedValue": "{{(() => { const tableData = ws1tblshort.processedTableData || []; return tableData.length > 0 ? tableData.map((currentRow, currentIndex) => (currentRow[\"short_part_desc\"])) : short_part_desc })()}}",
"enableFilter": true,
"enableSort": true,
"horizontalAlignment": "LEFT",
"id": "short_part_desc",
"index": 9,
"isCellEditable": false,
"isCellVisible": true,
"isDerived": false,
"isDisabled": false,
"isEditable": false,
"isVisible": true,
"label": "short_part_desc",
"originalId": "short_part_desc",
"sticky": "",
"textSize": "0.775rem",
"validation": {},
"verticalAlignment": "CENTER",
"width": 150
},
"qty_required": {
"alias": "qty_required",
"allowCellWrapping": false,
"allowSameOptionsInNewRow": true,
"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": "qty_required",
"index": 10,
"isCellEditable": false,
"isCellVisible": true,
"isDerived": false,
"isDisabled": false,
"isEditable": false,
"isVisible": true,
"label": "qty_required",
"originalId": "qty_required",
"sticky": "",
"textSize": "0.775rem",
"validation": {},
"verticalAlignment": "CENTER",
"width": 150
},
"qty_issued": {
"alias": "qty_issued",
"allowCellWrapping": false,
"allowSameOptionsInNewRow": true,
"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": "qty_issued",
"index": 11,
"isCellEditable": false,
"isCellVisible": true,
"isDerived": false,
"isDisabled": false,
"isEditable": false,
"isVisible": true,
"label": "qty_issued",
"originalId": "qty_issued",
"sticky": "",
"textSize": "0.775rem",
"validation": {},
"verticalAlignment": "CENTER",
"width": 150
},
"qty_onhand": {
"alias": "qty_onhand",
"allowCellWrapping": false,
"allowSameOptionsInNewRow": true,
"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": "qty_onhand",
"index": 12,
"isCellEditable": false,
"isCellVisible": true,
"isDerived": false,
"isDisabled": false,
"isEditable": false,
"isVisible": true,
"label": "qty_onhand",
"originalId": "qty_onhand",
"sticky": "",
"textSize": "0.775rem",
"validation": {},
"verticalAlignment": "CENTER",
"width": 150
}
},
"renderMode": "CANVAS",
"responsiveBehavior": "fill",
"rightColumn": 62,
"searchKey": "",
"tableData": "{{wo_shortages.data}}",
"textSize": "0.775rem",
"topRow": 0,
"totalRecordsCount": 0,
"type": "TABLE_WIDGET_V2",
"version": 2,
"verticalAlignment": "CENTER",
"widgetId": "ws1tblshort",
"widgetName": "ws1tblshort"
}

View File

@@ -8,9 +8,7 @@
"disabledWhenInvalid": false,
"dynamicBindingPathList": [],
"dynamicTriggerPathList": [
{
"key": "onClick"
}
{"key": "onClick"}
],
"isDefaultClickDisabled": true,
"isDisabled": false,

View File

@@ -8,9 +8,7 @@
"disabledWhenInvalid": false,
"dynamicBindingPathList": [],
"dynamicTriggerPathList": [
{
"key": "onClick"
}
{"key": "onClick"}
],
"isDefaultClickDisabled": true,
"isDisabled": false,

View File

@@ -8,9 +8,7 @@
"disabledWhenInvalid": false,
"dynamicBindingPathList": [],
"dynamicTriggerPathList": [
{
"key": "onClick"
}
{"key": "onClick"}
],
"isDefaultClickDisabled": true,
"isDisabled": false,

View File

@@ -2,7 +2,6 @@
"animateLoading": true,
"borderRadius": "0.375rem",
"bottomRow": 52,
"boxShadow": "none",
"buttonColor": "#ffffff",
"buttonVariant": "PRIMARY",
"disabledWhenInvalid": false,
@@ -43,5 +42,6 @@
"type": "BUTTON_WIDGET",
"version": 1,
"widgetId": "pa1btn3ui",
"widgetName": "Button3Copy2"
"widgetName": "Button3Copy2",
"boxShadow": "none"
}

View File

@@ -0,0 +1,45 @@
{
"animateLoading": true,
"borderRadius": "0.375rem",
"bottomRow": 56,
"boxShadow": "none",
"buttonColor": "#ffffff",
"buttonVariant": "PRIMARY",
"disabledWhenInvalid": false,
"dynamicBindingPathList": [],
"dynamicTriggerPathList": [
{
"key": "onClick"
}
],
"isDefaultClickDisabled": true,
"isDisabled": false,
"isLoading": false,
"isVisible": true,
"key": "pa1btnwosk",
"leftColumn": 0,
"minWidth": 120,
"mobileBottomRow": 56,
"mobileLeftColumn": 0,
"mobileRightColumn": 16,
"mobileTopRow": 52,
"needsErrorInfo": false,
"onClick": "{{navigateTo('Operations - WO Shortages', {}, 'SAME_WINDOW');}}",
"originalBottomRow": 56,
"originalTopRow": 52,
"parentColumnSpace": 3.841796875,
"parentId": "pa1canvas01",
"parentRowSpace": 10,
"placement": "START",
"recaptchaType": "V3",
"renderMode": "CANVAS",
"resetFormOnClick": false,
"responsiveBehavior": "hug",
"rightColumn": 64,
"text": "WO Shortages",
"topRow": 52,
"type": "BUTTON_WIDGET",
"version": 1,
"widgetId": "pa1btnwos",
"widgetName": "Button3Copy3"
}

View File

@@ -3,15 +3,9 @@
"borderRadius": "{{appsmith.theme.borderRadius.appBorderRadius}}",
"bottomRow": 40,
"dynamicBindingPathList": [
{
"key": "truncateButtonColor"
},
{
"key": "fontFamily"
},
{
"key": "borderRadius"
}
{"key": "truncateButtonColor"},
{"key": "fontFamily"},
{"key": "borderRadius"}
],
"dynamicHeight": "AUTO_HEIGHT",
"dynamicTriggerPathList": [],

View File

@@ -160,8 +160,8 @@
"isDerived": false,
"isDisabled": false,
"isDiscardVisible": true,
"isEditable": false,
"isSaveVisible": true,
"isEditable": false,
"isVisible": true,
"label": "matl",
"notation": "standard",
@@ -194,8 +194,8 @@
"isDerived": false,
"isDisabled": false,
"isDiscardVisible": true,
"isEditable": false,
"isSaveVisible": true,
"isEditable": false,
"isVisible": true,
"label": "matl_classocde",
"notation": "standard",
@@ -228,8 +228,8 @@
"isDerived": false,
"isDisabled": false,
"isDiscardVisible": true,
"isEditable": false,
"isSaveVisible": true,
"isEditable": false,
"isVisible": true,
"label": "matl_desc",
"notation": "standard",
@@ -262,8 +262,8 @@
"isDerived": false,
"isDisabled": false,
"isDiscardVisible": true,
"isEditable": false,
"isSaveVisible": true,
"isEditable": false,
"isVisible": true,
"label": "matl_spec",
"notation": "standard",
@@ -276,142 +276,6 @@
"verticalAlignment": "CENTER",
"width": 150
},
"po_closed": {
"alias": "po_closed",
"allowCellWrapping": false,
"allowSameOptionsInNewRow": true,
"cellBackground": "",
"columnType": "number",
"computedValue": "{{(() => { const tableData = TableALx.processedTableData || []; return tableData.length > 0 ? tableData.map((currentRow, currentIndex) => (currentRow[\"po_closed\"])) : po_closed })()}}",
"currencyCode": "USD",
"decimals": 0,
"enableFilter": true,
"enableSort": true,
"fontStyle": "",
"horizontalAlignment": "LEFT",
"id": "po_closed",
"index": 7,
"isCellEditable": false,
"isCellVisible": true,
"isDerived": false,
"isDisabled": false,
"isDiscardVisible": true,
"isEditable": false,
"isSaveVisible": true,
"isVisible": true,
"label": "po_closed",
"notation": "standard",
"originalId": "po_closed",
"sticky": "",
"textColor": "",
"textSize": "0.775rem",
"thousandSeparator": true,
"validation": {},
"verticalAlignment": "CENTER",
"width": 150
},
"po_opened": {
"alias": "po_opened",
"allowCellWrapping": false,
"allowSameOptionsInNewRow": true,
"cellBackground": "",
"columnType": "number",
"computedValue": "{{(() => { const tableData = TableALx.processedTableData || []; return tableData.length > 0 ? tableData.map((currentRow, currentIndex) => (currentRow[\"po_opened\"])) : po_opened })()}}",
"currencyCode": "USD",
"decimals": 0,
"enableFilter": true,
"enableSort": true,
"fontStyle": "",
"horizontalAlignment": "LEFT",
"id": "po_opened",
"index": 6,
"isCellEditable": false,
"isCellVisible": true,
"isDerived": false,
"isDisabled": false,
"isDiscardVisible": true,
"isEditable": false,
"isSaveVisible": true,
"isVisible": true,
"label": "po_opened",
"notation": "standard",
"originalId": "po_opened",
"sticky": "",
"textColor": "",
"textSize": "0.775rem",
"thousandSeparator": true,
"validation": {},
"verticalAlignment": "CENTER",
"width": 150
},
"po_released": {
"alias": "po_released",
"allowCellWrapping": false,
"allowSameOptionsInNewRow": true,
"cellBackground": "",
"columnType": "number",
"computedValue": "{{(() => { const tableData = TableALx.processedTableData || []; return tableData.length > 0 ? tableData.map((currentRow, currentIndex) => (currentRow[\"po_released\"])) : po_released })()}}",
"currencyCode": "USD",
"decimals": 0,
"enableFilter": true,
"enableSort": true,
"fontStyle": "",
"horizontalAlignment": "LEFT",
"id": "po_released",
"index": 5,
"isCellEditable": false,
"isCellVisible": true,
"isDerived": false,
"isDisabled": false,
"isDiscardVisible": true,
"isEditable": false,
"isSaveVisible": true,
"isVisible": true,
"label": "po_released",
"notation": "standard",
"originalId": "po_released",
"sticky": "",
"textColor": "",
"textSize": "0.775rem",
"thousandSeparator": true,
"validation": {},
"verticalAlignment": "CENTER",
"width": 150
},
"poitem_due": {
"alias": "poitem_due",
"allowCellWrapping": false,
"allowSameOptionsInNewRow": true,
"cellBackground": "",
"columnType": "date",
"computedValue": "{{(() => { const tableData = TableALx.processedTableData || []; return tableData.length > 0 ? tableData.map((currentRow, currentIndex) => (currentRow[\"poitem_due\"])) : poitem_due })()}}",
"currencyCode": "USD",
"decimals": 0,
"enableFilter": true,
"enableSort": true,
"fontStyle": "",
"horizontalAlignment": "LEFT",
"id": "poitem_due",
"index": 8,
"isCellEditable": false,
"isCellVisible": true,
"isDerived": false,
"isDisabled": false,
"isDiscardVisible": true,
"isEditable": false,
"isSaveVisible": true,
"isVisible": true,
"label": "poitem_due",
"notation": "standard",
"originalId": "poitem_due",
"sticky": "",
"textColor": "",
"textSize": "0.775rem",
"thousandSeparator": true,
"validation": {},
"verticalAlignment": "CENTER",
"width": 150
},
"qoh": {
"alias": "qoh",
"allowCellWrapping": false,
@@ -432,8 +296,8 @@
"isDerived": false,
"isDisabled": false,
"isDiscardVisible": true,
"isEditable": false,
"isSaveVisible": true,
"isEditable": false,
"isVisible": true,
"label": "qoh",
"notation": "standard",
@@ -446,32 +310,32 @@
"verticalAlignment": "CENTER",
"width": 150
},
"uom": {
"alias": "uom",
"po_released": {
"alias": "po_released",
"allowCellWrapping": false,
"allowSameOptionsInNewRow": true,
"cellBackground": "",
"columnType": "text",
"computedValue": "{{(() => { const tableData = TableALx.processedTableData || []; return tableData.length > 0 ? tableData.map((currentRow, currentIndex) => (currentRow[\"uom\"])) : uom })()}}",
"columnType": "number",
"computedValue": "{{(() => { const tableData = TableALx.processedTableData || []; return tableData.length > 0 ? tableData.map((currentRow, currentIndex) => (currentRow[\"po_released\"])) : po_released })()}}",
"currencyCode": "USD",
"decimals": 0,
"enableFilter": true,
"enableSort": true,
"fontStyle": "",
"horizontalAlignment": "LEFT",
"id": "uom",
"index": 12,
"id": "po_released",
"index": 5,
"isCellEditable": false,
"isCellVisible": true,
"isDerived": false,
"isDisabled": false,
"isDiscardVisible": true,
"isEditable": false,
"isSaveVisible": true,
"isEditable": false,
"isVisible": true,
"label": "uom",
"label": "po_released",
"notation": "standard",
"originalId": "uom",
"originalId": "po_released",
"sticky": "",
"textColor": "",
"textSize": "0.775rem",
@@ -480,32 +344,100 @@
"verticalAlignment": "CENTER",
"width": 150
},
"wo_demanding": {
"alias": "wo_demanding",
"po_opened": {
"alias": "po_opened",
"allowCellWrapping": false,
"allowSameOptionsInNewRow": true,
"cellBackground": "",
"columnType": "text",
"computedValue": "{{(() => { const tableData = TableALx.processedTableData || []; return tableData.length > 0 ? tableData.map((currentRow, currentIndex) => (currentRow[\"wo_demanding\"])) : wo_demanding })()}}",
"columnType": "number",
"computedValue": "{{(() => { const tableData = TableALx.processedTableData || []; return tableData.length > 0 ? tableData.map((currentRow, currentIndex) => (currentRow[\"po_opened\"])) : po_opened })()}}",
"currencyCode": "USD",
"decimals": 0,
"enableFilter": true,
"enableSort": true,
"fontStyle": "",
"horizontalAlignment": "LEFT",
"id": "wo_demanding",
"index": 10,
"id": "po_opened",
"index": 6,
"isCellEditable": false,
"isCellVisible": true,
"isDerived": false,
"isDisabled": false,
"isDiscardVisible": true,
"isEditable": false,
"isSaveVisible": true,
"isEditable": false,
"isVisible": true,
"label": "wo_demanding",
"label": "po_opened",
"notation": "standard",
"originalId": "wo_demanding",
"originalId": "po_opened",
"sticky": "",
"textColor": "",
"textSize": "0.775rem",
"thousandSeparator": true,
"validation": {},
"verticalAlignment": "CENTER",
"width": 150
},
"po_closed": {
"alias": "po_closed",
"allowCellWrapping": false,
"allowSameOptionsInNewRow": true,
"cellBackground": "",
"columnType": "number",
"computedValue": "{{(() => { const tableData = TableALx.processedTableData || []; return tableData.length > 0 ? tableData.map((currentRow, currentIndex) => (currentRow[\"po_closed\"])) : po_closed })()}}",
"currencyCode": "USD",
"decimals": 0,
"enableFilter": true,
"enableSort": true,
"fontStyle": "",
"horizontalAlignment": "LEFT",
"id": "po_closed",
"index": 7,
"isCellEditable": false,
"isCellVisible": true,
"isDerived": false,
"isDisabled": false,
"isDiscardVisible": true,
"isSaveVisible": true,
"isEditable": false,
"isVisible": true,
"label": "po_closed",
"notation": "standard",
"originalId": "po_closed",
"sticky": "",
"textColor": "",
"textSize": "0.775rem",
"thousandSeparator": true,
"validation": {},
"verticalAlignment": "CENTER",
"width": 150
},
"poitem_due": {
"alias": "poitem_due",
"allowCellWrapping": false,
"allowSameOptionsInNewRow": true,
"cellBackground": "",
"columnType": "date",
"computedValue": "{{(() => { const tableData = TableALx.processedTableData || []; return tableData.length > 0 ? tableData.map((currentRow, currentIndex) => (currentRow[\"poitem_due\"])) : poitem_due })()}}",
"currencyCode": "USD",
"decimals": 0,
"enableFilter": true,
"enableSort": true,
"fontStyle": "",
"horizontalAlignment": "LEFT",
"id": "poitem_due",
"index": 8,
"isCellEditable": false,
"isCellVisible": true,
"isDerived": false,
"isDisabled": false,
"isDiscardVisible": true,
"isSaveVisible": true,
"isEditable": false,
"isVisible": true,
"label": "poitem_due",
"notation": "standard",
"originalId": "poitem_due",
"sticky": "",
"textColor": "",
"textSize": "0.775rem",
@@ -534,8 +466,8 @@
"isDerived": false,
"isDisabled": false,
"isDiscardVisible": true,
"isEditable": false,
"isSaveVisible": true,
"isEditable": false,
"isVisible": true,
"label": "wo_item",
"notation": "standard",
@@ -548,6 +480,40 @@
"verticalAlignment": "CENTER",
"width": 150
},
"wo_demanding": {
"alias": "wo_demanding",
"allowCellWrapping": false,
"allowSameOptionsInNewRow": true,
"cellBackground": "",
"columnType": "text",
"computedValue": "{{(() => { const tableData = TableALx.processedTableData || []; return tableData.length > 0 ? tableData.map((currentRow, currentIndex) => (currentRow[\"wo_demanding\"])) : wo_demanding })()}}",
"currencyCode": "USD",
"decimals": 0,
"enableFilter": true,
"enableSort": true,
"fontStyle": "",
"horizontalAlignment": "LEFT",
"id": "wo_demanding",
"index": 10,
"isCellEditable": false,
"isCellVisible": true,
"isDerived": false,
"isDisabled": false,
"isDiscardVisible": true,
"isSaveVisible": true,
"isEditable": false,
"isVisible": true,
"label": "wo_demanding",
"notation": "standard",
"originalId": "wo_demanding",
"sticky": "",
"textColor": "",
"textSize": "0.775rem",
"thousandSeparator": true,
"validation": {},
"verticalAlignment": "CENTER",
"width": 150
},
"wo_total_demand": {
"alias": "wo_total_demand",
"allowCellWrapping": false,
@@ -568,8 +534,8 @@
"isDerived": false,
"isDisabled": false,
"isDiscardVisible": true,
"isEditable": false,
"isSaveVisible": true,
"isEditable": false,
"isVisible": true,
"label": "wo_total_demand",
"notation": "standard",
@@ -581,6 +547,40 @@
"validation": {},
"verticalAlignment": "CENTER",
"width": 150
},
"uom": {
"alias": "uom",
"allowCellWrapping": false,
"allowSameOptionsInNewRow": true,
"cellBackground": "",
"columnType": "text",
"computedValue": "{{(() => { const tableData = TableALx.processedTableData || []; return tableData.length > 0 ? tableData.map((currentRow, currentIndex) => (currentRow[\"uom\"])) : uom })()}}",
"currencyCode": "USD",
"decimals": 0,
"enableFilter": true,
"enableSort": true,
"fontStyle": "",
"horizontalAlignment": "LEFT",
"id": "uom",
"index": 12,
"isCellEditable": false,
"isCellVisible": true,
"isDerived": false,
"isDisabled": false,
"isDiscardVisible": true,
"isSaveVisible": true,
"isEditable": false,
"isVisible": true,
"label": "uom",
"notation": "standard",
"originalId": "uom",
"sticky": "",
"textColor": "",
"textSize": "0.775rem",
"thousandSeparator": true,
"validation": {},
"verticalAlignment": "CENTER",
"width": 150
}
},
"renderMode": "CANVAS",

View File

@@ -160,8 +160,8 @@
"isDerived": false,
"isDisabled": false,
"isDiscardVisible": true,
"isEditable": false,
"isSaveVisible": true,
"isEditable": false,
"isVisible": true,
"label": "matl",
"notation": "standard",
@@ -194,8 +194,8 @@
"isDerived": false,
"isDisabled": false,
"isDiscardVisible": true,
"isEditable": false,
"isSaveVisible": true,
"isEditable": false,
"isVisible": true,
"label": "matl_classocde",
"notation": "standard",
@@ -228,8 +228,8 @@
"isDerived": false,
"isDisabled": false,
"isDiscardVisible": true,
"isEditable": false,
"isSaveVisible": true,
"isEditable": false,
"isVisible": true,
"label": "matl_desc",
"notation": "standard",
@@ -262,8 +262,8 @@
"isDerived": false,
"isDisabled": false,
"isDiscardVisible": true,
"isEditable": false,
"isSaveVisible": true,
"isEditable": false,
"isVisible": true,
"label": "matl_spec",
"notation": "standard",
@@ -276,142 +276,6 @@
"verticalAlignment": "CENTER",
"width": 150
},
"po_closed": {
"alias": "po_closed",
"allowCellWrapping": false,
"allowSameOptionsInNewRow": true,
"cellBackground": "",
"columnType": "number",
"computedValue": "{{(() => { const tableData = TableML.processedTableData || []; return tableData.length > 0 ? tableData.map((currentRow, currentIndex) => (currentRow[\"po_closed\"])) : po_closed })()}}",
"currencyCode": "USD",
"decimals": 0,
"enableFilter": true,
"enableSort": true,
"fontStyle": "",
"horizontalAlignment": "LEFT",
"id": "po_closed",
"index": 7,
"isCellEditable": false,
"isCellVisible": true,
"isDerived": false,
"isDisabled": false,
"isDiscardVisible": true,
"isEditable": false,
"isSaveVisible": true,
"isVisible": true,
"label": "po_closed",
"notation": "standard",
"originalId": "po_closed",
"sticky": "",
"textColor": "",
"textSize": "0.775rem",
"thousandSeparator": true,
"validation": {},
"verticalAlignment": "CENTER",
"width": 150
},
"po_opened": {
"alias": "po_opened",
"allowCellWrapping": false,
"allowSameOptionsInNewRow": true,
"cellBackground": "",
"columnType": "number",
"computedValue": "{{(() => { const tableData = TableML.processedTableData || []; return tableData.length > 0 ? tableData.map((currentRow, currentIndex) => (currentRow[\"po_opened\"])) : po_opened })()}}",
"currencyCode": "USD",
"decimals": 0,
"enableFilter": true,
"enableSort": true,
"fontStyle": "",
"horizontalAlignment": "LEFT",
"id": "po_opened",
"index": 6,
"isCellEditable": false,
"isCellVisible": true,
"isDerived": false,
"isDisabled": false,
"isDiscardVisible": true,
"isEditable": false,
"isSaveVisible": true,
"isVisible": true,
"label": "po_opened",
"notation": "standard",
"originalId": "po_opened",
"sticky": "",
"textColor": "",
"textSize": "0.775rem",
"thousandSeparator": true,
"validation": {},
"verticalAlignment": "CENTER",
"width": 150
},
"po_released": {
"alias": "po_released",
"allowCellWrapping": false,
"allowSameOptionsInNewRow": true,
"cellBackground": "",
"columnType": "number",
"computedValue": "{{(() => { const tableData = TableML.processedTableData || []; return tableData.length > 0 ? tableData.map((currentRow, currentIndex) => (currentRow[\"po_released\"])) : po_released })()}}",
"currencyCode": "USD",
"decimals": 0,
"enableFilter": true,
"enableSort": true,
"fontStyle": "",
"horizontalAlignment": "LEFT",
"id": "po_released",
"index": 5,
"isCellEditable": false,
"isCellVisible": true,
"isDerived": false,
"isDisabled": false,
"isDiscardVisible": true,
"isEditable": false,
"isSaveVisible": true,
"isVisible": true,
"label": "po_released",
"notation": "standard",
"originalId": "po_released",
"sticky": "",
"textColor": "",
"textSize": "0.775rem",
"thousandSeparator": true,
"validation": {},
"verticalAlignment": "CENTER",
"width": 150
},
"poitem_due": {
"alias": "poitem_due",
"allowCellWrapping": false,
"allowSameOptionsInNewRow": true,
"cellBackground": "",
"columnType": "date",
"computedValue": "{{(() => { const tableData = TableML.processedTableData || []; return tableData.length > 0 ? tableData.map((currentRow, currentIndex) => (currentRow[\"poitem_due\"])) : poitem_due })()}}",
"currencyCode": "USD",
"decimals": 0,
"enableFilter": true,
"enableSort": true,
"fontStyle": "",
"horizontalAlignment": "LEFT",
"id": "poitem_due",
"index": 8,
"isCellEditable": false,
"isCellVisible": true,
"isDerived": false,
"isDisabled": false,
"isDiscardVisible": true,
"isEditable": false,
"isSaveVisible": true,
"isVisible": true,
"label": "poitem_due",
"notation": "standard",
"originalId": "poitem_due",
"sticky": "",
"textColor": "",
"textSize": "0.775rem",
"thousandSeparator": true,
"validation": {},
"verticalAlignment": "CENTER",
"width": 150
},
"qoh": {
"alias": "qoh",
"allowCellWrapping": false,
@@ -432,8 +296,8 @@
"isDerived": false,
"isDisabled": false,
"isDiscardVisible": true,
"isEditable": false,
"isSaveVisible": true,
"isEditable": false,
"isVisible": true,
"label": "qoh",
"notation": "standard",
@@ -446,32 +310,32 @@
"verticalAlignment": "CENTER",
"width": 150
},
"uom": {
"alias": "uom",
"po_released": {
"alias": "po_released",
"allowCellWrapping": false,
"allowSameOptionsInNewRow": true,
"cellBackground": "",
"columnType": "text",
"computedValue": "{{(() => { const tableData = TableML.processedTableData || []; return tableData.length > 0 ? tableData.map((currentRow, currentIndex) => (currentRow[\"uom\"])) : uom })()}}",
"columnType": "number",
"computedValue": "{{(() => { const tableData = TableML.processedTableData || []; return tableData.length > 0 ? tableData.map((currentRow, currentIndex) => (currentRow[\"po_released\"])) : po_released })()}}",
"currencyCode": "USD",
"decimals": 0,
"enableFilter": true,
"enableSort": true,
"fontStyle": "",
"horizontalAlignment": "LEFT",
"id": "uom",
"index": 12,
"id": "po_released",
"index": 5,
"isCellEditable": false,
"isCellVisible": true,
"isDerived": false,
"isDisabled": false,
"isDiscardVisible": true,
"isEditable": false,
"isSaveVisible": true,
"isEditable": false,
"isVisible": true,
"label": "uom",
"label": "po_released",
"notation": "standard",
"originalId": "uom",
"originalId": "po_released",
"sticky": "",
"textColor": "",
"textSize": "0.775rem",
@@ -480,32 +344,100 @@
"verticalAlignment": "CENTER",
"width": 150
},
"wo_demanding": {
"alias": "wo_demanding",
"po_opened": {
"alias": "po_opened",
"allowCellWrapping": false,
"allowSameOptionsInNewRow": true,
"cellBackground": "",
"columnType": "text",
"computedValue": "{{(() => { const tableData = TableML.processedTableData || []; return tableData.length > 0 ? tableData.map((currentRow, currentIndex) => (currentRow[\"wo_demanding\"])) : wo_demanding })()}}",
"columnType": "number",
"computedValue": "{{(() => { const tableData = TableML.processedTableData || []; return tableData.length > 0 ? tableData.map((currentRow, currentIndex) => (currentRow[\"po_opened\"])) : po_opened })()}}",
"currencyCode": "USD",
"decimals": 0,
"enableFilter": true,
"enableSort": true,
"fontStyle": "",
"horizontalAlignment": "LEFT",
"id": "wo_demanding",
"index": 10,
"id": "po_opened",
"index": 6,
"isCellEditable": false,
"isCellVisible": true,
"isDerived": false,
"isDisabled": false,
"isDiscardVisible": true,
"isEditable": false,
"isSaveVisible": true,
"isEditable": false,
"isVisible": true,
"label": "wo_demanding",
"label": "po_opened",
"notation": "standard",
"originalId": "wo_demanding",
"originalId": "po_opened",
"sticky": "",
"textColor": "",
"textSize": "0.775rem",
"thousandSeparator": true,
"validation": {},
"verticalAlignment": "CENTER",
"width": 150
},
"po_closed": {
"alias": "po_closed",
"allowCellWrapping": false,
"allowSameOptionsInNewRow": true,
"cellBackground": "",
"columnType": "number",
"computedValue": "{{(() => { const tableData = TableML.processedTableData || []; return tableData.length > 0 ? tableData.map((currentRow, currentIndex) => (currentRow[\"po_closed\"])) : po_closed })()}}",
"currencyCode": "USD",
"decimals": 0,
"enableFilter": true,
"enableSort": true,
"fontStyle": "",
"horizontalAlignment": "LEFT",
"id": "po_closed",
"index": 7,
"isCellEditable": false,
"isCellVisible": true,
"isDerived": false,
"isDisabled": false,
"isDiscardVisible": true,
"isSaveVisible": true,
"isEditable": false,
"isVisible": true,
"label": "po_closed",
"notation": "standard",
"originalId": "po_closed",
"sticky": "",
"textColor": "",
"textSize": "0.775rem",
"thousandSeparator": true,
"validation": {},
"verticalAlignment": "CENTER",
"width": 150
},
"poitem_due": {
"alias": "poitem_due",
"allowCellWrapping": false,
"allowSameOptionsInNewRow": true,
"cellBackground": "",
"columnType": "date",
"computedValue": "{{(() => { const tableData = TableML.processedTableData || []; return tableData.length > 0 ? tableData.map((currentRow, currentIndex) => (currentRow[\"poitem_due\"])) : poitem_due })()}}",
"currencyCode": "USD",
"decimals": 0,
"enableFilter": true,
"enableSort": true,
"fontStyle": "",
"horizontalAlignment": "LEFT",
"id": "poitem_due",
"index": 8,
"isCellEditable": false,
"isCellVisible": true,
"isDerived": false,
"isDisabled": false,
"isDiscardVisible": true,
"isSaveVisible": true,
"isEditable": false,
"isVisible": true,
"label": "poitem_due",
"notation": "standard",
"originalId": "poitem_due",
"sticky": "",
"textColor": "",
"textSize": "0.775rem",
@@ -534,8 +466,8 @@
"isDerived": false,
"isDisabled": false,
"isDiscardVisible": true,
"isEditable": false,
"isSaveVisible": true,
"isEditable": false,
"isVisible": true,
"label": "wo_item",
"notation": "standard",
@@ -548,6 +480,40 @@
"verticalAlignment": "CENTER",
"width": 150
},
"wo_demanding": {
"alias": "wo_demanding",
"allowCellWrapping": false,
"allowSameOptionsInNewRow": true,
"cellBackground": "",
"columnType": "text",
"computedValue": "{{(() => { const tableData = TableML.processedTableData || []; return tableData.length > 0 ? tableData.map((currentRow, currentIndex) => (currentRow[\"wo_demanding\"])) : wo_demanding })()}}",
"currencyCode": "USD",
"decimals": 0,
"enableFilter": true,
"enableSort": true,
"fontStyle": "",
"horizontalAlignment": "LEFT",
"id": "wo_demanding",
"index": 10,
"isCellEditable": false,
"isCellVisible": true,
"isDerived": false,
"isDisabled": false,
"isDiscardVisible": true,
"isSaveVisible": true,
"isEditable": false,
"isVisible": true,
"label": "wo_demanding",
"notation": "standard",
"originalId": "wo_demanding",
"sticky": "",
"textColor": "",
"textSize": "0.775rem",
"thousandSeparator": true,
"validation": {},
"verticalAlignment": "CENTER",
"width": 150
},
"wo_total_demand": {
"alias": "wo_total_demand",
"allowCellWrapping": false,
@@ -568,8 +534,8 @@
"isDerived": false,
"isDisabled": false,
"isDiscardVisible": true,
"isEditable": false,
"isSaveVisible": true,
"isEditable": false,
"isVisible": true,
"label": "wo_total_demand",
"notation": "standard",
@@ -581,6 +547,40 @@
"validation": {},
"verticalAlignment": "CENTER",
"width": 150
},
"uom": {
"alias": "uom",
"allowCellWrapping": false,
"allowSameOptionsInNewRow": true,
"cellBackground": "",
"columnType": "text",
"computedValue": "{{(() => { const tableData = TableML.processedTableData || []; return tableData.length > 0 ? tableData.map((currentRow, currentIndex) => (currentRow[\"uom\"])) : uom })()}}",
"currencyCode": "USD",
"decimals": 0,
"enableFilter": true,
"enableSort": true,
"fontStyle": "",
"horizontalAlignment": "LEFT",
"id": "uom",
"index": 12,
"isCellEditable": false,
"isCellVisible": true,
"isDerived": false,
"isDisabled": false,
"isDiscardVisible": true,
"isSaveVisible": true,
"isEditable": false,
"isVisible": true,
"label": "uom",
"notation": "standard",
"originalId": "uom",
"sticky": "",
"textColor": "",
"textSize": "0.775rem",
"thousandSeparator": true,
"validation": {},
"verticalAlignment": "CENTER",
"width": 150
}
},
"renderMode": "CANVAS",

View File

@@ -160,8 +160,8 @@
"isDerived": false,
"isDisabled": false,
"isDiscardVisible": true,
"isEditable": false,
"isSaveVisible": true,
"isEditable": false,
"isVisible": true,
"label": "matl",
"notation": "standard",
@@ -194,8 +194,8 @@
"isDerived": false,
"isDisabled": false,
"isDiscardVisible": true,
"isEditable": false,
"isSaveVisible": true,
"isEditable": false,
"isVisible": true,
"label": "matl_classocde",
"notation": "standard",
@@ -228,8 +228,8 @@
"isDerived": false,
"isDisabled": false,
"isDiscardVisible": true,
"isEditable": false,
"isSaveVisible": true,
"isEditable": false,
"isVisible": true,
"label": "matl_desc",
"notation": "standard",
@@ -262,8 +262,8 @@
"isDerived": false,
"isDisabled": false,
"isDiscardVisible": true,
"isEditable": false,
"isSaveVisible": true,
"isEditable": false,
"isVisible": true,
"label": "matl_spec",
"notation": "standard",
@@ -276,142 +276,6 @@
"verticalAlignment": "CENTER",
"width": 150
},
"po_closed": {
"alias": "po_closed",
"allowCellWrapping": false,
"allowSameOptionsInNewRow": true,
"cellBackground": "",
"columnType": "number",
"computedValue": "{{(() => { const tableData = TableSLx.processedTableData || []; return tableData.length > 0 ? tableData.map((currentRow, currentIndex) => (currentRow[\"po_closed\"])) : po_closed })()}}",
"currencyCode": "USD",
"decimals": 0,
"enableFilter": true,
"enableSort": true,
"fontStyle": "",
"horizontalAlignment": "LEFT",
"id": "po_closed",
"index": 7,
"isCellEditable": false,
"isCellVisible": true,
"isDerived": false,
"isDisabled": false,
"isDiscardVisible": true,
"isEditable": false,
"isSaveVisible": true,
"isVisible": true,
"label": "po_closed",
"notation": "standard",
"originalId": "po_closed",
"sticky": "",
"textColor": "",
"textSize": "0.775rem",
"thousandSeparator": true,
"validation": {},
"verticalAlignment": "CENTER",
"width": 150
},
"po_opened": {
"alias": "po_opened",
"allowCellWrapping": false,
"allowSameOptionsInNewRow": true,
"cellBackground": "",
"columnType": "number",
"computedValue": "{{(() => { const tableData = TableSLx.processedTableData || []; return tableData.length > 0 ? tableData.map((currentRow, currentIndex) => (currentRow[\"po_opened\"])) : po_opened })()}}",
"currencyCode": "USD",
"decimals": 0,
"enableFilter": true,
"enableSort": true,
"fontStyle": "",
"horizontalAlignment": "LEFT",
"id": "po_opened",
"index": 6,
"isCellEditable": false,
"isCellVisible": true,
"isDerived": false,
"isDisabled": false,
"isDiscardVisible": true,
"isEditable": false,
"isSaveVisible": true,
"isVisible": true,
"label": "po_opened",
"notation": "standard",
"originalId": "po_opened",
"sticky": "",
"textColor": "",
"textSize": "0.775rem",
"thousandSeparator": true,
"validation": {},
"verticalAlignment": "CENTER",
"width": 150
},
"po_released": {
"alias": "po_released",
"allowCellWrapping": false,
"allowSameOptionsInNewRow": true,
"cellBackground": "",
"columnType": "number",
"computedValue": "{{(() => { const tableData = TableSLx.processedTableData || []; return tableData.length > 0 ? tableData.map((currentRow, currentIndex) => (currentRow[\"po_released\"])) : po_released })()}}",
"currencyCode": "USD",
"decimals": 0,
"enableFilter": true,
"enableSort": true,
"fontStyle": "",
"horizontalAlignment": "LEFT",
"id": "po_released",
"index": 5,
"isCellEditable": false,
"isCellVisible": true,
"isDerived": false,
"isDisabled": false,
"isDiscardVisible": true,
"isEditable": false,
"isSaveVisible": true,
"isVisible": true,
"label": "po_released",
"notation": "standard",
"originalId": "po_released",
"sticky": "",
"textColor": "",
"textSize": "0.775rem",
"thousandSeparator": true,
"validation": {},
"verticalAlignment": "CENTER",
"width": 150
},
"poitem_due": {
"alias": "poitem_due",
"allowCellWrapping": false,
"allowSameOptionsInNewRow": true,
"cellBackground": "",
"columnType": "date",
"computedValue": "{{(() => { const tableData = TableSLx.processedTableData || []; return tableData.length > 0 ? tableData.map((currentRow, currentIndex) => (currentRow[\"poitem_due\"])) : poitem_due })()}}",
"currencyCode": "USD",
"decimals": 0,
"enableFilter": true,
"enableSort": true,
"fontStyle": "",
"horizontalAlignment": "LEFT",
"id": "poitem_due",
"index": 8,
"isCellEditable": false,
"isCellVisible": true,
"isDerived": false,
"isDisabled": false,
"isDiscardVisible": true,
"isEditable": false,
"isSaveVisible": true,
"isVisible": true,
"label": "poitem_due",
"notation": "standard",
"originalId": "poitem_due",
"sticky": "",
"textColor": "",
"textSize": "0.775rem",
"thousandSeparator": true,
"validation": {},
"verticalAlignment": "CENTER",
"width": 150
},
"qoh": {
"alias": "qoh",
"allowCellWrapping": false,
@@ -432,8 +296,8 @@
"isDerived": false,
"isDisabled": false,
"isDiscardVisible": true,
"isEditable": false,
"isSaveVisible": true,
"isEditable": false,
"isVisible": true,
"label": "qoh",
"notation": "standard",
@@ -446,32 +310,32 @@
"verticalAlignment": "CENTER",
"width": 150
},
"uom": {
"alias": "uom",
"po_released": {
"alias": "po_released",
"allowCellWrapping": false,
"allowSameOptionsInNewRow": true,
"cellBackground": "",
"columnType": "text",
"computedValue": "{{(() => { const tableData = TableSLx.processedTableData || []; return tableData.length > 0 ? tableData.map((currentRow, currentIndex) => (currentRow[\"uom\"])) : uom })()}}",
"columnType": "number",
"computedValue": "{{(() => { const tableData = TableSLx.processedTableData || []; return tableData.length > 0 ? tableData.map((currentRow, currentIndex) => (currentRow[\"po_released\"])) : po_released })()}}",
"currencyCode": "USD",
"decimals": 0,
"enableFilter": true,
"enableSort": true,
"fontStyle": "",
"horizontalAlignment": "LEFT",
"id": "uom",
"index": 12,
"id": "po_released",
"index": 5,
"isCellEditable": false,
"isCellVisible": true,
"isDerived": false,
"isDisabled": false,
"isDiscardVisible": true,
"isEditable": false,
"isSaveVisible": true,
"isEditable": false,
"isVisible": true,
"label": "uom",
"label": "po_released",
"notation": "standard",
"originalId": "uom",
"originalId": "po_released",
"sticky": "",
"textColor": "",
"textSize": "0.775rem",
@@ -480,32 +344,100 @@
"verticalAlignment": "CENTER",
"width": 150
},
"wo_demanding": {
"alias": "wo_demanding",
"po_opened": {
"alias": "po_opened",
"allowCellWrapping": false,
"allowSameOptionsInNewRow": true,
"cellBackground": "",
"columnType": "text",
"computedValue": "{{(() => { const tableData = TableSLx.processedTableData || []; return tableData.length > 0 ? tableData.map((currentRow, currentIndex) => (currentRow[\"wo_demanding\"])) : wo_demanding })()}}",
"columnType": "number",
"computedValue": "{{(() => { const tableData = TableSLx.processedTableData || []; return tableData.length > 0 ? tableData.map((currentRow, currentIndex) => (currentRow[\"po_opened\"])) : po_opened })()}}",
"currencyCode": "USD",
"decimals": 0,
"enableFilter": true,
"enableSort": true,
"fontStyle": "",
"horizontalAlignment": "LEFT",
"id": "wo_demanding",
"index": 10,
"id": "po_opened",
"index": 6,
"isCellEditable": false,
"isCellVisible": true,
"isDerived": false,
"isDisabled": false,
"isDiscardVisible": true,
"isEditable": false,
"isSaveVisible": true,
"isEditable": false,
"isVisible": true,
"label": "wo_demanding",
"label": "po_opened",
"notation": "standard",
"originalId": "wo_demanding",
"originalId": "po_opened",
"sticky": "",
"textColor": "",
"textSize": "0.775rem",
"thousandSeparator": true,
"validation": {},
"verticalAlignment": "CENTER",
"width": 150
},
"po_closed": {
"alias": "po_closed",
"allowCellWrapping": false,
"allowSameOptionsInNewRow": true,
"cellBackground": "",
"columnType": "number",
"computedValue": "{{(() => { const tableData = TableSLx.processedTableData || []; return tableData.length > 0 ? tableData.map((currentRow, currentIndex) => (currentRow[\"po_closed\"])) : po_closed })()}}",
"currencyCode": "USD",
"decimals": 0,
"enableFilter": true,
"enableSort": true,
"fontStyle": "",
"horizontalAlignment": "LEFT",
"id": "po_closed",
"index": 7,
"isCellEditable": false,
"isCellVisible": true,
"isDerived": false,
"isDisabled": false,
"isDiscardVisible": true,
"isSaveVisible": true,
"isEditable": false,
"isVisible": true,
"label": "po_closed",
"notation": "standard",
"originalId": "po_closed",
"sticky": "",
"textColor": "",
"textSize": "0.775rem",
"thousandSeparator": true,
"validation": {},
"verticalAlignment": "CENTER",
"width": 150
},
"poitem_due": {
"alias": "poitem_due",
"allowCellWrapping": false,
"allowSameOptionsInNewRow": true,
"cellBackground": "",
"columnType": "date",
"computedValue": "{{(() => { const tableData = TableSLx.processedTableData || []; return tableData.length > 0 ? tableData.map((currentRow, currentIndex) => (currentRow[\"poitem_due\"])) : poitem_due })()}}",
"currencyCode": "USD",
"decimals": 0,
"enableFilter": true,
"enableSort": true,
"fontStyle": "",
"horizontalAlignment": "LEFT",
"id": "poitem_due",
"index": 8,
"isCellEditable": false,
"isCellVisible": true,
"isDerived": false,
"isDisabled": false,
"isDiscardVisible": true,
"isSaveVisible": true,
"isEditable": false,
"isVisible": true,
"label": "poitem_due",
"notation": "standard",
"originalId": "poitem_due",
"sticky": "",
"textColor": "",
"textSize": "0.775rem",
@@ -534,8 +466,8 @@
"isDerived": false,
"isDisabled": false,
"isDiscardVisible": true,
"isEditable": false,
"isSaveVisible": true,
"isEditable": false,
"isVisible": true,
"label": "wo_item",
"notation": "standard",
@@ -548,6 +480,40 @@
"verticalAlignment": "CENTER",
"width": 150
},
"wo_demanding": {
"alias": "wo_demanding",
"allowCellWrapping": false,
"allowSameOptionsInNewRow": true,
"cellBackground": "",
"columnType": "text",
"computedValue": "{{(() => { const tableData = TableSLx.processedTableData || []; return tableData.length > 0 ? tableData.map((currentRow, currentIndex) => (currentRow[\"wo_demanding\"])) : wo_demanding })()}}",
"currencyCode": "USD",
"decimals": 0,
"enableFilter": true,
"enableSort": true,
"fontStyle": "",
"horizontalAlignment": "LEFT",
"id": "wo_demanding",
"index": 10,
"isCellEditable": false,
"isCellVisible": true,
"isDerived": false,
"isDisabled": false,
"isDiscardVisible": true,
"isSaveVisible": true,
"isEditable": false,
"isVisible": true,
"label": "wo_demanding",
"notation": "standard",
"originalId": "wo_demanding",
"sticky": "",
"textColor": "",
"textSize": "0.775rem",
"thousandSeparator": true,
"validation": {},
"verticalAlignment": "CENTER",
"width": 150
},
"wo_total_demand": {
"alias": "wo_total_demand",
"allowCellWrapping": false,
@@ -568,8 +534,8 @@
"isDerived": false,
"isDisabled": false,
"isDiscardVisible": true,
"isEditable": false,
"isSaveVisible": true,
"isEditable": false,
"isVisible": true,
"label": "wo_total_demand",
"notation": "standard",
@@ -581,6 +547,40 @@
"validation": {},
"verticalAlignment": "CENTER",
"width": 150
},
"uom": {
"alias": "uom",
"allowCellWrapping": false,
"allowSameOptionsInNewRow": true,
"cellBackground": "",
"columnType": "text",
"computedValue": "{{(() => { const tableData = TableSLx.processedTableData || []; return tableData.length > 0 ? tableData.map((currentRow, currentIndex) => (currentRow[\"uom\"])) : uom })()}}",
"currencyCode": "USD",
"decimals": 0,
"enableFilter": true,
"enableSort": true,
"fontStyle": "",
"horizontalAlignment": "LEFT",
"id": "uom",
"index": 12,
"isCellEditable": false,
"isCellVisible": true,
"isDerived": false,
"isDisabled": false,
"isDiscardVisible": true,
"isSaveVisible": true,
"isEditable": false,
"isVisible": true,
"label": "uom",
"notation": "standard",
"originalId": "uom",
"sticky": "",
"textColor": "",
"textSize": "0.775rem",
"thousandSeparator": true,
"validation": {},
"verticalAlignment": "CENTER",
"width": 150
}
},
"renderMode": "CANVAS",

View File

@@ -160,8 +160,8 @@
"isDerived": false,
"isDisabled": false,
"isDiscardVisible": true,
"isEditable": false,
"isSaveVisible": true,
"isEditable": false,
"isVisible": true,
"label": "matl",
"notation": "standard",
@@ -194,8 +194,8 @@
"isDerived": false,
"isDisabled": false,
"isDiscardVisible": true,
"isEditable": false,
"isSaveVisible": true,
"isEditable": false,
"isVisible": true,
"label": "matl_classocde",
"notation": "standard",
@@ -228,8 +228,8 @@
"isDerived": false,
"isDisabled": false,
"isDiscardVisible": true,
"isEditable": false,
"isSaveVisible": true,
"isEditable": false,
"isVisible": true,
"label": "matl_desc",
"notation": "standard",
@@ -262,8 +262,8 @@
"isDerived": false,
"isDisabled": false,
"isDiscardVisible": true,
"isEditable": false,
"isSaveVisible": true,
"isEditable": false,
"isVisible": true,
"label": "matl_spec",
"notation": "standard",
@@ -276,142 +276,6 @@
"verticalAlignment": "CENTER",
"width": 150
},
"po_closed": {
"alias": "po_closed",
"allowCellWrapping": false,
"allowSameOptionsInNewRow": true,
"cellBackground": "",
"columnType": "number",
"computedValue": "{{(() => { const tableData = TableSR.processedTableData || []; return tableData.length > 0 ? tableData.map((currentRow, currentIndex) => (currentRow[\"po_closed\"])) : po_closed })()}}",
"currencyCode": "USD",
"decimals": 0,
"enableFilter": true,
"enableSort": true,
"fontStyle": "",
"horizontalAlignment": "LEFT",
"id": "po_closed",
"index": 7,
"isCellEditable": false,
"isCellVisible": true,
"isDerived": false,
"isDisabled": false,
"isDiscardVisible": true,
"isEditable": false,
"isSaveVisible": true,
"isVisible": true,
"label": "po_closed",
"notation": "standard",
"originalId": "po_closed",
"sticky": "",
"textColor": "",
"textSize": "0.775rem",
"thousandSeparator": true,
"validation": {},
"verticalAlignment": "CENTER",
"width": 150
},
"po_opened": {
"alias": "po_opened",
"allowCellWrapping": false,
"allowSameOptionsInNewRow": true,
"cellBackground": "",
"columnType": "number",
"computedValue": "{{(() => { const tableData = TableSR.processedTableData || []; return tableData.length > 0 ? tableData.map((currentRow, currentIndex) => (currentRow[\"po_opened\"])) : po_opened })()}}",
"currencyCode": "USD",
"decimals": 0,
"enableFilter": true,
"enableSort": true,
"fontStyle": "",
"horizontalAlignment": "LEFT",
"id": "po_opened",
"index": 6,
"isCellEditable": false,
"isCellVisible": true,
"isDerived": false,
"isDisabled": false,
"isDiscardVisible": true,
"isEditable": false,
"isSaveVisible": true,
"isVisible": true,
"label": "po_opened",
"notation": "standard",
"originalId": "po_opened",
"sticky": "",
"textColor": "",
"textSize": "0.775rem",
"thousandSeparator": true,
"validation": {},
"verticalAlignment": "CENTER",
"width": 150
},
"po_released": {
"alias": "po_released",
"allowCellWrapping": false,
"allowSameOptionsInNewRow": true,
"cellBackground": "",
"columnType": "number",
"computedValue": "{{(() => { const tableData = TableSR.processedTableData || []; return tableData.length > 0 ? tableData.map((currentRow, currentIndex) => (currentRow[\"po_released\"])) : po_released })()}}",
"currencyCode": "USD",
"decimals": 0,
"enableFilter": true,
"enableSort": true,
"fontStyle": "",
"horizontalAlignment": "LEFT",
"id": "po_released",
"index": 5,
"isCellEditable": false,
"isCellVisible": true,
"isDerived": false,
"isDisabled": false,
"isDiscardVisible": true,
"isEditable": false,
"isSaveVisible": true,
"isVisible": true,
"label": "po_released",
"notation": "standard",
"originalId": "po_released",
"sticky": "",
"textColor": "",
"textSize": "0.775rem",
"thousandSeparator": true,
"validation": {},
"verticalAlignment": "CENTER",
"width": 150
},
"poitem_due": {
"alias": "poitem_due",
"allowCellWrapping": false,
"allowSameOptionsInNewRow": true,
"cellBackground": "",
"columnType": "date",
"computedValue": "{{(() => { const tableData = TableSR.processedTableData || []; return tableData.length > 0 ? tableData.map((currentRow, currentIndex) => (currentRow[\"poitem_due\"])) : poitem_due })()}}",
"currencyCode": "USD",
"decimals": 0,
"enableFilter": true,
"enableSort": true,
"fontStyle": "",
"horizontalAlignment": "LEFT",
"id": "poitem_due",
"index": 8,
"isCellEditable": false,
"isCellVisible": true,
"isDerived": false,
"isDisabled": false,
"isDiscardVisible": true,
"isEditable": false,
"isSaveVisible": true,
"isVisible": true,
"label": "poitem_due",
"notation": "standard",
"originalId": "poitem_due",
"sticky": "",
"textColor": "",
"textSize": "0.775rem",
"thousandSeparator": true,
"validation": {},
"verticalAlignment": "CENTER",
"width": 150
},
"qoh": {
"alias": "qoh",
"allowCellWrapping": false,
@@ -432,8 +296,8 @@
"isDerived": false,
"isDisabled": false,
"isDiscardVisible": true,
"isEditable": false,
"isSaveVisible": true,
"isEditable": false,
"isVisible": true,
"label": "qoh",
"notation": "standard",
@@ -446,32 +310,32 @@
"verticalAlignment": "CENTER",
"width": 150
},
"uom": {
"alias": "uom",
"po_released": {
"alias": "po_released",
"allowCellWrapping": false,
"allowSameOptionsInNewRow": true,
"cellBackground": "",
"columnType": "text",
"computedValue": "{{(() => { const tableData = TableSR.processedTableData || []; return tableData.length > 0 ? tableData.map((currentRow, currentIndex) => (currentRow[\"uom\"])) : uom })()}}",
"columnType": "number",
"computedValue": "{{(() => { const tableData = TableSR.processedTableData || []; return tableData.length > 0 ? tableData.map((currentRow, currentIndex) => (currentRow[\"po_released\"])) : po_released })()}}",
"currencyCode": "USD",
"decimals": 0,
"enableFilter": true,
"enableSort": true,
"fontStyle": "",
"horizontalAlignment": "LEFT",
"id": "uom",
"index": 12,
"id": "po_released",
"index": 5,
"isCellEditable": false,
"isCellVisible": true,
"isDerived": false,
"isDisabled": false,
"isDiscardVisible": true,
"isEditable": false,
"isSaveVisible": true,
"isEditable": false,
"isVisible": true,
"label": "uom",
"label": "po_released",
"notation": "standard",
"originalId": "uom",
"originalId": "po_released",
"sticky": "",
"textColor": "",
"textSize": "0.775rem",
@@ -480,32 +344,100 @@
"verticalAlignment": "CENTER",
"width": 150
},
"wo_demanding": {
"alias": "wo_demanding",
"po_opened": {
"alias": "po_opened",
"allowCellWrapping": false,
"allowSameOptionsInNewRow": true,
"cellBackground": "",
"columnType": "text",
"computedValue": "{{(() => { const tableData = TableSR.processedTableData || []; return tableData.length > 0 ? tableData.map((currentRow, currentIndex) => (currentRow[\"wo_demanding\"])) : wo_demanding })()}}",
"columnType": "number",
"computedValue": "{{(() => { const tableData = TableSR.processedTableData || []; return tableData.length > 0 ? tableData.map((currentRow, currentIndex) => (currentRow[\"po_opened\"])) : po_opened })()}}",
"currencyCode": "USD",
"decimals": 0,
"enableFilter": true,
"enableSort": true,
"fontStyle": "",
"horizontalAlignment": "LEFT",
"id": "wo_demanding",
"index": 10,
"id": "po_opened",
"index": 6,
"isCellEditable": false,
"isCellVisible": true,
"isDerived": false,
"isDisabled": false,
"isDiscardVisible": true,
"isEditable": false,
"isSaveVisible": true,
"isEditable": false,
"isVisible": true,
"label": "wo_demanding",
"label": "po_opened",
"notation": "standard",
"originalId": "wo_demanding",
"originalId": "po_opened",
"sticky": "",
"textColor": "",
"textSize": "0.775rem",
"thousandSeparator": true,
"validation": {},
"verticalAlignment": "CENTER",
"width": 150
},
"po_closed": {
"alias": "po_closed",
"allowCellWrapping": false,
"allowSameOptionsInNewRow": true,
"cellBackground": "",
"columnType": "number",
"computedValue": "{{(() => { const tableData = TableSR.processedTableData || []; return tableData.length > 0 ? tableData.map((currentRow, currentIndex) => (currentRow[\"po_closed\"])) : po_closed })()}}",
"currencyCode": "USD",
"decimals": 0,
"enableFilter": true,
"enableSort": true,
"fontStyle": "",
"horizontalAlignment": "LEFT",
"id": "po_closed",
"index": 7,
"isCellEditable": false,
"isCellVisible": true,
"isDerived": false,
"isDisabled": false,
"isDiscardVisible": true,
"isSaveVisible": true,
"isEditable": false,
"isVisible": true,
"label": "po_closed",
"notation": "standard",
"originalId": "po_closed",
"sticky": "",
"textColor": "",
"textSize": "0.775rem",
"thousandSeparator": true,
"validation": {},
"verticalAlignment": "CENTER",
"width": 150
},
"poitem_due": {
"alias": "poitem_due",
"allowCellWrapping": false,
"allowSameOptionsInNewRow": true,
"cellBackground": "",
"columnType": "date",
"computedValue": "{{(() => { const tableData = TableSR.processedTableData || []; return tableData.length > 0 ? tableData.map((currentRow, currentIndex) => (currentRow[\"poitem_due\"])) : poitem_due })()}}",
"currencyCode": "USD",
"decimals": 0,
"enableFilter": true,
"enableSort": true,
"fontStyle": "",
"horizontalAlignment": "LEFT",
"id": "poitem_due",
"index": 8,
"isCellEditable": false,
"isCellVisible": true,
"isDerived": false,
"isDisabled": false,
"isDiscardVisible": true,
"isSaveVisible": true,
"isEditable": false,
"isVisible": true,
"label": "poitem_due",
"notation": "standard",
"originalId": "poitem_due",
"sticky": "",
"textColor": "",
"textSize": "0.775rem",
@@ -534,8 +466,8 @@
"isDerived": false,
"isDisabled": false,
"isDiscardVisible": true,
"isEditable": false,
"isSaveVisible": true,
"isEditable": false,
"isVisible": true,
"label": "wo_item",
"notation": "standard",
@@ -548,6 +480,40 @@
"verticalAlignment": "CENTER",
"width": 150
},
"wo_demanding": {
"alias": "wo_demanding",
"allowCellWrapping": false,
"allowSameOptionsInNewRow": true,
"cellBackground": "",
"columnType": "text",
"computedValue": "{{(() => { const tableData = TableSR.processedTableData || []; return tableData.length > 0 ? tableData.map((currentRow, currentIndex) => (currentRow[\"wo_demanding\"])) : wo_demanding })()}}",
"currencyCode": "USD",
"decimals": 0,
"enableFilter": true,
"enableSort": true,
"fontStyle": "",
"horizontalAlignment": "LEFT",
"id": "wo_demanding",
"index": 10,
"isCellEditable": false,
"isCellVisible": true,
"isDerived": false,
"isDisabled": false,
"isDiscardVisible": true,
"isSaveVisible": true,
"isEditable": false,
"isVisible": true,
"label": "wo_demanding",
"notation": "standard",
"originalId": "wo_demanding",
"sticky": "",
"textColor": "",
"textSize": "0.775rem",
"thousandSeparator": true,
"validation": {},
"verticalAlignment": "CENTER",
"width": 150
},
"wo_total_demand": {
"alias": "wo_total_demand",
"allowCellWrapping": false,
@@ -568,8 +534,8 @@
"isDerived": false,
"isDisabled": false,
"isDiscardVisible": true,
"isEditable": false,
"isSaveVisible": true,
"isEditable": false,
"isVisible": true,
"label": "wo_total_demand",
"notation": "standard",
@@ -581,6 +547,40 @@
"validation": {},
"verticalAlignment": "CENTER",
"width": 150
},
"uom": {
"alias": "uom",
"allowCellWrapping": false,
"allowSameOptionsInNewRow": true,
"cellBackground": "",
"columnType": "text",
"computedValue": "{{(() => { const tableData = TableSR.processedTableData || []; return tableData.length > 0 ? tableData.map((currentRow, currentIndex) => (currentRow[\"uom\"])) : uom })()}}",
"currencyCode": "USD",
"decimals": 0,
"enableFilter": true,
"enableSort": true,
"fontStyle": "",
"horizontalAlignment": "LEFT",
"id": "uom",
"index": 12,
"isCellEditable": false,
"isCellVisible": true,
"isDerived": false,
"isDisabled": false,
"isDiscardVisible": true,
"isSaveVisible": true,
"isEditable": false,
"isVisible": true,
"label": "uom",
"notation": "standard",
"originalId": "uom",
"sticky": "",
"textColor": "",
"textSize": "0.775rem",
"thousandSeparator": true,
"validation": {},
"verticalAlignment": "CENTER",
"width": 150
}
},
"renderMode": "CANVAS",

View File

@@ -8,9 +8,7 @@
"disabledWhenInvalid": false,
"dynamicBindingPathList": [],
"dynamicTriggerPathList": [
{
"key": "onClick"
}
{"key": "onClick"}
],
"isDefaultClickDisabled": true,
"isDisabled": false,

View File

@@ -8,9 +8,7 @@
"disabledWhenInvalid": false,
"dynamicBindingPathList": [],
"dynamicTriggerPathList": [
{
"key": "onClick"
}
{"key": "onClick"}
],
"isDefaultClickDisabled": true,
"isDisabled": false,

View File

@@ -8,9 +8,7 @@
"disabledWhenInvalid": false,
"dynamicBindingPathList": [],
"dynamicTriggerPathList": [
{
"key": "onClick"
}
{"key": "onClick"}
],
"isDefaultClickDisabled": true,
"isDisabled": false,

View File

@@ -2,7 +2,6 @@
"animateLoading": true,
"borderRadius": "0.375rem",
"bottomRow": 52,
"boxShadow": "none",
"buttonColor": "#ffffff",
"buttonVariant": "PRIMARY",
"disabledWhenInvalid": false,
@@ -43,5 +42,6 @@
"type": "BUTTON_WIDGET",
"version": 1,
"widgetId": "pr1btn3ui",
"widgetName": "Button3Copy2"
"widgetName": "Button3Copy2",
"boxShadow": "none"
}

View File

@@ -0,0 +1,45 @@
{
"animateLoading": true,
"borderRadius": "0.375rem",
"bottomRow": 56,
"boxShadow": "none",
"buttonColor": "#ffffff",
"buttonVariant": "PRIMARY",
"disabledWhenInvalid": false,
"dynamicBindingPathList": [],
"dynamicTriggerPathList": [
{
"key": "onClick"
}
],
"isDefaultClickDisabled": true,
"isDisabled": false,
"isLoading": false,
"isVisible": true,
"key": "pr1btnwosk",
"leftColumn": 0,
"minWidth": 120,
"mobileBottomRow": 56,
"mobileLeftColumn": 0,
"mobileRightColumn": 16,
"mobileTopRow": 52,
"needsErrorInfo": false,
"onClick": "{{navigateTo('Operations - WO Shortages', {}, 'SAME_WINDOW');}}",
"originalBottomRow": 56,
"originalTopRow": 52,
"parentColumnSpace": 3.841796875,
"parentId": "pr1canvas01",
"parentRowSpace": 10,
"placement": "START",
"recaptchaType": "V3",
"renderMode": "CANVAS",
"resetFormOnClick": false,
"responsiveBehavior": "hug",
"rightColumn": 64,
"text": "WO Shortages",
"topRow": 52,
"type": "BUTTON_WIDGET",
"version": 1,
"widgetId": "pr1btnwos",
"widgetName": "Button3Copy3"
}

View File

@@ -3,15 +3,9 @@
"borderRadius": "{{appsmith.theme.borderRadius.appBorderRadius}}",
"bottomRow": 40,
"dynamicBindingPathList": [
{
"key": "truncateButtonColor"
},
{
"key": "fontFamily"
},
{
"key": "borderRadius"
}
{"key": "truncateButtonColor"},
{"key": "fontFamily"},
{"key": "borderRadius"}
],
"dynamicHeight": "AUTO_HEIGHT",
"dynamicTriggerPathList": [],

View File

@@ -37,26 +37,14 @@
"customIsLoadingValue": "",
"defaultPageSize": 0,
"defaultSelectedRowIndex": 0,
"defaultSelectedRowIndices": [
0
],
"defaultSelectedRowIndices": [0],
"delimiter": ",",
"dynamicBindingPathList": [
{
"key": "accentColor"
},
{
"key": "boxShadow"
},
{
"key": "tableData"
}
],
"dynamicPropertyPathList": [
{
"key": "textSize"
}
{"key": "accentColor"},
{"key": "boxShadow"},
{"key": "tableData"}
],
"dynamicPropertyPathList": [{"key": "textSize"}],
"dynamicTriggerPathList": [],
"enableClientSideSearch": true,
"endOfData": false,

View File

@@ -37,26 +37,14 @@
"customIsLoadingValue": "",
"defaultPageSize": 0,
"defaultSelectedRowIndex": 0,
"defaultSelectedRowIndices": [
0
],
"defaultSelectedRowIndices": [0],
"delimiter": ",",
"dynamicBindingPathList": [
{
"key": "accentColor"
},
{
"key": "boxShadow"
},
{
"key": "tableData"
}
],
"dynamicPropertyPathList": [
{
"key": "textSize"
}
{"key": "accentColor"},
{"key": "boxShadow"},
{"key": "tableData"}
],
"dynamicPropertyPathList": [{"key": "textSize"}],
"dynamicTriggerPathList": [],
"enableClientSideSearch": true,
"endOfData": false,

View File

@@ -37,26 +37,14 @@
"customIsLoadingValue": "",
"defaultPageSize": 0,
"defaultSelectedRowIndex": 0,
"defaultSelectedRowIndices": [
0
],
"defaultSelectedRowIndices": [0],
"delimiter": ",",
"dynamicBindingPathList": [
{
"key": "accentColor"
},
{
"key": "boxShadow"
},
{
"key": "tableData"
}
],
"dynamicPropertyPathList": [
{
"key": "textSize"
}
{"key": "accentColor"},
{"key": "boxShadow"},
{"key": "tableData"}
],
"dynamicPropertyPathList": [{"key": "textSize"}],
"dynamicTriggerPathList": [],
"enableClientSideSearch": true,
"endOfData": false,

View File

@@ -37,26 +37,14 @@
"customIsLoadingValue": "",
"defaultPageSize": 0,
"defaultSelectedRowIndex": 0,
"defaultSelectedRowIndices": [
0
],
"defaultSelectedRowIndices": [0],
"delimiter": ",",
"dynamicBindingPathList": [
{
"key": "accentColor"
},
{
"key": "boxShadow"
},
{
"key": "tableData"
}
],
"dynamicPropertyPathList": [
{
"key": "textSize"
}
{"key": "accentColor"},
{"key": "boxShadow"},
{"key": "tableData"}
],
"dynamicPropertyPathList": [{"key": "textSize"}],
"dynamicTriggerPathList": [],
"enableClientSideSearch": true,
"endOfData": false,

Some files were not shown because too many files have changed in this diff Show More