fix(data-access): correct self-referential SQL in WorkCenter filter

The WHERE clause was comparing Code to itself instead of the aliased
table reference, which would always be true.
This commit is contained in:
Joseph Doherty
2026-01-06 14:12:07 -05:00
parent 34daf6a83b
commit d4135e8ad3
67 changed files with 8520 additions and 12 deletions
+35
View File
@@ -0,0 +1,35 @@
-- MisData Full Query
-- Source: CMS (Oracle via DDTek.Oracle)
-- Schema: INFODBA
-- Destination: MisData
-- Schedule: Mass/Daily (Hourly disabled)
-- Connection: Config.CMSCS
-- Timeout: Extended (1200*50 = 60000 seconds)
-- Post Processing: Commons.Process.LotFinderDB.PostProcessMisData
SELECT DISTINCT
mis.P_PART_NUMBER AS ItemNumber,
mis.P_OPERATION_NUMBER AS SequenceNumber,
item.PITEM_ID AS MISNumber,
itemrev.PITEM_REVISION_ID AS RevID,
TRIM(mis.P_SITE) AS BranchCode,
zim_test_details.P_SEQ_NUMBER AS CharNumber,
zim_test_details.P_TEST_DESC AS TestDescription,
zim_test_details.P_SAMPL_TYPE AS SamplingType,
zim_test_details.P_SAMPL_VALUE AS SamplingValue,
zim_test_details.P_TOOLS AS ToolsGauges,
zim_test_details.P_WORK_INTR AS WorkInstructions,
Status.PNAME AS Status,
Status.PDATE_RELEASED AS ReleaseDate
FROM INFODBA.PITEM item
INNER JOIN INFODBA.PITEMREVISION itemrev ON (item.PUID = itemrev.RITEMS_TAGU)
INNER JOIN INFODBA.PRELEASE_STATUS_LIST listing ON (itemrev.PUID = listing.PUID)
INNER JOIN INFODBA.PRELEASESTATUS Status ON (listing.PVALU_0 = Status.PUID)
INNER JOIN INFODBA.PIMANRELATION imanrel ON (itemrev.PUID = imanrel.RPRIMARY_OBJECTU)
INNER JOIN INFODBA.PFORM form ON (imanrel.RSECONDARY_OBJECTU = form.PUID)
INNER JOIN INFODBA.PZIMMERMISDETAILS zim_mis ON (form.RDATA_FILEU = zim_mis.PUID)
INNER JOIN INFODBA.P_TEST_DETAILS test_details ON (zim_mis.PUID = test_details.PUID)
INNER JOIN INFODBA.P_PART_ASSOCIATION ppa ON (ppa.PUID = test_details.PUID)
INNER JOIN INFODBA.PMISDATAOBJECT mis ON (mis.PUID = ppa.PVALU_0)
INNER JOIN INFODBA.PZIMTESTDETAILS zim_test_details ON (test_details.PVALU_0 = zim_test_details.PUID)
WHERE Status.PNAME IN ('Current', 'BackLevel')
@@ -0,0 +1,37 @@
-- MisData Filtered Query (Incremental)
-- Source: CMS (Oracle via DDTek.Oracle)
-- Schema: INFODBA
-- Destination: MisData
-- Schedule: Daily (incremental merge)
-- Parameters: :lastUpdateDT (standard DateTime)
-- Connection: Config.CMSCS
-- Timeout: Extended (1200*50 = 60000 seconds)
-- Post Processing: Commons.Process.LotFinderDB.PostProcessMisData
SELECT DISTINCT
mis.P_PART_NUMBER AS ItemNumber,
mis.P_OPERATION_NUMBER AS SequenceNumber,
item.PITEM_ID AS MISNumber,
itemrev.PITEM_REVISION_ID AS RevID,
TRIM(mis.P_SITE) AS BranchCode,
zim_test_details.P_SEQ_NUMBER AS CharNumber,
zim_test_details.P_TEST_DESC AS TestDescription,
zim_test_details.P_SAMPL_TYPE AS SamplingType,
zim_test_details.P_SAMPL_VALUE AS SamplingValue,
zim_test_details.P_TOOLS AS ToolsGauges,
zim_test_details.P_WORK_INTR AS WorkInstructions,
Status.PNAME AS Status,
Status.PDATE_RELEASED AS ReleaseDate
FROM INFODBA.PITEM item
INNER JOIN INFODBA.PITEMREVISION itemrev ON (item.PUID = itemrev.RITEMS_TAGU)
INNER JOIN INFODBA.PRELEASE_STATUS_LIST listing ON (itemrev.PUID = listing.PUID)
INNER JOIN INFODBA.PRELEASESTATUS Status ON (listing.PVALU_0 = Status.PUID)
INNER JOIN INFODBA.PIMANRELATION imanrel ON (itemrev.PUID = imanrel.RPRIMARY_OBJECTU)
INNER JOIN INFODBA.PFORM form ON (imanrel.RSECONDARY_OBJECTU = form.PUID)
INNER JOIN INFODBA.PZIMMERMISDETAILS zim_mis ON (form.RDATA_FILEU = zim_mis.PUID)
INNER JOIN INFODBA.P_TEST_DETAILS test_details ON (zim_mis.PUID = test_details.PUID)
INNER JOIN INFODBA.P_PART_ASSOCIATION ppa ON (ppa.PUID = test_details.PUID)
INNER JOIN INFODBA.PMISDATAOBJECT mis ON (mis.PUID = ppa.PVALU_0)
INNER JOIN INFODBA.PZIMTESTDETAILS zim_test_details ON (test_details.PVALU_0 = zim_test_details.PUID)
WHERE Status.PNAME IN ('Current', 'BackLevel') AND
Status.PDATE_RELEASED >= :lastUpdateDT
+587
View File
@@ -0,0 +1,587 @@
# Data Sync Configuration Report
This document describes all data synchronization imports from the legacy JDE Scoping Tool (LotFinder) application.
## Executive Summary
| Source System | Database Type | Entity Count | Connection |
|---------------|---------------|--------------|------------|
| JDE | Oracle (Oracle.ManagedDataAccess) | 21 (16 active + 5 archive) | Config.JDECS |
| CMS | Oracle (DDTek.Oracle) | 1 | Config.CMSCS |
*Note: StatusCode sync uses GIW connection (Config.GIWCS via DDTek.Oracle) instead of standard JDE connection.
**Total Syncs:** 22
- **Active Syncs:** 17 (scheduled to run)
- **Archive Syncs:** 5 (configured but ALL DISABLED)
**Cache Files:** All syncs have corresponding cache files in `CACHED_DB_FILES/` (except StatusCode)
---
## Schedule Legend
| Schedule | Interval (min) | Frequency | PrepurgeData | ReIndexData | Sync Type |
|----------|----------------|-----------|--------------|-------------|-----------|
| Mass | 10080 | Weekly | Yes | Yes | Full Reload |
| Daily | 1440 | Daily | No | No | Incremental Merge |
| Hourly | 60 | Hourly | No | No | Incremental Merge |
- **PrepurgeData=true**: Table is truncated before import (full reload)
- **PrepurgeData=false**: Records are merged/upserted (incremental)
- **Filtered Query**: Uses date/time parameters to fetch only changed records
---
## Master Sync Table
### Active Syncs (17)
| # | Import Name | Source | Dest Table | Mass | Daily | Hourly | Filter | Cache File | Notes |
|---|-------------|--------|------------|------|-------|--------|--------|------------|-------|
| 1 | WorkOrder | JDE | WorkOrder_Curr | Yes | Yes | Yes | Yes | `workorder_curr.json.zstd` | |
| 2 | LotUsage | JDE | LotUsage_Curr | Yes | Yes | Yes | Yes | `lotusage_curr.json.zstd` | |
| 3 | Item | JDE | Item | Yes | Yes | Yes | Yes | `item.json.zstd` | |
| 4 | Lot | JDE | Lot | Yes | Yes | Yes | Yes | `lot.json.zstd` | |
| 5 | WorkOrderTime | JDE | WorkOrderTime_Curr | Yes | Yes | Yes | Yes | `workordertime_curr.json.zstd` | |
| 6 | WorkOrderComponent | JDE | WorkOrderComponent_Curr | Yes | Yes | Yes | Yes | `workordercomponent_curr.json.zstd` | |
| 7 | WorkOrderStep | JDE | WorkOrderStep_Curr | Yes | Yes | Yes | Yes | `workorderstep_curr.json.zstd` | |
| 8 | WorkOrderRouting | JDE | WorkOrderRouting | Yes | Yes | Yes | Yes | `workorderrouting.json.zstd` | |
| 9 | Branch | JDE | Branch | Yes | Yes | Yes | Yes | `branch.json.zstd` | typeCode='BP' |
| 10 | ProfitCenter | JDE | ProfitCenter | Yes | Yes | Yes | Yes | `profitcenter.json.zstd` | typeCode='I3' |
| 11 | WorkCenter | JDE | WorkCenter | Yes | Yes | Yes | Yes | `workcenter.json.zstd` | typeCode='WC' |
| 12 | StatusCode | JDE | StatusCode | Yes | Yes | Yes | Yes | *(none)* | GIW connection |
| 13 | JdeUser | JDE | JdeUser | Yes | Yes | Yes | No | `jdeuser.json.zstd` | Same query both |
| 14 | OrgHierarchy | JDE | OrgHierarchy | Yes | Yes | Yes | Yes | `orghierarchy.json.zstd` | |
| 15 | RouteMaster | JDE | RouteMaster | Yes | Yes | Yes | Yes | `routemaster.json.zstd` | |
| 16 | FunctionCode | JDE | FunctionCode | Yes | Yes | Yes | No | `functioncode.json.zstd` | Always full reload |
| 17 | MisData | CMS | MisData | Yes | Yes | No | Yes | `misdata.json.zstd` | Hourly disabled |
### Archive Syncs (5) - ALL DISABLED
| # | Import Name | Source | Dest Table | Mass | Daily | Hourly | Filter | Cache File | Notes |
|---|-------------|--------|------------|------|-------|--------|--------|------------|-------|
| 18 | WorkOrder_Archive | JDE | WorkOrder_Hist | No | No | No | No | `workorder_hist.json.zstd` | DISABLED |
| 19 | LotUsage_Archive | JDE | LotUsage_Hist | No | No | No | No | `lotusage_hist.json.zstd` | DISABLED |
| 20 | WorkOrderTime_Archive | JDE | WorkOrderTime_Hist | No | No | No | No | `workordertime_hist.json.zstd` | DISABLED |
| 21 | WorkOrderComponent_Archive | JDE | WorkOrderComponent_Hist | No | No | No | No | `workordercomponent_hist.json.zstd` | DISABLED |
| 22 | WorkOrderStep_Archive | JDE | WorkOrderStep_Hist | No | No | No | No | `workorderstep_hist.json.zstd` | DISABLED |
**Cache File Location:** `CACHED_DB_FILES/`
---
## Detailed Entity Configurations
### 1. WorkOrder
| Property | Value |
|----------|-------|
| Source System | JDE |
| Source Data | WORKORDER |
| Destination Table | WorkOrder_Curr |
| Data Fetch Function | Commons.Process.JDE.GetWorkOrders |
| Post Processing | None |
| JDE Table | JDESTAGE.F4801_VIEW |
**Schedule Configuration:**
| Schedule | Enabled | Interval | Prepurge | ReIndex |
|----------|---------|----------|----------|---------|
| Mass | Yes | 10080 | Yes | Yes |
| Daily | Yes | 1440 | No | No |
| Hourly | Yes | 60 | No | No |
**Query Files:**
- Full: `JDE/SQL_GET_WORKORDERS.sql`
- Filtered: `JDE/SQL_GET_WORKORDERS_FILTERED.sql`
- Archive: `JDE_ARCHIVE/SQL_GET_WORKORDERS.sql`
**Filter Parameters:** `dateUpdated`, `timeUpdated` (JDE date/time format)
---
### 2. LotUsage
| Property | Value |
|----------|-------|
| Source System | JDE |
| Source Data | LOTUSAGE |
| Destination Table | LotUsage_Curr |
| Data Fetch Function | Commons.Process.JDE.GetLotUsages |
| Post Processing | None |
| JDE Table | JDESTAGE.F4111_VIEW |
**Schedule Configuration:**
| Schedule | Enabled | Interval | Prepurge | ReIndex |
|----------|---------|----------|----------|---------|
| Mass | Yes | 10080 | Yes | Yes |
| Daily | Yes | 1440 | No | No |
| Hourly | Yes | 60 | No | No |
**Query Files:**
- Full: `JDE/SQL_GET_LOT_USAGES.sql`
- Filtered: `JDE/SQL_GET_LOT_USAGES_FILTERED.sql`
- Archive: `JDE_ARCHIVE/SQL_GET_LOT_USAGES.sql`
**Filter Parameters:** `dateUpdated`, `timeUpdated` (JDE date/time format)
---
### 3. Item
| Property | Value |
|----------|-------|
| Source System | JDE |
| Source Data | ITEM |
| Destination Table | Item |
| Data Fetch Function | Commons.Process.JDE.GetItems |
| Post Processing | None |
| JDE Table | JDESTAGE.F4101_VIEW |
**Schedule Configuration:**
| Schedule | Enabled | Interval | Prepurge | ReIndex |
|----------|---------|----------|----------|---------|
| Mass | Yes | 10080 | Yes | Yes |
| Daily | Yes | 1440 | No | No |
| Hourly | Yes | 60 | No | No |
**Query Files:**
- Full: `JDE/SQL_GET_ITEMS.sql`
- Filtered: `JDE/SQL_GET_ITEMS_FILTERED.sql`
**Filter Parameters:** `dateUpdated`, `timeUpdated` (JDE date/time format)
---
### 4. Lot
| Property | Value |
|----------|-------|
| Source System | JDE |
| Source Data | LOT |
| Destination Table | Lot |
| Data Fetch Function | Commons.Process.JDE.GetLots |
| Post Processing | None |
| JDE Table | JDESTAGE.F4108_VIEW |
**Schedule Configuration:**
| Schedule | Enabled | Interval | Prepurge | ReIndex |
|----------|---------|----------|----------|---------|
| Mass | Yes | 10080 | Yes | Yes |
| Daily | Yes | 1440 | No | No |
| Hourly | Yes | 60 | No | No |
**Query Files:**
- Full: `JDE/SQL_GET_LOTS.sql`
- Filtered: `JDE/SQL_GET_LOTS_FILTERED.sql`
**Filter Parameters:** `dateUpdated`, `timeUpdated` (JDE date/time format)
---
### 5. WorkOrderTime
| Property | Value |
|----------|-------|
| Source System | JDE |
| Source Data | WORKORDERTIME |
| Destination Table | WorkOrderTime_Curr |
| Data Fetch Function | Commons.Process.JDE.GetWorkOrderTimes |
| Post Processing | None |
| JDE Table | JDESTAGE.F31122_VIEW |
**Schedule Configuration:**
| Schedule | Enabled | Interval | Prepurge | ReIndex |
|----------|---------|----------|----------|---------|
| Mass | Yes | 10080 | Yes | Yes |
| Daily | Yes | 1440 | No | No |
| Hourly | Yes | 60 | No | No |
**Query Files:**
- Full: `JDE/SQL_GET_WORKORDER_TIMES.sql`
- Filtered: `JDE/SQL_GET_WORKORDER_TIMES_FILTERED.sql`
- Archive: `JDE_ARCHIVE/SQL_GET_WORKORDER_TIMES.sql`
**Filter Parameters:** `dateUpdated`, `timeUpdated` (JDE date/time format)
---
### 6. WorkOrderComponent
| Property | Value |
|----------|-------|
| Source System | JDE |
| Source Data | WORKORDERCOMPONENT |
| Destination Table | WorkOrderComponent_Curr |
| Data Fetch Function | Commons.Process.JDE.GetWorkOrderComponents |
| Post Processing | None |
| JDE Table | JDESTAGE.F3111_VIEW |
**Schedule Configuration:**
| Schedule | Enabled | Interval | Prepurge | ReIndex |
|----------|---------|----------|----------|---------|
| Mass | Yes | 10080 | Yes | Yes |
| Daily | Yes | 1440 | No | No |
| Hourly | Yes | 60 | No | No |
**Query Files:**
- Full: `JDE/SQL_GET_WORKORDER_COMPONENTS.sql`
- Filtered: `JDE/SQL_GET_WORKORDER_COMPONENTS_FILTERED.sql`
- Archive: `JDE_ARCHIVE/SQL_GET_WORKORDER_COMPONENTS.sql`
**Filter Parameters:** `dateUpdated`, `timeUpdated` (JDE date/time format)
---
### 7. WorkOrderStep
| Property | Value |
|----------|-------|
| Source System | JDE |
| Source Data | WORKORDERSTEP |
| Destination Table | WorkOrderStep_Curr |
| Data Fetch Function | Commons.Process.JDE.GetWorkOrderSteps |
| Post Processing | None |
| JDE Table | JDESTAGE.F3112_VIEW |
**Schedule Configuration:**
| Schedule | Enabled | Interval | Prepurge | ReIndex |
|----------|---------|----------|----------|---------|
| Mass | Yes | 10080 | Yes | Yes |
| Daily | Yes | 1440 | No | No |
| Hourly | Yes | 60 | No | No |
**Query Files:**
- Full: `JDE/SQL_GET_WORKORDER_STEP.sql`
- Filtered: `JDE/SQL_GET_WORKORDER_STEP_FILTERED.sql`
- Archive: `JDE_ARCHIVE/SQL_GET_WORKORDER_STEP.sql`
**Filter Parameters:** `dateUpdated`, `timeUpdated` (JDE date/time format)
---
### 8. WorkOrderRouting
| Property | Value |
|----------|-------|
| Source System | JDE |
| Source Data | WORKORDERROUTING |
| Destination Table | WorkOrderRouting |
| Data Fetch Function | Commons.Process.JDE.GetWorkOrderRoutings |
| Post Processing | None |
| JDE Table | JDESTAGE.F3112Z1_VIEW |
**Schedule Configuration:**
| Schedule | Enabled | Interval | Prepurge | ReIndex |
|----------|---------|----------|----------|---------|
| Mass | Yes | 10080 | Yes | Yes |
| Daily | Yes | 1440 | No | No |
| Hourly | Yes | 60 | No | No |
**Query Files:**
- Full: `JDE/SQL_GET_WORKORDER_ROUTING.sql`
- Filtered: `JDE/SQL_GET_WORKORDER_ROUTING_FILTERED.sql`
**Filter Parameters:** `dateUpdated`, `timeUpdated` (JDE date/time format)
**Special Processing:** Filters out records with invalid dates (year < 1900 or > 2500)
---
### 9. Branch
| Property | Value |
|----------|-------|
| Source System | JDE |
| Source Data | BRANCH |
| Destination Table | Branch |
| Data Fetch Function | Commons.Process.JDE.GetBranches |
| Post Processing | None |
| JDE Table | JDESTAGE.F0006_VIEW |
**Schedule Configuration:**
| Schedule | Enabled | Interval | Prepurge | ReIndex |
|----------|---------|----------|----------|---------|
| Mass | Yes | 10080 | Yes | Yes |
| Daily | Yes | 1440 | No | No |
| Hourly | Yes | 60 | No | No |
**Query Files:**
- Full: `JDE/SQL_GET_BUSINESS_UNITS.sql`
- Filtered: `JDE/SQL_GET_BUSINESS_UNITS_FILTERED.sql`
**Filter Parameters:** `typeCode='BP'`, `dateUpdated`, `timeUpdated`
---
### 10. ProfitCenter
| Property | Value |
|----------|-------|
| Source System | JDE |
| Source Data | PROFITCENTER |
| Destination Table | ProfitCenter |
| Data Fetch Function | Commons.Process.JDE.GetProfitCenters |
| Post Processing | None |
| JDE Table | JDESTAGE.F0006_VIEW |
**Schedule Configuration:**
| Schedule | Enabled | Interval | Prepurge | ReIndex |
|----------|---------|----------|----------|---------|
| Mass | Yes | 10080 | Yes | Yes |
| Daily | Yes | 1440 | No | No |
| Hourly | Yes | 60 | No | No |
**Query Files:**
- Full: `JDE/SQL_GET_BUSINESS_UNITS.sql`
- Filtered: `JDE/SQL_GET_BUSINESS_UNITS_FILTERED.sql`
**Filter Parameters:** `typeCode='I3'`, `dateUpdated`, `timeUpdated`
---
### 11. WorkCenter
| Property | Value |
|----------|-------|
| Source System | JDE |
| Source Data | WORKCENTER |
| Destination Table | WorkCenter |
| Data Fetch Function | Commons.Process.JDE.GetWorkCenters |
| Post Processing | None |
| JDE Table | JDESTAGE.F0006_VIEW |
**Schedule Configuration:**
| Schedule | Enabled | Interval | Prepurge | ReIndex |
|----------|---------|----------|----------|---------|
| Mass | Yes | 10080 | Yes | Yes |
| Daily | Yes | 1440 | No | No |
| Hourly | Yes | 60 | No | No |
**Query Files:**
- Full: `JDE/SQL_GET_BUSINESS_UNITS.sql`
- Filtered: `JDE/SQL_GET_BUSINESS_UNITS_FILTERED.sql`
**Filter Parameters:** `typeCode='WC'`, `dateUpdated`, `timeUpdated`
---
### 12. StatusCode
| Property | Value |
|----------|-------|
| Source System | JDE |
| Source Data | STATUSCODE |
| Destination Table | StatusCode |
| Data Fetch Function | Commons.Process.JDE.GetStatusCodes |
| Post Processing | None |
| JDE Table | JDESTAGE.F0005_VIEW |
| **Connection** | **GIW (not JDE)** |
**Schedule Configuration:**
| Schedule | Enabled | Interval | Prepurge | ReIndex |
|----------|---------|----------|----------|---------|
| Mass | Yes | 10080 | Yes | Yes |
| Daily | Yes | 1440 | No | No |
| Hourly | Yes | 60 | No | No |
**Query Files:**
- Full: `JDE/SQL_GET_STATUS_CODES.sql`
- Filtered: `JDE/SQL_GET_STATUS_CODES_FILTERED.sql`
**Filter Parameters:** `dateUpdated`, `timeUpdated`
**Note:** This sync uses the GIW connection (Config.GIWCS) via DDTek.Oracle, not the standard JDE connection.
---
### 13. JdeUser
| Property | Value |
|----------|-------|
| Source System | JDE |
| Source Data | USER |
| Destination Table | JdeUser |
| Data Fetch Function | Commons.Process.JDE.GetUsers |
| Post Processing | None |
| JDE Tables | JDESTAGE.F0101_VIEW, JDESTAGE.F0092_VIEW |
**Schedule Configuration:**
| Schedule | Enabled | Interval | Prepurge | ReIndex |
|----------|---------|----------|----------|---------|
| Mass | Yes | 10080 | Yes | Yes |
| Daily | Yes | 1440 | No | No |
| Hourly | Yes | 60 | No | No |
**Query Files:**
- Full: `JDE/SQL_GET_USERS.sql`
**Note:** No filtered query variant exists. The same query is used for both full and incremental syncs (filter parameters are passed but not used in query).
---
### 14. OrgHierarchy
| Property | Value |
|----------|-------|
| Source System | JDE |
| Source Data | ORGHIERARCHY |
| Destination Table | OrgHierarchy |
| Data Fetch Function | Commons.Process.JDE.GetOrgHierarchy |
| Post Processing | None |
| JDE Table | JDESTAGE.F30006_VIEW |
**Schedule Configuration:**
| Schedule | Enabled | Interval | Prepurge | ReIndex |
|----------|---------|----------|----------|---------|
| Mass | Yes | 10080 | Yes | Yes |
| Daily | Yes | 1440 | No | No |
| Hourly | Yes | 60 | No | No |
**Query Files:**
- Full: `JDE/SQL_GET_ORG_HIERARCHY.sql`
- Filtered: `JDE/SQL_GET_ORG_HIERARCHY_FILTERED.sql`
**Filter Parameters:** `dateUpdated`, `timeUpdated` (JDE date/time format)
---
### 15. RouteMaster
| Property | Value |
|----------|-------|
| Source System | JDE |
| Source Data | ROUTEMASTER |
| Destination Table | RouteMaster |
| Data Fetch Function | Commons.Process.JDE.GetRouteMasters |
| Post Processing | None |
| JDE Table | JDESTAGE.F3003_VIEW |
**Schedule Configuration:**
| Schedule | Enabled | Interval | Prepurge | ReIndex |
|----------|---------|----------|----------|---------|
| Mass | Yes | 10080 | Yes | Yes |
| Daily | Yes | 1440 | No | No |
| Hourly | Yes | 60 | No | No |
**Query Files:**
- Full: `JDE/SQL_GET_ROUTE_MASTER.sql`
- Filtered: `JDE/SQL_GET_ROUTE_MASTER_FILTERED.sql`
**Filter Parameters:** `dateUpdated`, `timeUpdated` (JDE date/time format)
---
### 16. FunctionCode
| Property | Value |
|----------|-------|
| Source System | JDE |
| Source Data | FUNCTIONCODE |
| Destination Table | FunctionCode |
| Data Fetch Function | Commons.Process.JDE.GetFunctionCodes |
| Post Processing | None |
| JDE Table | PRODDTA.F00192 (direct table, not view) |
**Schedule Configuration:**
| Schedule | Enabled | Interval | Prepurge | ReIndex |
|----------|---------|----------|----------|---------|
| Mass | Yes | 10080 | Yes | Yes |
| Daily | Yes | 1440 | Yes | Yes |
| Hourly | Yes | 60 | Yes | Yes |
**Query Files:**
- Full: `JDE/SQL_GET_FUNCTION_CODES.sql`
**Note:** No filtered query variant. Always performs full reload (PrepurgeData=true for all schedules). Uses aggregation with LISTAGG to combine multi-row descriptions.
---
### 17. MisData
| Property | Value |
|----------|-------|
| Source System | CMS |
| Source Data | MISDATA |
| Destination Table | MisData |
| Data Fetch Function | Commons.Process.CMS.GetMisData |
| Post Processing | Commons.Process.LotFinderDB.PostProcessMisData |
| CMS Schema | INFODBA |
**Schedule Configuration:**
| Schedule | Enabled | Interval | Prepurge | ReIndex |
|----------|---------|----------|----------|---------|
| Mass | Yes | 100800 | Yes | Yes |
| Daily | Yes | 1440 | No | No |
| Hourly | **No** | 60 | No | No |
**Query Files:**
- Full: `CMS/SQL_GET_MIS_DATA.sql`
- Filtered: `CMS/SQL_GET_MIS_DATA_FILTERED.sql`
**Filter Parameters:** `lastUpdateDT` (standard DateTime)
**Note:**
- Mass interval is 100800 minutes (~10 weeks), much longer than other syncs
- Hourly sync is disabled
- Has post-processing action for additional data transformation
- Query timeout is extended (1200*50 = 60000 seconds)
- ReleaseDate is converted to local time after fetch
---
## Archive Query Pattern
Archive syncs (#18-22) fetch historical data using UNION ALL from both current and archived schemas:
```sql
SELECT ... FROM QADTA.F{table}
UNION ALL
SELECT ... FROM ARCDTAQA.F{table}
```
**Query Files:** Located in `JDE_ARCHIVE/` folder.
**Note:** Archive syncs have `IsEnabled=true` in dsconfig but all schedule types have `Enabled=false`. They are configured for manual/on-demand execution only.
---
## Source Database Reference
### JDE Oracle Connection (Config.JDECS)
- **Driver:** Oracle.ManagedDataAccess.Client
- **Schemas Used:**
- `JDESTAGE` - Views for current production data
- `PRODDTA` - Direct table access (FunctionCode only)
- `QADTA` - Current data for archive queries
- `ARCDTAQA` - Archived historical data
### GIW Oracle Connection (Config.GIWCS)
- **Driver:** DDTek.Oracle
- **Used By:** StatusCode sync only
- **Schema:** JDESTAGE
### CMS Oracle Connection (Config.CMSCS)
- **Driver:** DDTek.Oracle
- **Schema:** INFODBA
- **Tables:** Complex 11-table join for MIS data
### JDE Date/Time Format
JDE uses a special date/time format conversion:
- Dates are converted via `ToJDEDate()` helper
- Times are converted via `ToJDETime()` helper
- Filter conditions use: `(date > :dateUpdated) OR (date = :dateUpdated AND time >= :timeUpdated)`
---
## Source Files Reference
| File Type | Location |
|-----------|----------|
| dsconfig JSON files | OLD/WorkerService/dsconfig/*.json |
| JDE Source Queries | OLD/WorkerService/bin/UPDATER/JdeQueries/*.sql |
| JDE Archive Queries | OLD/WorkerService/bin/UPDATER/JdeArchivalQueries/*.sql |
| CMS Source Queries | OLD/DataModel/CmsQueries/*.sql |
| C# Data Fetch Code | OLD/DataModel/Process/JDE.*.cs, CMS.*.cs |
| Configuration | OLD/DataModel/Config.cs |
| Query Repository | OLD/DataModel/Process/QueryRepository.cs |
+12
View File
@@ -0,0 +1,12 @@
-- Business Units Full Query (Branch, ProfitCenter, WorkCenter)
-- Source: JDESTAGE.F0006_VIEW
-- Destination: Branch (typeCode='BP'), ProfitCenter (typeCode='I3'), WorkCenter (typeCode='WC')
-- Schedule: Mass/Daily/Hourly
-- Parameter: :typeCode ('BP', 'I3', or 'WC')
SELECT TRIM(wc.COSTCENTER_MCMCU) AS Code,
TRIM(wc.DESCRIPTION001_MCDL01) AS Description,
wc.DATEUPDATED_MCUPMJ AS DateUpdated,
wc.TIMELASTUPDATED_MCUPMT AS TimeUpdated
FROM JDESTAGE.F0006_VIEW wc
WHERE wc.COSTCENTERTYPE_MCSTYL = :typeCode
@@ -0,0 +1,16 @@
-- Business Units Filtered Query (Branch, ProfitCenter, WorkCenter)
-- Source: JDESTAGE.F0006_VIEW
-- Destination: Branch (typeCode='BP'), ProfitCenter (typeCode='I3'), WorkCenter (typeCode='WC')
-- Schedule: Daily/Hourly (incremental merge)
-- Parameters: :typeCode ('BP', 'I3', or 'WC'), :dateUpdated (JDE date), :timeUpdated (JDE time)
SELECT TRIM(wc.COSTCENTER_MCMCU) AS Code,
TRIM(wc.DESCRIPTION001_MCDL01) AS Description,
wc.DATEUPDATED_MCUPMJ AS DateUpdated,
wc.TIMELASTUPDATED_MCUPMT AS TimeUpdated
FROM JDESTAGE.F0006_VIEW wc
WHERE wc.COSTCENTERTYPE_MCSTYL = :typeCode AND
(
wc.DATEUPDATED_MCUPMJ > :dateUpdated OR
(wc.DATEUPDATED_MCUPMJ = :dateUpdated AND wc.TIMELASTUPDATED_MCUPMT >= :timeUpdated)
)
+21
View File
@@ -0,0 +1,21 @@
-- FunctionCode Query (Full only - always full reload)
-- Source: PRODDTA.F00192 (direct table, not view)
-- Destination: FunctionCode
-- Schedule: Mass/Daily/Hourly (all with PrepurgeData=true)
-- Note: No filtered variant exists. Always performs full reload.
-- Note: Uses LISTAGG to combine multi-row descriptions into single row per code.
SELECT Code,
TRIM(LISTAGG(Description, ' ') WITHIN GROUP(ORDER BY Description) || CASE WHEN MAX(total_lengthb) > 4000 THEN '...' ELSE '' END) Description,
SYSDATE AS LastUpdateDT
FROM (
SELECT TRIM(fc.CFKY) AS Code,
TRIM(ASCIISTR(fc.CFDS80)) AS Description,
SUM(LENGTHB(TRIM(fc.CFDS80))+1) OVER(PARTITION BY TRIM(fc.CFKY) ORDER BY TRIM(fc.CFDS80)) - 1 cumul_lengthb,
SUM(LENGTHB(TRIM(fc.CFDS80))+1) OVER(PARTITION BY TRIM(fc.CFKY)) - 1 total_lengthb,
COUNT(*) OVER(PARTITION BY TRIM(fc.CFKY)) num_values
FROM PRODDTA.F00192 fc
WHERE TRIM(fc.CFKY) IS NOT NULL
)
WHERE total_lengthb <= 4000 OR cumul_lengthb <= 4000 - length('...')
GROUP BY Code
+13
View File
@@ -0,0 +1,13 @@
-- Item Full Query
-- Source: JDESTAGE.F4101_VIEW
-- Destination: Item
-- Schedule: Mass/Daily/Hourly
SELECT pn.IDENTIFIERSHORTITEM_IMITM AS ShortItemNumber,
TRIM(pn.IDENTIFIER2NDITEM_IMLITM) AS ItemNumber,
TRIM(pn.DESCRIPTIONLINE1_IMDSC1) AS Description,
TRIM(pn.PURCHASINGREPORTCODE4_IMPRP4) AS PlanningFamily,
pn.DATEUPDATED_IMUPMJ AS DateUpdated,
pn.TIMEOFDAY_IMTDAY AS TimeUpdated
FROM JDESTAGE.F4101_VIEW pn
WHERE TRIM(pn.IDENTIFIER2NDITEM_IMLITM) IS NOT NULL
+18
View File
@@ -0,0 +1,18 @@
-- Item Filtered Query (Incremental)
-- Source: JDESTAGE.F4101_VIEW
-- Destination: Item
-- Schedule: Daily/Hourly (incremental merge)
-- Parameters: :dateUpdated (JDE date), :timeUpdated (JDE time)
SELECT pn.IDENTIFIERSHORTITEM_IMITM AS ShortItemNumber,
TRIM(pn.IDENTIFIER2NDITEM_IMLITM) AS ItemNumber,
TRIM(pn.DESCRIPTIONLINE1_IMDSC1) AS Description,
TRIM(pn.PURCHASINGREPORTCODE4_IMPRP4) AS PlanningFamily,
pn.DATEUPDATED_IMUPMJ AS DateUpdated,
pn.TIMEOFDAY_IMTDAY AS TimeUpdated
FROM JDESTAGE.F4101_VIEW pn
WHERE TRIM(pn.IDENTIFIER2NDITEM_IMLITM) IS NOT NULL AND
(
pn.DATEUPDATED_IMUPMJ > :dateUpdated OR
(pn.DATEUPDATED_IMUPMJ = :dateUpdated AND pn.TIMEOFDAY_IMTDAY >= :timeUpdated)
)
+15
View File
@@ -0,0 +1,15 @@
-- Lot Full Query
-- Source: JDESTAGE.F4108_VIEW
-- Destination: Lot
-- Schedule: Mass/Daily/Hourly
SELECT TRIM(lot.LOT_IOLOTN) AS LotNumber,
TRIM(lot.COSTCENTER_IOMCU) AS BranchCode,
lot.IDENTIFIERSHORTITEM_IOITM AS ShortItemNumber,
TRIM(lot.IDENTIFIER2NDITEM_IOLITM) AS ItemNumber,
lot.PRIMARYLASTVENDORNO_IOVEND AS SupplierCode,
lot.DATEUPDATED_IOUPMJ AS DateUpdated,
lot.TIMEOFDAY_IOTDAY AS TimeUpdated
FROM JDESTAGE.F4108_VIEW lot
WHERE TRIM(lot.LOT_IOLOTN) IS NOT NULL AND
TRIM(lot.COSTCENTER_IOMCU) IS NOT NULL
+20
View File
@@ -0,0 +1,20 @@
-- Lot Filtered Query (Incremental)
-- Source: JDESTAGE.F4108_VIEW
-- Destination: Lot
-- Schedule: Daily/Hourly (incremental merge)
-- Parameters: :dateUpdated (JDE date), :timeUpdated (JDE time)
SELECT TRIM(lot.LOT_IOLOTN) AS LotNumber,
TRIM(lot.COSTCENTER_IOMCU) AS BranchCode,
lot.IDENTIFIERSHORTITEM_IOITM AS ShortItemNumber,
TRIM(lot.IDENTIFIER2NDITEM_IOLITM) AS ItemNumber,
lot.PRIMARYLASTVENDORNO_IOVEND AS SupplierCode,
lot.DATEUPDATED_IOUPMJ AS DateUpdated,
lot.TIMEOFDAY_IOTDAY AS TimeUpdated
FROM JDESTAGE.F4108_VIEW lot
WHERE TRIM(lot.LOT_IOLOTN) IS NOT NULL AND
TRIM(lot.COSTCENTER_IOMCU) IS NOT NULL AND
(
lot.DATEUPDATED_IOUPMJ > :dateUpdated OR
(lot.DATEUPDATED_IOUPMJ = :dateUpdated AND lot.TIMEOFDAY_IOTDAY >= :timeUpdated)
)
+16
View File
@@ -0,0 +1,16 @@
-- LotUsage Full Query
-- Source: JDESTAGE.F4111_VIEW
-- Destination: LotUsage_Curr
-- Schedule: Mass/Daily/Hourly
SELECT lu.UNIQUEKEYIDINTERNAL_ILUKID AS UniqueID,
lu.DOCUMENTORDERINVOICEE_ILDOCO AS WorkOrderNumber,
TRIM(lu.LOT_ILLOTN) AS LotNumber,
TRIM(lu.COSTCENTER_ILMCU) AS BranchCode,
lu.IDENTIFIERSHORTITEM_ILITM AS ShortItemNumber,
lu.QUANTITYTRANSACTION_ILTRQT AS Quantity,
lu.DATETRANSACTIONJULIAN_ILTRDJ AS DateUpdated,
lu.TIMEOFDAY_ILTDAY AS TimeUpdated
FROM JDESTAGE.F4111_VIEW lu
WHERE lu.DOCUMENTTYPE_ILDCT = 'IM' AND
TRIM(lu.LOT_ILLOTN) IS NOT NULL
@@ -0,0 +1,21 @@
-- LotUsage Filtered Query (Incremental)
-- Source: JDESTAGE.F4111_VIEW
-- Destination: LotUsage_Curr
-- Schedule: Daily/Hourly (incremental merge)
-- Parameters: :dateUpdated (JDE date), :timeUpdated (JDE time)
SELECT lu.UNIQUEKEYIDINTERNAL_ILUKID AS UniqueID,
lu.DOCUMENTORDERINVOICEE_ILDOCO AS WorkOrderNumber,
TRIM(lu.LOT_ILLOTN) AS LotNumber,
TRIM(lu.COSTCENTER_ILMCU) AS BranchCode,
lu.IDENTIFIERSHORTITEM_ILITM AS ShortItemNumber,
lu.QUANTITYTRANSACTION_ILTRQT AS Quantity,
lu.DATETRANSACTIONJULIAN_ILTRDJ AS DateUpdated,
lu.TIMEOFDAY_ILTDAY AS TimeUpdated
FROM JDESTAGE.F4111_VIEW lu
WHERE lu.DOCUMENTTYPE_ILDCT = 'IM' AND
TRIM(lu.LOT_ILLOTN) IS NOT NULL AND
(
lu.DATETRANSACTIONJULIAN_ILTRDJ > :dateUpdated OR
(lu.DATETRANSACTIONJULIAN_ILTRDJ = :dateUpdated AND lu.TIMEOFDAY_ILTDAY >= :timeUpdated)
)
+13
View File
@@ -0,0 +1,13 @@
-- OrgHierarchy Full Query
-- Source: JDESTAGE.F30006_VIEW
-- Destination: OrgHierarchy
-- Schedule: Mass/Daily/Hourly
SELECT TRIM(oh.DISPATCHGROUP_IWMCUW) AS ProfitCenterCode,
TRIM(oh.COSTCENTER_IWMCU) AS WorkCenterCode,
TRIM(oh.COSTCENTERALT_IWMMCU) AS BranchCode,
oh.DATEUPDATED_IWUPMJ AS DateUpdated,
oh.TIMEOFDAY_IWTDAY AS TimeUpdated
FROM JDESTAGE.F30006_VIEW oh
WHERE TRIM(oh.COSTCENTER_IWMCU) IS NOT NULL AND
TRIM(oh.COSTCENTERALT_IWMMCU) IS NOT NULL
@@ -0,0 +1,18 @@
-- OrgHierarchy Filtered Query (Incremental)
-- Source: JDESTAGE.F30006_VIEW
-- Destination: OrgHierarchy
-- Schedule: Daily/Hourly (incremental merge)
-- Parameters: :dateUpdated (JDE date), :timeUpdated (JDE time)
SELECT TRIM(oh.DISPATCHGROUP_IWMCUW) AS ProfitCenterCode,
TRIM(oh.COSTCENTER_IWMCU) AS WorkCenterCode,
TRIM(oh.COSTCENTERALT_IWMMCU) AS BranchCode,
oh.DATEUPDATED_IWUPMJ AS DateUpdated,
oh.TIMEOFDAY_IWTDAY AS TimeUpdated
FROM JDESTAGE.F30006_VIEW oh
WHERE TRIM(oh.COSTCENTER_IWMCU) IS NOT NULL AND
TRIM(oh.COSTCENTERALT_IWMMCU) IS NOT NULL AND
(
oh.DATEUPDATED_IWUPMJ > :dateUpdated OR
(oh.DATEUPDATED_IWUPMJ = :dateUpdated AND oh.TIMEOFDAY_IWTDAY >= :timeUpdated)
)
+17
View File
@@ -0,0 +1,17 @@
-- RouteMaster Full Query
-- Source: JDESTAGE.F3003_VIEW
-- Destination: RouteMaster
-- Schedule: Mass/Daily/Hourly
SELECT TRIM(route_master.COSTCENTERALT_IRMMCU) AS BranchCode,
TRIM(route_master.ITEMNUMBER2NDKIT_IRKITL) AS ItemNumber,
TRIM(route_master.TYPEROUTING_IRTRT) AS RoutingType,
route_master.SEQUENCENOOPERATIONS_IROPSQ AS SequenceNumber,
TRIM(route_master.USERRESERVEDREFERENCE_IRURRF) AS FunctionCode,
TRIM(route_master.COSTCENTER_IRMCU) AS WorkCenterCode,
route_master.EFFECTIVEFROMDATE_IREFFF AS StartDate,
route_master.EFFECTIVETHRUDATE_IREFFT AS EndDate,
route_master.DATEUPDATED_IRUPMJ AS DateUpdated,
route_master.TIMEOFDAY_IRTDAY AS TimeUpdated
FROM JDESTAGE.F3003_VIEW route_master
WHERE TRIM(route_master.ITEMNUMBER2NDKIT_IRKITL) IS NOT NULL
@@ -0,0 +1,22 @@
-- RouteMaster Filtered Query (Incremental)
-- Source: JDESTAGE.F3003_VIEW
-- Destination: RouteMaster
-- Schedule: Daily/Hourly (incremental merge)
-- Parameters: :dateUpdated (JDE date), :timeUpdated (JDE time)
SELECT TRIM(route_master.COSTCENTERALT_IRMMCU) AS BranchCode,
TRIM(route_master.ITEMNUMBER2NDKIT_IRKITL) AS ItemNumber,
TRIM(route_master.TYPEROUTING_IRTRT) AS RoutingType,
route_master.SEQUENCENOOPERATIONS_IROPSQ AS SequenceNumber,
TRIM(route_master.USERRESERVEDREFERENCE_IRURRF) AS FunctionCode,
TRIM(route_master.COSTCENTER_IRMCU) AS WorkCenterCode,
route_master.EFFECTIVEFROMDATE_IREFFF AS StartDate,
route_master.EFFECTIVETHRUDATE_IREFFT AS EndDate,
route_master.DATEUPDATED_IRUPMJ AS DateUpdated,
route_master.TIMEOFDAY_IRTDAY AS TimeUpdated
FROM JDESTAGE.F3003_VIEW route_master
WHERE TRIM(route_master.ITEMNUMBER2NDKIT_IRKITL) IS NOT NULL AND
(
route_master.DATEUPDATED_IRUPMJ > :dateUpdated OR
(route_master.DATEUPDATED_IRUPMJ = :dateUpdated AND route_master.TIMEOFDAY_IRTDAY >= :timeUpdated)
)
+14
View File
@@ -0,0 +1,14 @@
-- StatusCode Full Query
-- Source: JDESTAGE.F0005_VIEW
-- Destination: StatusCode
-- Schedule: Mass/Daily/Hourly
-- Note: Uses GIW connection (Config.GIWCS), not JDE connection
SELECT TRIM(sc.USERDEFINEDCODE_DRKY) AS CODE,
TRIM(sc.DESCRIPTION001_DRDL01) AS Description,
sc.DATEUPDATED_DRUPMJ AS DateUpdated,
sc.TIMELASTUPDATED_DRUPMT AS TimeUpdated
FROM JDESTAGE.F0005_VIEW sc
WHERE TRIM(sc.PRODUCTCODE_DRSY) = '00' AND
sc.USERDEFINEDCODES_DRRT = 'SS' AND
TRIM(sc.USERDEFINEDCODE_DRKY) IS NOT NULL
@@ -0,0 +1,19 @@
-- StatusCode Filtered Query (Incremental)
-- Source: JDESTAGE.F0005_VIEW
-- Destination: StatusCode
-- Schedule: Daily/Hourly (incremental merge)
-- Parameters: :dateUpdated, :timeUpdated
-- Note: Uses GIW connection (Config.GIWCS), not JDE connection
SELECT TRIM(sc.USERDEFINEDCODE_DRKY) AS CODE,
TRIM(sc.DESCRIPTION001_DRDL01) AS Description,
sc.DATEUPDATED_DRUPMJ AS DateUpdated,
sc.TIMELASTUPDATED_DRUPMT AS TimeUpdated
FROM JDESTAGE.F0005_VIEW sc
WHERE TRIM(sc.PRODUCTCODE_DRSY) = '00' AND
sc.USERDEFINEDCODES_DRRT = 'SS' AND
TRIM(sc.USERDEFINEDCODE_DRKY) IS NOT NULL AND
(
sc.DATEUPDATED_DRUPMJ > :dateUpdated OR
(sc.DATEUPDATED_DRUPMJ = :dateUpdated AND sc.TIMELASTUPDATED_DRUPMT >= :timeUpdated)
)
+24
View File
@@ -0,0 +1,24 @@
-- JdeUser Query (Full only - no filtered variant)
-- Source: JDESTAGE.F0101_VIEW, JDESTAGE.F0092_VIEW
-- Destination: JdeUser
-- Schedule: Mass/Daily/Hourly
-- Note: Same query used for both full and incremental (filter params passed but not used)
WITH USER_CTE AS (
SELECT ab.ADDRESSNUMBER_ABAN8 AS AddressNumber,
TRIM(pro.USERID_ULUSER) AS UserID,
TRIM(ab.NAMEALPHA_ABALPH) AS FullName,
ab.DATEUPDATED_ABUPMJ AS DateUpdated,
ab.TIMELASTUPDATED_ABUPMT AS TimeUpdated,
ROW_NUMBER() OVER (PARTITION BY ab.ADDRESSNUMBER_ABAN8 ORDER BY ab.DATEUPDATED_ABUPMJ DESC, ab.TIMELASTUPDATED_ABUPMT DESC) RN
FROM JDESTAGE.F0101_VIEW ab LEFT OUTER JOIN
JDESTAGE.F0092_VIEW pro ON (ab.ADDRESSNUMBER_ABAN8 = pro.ADDRESSNUMBER_ULAN8)
WHERE ab.ADDRESSTYPEEMPLOYEE_ABATE = 'Y'
)
SELECT AddressNumber,
UserID,
FullName,
DateUpdated,
TimeUpdated
FROM USER_CTE
WHERE RN = 1
+23
View File
@@ -0,0 +1,23 @@
-- WorkOrder Full Query
-- Source: JDESTAGE.F4801_VIEW
-- Destination: WorkOrder_Curr
-- Schedule: Mass/Daily/Hourly
SELECT wo.DOCUMENTORDERINVOICEE_WADOCO AS WorkOrderNumber,
TRIM(wo.COSTCENTERALT_WAMMCU) AS BranchCode,
TRIM(wo.LOT_WALOTN) AS LotNumber,
TRIM(wo.IDENTIFIER2NDITEM_WALITM) AS ItemNumber,
wo.IDENTIFIERSHORTITEM_WAITM AS ShortItemNumber,
TRIM(wo.PARENTWONUMBER_WAPARS) AS ParentWorkOrderNumber,
wo.UNITSTRANSACTIONQTY_WAUORG AS OrderQuantity,
wo.UNITSQUANBACKORHELD_WASOBK AS HeldQuantity,
wo.UNITSQUANTITYCANCELED_WASOCN AS ScrappedQuantity,
wo.UNITSQUANTITYSHIPPED_WASOQS AS ShippedQuantity,
TRIM(wo.STATUSCODEWO_WASRST) AS StatusCode,
wo.DATESTATUSCHANGED_WADCG AS StatusCodeUpdateDT,
wo.DATETRANSACTIONJULIAN_WATRDJ AS IssueDate,
wo.DATESTART_WASTRT AS StartDate,
TRIM(wo.TYPEROUTING_WATRT) AS RoutingType,
wo.DATEUPDATED_WAUPMJ AS DateUpdated,
wo.TIMEOFDAY_WATDAY AS TimeUpdated
FROM JDESTAGE.F4801_VIEW wo
@@ -0,0 +1,28 @@
-- WorkOrder Filtered Query (Incremental)
-- Source: JDESTAGE.F4801_VIEW
-- Destination: WorkOrder_Curr
-- Schedule: Daily/Hourly (incremental merge)
-- Parameters: :dateUpdated (JDE date), :timeUpdated (JDE time)
SELECT wo.DOCUMENTORDERINVOICEE_WADOCO AS WorkOrderNumber,
TRIM(wo.COSTCENTERALT_WAMMCU) AS BranchCode,
TRIM(wo.LOT_WALOTN) AS LotNumber,
TRIM(wo.IDENTIFIER2NDITEM_WALITM) AS ItemNumber,
wo.IDENTIFIERSHORTITEM_WAITM AS ShortItemNumber,
TRIM(wo.PARENTWONUMBER_WAPARS) AS ParentWorkOrderNumber,
wo.UNITSTRANSACTIONQTY_WAUORG AS OrderQuantity,
wo.UNITSQUANBACKORHELD_WASOBK AS HeldQuantity,
wo.UNITSQUANTITYCANCELED_WASOCN AS ScrappedQuantity,
wo.UNITSQUANTITYSHIPPED_WASOQS AS ShippedQuantity,
TRIM(wo.STATUSCODEWO_WASRST) AS StatusCode,
wo.DATESTATUSCHANGED_WADCG AS StatusCodeUpdateDT,
wo.DATETRANSACTIONJULIAN_WATRDJ AS IssueDate,
wo.DATESTART_WASTRT AS StartDate,
TRIM(wo.TYPEROUTING_WATRT) AS RoutingType,
wo.DATEUPDATED_WAUPMJ AS DateUpdated,
wo.TIMEOFDAY_WATDAY AS TimeUpdated
FROM JDESTAGE.F4801_VIEW wo
WHERE (
wo.DATEUPDATED_WAUPMJ > :dateUpdated OR
(wo.DATEUPDATED_WAUPMJ = :dateUpdated AND wo.TIMEOFDAY_WATDAY >= :timeUpdated)
)
@@ -0,0 +1,15 @@
-- WorkOrderComponent Full Query
-- Source: JDESTAGE.F3111_VIEW
-- Destination: WorkOrderComponent_Curr
-- Schedule: Mass/Daily/Hourly
SELECT woc.UNIQUEKEYIDINTERNAL_WMUKID AS UniqueID,
woc.DOCUMENTORDERINVOICEE_WMDOCO AS WorkOrderNumber,
TRIM(woc.LOT_WMLOTN) AS LotNumber,
TRIM(woc.BRANCHCOMPONENT_WMCMCU) AS BranchCode,
woc.COMPONENTITEMNOSHORT_WMCPIT AS ShortItemNumber,
woc.QUANTITYTRANSACTION_WMTRQT AS Quantity,
woc.DATEUPDATED_WMUPMJ AS DateUpdated,
woc.TIMEOFDAY_WMTDAY AS TimeUpdated
FROM JDESTAGE.F3111_VIEW woc
WHERE TRIM(woc.LOT_WMLOTN) IS NOT NULL
@@ -0,0 +1,20 @@
-- WorkOrderComponent Filtered Query (Incremental)
-- Source: JDESTAGE.F3111_VIEW
-- Destination: WorkOrderComponent_Curr
-- Schedule: Daily/Hourly (incremental merge)
-- Parameters: :dateUpdated (JDE date), :timeUpdated (JDE time)
SELECT woc.UNIQUEKEYIDINTERNAL_WMUKID AS UniqueID,
woc.DOCUMENTORDERINVOICEE_WMDOCO AS WorkOrderNumber,
TRIM(woc.LOT_WMLOTN) AS LotNumber,
TRIM(woc.BRANCHCOMPONENT_WMCMCU) AS BranchCode,
woc.COMPONENTITEMNOSHORT_WMCPIT AS ShortItemNumber,
woc.QUANTITYTRANSACTION_WMTRQT AS Quantity,
woc.DATEUPDATED_WMUPMJ AS DateUpdated,
woc.TIMEOFDAY_WMTDAY AS TimeUpdated
FROM JDESTAGE.F3111_VIEW woc
WHERE TRIM(woc.LOT_WMLOTN) IS NOT NULL AND
(
woc.DATEUPDATED_WMUPMJ > :dateUpdated OR
(woc.DATEUPDATED_WMUPMJ = :dateUpdated AND woc.TIMEOFDAY_WMTDAY >= :timeUpdated)
)
@@ -0,0 +1,24 @@
-- WorkOrderRouting Full Query
-- Source: JDESTAGE.F3112Z1_VIEW
-- Destination: WorkOrderRouting
-- Schedule: Mass/Daily/Hourly
SELECT TRIM(woz.EDIUSERID_SZEDUS) AS UserID,
TRIM(woz.EDIBATCHNUMBER_SZEDBT) AS BatchNumber,
TRIM(woz.EDITRANSACTNUMBER_SZEDTN) AS TransactionNumber,
woz.EDILINENUMBER_SZEDLN AS LineNumber,
woz.SEQUENCENOOPERATIONS_SZOPSQ AS StepNumber,
TRIM(woz.COSTCENTER_SZMCU) AS WorkCenterCode,
woz.DOCUMENTORDERINVOICEE_SZDOCO AS WorkOrderNumber,
TRIM(woz.TYPEROUTING_SZTRT) AS RoutingType,
TRIM(woz.COSTCENTERALT_SZMMCU) AS BranchCode,
TRIM(woz.DESCRIPTIONLINE1_SZDSC1) AS StepDescription,
TRIM(woz.USERRESERVEDREFERENCE_SZURRF) AS FunctionCode,
woz.DATETRANSACTIONJULIAN_SZTRDJ AS TransactionDate,
woz.DATEUPDATED_SZUPMJ AS DateUpdated,
woz.TIMEOFDAY_SZTDAY AS TimeUpdated
FROM JDESTAGE.F3112Z1_VIEW woz
WHERE woz.TYPETRANSACTION_SZTYTN = 'JDERTG' AND
woz.DIRECTIONINDICATOR_SZDRIN = '2' AND
woz.TRANSACTIONACTION_SZTNAC = '02' AND
woz.PROGRAMID_SZPID = 'ER31410'
@@ -0,0 +1,29 @@
-- WorkOrderRouting Filtered Query (Incremental)
-- Source: JDESTAGE.F3112Z1_VIEW
-- Destination: WorkOrderRouting
-- Schedule: Daily/Hourly (incremental merge)
-- Parameters: :dateUpdated (JDE date), :timeUpdated (JDE time)
SELECT TRIM(woz.EDIUSERID_SZEDUS) AS UserID,
TRIM(woz.EDIBATCHNUMBER_SZEDBT) AS BatchNumber,
TRIM(woz.EDITRANSACTNUMBER_SZEDTN) AS TransactionNumber,
woz.EDILINENUMBER_SZEDLN AS LineNumber,
woz.SEQUENCENOOPERATIONS_SZOPSQ AS StepNumber,
TRIM(woz.COSTCENTER_SZMCU) AS WorkCenterCode,
woz.DOCUMENTORDERINVOICEE_SZDOCO AS WorkOrderNumber,
TRIM(woz.TYPEROUTING_SZTRT) AS RoutingType,
TRIM(woz.COSTCENTERALT_SZMMCU) AS BranchCode,
TRIM(woz.DESCRIPTIONLINE1_SZDSC1) AS StepDescription,
TRIM(woz.USERRESERVEDREFERENCE_SZURRF) AS FunctionCode,
woz.DATETRANSACTIONJULIAN_SZTRDJ AS TransactionDate,
woz.DATEUPDATED_SZUPMJ AS DateUpdated,
woz.TIMEOFDAY_SZTDAY AS TimeUpdated
FROM JDESTAGE.F3112Z1_VIEW woz
WHERE woz.TYPETRANSACTION_SZTYTN = 'JDERTG' AND
woz.DIRECTIONINDICATOR_SZDRIN = '2' AND
woz.TRANSACTIONACTION_SZTNAC = '02' AND
woz.PROGRAMID_SZPID = 'ER31410' AND
(
woz.DATEUPDATED_SZUPMJ > :dateUpdated OR
(woz.DATEUPDATED_SZUPMJ = :dateUpdated AND woz.TIMEOFDAY_SZTDAY >= :timeUpdated)
)
+19
View File
@@ -0,0 +1,19 @@
-- WorkOrderStep Full Query
-- Source: JDESTAGE.F3112_VIEW, JDESTAGE.F00192_VIEW
-- Destination: WorkOrderStep_Curr
-- Schedule: Mass/Daily/Hourly
SELECT wos.DOCUMENTORDERINVOICEE_WLDOCO AS WorkOrderNumber,
TRIM(wos.COSTCENTERALT_WLMMCU) AS BranchCode,
TRIM(wos.COSTCENTER_WLMCU) AS WorkCenterCode,
wos.SEQUENCENOOPERATIONS_WLOPSQ AS StepNumber,
TRIM(wos.DESCRIPTIONLINE1_WLDSC1) AS StepDescription,
TRIM(mes.DESCRIPT80CHARACTERS_CFDS80) AS FunctionOperationDescription,
wos.TYPEOPERATIONCODE_WLOPSC AS StepTypeCode,
CASE wos.DATESTART_WLSTRT WHEN TO_DATE('1900-01-01', 'yyyy-MM-dd') THEN NULL ELSE wos.DATESTART_WLSTRT END AS StartDT,
CASE wos.DATECOMPLETION_WLSTRX WHEN TO_DATE('1900-01-01', 'yyyy-MM-dd') THEN NULL ELSE wos.DATECOMPLETION_WLSTRX END AS EndDT,
TRIM(wos.USERRESERVEDREFERENCE_WLURRF) AS FunctionCode,
wos.DATEUPDATED_WLUPMJ AS DateUpdated,
wos.TIMEOFDAY_WLTDAY AS TimeUpdated
FROM JDESTAGE.F3112_VIEW wos LEFT OUTER JOIN
JDESTAGE.F00192_VIEW mes ON (wos.USERRESERVEDREFERENCE_WLURRF = mes.USERDEFINEDCODE_CFKY)
@@ -0,0 +1,24 @@
-- WorkOrderStep Filtered Query (Incremental)
-- Source: JDESTAGE.F3112_VIEW, JDESTAGE.F00192_VIEW
-- Destination: WorkOrderStep_Curr
-- Schedule: Daily/Hourly (incremental merge)
-- Parameters: :dateUpdated (JDE date), :timeUpdated (JDE time)
SELECT wos.DOCUMENTORDERINVOICEE_WLDOCO AS WorkOrderNumber,
TRIM(wos.COSTCENTERALT_WLMMCU) AS BranchCode,
TRIM(wos.COSTCENTER_WLMCU) AS WorkCenterCode,
wos.SEQUENCENOOPERATIONS_WLOPSQ AS StepNumber,
TRIM(wos.DESCRIPTIONLINE1_WLDSC1) AS StepDescription,
TRIM(mes.DESCRIPT80CHARACTERS_CFDS80) AS FunctionOperationDescription,
wos.TYPEOPERATIONCODE_WLOPSC AS StepTypeCode,
CASE wos.DATESTART_WLSTRT WHEN TO_DATE('1900-01-01', 'yyyy-MM-dd') THEN NULL ELSE wos.DATESTART_WLSTRT END AS StartDT,
CASE wos.DATECOMPLETION_WLSTRX WHEN TO_DATE('1900-01-01', 'yyyy-MM-dd') THEN NULL ELSE wos.DATECOMPLETION_WLSTRX END AS EndDT,
TRIM(wos.USERRESERVEDREFERENCE_WLURRF) AS FunctionCode,
wos.DATEUPDATED_WLUPMJ AS DateUpdated,
wos.TIMEOFDAY_WLTDAY AS TimeUpdated
FROM JDESTAGE.F3112_VIEW wos LEFT OUTER JOIN
JDESTAGE.F00192_VIEW mes ON (wos.USERRESERVEDREFERENCE_WLURRF = mes.USERDEFINEDCODE_CFKY)
WHERE (
wos.DATEUPDATED_WLUPMJ > :dateUpdated OR
(wos.DATEUPDATED_WLUPMJ = :dateUpdated AND wos.TIMEOFDAY_WLTDAY >= :timeUpdated)
)
+14
View File
@@ -0,0 +1,14 @@
-- WorkOrderTime Full Query
-- Source: JDESTAGE.F31122_VIEW
-- Destination: WorkOrderTime_Curr
-- Schedule: Mass/Daily/Hourly
SELECT wot.UNIQUEKEYIDINTERNAL_WTUKID AS UniqueID,
TRIM(wot.COSTCENTERALT_WTMMCU) AS BranchCode,
wot.DOCUMENTORDERINVOICEE_WTDOCO AS WorkOrderNumber,
wot.SEQUENCENOOPERATIONS_WTOPSQ AS StepNumber,
wot.ADDRESSNUMBER_WTAN8 AS AddressNumber,
wot.DTFORGLANDVOUCH1_WTDGL AS GlDate,
wot.DATEUPDATED_WTUPMJ AS DateUpdated,
wot.TIMEOFDAY_WTTDAY AS TimeUpdated
FROM JDESTAGE.F31122_VIEW wot
@@ -0,0 +1,19 @@
-- WorkOrderTime Filtered Query (Incremental)
-- Source: JDESTAGE.F31122_VIEW
-- Destination: WorkOrderTime_Curr
-- Schedule: Daily/Hourly (incremental merge)
-- Parameters: :dateUpdated (JDE date), :timeUpdated (JDE time)
SELECT wot.UNIQUEKEYIDINTERNAL_WTUKID AS UniqueID,
TRIM(wot.COSTCENTERALT_WTMMCU) AS BranchCode,
wot.DOCUMENTORDERINVOICEE_WTDOCO AS WorkOrderNumber,
wot.SEQUENCENOOPERATIONS_WTOPSQ AS StepNumber,
wot.ADDRESSNUMBER_WTAN8 AS AddressNumber,
wot.DTFORGLANDVOUCH1_WTDGL AS GlDate,
wot.DATEUPDATED_WTUPMJ AS DateUpdated,
wot.TIMEOFDAY_WTTDAY AS TimeUpdated
FROM JDESTAGE.F31122_VIEW wot
WHERE (
wot.DATEUPDATED_WTUPMJ > :dateUpdated OR
(wot.DATEUPDATED_WTUPMJ = :dateUpdated AND wot.TIMEOFDAY_WTTDAY >= :timeUpdated)
)
@@ -0,0 +1,30 @@
-- LotUsage Archive Query
-- Source: QADTA.F4111 (current) + ARCDTAQA.F4111 (archived)
-- Used by: GetLotUsagesArchive() - on-demand historical retrieval
-- Note: Not scheduled, used for historical lookups
SELECT lu.ILUKID AS UniqueID,
lu.ILDOCO AS WorkOrderNumber,
TRIM(lu.ILLOTN) AS LotNumber,
TRIM(lu.ILMCU) AS BranchCode,
lu.ILITM AS ShortItemNumber,
lu.ILTRQT AS Quantity,
lu.ILTRDJ AS DateUpdated,
lu.ILTDAY AS TimeUpdated
FROM QADTA.F4111 lu
WHERE lu.ILDCT = 'IM' AND
TRIM(lu.ILLOTN) IS NOT NULL
UNION ALL
SELECT lu.ILUKID AS UniqueID,
lu.ILDOCO AS WorkOrderNumber,
TRIM(lu.ILLOTN) AS LotNumber,
TRIM(lu.ILMCU) AS BranchCode,
lu.ILITM AS ShortItemNumber,
lu.ILTRQT AS Quantity,
lu.ILTRDJ AS DateUpdated,
lu.ILTDAY AS TimeUpdated
FROM ARCDTAQA.F4111 lu
WHERE lu.ILDCT = 'IM' AND
TRIM(lu.ILLOTN) IS NOT NULL
@@ -0,0 +1,44 @@
-- WorkOrder Archive Query
-- Source: QADTA.F4801 (current) + ARCDTAQA.F4801 (archived)
-- Used by: GetWorkOrdersArchive() - on-demand historical retrieval
-- Note: Not scheduled, used for historical lookups
SELECT wo.WADOCO AS WorkOrderNumber,
TRIM(wo.WAMMCU) AS BranchCode,
TRIM(wo.WALOTN) AS LotNumber,
TRIM(wo.WALITM) AS ItemNumber,
wo.WAITM AS ShortItemNumber,
TRIM(wo.WAPARS) AS ParentWorkOrderNumber,
wo.WAUORG AS OrderQuantity,
wo.WASOBK AS HeldQuantity,
wo.WASOCN AS ScrappedQuantity,
wo.WASOQS AS ShippedQuantity,
TRIM(wo.WASRST) AS StatusCode,
wo.WADCG AS StatusCodeUpdateDT,
wo.WATRDJ AS IssueDate,
wo.WASTRT AS StartDate,
TRIM(wo.WATRT) AS RoutingType,
wo.WAUPMJ AS DateUpdated,
wo.WATDAY AS TimeUpdated
FROM QADTA.F4801 wo
UNION ALL
SELECT wo.WADOCO AS WorkOrderNumber,
TRIM(wo.WAMMCU) AS BranchCode,
TRIM(wo.WALOTN) AS LotNumber,
TRIM(wo.WALITM) AS ItemNumber,
wo.WAITM AS ShortItemNumber,
TRIM(wo.WAPARS) AS ParentWorkOrderNumber,
wo.WAUORG AS OrderQuantity,
wo.WASOBK AS HeldQuantity,
wo.WASOCN AS ScrappedQuantity,
wo.WASOQS AS ShippedQuantity,
TRIM(wo.WASRST) AS StatusCode,
wo.WADCG AS StatusCodeUpdateDT,
wo.WATRDJ AS IssueDate,
wo.WASTRT AS StartDate,
TRIM(wo.WATRT) AS RoutingType,
wo.WAUPMJ AS DateUpdated,
wo.WATDAY AS TimeUpdated
FROM ARCDTAQA.F4801 wo
@@ -0,0 +1,28 @@
-- WorkOrderComponent Archive Query
-- Source: QADTA.F3111 (current) + ARCDTAQA.F3111 (archived)
-- Used by: GetWorkOrderComponentsArchive() - on-demand historical retrieval
-- Note: Not scheduled, used for historical lookups
SELECT woc.WMUKID AS UniqueID,
woc.WMDOCO AS WorkOrderNumber,
TRIM(woc.WMLOTN) AS LotNumber,
TRIM(woc.WMCMCU) AS BranchCode,
woc.WMCPIT AS ShortItemNumber,
woc.WMTRQT AS Quantity,
woc.WMUPMJ AS DateUpdated,
woc.WMTDAY AS TimeUpdated
FROM QADTA.F3111 woc
WHERE TRIM(woc.WMLOTN) IS NOT NULL
UNION ALL
SELECT woc.WMUKID AS UniqueID,
woc.WMDOCO AS WorkOrderNumber,
TRIM(woc.WMLOTN) AS LotNumber,
TRIM(woc.WMCMCU) AS BranchCode,
woc.WMCPIT AS ShortItemNumber,
woc.WMTRQT AS Quantity,
woc.WMUPMJ AS DateUpdated,
woc.WMTDAY AS TimeUpdated
FROM ARCDTAQA.F3111 woc
WHERE TRIM(woc.WMLOTN) IS NOT NULL
@@ -0,0 +1,37 @@
-- WorkOrderStep Archive Query
-- Source: QADTA.F3112 + QADTA.F00192 (current) + ARCDTAQA.F3112 (archived)
-- Used by: GetWorkOrderStepsArchive() - on-demand historical retrieval
-- Note: Not scheduled, used for historical lookups
-- Note: Function code lookup uses QADTA.F00192 for both current and archived data
SELECT wos.WLDOCO AS WorkOrderNumber,
TRIM(wos.WLMMCU) AS BranchCode,
TRIM(wos.WLMCU) AS WorkCenterCode,
wos.WLOPSQ AS StepNumber,
TRIM(wos.WLDSC1) AS StepDescription,
TRIM(mes.CFDS80) AS FunctionOperationDescription,
wos.WLOPSC AS StepTypeCode,
CASE wos.WLSTRT WHEN 0 THEN NULL ELSE wos.WLSTRT END AS StartDT,
CASE wos.WLSTRX WHEN 0 THEN NULL ELSE wos.WLSTRX END AS EndDT,
TRIM(wos.WLURRF) AS FunctionCode,
wos.WLUPMJ AS DateUpdated,
wos.WLTDAY AS TimeUpdated
FROM QADTA.F3112 wos LEFT OUTER JOIN
QADTA.F00192 mes ON (wos.WLURRF = mes.CFKY)
UNION ALL
SELECT wos.WLDOCO AS WorkOrderNumber,
TRIM(wos.WLMMCU) AS BranchCode,
TRIM(wos.WLMCU) AS WorkCenterCode,
wos.WLOPSQ AS StepNumber,
TRIM(wos.WLDSC1) AS StepDescription,
TRIM(mes.CFDS80) AS FunctionOperationDescription,
wos.WLOPSC AS StepTypeCode,
CASE wos.WLSTRT WHEN 0 THEN NULL ELSE wos.WLSTRT END AS StartDT,
CASE wos.WLSTRX WHEN 0 THEN NULL ELSE wos.WLSTRX END AS EndDT,
TRIM(wos.WLURRF) AS FunctionCode,
wos.WLUPMJ AS DateUpdated,
wos.WLTDAY AS TimeUpdated
FROM ARCDTAQA.F3112 wos LEFT OUTER JOIN
QADTA.F00192 mes ON (wos.WLURRF = mes.CFKY)
@@ -0,0 +1,26 @@
-- WorkOrderTime Archive Query
-- Source: QADTA.F31122 (current) + ARCDTAQA.F31122 (archived)
-- Used by: GetWorkOrderTimesArchive() - on-demand historical retrieval
-- Note: Not scheduled, used for historical lookups
SELECT wot.WTUKID AS UniqueID,
TRIM(wot.WTMMCU) AS BranchCode,
wot.WTDOCO AS WorkOrderNumber,
wot.WTOPSQ AS StepNumber,
wot.WTAN8 AS AddressNumber,
wot.WTDGL AS GlDate,
wot.WTUPMJ AS DateUpdated,
wot.WTTDAY AS TimeUpdated
FROM QADTA.F31122 wot
UNION ALL
SELECT wot.WTUKID AS UniqueID,
TRIM(wot.WTMMCU) AS BranchCode,
wot.WTDOCO AS WorkOrderNumber,
wot.WTOPSQ AS StepNumber,
wot.WTAN8 AS AddressNumber,
wot.WTDGL AS GlDate,
wot.WTUPMJ AS DateUpdated,
wot.WTTDAY AS TimeUpdated
FROM ARCDTAQA.F31122 wot