Compare commits
No commits in common. "main" and "run-group-cli" have entirely different histories.
main
...
run-group-
@ -80,9 +80,7 @@ run_group(group_id)
|
|||||||
→ create group_run row (status=running)
|
→ create group_run row (status=running)
|
||||||
→ for each enabled group_member in run_order: call run_module(group_run_id=...)
|
→ for each enabled group_member in run_order: call run_module(group_run_id=...)
|
||||||
→ continues past individual module failures (all members run)
|
→ continues past individual module failures (all members run)
|
||||||
→ but a group cancel breaks the loop: remaining members never start
|
→ final status: dry_run if all dry_run, error if any errored, success otherwise
|
||||||
→ final status: cancelled if cancelled, else dry_run if all dry_run,
|
|
||||||
error if any errored, success otherwise
|
|
||||||
→ finish_group_run(status)
|
→ finish_group_run(status)
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|||||||
@ -2,10 +2,6 @@
|
|||||||
{
|
{
|
||||||
"name": "Accounts Receivable",
|
"name": "Accounts Receivable",
|
||||||
"members": [
|
"members": [
|
||||||
{
|
|
||||||
"module": "arnot",
|
|
||||||
"run_order": 0
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"module": "aroht",
|
"module": "aroht",
|
||||||
"run_order": 0
|
"run_order": 0
|
||||||
@ -38,7 +34,7 @@
|
|||||||
"schedules": [
|
"schedules": [
|
||||||
{
|
{
|
||||||
"cron_expr": "0 1 * * *",
|
"cron_expr": "0 1 * * *",
|
||||||
"enabled": 0
|
"enabled": 1
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
@ -117,10 +113,6 @@
|
|||||||
"module": "sscc",
|
"module": "sscc",
|
||||||
"run_order": 0
|
"run_order": 0
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"module": "sy00300",
|
|
||||||
"run_order": 0
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"module": "sy03300",
|
"module": "sy03300",
|
||||||
"run_order": 0
|
"run_order": 0
|
||||||
@ -226,14 +218,6 @@
|
|||||||
"module": "gl30000",
|
"module": "gl30000",
|
||||||
"run_order": 0
|
"run_order": 0
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"module": "glca",
|
|
||||||
"run_order": 0
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"module": "glcc",
|
|
||||||
"run_order": 0
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"module": "gtran",
|
"module": "gtran",
|
||||||
"run_order": 0
|
"run_order": 0
|
||||||
@ -319,10 +303,6 @@
|
|||||||
"module": "moldmast",
|
"module": "moldmast",
|
||||||
"run_order": 0
|
"run_order": 0
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"module": "stkr",
|
|
||||||
"run_order": 0
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"module": "stnote",
|
"module": "stnote",
|
||||||
"run_order": 0
|
"run_order": 0
|
||||||
@ -502,10 +482,6 @@
|
|||||||
{
|
{
|
||||||
"name": "Purchasing",
|
"name": "Purchasing",
|
||||||
"members": [
|
"members": [
|
||||||
{
|
|
||||||
"module": "poprj",
|
|
||||||
"run_order": 0
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"module": "poh",
|
"module": "poh",
|
||||||
"run_order": 1
|
"run_order": 1
|
||||||
@ -594,10 +570,6 @@
|
|||||||
"module": "sop10102",
|
"module": "sop10102",
|
||||||
"run_order": 0
|
"run_order": 0
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"module": "sop10104",
|
|
||||||
"run_order": 0
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"module": "sop10200",
|
"module": "sop10200",
|
||||||
"run_order": 0
|
"run_order": 0
|
||||||
|
|||||||
@ -1,78 +0,0 @@
|
|||||||
{
|
|
||||||
"name": "arnot",
|
|
||||||
"source_connection": "S78030956",
|
|
||||||
"dest_connection": "usmidsap02",
|
|
||||||
"dest_table": "cms.arnot",
|
|
||||||
"staging_table": "pipekit_staging.arnot",
|
|
||||||
"merge_strategy": "full",
|
|
||||||
"merge_key": null,
|
|
||||||
"enabled": 1,
|
|
||||||
"dest_description": "Note pad file - 50 char key 5.3",
|
|
||||||
"columns": [
|
|
||||||
{
|
|
||||||
"source_name": "AUKEY",
|
|
||||||
"source_type": "CHAR(50)",
|
|
||||||
"dest_name": "aukey",
|
|
||||||
"dest_type": "text",
|
|
||||||
"description": "Alpha Key"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"source_name": "AUPAG#",
|
|
||||||
"source_type": "NUMERIC(3,0)",
|
|
||||||
"dest_name": "aupag#",
|
|
||||||
"dest_type": "numeric(3,0)",
|
|
||||||
"description": "Page Number"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"source_name": "AULIN#",
|
|
||||||
"source_type": "NUMERIC(2,0)",
|
|
||||||
"dest_name": "aulin#",
|
|
||||||
"dest_type": "numeric(2,0)",
|
|
||||||
"description": "Line Number"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"source_name": "AUTEXT",
|
|
||||||
"source_type": "CHAR(75)",
|
|
||||||
"dest_name": "autext",
|
|
||||||
"dest_type": "text",
|
|
||||||
"description": "Text"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"source_name": "AUFUT1",
|
|
||||||
"source_type": "CHAR(1)",
|
|
||||||
"dest_name": "aufut1",
|
|
||||||
"dest_type": "text",
|
|
||||||
"description": "Future Use 1"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"source_name": "AUFUT2",
|
|
||||||
"source_type": "CHAR(1)",
|
|
||||||
"dest_name": "aufut2",
|
|
||||||
"dest_type": "text",
|
|
||||||
"description": "Future Use 2"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"source_name": "AUFUT3",
|
|
||||||
"source_type": "CHAR(1)",
|
|
||||||
"dest_name": "aufut3",
|
|
||||||
"dest_type": "text",
|
|
||||||
"description": "Future Use 3"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"source_name": "AUFUT4",
|
|
||||||
"source_type": "CHAR(10)",
|
|
||||||
"dest_name": "aufut4",
|
|
||||||
"dest_type": "text",
|
|
||||||
"description": "Create User ID"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"source_name": "AUFUT5",
|
|
||||||
"source_type": "CHAR(10)",
|
|
||||||
"dest_name": "aufut5",
|
|
||||||
"dest_type": "text",
|
|
||||||
"description": "Future Use 5"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"watermarks": [],
|
|
||||||
"hooks": []
|
|
||||||
}
|
|
||||||
@ -1,11 +0,0 @@
|
|||||||
SELECT
|
|
||||||
RTRIM(AUKEY) AS aukey,
|
|
||||||
"AUPAG#" AS "aupag#",
|
|
||||||
"AULIN#" AS "aulin#",
|
|
||||||
RTRIM(AUTEXT) AS autext,
|
|
||||||
RTRIM(AUFUT1) AS aufut1,
|
|
||||||
RTRIM(AUFUT2) AS aufut2,
|
|
||||||
RTRIM(AUFUT3) AS aufut3,
|
|
||||||
RTRIM(AUFUT4) AS aufut4,
|
|
||||||
RTRIM(AUFUT5) AS aufut5
|
|
||||||
FROM LGDAT.ARNOT
|
|
||||||
@ -1,36 +0,0 @@
|
|||||||
{
|
|
||||||
"name": "glca",
|
|
||||||
"source_connection": "S78030956",
|
|
||||||
"dest_connection": "usmidsap02",
|
|
||||||
"dest_table": "cms.glca",
|
|
||||||
"staging_table": "pipekit_staging.glca",
|
|
||||||
"merge_strategy": "full",
|
|
||||||
"merge_key": null,
|
|
||||||
"enabled": 1,
|
|
||||||
"dest_description": "G/L Consolidation Subsidiary Companies 6.0",
|
|
||||||
"columns": [
|
|
||||||
{
|
|
||||||
"source_name": "DW6COMN",
|
|
||||||
"source_type": "NUMERIC(2,0)",
|
|
||||||
"dest_name": "dw6comn",
|
|
||||||
"dest_type": "numeric(2,0)",
|
|
||||||
"description": "Parent Company Number"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"source_name": "DW6SCOM",
|
|
||||||
"source_type": "NUMERIC(2,0)",
|
|
||||||
"dest_name": "dw6scom",
|
|
||||||
"dest_type": "numeric(2,0)",
|
|
||||||
"description": "Subsidiary Company"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"source_name": "DW6RCOD",
|
|
||||||
"source_type": "CHAR(10)",
|
|
||||||
"dest_name": "dw6rcod",
|
|
||||||
"dest_type": "text",
|
|
||||||
"description": "Default Rate Code"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"watermarks": [],
|
|
||||||
"hooks": []
|
|
||||||
}
|
|
||||||
@ -1,5 +0,0 @@
|
|||||||
SELECT
|
|
||||||
DW6COMN AS dw6comn,
|
|
||||||
DW6SCOM AS dw6scom,
|
|
||||||
RTRIM(DW6RCOD) AS dw6rcod
|
|
||||||
FROM LGDAT.GLCA
|
|
||||||
@ -1,106 +0,0 @@
|
|||||||
{
|
|
||||||
"name": "glcc",
|
|
||||||
"source_connection": "S78030956",
|
|
||||||
"dest_connection": "usmidsap02",
|
|
||||||
"dest_table": "cms.glcc",
|
|
||||||
"staging_table": "pipekit_staging.glcc",
|
|
||||||
"merge_strategy": "full",
|
|
||||||
"merge_key": null,
|
|
||||||
"enabled": 1,
|
|
||||||
"dest_description": "G/L Consolidation Parent Companies 6.0",
|
|
||||||
"columns": [
|
|
||||||
{
|
|
||||||
"source_name": "DW5COMN",
|
|
||||||
"source_type": "NUMERIC(2,0)",
|
|
||||||
"dest_name": "dw5comn",
|
|
||||||
"dest_type": "numeric(2,0)",
|
|
||||||
"description": "Parent Company Number"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"source_name": "DW5STS",
|
|
||||||
"source_type": "CHAR(1)",
|
|
||||||
"dest_name": "dw5sts",
|
|
||||||
"dest_type": "text",
|
|
||||||
"description": "Status Code"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"source_name": "DW5SYPR",
|
|
||||||
"source_type": "NUMERIC(6,0)",
|
|
||||||
"dest_name": "dw5sypr",
|
|
||||||
"dest_type": "numeric(6,0)",
|
|
||||||
"description": "Starting Fiscal Period"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"source_name": "DW5SETO",
|
|
||||||
"source_type": "CHAR(1)",
|
|
||||||
"dest_name": "dw5seto",
|
|
||||||
"dest_type": "text",
|
|
||||||
"description": "Set Opening Balances"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"source_name": "DW5LYPR",
|
|
||||||
"source_type": "NUMERIC(6,0)",
|
|
||||||
"dest_name": "dw5lypr",
|
|
||||||
"dest_type": "numeric(6,0)",
|
|
||||||
"description": "Last Fiscal Period"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"source_name": "DW5TAGL",
|
|
||||||
"source_type": "NUMERIC(10,0)",
|
|
||||||
"dest_name": "dw5tagl",
|
|
||||||
"dest_type": "numeric(10,0)",
|
|
||||||
"description": "Translation Adjustment G/L Account"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"source_name": "DW5CUSR",
|
|
||||||
"source_type": "CHAR(10)",
|
|
||||||
"dest_name": "dw5cusr",
|
|
||||||
"dest_type": "text",
|
|
||||||
"description": "Created By User"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"source_name": "DW5CDAT",
|
|
||||||
"source_type": "DATE",
|
|
||||||
"dest_name": "dw5cdat",
|
|
||||||
"dest_type": "date",
|
|
||||||
"description": "Date Created"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"source_name": "DW5CTME",
|
|
||||||
"source_type": "TIME",
|
|
||||||
"dest_name": "dw5ctme",
|
|
||||||
"dest_type": "time",
|
|
||||||
"description": "Time Created"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"source_name": "DW5UUSR",
|
|
||||||
"source_type": "CHAR(10)",
|
|
||||||
"dest_name": "dw5uusr",
|
|
||||||
"dest_type": "text",
|
|
||||||
"description": "Updated By User"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"source_name": "DW5UDAT",
|
|
||||||
"source_type": "DATE",
|
|
||||||
"dest_name": "dw5udat",
|
|
||||||
"dest_type": "date",
|
|
||||||
"description": "Date Updated"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"source_name": "DW5UTME",
|
|
||||||
"source_type": "TIME",
|
|
||||||
"dest_name": "dw5utme",
|
|
||||||
"dest_type": "time",
|
|
||||||
"description": "Time Updated"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"source_name": "DW5RSET",
|
|
||||||
"source_type": "CHAR(1)",
|
|
||||||
"dest_name": "dw5rset",
|
|
||||||
"dest_type": "text",
|
|
||||||
"description": "Support Reset/Reverse Transactions"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"watermarks": [],
|
|
||||||
"hooks": []
|
|
||||||
}
|
|
||||||
@ -1,15 +0,0 @@
|
|||||||
SELECT
|
|
||||||
DW5COMN AS dw5comn,
|
|
||||||
RTRIM(DW5STS) AS dw5sts,
|
|
||||||
DW5SYPR AS dw5sypr,
|
|
||||||
RTRIM(DW5SETO) AS dw5seto,
|
|
||||||
DW5LYPR AS dw5lypr,
|
|
||||||
DW5TAGL AS dw5tagl,
|
|
||||||
RTRIM(DW5CUSR) AS dw5cusr,
|
|
||||||
CASE WHEN DW5CDAT IN (DATE('0001-01-01'), DATE('9999-12-31')) THEN NULL ELSE DW5CDAT END AS dw5cdat,
|
|
||||||
DW5CTME AS dw5ctme,
|
|
||||||
RTRIM(DW5UUSR) AS dw5uusr,
|
|
||||||
CASE WHEN DW5UDAT IN (DATE('0001-01-01'), DATE('9999-12-31')) THEN NULL ELSE DW5UDAT END AS dw5udat,
|
|
||||||
DW5UTME AS dw5utme,
|
|
||||||
RTRIM(DW5RSET) AS dw5rset
|
|
||||||
FROM LGDAT.GLCC
|
|
||||||
@ -1,729 +0,0 @@
|
|||||||
{
|
|
||||||
"name": "poprj",
|
|
||||||
"source_connection": "S78030956",
|
|
||||||
"dest_connection": "usmidsap02",
|
|
||||||
"dest_table": "cms.poprj",
|
|
||||||
"staging_table": "pipekit_staging.poprj",
|
|
||||||
"merge_strategy": "full",
|
|
||||||
"merge_key": null,
|
|
||||||
"enabled": 1,
|
|
||||||
"dest_description": "Project Master 6.1",
|
|
||||||
"columns": [
|
|
||||||
{
|
|
||||||
"source_name": "JOPRJ#",
|
|
||||||
"source_type": "CHAR(20)",
|
|
||||||
"dest_name": "joprj#",
|
|
||||||
"dest_type": "text",
|
|
||||||
"description": "Project Number"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"source_name": "JODES1",
|
|
||||||
"source_type": "CHAR(30)",
|
|
||||||
"dest_name": "jodes1",
|
|
||||||
"dest_type": "text",
|
|
||||||
"description": "Description"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"source_name": "JODES2",
|
|
||||||
"source_type": "CHAR(30)",
|
|
||||||
"dest_name": "jodes2",
|
|
||||||
"dest_type": "text",
|
|
||||||
"description": "Description"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"source_name": "JODES3",
|
|
||||||
"source_type": "CHAR(30)",
|
|
||||||
"dest_name": "jodes3",
|
|
||||||
"dest_type": "text",
|
|
||||||
"description": "Description"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"source_name": "JOSTS",
|
|
||||||
"source_type": "CHAR(1)",
|
|
||||||
"dest_name": "josts",
|
|
||||||
"dest_type": "text",
|
|
||||||
"description": "Status 1-New,2-Active,9-Complete,8-Hold"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"source_name": "JOPTYP",
|
|
||||||
"source_type": "CHAR(10)",
|
|
||||||
"dest_name": "joptyp",
|
|
||||||
"dest_type": "text",
|
|
||||||
"description": "Project Type"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"source_name": "JOPCLS",
|
|
||||||
"source_type": "CHAR(10)",
|
|
||||||
"dest_name": "jopcls",
|
|
||||||
"dest_type": "text",
|
|
||||||
"description": "Project Class"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"source_name": "JOCUST",
|
|
||||||
"source_type": "CHAR(8)",
|
|
||||||
"dest_name": "jocust",
|
|
||||||
"dest_type": "text",
|
|
||||||
"description": "Customer Code"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"source_name": "JOPSUP",
|
|
||||||
"source_type": "CHAR(10)",
|
|
||||||
"dest_name": "jopsup",
|
|
||||||
"dest_type": "text",
|
|
||||||
"description": "Preferred Supplier"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"source_name": "JOTLID",
|
|
||||||
"source_type": "CHAR(20)",
|
|
||||||
"dest_name": "jotlid",
|
|
||||||
"dest_type": "text",
|
|
||||||
"description": "Tool ID"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"source_name": "JOTCOD",
|
|
||||||
"source_type": "CHAR(1)",
|
|
||||||
"dest_name": "jotcod",
|
|
||||||
"dest_type": "text",
|
|
||||||
"description": "Template Code"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"source_name": "JOGLN1",
|
|
||||||
"source_type": "NUMERIC(10,0)",
|
|
||||||
"dest_name": "jogln1",
|
|
||||||
"dest_type": "numeric(10,0)",
|
|
||||||
"description": "G/L Account Debit"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"source_name": "JOGLN2",
|
|
||||||
"source_type": "NUMERIC(10,0)",
|
|
||||||
"dest_name": "jogln2",
|
|
||||||
"dest_type": "numeric(10,0)",
|
|
||||||
"description": "G/L Account Credit"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"source_name": "JOGLMN",
|
|
||||||
"source_type": "CHAR(1)",
|
|
||||||
"dest_name": "joglmn",
|
|
||||||
"dest_type": "text",
|
|
||||||
"description": "G/L Mandatory"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"source_name": "JOMLGL",
|
|
||||||
"source_type": "CHAR(1)",
|
|
||||||
"dest_name": "jomlgl",
|
|
||||||
"dest_type": "text",
|
|
||||||
"description": "Multi G/L"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"source_name": "JOHRMG",
|
|
||||||
"source_type": "CHAR(5)",
|
|
||||||
"dest_name": "johrmg",
|
|
||||||
"dest_type": "text",
|
|
||||||
"description": "Manager"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"source_name": "JOHREN",
|
|
||||||
"source_type": "CHAR(5)",
|
|
||||||
"dest_name": "johren",
|
|
||||||
"dest_type": "text",
|
|
||||||
"description": "Chief Engineer"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"source_name": "JOHRAD",
|
|
||||||
"source_type": "CHAR(5)",
|
|
||||||
"dest_name": "johrad",
|
|
||||||
"dest_type": "text",
|
|
||||||
"description": "Administrator"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"source_name": "JOORIG",
|
|
||||||
"source_type": "CHAR(30)",
|
|
||||||
"dest_name": "joorig",
|
|
||||||
"dest_type": "text",
|
|
||||||
"description": "Originator"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"source_name": "JOWDAT",
|
|
||||||
"source_type": "DATE",
|
|
||||||
"dest_name": "jowdat",
|
|
||||||
"dest_type": "date",
|
|
||||||
"description": "Awarded Date"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"source_name": "JOASDAT",
|
|
||||||
"source_type": "DATE",
|
|
||||||
"dest_name": "joasdat",
|
|
||||||
"dest_type": "date",
|
|
||||||
"description": "Anticipated Start Date"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"source_name": "JOSDAT",
|
|
||||||
"source_type": "DATE",
|
|
||||||
"dest_name": "josdat",
|
|
||||||
"dest_type": "date",
|
|
||||||
"description": "Date Started Actual"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"source_name": "JOAEDAT",
|
|
||||||
"source_type": "DATE",
|
|
||||||
"dest_name": "joaedat",
|
|
||||||
"dest_type": "date",
|
|
||||||
"description": "Anticipated End Date"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"source_name": "JOEDAT",
|
|
||||||
"source_type": "DATE",
|
|
||||||
"dest_name": "joedat",
|
|
||||||
"dest_type": "date",
|
|
||||||
"description": "Actual End Date"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"source_name": "JOAPDAT",
|
|
||||||
"source_type": "DATE",
|
|
||||||
"dest_name": "joapdat",
|
|
||||||
"dest_type": "date",
|
|
||||||
"description": "Approval Date"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"source_name": "JOLIDAT",
|
|
||||||
"source_type": "DATE",
|
|
||||||
"dest_name": "jolidat",
|
|
||||||
"dest_type": "date",
|
|
||||||
"description": "Last Invoice Date"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"source_name": "JOPSDAT",
|
|
||||||
"source_type": "DATE",
|
|
||||||
"dest_name": "jopsdat",
|
|
||||||
"dest_type": "date",
|
|
||||||
"description": "Production Start Date"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"source_name": "JOSUSR",
|
|
||||||
"source_type": "CHAR(10)",
|
|
||||||
"dest_name": "josusr",
|
|
||||||
"dest_type": "text",
|
|
||||||
"description": "Status Change User"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"source_name": "JOTDAT",
|
|
||||||
"source_type": "DATE",
|
|
||||||
"dest_name": "jotdat",
|
|
||||||
"dest_type": "date",
|
|
||||||
"description": "Status Change Date"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"source_name": "JOCUSR",
|
|
||||||
"source_type": "CHAR(10)",
|
|
||||||
"dest_name": "jocusr",
|
|
||||||
"dest_type": "text",
|
|
||||||
"description": "Created By User"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"source_name": "JOCDAT",
|
|
||||||
"source_type": "DATE",
|
|
||||||
"dest_name": "jocdat",
|
|
||||||
"dest_type": "date",
|
|
||||||
"description": "Date Created"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"source_name": "JOCTIM",
|
|
||||||
"source_type": "TIME",
|
|
||||||
"dest_name": "joctim",
|
|
||||||
"dest_type": "time",
|
|
||||||
"description": "Time Created"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"source_name": "JOUUSR",
|
|
||||||
"source_type": "CHAR(10)",
|
|
||||||
"dest_name": "jouusr",
|
|
||||||
"dest_type": "text",
|
|
||||||
"description": "Updated By User"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"source_name": "JOUDAT",
|
|
||||||
"source_type": "DATE",
|
|
||||||
"dest_name": "joudat",
|
|
||||||
"dest_type": "date",
|
|
||||||
"description": "Date Updated"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"source_name": "JOUTIM",
|
|
||||||
"source_type": "TIME",
|
|
||||||
"dest_name": "joutim",
|
|
||||||
"dest_type": "time",
|
|
||||||
"description": "Time Updated"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"source_name": "JOAREF",
|
|
||||||
"source_type": "CHAR(35)",
|
|
||||||
"dest_name": "joaref",
|
|
||||||
"dest_type": "text",
|
|
||||||
"description": "Authorization Reference"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"source_name": "JOADAT",
|
|
||||||
"source_type": "DATE",
|
|
||||||
"dest_name": "joadat",
|
|
||||||
"dest_type": "date",
|
|
||||||
"description": "Authorized Date"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"source_name": "JOROGA",
|
|
||||||
"source_type": "NUMERIC(15,5)",
|
|
||||||
"dest_name": "joroga",
|
|
||||||
"dest_type": "numeric(15,5)",
|
|
||||||
"description": "Return on Gross Assets"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"source_name": "JOPPER",
|
|
||||||
"source_type": "NUMERIC(5,0)",
|
|
||||||
"dest_name": "jopper",
|
|
||||||
"dest_type": "numeric(5,0)",
|
|
||||||
"description": "Months to payback"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"source_name": "JOPCMP",
|
|
||||||
"source_type": "CHAR(1)",
|
|
||||||
"dest_name": "jopcmp",
|
|
||||||
"dest_type": "text",
|
|
||||||
"description": "Purchasing Complete"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"source_name": "JOCRCD",
|
|
||||||
"source_type": "CHAR(2)",
|
|
||||||
"dest_name": "jocrcd",
|
|
||||||
"dest_type": "text",
|
|
||||||
"description": "Currency Code"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"source_name": "JOHCCD",
|
|
||||||
"source_type": "CHAR(2)",
|
|
||||||
"dest_name": "johccd",
|
|
||||||
"dest_type": "text",
|
|
||||||
"description": "Home Currency Code"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"source_name": "JOBUDG",
|
|
||||||
"source_type": "NUMERIC(15,5)",
|
|
||||||
"dest_name": "jobudg",
|
|
||||||
"dest_type": "numeric(15,5)",
|
|
||||||
"description": "Budgeted Cost"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"source_name": "JOBREV",
|
|
||||||
"source_type": "NUMERIC(15,5)",
|
|
||||||
"dest_name": "jobrev",
|
|
||||||
"dest_type": "numeric(15,5)",
|
|
||||||
"description": "Budgeted Revenue"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"source_name": "JOACST",
|
|
||||||
"source_type": "NUMERIC(15,5)",
|
|
||||||
"dest_name": "joacst",
|
|
||||||
"dest_type": "numeric(15,5)",
|
|
||||||
"description": "Actual Cost"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"source_name": "JOACSH",
|
|
||||||
"source_type": "NUMERIC(15,5)",
|
|
||||||
"dest_name": "joacsh",
|
|
||||||
"dest_type": "numeric(15,5)",
|
|
||||||
"description": "Actual Cost Home"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"source_name": "JOAREV",
|
|
||||||
"source_type": "NUMERIC(15,5)",
|
|
||||||
"dest_name": "joarev",
|
|
||||||
"dest_type": "numeric(15,5)",
|
|
||||||
"description": "Actual Revenue"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"source_name": "JOARVH",
|
|
||||||
"source_type": "NUMERIC(15,5)",
|
|
||||||
"dest_name": "joarvh",
|
|
||||||
"dest_type": "numeric(15,5)",
|
|
||||||
"description": "Actual Revenue Home"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"source_name": "JOAPST",
|
|
||||||
"source_type": "CHAR(1)",
|
|
||||||
"dest_name": "joapst",
|
|
||||||
"dest_type": "text",
|
|
||||||
"description": "Post to Asset"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"source_name": "JOAGLN",
|
|
||||||
"source_type": "NUMERIC(10,0)",
|
|
||||||
"dest_name": "joagln",
|
|
||||||
"dest_type": "numeric(10,0)",
|
|
||||||
"description": "Asset G/L Account"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"source_name": "JOAAAM",
|
|
||||||
"source_type": "NUMERIC(15,5)",
|
|
||||||
"dest_name": "joaaam",
|
|
||||||
"dest_type": "numeric(15,5)",
|
|
||||||
"description": "Posted to Asset"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"source_name": "JOAAMT",
|
|
||||||
"source_type": "NUMERIC(15,5)",
|
|
||||||
"dest_name": "joaamt",
|
|
||||||
"dest_type": "numeric(15,5)",
|
|
||||||
"description": "Asset Amount"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"source_name": "JOPPRJ",
|
|
||||||
"source_type": "CHAR(20)",
|
|
||||||
"dest_name": "jopprj",
|
|
||||||
"dest_type": "text",
|
|
||||||
"description": "Parent Project"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"source_name": "JOCRCM",
|
|
||||||
"source_type": "CHAR(1)",
|
|
||||||
"dest_name": "jocrcm",
|
|
||||||
"dest_type": "text",
|
|
||||||
"description": "Status Key"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"source_name": "JOPLNT",
|
|
||||||
"source_type": "CHAR(3)",
|
|
||||||
"dest_name": "joplnt",
|
|
||||||
"dest_type": "text",
|
|
||||||
"description": "Plant Code"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"source_name": "JOCMPS",
|
|
||||||
"source_type": "NUMERIC(3,0)",
|
|
||||||
"dest_name": "jocmps",
|
|
||||||
"dest_type": "numeric(3,0)",
|
|
||||||
"description": "Percentage Complete"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"source_name": "JOFUT1",
|
|
||||||
"source_type": "CHAR(10)",
|
|
||||||
"dest_name": "jofut1",
|
|
||||||
"dest_type": "text",
|
|
||||||
"description": "Future Use"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"source_name": "JOFUT2",
|
|
||||||
"source_type": "CHAR(10)",
|
|
||||||
"dest_name": "jofut2",
|
|
||||||
"dest_type": "text",
|
|
||||||
"description": "Future Use"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"source_name": "JOFUT3",
|
|
||||||
"source_type": "CHAR(10)",
|
|
||||||
"dest_name": "jofut3",
|
|
||||||
"dest_type": "text",
|
|
||||||
"description": "Future Use"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"source_name": "JOFUT4",
|
|
||||||
"source_type": "CHAR(10)",
|
|
||||||
"dest_name": "jofut4",
|
|
||||||
"dest_type": "text",
|
|
||||||
"description": "Future Use"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"source_name": "JOFUT5",
|
|
||||||
"source_type": "CHAR(20)",
|
|
||||||
"dest_name": "jofut5",
|
|
||||||
"dest_type": "text",
|
|
||||||
"description": "Future Use"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"source_name": "JOFUT6",
|
|
||||||
"source_type": "CHAR(20)",
|
|
||||||
"dest_name": "jofut6",
|
|
||||||
"dest_type": "text",
|
|
||||||
"description": "Future Use"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"source_name": "JOFUT7",
|
|
||||||
"source_type": "CHAR(30)",
|
|
||||||
"dest_name": "jofut7",
|
|
||||||
"dest_type": "text",
|
|
||||||
"description": "Future Use"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"source_name": "JOFUT8",
|
|
||||||
"source_type": "CHAR(30)",
|
|
||||||
"dest_name": "jofut8",
|
|
||||||
"dest_type": "text",
|
|
||||||
"description": "Future Use"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"source_name": "JOFUT9",
|
|
||||||
"source_type": "NUMERIC(15,5)",
|
|
||||||
"dest_name": "jofut9",
|
|
||||||
"dest_type": "numeric(15,5)",
|
|
||||||
"description": "Accrual Cost GL"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"source_name": "JOFUTA",
|
|
||||||
"source_type": "NUMERIC(15,5)",
|
|
||||||
"dest_name": "jofuta",
|
|
||||||
"dest_type": "numeric(15,5)",
|
|
||||||
"description": "Accrual Sales GL"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"source_name": "JOFUTB",
|
|
||||||
"source_type": "NUMERIC(15,5)",
|
|
||||||
"dest_name": "jofutb",
|
|
||||||
"dest_type": "numeric(15,5)",
|
|
||||||
"description": "Future Use"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"source_name": "JOFUTC",
|
|
||||||
"source_type": "CHAR(3)",
|
|
||||||
"dest_name": "jofutc",
|
|
||||||
"dest_type": "text",
|
|
||||||
"description": "Future Use"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"source_name": "JOFUTD",
|
|
||||||
"source_type": "CHAR(3)",
|
|
||||||
"dest_name": "jofutd",
|
|
||||||
"dest_type": "text",
|
|
||||||
"description": "Future Use"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"source_name": "JOFUTE",
|
|
||||||
"source_type": "CHAR(1)",
|
|
||||||
"dest_name": "jofute",
|
|
||||||
"dest_type": "text",
|
|
||||||
"description": "Future Use"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"source_name": "JOFUTF",
|
|
||||||
"source_type": "CHAR(1)",
|
|
||||||
"dest_name": "jofutf",
|
|
||||||
"dest_type": "text",
|
|
||||||
"description": "Use Project Accrual"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"source_name": "JOFUTG",
|
|
||||||
"source_type": "CHAR(1)",
|
|
||||||
"dest_name": "jofutg",
|
|
||||||
"dest_type": "text",
|
|
||||||
"description": "Future Use"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"source_name": "JOFUTH",
|
|
||||||
"source_type": "CHAR(1)",
|
|
||||||
"dest_name": "jofuth",
|
|
||||||
"dest_type": "text",
|
|
||||||
"description": "Future Use"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"source_name": "JOFUTI",
|
|
||||||
"source_type": "CHAR(1)",
|
|
||||||
"dest_name": "jofuti",
|
|
||||||
"dest_type": "text",
|
|
||||||
"description": "Future Use"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"source_name": "JOFUTJ",
|
|
||||||
"source_type": "CHAR(1)",
|
|
||||||
"dest_name": "jofutj",
|
|
||||||
"dest_type": "text",
|
|
||||||
"description": "Future Use"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"source_name": "JOFUTK",
|
|
||||||
"source_type": "CHAR(1)",
|
|
||||||
"dest_name": "jofutk",
|
|
||||||
"dest_type": "text",
|
|
||||||
"description": "Future Use"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"source_name": "JOFUTL",
|
|
||||||
"source_type": "CHAR(1)",
|
|
||||||
"dest_name": "jofutl",
|
|
||||||
"dest_type": "text",
|
|
||||||
"description": "Future Use"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"source_name": "JOACS1",
|
|
||||||
"source_type": "NUMERIC(15,5)",
|
|
||||||
"dest_name": "joacs1",
|
|
||||||
"dest_type": "numeric(15,5)",
|
|
||||||
"description": "Labor Cost Proj.curr"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"source_name": "JOACS2",
|
|
||||||
"source_type": "NUMERIC(15,5)",
|
|
||||||
"dest_name": "joacs2",
|
|
||||||
"dest_type": "numeric(15,5)",
|
|
||||||
"description": "F Burden Cost Proj.Cur"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"source_name": "JOACS3",
|
|
||||||
"source_type": "NUMERIC(15,5)",
|
|
||||||
"dest_name": "joacs3",
|
|
||||||
"dest_type": "numeric(15,5)",
|
|
||||||
"description": "V.Burden Cost Proj.Cur"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"source_name": "JOACS4",
|
|
||||||
"source_type": "NUMERIC(15,5)",
|
|
||||||
"dest_name": "joacs4",
|
|
||||||
"dest_type": "numeric(15,5)",
|
|
||||||
"description": "Material Cost Proj.Cur"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"source_name": "JOACS5",
|
|
||||||
"source_type": "NUMERIC(15,5)",
|
|
||||||
"dest_name": "joacs5",
|
|
||||||
"dest_type": "numeric(15,5)",
|
|
||||||
"description": "Other Cost Proj.Cur"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"source_name": "JOACS6",
|
|
||||||
"source_type": "NUMERIC(15,5)",
|
|
||||||
"dest_name": "joacs6",
|
|
||||||
"dest_type": "numeric(15,5)",
|
|
||||||
"description": "Misc. Cost Proj.Cur"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"source_name": "JOACH1",
|
|
||||||
"source_type": "NUMERIC(15,5)",
|
|
||||||
"dest_name": "joach1",
|
|
||||||
"dest_type": "numeric(15,5)",
|
|
||||||
"description": "Labor Cost Home.cur"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"source_name": "JOACH2",
|
|
||||||
"source_type": "NUMERIC(15,5)",
|
|
||||||
"dest_name": "joach2",
|
|
||||||
"dest_type": "numeric(15,5)",
|
|
||||||
"description": "F Burden Cost Home.Cur"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"source_name": "JOACH3",
|
|
||||||
"source_type": "NUMERIC(15,5)",
|
|
||||||
"dest_name": "joach3",
|
|
||||||
"dest_type": "numeric(15,5)",
|
|
||||||
"description": "V.Burden Cost Home.Cur"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"source_name": "JOACH4",
|
|
||||||
"source_type": "NUMERIC(15,5)",
|
|
||||||
"dest_name": "joach4",
|
|
||||||
"dest_type": "numeric(15,5)",
|
|
||||||
"description": "Material Cost Home.Cur"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"source_name": "JOACH5",
|
|
||||||
"source_type": "NUMERIC(15,5)",
|
|
||||||
"dest_name": "joach5",
|
|
||||||
"dest_type": "numeric(15,5)",
|
|
||||||
"description": "Other Cost Home.Cur"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"source_name": "JOACH6",
|
|
||||||
"source_type": "NUMERIC(15,5)",
|
|
||||||
"dest_name": "joach6",
|
|
||||||
"dest_type": "numeric(15,5)",
|
|
||||||
"description": "Misc. Cost Home.Cur"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"source_name": "JOPTSL",
|
|
||||||
"source_type": "CHAR(1)",
|
|
||||||
"dest_name": "joptsl",
|
|
||||||
"dest_type": "text",
|
|
||||||
"description": "Post to Sales"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"source_name": "JOSLGL",
|
|
||||||
"source_type": "NUMERIC(10,0)",
|
|
||||||
"dest_name": "joslgl",
|
|
||||||
"dest_type": "numeric(10,0)",
|
|
||||||
"description": "Sales G/L Account"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"source_name": "JOSLAM",
|
|
||||||
"source_type": "NUMERIC(15,5)",
|
|
||||||
"dest_name": "joslam",
|
|
||||||
"dest_type": "numeric(15,5)",
|
|
||||||
"description": "Posted to Sales"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"source_name": "JOCSGL",
|
|
||||||
"source_type": "NUMERIC(10,0)",
|
|
||||||
"dest_name": "jocsgl",
|
|
||||||
"dest_type": "numeric(10,0)",
|
|
||||||
"description": "COS G/L Account"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"source_name": "JOISOT",
|
|
||||||
"source_type": "CHAR(1)",
|
|
||||||
"dest_name": "joisot",
|
|
||||||
"dest_type": "text",
|
|
||||||
"description": "Issue One-Time Part"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"source_name": "JOASTS",
|
|
||||||
"source_type": "CHAR(1)",
|
|
||||||
"dest_name": "joasts",
|
|
||||||
"dest_type": "text",
|
|
||||||
"description": "Approval Status"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"source_name": "JOVFTM",
|
|
||||||
"source_type": "CHAR(10)",
|
|
||||||
"dest_name": "jovftm",
|
|
||||||
"dest_type": "text",
|
|
||||||
"description": "User Ver. Template"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"source_name": "JOADSTS",
|
|
||||||
"source_type": "CHAR(2)",
|
|
||||||
"dest_name": "joadsts",
|
|
||||||
"dest_type": "text",
|
|
||||||
"description": "Approval Detail Status"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"source_name": "JONAPU",
|
|
||||||
"source_type": "CHAR(10)",
|
|
||||||
"dest_name": "jonapu",
|
|
||||||
"dest_type": "text",
|
|
||||||
"description": "Next Approver"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"source_name": "JOBWOW",
|
|
||||||
"source_type": "CHAR(1)",
|
|
||||||
"dest_name": "jobwow",
|
|
||||||
"dest_type": "text",
|
|
||||||
"description": "Book W/O WIP Cost To Project GL"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"source_name": "JOFUT10",
|
|
||||||
"source_type": "CHAR(10)",
|
|
||||||
"dest_name": "jofut10",
|
|
||||||
"dest_type": "text",
|
|
||||||
"description": "Future Use"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"source_name": "JOFUT11",
|
|
||||||
"source_type": "CHAR(10)",
|
|
||||||
"dest_name": "jofut11",
|
|
||||||
"dest_type": "text",
|
|
||||||
"description": "Future Use"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"source_name": "JOFUT12",
|
|
||||||
"source_type": "CHAR(10)",
|
|
||||||
"dest_name": "jofut12",
|
|
||||||
"dest_type": "text",
|
|
||||||
"description": "Future Use"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"watermarks": [],
|
|
||||||
"hooks": []
|
|
||||||
}
|
|
||||||
@ -1,104 +0,0 @@
|
|||||||
SELECT
|
|
||||||
RTRIM("JOPRJ#") AS "joprj#",
|
|
||||||
RTRIM(JODES1) AS jodes1,
|
|
||||||
RTRIM(JODES2) AS jodes2,
|
|
||||||
RTRIM(JODES3) AS jodes3,
|
|
||||||
RTRIM(JOSTS) AS josts,
|
|
||||||
RTRIM(JOPTYP) AS joptyp,
|
|
||||||
RTRIM(JOPCLS) AS jopcls,
|
|
||||||
RTRIM(JOCUST) AS jocust,
|
|
||||||
RTRIM(JOPSUP) AS jopsup,
|
|
||||||
RTRIM(JOTLID) AS jotlid,
|
|
||||||
RTRIM(JOTCOD) AS jotcod,
|
|
||||||
JOGLN1 AS jogln1,
|
|
||||||
JOGLN2 AS jogln2,
|
|
||||||
RTRIM(JOGLMN) AS joglmn,
|
|
||||||
RTRIM(JOMLGL) AS jomlgl,
|
|
||||||
RTRIM(JOHRMG) AS johrmg,
|
|
||||||
RTRIM(JOHREN) AS johren,
|
|
||||||
RTRIM(JOHRAD) AS johrad,
|
|
||||||
RTRIM(JOORIG) AS joorig,
|
|
||||||
CASE WHEN JOWDAT IN (DATE('0001-01-01'), DATE('9999-12-31')) THEN NULL ELSE JOWDAT END AS jowdat,
|
|
||||||
CASE WHEN JOASDAT IN (DATE('0001-01-01'), DATE('9999-12-31')) THEN NULL ELSE JOASDAT END AS joasdat,
|
|
||||||
CASE WHEN JOSDAT IN (DATE('0001-01-01'), DATE('9999-12-31')) THEN NULL ELSE JOSDAT END AS josdat,
|
|
||||||
CASE WHEN JOAEDAT IN (DATE('0001-01-01'), DATE('9999-12-31')) THEN NULL ELSE JOAEDAT END AS joaedat,
|
|
||||||
CASE WHEN JOEDAT IN (DATE('0001-01-01'), DATE('9999-12-31')) THEN NULL ELSE JOEDAT END AS joedat,
|
|
||||||
CASE WHEN JOAPDAT IN (DATE('0001-01-01'), DATE('9999-12-31')) THEN NULL ELSE JOAPDAT END AS joapdat,
|
|
||||||
CASE WHEN JOLIDAT IN (DATE('0001-01-01'), DATE('9999-12-31')) THEN NULL ELSE JOLIDAT END AS jolidat,
|
|
||||||
CASE WHEN JOPSDAT IN (DATE('0001-01-01'), DATE('9999-12-31')) THEN NULL ELSE JOPSDAT END AS jopsdat,
|
|
||||||
RTRIM(JOSUSR) AS josusr,
|
|
||||||
CASE WHEN JOTDAT IN (DATE('0001-01-01'), DATE('9999-12-31')) THEN NULL ELSE JOTDAT END AS jotdat,
|
|
||||||
RTRIM(JOCUSR) AS jocusr,
|
|
||||||
CASE WHEN JOCDAT IN (DATE('0001-01-01'), DATE('9999-12-31')) THEN NULL ELSE JOCDAT END AS jocdat,
|
|
||||||
JOCTIM AS joctim,
|
|
||||||
RTRIM(JOUUSR) AS jouusr,
|
|
||||||
CASE WHEN JOUDAT IN (DATE('0001-01-01'), DATE('9999-12-31')) THEN NULL ELSE JOUDAT END AS joudat,
|
|
||||||
JOUTIM AS joutim,
|
|
||||||
RTRIM(JOAREF) AS joaref,
|
|
||||||
CASE WHEN JOADAT IN (DATE('0001-01-01'), DATE('9999-12-31')) THEN NULL ELSE JOADAT END AS joadat,
|
|
||||||
JOROGA AS joroga,
|
|
||||||
JOPPER AS jopper,
|
|
||||||
RTRIM(JOPCMP) AS jopcmp,
|
|
||||||
RTRIM(JOCRCD) AS jocrcd,
|
|
||||||
RTRIM(JOHCCD) AS johccd,
|
|
||||||
JOBUDG AS jobudg,
|
|
||||||
JOBREV AS jobrev,
|
|
||||||
JOACST AS joacst,
|
|
||||||
JOACSH AS joacsh,
|
|
||||||
JOAREV AS joarev,
|
|
||||||
JOARVH AS joarvh,
|
|
||||||
RTRIM(JOAPST) AS joapst,
|
|
||||||
JOAGLN AS joagln,
|
|
||||||
JOAAAM AS joaaam,
|
|
||||||
JOAAMT AS joaamt,
|
|
||||||
RTRIM(JOPPRJ) AS jopprj,
|
|
||||||
RTRIM(JOCRCM) AS jocrcm,
|
|
||||||
RTRIM(JOPLNT) AS joplnt,
|
|
||||||
JOCMPS AS jocmps,
|
|
||||||
RTRIM(JOFUT1) AS jofut1,
|
|
||||||
RTRIM(JOFUT2) AS jofut2,
|
|
||||||
RTRIM(JOFUT3) AS jofut3,
|
|
||||||
RTRIM(JOFUT4) AS jofut4,
|
|
||||||
RTRIM(JOFUT5) AS jofut5,
|
|
||||||
RTRIM(JOFUT6) AS jofut6,
|
|
||||||
RTRIM(JOFUT7) AS jofut7,
|
|
||||||
RTRIM(JOFUT8) AS jofut8,
|
|
||||||
JOFUT9 AS jofut9,
|
|
||||||
JOFUTA AS jofuta,
|
|
||||||
JOFUTB AS jofutb,
|
|
||||||
RTRIM(JOFUTC) AS jofutc,
|
|
||||||
RTRIM(JOFUTD) AS jofutd,
|
|
||||||
RTRIM(JOFUTE) AS jofute,
|
|
||||||
RTRIM(JOFUTF) AS jofutf,
|
|
||||||
RTRIM(JOFUTG) AS jofutg,
|
|
||||||
RTRIM(JOFUTH) AS jofuth,
|
|
||||||
RTRIM(JOFUTI) AS jofuti,
|
|
||||||
RTRIM(JOFUTJ) AS jofutj,
|
|
||||||
RTRIM(JOFUTK) AS jofutk,
|
|
||||||
RTRIM(JOFUTL) AS jofutl,
|
|
||||||
JOACS1 AS joacs1,
|
|
||||||
JOACS2 AS joacs2,
|
|
||||||
JOACS3 AS joacs3,
|
|
||||||
JOACS4 AS joacs4,
|
|
||||||
JOACS5 AS joacs5,
|
|
||||||
JOACS6 AS joacs6,
|
|
||||||
JOACH1 AS joach1,
|
|
||||||
JOACH2 AS joach2,
|
|
||||||
JOACH3 AS joach3,
|
|
||||||
JOACH4 AS joach4,
|
|
||||||
JOACH5 AS joach5,
|
|
||||||
JOACH6 AS joach6,
|
|
||||||
RTRIM(JOPTSL) AS joptsl,
|
|
||||||
JOSLGL AS joslgl,
|
|
||||||
JOSLAM AS joslam,
|
|
||||||
JOCSGL AS jocsgl,
|
|
||||||
RTRIM(JOISOT) AS joisot,
|
|
||||||
RTRIM(JOASTS) AS joasts,
|
|
||||||
RTRIM(JOVFTM) AS jovftm,
|
|
||||||
RTRIM(JOADSTS) AS joadsts,
|
|
||||||
RTRIM(JONAPU) AS jonapu,
|
|
||||||
RTRIM(JOBWOW) AS jobwow,
|
|
||||||
RTRIM(JOFUT10) AS jofut10,
|
|
||||||
RTRIM(JOFUT11) AS jofut11,
|
|
||||||
RTRIM(JOFUT12) AS jofut12
|
|
||||||
FROM LGDAT.POPRJ
|
|
||||||
@ -1,78 +0,0 @@
|
|||||||
{
|
|
||||||
"name": "sop10104",
|
|
||||||
"source_connection": "sqlserver",
|
|
||||||
"dest_connection": "usmidsap02",
|
|
||||||
"dest_table": "gp.sop10104",
|
|
||||||
"staging_table": "pipekit_staging.sop10104",
|
|
||||||
"merge_strategy": "full",
|
|
||||||
"merge_key": null,
|
|
||||||
"enabled": 1,
|
|
||||||
"dest_description": null,
|
|
||||||
"columns": [
|
|
||||||
{
|
|
||||||
"source_name": "SOPTYPE",
|
|
||||||
"source_type": "SMALLINT",
|
|
||||||
"dest_name": "soptype",
|
|
||||||
"dest_type": "smallint",
|
|
||||||
"description": null
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"source_name": "SOPNUMBE",
|
|
||||||
"source_type": "CHAR(21)",
|
|
||||||
"dest_name": "sopnumbe",
|
|
||||||
"dest_type": "text",
|
|
||||||
"description": null
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"source_name": "PRCHLDID",
|
|
||||||
"source_type": "CHAR(15)",
|
|
||||||
"dest_name": "prchldid",
|
|
||||||
"dest_type": "text",
|
|
||||||
"description": null
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"source_name": "DELETE1",
|
|
||||||
"source_type": "TINYINT",
|
|
||||||
"dest_name": "delete1",
|
|
||||||
"dest_type": "smallint",
|
|
||||||
"description": null
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"source_name": "USERID",
|
|
||||||
"source_type": "CHAR(15)",
|
|
||||||
"dest_name": "userid",
|
|
||||||
"dest_type": "text",
|
|
||||||
"description": null
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"source_name": "HOLDDATE",
|
|
||||||
"source_type": "DATETIME",
|
|
||||||
"dest_name": "holddate",
|
|
||||||
"dest_type": "timestamp",
|
|
||||||
"description": null
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"source_name": "TIME1",
|
|
||||||
"source_type": "DATETIME",
|
|
||||||
"dest_name": "time1",
|
|
||||||
"dest_type": "timestamp",
|
|
||||||
"description": null
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"source_name": "TRXSORCE",
|
|
||||||
"source_type": "CHAR(13)",
|
|
||||||
"dest_name": "trxsorce",
|
|
||||||
"dest_type": "text",
|
|
||||||
"description": null
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"source_name": "DEX_ROW_ID",
|
|
||||||
"source_type": "INT",
|
|
||||||
"dest_name": "dex_row_id",
|
|
||||||
"dest_type": "integer",
|
|
||||||
"description": null
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"watermarks": [],
|
|
||||||
"hooks": []
|
|
||||||
}
|
|
||||||
@ -1,11 +0,0 @@
|
|||||||
SELECT
|
|
||||||
[SOPTYPE] AS [soptype],
|
|
||||||
RTRIM([SOPNUMBE]) AS [sopnumbe],
|
|
||||||
RTRIM([PRCHLDID]) AS [prchldid],
|
|
||||||
[DELETE1] AS [delete1],
|
|
||||||
RTRIM([USERID]) AS [userid],
|
|
||||||
[HOLDDATE] AS [holddate],
|
|
||||||
[TIME1] AS [time1],
|
|
||||||
RTRIM([TRXSORCE]) AS [trxsorce],
|
|
||||||
[DEX_ROW_ID] AS [dex_row_id]
|
|
||||||
FROM [GPSERVER].[CHG].[dbo].[SOP10104]
|
|
||||||
@ -1,484 +0,0 @@
|
|||||||
{
|
|
||||||
"name": "stkr",
|
|
||||||
"source_connection": "S78030956",
|
|
||||||
"dest_connection": "usmidsap02",
|
|
||||||
"dest_table": "cms.stkr",
|
|
||||||
"staging_table": "pipekit_staging.stkr",
|
|
||||||
"merge_strategy": "full",
|
|
||||||
"merge_key": null,
|
|
||||||
"enabled": 1,
|
|
||||||
"dest_description": "Stock Room Master File 6.0",
|
|
||||||
"columns": [
|
|
||||||
{
|
|
||||||
"source_name": "AXSTKL",
|
|
||||||
"source_type": "CHAR(6)",
|
|
||||||
"dest_name": "axstkl",
|
|
||||||
"dest_type": "text",
|
|
||||||
"description": "Stock Location"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"source_name": "AXLOCN",
|
|
||||||
"source_type": "CHAR(30)",
|
|
||||||
"dest_name": "axlocn",
|
|
||||||
"dest_type": "text",
|
|
||||||
"description": "Location"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"source_name": "AXLDAT",
|
|
||||||
"source_type": "DATE",
|
|
||||||
"dest_name": "axldat",
|
|
||||||
"dest_type": "date",
|
|
||||||
"description": "Last Physical Date"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"source_name": "AXPLNT",
|
|
||||||
"source_type": "CHAR(3)",
|
|
||||||
"dest_name": "axplnt",
|
|
||||||
"dest_type": "text",
|
|
||||||
"description": "Plant Code"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"source_name": "AXSTTP",
|
|
||||||
"source_type": "CHAR(1)",
|
|
||||||
"dest_name": "axsttp",
|
|
||||||
"dest_type": "text",
|
|
||||||
"description": "Location Type"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"source_name": "AXBK01",
|
|
||||||
"source_type": "CHAR(5)",
|
|
||||||
"dest_name": "axbk01",
|
|
||||||
"dest_type": "text",
|
|
||||||
"description": "Not Used"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"source_name": "AXADR1",
|
|
||||||
"source_type": "CHAR(30)",
|
|
||||||
"dest_name": "axadr1",
|
|
||||||
"dest_type": "text",
|
|
||||||
"description": "Warehouse Address 1"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"source_name": "AXADR2",
|
|
||||||
"source_type": "CHAR(30)",
|
|
||||||
"dest_name": "axadr2",
|
|
||||||
"dest_type": "text",
|
|
||||||
"description": "Warehouse Address 2"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"source_name": "AXADR3",
|
|
||||||
"source_type": "CHAR(30)",
|
|
||||||
"dest_name": "axadr3",
|
|
||||||
"dest_type": "text",
|
|
||||||
"description": "Warehouse Address 3"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"source_name": "AXADR4",
|
|
||||||
"source_type": "CHAR(30)",
|
|
||||||
"dest_name": "axadr4",
|
|
||||||
"dest_type": "text",
|
|
||||||
"description": "Warehouse Address 4"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"source_name": "AXADR5",
|
|
||||||
"source_type": "CHAR(30)",
|
|
||||||
"dest_name": "axadr5",
|
|
||||||
"dest_type": "text",
|
|
||||||
"description": "Warehouse Address 5"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"source_name": "AXADR6",
|
|
||||||
"source_type": "CHAR(30)",
|
|
||||||
"dest_name": "axadr6",
|
|
||||||
"dest_type": "text",
|
|
||||||
"description": "Warehouse Address 6"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"source_name": "AXADR7",
|
|
||||||
"source_type": "CHAR(30)",
|
|
||||||
"dest_name": "axadr7",
|
|
||||||
"dest_type": "text",
|
|
||||||
"description": "Warehouse Address 7"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"source_name": "AXADR8",
|
|
||||||
"source_type": "CHAR(30)",
|
|
||||||
"dest_name": "axadr8",
|
|
||||||
"dest_type": "text",
|
|
||||||
"description": "Warehouse Address 8"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"source_name": "AXADR9",
|
|
||||||
"source_type": "CHAR(30)",
|
|
||||||
"dest_name": "axadr9",
|
|
||||||
"dest_type": "text",
|
|
||||||
"description": "Warehouse Address 9"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"source_name": "AXADR10",
|
|
||||||
"source_type": "CHAR(30)",
|
|
||||||
"dest_name": "axadr10",
|
|
||||||
"dest_type": "text",
|
|
||||||
"description": "Warehouse Address 10"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"source_name": "AXPOST",
|
|
||||||
"source_type": "CHAR(10)",
|
|
||||||
"dest_name": "axpost",
|
|
||||||
"dest_type": "text",
|
|
||||||
"description": "Postal Code/ZIP"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"source_name": "AXCITY",
|
|
||||||
"source_type": "CHAR(30)",
|
|
||||||
"dest_name": "axcity",
|
|
||||||
"dest_type": "text",
|
|
||||||
"description": "City"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"source_name": "AXPROV",
|
|
||||||
"source_type": "CHAR(3)",
|
|
||||||
"dest_name": "axprov",
|
|
||||||
"dest_type": "text",
|
|
||||||
"description": "Province /State Code"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"source_name": "AXCTRY",
|
|
||||||
"source_type": "CHAR(3)",
|
|
||||||
"dest_name": "axctry",
|
|
||||||
"dest_type": "text",
|
|
||||||
"description": "Country Code"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"source_name": "AXTEL",
|
|
||||||
"source_type": "NUMERIC(10,0)",
|
|
||||||
"dest_name": "axtel",
|
|
||||||
"dest_type": "numeric(10,0)",
|
|
||||||
"description": "Phone Number"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"source_name": "AXHLD",
|
|
||||||
"source_type": "CHAR(1)",
|
|
||||||
"dest_name": "axhld",
|
|
||||||
"dest_type": "text",
|
|
||||||
"description": "Held Stock Y/N"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"source_name": "AXMRP",
|
|
||||||
"source_type": "CHAR(1)",
|
|
||||||
"dest_name": "axmrp",
|
|
||||||
"dest_type": "text",
|
|
||||||
"description": "Obsoleted"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"source_name": "AXQCSK",
|
|
||||||
"source_type": "CHAR(1)",
|
|
||||||
"dest_name": "axqcsk",
|
|
||||||
"dest_type": "text",
|
|
||||||
"description": "QC Stock Room Y/N"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"source_name": "AXBINC",
|
|
||||||
"source_type": "CHAR(1)",
|
|
||||||
"dest_name": "axbinc",
|
|
||||||
"dest_type": "text",
|
|
||||||
"description": "Under Bin Control"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"source_name": "AXFLG1",
|
|
||||||
"source_type": "CHAR(1)",
|
|
||||||
"dest_name": "axflg1",
|
|
||||||
"dest_type": "text",
|
|
||||||
"description": "Future Use"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"source_name": "AXFLG2",
|
|
||||||
"source_type": "CHAR(1)",
|
|
||||||
"dest_name": "axflg2",
|
|
||||||
"dest_type": "text",
|
|
||||||
"description": "Non-Std Pack SF Check Loc"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"source_name": "AXFLG3",
|
|
||||||
"source_type": "CHAR(1)",
|
|
||||||
"dest_name": "axflg3",
|
|
||||||
"dest_type": "text",
|
|
||||||
"description": "ATF/Custom Bonded"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"source_name": "AXFLG4",
|
|
||||||
"source_type": "CHAR(1)",
|
|
||||||
"dest_name": "axflg4",
|
|
||||||
"dest_type": "text",
|
|
||||||
"description": "flag4"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"source_name": "AXTXT1",
|
|
||||||
"source_type": "CHAR(10)",
|
|
||||||
"dest_name": "axtxt1",
|
|
||||||
"dest_type": "text",
|
|
||||||
"description": "Default Dimension Code"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"source_name": "AXTXT2",
|
|
||||||
"source_type": "CHAR(10)",
|
|
||||||
"dest_name": "axtxt2",
|
|
||||||
"dest_type": "text",
|
|
||||||
"description": "Future Use"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"source_name": "AXTXT3",
|
|
||||||
"source_type": "CHAR(10)",
|
|
||||||
"dest_name": "axtxt3",
|
|
||||||
"dest_type": "text",
|
|
||||||
"description": "Future Use"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"source_name": "AXTXT4",
|
|
||||||
"source_type": "CHAR(3)",
|
|
||||||
"dest_name": "axtxt4",
|
|
||||||
"dest_type": "text",
|
|
||||||
"description": "Future Use"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"source_name": "AXVLOC",
|
|
||||||
"source_type": "CHAR(3)",
|
|
||||||
"dest_name": "axvloc",
|
|
||||||
"dest_type": "text",
|
|
||||||
"description": "Visual Location"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"source_name": "AXSTTY",
|
|
||||||
"source_type": "CHAR(5)",
|
|
||||||
"dest_name": "axstty",
|
|
||||||
"dest_type": "text",
|
|
||||||
"description": "Storage Type"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"source_name": "AXXDSL",
|
|
||||||
"source_type": "CHAR(6)",
|
|
||||||
"dest_name": "axxdsl",
|
|
||||||
"dest_type": "text",
|
|
||||||
"description": "X-Dock Special Loc"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"source_name": "AXOLOC",
|
|
||||||
"source_type": "CHAR(6)",
|
|
||||||
"dest_name": "axoloc",
|
|
||||||
"dest_type": "text",
|
|
||||||
"description": "Overflow Location"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"source_name": "AXFUT1",
|
|
||||||
"source_type": "CHAR(1)",
|
|
||||||
"dest_name": "axfut1",
|
|
||||||
"dest_type": "text",
|
|
||||||
"description": "Future Use"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"source_name": "AXFUT2",
|
|
||||||
"source_type": "CHAR(1)",
|
|
||||||
"dest_name": "axfut2",
|
|
||||||
"dest_type": "text",
|
|
||||||
"description": "Use In-Transit Loc"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"source_name": "AXFUT3",
|
|
||||||
"source_type": "CHAR(1)",
|
|
||||||
"dest_name": "axfut3",
|
|
||||||
"dest_type": "text",
|
|
||||||
"description": "Auto-Receive In-Tran BOL at Target Plant"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"source_name": "AXFUT4",
|
|
||||||
"source_type": "CHAR(3)",
|
|
||||||
"dest_name": "axfut4",
|
|
||||||
"dest_type": "text",
|
|
||||||
"description": "Future Use"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"source_name": "AXFUT5",
|
|
||||||
"source_type": "CHAR(3)",
|
|
||||||
"dest_name": "axfut5",
|
|
||||||
"dest_type": "text",
|
|
||||||
"description": "Future Use"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"source_name": "AXFUT6",
|
|
||||||
"source_type": "CHAR(3)",
|
|
||||||
"dest_name": "axfut6",
|
|
||||||
"dest_type": "text",
|
|
||||||
"description": "WTR Recv Auto Detach Master/Mix"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"source_name": "AXFUT7",
|
|
||||||
"source_type": "CHAR(10)",
|
|
||||||
"dest_name": "axfut7",
|
|
||||||
"dest_type": "text",
|
|
||||||
"description": "ASN Template Code"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"source_name": "AXFUT8",
|
|
||||||
"source_type": "CHAR(10)",
|
|
||||||
"dest_name": "axfut8",
|
|
||||||
"dest_type": "text",
|
|
||||||
"description": "Pick/Put Zone"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"source_name": "AXFUT9",
|
|
||||||
"source_type": "CHAR(20)",
|
|
||||||
"dest_name": "axfut9",
|
|
||||||
"dest_type": "text",
|
|
||||||
"description": "Future Use"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"source_name": "AXFUT10",
|
|
||||||
"source_type": "CHAR(30)",
|
|
||||||
"dest_name": "axfut10",
|
|
||||||
"dest_type": "text",
|
|
||||||
"description": "Future Use"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"source_name": "AXBHLC",
|
|
||||||
"source_type": "CHAR(6)",
|
|
||||||
"dest_name": "axbhlc",
|
|
||||||
"dest_type": "text",
|
|
||||||
"description": "Bill-And-Hold Shipping Location"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"source_name": "AXINUS",
|
|
||||||
"source_type": "CHAR(1)",
|
|
||||||
"dest_name": "axinus",
|
|
||||||
"dest_type": "text",
|
|
||||||
"description": "In use Code"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"source_name": "AXIUSR",
|
|
||||||
"source_type": "CHAR(10)",
|
|
||||||
"dest_name": "axiusr",
|
|
||||||
"dest_type": "text",
|
|
||||||
"description": "In Use By"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"source_name": "AXPGRP",
|
|
||||||
"source_type": "CHAR(3)",
|
|
||||||
"dest_name": "axpgrp",
|
|
||||||
"dest_type": "text",
|
|
||||||
"description": "Picker Group"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"source_name": "AXCNSN",
|
|
||||||
"source_type": "CHAR(1)",
|
|
||||||
"dest_name": "axcnsn",
|
|
||||||
"dest_type": "text",
|
|
||||||
"description": "Consignment flag"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"source_name": "AXTMZN",
|
|
||||||
"source_type": "CHAR(4)",
|
|
||||||
"dest_name": "axtmzn",
|
|
||||||
"dest_type": "text",
|
|
||||||
"description": "Time Zone"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"source_name": "AXFAX",
|
|
||||||
"source_type": "CHAR(15)",
|
|
||||||
"dest_name": "axfax",
|
|
||||||
"dest_type": "text",
|
|
||||||
"description": "Fax Number"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"source_name": "AXEMAL",
|
|
||||||
"source_type": "CHAR(50)",
|
|
||||||
"dest_name": "axemal",
|
|
||||||
"dest_type": "text",
|
|
||||||
"description": "Email Address"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"source_name": "AXTPLT",
|
|
||||||
"source_type": "CHAR(3)",
|
|
||||||
"dest_name": "axtplt",
|
|
||||||
"dest_type": "text",
|
|
||||||
"description": "Transfer-To Plant"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"source_name": "AXTSTK",
|
|
||||||
"source_type": "CHAR(6)",
|
|
||||||
"dest_name": "axtstk",
|
|
||||||
"dest_type": "text",
|
|
||||||
"description": "Transfer-To Location"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"source_name": "AXLEAD",
|
|
||||||
"source_type": "NUMERIC(5,0)",
|
|
||||||
"dest_name": "axlead",
|
|
||||||
"dest_type": "numeric(5,0)",
|
|
||||||
"description": "Transfer Lead Time"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"source_name": "AXLTUN",
|
|
||||||
"source_type": "CHAR(1)",
|
|
||||||
"dest_name": "axltun",
|
|
||||||
"dest_type": "text",
|
|
||||||
"description": "Xfr Lead Time Unit (1-Days, 2-Hours)"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"source_name": "AXTTME",
|
|
||||||
"source_type": "NUMERIC(4,0)",
|
|
||||||
"dest_name": "axttme",
|
|
||||||
"dest_type": "numeric(4,0)",
|
|
||||||
"description": "Transfer Receiving Time"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"source_name": "AXSVIA",
|
|
||||||
"source_type": "CHAR(30)",
|
|
||||||
"dest_name": "axsvia",
|
|
||||||
"dest_type": "text",
|
|
||||||
"description": "Default Ship Via"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"source_name": "AXCWTR",
|
|
||||||
"source_type": "CHAR(1)",
|
|
||||||
"dest_name": "axcwtr",
|
|
||||||
"dest_type": "text",
|
|
||||||
"description": "Auto-Create WTR"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"source_name": "AXCBOL",
|
|
||||||
"source_type": "CHAR(1)",
|
|
||||||
"dest_name": "axcbol",
|
|
||||||
"dest_type": "text",
|
|
||||||
"description": "Auto-Create WTR Type BOL"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"source_name": "AXRBOL",
|
|
||||||
"source_type": "CHAR(1)",
|
|
||||||
"dest_name": "axrbol",
|
|
||||||
"dest_type": "text",
|
|
||||||
"description": "Auto-Print WTR Type BOL"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"source_name": "AXPBOL",
|
|
||||||
"source_type": "CHAR(1)",
|
|
||||||
"dest_name": "axpbol",
|
|
||||||
"dest_type": "text",
|
|
||||||
"description": "Auto-Post WTR Type BOL"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"source_name": "AXFEED",
|
|
||||||
"source_type": "CHAR(1)",
|
|
||||||
"dest_name": "axfeed",
|
|
||||||
"dest_type": "text",
|
|
||||||
"description": "Feed Production"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"source_name": "AXHIN",
|
|
||||||
"source_type": "CHAR(9)",
|
|
||||||
"dest_name": "axhin",
|
|
||||||
"dest_type": "text",
|
|
||||||
"description": "Health Industry Number"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"watermarks": [],
|
|
||||||
"hooks": []
|
|
||||||
}
|
|
||||||
@ -1,69 +0,0 @@
|
|||||||
SELECT
|
|
||||||
RTRIM(AXSTKL) AS axstkl,
|
|
||||||
RTRIM(AXLOCN) AS axlocn,
|
|
||||||
CASE WHEN AXLDAT IN (DATE('0001-01-01'), DATE('9999-12-31')) THEN NULL ELSE AXLDAT END AS axldat,
|
|
||||||
RTRIM(AXPLNT) AS axplnt,
|
|
||||||
RTRIM(AXSTTP) AS axsttp,
|
|
||||||
RTRIM(AXBK01) AS axbk01,
|
|
||||||
RTRIM(AXADR1) AS axadr1,
|
|
||||||
RTRIM(AXADR2) AS axadr2,
|
|
||||||
RTRIM(AXADR3) AS axadr3,
|
|
||||||
RTRIM(AXADR4) AS axadr4,
|
|
||||||
RTRIM(AXADR5) AS axadr5,
|
|
||||||
RTRIM(AXADR6) AS axadr6,
|
|
||||||
RTRIM(AXADR7) AS axadr7,
|
|
||||||
RTRIM(AXADR8) AS axadr8,
|
|
||||||
RTRIM(AXADR9) AS axadr9,
|
|
||||||
RTRIM(AXADR10) AS axadr10,
|
|
||||||
RTRIM(AXPOST) AS axpost,
|
|
||||||
RTRIM(AXCITY) AS axcity,
|
|
||||||
RTRIM(AXPROV) AS axprov,
|
|
||||||
RTRIM(AXCTRY) AS axctry,
|
|
||||||
AXTEL AS axtel,
|
|
||||||
RTRIM(AXHLD) AS axhld,
|
|
||||||
RTRIM(AXMRP) AS axmrp,
|
|
||||||
RTRIM(AXQCSK) AS axqcsk,
|
|
||||||
RTRIM(AXBINC) AS axbinc,
|
|
||||||
RTRIM(AXFLG1) AS axflg1,
|
|
||||||
RTRIM(AXFLG2) AS axflg2,
|
|
||||||
RTRIM(AXFLG3) AS axflg3,
|
|
||||||
RTRIM(AXFLG4) AS axflg4,
|
|
||||||
RTRIM(AXTXT1) AS axtxt1,
|
|
||||||
RTRIM(AXTXT2) AS axtxt2,
|
|
||||||
RTRIM(AXTXT3) AS axtxt3,
|
|
||||||
RTRIM(AXTXT4) AS axtxt4,
|
|
||||||
RTRIM(AXVLOC) AS axvloc,
|
|
||||||
RTRIM(AXSTTY) AS axstty,
|
|
||||||
RTRIM(AXXDSL) AS axxdsl,
|
|
||||||
RTRIM(AXOLOC) AS axoloc,
|
|
||||||
RTRIM(AXFUT1) AS axfut1,
|
|
||||||
RTRIM(AXFUT2) AS axfut2,
|
|
||||||
RTRIM(AXFUT3) AS axfut3,
|
|
||||||
RTRIM(AXFUT4) AS axfut4,
|
|
||||||
RTRIM(AXFUT5) AS axfut5,
|
|
||||||
RTRIM(AXFUT6) AS axfut6,
|
|
||||||
RTRIM(AXFUT7) AS axfut7,
|
|
||||||
RTRIM(AXFUT8) AS axfut8,
|
|
||||||
RTRIM(AXFUT9) AS axfut9,
|
|
||||||
RTRIM(AXFUT10) AS axfut10,
|
|
||||||
RTRIM(AXBHLC) AS axbhlc,
|
|
||||||
RTRIM(AXINUS) AS axinus,
|
|
||||||
RTRIM(AXIUSR) AS axiusr,
|
|
||||||
RTRIM(AXPGRP) AS axpgrp,
|
|
||||||
RTRIM(AXCNSN) AS axcnsn,
|
|
||||||
RTRIM(AXTMZN) AS axtmzn,
|
|
||||||
RTRIM(AXFAX) AS axfax,
|
|
||||||
RTRIM(AXEMAL) AS axemal,
|
|
||||||
RTRIM(AXTPLT) AS axtplt,
|
|
||||||
RTRIM(AXTSTK) AS axtstk,
|
|
||||||
AXLEAD AS axlead,
|
|
||||||
RTRIM(AXLTUN) AS axltun,
|
|
||||||
AXTTME AS axttme,
|
|
||||||
RTRIM(AXSVIA) AS axsvia,
|
|
||||||
RTRIM(AXCWTR) AS axcwtr,
|
|
||||||
RTRIM(AXCBOL) AS axcbol,
|
|
||||||
RTRIM(AXRBOL) AS axrbol,
|
|
||||||
RTRIM(AXPBOL) AS axpbol,
|
|
||||||
RTRIM(AXFEED) AS axfeed,
|
|
||||||
RTRIM(AXHIN) AS axhin
|
|
||||||
FROM LGDAT.STKR
|
|
||||||
@ -1,78 +0,0 @@
|
|||||||
{
|
|
||||||
"name": "sy00300",
|
|
||||||
"source_connection": "sqlserver",
|
|
||||||
"dest_connection": "usmidsap02",
|
|
||||||
"dest_table": "gp.sy00300",
|
|
||||||
"staging_table": "pipekit_staging.sy00300",
|
|
||||||
"merge_strategy": "full",
|
|
||||||
"merge_key": null,
|
|
||||||
"enabled": 1,
|
|
||||||
"dest_description": null,
|
|
||||||
"columns": [
|
|
||||||
{
|
|
||||||
"source_name": "SGMTNUMB",
|
|
||||||
"source_type": "SMALLINT",
|
|
||||||
"dest_name": "sgmtnumb",
|
|
||||||
"dest_type": "smallint",
|
|
||||||
"description": null
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"source_name": "SGMTNAME",
|
|
||||||
"source_type": "CHAR(15)",
|
|
||||||
"dest_name": "sgmtname",
|
|
||||||
"dest_type": "text",
|
|
||||||
"description": null
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"source_name": "LOFSGMNT",
|
|
||||||
"source_type": "SMALLINT",
|
|
||||||
"dest_name": "lofsgmnt",
|
|
||||||
"dest_type": "smallint",
|
|
||||||
"description": null
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"source_name": "MXLENSEG",
|
|
||||||
"source_type": "SMALLINT",
|
|
||||||
"dest_name": "mxlenseg",
|
|
||||||
"dest_type": "smallint",
|
|
||||||
"description": null
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"source_name": "USDFSGKY",
|
|
||||||
"source_type": "SMALLINT",
|
|
||||||
"dest_name": "usdfsgky",
|
|
||||||
"dest_type": "smallint",
|
|
||||||
"description": null
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"source_name": "MNSEGIND",
|
|
||||||
"source_type": "TINYINT",
|
|
||||||
"dest_name": "mnsegind",
|
|
||||||
"dest_type": "smallint",
|
|
||||||
"description": null
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"source_name": "SegmentWidth",
|
|
||||||
"source_type": "CHAR(1)",
|
|
||||||
"dest_name": "segmentwidth",
|
|
||||||
"dest_type": "text",
|
|
||||||
"description": null
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"source_name": "DEX_ROW_TS",
|
|
||||||
"source_type": "DATETIME",
|
|
||||||
"dest_name": "dex_row_ts",
|
|
||||||
"dest_type": "timestamp",
|
|
||||||
"description": null
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"source_name": "DEX_ROW_ID",
|
|
||||||
"source_type": "INT",
|
|
||||||
"dest_name": "dex_row_id",
|
|
||||||
"dest_type": "integer",
|
|
||||||
"description": null
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"watermarks": [],
|
|
||||||
"hooks": []
|
|
||||||
}
|
|
||||||
@ -1,11 +0,0 @@
|
|||||||
SELECT
|
|
||||||
[SGMTNUMB] AS [sgmtnumb],
|
|
||||||
RTRIM([SGMTNAME]) AS [sgmtname],
|
|
||||||
[LOFSGMNT] AS [lofsgmnt],
|
|
||||||
[MXLENSEG] AS [mxlenseg],
|
|
||||||
[USDFSGKY] AS [usdfsgky],
|
|
||||||
[MNSEGIND] AS [mnsegind],
|
|
||||||
RTRIM([SegmentWidth]) AS [segmentwidth],
|
|
||||||
[DEX_ROW_TS] AS [dex_row_ts],
|
|
||||||
[DEX_ROW_ID] AS [dex_row_id]
|
|
||||||
FROM [GPSERVER].[CHG].[dbo].[SY00300]
|
|
||||||
@ -19,7 +19,7 @@ import os
|
|||||||
|
|
||||||
from .. import __version__, db, jrunner, repo
|
from .. import __version__, db, jrunner, repo
|
||||||
from ..web import mount_web
|
from ..web import mount_web
|
||||||
from .routes import connections, groups, introspect, modules, runs, system
|
from .routes import connections, introspect, modules, runs, system
|
||||||
|
|
||||||
_log = logging.getLogger("pipekit.web")
|
_log = logging.getLogger("pipekit.web")
|
||||||
|
|
||||||
@ -167,7 +167,6 @@ def create_app() -> FastAPI:
|
|||||||
app.include_router(system.router)
|
app.include_router(system.router)
|
||||||
app.include_router(connections.router, prefix="/api")
|
app.include_router(connections.router, prefix="/api")
|
||||||
app.include_router(introspect.router, prefix="/api")
|
app.include_router(introspect.router, prefix="/api")
|
||||||
app.include_router(groups.router, prefix="/api")
|
|
||||||
app.include_router(modules.router, prefix="/api")
|
app.include_router(modules.router, prefix="/api")
|
||||||
app.include_router(runs.router, prefix="/api")
|
app.include_router(runs.router, prefix="/api")
|
||||||
mount_web(app)
|
mount_web(app)
|
||||||
|
|||||||
@ -1,84 +0,0 @@
|
|||||||
"""Groups + group runs. The JSON counterpart to the web UI's group pages.
|
|
||||||
|
|
||||||
The web routes (web/app.py) already expose group runs, but behind session-cookie auth and
|
|
||||||
returning HTML/redirects, so they are only usable from a browser. External schedulers need
|
|
||||||
Basic auth and JSON -- hence these. Same async contract as POST /modules/{id}/run: the
|
|
||||||
group_run_id comes back immediately and the work continues in the background, so callers poll
|
|
||||||
GET /group-runs/{id} for the terminal status.
|
|
||||||
"""
|
|
||||||
|
|
||||||
from __future__ import annotations
|
|
||||||
|
|
||||||
from fastapi import APIRouter, BackgroundTasks, Depends, HTTPException
|
|
||||||
|
|
||||||
from ... import engine, repo
|
|
||||||
from ..auth import require_auth
|
|
||||||
|
|
||||||
router = APIRouter(tags=["groups"], dependencies=[Depends(require_auth)])
|
|
||||||
|
|
||||||
|
|
||||||
@router.get("/groups")
|
|
||||||
def list_groups() -> list[dict]:
|
|
||||||
return repo.list_groups()
|
|
||||||
|
|
||||||
|
|
||||||
@router.get("/groups/{group_id}")
|
|
||||||
def get_group(group_id: int) -> dict:
|
|
||||||
g = repo.get_group(group_id)
|
|
||||||
if g is None:
|
|
||||||
raise HTTPException(404, f"group id={group_id} not found")
|
|
||||||
return {**g, "members": repo.list_group_members(group_id)}
|
|
||||||
|
|
||||||
|
|
||||||
@router.post("/groups/{group_id}/run")
|
|
||||||
def run_group(group_id: int, background: BackgroundTasks,
|
|
||||||
dry_run: bool = False) -> dict:
|
|
||||||
"""Kick off a group run. Returns group_run_id immediately."""
|
|
||||||
g = repo.get_group(group_id)
|
|
||||||
if g is None:
|
|
||||||
raise HTTPException(404, f"group id={group_id} not found")
|
|
||||||
group_run_id = repo.create_group_run(group_id, triggered_by="api")
|
|
||||||
background.add_task(_run_in_background, group_id, group_run_id, dry_run)
|
|
||||||
return {"group_run_id": group_run_id}
|
|
||||||
|
|
||||||
|
|
||||||
def _run_in_background(group_id: int, group_run_id: int, dry_run: bool) -> None:
|
|
||||||
try:
|
|
||||||
engine.run_group(group_id, group_run_id=group_run_id, dry_run=dry_run)
|
|
||||||
except Exception as e: # noqa: BLE001
|
|
||||||
# run_group already records per-module failures; this is the group row itself
|
|
||||||
# failing (or a LockBusy escaping), which must not leave it stuck at 'running'.
|
|
||||||
repo.finish_group_run(group_run_id, status="error")
|
|
||||||
raise e from None
|
|
||||||
|
|
||||||
|
|
||||||
@router.get("/group-runs/{group_run_id}")
|
|
||||||
def get_group_run(group_run_id: int) -> dict:
|
|
||||||
gr = repo.get_group_run(group_run_id)
|
|
||||||
if gr is None:
|
|
||||||
raise HTTPException(404, f"group_run id={group_run_id} not found")
|
|
||||||
return {**gr, "runs": repo.list_runs_for_group_run(group_run_id)}
|
|
||||||
|
|
||||||
|
|
||||||
@router.post("/group-runs/{group_run_id}/cancel")
|
|
||||||
def cancel_group_run(group_run_id: int) -> dict:
|
|
||||||
"""Stop an in-flight group run.
|
|
||||||
|
|
||||||
Kills the module currently running and prevents the remaining members from
|
|
||||||
starting. The group run lands with status ``cancelled``; the engine's own
|
|
||||||
finally-blocks release the module lock and write the run_log rows, so this
|
|
||||||
handler deliberately does not touch either.
|
|
||||||
"""
|
|
||||||
gr = repo.get_group_run(group_run_id)
|
|
||||||
if gr is None:
|
|
||||||
raise HTTPException(404, f"group_run id={group_run_id} not found")
|
|
||||||
if gr["status"] != "running":
|
|
||||||
raise HTTPException(409, f"group run {group_run_id} is {gr['status']}, not running")
|
|
||||||
return engine.request_group_cancel(group_run_id)
|
|
||||||
|
|
||||||
|
|
||||||
@router.get("/groups/{group_id}/group-runs")
|
|
||||||
def list_group_runs(group_id: int, limit: int = 20) -> list[dict]:
|
|
||||||
if repo.get_group(group_id) is None:
|
|
||||||
raise HTTPException(404, f"group id={group_id} not found")
|
|
||||||
return repo.list_group_runs(group_id, limit=limit)
|
|
||||||
@ -1,6 +1,5 @@
|
|||||||
from .cancel import request_cancel
|
from .cancel import request_cancel
|
||||||
from .runner import (GroupRunOutcome, LockBusy, RunOutcome, request_group_cancel,
|
from .runner import GroupRunOutcome, LockBusy, RunOutcome, run_group, run_module
|
||||||
run_group, run_module)
|
|
||||||
|
|
||||||
__all__ = ["GroupRunOutcome", "LockBusy", "RunOutcome", "request_cancel",
|
__all__ = ["GroupRunOutcome", "LockBusy", "RunOutcome", "request_cancel",
|
||||||
"request_group_cancel", "run_group", "run_module"]
|
"run_group", "run_module"]
|
||||||
|
|||||||
@ -17,7 +17,6 @@ import threading
|
|||||||
_lock = threading.Lock()
|
_lock = threading.Lock()
|
||||||
_active: dict[int, object] = {} # run_id -> subprocess.Popen (live jrunner proc)
|
_active: dict[int, object] = {} # run_id -> subprocess.Popen (live jrunner proc)
|
||||||
_cancelled: set[int] = set() # run_ids asked to stop
|
_cancelled: set[int] = set() # run_ids asked to stop
|
||||||
_cancelled_groups: set[int] = set() # group_run_ids asked to stop
|
|
||||||
|
|
||||||
|
|
||||||
class RunCancelled(Exception):
|
class RunCancelled(Exception):
|
||||||
@ -30,27 +29,6 @@ def arm(run_id: int) -> None:
|
|||||||
_cancelled.discard(run_id)
|
_cancelled.discard(run_id)
|
||||||
|
|
||||||
|
|
||||||
def arm_group(group_run_id: int) -> None:
|
|
||||||
"""Clear any stale group cancel flag before a group run starts."""
|
|
||||||
with _lock:
|
|
||||||
_cancelled_groups.discard(group_run_id)
|
|
||||||
|
|
||||||
|
|
||||||
def flag_group(group_run_id: int) -> None:
|
|
||||||
"""Mark a group run as cancelled so run_group stops launching members.
|
|
||||||
|
|
||||||
Only sets the flag; terminating the module that is already in flight is the
|
|
||||||
caller's job (it needs the DB to find the live run_id).
|
|
||||||
"""
|
|
||||||
with _lock:
|
|
||||||
_cancelled_groups.add(group_run_id)
|
|
||||||
|
|
||||||
|
|
||||||
def is_group_cancelled(group_run_id: int) -> bool:
|
|
||||||
with _lock:
|
|
||||||
return group_run_id in _cancelled_groups
|
|
||||||
|
|
||||||
|
|
||||||
def register(run_id: int, proc: object) -> None:
|
def register(run_id: int, proc: object) -> None:
|
||||||
"""Record the live subprocess for a run so cancel can reach it."""
|
"""Record the live subprocess for a run so cancel can reach it."""
|
||||||
with _lock:
|
with _lock:
|
||||||
|
|||||||
@ -38,7 +38,7 @@ class RunOutcome:
|
|||||||
@dataclass
|
@dataclass
|
||||||
class GroupRunOutcome:
|
class GroupRunOutcome:
|
||||||
group_run_id: int
|
group_run_id: int
|
||||||
status: str # success | error | dry_run | cancelled
|
status: str # success | error | dry_run
|
||||||
module_outcomes: list
|
module_outcomes: list
|
||||||
|
|
||||||
|
|
||||||
@ -208,17 +208,10 @@ def run_group(group_id: int, *, dry_run: bool = False,
|
|||||||
if group_run_id is None:
|
if group_run_id is None:
|
||||||
group_run_id = repo.create_group_run(group_id, triggered_by="manual")
|
group_run_id = repo.create_group_run(group_id, triggered_by="manual")
|
||||||
|
|
||||||
cancel.arm_group(group_run_id)
|
|
||||||
members = [m for m in repo.list_group_members(group_id) if m["module_enabled"]]
|
members = [m for m in repo.list_group_members(group_id) if m["module_enabled"]]
|
||||||
outcomes: list[RunOutcome] = []
|
outcomes: list[RunOutcome] = []
|
||||||
stopped = False
|
|
||||||
|
|
||||||
for member in members:
|
for member in members:
|
||||||
# Unlike a module failure (which the group runs past), a cancel means stop:
|
|
||||||
# don't start any remaining member.
|
|
||||||
if cancel.is_group_cancelled(group_run_id):
|
|
||||||
stopped = True
|
|
||||||
break
|
|
||||||
try:
|
try:
|
||||||
outcome = run_module(
|
outcome = run_module(
|
||||||
member["module_id"],
|
member["module_id"],
|
||||||
@ -231,10 +224,7 @@ def run_group(group_id: int, *, dry_run: bool = False,
|
|||||||
outcome = RunOutcome(run_id, "error", None, str(e), None, None)
|
outcome = RunOutcome(run_id, "error", None, str(e), None, None)
|
||||||
outcomes.append(outcome)
|
outcomes.append(outcome)
|
||||||
|
|
||||||
# 'cancelled' outranks 'error': the error is usually the killed jrunner proc.
|
if not outcomes:
|
||||||
if stopped or any(o.status == "cancelled" for o in outcomes):
|
|
||||||
final = "cancelled"
|
|
||||||
elif not outcomes:
|
|
||||||
final = "dry_run" if dry_run else "success"
|
final = "dry_run" if dry_run else "success"
|
||||||
elif all(o.status == "dry_run" for o in outcomes):
|
elif all(o.status == "dry_run" for o in outcomes):
|
||||||
final = "dry_run"
|
final = "dry_run"
|
||||||
@ -247,23 +237,6 @@ def run_group(group_id: int, *, dry_run: bool = False,
|
|||||||
return GroupRunOutcome(group_run_id, final, outcomes)
|
return GroupRunOutcome(group_run_id, final, outcomes)
|
||||||
|
|
||||||
|
|
||||||
def request_group_cancel(group_run_id: int) -> dict:
|
|
||||||
"""Stop a group run: flag it, and terminate whichever module is in flight.
|
|
||||||
|
|
||||||
Lives here rather than in cancel.py because finding the live run needs the DB.
|
|
||||||
The flag is what stops *remaining* members; the per-run cancel is what stops
|
|
||||||
the current one. Returns the runs that were signalled (may be empty if the
|
|
||||||
group is between members this instant -- the flag still lands).
|
|
||||||
"""
|
|
||||||
cancel.flag_group(group_run_id)
|
|
||||||
signalled = [
|
|
||||||
{"run_id": r["id"], "result": cancel.request_cancel(r["id"])}
|
|
||||||
for r in repo.list_runs_for_group_run(group_run_id)
|
|
||||||
if r["status"] == "running"
|
|
||||||
]
|
|
||||||
return {"group_run_id": group_run_id, "signalled": signalled}
|
|
||||||
|
|
||||||
|
|
||||||
def _run_hooks(module_id: int, *, fail_fast: bool, run_on_set: set[str]) -> str:
|
def _run_hooks(module_id: int, *, fail_fast: bool, run_on_set: set[str]) -> str:
|
||||||
"""Run hooks whose ``run_on`` is in run_on_set. Returns a text log."""
|
"""Run hooks whose ``run_on`` is in run_on_set. Returns a text log."""
|
||||||
hooks = [h for h in repo.list_hooks(module_id) if h["run_on"] in run_on_set]
|
hooks = [h for h in repo.list_hooks(module_id) if h["run_on"] in run_on_set]
|
||||||
|
|||||||
@ -1508,28 +1508,6 @@ def group_run_live_fragment(request: Request, group_run_id: int):
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
@_router.post("/group-runs/{group_run_id}/cancel", response_class=HTMLResponse)
|
|
||||||
def group_run_cancel(request: Request, group_run_id: int):
|
|
||||||
"""Stop the whole group: kill the module in flight, skip the rest.
|
|
||||||
|
|
||||||
Distinct from /runs/{id}/cancel, which cancels one member and lets the group
|
|
||||||
carry on to the next.
|
|
||||||
"""
|
|
||||||
group_run = repo.get_group_run(group_run_id)
|
|
||||||
if group_run is None:
|
|
||||||
raise HTTPException(404, f"group run id={group_run_id} not found")
|
|
||||||
if group_run["status"] == "running":
|
|
||||||
engine.request_group_cancel(group_run_id)
|
|
||||||
# Re-read: the engine writes the terminal status from its own thread, so the
|
|
||||||
# fragment may still show 'running' for a tick until the poll catches up.
|
|
||||||
group_run = repo.get_group_run(group_run_id)
|
|
||||||
module_runs = repo.list_runs_for_group_run(group_run_id)
|
|
||||||
return _templates.TemplateResponse(
|
|
||||||
request, "_group_run_live.html",
|
|
||||||
_ctx(group_run=group_run, module_runs=module_runs),
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
def _save_group_schedules(form, group_id: int) -> None:
|
def _save_group_schedules(form, group_id: int) -> None:
|
||||||
"""Process sched_* parallel arrays from a group form POST."""
|
"""Process sched_* parallel arrays from a group form POST."""
|
||||||
from croniter import croniter as _croniter
|
from croniter import croniter as _croniter
|
||||||
|
|||||||
@ -147,8 +147,6 @@ table.grid tr:hover td { background: #1c2128; }
|
|||||||
.pill.running { color: var(--accent); }
|
.pill.running { color: var(--accent); }
|
||||||
.pill.disabled { color: var(--text-muted); }
|
.pill.disabled { color: var(--text-muted); }
|
||||||
.pill.warning { color: var(--warning); }
|
.pill.warning { color: var(--warning); }
|
||||||
.pill.cancelled { color: var(--warning); }
|
|
||||||
.pill.dry_run { color: var(--text-muted); }
|
|
||||||
|
|
||||||
/* Group membership tags */
|
/* Group membership tags */
|
||||||
.tag {
|
.tag {
|
||||||
|
|||||||
@ -9,12 +9,6 @@
|
|||||||
<header>
|
<header>
|
||||||
Module runs
|
Module runs
|
||||||
<span style="margin-left:auto">
|
<span style="margin-left:auto">
|
||||||
{% if group_run.status == 'running' %}
|
|
||||||
<button class="btn ghost" style="margin-right:0.5rem"
|
|
||||||
hx-post="/group-runs/{{ group_run.id }}/cancel"
|
|
||||||
hx-target="#group-run-live" hx-swap="outerHTML"
|
|
||||||
hx-confirm="Cancel this group run? The module in flight is stopped and the remaining modules are skipped.">cancel group</button>
|
|
||||||
{% endif %}
|
|
||||||
<span class="pill {{ group_run.status }}">{{ group_run.status }}</span>
|
<span class="pill {{ group_run.status }}">{{ group_run.status }}</span>
|
||||||
{% if group_run.duration_s is not none %} · {{ group_run.duration_s | duration }}{% endif %}
|
{% if group_run.duration_s is not none %} · {{ group_run.duration_s | duration }}{% endif %}
|
||||||
</span>
|
</span>
|
||||||
|
|||||||
@ -31,17 +31,7 @@
|
|||||||
hx-swap="outerHTML"
|
hx-swap="outerHTML"
|
||||||
{% endif %}>
|
{% endif %}>
|
||||||
<div class="panel">
|
<div class="panel">
|
||||||
<header>
|
<header>Module runs</header>
|
||||||
Module runs
|
|
||||||
{% if group_run.status == 'running' %}
|
|
||||||
<span style="margin-left:auto">
|
|
||||||
<button class="btn ghost"
|
|
||||||
hx-post="/group-runs/{{ group_run.id }}/cancel"
|
|
||||||
hx-target="#group-run-live" hx-swap="outerHTML"
|
|
||||||
hx-confirm="Cancel this group run? The module in flight is stopped and the remaining modules are skipped.">cancel group</button>
|
|
||||||
</span>
|
|
||||||
{% endif %}
|
|
||||||
</header>
|
|
||||||
<div class="body tight">
|
<div class="body tight">
|
||||||
{% if module_runs %}
|
{% if module_runs %}
|
||||||
<table class="grid">
|
<table class="grid">
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user