datex-studio-cli 0.3.1__tar.gz → 0.3.3__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {datex_studio_cli-0.3.1 → datex_studio_cli-0.3.3}/.gitignore +9 -0
- {datex_studio_cli-0.3.1 → datex_studio_cli-0.3.3}/PKG-INFO +8 -1
- datex_studio_cli-0.3.3/examples/bill-of-lading/01-schema-exploration.md +303 -0
- datex_studio_cli-0.3.3/examples/bill-of-lading/02-field-mapping.md +192 -0
- datex_studio_cli-0.3.3/examples/bill-of-lading/bill-of-lading.data.json +105 -0
- datex_studio_cli-0.3.3/examples/bill-of-lading/bill-of-lading.rdlx-json +857 -0
- {datex_studio_cli-0.3.1 → datex_studio_cli-0.3.3}/pyproject.toml +15 -2
- datex_studio_cli-0.3.3/report-creator.skill +0 -0
- datex_studio_cli-0.3.3/scripts/analyze_corpus.py +286 -0
- datex_studio_cli-0.3.3/scripts/generate_rdlx_schema.py +433 -0
- {datex_studio_cli-0.3.1 → datex_studio_cli-0.3.3}/src/dxs/__init__.py +1 -1
- {datex_studio_cli-0.3.1 → datex_studio_cli-0.3.3}/src/dxs/cli.py +19 -29
- {datex_studio_cli-0.3.1 → datex_studio_cli-0.3.3}/src/dxs/commands/auth.py +2 -2
- {datex_studio_cli-0.3.1 → datex_studio_cli-0.3.3}/src/dxs/commands/branch.py +10 -2
- {datex_studio_cli-0.3.1 → datex_studio_cli-0.3.3}/src/dxs/commands/crm.py +13 -23
- {datex_studio_cli-0.3.1 → datex_studio_cli-0.3.3}/src/dxs/commands/datasource.py +116 -102
- {datex_studio_cli-0.3.1 → datex_studio_cli-0.3.3}/src/dxs/commands/devops.py +164 -18
- {datex_studio_cli-0.3.1 → datex_studio_cli-0.3.3}/src/dxs/commands/document.py +5 -9
- {datex_studio_cli-0.3.1 → datex_studio_cli-0.3.3}/src/dxs/commands/explore.py +2 -2
- {datex_studio_cli-0.3.1 → datex_studio_cli-0.3.3}/src/dxs/commands/odata.py +2 -2
- {datex_studio_cli-0.3.1 → datex_studio_cli-0.3.3}/src/dxs/commands/organization.py +17 -5
- {datex_studio_cli-0.3.1 → datex_studio_cli-0.3.3}/src/dxs/commands/release_notes.py +7 -21
- datex_studio_cli-0.3.3/src/dxs/commands/report/__init__.py +396 -0
- datex_studio_cli-0.3.3/src/dxs/commands/report/add_cmds.py +1456 -0
- datex_studio_cli-0.3.3/src/dxs/commands/report/api.py +716 -0
- datex_studio_cli-0.3.3/src/dxs/commands/report/batch.py +350 -0
- datex_studio_cli-0.3.3/src/dxs/commands/report/create.py +264 -0
- datex_studio_cli-0.3.3/src/dxs/commands/report/data.py +192 -0
- datex_studio_cli-0.3.3/src/dxs/commands/report/dataset.py +200 -0
- datex_studio_cli-0.3.3/src/dxs/commands/report/edit.py +296 -0
- datex_studio_cli-0.3.3/src/dxs/commands/report/preview.py +326 -0
- datex_studio_cli-0.3.3/src/dxs/commands/report/schema_cmds.py +84 -0
- {datex_studio_cli-0.3.1 → datex_studio_cli-0.3.3}/src/dxs/commands/schema.py +715 -224
- {datex_studio_cli-0.3.1 → datex_studio_cli-0.3.3}/src/dxs/commands/source.py +2 -6
- {datex_studio_cli-0.3.1 → datex_studio_cli-0.3.3}/src/dxs/commands/studio.py +133 -26
- {datex_studio_cli-0.3.1 → datex_studio_cli-0.3.3}/src/dxs/core/api/client.py +2 -6
- {datex_studio_cli-0.3.1 → datex_studio_cli-0.3.3}/src/dxs/core/api/endpoints.py +15 -1
- {datex_studio_cli-0.3.1 → datex_studio_cli-0.3.3}/src/dxs/core/datasource/generator.py +416 -131
- {datex_studio_cli-0.3.1 → datex_studio_cli-0.3.3}/src/dxs/core/datasource/models.py +57 -5
- datex_studio_cli-0.3.3/src/dxs/core/datasource/parsers.py +432 -0
- datex_studio_cli-0.3.3/src/dxs/core/datasource/resolver.py +210 -0
- {datex_studio_cli-0.3.1 → datex_studio_cli-0.3.3}/src/dxs/core/datasource/validator.py +5 -89
- {datex_studio_cli-0.3.1 → datex_studio_cli-0.3.3}/src/dxs/core/devops/client.py +67 -0
- datex_studio_cli-0.3.3/src/dxs/core/devops/helpers.py +76 -0
- datex_studio_cli-0.3.3/src/dxs/core/devops/models.py +297 -0
- {datex_studio_cli-0.3.1 → datex_studio_cli-0.3.3}/src/dxs/core/dynamics/client.py +15 -10
- {datex_studio_cli-0.3.1 → datex_studio_cli-0.3.3}/src/dxs/core/output/csv_fmt.py +17 -0
- {datex_studio_cli-0.3.1 → datex_studio_cli-0.3.3}/src/dxs/core/output/formatter.py +13 -9
- datex_studio_cli-0.3.3/src/dxs/core/output/redaction.py +70 -0
- {datex_studio_cli-0.3.1 → datex_studio_cli-0.3.3}/src/dxs/core/output/yaml_fmt.py +14 -12
- {datex_studio_cli-0.3.1 → datex_studio_cli-0.3.3}/src/dxs/core/release_notes.py +12 -8
- {datex_studio_cli-0.3.1 → datex_studio_cli-0.3.3}/src/dxs/report/datasource_binding.py +16 -4
- datex_studio_cli-0.3.3/src/dxs/report/engine.py +1164 -0
- datex_studio_cli-0.3.3/src/dxs/report/models.py +392 -0
- {datex_studio_cli-0.3.1 → datex_studio_cli-0.3.3}/src/dxs/report/owned_datasource.py +47 -74
- datex_studio_cli-0.3.3/src/dxs/report/preview.py +184 -0
- datex_studio_cli-0.3.1/src/dxs/report/preview.py → datex_studio_cli-0.3.3/src/dxs/report/preview_arjs.py +86 -160
- {datex_studio_cli-0.3.1 → datex_studio_cli-0.3.3}/src/dxs/report/schema.py +420 -13
- datex_studio_cli-0.3.3/src/dxs/report/svg_renderer.py +147 -0
- datex_studio_cli-0.3.3/src/dxs/report/validate_arjs.py +142 -0
- {datex_studio_cli-0.3.1 → datex_studio_cli-0.3.3}/src/dxs/report/validator.py +161 -2
- {datex_studio_cli-0.3.1 → datex_studio_cli-0.3.3}/src/dxs/report/wrapper.py +3 -1
- {datex_studio_cli-0.3.1 → datex_studio_cli-0.3.3}/src/dxs/utils/config.py +3 -0
- datex_studio_cli-0.3.3/src/dxs/utils/image.py +43 -0
- datex_studio_cli-0.3.3/src/dxs/utils/paths.py +131 -0
- {datex_studio_cli-0.3.1 → datex_studio_cli-0.3.3}/src/dxs/utils/resolvers.py +36 -1
- {datex_studio_cli-0.3.1 → datex_studio_cli-0.3.3}/src/dxs/web/app.py +24 -7
- datex_studio_cli-0.3.3/src/dxs/web/design.py +345 -0
- datex_studio_cli-0.3.3/src/dxs/web/static/404/index.html +1 -0
- datex_studio_cli-0.3.3/src/dxs/web/static/404.html +1 -0
- datex_studio_cli-0.3.3/src/dxs/web/static/_next/static/chunks/0b24cca5-c1e1c8810348f107.js +1 -0
- datex_studio_cli-0.3.3/src/dxs/web/static/_next/static/chunks/255-102f2e5b2e3dc2ef.js +1 -0
- datex_studio_cli-0.3.3/src/dxs/web/static/_next/static/chunks/538-0c48d257061c2519.js +1 -0
- datex_studio_cli-0.3.3/src/dxs/web/static/_next/static/chunks/697-0e000ab410d9f470.js +1 -0
- datex_studio_cli-0.3.3/src/dxs/web/static/_next/static/chunks/871-1acacdb7b4022abf.js +1 -0
- datex_studio_cli-0.3.3/src/dxs/web/static/_next/static/chunks/8b8f67fc-6295949a4b5485a4.js +1 -0
- datex_studio_cli-0.3.3/src/dxs/web/static/_next/static/chunks/909-c88abba3cf0caec3.js +1 -0
- datex_studio_cli-0.3.3/src/dxs/web/static/_next/static/chunks/app/design/capture/page-a5e129c2d223432c.js +1 -0
- datex_studio_cli-0.3.3/src/dxs/web/static/_next/static/chunks/app/design/page-21ba66a3dd3b03f0.js +1 -0
- datex_studio_cli-0.3.3/src/dxs/web/static/_next/static/chunks/app/layout-2cc6eac09e476c91.js +1 -0
- datex_studio_cli-0.3.1/src/dxs/web/static/_next/static/chunks/app/page-b5e545d0d4880f6f.js → datex_studio_cli-0.3.3/src/dxs/web/static/_next/static/chunks/app/page-20c358395882cdac.js +1 -1
- datex_studio_cli-0.3.1/src/dxs/web/static/_next/static/chunks/main-1a0dcce460eb61ce.js → datex_studio_cli-0.3.3/src/dxs/web/static/_next/static/chunks/main-0f18f91200dac003.js +1 -1
- datex_studio_cli-0.3.3/src/dxs/web/static/_next/static/css/a4597027cb06b77d.css +3 -0
- datex_studio_cli-0.3.3/src/dxs/web/static/_next/static/tKckXNZJLjE7JZyWX_89t/_buildManifest.js +1 -0
- datex_studio_cli-0.3.3/src/dxs/web/static/design/capture/index.html +1 -0
- datex_studio_cli-0.3.3/src/dxs/web/static/design/capture/index.txt +21 -0
- datex_studio_cli-0.3.3/src/dxs/web/static/design/index.html +1 -0
- datex_studio_cli-0.3.3/src/dxs/web/static/design/index.txt +21 -0
- datex_studio_cli-0.3.3/src/dxs/web/static/index.html +1 -0
- {datex_studio_cli-0.3.1 → datex_studio_cli-0.3.3}/src/dxs/web/static/index.txt +6 -6
- datex_studio_cli-0.3.3/src/dxs/web/static/render-cli.js +76146 -0
- datex_studio_cli-0.3.3/src/dxs/web/static/report-preview.html +178 -0
- datex_studio_cli-0.3.3/src/dxs/web/static/report-validate.html +169 -0
- datex_studio_cli-0.3.3/test-preview.svg +1 -0
- datex_studio_cli-0.3.1/report-creator.skill +0 -0
- datex_studio_cli-0.3.1/src/dxs/commands/report.py +0 -1962
- datex_studio_cli-0.3.1/src/dxs/core/datasource/parsers.py +0 -140
- datex_studio_cli-0.3.1/src/dxs/core/devops/models.py +0 -140
- datex_studio_cli-0.3.1/src/dxs/report/engine.py +0 -256
- datex_studio_cli-0.3.1/src/dxs/report/models.py +0 -273
- datex_studio_cli-0.3.1/src/dxs/utils/paths.py +0 -53
- datex_studio_cli-0.3.1/src/dxs/web/static/404.html +0 -1
- datex_studio_cli-0.3.1/src/dxs/web/static/_next/static/RIG3nV-yzLdq0OlVxUM6i/_buildManifest.js +0 -1
- datex_studio_cli-0.3.1/src/dxs/web/static/_next/static/chunks/255-67e8754147461423.js +0 -1
- datex_studio_cli-0.3.1/src/dxs/web/static/_next/static/chunks/841-8775e8c75ff8c949.js +0 -1
- datex_studio_cli-0.3.1/src/dxs/web/static/_next/static/chunks/871-370fd7261c4ea9bc.js +0 -1
- datex_studio_cli-0.3.1/src/dxs/web/static/_next/static/chunks/app/layout-fb92e6e3144d6d3a.js +0 -1
- datex_studio_cli-0.3.1/src/dxs/web/static/_next/static/css/686bbface7277f83.css +0 -3
- datex_studio_cli-0.3.1/src/dxs/web/static/index.html +0 -1
- {datex_studio_cli-0.3.1 → datex_studio_cli-0.3.3}/README.md +0 -0
- {datex_studio_cli-0.3.1 → datex_studio_cli-0.3.3}/src/dxs/__main__.py +0 -0
- {datex_studio_cli-0.3.1 → datex_studio_cli-0.3.3}/src/dxs/commands/__init__.py +0 -0
- {datex_studio_cli-0.3.1 → datex_studio_cli-0.3.3}/src/dxs/commands/api.py +0 -0
- {datex_studio_cli-0.3.1 → datex_studio_cli-0.3.3}/src/dxs/commands/config.py +0 -0
- {datex_studio_cli-0.3.1 → datex_studio_cli-0.3.3}/src/dxs/commands/env.py +0 -0
- {datex_studio_cli-0.3.1 → datex_studio_cli-0.3.3}/src/dxs/commands/marketplace.py +0 -0
- {datex_studio_cli-0.3.1 → datex_studio_cli-0.3.3}/src/dxs/commands/proxy.py +0 -0
- {datex_studio_cli-0.3.1 → datex_studio_cli-0.3.3}/src/dxs/commands/repo.py +0 -0
- {datex_studio_cli-0.3.1 → datex_studio_cli-0.3.3}/src/dxs/commands/servicepack.py +0 -0
- {datex_studio_cli-0.3.1 → datex_studio_cli-0.3.3}/src/dxs/commands/user.py +0 -0
- {datex_studio_cli-0.3.1 → datex_studio_cli-0.3.3}/src/dxs/context.py +0 -0
- {datex_studio_cli-0.3.1 → datex_studio_cli-0.3.3}/src/dxs/core/__init__.py +0 -0
- {datex_studio_cli-0.3.1 → datex_studio_cli-0.3.3}/src/dxs/core/api/__init__.py +0 -0
- {datex_studio_cli-0.3.1 → datex_studio_cli-0.3.3}/src/dxs/core/api/metadata_models.py +0 -0
- {datex_studio_cli-0.3.1 → datex_studio_cli-0.3.3}/src/dxs/core/api/models.py +0 -0
- {datex_studio_cli-0.3.1 → datex_studio_cli-0.3.3}/src/dxs/core/auth/__init__.py +0 -0
- {datex_studio_cli-0.3.1 → datex_studio_cli-0.3.3}/src/dxs/core/auth/decorators.py +0 -0
- {datex_studio_cli-0.3.1 → datex_studio_cli-0.3.3}/src/dxs/core/auth/msal_client.py +0 -0
- {datex_studio_cli-0.3.1 → datex_studio_cli-0.3.3}/src/dxs/core/auth/token_cache.py +0 -0
- {datex_studio_cli-0.3.1 → datex_studio_cli-0.3.3}/src/dxs/core/cache.py +0 -0
- {datex_studio_cli-0.3.1 → datex_studio_cli-0.3.3}/src/dxs/core/datasource/__init__.py +0 -0
- {datex_studio_cli-0.3.1 → datex_studio_cli-0.3.3}/src/dxs/core/devops/__init__.py +0 -0
- {datex_studio_cli-0.3.1 → datex_studio_cli-0.3.3}/src/dxs/core/dynamics/__init__.py +0 -0
- {datex_studio_cli-0.3.1 → datex_studio_cli-0.3.3}/src/dxs/core/footprint/__init__.py +0 -0
- {datex_studio_cli-0.3.1 → datex_studio_cli-0.3.3}/src/dxs/core/footprint/client.py +0 -0
- {datex_studio_cli-0.3.1 → datex_studio_cli-0.3.3}/src/dxs/core/footprint/edmx_parser.py +0 -0
- {datex_studio_cli-0.3.1 → datex_studio_cli-0.3.3}/src/dxs/core/footprint/metadata.py +0 -0
- {datex_studio_cli-0.3.1 → datex_studio_cli-0.3.3}/src/dxs/core/graph.py +0 -0
- {datex_studio_cli-0.3.1 → datex_studio_cli-0.3.3}/src/dxs/core/output/__init__.py +0 -0
- {datex_studio_cli-0.3.1 → datex_studio_cli-0.3.3}/src/dxs/core/output/json_fmt.py +0 -0
- {datex_studio_cli-0.3.1 → datex_studio_cli-0.3.3}/src/dxs/core/responses.py +0 -0
- {datex_studio_cli-0.3.1 → datex_studio_cli-0.3.3}/src/dxs/models/__init__.py +0 -0
- {datex_studio_cli-0.3.1 → datex_studio_cli-0.3.3}/src/dxs/report/__init__.py +0 -0
- {datex_studio_cli-0.3.1 → datex_studio_cli-0.3.3}/src/dxs/report/field_parser.py +0 -0
- {datex_studio_cli-0.3.1 → datex_studio_cli-0.3.3}/src/dxs/report/templates/__init__.py +0 -0
- {datex_studio_cli-0.3.1 → datex_studio_cli-0.3.3}/src/dxs/report/templates/bill_of_lading.rdlx-json +0 -0
- {datex_studio_cli-0.3.1 → datex_studio_cli-0.3.3}/src/dxs/report/templates/shipping_label.rdlx-json +0 -0
- {datex_studio_cli-0.3.1 → datex_studio_cli-0.3.3}/src/dxs/utils/__init__.py +0 -0
- {datex_studio_cli-0.3.1 → datex_studio_cli-0.3.3}/src/dxs/utils/click_options.py +0 -0
- {datex_studio_cli-0.3.1 → datex_studio_cli-0.3.3}/src/dxs/utils/errors.py +0 -0
- {datex_studio_cli-0.3.1 → datex_studio_cli-0.3.3}/src/dxs/utils/filtering.py +0 -0
- {datex_studio_cli-0.3.1 → datex_studio_cli-0.3.3}/src/dxs/utils/responses.py +0 -0
- {datex_studio_cli-0.3.1 → datex_studio_cli-0.3.3}/src/dxs/utils/restricted.py +0 -0
- {datex_studio_cli-0.3.1 → datex_studio_cli-0.3.3}/src/dxs/utils/sorting.py +0 -0
- {datex_studio_cli-0.3.1 → datex_studio_cli-0.3.3}/src/dxs/web/__init__.py +0 -0
- {datex_studio_cli-0.3.1 → datex_studio_cli-0.3.3}/src/dxs/web/proxy_app.py +0 -0
- {datex_studio_cli-0.3.1 → datex_studio_cli-0.3.3}/src/dxs/web/static/_next/static/chunks/4bd1b696-c023c6e3521b1417.js +0 -0
- {datex_studio_cli-0.3.1 → datex_studio_cli-0.3.3}/src/dxs/web/static/_next/static/chunks/app/_not-found/page-ea1be7001c230704.js +0 -0
- {datex_studio_cli-0.3.1 → datex_studio_cli-0.3.3}/src/dxs/web/static/_next/static/chunks/framework-de98b93a850cfc71.js +0 -0
- {datex_studio_cli-0.3.1 → datex_studio_cli-0.3.3}/src/dxs/web/static/_next/static/chunks/main-app-b69998d8941231d8.js +0 -0
- {datex_studio_cli-0.3.1 → datex_studio_cli-0.3.3}/src/dxs/web/static/_next/static/chunks/pages/_app-7d307437aca18ad4.js +0 -0
- {datex_studio_cli-0.3.1 → datex_studio_cli-0.3.3}/src/dxs/web/static/_next/static/chunks/pages/_error-cb2a52f75f2162e2.js +0 -0
- {datex_studio_cli-0.3.1 → datex_studio_cli-0.3.3}/src/dxs/web/static/_next/static/chunks/polyfills-42372ed130431b0a.js +0 -0
- {datex_studio_cli-0.3.1 → datex_studio_cli-0.3.3}/src/dxs/web/static/_next/static/chunks/webpack-2b297ada5306c17f.js +0 -0
- {datex_studio_cli-0.3.1/src/dxs/web/static/_next/static/RIG3nV-yzLdq0OlVxUM6i → datex_studio_cli-0.3.3/src/dxs/web/static/_next/static/tKckXNZJLjE7JZyWX_89t}/_ssgManifest.js +0 -0
|
@@ -2,6 +2,9 @@ exclude/
|
|
|
2
2
|
exploration/
|
|
3
3
|
reviews/
|
|
4
4
|
.tap/
|
|
5
|
+
.superpowers/
|
|
6
|
+
|
|
7
|
+
node_modules/
|
|
5
8
|
|
|
6
9
|
# Environment
|
|
7
10
|
.env
|
|
@@ -73,6 +76,12 @@ docs/_build/
|
|
|
73
76
|
src/dxs/web/static/
|
|
74
77
|
src/dxs/web/frontend/node_modules/
|
|
75
78
|
src/dxs/web/frontend/.next/
|
|
79
|
+
*.tsbuildinfo
|
|
80
|
+
|
|
81
|
+
# Report fidelity testing artifacts
|
|
82
|
+
tests/fixtures/reports/diffs/
|
|
83
|
+
tests/fixtures/reports/composites/
|
|
84
|
+
tests/fixtures/reports/scores.jsonl
|
|
76
85
|
|
|
77
86
|
# Worktrees
|
|
78
87
|
.worktrees/
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: datex-studio-cli
|
|
3
|
-
Version: 0.3.
|
|
3
|
+
Version: 0.3.3
|
|
4
4
|
Summary: CLI for Datex Studio low-code platform, designed for LLM-based AI agents
|
|
5
5
|
Project-URL: Homepage, https://github.com/datex/datex-studio-cli
|
|
6
6
|
Project-URL: Documentation, https://github.com/datex/datex-studio-cli
|
|
@@ -36,11 +36,18 @@ Requires-Dist: pytest>=8.0.0; extra == 'dev'
|
|
|
36
36
|
Requires-Dist: ruff>=0.4.0; extra == 'dev'
|
|
37
37
|
Requires-Dist: types-pyyaml>=6.0.0; extra == 'dev'
|
|
38
38
|
Requires-Dist: uvicorn[standard]>=0.32.0; extra == 'dev'
|
|
39
|
+
Provides-Extra: fidelity
|
|
40
|
+
Requires-Dist: cairosvg>=2.7.0; extra == 'fidelity'
|
|
41
|
+
Requires-Dist: pillow>=10.0.0; extra == 'fidelity'
|
|
42
|
+
Requires-Dist: scikit-image>=0.20.0; extra == 'fidelity'
|
|
39
43
|
Provides-Extra: preview
|
|
40
44
|
Requires-Dist: pillow>=10.0.0; extra == 'preview'
|
|
45
|
+
Requires-Dist: reportlab>=4.0.0; extra == 'preview'
|
|
46
|
+
Requires-Dist: svglib>=0.9.0; extra == 'preview'
|
|
41
47
|
Provides-Extra: studio
|
|
42
48
|
Requires-Dist: fastapi>=0.115.0; extra == 'studio'
|
|
43
49
|
Requires-Dist: uvicorn[standard]>=0.32.0; extra == 'studio'
|
|
50
|
+
Requires-Dist: watchfiles>=0.20.0; extra == 'studio'
|
|
44
51
|
Description-Content-Type: text/markdown
|
|
45
52
|
|
|
46
53
|
# Datex Studio CLI (`dxs`)
|
|
@@ -0,0 +1,303 @@
|
|
|
1
|
+
# Bill of Lading - Schema Exploration Notes
|
|
2
|
+
|
|
3
|
+
**Connection ID:** 9
|
|
4
|
+
**Branch:** 73658
|
|
5
|
+
**Date:** 2026-03-18
|
|
6
|
+
|
|
7
|
+
## Search Results Summary
|
|
8
|
+
|
|
9
|
+
### Keywords searched
|
|
10
|
+
- `shipment` - Found **Shipments**, ShipmentLines, ShipmentOrderLookup, ShipmentStatuses, ShipmentLoadingInstructions, ShipmentRoutings, and others
|
|
11
|
+
- `bill of lading` - No direct match (field lives on Shipment entity as `BillOfLading`)
|
|
12
|
+
- `BOL` - No direct match
|
|
13
|
+
- `outbound` - Found OutboundOrderPriorities, OutboundProcessingStrategies
|
|
14
|
+
- `shipping` - Found ShippingContainers, ShippingManifests, ShippingHubShipments
|
|
15
|
+
- `order` - Found **Orders**, **OrderLines**, **OrderAddresses**, OrderStatuses, OrderTypes, OrderClasses
|
|
16
|
+
- `carrier` - Found **Carriers**, **CarrierServices**, **CarrierServiceTypes**
|
|
17
|
+
- `freight` - Found **FreightClasses**, **FreightTerms**
|
|
18
|
+
- `commodity` - No match (commodity info lives on Material as Description)
|
|
19
|
+
|
|
20
|
+
## Key Entities
|
|
21
|
+
|
|
22
|
+
### Shipments (root entity for BOL report)
|
|
23
|
+
- **Entity type:** `Datex.FootPrint.Api.Shipment`
|
|
24
|
+
- **Entity set:** `Shipments`
|
|
25
|
+
- **Key:** `Id` (Int32)
|
|
26
|
+
- **BOL-relevant properties:**
|
|
27
|
+
- `BillOfLading` (String, max 64) - the BOL number itself
|
|
28
|
+
- `LookupCode` (String, max 64) - shipment lookup code
|
|
29
|
+
- `ReferenceNumber` (String, max 128)
|
|
30
|
+
- `TrackingIdentifier` (String, max 256)
|
|
31
|
+
- `TrailerId` (String, max 64)
|
|
32
|
+
- `SealId` (String, max 64)
|
|
33
|
+
- `Notes` (String)
|
|
34
|
+
- `GrossWeight` (Decimal)
|
|
35
|
+
- `NetWeight` (Decimal)
|
|
36
|
+
- `WeightUomId` (Int32) -> MeasurementUnit
|
|
37
|
+
- `PalletCount` (Decimal)
|
|
38
|
+
- `ItemCount` (Decimal)
|
|
39
|
+
- `CarrierId` (Int32) -> Carrier
|
|
40
|
+
- `CarrierServiceTypeId` (Int32) -> CarrierServiceType
|
|
41
|
+
- `FreightTermId` (Int32) -> FreightTerm
|
|
42
|
+
- `AccountId` (Int32) -> Account (shipper/owner)
|
|
43
|
+
- `ShipToAccountId` (Int32) -> Account (consignee)
|
|
44
|
+
- `ContactId` (Int32) -> Contact
|
|
45
|
+
- `ShipToContactId` (Int32) -> Contact
|
|
46
|
+
- `ShippedDate` (DateTimeOffset)
|
|
47
|
+
- `ExpectedDate` (DateTimeOffset)
|
|
48
|
+
- `DeliveredDate` (DateTimeOffset)
|
|
49
|
+
- `PickupDate` (DateTimeOffset)
|
|
50
|
+
- `DateNeeded` (DateTimeOffset)
|
|
51
|
+
- `DatePromised` (DateTimeOffset)
|
|
52
|
+
- `StatusId` (Int32) -> ShipmentStatus
|
|
53
|
+
- `FobLocation` (String, max 256)
|
|
54
|
+
- `Incoterms` (String, max 50)
|
|
55
|
+
- `ContainerIdentifier` (String, max 64)
|
|
56
|
+
- `ContainerSize` (String, max 16)
|
|
57
|
+
- `BookingNumber` (String, max 50)
|
|
58
|
+
- `BrokerReference` (String, max 32)
|
|
59
|
+
- `PackingSlip` (String, max 128)
|
|
60
|
+
- `ExpectedWarehouseId` (Int32) -> Warehouse
|
|
61
|
+
|
|
62
|
+
### ShipmentLines (collection - line items on a shipment)
|
|
63
|
+
- **Entity type:** `Datex.FootPrint.Api.ShipmentLine`
|
|
64
|
+
- **Entity set:** `ShipmentLines`
|
|
65
|
+
- **Key:** `Id` (Int32)
|
|
66
|
+
- **Properties:**
|
|
67
|
+
- `LineNumber` (Int32)
|
|
68
|
+
- `ShipmentId` (Int32) -> Shipment
|
|
69
|
+
- `OrderId` (Int32)
|
|
70
|
+
- `OrderLineNumber` (Int32)
|
|
71
|
+
- `ExpectedAmount` (Decimal)
|
|
72
|
+
- `ActualAmount` (Decimal)
|
|
73
|
+
- `ExpectedPackagedAmount` (Decimal)
|
|
74
|
+
- `ActualPackagedAmount` (Decimal)
|
|
75
|
+
- `ExpectedPackagedId` (Int32) -> InventoryMeasurementUnit
|
|
76
|
+
- `ActualPackagedId` (Int32) -> InventoryMeasurementUnit
|
|
77
|
+
- `GrossWeight` (Decimal)
|
|
78
|
+
- `NetWeight` (Decimal)
|
|
79
|
+
- `GrossVolume` (Decimal)
|
|
80
|
+
- `NetVolume` (Decimal)
|
|
81
|
+
- `WeightUomId` (Int32) -> MeasurementUnit
|
|
82
|
+
- `VolumeUomId` (Int32) -> MeasurementUnit
|
|
83
|
+
- `StatusId` (Int32) -> ShipmentLineStatus
|
|
84
|
+
- **Navigation properties:**
|
|
85
|
+
- `OrderLine` -> OrderLine (via OrderId+OrderLineNumber)
|
|
86
|
+
- `Shipment` -> Shipment
|
|
87
|
+
- `ExpectedPackaged` -> InventoryMeasurementUnit
|
|
88
|
+
- `ActualPackaged` -> InventoryMeasurementUnit
|
|
89
|
+
- `WeightUOM` -> MeasurementUnit
|
|
90
|
+
- `VolumeUOM` -> MeasurementUnit
|
|
91
|
+
- `Status` -> ShipmentLineStatus
|
|
92
|
+
|
|
93
|
+
### Orders
|
|
94
|
+
- **Entity type:** `Datex.FootPrint.Api.Order`
|
|
95
|
+
- **Key:** `Id` (Int32)
|
|
96
|
+
- **BOL-relevant properties:**
|
|
97
|
+
- `LookupCode` (String, max 128) - order number
|
|
98
|
+
- `OwnerReference` (String, max 64)
|
|
99
|
+
- `VendorReference` (String, max 64)
|
|
100
|
+
- `Notes` (String, max 4000)
|
|
101
|
+
- `RequestedDeliveryDate` (DateTimeOffset)
|
|
102
|
+
- `PreferredCarrierId` (Int32) -> Carrier
|
|
103
|
+
- `PreferredCarrierServiceTypeId` (Int32) -> CarrierServiceType
|
|
104
|
+
- `ShippingAddressId` (Int32)
|
|
105
|
+
- **Navigation properties:**
|
|
106
|
+
- `OrderLines` -> OrderLine (many)
|
|
107
|
+
- `Addresses` -> OrderAddress (many) - contains shipper/consignee addresses
|
|
108
|
+
- `Account` -> Account
|
|
109
|
+
- `PreferredCarrier` -> Carrier
|
|
110
|
+
- `Status` -> OrderStatus
|
|
111
|
+
- `ShipmentOrderLookups` -> ShipmentOrderLookup (many)
|
|
112
|
+
|
|
113
|
+
### OrderLines
|
|
114
|
+
- **Entity type:** `Datex.FootPrint.Api.OrderLine`
|
|
115
|
+
- **Key:** `OrderId` (Int32) + `LineNumber` (Int32)
|
|
116
|
+
- **BOL-relevant properties:**
|
|
117
|
+
- `Amount` (Decimal) - ordered quantity
|
|
118
|
+
- `PackagedAmount` (Decimal)
|
|
119
|
+
- `PackagedId` (Int32) -> InventoryMeasurementUnit
|
|
120
|
+
- `MaterialId` (Int32) -> Material
|
|
121
|
+
- `MaterialAlias` (String, max 256)
|
|
122
|
+
- `GrossWeight` (Decimal)
|
|
123
|
+
- `NetWeight` (Decimal)
|
|
124
|
+
- `WeightUomId` (Int32) -> MeasurementUnit
|
|
125
|
+
- `Cost` (Decimal)
|
|
126
|
+
- `Price` (Decimal)
|
|
127
|
+
- `Notes` (String)
|
|
128
|
+
- `PurchaseOrderIdentifier` (String, max 32)
|
|
129
|
+
- **Navigation properties:**
|
|
130
|
+
- `Material` -> Material
|
|
131
|
+
- `InventoryMeasurementUnit` -> InventoryMeasurementUnit (packaging)
|
|
132
|
+
- `MaterialPackagingLookup` -> MaterialsPackagingsLookup
|
|
133
|
+
- `ShipmentLines` -> ShipmentLine (many)
|
|
134
|
+
- `Order` -> Order
|
|
135
|
+
- `WeightUom` -> MeasurementUnit
|
|
136
|
+
|
|
137
|
+
### OrderAddresses (collection - multiple addresses per order)
|
|
138
|
+
- **Entity type:** `Datex.FootPrint.Api.OrderAddress`
|
|
139
|
+
- **Key:** `Id` (Int32)
|
|
140
|
+
- **Properties:**
|
|
141
|
+
- `Orderid` (Int32) -> Order
|
|
142
|
+
- `TypeId` (Int32) -> OrderAddressesType (distinguishes shipper vs consignee)
|
|
143
|
+
- `Name` (String, max 256)
|
|
144
|
+
- `AttentionOf` (String, max 64)
|
|
145
|
+
- `Line1` (String, max 128)
|
|
146
|
+
- `Line2` (String, max 128)
|
|
147
|
+
- `Line3` (String, max 128)
|
|
148
|
+
- `Line4` (String, max 128)
|
|
149
|
+
- `City` (String, max 64)
|
|
150
|
+
- `State` (String, max 64)
|
|
151
|
+
- `PostalCode` (String, max 64)
|
|
152
|
+
- `Country` (String, max 32)
|
|
153
|
+
- `PrimaryTelephone` (String, max 50)
|
|
154
|
+
- `PrimaryEmail` (String, max 128)
|
|
155
|
+
- `PrimaryFax` (String, max 50)
|
|
156
|
+
- `FirstName` (String, max 32)
|
|
157
|
+
- `LastName` (String, max 32)
|
|
158
|
+
- `ReferenceCode` (String, max 32)
|
|
159
|
+
- **Navigation:**
|
|
160
|
+
- `Type` -> OrderAddressesType (has Name like "Ship From", "Ship To", etc.)
|
|
161
|
+
- `Order` -> Order
|
|
162
|
+
|
|
163
|
+
### OrderAddressesType (lookup for address types)
|
|
164
|
+
- **Key:** `Id` (Int32)
|
|
165
|
+
- **Properties:** `Name` (String, max 32), `SystemDefined` (Boolean)
|
|
166
|
+
|
|
167
|
+
### Carriers
|
|
168
|
+
- **Entity type:** `Datex.FootPrint.Api.Carrier`
|
|
169
|
+
- **Key:** `Id` (Int32)
|
|
170
|
+
- **Properties:**
|
|
171
|
+
- `Name` (String, max 64)
|
|
172
|
+
- `ShortName` (String, max 16)
|
|
173
|
+
- `ScacCode` (String, max 4) - SCAC code for BOL
|
|
174
|
+
|
|
175
|
+
### CarrierServiceTypes
|
|
176
|
+
- **Entity type:** `Datex.FootPrint.Api.CarrierServiceType`
|
|
177
|
+
- **Key:** `Id` (Int32)
|
|
178
|
+
- **Properties:**
|
|
179
|
+
- `Name` (String, max 64)
|
|
180
|
+
- `ShortName` (String, max 64)
|
|
181
|
+
|
|
182
|
+
### FreightTerms
|
|
183
|
+
- **Entity type:** `Datex.FootPrint.Api.FreightTerm`
|
|
184
|
+
- **Key:** `Id` (Int32)
|
|
185
|
+
- **Properties:** `Name` (String, max 128)
|
|
186
|
+
|
|
187
|
+
### FreightClasses
|
|
188
|
+
- **Entity type:** `Datex.FootPrint.Api.FreightClass`
|
|
189
|
+
- **Key:** `Id` (Int32)
|
|
190
|
+
- **Properties:** `Name` (String, max 128), `ShortName` (String, max 32)
|
|
191
|
+
|
|
192
|
+
### Materials
|
|
193
|
+
- **Entity type:** `Datex.FootPrint.Api.Material`
|
|
194
|
+
- **Key:** `Id` (Int32)
|
|
195
|
+
- **BOL-relevant properties:**
|
|
196
|
+
- `LookupCode` (String, max 256) - item/SKU code
|
|
197
|
+
- `Name` (String, max 128) - item name
|
|
198
|
+
- `Description` (String, max 1024) - commodity description for BOL
|
|
199
|
+
- `NmfcNumber` (String) - NMFC number
|
|
200
|
+
- `NmfcSubNumber` (String) - NMFC sub-number
|
|
201
|
+
- `CommodityCode` (String, UDF) - commodity code
|
|
202
|
+
|
|
203
|
+
### MaterialsPackagingsLookup (dimensions & freight class per material+packaging)
|
|
204
|
+
- **Entity type:** `Datex.FootPrint.Api.MaterialsPackagingsLookup`
|
|
205
|
+
- **Key:** `MaterialId` + `PackagingId`
|
|
206
|
+
- **BOL-relevant properties:**
|
|
207
|
+
- `FreightClassId` (Int32) -> FreightClass
|
|
208
|
+
- `Weight` (Decimal)
|
|
209
|
+
- `ShippingWeight` (Decimal)
|
|
210
|
+
- `Height` (Decimal)
|
|
211
|
+
- `Length` (Decimal)
|
|
212
|
+
- `Width` (Decimal)
|
|
213
|
+
- `Volume` (Decimal)
|
|
214
|
+
- `ShippingVolume` (Decimal)
|
|
215
|
+
- `TareWeight` (Decimal)
|
|
216
|
+
- `WeightUomId` (Int32) -> MeasurementUnit
|
|
217
|
+
- `DimensionUomId` (Int32) -> MeasurementUnit
|
|
218
|
+
- `VolumeUomId` (Int32) -> MeasurementUnit
|
|
219
|
+
- **Navigation:**
|
|
220
|
+
- `FreightClass` -> FreightClass
|
|
221
|
+
- `WeightUom` -> MeasurementUnit
|
|
222
|
+
- `DimensionsUom` -> MeasurementUnit
|
|
223
|
+
|
|
224
|
+
### Account (shipper / consignee company)
|
|
225
|
+
- **Entity type:** `Datex.FootPrint.Api.Account`
|
|
226
|
+
- **Key:** `Id` (Int32)
|
|
227
|
+
- **Properties:** `Name` (String, max 256), `LookupCode` (String, max 128)
|
|
228
|
+
|
|
229
|
+
### Contact (shipper / consignee contact person)
|
|
230
|
+
- **Entity type:** `Datex.FootPrint.Api.Contact`
|
|
231
|
+
- **Key:** `Id` (Int32)
|
|
232
|
+
- **Properties:**
|
|
233
|
+
- `FirstName` (String, max 128)
|
|
234
|
+
- `LastName` (String, max 128)
|
|
235
|
+
- `PrimaryTelephone` (String, max 50)
|
|
236
|
+
- `PrimaryEmail` (String, max 128)
|
|
237
|
+
- `AddressId` (Int32) -> Address
|
|
238
|
+
- **Navigation:** `Address` -> Address
|
|
239
|
+
|
|
240
|
+
### Address (physical address for contacts)
|
|
241
|
+
- **Entity type:** `Datex.FootPrint.Api.Address`
|
|
242
|
+
- **Key:** `Id` (Int32)
|
|
243
|
+
- **Properties:** `Line1`, `Line2`, `City`, `State`, `PostalCode`, `Country`, `AttentionOf`
|
|
244
|
+
|
|
245
|
+
### Warehouse
|
|
246
|
+
- **Entity type:** `Datex.FootPrint.Api.Warehouse`
|
|
247
|
+
- **Key:** `Id` (Int32)
|
|
248
|
+
- **Properties:** `Name` (String, max 128), `AddressId` (Int32)
|
|
249
|
+
|
|
250
|
+
### MeasurementUnit
|
|
251
|
+
- **Key:** `Id` (Int32)
|
|
252
|
+
- **Properties:** `Name` (String, max 64), `Short_name` (String, max 16)
|
|
253
|
+
|
|
254
|
+
### ShipmentStatus
|
|
255
|
+
- **Key:** `Id` (Int32)
|
|
256
|
+
- **Properties:** `Name` (String, max 128)
|
|
257
|
+
|
|
258
|
+
## Data Model Relationships for BOL
|
|
259
|
+
|
|
260
|
+
```
|
|
261
|
+
Shipments (root)
|
|
262
|
+
├── Carrier -> Carriers (name, SCAC code)
|
|
263
|
+
├── CarrierServiceType -> CarrierServiceTypes (service level)
|
|
264
|
+
├── FreightTerm -> FreightTerms (prepaid/collect/third-party)
|
|
265
|
+
├── Account -> Accounts (shipper company)
|
|
266
|
+
├── Contact -> Contacts -> Address (shipper contact + address)
|
|
267
|
+
├── ShipToAccount -> Accounts (consignee company)
|
|
268
|
+
├── ShipToContact -> Contacts -> Address (consignee contact + address)
|
|
269
|
+
├── ExpectedWarehouse -> Warehouses (origin warehouse)
|
|
270
|
+
├── Status -> ShipmentStatuses
|
|
271
|
+
├── ShipmentLines (collection) ──┐
|
|
272
|
+
│ ├── OrderLine -> OrderLines │
|
|
273
|
+
│ │ ├── Material -> Materials (item desc, NMFC)
|
|
274
|
+
│ │ ├── MaterialPackagingLookup -> MaterialsPackagingsLookup
|
|
275
|
+
│ │ │ ├── FreightClass -> FreightClasses
|
|
276
|
+
│ │ │ ├── WeightUom -> MeasurementUnits
|
|
277
|
+
│ │ │ └── DimensionsUom -> MeasurementUnits
|
|
278
|
+
│ │ └── Order -> Orders
|
|
279
|
+
│ │ └── Addresses -> OrderAddresses (shipper/consignee addresses)
|
|
280
|
+
│ │ └── Type -> OrderAddressesType
|
|
281
|
+
│ ├── WeightUOM -> MeasurementUnits
|
|
282
|
+
│ └── VolumeUOM -> MeasurementUnits
|
|
283
|
+
└── OrderLookups -> ShipmentOrderLookup (shipment-to-order mapping)
|
|
284
|
+
```
|
|
285
|
+
|
|
286
|
+
## Important Design Notes
|
|
287
|
+
|
|
288
|
+
1. **Address sourcing:** BOL addresses come from two potential sources:
|
|
289
|
+
- **OrderAddresses** (per-order, typed by OrderAddressesType - e.g., "Ship From", "Ship To")
|
|
290
|
+
- **Contact.Address** (via Shipment.Contact/ShipToContact navigation)
|
|
291
|
+
- OrderAddresses is more specific to the order; Contact.Address is the master contact address.
|
|
292
|
+
|
|
293
|
+
2. **Freight class** lives on `MaterialsPackagingsLookup` (not Material or OrderLine directly). Access via `OrderLine.MaterialPackagingLookup.FreightClass.Name`.
|
|
294
|
+
|
|
295
|
+
3. **NMFC** is on the `Material` entity directly: `Material.NmfcNumber` and `Material.NmfcSubNumber`.
|
|
296
|
+
|
|
297
|
+
4. **Weight** is available at multiple levels:
|
|
298
|
+
- Shipment level: `GrossWeight`, `NetWeight` (totals)
|
|
299
|
+
- ShipmentLine level: `GrossWeight`, `NetWeight`
|
|
300
|
+
- OrderLine level: `GrossWeight`, `NetWeight`
|
|
301
|
+
- MaterialsPackagingsLookup: `Weight`, `ShippingWeight`, `TareWeight`
|
|
302
|
+
|
|
303
|
+
5. **ShipmentLines** is the collection that bridges shipments to order lines. Each ShipmentLine links to one OrderLine, which links to Material.
|
|
@@ -0,0 +1,192 @@
|
|
|
1
|
+
# Bill of Lading - Field Mapping
|
|
2
|
+
|
|
3
|
+
**Connection ID:** 9
|
|
4
|
+
**Branch:** 73658
|
|
5
|
+
**Root Entity:** `Shipments` (key: `Id`)
|
|
6
|
+
|
|
7
|
+
## Root-Level Fields (DataSet: Shipments)
|
|
8
|
+
|
|
9
|
+
These fields come from the Shipment entity and its single-value navigation properties. One row per shipment.
|
|
10
|
+
|
|
11
|
+
| Report Field | OData Path | Source Entity | Notes |
|
|
12
|
+
|---|---|---|---|
|
|
13
|
+
| **Identifiers** | | | |
|
|
14
|
+
| BOL Number | `BillOfLading` | Shipment | Primary BOL identifier, String(64) |
|
|
15
|
+
| Shipment ID | `LookupCode` | Shipment | Shipment lookup code, String(64) |
|
|
16
|
+
| Reference Number | `ReferenceNumber` | Shipment | String(128) |
|
|
17
|
+
| Tracking Number | `TrackingIdentifier` | Shipment | String(256) |
|
|
18
|
+
| Booking Number | `BookingNumber` | Shipment | String(50) |
|
|
19
|
+
| Packing Slip | `PackingSlip` | Shipment | String(128) |
|
|
20
|
+
| PRO Number | `BrokerReference` | Shipment | String(32), often used as PRO number |
|
|
21
|
+
| **Carrier Info** | | | |
|
|
22
|
+
| Carrier Name | `Carrier.Name` | Carrier | $expand=Carrier, String(64) |
|
|
23
|
+
| Carrier Short Name | `Carrier.ShortName` | Carrier | String(16) |
|
|
24
|
+
| SCAC Code | `Carrier.ScacCode` | Carrier | Standard Carrier Alpha Code, String(4) |
|
|
25
|
+
| Service Type | `CarrierServiceType.Name` | CarrierServiceType | $expand=CarrierServiceType, String(64) |
|
|
26
|
+
| Freight Terms | `FreightTerm.Name` | FreightTerm | $expand=FreightTerm (Prepaid/Collect/etc.), String(128) |
|
|
27
|
+
| Trailer Number | `TrailerId` | Shipment | String(64) |
|
|
28
|
+
| Seal Number | `SealId` | Shipment | String(64) |
|
|
29
|
+
| **Shipper (From)** | | | |
|
|
30
|
+
| Shipper Company | `Account.Name` | Account | $expand=Account, String(256) |
|
|
31
|
+
| Shipper Account Code | `Account.LookupCode` | Account | String(128) |
|
|
32
|
+
| Shipper Contact Name | `Contact.FirstName` / `Contact.LastName` | Contact | $expand=Contact, concatenate first+last |
|
|
33
|
+
| Shipper Phone | `Contact.PrimaryTelephone` | Contact | String(50) |
|
|
34
|
+
| Shipper Email | `Contact.PrimaryEmail` | Contact | String(128) |
|
|
35
|
+
| Shipper Address Line 1 | `Contact.Address.Line1` | Address | $expand=Contact($expand=Address), String(128) |
|
|
36
|
+
| Shipper Address Line 2 | `Contact.Address.Line2` | Address | String(128) |
|
|
37
|
+
| Shipper City | `Contact.Address.City` | Address | String(64) |
|
|
38
|
+
| Shipper State | `Contact.Address.State` | Address | String(64) |
|
|
39
|
+
| Shipper Postal Code | `Contact.Address.PostalCode` | Address | String(64) |
|
|
40
|
+
| Shipper Country | `Contact.Address.Country` | Address | String(32) |
|
|
41
|
+
| **Consignee (To)** | | | |
|
|
42
|
+
| Consignee Company | `ShipToAccount.Name` | Account | $expand=ShipToAccount, String(256) |
|
|
43
|
+
| Consignee Account Code | `ShipToAccount.LookupCode` | Account | String(128) |
|
|
44
|
+
| Consignee Contact Name | `ShipToContact.FirstName` / `ShipToContact.LastName` | Contact | $expand=ShipToContact, concatenate |
|
|
45
|
+
| Consignee Phone | `ShipToContact.PrimaryTelephone` | Contact | String(50) |
|
|
46
|
+
| Consignee Email | `ShipToContact.PrimaryEmail` | Contact | String(128) |
|
|
47
|
+
| Consignee Address Line 1 | `ShipToContact.Address.Line1` | Address | $expand=ShipToContact($expand=Address) |
|
|
48
|
+
| Consignee Address Line 2 | `ShipToContact.Address.Line2` | Address | String(128) |
|
|
49
|
+
| Consignee City | `ShipToContact.Address.City` | Address | String(64) |
|
|
50
|
+
| Consignee State | `ShipToContact.Address.State` | Address | String(64) |
|
|
51
|
+
| Consignee Postal Code | `ShipToContact.Address.PostalCode` | Address | String(64) |
|
|
52
|
+
| Consignee Country | `ShipToContact.Address.Country` | Address | String(32) |
|
|
53
|
+
| **Dates** | | | |
|
|
54
|
+
| Ship Date | `ShippedDate` | Shipment | DateTimeOffset, format as date |
|
|
55
|
+
| Expected Date | `ExpectedDate` | Shipment | DateTimeOffset |
|
|
56
|
+
| Delivery Date | `DeliveredDate` | Shipment | DateTimeOffset |
|
|
57
|
+
| Pickup Date | `PickupDate` | Shipment | DateTimeOffset |
|
|
58
|
+
| Date Needed | `DateNeeded` | Shipment | DateTimeOffset |
|
|
59
|
+
| Date Promised | `DatePromised` | Shipment | DateTimeOffset |
|
|
60
|
+
| **Totals & Misc** | | | |
|
|
61
|
+
| Total Gross Weight | `GrossWeight` | Shipment | Decimal |
|
|
62
|
+
| Total Net Weight | `NetWeight` | Shipment | Decimal |
|
|
63
|
+
| Weight UOM | `WeightUOM.Short_name` | MeasurementUnit | Requires separate lookup via WeightUomId |
|
|
64
|
+
| Pallet Count | `PalletCount` | Shipment | Decimal |
|
|
65
|
+
| Item Count | `ItemCount` | Shipment | Decimal |
|
|
66
|
+
| FOB Location | `FobLocation` | Shipment | String(256) |
|
|
67
|
+
| Incoterms | `Incoterms` | Shipment | String(50) |
|
|
68
|
+
| Container ID | `ContainerIdentifier` | Shipment | String(64) |
|
|
69
|
+
| Container Size | `ContainerSize` | Shipment | String(16) |
|
|
70
|
+
| Shipment Status | `Status.Name` | ShipmentStatus | $expand=Status, String(128) |
|
|
71
|
+
| Special Instructions | `Notes` | Shipment | String (unlimited) |
|
|
72
|
+
| Origin Warehouse | `ExpectedWarehouse.Name` | Warehouse | $expand=ExpectedWarehouse, String(128) |
|
|
73
|
+
|
|
74
|
+
## Collection Fields - Shipment Lines (DataSet: ShipmentLines)
|
|
75
|
+
|
|
76
|
+
These fields require a separate DataSet because ShipmentLines is a one-to-many collection. Filter by `ShipmentId`.
|
|
77
|
+
|
|
78
|
+
| Report Field | OData Path | Source Entity | Notes |
|
|
79
|
+
|---|---|---|---|
|
|
80
|
+
| **Line Identification** | | | |
|
|
81
|
+
| Line Number | `LineNumber` | ShipmentLine | Int32 |
|
|
82
|
+
| Order ID | `OrderId` | ShipmentLine | Int32, FK to Orders |
|
|
83
|
+
| Order Line Number | `OrderLineNumber` | ShipmentLine | Int32 |
|
|
84
|
+
| **Quantities** | | | |
|
|
85
|
+
| Expected Quantity | `ExpectedAmount` | ShipmentLine | Decimal |
|
|
86
|
+
| Actual Quantity | `ActualAmount` | ShipmentLine | Decimal |
|
|
87
|
+
| Expected Pkg Qty | `ExpectedPackagedAmount` | ShipmentLine | Decimal |
|
|
88
|
+
| Actual Pkg Qty | `ActualPackagedAmount` | ShipmentLine | Decimal |
|
|
89
|
+
| **Packaging** | | | |
|
|
90
|
+
| Expected Package | `ExpectedPackaged.Name` | InventoryMeasurementUnit | $expand=ExpectedPackaged |
|
|
91
|
+
| Actual Package | `ActualPackaged.Name` | InventoryMeasurementUnit | $expand=ActualPackaged |
|
|
92
|
+
| **Weights & Volumes** | | | |
|
|
93
|
+
| Line Gross Weight | `GrossWeight` | ShipmentLine | Decimal |
|
|
94
|
+
| Line Net Weight | `NetWeight` | ShipmentLine | Decimal |
|
|
95
|
+
| Line Gross Volume | `GrossVolume` | ShipmentLine | Decimal |
|
|
96
|
+
| Line Net Volume | `NetVolume` | ShipmentLine | Decimal |
|
|
97
|
+
| Weight UOM | `WeightUOM.Short_name` | MeasurementUnit | $expand=WeightUOM |
|
|
98
|
+
| Volume UOM | `VolumeUOM.Short_name` | MeasurementUnit | $expand=VolumeUOM |
|
|
99
|
+
| **Item Details (via OrderLine)** | | | |
|
|
100
|
+
| Item Code | `OrderLine.Material.LookupCode` | Material | $expand=OrderLine($expand=Material) |
|
|
101
|
+
| Item Name | `OrderLine.Material.Name` | Material | String(128) |
|
|
102
|
+
| Commodity Description | `OrderLine.Material.Description` | Material | String(1024), main BOL line description |
|
|
103
|
+
| NMFC Number | `OrderLine.Material.NmfcNumber` | Material | NMFC classification |
|
|
104
|
+
| NMFC Sub-Number | `OrderLine.Material.NmfcSubNumber` | Material | NMFC sub-classification |
|
|
105
|
+
| Material Alias | `OrderLine.MaterialAlias` | OrderLine | String(256) |
|
|
106
|
+
| Ordered Quantity | `OrderLine.Amount` | OrderLine | Decimal |
|
|
107
|
+
| PO Number | `OrderLine.PurchaseOrderIdentifier` | OrderLine | String(32) |
|
|
108
|
+
| Line Notes | `OrderLine.Notes` | OrderLine | String |
|
|
109
|
+
| Order Number | `OrderLine.Order.LookupCode` | Order | $expand=OrderLine($expand=Order) |
|
|
110
|
+
| **Freight Class (via OrderLine -> MaterialPackagingLookup)** | | | |
|
|
111
|
+
| Freight Class | `OrderLine.MaterialPackagingLookup.FreightClass.Name` | FreightClass | Deep expand required |
|
|
112
|
+
| Freight Class Short | `OrderLine.MaterialPackagingLookup.FreightClass.ShortName` | FreightClass | String(32) |
|
|
113
|
+
| Pkg Weight | `OrderLine.MaterialPackagingLookup.Weight` | MaterialsPackagingsLookup | Decimal |
|
|
114
|
+
| Pkg Shipping Weight | `OrderLine.MaterialPackagingLookup.ShippingWeight` | MaterialsPackagingsLookup | Decimal |
|
|
115
|
+
| Pkg Length | `OrderLine.MaterialPackagingLookup.Length` | MaterialsPackagingsLookup | Decimal |
|
|
116
|
+
| Pkg Width | `OrderLine.MaterialPackagingLookup.Width` | MaterialsPackagingsLookup | Decimal |
|
|
117
|
+
| Pkg Height | `OrderLine.MaterialPackagingLookup.Height` | MaterialsPackagingsLookup | Decimal |
|
|
118
|
+
|
|
119
|
+
## Alternative/Supplemental: Order Addresses (DataSet: OrderAddresses)
|
|
120
|
+
|
|
121
|
+
OrderAddresses provides per-order address overrides (shipper/consignee). Filter by `Orderid` and `Type.Name` (e.g., "Ship From", "Ship To"). Use this if order-level addresses differ from the Shipment-level Contact addresses.
|
|
122
|
+
|
|
123
|
+
| Report Field | OData Path | Source Entity | Notes |
|
|
124
|
+
|---|---|---|---|
|
|
125
|
+
| Address Type | `Type.Name` | OrderAddressesType | $expand=Type; filter for "Ship From" or "Ship To" |
|
|
126
|
+
| Company Name | `Name` | OrderAddress | String(256) |
|
|
127
|
+
| Attention Of | `AttentionOf` | OrderAddress | String(64) |
|
|
128
|
+
| Contact First Name | `FirstName` | OrderAddress | String(32) |
|
|
129
|
+
| Contact Last Name | `LastName` | OrderAddress | String(32) |
|
|
130
|
+
| Address Line 1 | `Line1` | OrderAddress | String(128) |
|
|
131
|
+
| Address Line 2 | `Line2` | OrderAddress | String(128) |
|
|
132
|
+
| Address Line 3 | `Line3` | OrderAddress | String(128) |
|
|
133
|
+
| Address Line 4 | `Line4` | OrderAddress | String(128) |
|
|
134
|
+
| City | `City` | OrderAddress | String(64) |
|
|
135
|
+
| State | `State` | OrderAddress | String(64) |
|
|
136
|
+
| Postal Code | `PostalCode` | OrderAddress | String(64) |
|
|
137
|
+
| Country | `Country` | OrderAddress | String(32) |
|
|
138
|
+
| Phone | `PrimaryTelephone` | OrderAddress | String(50) |
|
|
139
|
+
| Email | `PrimaryEmail` | OrderAddress | String(128) |
|
|
140
|
+
| Fax | `PrimaryFax` | OrderAddress | String(50) |
|
|
141
|
+
| Reference Code | `ReferenceCode` | OrderAddress | String(32) |
|
|
142
|
+
|
|
143
|
+
## OData Query Patterns
|
|
144
|
+
|
|
145
|
+
### Root dataset (Shipment header)
|
|
146
|
+
```
|
|
147
|
+
Shipments?$filter=Id eq {shipmentId}
|
|
148
|
+
&$select=BillOfLading,LookupCode,ReferenceNumber,TrackingIdentifier,
|
|
149
|
+
BookingNumber,PackingSlip,BrokerReference,TrailerId,SealId,
|
|
150
|
+
ShippedDate,ExpectedDate,DeliveredDate,PickupDate,DateNeeded,DatePromised,
|
|
151
|
+
GrossWeight,NetWeight,PalletCount,ItemCount,
|
|
152
|
+
FobLocation,Incoterms,ContainerIdentifier,ContainerSize,Notes
|
|
153
|
+
&$expand=Carrier($select=Name,ShortName,ScacCode),
|
|
154
|
+
CarrierServiceType($select=Name),
|
|
155
|
+
FreightTerm($select=Name),
|
|
156
|
+
Account($select=Name,LookupCode),
|
|
157
|
+
ShipToAccount($select=Name,LookupCode),
|
|
158
|
+
Contact($select=FirstName,LastName,PrimaryTelephone,PrimaryEmail;$expand=Address($select=Line1,Line2,City,State,PostalCode,Country)),
|
|
159
|
+
ShipToContact($select=FirstName,LastName,PrimaryTelephone,PrimaryEmail;$expand=Address($select=Line1,Line2,City,State,PostalCode,Country)),
|
|
160
|
+
Status($select=Name),
|
|
161
|
+
ExpectedWarehouse($select=Name)
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
### Line items dataset (ShipmentLines)
|
|
165
|
+
```
|
|
166
|
+
ShipmentLines?$filter=ShipmentId eq {shipmentId}
|
|
167
|
+
&$select=LineNumber,OrderId,OrderLineNumber,
|
|
168
|
+
ExpectedAmount,ActualAmount,ExpectedPackagedAmount,ActualPackagedAmount,
|
|
169
|
+
GrossWeight,NetWeight,GrossVolume,NetVolume
|
|
170
|
+
&$expand=ExpectedPackaged($select=Name,ShortName),
|
|
171
|
+
ActualPackaged($select=Name,ShortName),
|
|
172
|
+
WeightUOM($select=Name,Short_name),
|
|
173
|
+
VolumeUOM($select=Name,Short_name),
|
|
174
|
+
OrderLine($select=Amount,MaterialAlias,PurchaseOrderIdentifier,Notes;
|
|
175
|
+
$expand=Material($select=LookupCode,Name,Description,NmfcNumber,NmfcSubNumber),
|
|
176
|
+
MaterialPackagingLookup($select=Weight,ShippingWeight,Length,Width,Height;
|
|
177
|
+
$expand=FreightClass($select=Name,ShortName)),
|
|
178
|
+
Order($select=LookupCode))
|
|
179
|
+
```
|
|
180
|
+
|
|
181
|
+
### Order addresses dataset (if needed)
|
|
182
|
+
```
|
|
183
|
+
OrderAddresses?$filter=Orderid eq {orderId}
|
|
184
|
+
&$expand=Type($select=Name)
|
|
185
|
+
```
|
|
186
|
+
|
|
187
|
+
## Notes
|
|
188
|
+
|
|
189
|
+
- **Two address strategies:** The Shipment has Contact/ShipToContact (with nested Address) for shipper/consignee. Orders have OrderAddresses (typed by OrderAddressesType). Either can serve as the BOL address source. OrderAddresses has more fields (Line3, Line4) and is more likely to contain order-specific overrides.
|
|
190
|
+
- **Freight class** requires a deep expand path: `ShipmentLine -> OrderLine -> MaterialPackagingLookup -> FreightClass`. This may need to be flattened or pre-joined depending on report engine capabilities.
|
|
191
|
+
- **Weight UOM** on Shipment uses `WeightUomId` but there is no direct nav property named `WeightUOM` on Shipment (unlike ShipmentLine). May need separate lookup or include the UOM Id and resolve in-report.
|
|
192
|
+
- **Multiple orders per shipment:** A shipment can contain lines from multiple orders. The `ShipmentOrderLookup` entity maps this. Line items will have different `OrderId` values.
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
{
|
|
2
|
+
"dataSets": {
|
|
3
|
+
"ds_shipment": {
|
|
4
|
+
"data": [
|
|
5
|
+
{
|
|
6
|
+
"BillOfLading": "BOL-2026-00451",
|
|
7
|
+
"LookupCode": "SHP-78234",
|
|
8
|
+
"ReferenceNumber": "REF-90123",
|
|
9
|
+
"BrokerReference": "PRO-445567",
|
|
10
|
+
"TrackingIdentifier": "1Z999AA10123456784",
|
|
11
|
+
"TrailerId": "TRL-4821",
|
|
12
|
+
"SealId": "SEAL-99012",
|
|
13
|
+
"ShippedDate": "2026-03-18T08:00:00.0000000",
|
|
14
|
+
"DeliveredDate": "2026-03-20T14:00:00.0000000",
|
|
15
|
+
"GrossWeight": 12450.50,
|
|
16
|
+
"NetWeight": 11200.00,
|
|
17
|
+
"PalletCount": 8,
|
|
18
|
+
"FobLocation": "Origin",
|
|
19
|
+
"Notes": "Dock door 12. Call 30 min before arrival. No weekend deliveries.",
|
|
20
|
+
"Carrier_Name": "XPO Logistics",
|
|
21
|
+
"Carrier_ScacCode": "XPOL",
|
|
22
|
+
"CarrierServiceType_Name": "LTL Standard",
|
|
23
|
+
"FreightTerm_Name": "Prepaid",
|
|
24
|
+
"Account_Name": "Acme Distribution Inc.",
|
|
25
|
+
"Contact_Address_Line1": "1200 Industrial Blvd",
|
|
26
|
+
"Contact_Address_Line2": "Suite 400",
|
|
27
|
+
"Contact_Address_City": "Dallas",
|
|
28
|
+
"Contact_Address_State": "TX",
|
|
29
|
+
"Contact_Address_PostalCode": "75201",
|
|
30
|
+
"ShipToAccount_Name": "National Retail Corp.",
|
|
31
|
+
"ShipToContact_Address_Line1": "8900 Commerce Way",
|
|
32
|
+
"ShipToContact_Address_Line2": "",
|
|
33
|
+
"ShipToContact_Address_City": "Atlanta",
|
|
34
|
+
"ShipToContact_Address_State": "GA",
|
|
35
|
+
"ShipToContact_Address_PostalCode": "30301",
|
|
36
|
+
"ExpectedWarehouse_Name": "Dallas DC"
|
|
37
|
+
}
|
|
38
|
+
]
|
|
39
|
+
},
|
|
40
|
+
"ds_shipment_lines": {
|
|
41
|
+
"data": [
|
|
42
|
+
{
|
|
43
|
+
"LineNumber": 1,
|
|
44
|
+
"ExpectedAmount": 100,
|
|
45
|
+
"ActualAmount": 100,
|
|
46
|
+
"GrossWeight": 2500.00,
|
|
47
|
+
"NetWeight": 2300.00,
|
|
48
|
+
"WeightUOM_Short_name": "lbs",
|
|
49
|
+
"ExpectedPackaged_Name": "Pallet",
|
|
50
|
+
"OrderLine_Material_LookupCode": "SKU-10042",
|
|
51
|
+
"OrderLine_Material_Description": "Premium Widget Assembly Kit - Standard",
|
|
52
|
+
"OrderLine_Material_NmfcNumber": "86750-3",
|
|
53
|
+
"OrderLine_MaterialPackagingLookup_FreightClass_Name": "70",
|
|
54
|
+
"OrderLine_Order_LookupCode": "SO-44210",
|
|
55
|
+
"OrderLine_PurchaseOrderIdentifier": "PO-78901"
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
"LineNumber": 2,
|
|
59
|
+
"ExpectedAmount": 250,
|
|
60
|
+
"ActualAmount": 248,
|
|
61
|
+
"GrossWeight": 4800.00,
|
|
62
|
+
"NetWeight": 4500.00,
|
|
63
|
+
"WeightUOM_Short_name": "lbs",
|
|
64
|
+
"ExpectedPackaged_Name": "Case",
|
|
65
|
+
"OrderLine_Material_LookupCode": "SKU-20085",
|
|
66
|
+
"OrderLine_Material_Description": "Industrial Fastener Set - Heavy Duty",
|
|
67
|
+
"OrderLine_Material_NmfcNumber": "51200-1",
|
|
68
|
+
"OrderLine_MaterialPackagingLookup_FreightClass_Name": "85",
|
|
69
|
+
"OrderLine_Order_LookupCode": "SO-44210",
|
|
70
|
+
"OrderLine_PurchaseOrderIdentifier": "PO-78901"
|
|
71
|
+
},
|
|
72
|
+
{
|
|
73
|
+
"LineNumber": 3,
|
|
74
|
+
"ExpectedAmount": 50,
|
|
75
|
+
"ActualAmount": 50,
|
|
76
|
+
"GrossWeight": 3200.00,
|
|
77
|
+
"NetWeight": 2900.00,
|
|
78
|
+
"WeightUOM_Short_name": "lbs",
|
|
79
|
+
"ExpectedPackaged_Name": "Pallet",
|
|
80
|
+
"OrderLine_Material_LookupCode": "SKU-30120",
|
|
81
|
+
"OrderLine_Material_Description": "Hydraulic Pump Motor - 3HP",
|
|
82
|
+
"OrderLine_Material_NmfcNumber": "12340-2",
|
|
83
|
+
"OrderLine_MaterialPackagingLookup_FreightClass_Name": "92.5",
|
|
84
|
+
"OrderLine_Order_LookupCode": "SO-44215",
|
|
85
|
+
"OrderLine_PurchaseOrderIdentifier": "PO-79055"
|
|
86
|
+
},
|
|
87
|
+
{
|
|
88
|
+
"LineNumber": 4,
|
|
89
|
+
"ExpectedAmount": 500,
|
|
90
|
+
"ActualAmount": 500,
|
|
91
|
+
"GrossWeight": 1950.50,
|
|
92
|
+
"NetWeight": 1500.00,
|
|
93
|
+
"WeightUOM_Short_name": "lbs",
|
|
94
|
+
"ExpectedPackaged_Name": "Box",
|
|
95
|
+
"OrderLine_Material_LookupCode": "SKU-40200",
|
|
96
|
+
"OrderLine_Material_Description": "Copper Connector Plate - Type B",
|
|
97
|
+
"OrderLine_Material_NmfcNumber": "44820-4",
|
|
98
|
+
"OrderLine_MaterialPackagingLookup_FreightClass_Name": "65",
|
|
99
|
+
"OrderLine_Order_LookupCode": "SO-44215",
|
|
100
|
+
"OrderLine_PurchaseOrderIdentifier": ""
|
|
101
|
+
}
|
|
102
|
+
]
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
}
|