acumatica-cli 0.35.0__tar.gz → 0.36.0__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.
- {acumatica_cli-0.35.0 → acumatica_cli-0.36.0}/PKG-INFO +32 -1
- {acumatica_cli-0.35.0 → acumatica_cli-0.36.0}/README.md +31 -0
- {acumatica_cli-0.35.0 → acumatica_cli-0.36.0}/pyproject.toml +1 -1
- {acumatica_cli-0.35.0 → acumatica_cli-0.36.0}/pyproject.toml.orig +1 -1
- {acumatica_cli-0.35.0 → acumatica_cli-0.36.0}/src/acumatica_cli/cli.py +292 -100
- {acumatica_cli-0.35.0 → acumatica_cli-0.36.0}/src/acumatica_cli/client.py +206 -20
- {acumatica_cli-0.35.0 → acumatica_cli-0.36.0}/src/acumatica_cli/config.py +12 -9
- {acumatica_cli-0.35.0 → acumatica_cli-0.36.0}/src/acumatica_cli/extract.py +10 -7
- {acumatica_cli-0.35.0 → acumatica_cli-0.36.0}/src/acumatica_cli/output.py +21 -1
- {acumatica_cli-0.35.0 → acumatica_cli-0.36.0}/src/acumatica_cli/run.py +101 -20
- {acumatica_cli-0.35.0 → acumatica_cli-0.36.0}/src/acumatica_cli/seed.py +380 -87
- {acumatica_cli-0.35.0 → acumatica_cli-0.36.0}/src/acumatica_cli/state.py +29 -3
- {acumatica_cli-0.35.0 → acumatica_cli-0.36.0}/src/acumatica_cli/tenant.py +99 -13
- {acumatica_cli-0.35.0 → acumatica_cli-0.36.0}/src/acumatica_cli/__init__.py +0 -0
- {acumatica_cli-0.35.0 → acumatica_cli-0.36.0}/src/acumatica_cli/bootstrap.py +0 -0
- {acumatica_cli-0.35.0 → acumatica_cli-0.36.0}/src/acumatica_cli/bootstrap_plugin.cs +0 -0
- {acumatica_cli-0.35.0 → acumatica_cli-0.36.0}/src/acumatica_cli/bootstrap_project.xml +0 -0
- {acumatica_cli-0.35.0 → acumatica_cli-0.36.0}/src/acumatica_cli/firstlogin.py +0 -0
- {acumatica_cli-0.35.0 → acumatica_cli-0.36.0}/src/acumatica_cli/inventory.py +0 -0
- {acumatica_cli-0.35.0 → acumatica_cli-0.36.0}/src/acumatica_cli/models.py +0 -0
- {acumatica_cli-0.35.0 → acumatica_cli-0.36.0}/src/acumatica_cli/reconcile.py +0 -0
- {acumatica_cli-0.35.0 → acumatica_cli-0.36.0}/src/acumatica_cli/seed_catalog.yaml +0 -0
- {acumatica_cli-0.35.0 → acumatica_cli-0.36.0}/src/acumatica_cli/snapshot_map.yaml +0 -0
- {acumatica_cli-0.35.0 → acumatica_cli-0.36.0}/src/acumatica_cli/templates/README.md +0 -0
- {acumatica_cli-0.35.0 → acumatica_cli-0.36.0}/src/acumatica_cli/templates/acu-config/baseline/10-subaccounts.yaml +0 -0
- {acumatica_cli-0.35.0 → acumatica_cli-0.36.0}/src/acumatica_cli/templates/acu-config/baseline/20-accounts.yaml +0 -0
- {acumatica_cli-0.35.0 → acumatica_cli-0.36.0}/src/acumatica_cli/templates/acu-config/baseline/40-ledger.yaml +0 -0
- {acumatica_cli-0.35.0 → acumatica_cli-0.36.0}/src/acumatica_cli/templates/acu-config/baseline/50-gl-preferences.yaml +0 -0
- {acumatica_cli-0.35.0 → acumatica_cli-0.36.0}/src/acumatica_cli/templates/acu-config/baseline/60-ledger-company.yaml +0 -0
- {acumatica_cli-0.35.0 → acumatica_cli-0.36.0}/src/acumatica_cli/templates/acu-config/baseline/90-uoms.yaml +0 -0
- {acumatica_cli-0.35.0 → acumatica_cli-0.36.0}/src/acumatica_cli/templates/acu-config/baseline/91-company-packaging.yaml +0 -0
- {acumatica_cli-0.35.0 → acumatica_cli-0.36.0}/src/acumatica_cli/templates/acu-config/bootstrap/company.yaml +0 -0
- {acumatica_cli-0.35.0 → acumatica_cli-0.36.0}/src/acumatica_cli/templates/acu-config/bootstrap/credit-terms.yaml +0 -0
- {acumatica_cli-0.35.0 → acumatica_cli-0.36.0}/src/acumatica_cli/templates/acu-config/bootstrap/features.yaml +0 -0
- {acumatica_cli-0.35.0 → acumatica_cli-0.36.0}/src/acumatica_cli/templates/acu-config/bootstrap/segmented-key.yaml +0 -0
- {acumatica_cli-0.35.0 → acumatica_cli-0.36.0}/src/acumatica_cli/templates/acu-config/master/05-numbering-sequences.yaml +0 -0
- {acumatica_cli-0.35.0 → acumatica_cli-0.36.0}/src/acumatica_cli/templates/acu-config/master/10-reason-codes.yaml +0 -0
- {acumatica_cli-0.35.0 → acumatica_cli-0.36.0}/src/acumatica_cli/templates/acu-config/master/20-in-preferences.yaml +0 -0
- {acumatica_cli-0.35.0 → acumatica_cli-0.36.0}/src/acumatica_cli/templates/acu-config/master/30-availability-rules.yaml +0 -0
- {acumatica_cli-0.35.0 → acumatica_cli-0.36.0}/src/acumatica_cli/templates/acu-config/master/40-posting-classes.yaml +0 -0
- {acumatica_cli-0.35.0 → acumatica_cli-0.36.0}/src/acumatica_cli/templates/acu-config/master/50-warehouse.yaml +0 -0
- {acumatica_cli-0.35.0 → acumatica_cli-0.36.0}/src/acumatica_cli/templates/acu-config/master/51-warehouse-locations.yaml +0 -0
- {acumatica_cli-0.35.0 → acumatica_cli-0.36.0}/src/acumatica_cli/templates/acu-config/master/52-warehouse-defaults.yaml +0 -0
- {acumatica_cli-0.35.0 → acumatica_cli-0.36.0}/src/acumatica_cli/templates/acu-config/master/53-tax-categories.yaml +0 -0
- {acumatica_cli-0.35.0 → acumatica_cli-0.36.0}/src/acumatica_cli/templates/acu-config/master/54-item-classes.yaml +0 -0
- {acumatica_cli-0.35.0 → acumatica_cli-0.36.0}/src/acumatica_cli/templates/acu-config/master/56-so-preferences.yaml +0 -0
- {acumatica_cli-0.35.0 → acumatica_cli-0.36.0}/src/acumatica_cli/templates/acu-config/master/57-po-preferences.yaml +0 -0
- {acumatica_cli-0.35.0 → acumatica_cli-0.36.0}/src/acumatica_cli/templates/acu-config/master/58-order-types.yaml +0 -0
- {acumatica_cli-0.35.0 → acumatica_cli-0.36.0}/src/acumatica_cli/templates/acu-config/master/60-ar-preferences.yaml +0 -0
- {acumatica_cli-0.35.0 → acumatica_cli-0.36.0}/src/acumatica_cli/templates/acu-config/master/61-ap-preferences.yaml +0 -0
- {acumatica_cli-0.35.0 → acumatica_cli-0.36.0}/src/acumatica_cli/templates/acu-config/master/62-ca-preferences.yaml +0 -0
- {acumatica_cli-0.35.0 → acumatica_cli-0.36.0}/src/acumatica_cli/templates/acu-config/master/63-cash-account.yaml +0 -0
- {acumatica_cli-0.35.0 → acumatica_cli-0.36.0}/src/acumatica_cli/templates/acu-config/master/64-payment-methods.yaml +0 -0
- {acumatica_cli-0.35.0 → acumatica_cli-0.36.0}/src/acumatica_cli/templates/acu-config/master/65-statement-cycles.yaml +0 -0
- {acumatica_cli-0.35.0 → acumatica_cli-0.36.0}/src/acumatica_cli/templates/acu-config/master/70-vendor-classes.yaml +0 -0
- {acumatica_cli-0.35.0 → acumatica_cli-0.36.0}/src/acumatica_cli/templates/acu-config/master/71-customer-classes.yaml +0 -0
- {acumatica_cli-0.35.0 → acumatica_cli-0.36.0}/src/acumatica_cli/templates/acu-config/master/75-vendors.yaml +0 -0
- {acumatica_cli-0.35.0 → acumatica_cli-0.36.0}/src/acumatica_cli/templates/acu-config/master/76-customers.yaml +0 -0
- {acumatica_cli-0.35.0 → acumatica_cli-0.36.0}/src/acumatica_cli/templates/acu-config/master/80-stock-items-parts.yaml +0 -0
- {acumatica_cli-0.35.0 → acumatica_cli-0.36.0}/src/acumatica_cli/templates/acu-config/master/82-stock-items-kits.yaml +0 -0
- {acumatica_cli-0.35.0 → acumatica_cli-0.36.0}/src/acumatica_cli/templates/acu-config/master/85-kit-specifications.yaml +0 -0
- {acumatica_cli-0.35.0 → acumatica_cli-0.36.0}/src/acumatica_cli/templates/acu-config/master/90-roles.yaml +0 -0
- {acumatica_cli-0.35.0 → acumatica_cli-0.36.0}/src/acumatica_cli/templates/acu-config/master/91-users.yaml +0 -0
- {acumatica_cli-0.35.0 → acumatica_cli-0.36.0}/src/acumatica_cli/templates/acu-config/master/92-role-users.yaml +0 -0
- {acumatica_cli-0.35.0 → acumatica_cli-0.36.0}/src/acumatica_cli/templates/acu-config/setup/10-financial-year.yaml +0 -0
- {acumatica_cli-0.35.0 → acumatica_cli-0.36.0}/src/acumatica_cli/templates/acu-config/setup/20-master-calendar.yaml +0 -0
- {acumatica_cli-0.35.0 → acumatica_cli-0.36.0}/src/acumatica_cli/templates/acu-config/setup/30-open-periods.yaml +0 -0
- {acumatica_cli-0.35.0 → acumatica_cli-0.36.0}/src/acumatica_cli/templates/acu-config/views/10-trial-balance.yaml +0 -0
- {acumatica_cli-0.35.0 → acumatica_cli-0.36.0}/src/acumatica_cli/templates/acu-scenario/10-seed-capital.yaml +0 -0
- {acumatica_cli-0.35.0 → acumatica_cli-0.36.0}/src/acumatica_cli/templates/acu-scenario/20-buy.yaml +0 -0
- {acumatica_cli-0.35.0 → acumatica_cli-0.36.0}/src/acumatica_cli/templates/acu-scenario/30-build.yaml +0 -0
- {acumatica_cli-0.35.0 → acumatica_cli-0.36.0}/src/acumatica_cli/templates/acu-scenario/40-sell.yaml +0 -0
- {acumatica_cli-0.35.0 → acumatica_cli-0.36.0}/src/acumatica_cli/templates/env +0 -0
- {acumatica_cli-0.35.0 → acumatica_cli-0.36.0}/src/acumatica_cli/templates/gitignore +0 -0
- {acumatica_cli-0.35.0 → acumatica_cli-0.36.0}/src/acumatica_cli/templates/overlays/README.md +0 -0
- {acumatica_cli-0.35.0 → acumatica_cli-0.36.0}/src/acumatica_cli/templates/overlays/default-24.200.001/README.md +0 -0
- {acumatica_cli-0.35.0 → acumatica_cli-0.36.0}/src/acumatica_cli/templates/overlays/default-24.200.001/acu-scenario/30-build.yaml +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: acumatica-cli
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.36.0
|
|
4
4
|
Summary: Acumatica ERP Config-as-Code: tenant provisioning, baseline config, and reference data
|
|
5
5
|
Author: Konstantin Borovik
|
|
6
6
|
Author-email: Konstantin Borovik <kb@lab5.ca>
|
|
@@ -173,6 +173,37 @@ Do not confuse them with each other or with `state`:
|
|
|
173
173
|
`inventory/` and `findings/` are engagement outputs: not SEED_DIRS, never loaded by `apply`/`diff`, not scaffolded by `config init`.
|
|
174
174
|
Binary `.adb` snapshots are rejected (XML only).
|
|
175
175
|
|
|
176
|
+
### Machine-readable output (`--output json`)
|
|
177
|
+
|
|
178
|
+
`acu --output json <diff|apply|run|state> ...` prints one JSON document on stdout; progress and result lines move to stderr.
|
|
179
|
+
Exit codes do not change (`diff` still exits 2 on drift), and other commands ignore the flag.
|
|
180
|
+
|
|
181
|
+
`diff`:
|
|
182
|
+
|
|
183
|
+
```json
|
|
184
|
+
{
|
|
185
|
+
"command": "diff", "tenant": "DEV", "base_url": "https://...", "drift": 1,
|
|
186
|
+
"files": [{
|
|
187
|
+
"file": "acu-config/baseline/10-uoms.yaml", "entity": "UnitsOfMeasure",
|
|
188
|
+
"records": 2,
|
|
189
|
+
"drifts": [{
|
|
190
|
+
"file": "acu-config/baseline/10-uoms.yaml", "entity": "UnitsOfMeasure",
|
|
191
|
+
"keys": {"UOM": "KG"}, "field": "Description", "kind": "changed",
|
|
192
|
+
"source": "Kilogram", "live": "kg",
|
|
193
|
+
"text": "UnitsOfMeasure [KG].Description: source='Kilogram' live='kg'"
|
|
194
|
+
}]
|
|
195
|
+
}]
|
|
196
|
+
}
|
|
197
|
+
```
|
|
198
|
+
|
|
199
|
+
- `kind`: `changed`, `missing`, `extra` (detail row), `not_returned` or `not_applied` (setup action).
|
|
200
|
+
- `field`: path below the record (e.g. `Details[A].Qty`); `""` when the record itself is missing.
|
|
201
|
+
- `source` / `live`: set only for `changed`.
|
|
202
|
+
|
|
203
|
+
- `apply`: `{command, tenant, mode (all|plan|changed|dry_run), ok, failed, counts, errors, stopped, not_applied, files: [{file, entity, ok, errors}]}`; `counts` keys `create`, `update`, `unchanged`, `invoke`, `put`.
|
|
204
|
+
- `run`: `{command, tenant, counts: {passed, failed, skipped, not_run}, scenarios: [{file, outcome, misses, error?}], not_run}`; `misses` = failed expectation lines.
|
|
205
|
+
- `state`: `{command, tenant, mode (write|diff|assert), exit, changed, views: [{view, file, rows, status (wrote|changed|unchanged), differences}]}`.
|
|
206
|
+
|
|
176
207
|
## The data repo
|
|
177
208
|
|
|
178
209
|
Your configuration lives in its own git repo.
|
|
@@ -155,6 +155,37 @@ Do not confuse them with each other or with `state`:
|
|
|
155
155
|
`inventory/` and `findings/` are engagement outputs: not SEED_DIRS, never loaded by `apply`/`diff`, not scaffolded by `config init`.
|
|
156
156
|
Binary `.adb` snapshots are rejected (XML only).
|
|
157
157
|
|
|
158
|
+
### Machine-readable output (`--output json`)
|
|
159
|
+
|
|
160
|
+
`acu --output json <diff|apply|run|state> ...` prints one JSON document on stdout; progress and result lines move to stderr.
|
|
161
|
+
Exit codes do not change (`diff` still exits 2 on drift), and other commands ignore the flag.
|
|
162
|
+
|
|
163
|
+
`diff`:
|
|
164
|
+
|
|
165
|
+
```json
|
|
166
|
+
{
|
|
167
|
+
"command": "diff", "tenant": "DEV", "base_url": "https://...", "drift": 1,
|
|
168
|
+
"files": [{
|
|
169
|
+
"file": "acu-config/baseline/10-uoms.yaml", "entity": "UnitsOfMeasure",
|
|
170
|
+
"records": 2,
|
|
171
|
+
"drifts": [{
|
|
172
|
+
"file": "acu-config/baseline/10-uoms.yaml", "entity": "UnitsOfMeasure",
|
|
173
|
+
"keys": {"UOM": "KG"}, "field": "Description", "kind": "changed",
|
|
174
|
+
"source": "Kilogram", "live": "kg",
|
|
175
|
+
"text": "UnitsOfMeasure [KG].Description: source='Kilogram' live='kg'"
|
|
176
|
+
}]
|
|
177
|
+
}]
|
|
178
|
+
}
|
|
179
|
+
```
|
|
180
|
+
|
|
181
|
+
- `kind`: `changed`, `missing`, `extra` (detail row), `not_returned` or `not_applied` (setup action).
|
|
182
|
+
- `field`: path below the record (e.g. `Details[A].Qty`); `""` when the record itself is missing.
|
|
183
|
+
- `source` / `live`: set only for `changed`.
|
|
184
|
+
|
|
185
|
+
- `apply`: `{command, tenant, mode (all|plan|changed|dry_run), ok, failed, counts, errors, stopped, not_applied, files: [{file, entity, ok, errors}]}`; `counts` keys `create`, `update`, `unchanged`, `invoke`, `put`.
|
|
186
|
+
- `run`: `{command, tenant, counts: {passed, failed, skipped, not_run}, scenarios: [{file, outcome, misses, error?}], not_run}`; `misses` = failed expectation lines.
|
|
187
|
+
- `state`: `{command, tenant, mode (write|diff|assert), exit, changed, views: [{view, file, rows, status (wrote|changed|unchanged), differences}]}`.
|
|
188
|
+
|
|
158
189
|
## The data repo
|
|
159
190
|
|
|
160
191
|
Your configuration lives in its own git repo.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "acumatica-cli"
|
|
3
|
-
version = "0.
|
|
3
|
+
version = "0.36.0"
|
|
4
4
|
description = "Acumatica ERP Config-as-Code: tenant provisioning, baseline config, and reference data"
|
|
5
5
|
authors = [{ name = "Konstantin Borovik", email = "kb@lab5.ca" }]
|
|
6
6
|
license = "PolyForm-Noncommercial-1.0.0"
|