Compare commits

..

No commits in common. "main" and "run-group-cli" have entirely different histories.

25 changed files with 8 additions and 2028 deletions

View File

@ -80,9 +80,7 @@ run_group(group_id)
→ create group_run row (status=running)
→ for each enabled group_member in run_order: call run_module(group_run_id=...)
→ continues past individual module failures (all members run)
→ but a group cancel breaks the loop: remaining members never start
→ final status: cancelled if cancelled, else dry_run if all dry_run,
error if any errored, success otherwise
→ final status: dry_run if all dry_run, error if any errored, success otherwise
→ finish_group_run(status)
```

View File

@ -2,10 +2,6 @@
{
"name": "Accounts Receivable",
"members": [
{
"module": "arnot",
"run_order": 0
},
{
"module": "aroht",
"run_order": 0
@ -38,7 +34,7 @@
"schedules": [
{
"cron_expr": "0 1 * * *",
"enabled": 0
"enabled": 1
}
]
},
@ -117,10 +113,6 @@
"module": "sscc",
"run_order": 0
},
{
"module": "sy00300",
"run_order": 0
},
{
"module": "sy03300",
"run_order": 0
@ -226,14 +218,6 @@
"module": "gl30000",
"run_order": 0
},
{
"module": "glca",
"run_order": 0
},
{
"module": "glcc",
"run_order": 0
},
{
"module": "gtran",
"run_order": 0
@ -319,10 +303,6 @@
"module": "moldmast",
"run_order": 0
},
{
"module": "stkr",
"run_order": 0
},
{
"module": "stnote",
"run_order": 0
@ -502,10 +482,6 @@
{
"name": "Purchasing",
"members": [
{
"module": "poprj",
"run_order": 0
},
{
"module": "poh",
"run_order": 1
@ -594,10 +570,6 @@
"module": "sop10102",
"run_order": 0
},
{
"module": "sop10104",
"run_order": 0
},
{
"module": "sop10200",
"run_order": 0

View File

@ -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": []
}

View File

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

View File

@ -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": []
}

View File

@ -1,5 +0,0 @@
SELECT
DW6COMN AS dw6comn,
DW6SCOM AS dw6scom,
RTRIM(DW6RCOD) AS dw6rcod
FROM LGDAT.GLCA

View File

@ -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": []
}

View File

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

View File

@ -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": []
}

View File

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

View File

@ -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": []
}

View File

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

View File

@ -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": []
}

View File

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

View File

@ -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": []
}

View File

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

View File

@ -19,7 +19,7 @@ import os
from .. import __version__, db, jrunner, repo
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")
@ -167,7 +167,6 @@ def create_app() -> FastAPI:
app.include_router(system.router)
app.include_router(connections.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(runs.router, prefix="/api")
mount_web(app)

View File

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

View File

@ -1,6 +1,5 @@
from .cancel import request_cancel
from .runner import (GroupRunOutcome, LockBusy, RunOutcome, request_group_cancel,
run_group, run_module)
from .runner import GroupRunOutcome, LockBusy, RunOutcome, run_group, run_module
__all__ = ["GroupRunOutcome", "LockBusy", "RunOutcome", "request_cancel",
"request_group_cancel", "run_group", "run_module"]
"run_group", "run_module"]

View File

@ -17,7 +17,6 @@ import threading
_lock = threading.Lock()
_active: dict[int, object] = {} # run_id -> subprocess.Popen (live jrunner proc)
_cancelled: set[int] = set() # run_ids asked to stop
_cancelled_groups: set[int] = set() # group_run_ids asked to stop
class RunCancelled(Exception):
@ -30,27 +29,6 @@ def arm(run_id: int) -> None:
_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:
"""Record the live subprocess for a run so cancel can reach it."""
with _lock:

View File

@ -38,7 +38,7 @@ class RunOutcome:
@dataclass
class GroupRunOutcome:
group_run_id: int
status: str # success | error | dry_run | cancelled
status: str # success | error | dry_run
module_outcomes: list
@ -208,17 +208,10 @@ def run_group(group_id: int, *, dry_run: bool = False,
if group_run_id is None:
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"]]
outcomes: list[RunOutcome] = []
stopped = False
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:
outcome = run_module(
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)
outcomes.append(outcome)
# 'cancelled' outranks 'error': the error is usually the killed jrunner proc.
if stopped or any(o.status == "cancelled" for o in outcomes):
final = "cancelled"
elif not outcomes:
if not outcomes:
final = "dry_run" if dry_run else "success"
elif all(o.status == "dry_run" for o in outcomes):
final = "dry_run"
@ -247,23 +237,6 @@ def run_group(group_id: int, *, dry_run: bool = False,
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:
"""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]

View File

@ -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:
"""Process sched_* parallel arrays from a group form POST."""
from croniter import croniter as _croniter

View File

@ -147,8 +147,6 @@ table.grid tr:hover td { background: #1c2128; }
.pill.running { color: var(--accent); }
.pill.disabled { color: var(--text-muted); }
.pill.warning { color: var(--warning); }
.pill.cancelled { color: var(--warning); }
.pill.dry_run { color: var(--text-muted); }
/* Group membership tags */
.tag {

View File

@ -9,12 +9,6 @@
<header>
Module runs
<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>
{% if group_run.duration_s is not none %}&nbsp;· {{ group_run.duration_s | duration }}{% endif %}
</span>

View File

@ -31,17 +31,7 @@
hx-swap="outerHTML"
{% endif %}>
<div class="panel">
<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>
<header>Module runs</header>
<div class="body tight">
{% if module_runs %}
<table class="grid">