acumatica-cli 0.32.0__tar.gz → 0.33.1__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.32.0 → acumatica_cli-0.33.1}/PKG-INFO +4 -4
- {acumatica_cli-0.32.0 → acumatica_cli-0.33.1}/README.md +3 -3
- {acumatica_cli-0.32.0 → acumatica_cli-0.33.1}/pyproject.toml +1 -1
- {acumatica_cli-0.32.0 → acumatica_cli-0.33.1}/pyproject.toml.orig +1 -1
- {acumatica_cli-0.32.0 → acumatica_cli-0.33.1}/src/acumatica_cli/seed.py +9 -2
- {acumatica_cli-0.32.0 → acumatica_cli-0.33.1}/src/acumatica_cli/seed_catalog.yaml +4 -3
- {acumatica_cli-0.32.0 → acumatica_cli-0.33.1}/src/acumatica_cli/__init__.py +0 -0
- {acumatica_cli-0.32.0 → acumatica_cli-0.33.1}/src/acumatica_cli/bootstrap.py +0 -0
- {acumatica_cli-0.32.0 → acumatica_cli-0.33.1}/src/acumatica_cli/bootstrap_plugin.cs +0 -0
- {acumatica_cli-0.32.0 → acumatica_cli-0.33.1}/src/acumatica_cli/bootstrap_project.xml +0 -0
- {acumatica_cli-0.32.0 → acumatica_cli-0.33.1}/src/acumatica_cli/cli.py +0 -0
- {acumatica_cli-0.32.0 → acumatica_cli-0.33.1}/src/acumatica_cli/client.py +0 -0
- {acumatica_cli-0.32.0 → acumatica_cli-0.33.1}/src/acumatica_cli/config.py +0 -0
- {acumatica_cli-0.32.0 → acumatica_cli-0.33.1}/src/acumatica_cli/extract.py +0 -0
- {acumatica_cli-0.32.0 → acumatica_cli-0.33.1}/src/acumatica_cli/firstlogin.py +0 -0
- {acumatica_cli-0.32.0 → acumatica_cli-0.33.1}/src/acumatica_cli/inventory.py +0 -0
- {acumatica_cli-0.32.0 → acumatica_cli-0.33.1}/src/acumatica_cli/models.py +0 -0
- {acumatica_cli-0.32.0 → acumatica_cli-0.33.1}/src/acumatica_cli/output.py +0 -0
- {acumatica_cli-0.32.0 → acumatica_cli-0.33.1}/src/acumatica_cli/reconcile.py +0 -0
- {acumatica_cli-0.32.0 → acumatica_cli-0.33.1}/src/acumatica_cli/run.py +0 -0
- {acumatica_cli-0.32.0 → acumatica_cli-0.33.1}/src/acumatica_cli/snapshot_map.yaml +0 -0
- {acumatica_cli-0.32.0 → acumatica_cli-0.33.1}/src/acumatica_cli/state.py +0 -0
- {acumatica_cli-0.32.0 → acumatica_cli-0.33.1}/src/acumatica_cli/templates/README.md +0 -0
- {acumatica_cli-0.32.0 → acumatica_cli-0.33.1}/src/acumatica_cli/templates/config/baseline/10-subaccounts.yaml +0 -0
- {acumatica_cli-0.32.0 → acumatica_cli-0.33.1}/src/acumatica_cli/templates/config/baseline/20-accounts.yaml +0 -0
- {acumatica_cli-0.32.0 → acumatica_cli-0.33.1}/src/acumatica_cli/templates/config/baseline/40-ledger.yaml +0 -0
- {acumatica_cli-0.32.0 → acumatica_cli-0.33.1}/src/acumatica_cli/templates/config/baseline/50-gl-preferences.yaml +0 -0
- {acumatica_cli-0.32.0 → acumatica_cli-0.33.1}/src/acumatica_cli/templates/config/baseline/60-ledger-company.yaml +0 -0
- {acumatica_cli-0.32.0 → acumatica_cli-0.33.1}/src/acumatica_cli/templates/config/baseline/90-uoms.yaml +0 -0
- {acumatica_cli-0.32.0 → acumatica_cli-0.33.1}/src/acumatica_cli/templates/config/baseline/91-company-packaging.yaml +0 -0
- {acumatica_cli-0.32.0 → acumatica_cli-0.33.1}/src/acumatica_cli/templates/config/bootstrap/company.yaml +0 -0
- {acumatica_cli-0.32.0 → acumatica_cli-0.33.1}/src/acumatica_cli/templates/config/bootstrap/credit-terms.yaml +0 -0
- {acumatica_cli-0.32.0 → acumatica_cli-0.33.1}/src/acumatica_cli/templates/config/bootstrap/features.yaml +0 -0
- {acumatica_cli-0.32.0 → acumatica_cli-0.33.1}/src/acumatica_cli/templates/config/bootstrap/segmented-key.yaml +0 -0
- {acumatica_cli-0.32.0 → acumatica_cli-0.33.1}/src/acumatica_cli/templates/config/master/05-numbering-sequences.yaml +0 -0
- {acumatica_cli-0.32.0 → acumatica_cli-0.33.1}/src/acumatica_cli/templates/config/master/10-reason-codes.yaml +0 -0
- {acumatica_cli-0.32.0 → acumatica_cli-0.33.1}/src/acumatica_cli/templates/config/master/20-in-preferences.yaml +0 -0
- {acumatica_cli-0.32.0 → acumatica_cli-0.33.1}/src/acumatica_cli/templates/config/master/30-availability-rules.yaml +0 -0
- {acumatica_cli-0.32.0 → acumatica_cli-0.33.1}/src/acumatica_cli/templates/config/master/40-posting-classes.yaml +0 -0
- {acumatica_cli-0.32.0 → acumatica_cli-0.33.1}/src/acumatica_cli/templates/config/master/50-warehouse.yaml +0 -0
- {acumatica_cli-0.32.0 → acumatica_cli-0.33.1}/src/acumatica_cli/templates/config/master/51-warehouse-locations.yaml +0 -0
- {acumatica_cli-0.32.0 → acumatica_cli-0.33.1}/src/acumatica_cli/templates/config/master/52-warehouse-defaults.yaml +0 -0
- {acumatica_cli-0.32.0 → acumatica_cli-0.33.1}/src/acumatica_cli/templates/config/master/53-tax-categories.yaml +0 -0
- {acumatica_cli-0.32.0 → acumatica_cli-0.33.1}/src/acumatica_cli/templates/config/master/54-item-classes.yaml +0 -0
- {acumatica_cli-0.32.0 → acumatica_cli-0.33.1}/src/acumatica_cli/templates/config/master/56-so-preferences.yaml +0 -0
- {acumatica_cli-0.32.0 → acumatica_cli-0.33.1}/src/acumatica_cli/templates/config/master/57-po-preferences.yaml +0 -0
- {acumatica_cli-0.32.0 → acumatica_cli-0.33.1}/src/acumatica_cli/templates/config/master/58-order-types.yaml +0 -0
- {acumatica_cli-0.32.0 → acumatica_cli-0.33.1}/src/acumatica_cli/templates/config/master/60-ar-preferences.yaml +0 -0
- {acumatica_cli-0.32.0 → acumatica_cli-0.33.1}/src/acumatica_cli/templates/config/master/61-ap-preferences.yaml +0 -0
- {acumatica_cli-0.32.0 → acumatica_cli-0.33.1}/src/acumatica_cli/templates/config/master/62-ca-preferences.yaml +0 -0
- {acumatica_cli-0.32.0 → acumatica_cli-0.33.1}/src/acumatica_cli/templates/config/master/63-cash-account.yaml +0 -0
- {acumatica_cli-0.32.0 → acumatica_cli-0.33.1}/src/acumatica_cli/templates/config/master/64-payment-methods.yaml +0 -0
- {acumatica_cli-0.32.0 → acumatica_cli-0.33.1}/src/acumatica_cli/templates/config/master/65-statement-cycles.yaml +0 -0
- {acumatica_cli-0.32.0 → acumatica_cli-0.33.1}/src/acumatica_cli/templates/config/master/70-vendor-classes.yaml +0 -0
- {acumatica_cli-0.32.0 → acumatica_cli-0.33.1}/src/acumatica_cli/templates/config/master/71-customer-classes.yaml +0 -0
- {acumatica_cli-0.32.0 → acumatica_cli-0.33.1}/src/acumatica_cli/templates/config/master/75-vendors.yaml +0 -0
- {acumatica_cli-0.32.0 → acumatica_cli-0.33.1}/src/acumatica_cli/templates/config/master/76-customers.yaml +0 -0
- {acumatica_cli-0.32.0 → acumatica_cli-0.33.1}/src/acumatica_cli/templates/config/master/80-stock-items-parts.yaml +0 -0
- {acumatica_cli-0.32.0 → acumatica_cli-0.33.1}/src/acumatica_cli/templates/config/master/82-stock-items-kits.yaml +0 -0
- {acumatica_cli-0.32.0 → acumatica_cli-0.33.1}/src/acumatica_cli/templates/config/master/85-kit-specifications.yaml +0 -0
- {acumatica_cli-0.32.0 → acumatica_cli-0.33.1}/src/acumatica_cli/templates/config/master/90-roles.yaml +0 -0
- {acumatica_cli-0.32.0 → acumatica_cli-0.33.1}/src/acumatica_cli/templates/config/master/91-users.yaml +0 -0
- {acumatica_cli-0.32.0 → acumatica_cli-0.33.1}/src/acumatica_cli/templates/config/master/92-role-users.yaml +0 -0
- {acumatica_cli-0.32.0 → acumatica_cli-0.33.1}/src/acumatica_cli/templates/config/setup/10-financial-year.yaml +0 -0
- {acumatica_cli-0.32.0 → acumatica_cli-0.33.1}/src/acumatica_cli/templates/config/setup/20-master-calendar.yaml +0 -0
- {acumatica_cli-0.32.0 → acumatica_cli-0.33.1}/src/acumatica_cli/templates/config/setup/30-open-periods.yaml +0 -0
- {acumatica_cli-0.32.0 → acumatica_cli-0.33.1}/src/acumatica_cli/templates/config/views/10-trial-balance.yaml +0 -0
- {acumatica_cli-0.32.0 → acumatica_cli-0.33.1}/src/acumatica_cli/templates/env +0 -0
- {acumatica_cli-0.32.0 → acumatica_cli-0.33.1}/src/acumatica_cli/templates/gitignore +0 -0
- {acumatica_cli-0.32.0 → acumatica_cli-0.33.1}/src/acumatica_cli/templates/overlays/README.md +0 -0
- {acumatica_cli-0.32.0 → acumatica_cli-0.33.1}/src/acumatica_cli/templates/overlays/default-24.200.001/README.md +0 -0
- {acumatica_cli-0.32.0 → acumatica_cli-0.33.1}/src/acumatica_cli/templates/overlays/default-24.200.001/scenario/30-build.yaml +0 -0
- {acumatica_cli-0.32.0 → acumatica_cli-0.33.1}/src/acumatica_cli/templates/scenario/10-seed-capital.yaml +0 -0
- {acumatica_cli-0.32.0 → acumatica_cli-0.33.1}/src/acumatica_cli/templates/scenario/20-buy.yaml +0 -0
- {acumatica_cli-0.32.0 → acumatica_cli-0.33.1}/src/acumatica_cli/templates/scenario/30-build.yaml +0 -0
- {acumatica_cli-0.32.0 → acumatica_cli-0.33.1}/src/acumatica_cli/templates/scenario/40-sell.yaml +0 -0
- {acumatica_cli-0.32.0 → acumatica_cli-0.33.1}/src/acumatica_cli/tenant.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: acumatica-cli
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.33.1
|
|
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>
|
|
@@ -257,10 +257,10 @@ Or clone and install editable for development:
|
|
|
257
257
|
```sh
|
|
258
258
|
git clone https://github.com/kborovik/acumatica-cli.git
|
|
259
259
|
cd acumatica-cli
|
|
260
|
-
gmake install #
|
|
260
|
+
gmake install # uv sync; does not replace the PyPI tool
|
|
261
261
|
```
|
|
262
262
|
|
|
263
|
-
Verify with `acu --version
|
|
263
|
+
Verify with `uv run acu --version` (`+dev`).
|
|
264
264
|
|
|
265
265
|
## Configuration
|
|
266
266
|
|
|
@@ -351,7 +351,7 @@ Elsewhere plain `make` is fine when it is GNU Make.
|
|
|
351
351
|
```sh
|
|
352
352
|
git clone https://github.com/kborovik/acumatica-cli.git
|
|
353
353
|
cd acumatica-cli
|
|
354
|
-
gmake install #
|
|
354
|
+
gmake install # uv sync; does not replace the PyPI tool
|
|
355
355
|
gmake check # offline gate: ruff, basedpyright strict, pytest
|
|
356
356
|
```
|
|
357
357
|
|
|
@@ -239,10 +239,10 @@ Or clone and install editable for development:
|
|
|
239
239
|
```sh
|
|
240
240
|
git clone https://github.com/kborovik/acumatica-cli.git
|
|
241
241
|
cd acumatica-cli
|
|
242
|
-
gmake install #
|
|
242
|
+
gmake install # uv sync; does not replace the PyPI tool
|
|
243
243
|
```
|
|
244
244
|
|
|
245
|
-
Verify with `acu --version
|
|
245
|
+
Verify with `uv run acu --version` (`+dev`).
|
|
246
246
|
|
|
247
247
|
## Configuration
|
|
248
248
|
|
|
@@ -333,7 +333,7 @@ Elsewhere plain `make` is fine when it is GNU Make.
|
|
|
333
333
|
```sh
|
|
334
334
|
git clone https://github.com/kborovik/acumatica-cli.git
|
|
335
335
|
cd acumatica-cli
|
|
336
|
-
gmake install #
|
|
336
|
+
gmake install # uv sync; does not replace the PyPI tool
|
|
337
337
|
gmake check # offline gate: ruff, basedpyright strict, pytest
|
|
338
338
|
```
|
|
339
339
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "acumatica-cli"
|
|
3
|
-
version = "0.
|
|
3
|
+
version = "0.33.1"
|
|
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"
|
|
@@ -95,12 +95,18 @@ _DIFF_IGNORE_FIELDS = PASSWORD_FIELDS | NUMBERING_RUNTIME_FIELDS
|
|
|
95
95
|
# Path-qualified write-only GET-omit (V56): (entity, detail, field).
|
|
96
96
|
# Diff ignores; extract strips; apply still PUTs when present in YAML.
|
|
97
97
|
_DIFF_IGNORE_PATHS = frozenset({("LotSerialClass", "Segments", "Value")})
|
|
98
|
+
# Whole-detail skip (V57/B37): mapped GET Role.Users / User.Roles may be
|
|
99
|
+
# empty while UsersInRoles has session-company rows. Extra live members
|
|
100
|
+
# are not drift (AssignUser is additive-only).
|
|
101
|
+
_DIFF_SKIP_DETAILS = frozenset({("Role", "Users"), ("User", "Roles")})
|
|
98
102
|
|
|
99
103
|
|
|
100
104
|
def _diff_ignored(entity: str, *path: str) -> bool:
|
|
101
|
-
"""True when source↔live compare skips this field (V39/V40/V56)."""
|
|
105
|
+
"""True when source↔live compare skips this field (V39/V40/V56/V57)."""
|
|
102
106
|
if path and path[-1] in _DIFF_IGNORE_FIELDS:
|
|
103
107
|
return True
|
|
108
|
+
if len(path) == 1 and (entity, path[0]) in _DIFF_SKIP_DETAILS:
|
|
109
|
+
return True
|
|
104
110
|
return (entity, *path) in _DIFF_IGNORE_PATHS
|
|
105
111
|
|
|
106
112
|
|
|
@@ -679,7 +685,8 @@ def diff(client: AcumaticaClient, baseline: BaselineFile | ActionFile) -> list[s
|
|
|
679
685
|
drifts.append(f"{label}: missing on tenant")
|
|
680
686
|
continue
|
|
681
687
|
actual = unwrap(live)
|
|
682
|
-
# V39/V40/V56: never compare write-only, runtime,
|
|
688
|
+
# V39/V40/V56/V57: never compare write-only, runtime, GET-omit,
|
|
689
|
+
# or membership details whose mapped GET may stay empty.
|
|
683
690
|
fields = {
|
|
684
691
|
k: v for k, v in record.items() if not _diff_ignored(baseline.entity, k)
|
|
685
692
|
}
|
|
@@ -535,9 +535,10 @@ entities:
|
|
|
535
535
|
# config/master/ Role then User then Role.Users (V22 prefixes 90/91/92;
|
|
536
536
|
# T145/T146/T148/T228). Bootstrap only — Default has no Role/User surface.
|
|
537
537
|
# Persist = Role action AssignUser (PXDatabase UsersInRoles; T228/B33).
|
|
538
|
-
# User detail Roles
|
|
539
|
-
# B31/B32/B33).
|
|
540
|
-
#
|
|
538
|
+
# User detail Roles = GET/extract; diff skips Users/Roles (V57).
|
|
539
|
+
# PUT never writes UsersInRoles (B31/B32/B33).
|
|
540
|
+
# Package 90-roles = full pre-build CompanyID=1 Roles dump;
|
|
541
|
+
# 91-users demo soadmin identity; 92-role-users membership.
|
|
541
542
|
# Password is write-only on apply (V39/T147): include omits Password so
|
|
542
543
|
# extract never emits hashes (b64__Password also out of include).
|
|
543
544
|
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{acumatica_cli-0.32.0 → acumatica_cli-0.33.1}/src/acumatica_cli/templates/overlays/README.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{acumatica_cli-0.32.0 → acumatica_cli-0.33.1}/src/acumatica_cli/templates/scenario/20-buy.yaml
RENAMED
|
File without changes
|
{acumatica_cli-0.32.0 → acumatica_cli-0.33.1}/src/acumatica_cli/templates/scenario/30-build.yaml
RENAMED
|
File without changes
|
{acumatica_cli-0.32.0 → acumatica_cli-0.33.1}/src/acumatica_cli/templates/scenario/40-sell.yaml
RENAMED
|
File without changes
|
|
File without changes
|