celerp 2.3.0__tar.gz → 2.3.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.
- {celerp-2.3.0 → celerp-2.3.1}/PKG-INFO +1 -1
- {celerp-2.3.0 → celerp-2.3.1}/celerp/services/field_schema.py +65 -33
- {celerp-2.3.0 → celerp-2.3.1}/celerp.egg-info/PKG-INFO +1 -1
- {celerp-2.3.0 → celerp-2.3.1}/celerp.egg-info/SOURCES.txt +13 -0
- {celerp-2.3.0 → celerp-2.3.1}/celerp.egg-info/scm_file_list.json +62 -0
- celerp-2.3.1/celerp.egg-info/scm_version.json +8 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-accounting/tests/report_goldens/statement.html +56 -56
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-ai/celerp_ai/ui_routes.py +9 -8
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-backup/celerp_backup/routes.py +1 -1
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-inventory/celerp_inventory/routes.py +9 -1
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-labels/__init__.py +19 -0
- celerp-2.3.1/default_modules/celerp-labels/celerp_labels/locales/am.json +11 -0
- celerp-2.3.1/default_modules/celerp-labels/celerp_labels/locales/ar.json +11 -0
- celerp-2.3.1/default_modules/celerp-labels/celerp_labels/locales/de.json +11 -0
- celerp-2.3.1/default_modules/celerp-labels/celerp_labels/locales/en.json +11 -0
- celerp-2.3.1/default_modules/celerp-labels/celerp_labels/locales/es.json +11 -0
- celerp-2.3.1/default_modules/celerp-labels/celerp_labels/locales/fr.json +11 -0
- celerp-2.3.1/default_modules/celerp-labels/celerp_labels/locales/id.json +11 -0
- celerp-2.3.1/default_modules/celerp-labels/celerp_labels/locales/it.json +11 -0
- celerp-2.3.1/default_modules/celerp-labels/celerp_labels/locales/ja.json +11 -0
- celerp-2.3.1/default_modules/celerp-labels/celerp_labels/locales/pt.json +11 -0
- celerp-2.3.1/default_modules/celerp-labels/celerp_labels/locales/th.json +11 -0
- celerp-2.3.1/default_modules/celerp-labels/celerp_labels/locales/vi.json +11 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-labels/celerp_labels/ui_routes.py +10 -9
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/first_party.lock.json +5 -5
- {celerp-2.3.0 → celerp-2.3.1}/ui/app.py +10 -8
- {celerp-2.3.0 → celerp-2.3.1}/ui/components/activity.py +133 -178
- {celerp-2.3.0 → celerp-2.3.1}/ui/components/backup.py +13 -8
- {celerp-2.3.0 → celerp-2.3.1}/ui/components/cloud_gate.py +12 -9
- {celerp-2.3.0 → celerp-2.3.1}/ui/components/currency.py +1 -1
- {celerp-2.3.0 → celerp-2.3.1}/ui/components/files.py +10 -5
- {celerp-2.3.0 → celerp-2.3.1}/ui/components/notes.py +2 -2
- {celerp-2.3.0 → celerp-2.3.1}/ui/components/report_kit.py +7 -7
- {celerp-2.3.0 → celerp-2.3.1}/ui/components/shell.py +194 -69
- {celerp-2.3.0 → celerp-2.3.1}/ui/components/table.py +183 -63
- {celerp-2.3.0 → celerp-2.3.1}/ui/i18n.py +14 -0
- celerp-2.3.1/ui/locales/am.json +3049 -0
- celerp-2.3.1/ui/locales/ar.json +3049 -0
- celerp-2.3.1/ui/locales/de.json +3049 -0
- {celerp-2.3.0 → celerp-2.3.1}/ui/locales/en.json +1430 -2
- celerp-2.3.1/ui/locales/es.json +3049 -0
- celerp-2.3.1/ui/locales/fr.json +3049 -0
- celerp-2.3.1/ui/locales/id.json +3049 -0
- celerp-2.3.1/ui/locales/it.json +3049 -0
- celerp-2.3.1/ui/locales/ja.json +3049 -0
- celerp-2.3.1/ui/locales/pt.json +3049 -0
- celerp-2.3.1/ui/locales/th.json +3049 -0
- celerp-2.3.1/ui/locales/vi.json +3049 -0
- {celerp-2.3.0 → celerp-2.3.1}/ui/routes/account.py +2 -4
- {celerp-2.3.0 → celerp-2.3.1}/ui/routes/accounting.py +4 -4
- {celerp-2.3.0 → celerp-2.3.1}/ui/routes/accounting_import.py +20 -19
- {celerp-2.3.0 → celerp-2.3.1}/ui/routes/auth.py +70 -82
- {celerp-2.3.0 → celerp-2.3.1}/ui/routes/contacts.py +125 -111
- {celerp-2.3.0 → celerp-2.3.1}/ui/routes/csv_import.py +77 -52
- {celerp-2.3.0 → celerp-2.3.1}/ui/routes/dashboard.py +175 -47
- {celerp-2.3.0 → celerp-2.3.1}/ui/routes/docs_import.py +18 -18
- {celerp-2.3.0 → celerp-2.3.1}/ui/routes/documents.py +386 -336
- {celerp-2.3.0 → celerp-2.3.1}/ui/routes/financial_reports.py +24 -24
- {celerp-2.3.0 → celerp-2.3.1}/ui/routes/inventory.py +366 -345
- {celerp-2.3.0 → celerp-2.3.1}/ui/routes/lists_import.py +18 -18
- {celerp-2.3.0 → celerp-2.3.1}/ui/routes/manufacturing.py +122 -110
- {celerp-2.3.0 → celerp-2.3.1}/ui/routes/modules_page.py +2 -2
- {celerp-2.3.0 → celerp-2.3.1}/ui/routes/reconciliation.py +40 -47
- {celerp-2.3.0 → celerp-2.3.1}/ui/routes/reports.py +72 -66
- {celerp-2.3.0 → celerp-2.3.1}/ui/routes/search.py +28 -10
- {celerp-2.3.0 → celerp-2.3.1}/ui/routes/settings.py +169 -177
- {celerp-2.3.0 → celerp-2.3.1}/ui/routes/settings_accounting.py +73 -71
- {celerp-2.3.0 → celerp-2.3.1}/ui/routes/settings_cloud.py +22 -22
- {celerp-2.3.0 → celerp-2.3.1}/ui/routes/settings_connectors.py +56 -29
- {celerp-2.3.0 → celerp-2.3.1}/ui/routes/settings_contacts.py +12 -12
- {celerp-2.3.0 → celerp-2.3.1}/ui/routes/settings_general.py +5 -5
- {celerp-2.3.0 → celerp-2.3.1}/ui/routes/settings_import.py +53 -52
- {celerp-2.3.0 → celerp-2.3.1}/ui/routes/settings_inventory.py +63 -70
- celerp-2.3.1/ui/routes/settings_manufacturing.py +153 -0
- {celerp-2.3.0 → celerp-2.3.1}/ui/routes/settings_payments.py +6 -5
- {celerp-2.3.0 → celerp-2.3.1}/ui/routes/settings_purchasing.py +6 -6
- {celerp-2.3.0 → celerp-2.3.1}/ui/routes/settings_sales.py +48 -36
- {celerp-2.3.0 → celerp-2.3.1}/ui/routes/setup.py +17 -18
- {celerp-2.3.0 → celerp-2.3.1}/ui/routes/stars.py +12 -5
- {celerp-2.3.0 → celerp-2.3.1}/ui/routes/subscriptions.py +24 -25
- {celerp-2.3.0 → celerp-2.3.1}/ui/routes/subscriptions_import.py +18 -18
- {celerp-2.3.0 → celerp-2.3.1}/ui/static/app.css +3 -2
- celerp-2.3.0/celerp.egg-info/scm_version.json +0 -8
- celerp-2.3.0/ui/locales/ar.json +0 -1520
- celerp-2.3.0/ui/locales/de.json +0 -1520
- celerp-2.3.0/ui/locales/es.json +0 -1520
- celerp-2.3.0/ui/locales/fr.json +0 -1520
- celerp-2.3.0/ui/locales/id.json +0 -1520
- celerp-2.3.0/ui/locales/it.json +0 -1520
- celerp-2.3.0/ui/locales/ja.json +0 -1520
- celerp-2.3.0/ui/locales/pt.json +0 -1520
- celerp-2.3.0/ui/locales/th.json +0 -1520
- celerp-2.3.0/ui/locales/vi.json +0 -1520
- celerp-2.3.0/ui/routes/settings_manufacturing.py +0 -152
- {celerp-2.3.0 → celerp-2.3.1}/CLA.md +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/CONTRIBUTING.md +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/LICENSE +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/LICENSING.md +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/MANIFEST.in +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/NOTICE +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/README.md +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/alembic.ini +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/celerp/__init__.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/celerp/__main__.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/celerp/ai/__init__.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/celerp/ai/batch.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/celerp/ai/cleanup.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/celerp/ai/commands.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/celerp/ai/conversations.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/celerp/ai/files.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/celerp/ai/intent.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/celerp/ai/llm.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/celerp/ai/memory.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/celerp/ai/models.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/celerp/ai/page_count.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/celerp/ai/quota.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/celerp/ai/service.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/celerp/ai/tools.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/celerp/alembic.ini +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/celerp/alembic_config.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/celerp/cli.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/celerp/compat.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/celerp/compute/__init__.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/celerp/compute/aggregations.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/celerp/compute/valuation.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/celerp/config.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/celerp/connectors/__init__.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/celerp/connectors/base.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/celerp/connectors/daily_scheduler.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/celerp/connectors/http.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/celerp/connectors/images.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/celerp/connectors/quickbooks.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/celerp/connectors/registry.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/celerp/connectors/relay_token.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/celerp/connectors/shopify.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/celerp/connectors/sync_runner.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/celerp/connectors/upsert.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/celerp/connectors/util.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/celerp/connectors/webhooks.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/celerp/connectors/woocommerce.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/celerp/connectors/xero.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/celerp/constants.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/celerp/db.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/celerp/embedded_pg.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/celerp/events/__init__.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/celerp/events/engine.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/celerp/events/schemas.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/celerp/events/types.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/celerp/gateway/__init__.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/celerp/gateway/client.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/celerp/gateway/state.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/celerp/importers/__init__.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/celerp/importers/importer.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/celerp/importers/schema.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/celerp/main.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/celerp/middleware.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/celerp/migrations/README.md +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/celerp/migrations/_auto_stamp.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/celerp/migrations/_data_reconcile.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/celerp/migrations/_json_compat.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/celerp/migrations/env.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/celerp/migrations/script.py.mako +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/celerp/migrations/versions/a0b1c2d3e4f5_seed_landed_cost_clearing_accounts.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/celerp/migrations/versions/a1b2c3d4e5f6_add_doc_share_tokens.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/celerp/migrations/versions/b1c2d3e4f5a6_add_supporter_badges.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/celerp/migrations/versions/b2c3d4e5f6a7_add_import_batches.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/celerp/migrations/versions/b3c4d5e6f7a8_expand_role_permissions_to_role_grants.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/celerp/migrations/versions/c1d2e3f4a5b6_add_marketplace.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/celerp/migrations/versions/c2d3e4f5a6b7_add_is_sync_to_shopify.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/celerp/migrations/versions/c4d5e6f7a8b9_account_cash_flow_category.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/celerp/migrations/versions/d0e1f2a3b4c5_add_share_token_expiry.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/celerp/migrations/versions/d2e3f4a5b6c7_add_password_reset_token.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/celerp/migrations/versions/d5e6f7a8b9c0_rename_fx_rounding_to_fx_difference.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/celerp/migrations/versions/e3f4a5b6c7d8_add_company_is_active.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/celerp/migrations/versions/e4f5a6b7c8d9_backfill_connector_idempotency_key.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/celerp/migrations/versions/e7c9a1b3d5f2_work_center_default_columns.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/celerp/migrations/versions/f1a2b3c4d5e6_move_accounts_marketplace_to_modules.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/celerp/migrations/versions/f6a7b8c9d0e1_seed_fx_rounding_account.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/celerp/migrations/versions/f8a9b0c1d2e3_work_center_default_backfill.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/celerp/migrations/versions/fd5de461e14e_initial_schema.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/celerp/migrations/versions/g1h2i3j4k5l6_add_consignment_flag.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/celerp/migrations/versions/h2i3j4k5l6m7_add_bank_accounts_and_reconciliation.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/celerp/migrations/versions/j4k5l6m7n8o9_labels_db_persistence.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/celerp/migrations/versions/k5l6m7n8o9p0_add_reconciliation_v2.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/celerp/migrations/versions/l6m7n8o9p0q1_add_sync_runs_table.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/celerp/migrations/versions/m7n8o9p0q1r2_add_connector_configs_and_outbound_queue.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/celerp/migrations/versions/n8o9p0q1r2s3_backfill_payment_date.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/celerp/migrations/versions/o9p0q1r2s3t4_backfill_item_price_fields.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/celerp/migrations/versions/p1q2r3s4t5u6_add_session_registry_and_user_auth_state.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/celerp/migrations/versions/q2r3s4t5u6v7_add_system_runtime_state.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/celerp/migrations/versions/r3s4t5u6v7w8_add_projections_company_entity_type_index.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/celerp/migrations/versions/s4t5u6v7w8x9_drop_user_company_id_role.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/celerp/migrations/versions/t5u6v7w8x9y0_seed_inventory_sub_accounts.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/celerp/migrations/versions/u6v7w8x9y0z1_backfill_item_prices_from_attributes.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/celerp/migrations/versions/v7w8x9y0z1a2_backfill_purchase_unit_defaults.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/celerp/migrations/versions/w8x9y0z1a2b3_backfill_category_unit_defaults.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/celerp/migrations/versions/x7y8z9a0b1c2_add_projection_created_at.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/celerp/migrations/versions/y8z9a0b1c2d3_per_company_ledger_idempotency.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/celerp/migrations/versions/z9a0b1c2d3e4_work_centers.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/celerp/models/__init__.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/celerp/models/accounting.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/celerp/models/ai.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/celerp/models/auth.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/celerp/models/base.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/celerp/models/company.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/celerp/models/connector_config.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/celerp/models/import_batch.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/celerp/models/ledger.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/celerp/models/marketplace.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/celerp/models/notification.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/celerp/models/projections.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/celerp/models/share.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/celerp/models/supporter.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/celerp/models/sync_run.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/celerp/modules/__init__.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/celerp/modules/api.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/celerp/modules/audit.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/celerp/modules/demotion.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/celerp/modules/importer.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/celerp/modules/license.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/celerp/modules/loader.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/celerp/modules/meta.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/celerp/modules/migrations_runner.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/celerp/modules/references.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/celerp/modules/registry.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/celerp/modules/slots.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/celerp/notifications/__init__.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/celerp/notifications/service.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/celerp/notifications/sse.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/celerp/output/__init__.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/celerp/output/branding.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/celerp/output/doc_print.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/celerp/output/pdf.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/celerp/output/share_render.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/celerp/projections/__init__.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/celerp/projections/engine.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/celerp/projections/handlers/__init__.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/celerp/projections/handlers/marketplace.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/celerp/projections/handlers/scanning.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/celerp/projections/handlers/shopify.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/celerp/projections/handlers/system.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/celerp/routers/__init__.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/celerp/routers/auth.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/celerp/routers/companies.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/celerp/routers/debug.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/celerp/routers/doctor.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/celerp/routers/events.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/celerp/routers/health.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/celerp/routers/ledger.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/celerp/routers/notifications.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/celerp/routers/stars.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/celerp/routers/system.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/celerp/schemas/__init__.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/celerp/services/__init__.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/celerp/services/activity_redaction.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/celerp/services/attachments.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/celerp/services/auth.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/celerp/services/auto_je.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/celerp/services/backup.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/celerp/services/backup_export.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/celerp/services/backup_import.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/celerp/services/backup_repo.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/celerp/services/backup_scheduler.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/celerp/services/backup_state.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/celerp/services/cogs_backfill.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/celerp/services/cost_visibility.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/celerp/services/demo.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/celerp/services/dev_release_guard.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/celerp/services/email.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/celerp/services/fulfill.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/celerp/services/holdings.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/celerp/services/je_keys.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/celerp/services/landed_cost.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/celerp/services/line_measures.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/celerp/services/list_behavior.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/celerp/services/money.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/celerp/services/payments.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/celerp/services/permissions.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/celerp/services/pick.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/celerp/services/pricing.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/celerp/services/relay_share.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/celerp/services/reorder.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/celerp/services/runtime_state.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/celerp/services/session_tracker.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/celerp/services/shipping.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/celerp/services/star_cta.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/celerp/services/status_doc_backfill.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/celerp/services/supporter_badge.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/celerp/services/system_health.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/celerp/services/units.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/celerp/session_gate.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/celerp/tax_regimes.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/celerp.egg-info/dependency_links.txt +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/celerp.egg-info/entry_points.txt +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/celerp.egg-info/requires.txt +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/celerp.egg-info/top_level.txt +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/conftest.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/conftest_support.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/__init__.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-accounting/LICENSE +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-accounting/__init__.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-accounting/celerp_accounting/__init__.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-accounting/celerp_accounting/api_setup.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-accounting/celerp_accounting/csv_parser.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-accounting/celerp_accounting/matcher.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-accounting/celerp_accounting/models.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-accounting/celerp_accounting/projections.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-accounting/celerp_accounting/routes.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-accounting/celerp_accounting/ui_routes.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-accounting/tests/report_goldens/balance-sheet.html +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-accounting/tests/report_goldens/cash-flow.html +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-accounting/tests/report_goldens/extended-journal-csv.csv +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-accounting/tests/report_goldens/extended-journal-print.html +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-accounting/tests/report_goldens/extended-journal.html +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-accounting/tests/report_goldens/general-ledger.html +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-accounting/tests/report_goldens/journal-csv.csv +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-accounting/tests/report_goldens/journal-print.html +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-accounting/tests/report_goldens/journal.html +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-accounting/tests/report_goldens/ledger.html +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-accounting/tests/report_goldens/pnl.html +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-accounting/tests/report_goldens/trial-balance.html +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-accounting/tests/test_accounting_banking.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-accounting/tests/test_accounting_banking_routers.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-accounting/tests/test_accounting_gaps.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-accounting/tests/test_accounting_import_idempotency.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-accounting/tests/test_cash_flow.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-accounting/tests/test_financial_reports_ui.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-accounting/tests/test_journal_gl_soa.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-accounting/tests/test_journal_gl_soa_ui.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-accounting/tests/test_reconciliation_v2.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-accounting/tests/test_reports_end_to_end.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-accounting/tests/test_route_permissions.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-admin/__init__.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-admin/celerp_admin/__init__.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-admin/celerp_admin/routes.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-admin/celerp_admin/setup.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-ai/__init__.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-ai/celerp_ai/__init__.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-ai/celerp_ai/routes.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-ai/celerp_ai/setup.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-ai/tests/conftest.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-ai/tests/test_batch.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-ai/tests/test_cleanup.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-ai/tests/test_conversations.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-ai/tests/test_coverage_gaps.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-ai/tests/test_intent.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-ai/tests/test_llm.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-ai/tests/test_memory.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-ai/tests/test_models.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-ai/tests/test_page_count.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-ai/tests/test_quota.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-ai/tests/test_router.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-ai/tests/test_routes_coverage.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-ai/tests/test_service.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-ai/tests/test_tools.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-backup/__init__.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-backup/celerp_backup/__init__.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-backup/celerp_backup/setup.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-connectors/__init__.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-connectors/celerp_connectors/__init__.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-connectors/celerp_connectors/models.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-connectors/celerp_connectors/routes.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-connectors/tests/__init__.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-connectors/tests/conftest.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-connectors/tests/test_compliance.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-connectors/tests/test_connector_correctness.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-connectors/tests/test_connectors.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-connectors/tests/test_credentials_routes.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-connectors/tests/test_images.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-connectors/tests/test_outbound.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-connectors/tests/test_quickbooks.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-connectors/tests/test_rate_limiting.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-connectors/tests/test_shopify.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-connectors/tests/test_wiring.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-connectors/tests/test_woocommerce.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-connectors/tests/test_woocommerce_webhooks.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-connectors/tests/test_xero.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-contacts/LICENSE +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-contacts/__init__.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-contacts/celerp_contacts/__init__.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-contacts/celerp_contacts/migrations.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-contacts/celerp_contacts/projections.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-contacts/celerp_contacts/routes.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-contacts/celerp_contacts/services.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-contacts/celerp_contacts/ui_routes.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-dashboard/LICENSE +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-dashboard/__init__.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-dashboard/celerp_dashboard/__init__.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-dashboard/celerp_dashboard/routes.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-dashboard/celerp_dashboard/setup.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-docs/LICENSE +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-docs/__init__.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-docs/celerp_docs/__init__.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-docs/celerp_docs/api_setup.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-docs/celerp_docs/doc_constants.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-docs/celerp_docs/doc_email.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-docs/celerp_docs/doc_projections.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-docs/celerp_docs/doc_service.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-docs/celerp_docs/models_share.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-docs/celerp_docs/routes.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-docs/celerp_docs/routes_payments.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-docs/celerp_docs/routes_share.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-docs/celerp_docs/sequences.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-docs/celerp_docs/taxes.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-docs/celerp_docs/ui_routes.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-docs/tests/conftest.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-docs/tests/test_audits.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-docs/tests/test_consolidate_lots.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-docs/tests/test_freight_je.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-docs/tests/test_freight_lines.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-docs/tests/test_fulfill_no_split.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-docs/tests/test_fulfillment_activity.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-docs/tests/test_inbound_je_lifecycle.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-docs/tests/test_inventory_account_reconciliation.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-docs/tests/test_landed_receive.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-docs/tests/test_line_delete_persist.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-docs/tests/test_line_identifier.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-docs/tests/test_payment_void_activity.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-docs/tests/test_receive_sku_batch.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-docs/tests/test_send_visibility.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-docs/tests/test_service_lines.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-docs/tests/test_void_guards.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-docs/tests/test_writeoffs.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-inventory/LICENSE +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-inventory/__init__.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-inventory/celerp_inventory/__init__.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-inventory/celerp_inventory/models_import_batch.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-inventory/celerp_inventory/projections.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-inventory/celerp_inventory/routes_attachments.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-inventory/celerp_inventory/routes_scanning.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-inventory/celerp_inventory/services.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-inventory/celerp_inventory/ui_routes.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-inventory/tests/test_item_recipe_projection.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-inventory/tests/test_item_workflow_projection.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-inventory/tests/test_landed_cost_projection.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-labels/LICENSE +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-labels/celerp_labels/__init__.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-labels/celerp_labels/models.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-labels/celerp_labels/presets.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-labels/celerp_labels/routes.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-labels/celerp_labels/service.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-labels/requirements.txt +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-labels/tests/test_labels.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-labels/tests/test_labels_module.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-manufacturing/LICENSE +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-manufacturing/__init__.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-manufacturing/celerp_manufacturing/__init__.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-manufacturing/celerp_manufacturing/costing.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-manufacturing/celerp_manufacturing/expansion.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-manufacturing/celerp_manufacturing/labor.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-manufacturing/celerp_manufacturing/migrations.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-manufacturing/celerp_manufacturing/projection_handler.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-manufacturing/celerp_manufacturing/routes.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-manufacturing/celerp_manufacturing/ui_routes.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-manufacturing/requirements.txt +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-manufacturing/tests/test_auto_complete_on_finalize.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-manufacturing/tests/test_bom_removed.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-manufacturing/tests/test_build_api.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-manufacturing/tests/test_item_recipe_api.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-manufacturing/tests/test_item_workflow_api.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-manufacturing/tests/test_labor_providers.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-manufacturing/tests/test_manufacture_from_doc.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-manufacturing/tests/test_manufacturing.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-manufacturing/tests/test_manufacturing_import_idempotency.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-manufacturing/tests/test_manufacturing_module.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-manufacturing/tests/test_mfg_events.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-manufacturing/tests/test_phase2_manufacturing_validations.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-manufacturing/tests/test_production_order.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-manufacturing/tests/test_recipe_costing.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-manufacturing/tests/test_recipe_expansion.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-manufacturing/tests/test_recost_api.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-manufacturing/tests/test_run_records.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-manufacturing/tests/test_to_make_allocation.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-manufacturing/tests/test_where_used.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-manufacturing/tests/test_work_centers_and_settings.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-manufacturing/tests/test_workflow_time.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-reports/LICENSE +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-reports/__init__.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-reports/celerp_reports/__init__.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-reports/celerp_reports/api_setup.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-reports/celerp_reports/routes.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-reports/celerp_reports/ui_routes.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-reports/tests/test_reports_full.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-reports/tests/test_reports_unit.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-subscriptions/LICENSE +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-subscriptions/__init__.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-subscriptions/celerp_subscriptions/__init__.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-subscriptions/celerp_subscriptions/routes.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-subscriptions/celerp_subscriptions/ui_routes.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-subscriptions/tests/test_subscriptions.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-subscriptions/tests/test_subscriptions_ui.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-verticals/LICENSE +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-verticals/__init__.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-verticals/celerp_verticals/__init__.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-verticals/celerp_verticals/categories/accessory_fashion.json +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-verticals/celerp_verticals/categories/activewear.json +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-verticals/celerp_verticals/categories/art_photography.json +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-verticals/celerp_verticals/categories/audio_equipment.json +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-verticals/celerp_verticals/categories/bag_handbag.json +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-verticals/celerp_verticals/categories/banknote.json +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-verticals/celerp_verticals/categories/beauty_tool.json +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-verticals/celerp_verticals/categories/bed_bedroom.json +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-verticals/celerp_verticals/categories/beer.json +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-verticals/celerp_verticals/categories/beverage_nonalc.json +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-verticals/celerp_verticals/categories/body_part_auto.json +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-verticals/celerp_verticals/categories/book.json +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-verticals/celerp_verticals/categories/bottoms.json +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-verticals/celerp_verticals/categories/brake_suspension.json +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-verticals/celerp_verticals/categories/bullion_coin.json +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-verticals/celerp_verticals/categories/camera.json +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-verticals/celerp_verticals/categories/colored_stone.json +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-verticals/celerp_verticals/categories/comic.json +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-verticals/celerp_verticals/categories/commercial_space.json +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-verticals/celerp_verticals/categories/component_part.json +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-verticals/celerp_verticals/categories/confectionery.json +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-verticals/celerp_verticals/categories/consulting_service.json +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-verticals/celerp_verticals/categories/decorative_art.json +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-verticals/celerp_verticals/categories/diamond.json +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-verticals/celerp_verticals/categories/drawing.json +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-verticals/celerp_verticals/categories/dress_jumpsuit.json +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-verticals/celerp_verticals/categories/electrical_auto.json +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-verticals/celerp_verticals/categories/electrical_component.json +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-verticals/celerp_verticals/categories/emerald.json +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-verticals/celerp_verticals/categories/engine_part.json +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-verticals/celerp_verticals/categories/fastener.json +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-verticals/celerp_verticals/categories/fertilizer_chemical.json +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-verticals/celerp_verticals/categories/film_video.json +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-verticals/celerp_verticals/categories/fine_writing_instrument.json +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-verticals/celerp_verticals/categories/fluid_lubricant.json +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-verticals/celerp_verticals/categories/footwear.json +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-verticals/celerp_verticals/categories/fragrance.json +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-verticals/celerp_verticals/categories/fresh_food.json +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-verticals/celerp_verticals/categories/fresh_produce.json +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-verticals/celerp_verticals/categories/frozen_food.json +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-verticals/celerp_verticals/categories/gaming_console.json +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-verticals/celerp_verticals/categories/gold_bullion.json +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-verticals/celerp_verticals/categories/grain_cereal.json +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-verticals/celerp_verticals/categories/haircare.json +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-verticals/celerp_verticals/categories/hand_tool.json +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-verticals/celerp_verticals/categories/ingredient_bulk.json +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-verticals/celerp_verticals/categories/interior_part.json +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-verticals/celerp_verticals/categories/jewelry.json +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-verticals/celerp_verticals/categories/kitchen_dining.json +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-verticals/celerp_verticals/categories/laptop.json +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-verticals/celerp_verticals/categories/lighting.json +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-verticals/celerp_verticals/categories/livestock_feed.json +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-verticals/celerp_verticals/categories/makeup.json +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-verticals/celerp_verticals/categories/measuring_instrument.json +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-verticals/celerp_verticals/categories/medal_token.json +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-verticals/celerp_verticals/categories/mineral_specimen.json +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-verticals/celerp_verticals/categories/mobile_phone.json +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-verticals/celerp_verticals/categories/music_cd.json +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-verticals/celerp_verticals/categories/music_vinyl.json +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-verticals/celerp_verticals/categories/nail.json +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-verticals/celerp_verticals/categories/numismatic_coin.json +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-verticals/celerp_verticals/categories/outdoor_furniture.json +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-verticals/celerp_verticals/categories/outerwear.json +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-verticals/celerp_verticals/categories/packaged_food.json +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-verticals/celerp_verticals/categories/painting.json +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-verticals/celerp_verticals/categories/parking_bay.json +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-verticals/celerp_verticals/categories/pearl.json +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-verticals/celerp_verticals/categories/personal_care.json +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-verticals/celerp_verticals/categories/pipe_plumbing.json +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-verticals/celerp_verticals/categories/platinum_bullion.json +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-verticals/celerp_verticals/categories/power_tool.json +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-verticals/celerp_verticals/categories/print_edition.json +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-verticals/celerp_verticals/categories/residential_unit.json +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-verticals/celerp_verticals/categories/rough_gemstone.json +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-verticals/celerp_verticals/categories/ruby.json +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-verticals/celerp_verticals/categories/saas_plan.json +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-verticals/celerp_verticals/categories/safety_ppe.json +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-verticals/celerp_verticals/categories/sapphire.json +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-verticals/celerp_verticals/categories/sculpture.json +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-verticals/celerp_verticals/categories/seating.json +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-verticals/celerp_verticals/categories/seeds.json +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-verticals/celerp_verticals/categories/silver_bullion.json +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-verticals/celerp_verticals/categories/skincare.json +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-verticals/celerp_verticals/categories/soft_furnishing.json +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-verticals/celerp_verticals/categories/software_addon.json +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-verticals/celerp_verticals/categories/software_license.json +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-verticals/celerp_verticals/categories/spirit.json +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-verticals/celerp_verticals/categories/storage_furniture.json +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-verticals/celerp_verticals/categories/swimwear.json +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-verticals/celerp_verticals/categories/table_desk.json +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-verticals/celerp_verticals/categories/tablet.json +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-verticals/celerp_verticals/categories/tire_wheel.json +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-verticals/celerp_verticals/categories/tops.json +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-verticals/celerp_verticals/categories/trading_card.json +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-verticals/celerp_verticals/categories/tv_display.json +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-verticals/celerp_verticals/categories/video_game.json +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-verticals/celerp_verticals/categories/watch.json +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-verticals/celerp_verticals/categories/watch_strap.json +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-verticals/celerp_verticals/categories/wine.json +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-verticals/celerp_verticals/presets/agricultural.json +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-verticals/celerp_verticals/presets/artwork.json +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-verticals/celerp_verticals/presets/automotive.json +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-verticals/celerp_verticals/presets/blank.json +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-verticals/celerp_verticals/presets/books_media.json +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-verticals/celerp_verticals/presets/coins_precious_metals.json +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-verticals/celerp_verticals/presets/consulting.json +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-verticals/celerp_verticals/presets/cosmetics.json +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-verticals/celerp_verticals/presets/electronics.json +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-verticals/celerp_verticals/presets/fashion.json +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-verticals/celerp_verticals/presets/food_beverage.json +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-verticals/celerp_verticals/presets/furniture.json +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-verticals/celerp_verticals/presets/gemstones.json +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-verticals/celerp_verticals/presets/hardware.json +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-verticals/celerp_verticals/presets/property_rental.json +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-verticals/celerp_verticals/presets/saas.json +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-verticals/celerp_verticals/presets/watches.json +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-verticals/celerp_verticals/presets/wine_spirits.json +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-verticals/celerp_verticals/routes.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-verticals/celerp_verticals/ui_routes.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-verticals/tests/test_verticals.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-verticals/tests/test_verticals_routers.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/legal/OFFICIAL-COMPONENTS.md +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/legal/TRADEMARK.md +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/packaging/winget/Celerp.Celerp.installer.yaml +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/packaging/winget/Celerp.Celerp.locale.en-US.yaml +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/packaging/winget/Celerp.Celerp.yaml +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/packaging/winget/README.md +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/pyproject.toml +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/setup.cfg +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/test_helpers.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/ui/__init__.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/ui/api_client.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/ui/components/__init__.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/ui/components/attrs.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/ui/components/journal.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/ui/components/phone.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/ui/config.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/ui/marketplace_catalog.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/ui/routes/__init__.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/ui/routes/events.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/ui/routes/notifications.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/ui/security.py +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/ui/static/htmx.min.js +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/ui/static/icon.png +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/ui/static/logo.png +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/ui/static/vendor/intl-tel-input/img/flags.webp +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/ui/static/vendor/intl-tel-input/img/flags@2x.webp +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/ui/static/vendor/intl-tel-input/intlTelInput.min.css +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/ui/static/vendor/intl-tel-input/intlTelInput.min.js +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/ui/static/vendor/intl-tel-input/intlTelInputWithUtils.min.js +0 -0
- {celerp-2.3.0 → celerp-2.3.1}/ui/static/vendor/intl-tel-input/utils.js +0 -0
|
@@ -44,42 +44,74 @@ _DEFAULT_PRICE_LISTS: list[dict] = [
|
|
|
44
44
|
|
|
45
45
|
# Base schema fields (without price columns - those are injected dynamically)
|
|
46
46
|
_BASE_FIELDS: list[dict] = [
|
|
47
|
-
{"key": "sku", "label": "SKU", "type": "text", "editable": True, "required": True, "options": [], "visible_to_roles": [], "position": 0, "show_in_table": True},
|
|
48
|
-
{"key": "name", "label": "Name", "type": "text", "editable": True, "required": True, "options": [], "visible_to_roles": [], "position": 1, "show_in_table": True},
|
|
49
|
-
{"key": "category", "label": "Category", "type": "text", "editable": True, "required": False, "options": [], "visible_to_roles": [], "position": 2, "show_in_table": True},
|
|
50
|
-
{"key": "quantity", "label": "Qty", "type": "number", "editable": True, "required": False, "options": [], "visible_to_roles": [], "position": 3, "show_in_table": True, "tooltip_key": "field.tooltip.quantity"},
|
|
51
|
-
{"key": "sell_by", "label": "Sell Unit", "type": "text", "editable": True, "required": False, "options": [], "visible_to_roles": [], "position": 3.05,"show_in_table": False, "tooltip_key": "field.tooltip.sell_by"},
|
|
52
|
-
{"key": "weight", "label": "Net Weight", "type": "number", "editable": True, "required": False, "options": [], "visible_to_roles": [], "position": 3.02, "show_in_table": True, "tooltip_key": "field.tooltip.weight"},
|
|
53
|
-
{"key": "weight_unit", "label": "Net Weight Unit", "type": "text", "editable": True, "required": False, "options": [], "visible_to_roles": [], "position": 3.15,"show_in_table": False, "tooltip_key": "field.tooltip.weight_unit"},
|
|
54
|
-
{"key": "pieces", "label": "Pieces", "type": "number", "editable": True, "required": False, "options": [], "visible_to_roles": [], "position": 3.06,"show_in_table": True, "tooltip_key": "field.tooltip.pieces"},
|
|
55
|
-
{"key": "reorder_point", "label": "Reorder Point", "type": "number", "editable": True, "required": False, "options": [], "visible_to_roles": [], "position": 3.7, "show_in_table": False, "tooltip_key": "field.tooltip.reorder_point"},
|
|
56
|
-
{"key": "reorder_qty", "label": "Reorder Qty", "type": "number", "editable": True, "required": False, "options": [], "visible_to_roles": [], "position": 3.72,"show_in_table": False, "tooltip_key": "field.tooltip.reorder_qty"},
|
|
57
|
-
{"key": "gross_weight", "label": "Gross Weight", "type": "number", "editable": True, "required": False, "options": [], "visible_to_roles": [], "position": 3.25,"show_in_table": False, "tooltip_key": "field.tooltip.gross_weight"},
|
|
58
|
-
{"key": "gross_weight_unit", "label": "Gross Weight Unit", "type": "text", "editable": True, "required": False, "options": [], "visible_to_roles": [], "position": 3.3, "show_in_table": False, "tooltip_key": "field.tooltip.gross_weight_unit"},
|
|
59
|
-
{"key": "inventory_type", "label": "Inventory Type", "type": "select", "editable": True, "required": False, "options": ["stocked", "component", "non_stocked", "service", "freight"], "visible_to_roles": [], "position": 4.2, "show_in_table": False, "tooltip_key": "field.tooltip.inventory_type"},
|
|
60
|
-
{"key": "allow_splitting", "label": "Allow Splitting", "type": "bool", "editable": True, "required": False, "options": [], "visible_to_roles": [], "position": 4.5, "show_in_table": False, "tooltip_key": "field.tooltip.allow_splitting"},
|
|
61
|
-
{"key": "pick_method", "label": "Stock Cutting", "type": "select", "editable": True, "required": False, "options": ["default", "fifo", "fefo", "lifo"], "visible_to_roles": [], "position": 4.6, "show_in_table": False, "tooltip_key": "field.tooltip.pick_method"},
|
|
62
|
-
{"key": "location_name", "label": "Location", "type": "text", "editable": False, "required": False, "options": [], "visible_to_roles": [], "position": 5, "show_in_table": True, "tooltip_key": "field.tooltip.location_name"},
|
|
47
|
+
{"key": "sku", "label": "SKU", "type": "text", "editable": True, "required": True, "options": [], "visible_to_roles": [], "position": 0, "show_in_table": True, "label_key": "field.label.sku"},
|
|
48
|
+
{"key": "name", "label": "Name", "type": "text", "editable": True, "required": True, "options": [], "visible_to_roles": [], "position": 1, "show_in_table": True, "label_key": "field.label.name"},
|
|
49
|
+
{"key": "category", "label": "Category", "type": "text", "editable": True, "required": False, "options": [], "visible_to_roles": [], "position": 2, "show_in_table": True, "label_key": "field.label.category"},
|
|
50
|
+
{"key": "quantity", "label": "Qty", "type": "number", "editable": True, "required": False, "options": [], "visible_to_roles": [], "position": 3, "show_in_table": True, "tooltip_key": "field.tooltip.quantity", "label_key": "field.label.quantity"},
|
|
51
|
+
{"key": "sell_by", "label": "Sell Unit", "type": "text", "editable": True, "required": False, "options": [], "visible_to_roles": [], "position": 3.05,"show_in_table": False, "tooltip_key": "field.tooltip.sell_by", "label_key": "field.label.sell_by"},
|
|
52
|
+
{"key": "weight", "label": "Net Weight", "type": "number", "editable": True, "required": False, "options": [], "visible_to_roles": [], "position": 3.02, "show_in_table": True, "tooltip_key": "field.tooltip.weight", "label_key": "field.label.weight"},
|
|
53
|
+
{"key": "weight_unit", "label": "Net Weight Unit", "type": "text", "editable": True, "required": False, "options": [], "visible_to_roles": [], "position": 3.15,"show_in_table": False, "tooltip_key": "field.tooltip.weight_unit", "label_key": "field.label.weight_unit"},
|
|
54
|
+
{"key": "pieces", "label": "Pieces", "type": "number", "editable": True, "required": False, "options": [], "visible_to_roles": [], "position": 3.06,"show_in_table": True, "tooltip_key": "field.tooltip.pieces", "label_key": "field.label.pieces"},
|
|
55
|
+
{"key": "reorder_point", "label": "Reorder Point", "type": "number", "editable": True, "required": False, "options": [], "visible_to_roles": [], "position": 3.7, "show_in_table": False, "tooltip_key": "field.tooltip.reorder_point", "label_key": "field.label.reorder_point"},
|
|
56
|
+
{"key": "reorder_qty", "label": "Reorder Qty", "type": "number", "editable": True, "required": False, "options": [], "visible_to_roles": [], "position": 3.72,"show_in_table": False, "tooltip_key": "field.tooltip.reorder_qty", "label_key": "field.label.reorder_qty"},
|
|
57
|
+
{"key": "gross_weight", "label": "Gross Weight", "type": "number", "editable": True, "required": False, "options": [], "visible_to_roles": [], "position": 3.25,"show_in_table": False, "tooltip_key": "field.tooltip.gross_weight", "label_key": "field.label.gross_weight"},
|
|
58
|
+
{"key": "gross_weight_unit", "label": "Gross Weight Unit", "type": "text", "editable": True, "required": False, "options": [], "visible_to_roles": [], "position": 3.3, "show_in_table": False, "tooltip_key": "field.tooltip.gross_weight_unit", "label_key": "field.label.gross_weight_unit"},
|
|
59
|
+
{"key": "inventory_type", "label": "Inventory Type", "type": "select", "editable": True, "required": False, "options": ["stocked", "component", "non_stocked", "service", "freight"], "visible_to_roles": [], "position": 4.2, "show_in_table": False, "tooltip_key": "field.tooltip.inventory_type", "label_key": "field.label.inventory_type"},
|
|
60
|
+
{"key": "allow_splitting", "label": "Allow Splitting", "type": "bool", "editable": True, "required": False, "options": [], "visible_to_roles": [], "position": 4.5, "show_in_table": False, "tooltip_key": "field.tooltip.allow_splitting", "label_key": "field.label.allow_splitting"},
|
|
61
|
+
{"key": "pick_method", "label": "Stock Cutting", "type": "select", "editable": True, "required": False, "options": ["default", "fifo", "fefo", "lifo"], "visible_to_roles": [], "position": 4.6, "show_in_table": False, "tooltip_key": "field.tooltip.pick_method", "label_key": "field.label.pick_method"},
|
|
62
|
+
{"key": "location_name", "label": "Location", "type": "text", "editable": False, "required": False, "options": [], "visible_to_roles": [], "position": 5, "show_in_table": True, "tooltip_key": "field.tooltip.location_name", "label_key": "field.label.location_name"},
|
|
63
63
|
# Price columns are injected dynamically at position 6+ by _inject_price_columns()
|
|
64
64
|
# Read-only: status changes only through dedicated actions (Make Available, Revert
|
|
65
65
|
# to Draft), never a free-form dropdown edit - same convention as document status.
|
|
66
|
-
{"key": "status", "label": "Status", "type": "status", "editable": False, "required": False, "options": [], "visible_to_roles": [], "position": 100, "show_in_table": True},
|
|
67
|
-
{"key": "short_description", "label": "Short Description", "type": "text", "editable": True, "required": False, "options": [], "visible_to_roles": [], "position": 101, "show_in_table": False},
|
|
68
|
-
{"key": "description", "label": "Description", "type": "text", "editable": True, "required": False, "options": [], "visible_to_roles": [], "position": 102, "show_in_table": False},
|
|
69
|
-
{"key": "notes", "label": "Notes", "type": "text", "editable": True, "required": False, "options": [], "visible_to_roles": [], "position": 103, "show_in_table": False},
|
|
70
|
-
{"key": "barcode", "label": "Barcode", "type": "text", "editable": True, "required": False, "options": [], "visible_to_roles": [], "position": 104, "show_in_table": True, "tooltip_key": "field.tooltip.barcode"},
|
|
71
|
-
{"key": "hs_code", "label": "HS Code", "type": "text", "editable": True, "required": False, "options": [], "visible_to_roles": [], "position": 104.5, "show_in_table": False, "tooltip_key": "field.tooltip.hs_code"},
|
|
72
|
-
{"key": "country_of_origin", "label": "Country of Origin", "type": "text", "editable": True, "required": False, "options": [], "visible_to_roles": [], "position": 104.52,"show_in_table": False, "tooltip_key": "field.tooltip.country_of_origin"},
|
|
73
|
-
{"key": "preferred_supplier","label": "Preferred Supplier","type": "text", "editable": True, "required": False, "options": [], "visible_to_roles": [], "position": 104.54,"show_in_table": False, "tooltip_key": "field.tooltip.preferred_supplier"},
|
|
74
|
-
{"key": "batch_no", "label": "Batch / Lot No", "type": "text", "editable": True, "required": False, "options": [], "visible_to_roles": [], "position": 104.55,"show_in_table": False, "tooltip_key": "field.tooltip.batch_no"},
|
|
75
|
-
{"key": "purchase_sku", "label": "Purchase SKU", "type": "text", "editable": True, "required": False, "options": [], "visible_to_roles": [], "position": 104.6, "show_in_table": False, "tooltip_key": "field.tooltip.purchase_sku"},
|
|
76
|
-
{"key": "purchase_name", "label": "Purchase Name", "type": "text", "editable": True, "required": False, "options": [], "visible_to_roles": [], "position": 104.7, "show_in_table": False, "tooltip_key": "field.tooltip.purchase_name"},
|
|
77
|
-
{"key": "purchase_unit", "label": "Purchase Unit", "type": "text", "editable": True, "required": False, "options": [], "visible_to_roles": [], "position": 104.8, "show_in_table": True, "tooltip_key": "field.tooltip.purchase_unit"},
|
|
78
|
-
{"key": "purchase_conversion_factor","label": "Conversion Factor", "type": "number", "editable": True, "required": False, "options": [], "visible_to_roles": [], "position": 104.9, "show_in_table": False, "tooltip_key": "field.tooltip.purchase_conversion_factor"},
|
|
79
|
-
{"key": "created_at", "label": "Created", "type": "date", "editable": False, "required": False, "options": [], "visible_to_roles": [], "position": 107, "show_in_table": False},
|
|
80
|
-
{"key": "updated_at", "label": "Updated", "type": "date", "editable": False, "required": False, "options": [], "visible_to_roles": [], "position": 108, "show_in_table": False},
|
|
66
|
+
{"key": "status", "label": "Status", "type": "status", "editable": False, "required": False, "options": [], "visible_to_roles": [], "position": 100, "show_in_table": True, "label_key": "field.label.status"},
|
|
67
|
+
{"key": "short_description", "label": "Short Description", "type": "text", "editable": True, "required": False, "options": [], "visible_to_roles": [], "position": 101, "show_in_table": False, "label_key": "field.label.short_description"},
|
|
68
|
+
{"key": "description", "label": "Description", "type": "text", "editable": True, "required": False, "options": [], "visible_to_roles": [], "position": 102, "show_in_table": False, "label_key": "field.label.description"},
|
|
69
|
+
{"key": "notes", "label": "Notes", "type": "text", "editable": True, "required": False, "options": [], "visible_to_roles": [], "position": 103, "show_in_table": False, "label_key": "field.label.notes"},
|
|
70
|
+
{"key": "barcode", "label": "Barcode", "type": "text", "editable": True, "required": False, "options": [], "visible_to_roles": [], "position": 104, "show_in_table": True, "tooltip_key": "field.tooltip.barcode", "label_key": "field.label.barcode"},
|
|
71
|
+
{"key": "hs_code", "label": "HS Code", "type": "text", "editable": True, "required": False, "options": [], "visible_to_roles": [], "position": 104.5, "show_in_table": False, "tooltip_key": "field.tooltip.hs_code", "label_key": "field.label.hs_code"},
|
|
72
|
+
{"key": "country_of_origin", "label": "Country of Origin", "type": "text", "editable": True, "required": False, "options": [], "visible_to_roles": [], "position": 104.52,"show_in_table": False, "tooltip_key": "field.tooltip.country_of_origin", "label_key": "field.label.country_of_origin"},
|
|
73
|
+
{"key": "preferred_supplier","label": "Preferred Supplier","type": "text", "editable": True, "required": False, "options": [], "visible_to_roles": [], "position": 104.54,"show_in_table": False, "tooltip_key": "field.tooltip.preferred_supplier", "label_key": "field.label.preferred_supplier"},
|
|
74
|
+
{"key": "batch_no", "label": "Batch / Lot No", "type": "text", "editable": True, "required": False, "options": [], "visible_to_roles": [], "position": 104.55,"show_in_table": False, "tooltip_key": "field.tooltip.batch_no", "label_key": "field.label.batch_no"},
|
|
75
|
+
{"key": "purchase_sku", "label": "Purchase SKU", "type": "text", "editable": True, "required": False, "options": [], "visible_to_roles": [], "position": 104.6, "show_in_table": False, "tooltip_key": "field.tooltip.purchase_sku", "label_key": "field.label.purchase_sku"},
|
|
76
|
+
{"key": "purchase_name", "label": "Purchase Name", "type": "text", "editable": True, "required": False, "options": [], "visible_to_roles": [], "position": 104.7, "show_in_table": False, "tooltip_key": "field.tooltip.purchase_name", "label_key": "field.label.purchase_name"},
|
|
77
|
+
{"key": "purchase_unit", "label": "Purchase Unit", "type": "text", "editable": True, "required": False, "options": [], "visible_to_roles": [], "position": 104.8, "show_in_table": True, "tooltip_key": "field.tooltip.purchase_unit", "label_key": "field.label.purchase_unit"},
|
|
78
|
+
{"key": "purchase_conversion_factor","label": "Conversion Factor", "type": "number", "editable": True, "required": False, "options": [], "visible_to_roles": [], "position": 104.9, "show_in_table": False, "tooltip_key": "field.tooltip.purchase_conversion_factor", "label_key": "field.label.purchase_conversion_factor"},
|
|
79
|
+
{"key": "created_at", "label": "Created", "type": "date", "editable": False, "required": False, "options": [], "visible_to_roles": [], "position": 107, "show_in_table": False, "label_key": "field.label.created_at"},
|
|
80
|
+
{"key": "updated_at", "label": "Updated", "type": "date", "editable": False, "required": False, "options": [], "visible_to_roles": [], "position": 108, "show_in_table": False, "label_key": "field.label.updated_at"},
|
|
81
81
|
]
|
|
82
82
|
|
|
83
|
+
# Built-in fields keyed for O(1) lookup when rehydrating stripped metadata.
|
|
84
|
+
_BASE_FIELD_BY_KEY: dict[str, dict] = {f["key"]: f for f in _BASE_FIELDS}
|
|
85
|
+
|
|
86
|
+
|
|
87
|
+
def _rehydrate_builtin_metadata(schema: list[dict]) -> list[dict]:
|
|
88
|
+
"""Reattach canonical label_key/tooltip_key to built-in fields.
|
|
89
|
+
|
|
90
|
+
The item schema PATCH model does not carry label_key or tooltip_key, so a
|
|
91
|
+
company that customizes its schema stores built-in fields stripped of both.
|
|
92
|
+
Reattach them from _BASE_FIELDS, keyed strictly on built-in membership so
|
|
93
|
+
custom fields and dynamic price columns are never touched. label_key is
|
|
94
|
+
restored only when the stored label still equals the canonical English label
|
|
95
|
+
(a user-renamed built-in keeps its literal label and is never translated);
|
|
96
|
+
tooltip_key is restored for every built-in key, since there is no
|
|
97
|
+
custom-tooltip edit path. Idempotent: a field that already carries a key is
|
|
98
|
+
left as-is."""
|
|
99
|
+
out: list[dict] = []
|
|
100
|
+
for f in schema:
|
|
101
|
+
base = _BASE_FIELD_BY_KEY.get(f.get("key"))
|
|
102
|
+
if base is None:
|
|
103
|
+
out.append(f)
|
|
104
|
+
continue
|
|
105
|
+
updated = dict(f)
|
|
106
|
+
if ("label_key" not in updated and base.get("label_key")
|
|
107
|
+
and updated.get("label") == base.get("label")):
|
|
108
|
+
updated["label_key"] = base["label_key"]
|
|
109
|
+
if "tooltip_key" not in updated and base.get("tooltip_key"):
|
|
110
|
+
updated["tooltip_key"] = base["tooltip_key"]
|
|
111
|
+
out.append(updated)
|
|
112
|
+
return out
|
|
113
|
+
|
|
114
|
+
|
|
83
115
|
def _inject_price_columns(base: list[dict], price_lists: list[dict]) -> list[dict]:
|
|
84
116
|
"""Insert a money column for each price list after position 5 (location).
|
|
85
117
|
|
|
@@ -190,5 +222,5 @@ async def get_effective_field_schema(
|
|
|
190
222
|
keys_in_cat = {f["key"] for f in cat_fields}
|
|
191
223
|
merged = [f for f in base_schema if f["key"] not in keys_in_cat]
|
|
192
224
|
merged.extend(cat_fields)
|
|
193
|
-
return merged
|
|
194
|
-
return base_schema
|
|
225
|
+
return _rehydrate_builtin_metadata(merged)
|
|
226
|
+
return _rehydrate_builtin_metadata(base_schema)
|
|
@@ -360,6 +360,18 @@ default_modules/celerp-labels/celerp_labels/presets.py
|
|
|
360
360
|
default_modules/celerp-labels/celerp_labels/routes.py
|
|
361
361
|
default_modules/celerp-labels/celerp_labels/service.py
|
|
362
362
|
default_modules/celerp-labels/celerp_labels/ui_routes.py
|
|
363
|
+
default_modules/celerp-labels/celerp_labels/locales/am.json
|
|
364
|
+
default_modules/celerp-labels/celerp_labels/locales/ar.json
|
|
365
|
+
default_modules/celerp-labels/celerp_labels/locales/de.json
|
|
366
|
+
default_modules/celerp-labels/celerp_labels/locales/en.json
|
|
367
|
+
default_modules/celerp-labels/celerp_labels/locales/es.json
|
|
368
|
+
default_modules/celerp-labels/celerp_labels/locales/fr.json
|
|
369
|
+
default_modules/celerp-labels/celerp_labels/locales/id.json
|
|
370
|
+
default_modules/celerp-labels/celerp_labels/locales/it.json
|
|
371
|
+
default_modules/celerp-labels/celerp_labels/locales/ja.json
|
|
372
|
+
default_modules/celerp-labels/celerp_labels/locales/pt.json
|
|
373
|
+
default_modules/celerp-labels/celerp_labels/locales/th.json
|
|
374
|
+
default_modules/celerp-labels/celerp_labels/locales/vi.json
|
|
363
375
|
default_modules/celerp-labels/tests/test_labels.py
|
|
364
376
|
default_modules/celerp-labels/tests/test_labels_module.py
|
|
365
377
|
default_modules/celerp-manufacturing/LICENSE
|
|
@@ -559,6 +571,7 @@ ui/components/phone.py
|
|
|
559
571
|
ui/components/report_kit.py
|
|
560
572
|
ui/components/shell.py
|
|
561
573
|
ui/components/table.py
|
|
574
|
+
ui/locales/am.json
|
|
562
575
|
ui/locales/ar.json
|
|
563
576
|
ui/locales/de.json
|
|
564
577
|
ui/locales/en.json
|
|
@@ -361,6 +361,18 @@
|
|
|
361
361
|
"default_modules/celerp-labels/LICENSE",
|
|
362
362
|
"default_modules/celerp-labels/__init__.py",
|
|
363
363
|
"default_modules/celerp-labels/celerp_labels/__init__.py",
|
|
364
|
+
"default_modules/celerp-labels/celerp_labels/locales/am.json",
|
|
365
|
+
"default_modules/celerp-labels/celerp_labels/locales/ar.json",
|
|
366
|
+
"default_modules/celerp-labels/celerp_labels/locales/de.json",
|
|
367
|
+
"default_modules/celerp-labels/celerp_labels/locales/en.json",
|
|
368
|
+
"default_modules/celerp-labels/celerp_labels/locales/es.json",
|
|
369
|
+
"default_modules/celerp-labels/celerp_labels/locales/fr.json",
|
|
370
|
+
"default_modules/celerp-labels/celerp_labels/locales/id.json",
|
|
371
|
+
"default_modules/celerp-labels/celerp_labels/locales/it.json",
|
|
372
|
+
"default_modules/celerp-labels/celerp_labels/locales/ja.json",
|
|
373
|
+
"default_modules/celerp-labels/celerp_labels/locales/pt.json",
|
|
374
|
+
"default_modules/celerp-labels/celerp_labels/locales/th.json",
|
|
375
|
+
"default_modules/celerp-labels/celerp_labels/locales/vi.json",
|
|
364
376
|
"default_modules/celerp-labels/celerp_labels/models.py",
|
|
365
377
|
"default_modules/celerp-labels/celerp_labels/presets.py",
|
|
366
378
|
"default_modules/celerp-labels/celerp_labels/routes.py",
|
|
@@ -718,6 +730,7 @@
|
|
|
718
730
|
"scripts/download-python.sh",
|
|
719
731
|
"scripts/extract_i18n.py",
|
|
720
732
|
"scripts/gen_first_party_lock.py",
|
|
733
|
+
"scripts/i18n_allowlist.json",
|
|
721
734
|
"scripts/licenses.py",
|
|
722
735
|
"scripts/module_setup.py",
|
|
723
736
|
"scripts/publish_pypi.sh",
|
|
@@ -728,6 +741,8 @@
|
|
|
728
741
|
"tests/fixtures/modules/celerp-testlang/locales/xr.json",
|
|
729
742
|
"tests/fixtures/modules/celerp-testlang/locales/xx.json",
|
|
730
743
|
"tests/helpers.py",
|
|
744
|
+
"tests/i18n_source_identical_allowlist.json",
|
|
745
|
+
"tests/test_activity_i18n.py",
|
|
731
746
|
"tests/test_alembic_config.py",
|
|
732
747
|
"tests/test_attachments.py",
|
|
733
748
|
"tests/test_attr_stored_in_attributes.py",
|
|
@@ -847,12 +862,14 @@
|
|
|
847
862
|
"tests/test_embedded_pg_manager.py",
|
|
848
863
|
"tests/test_embedded_pg_modes.py",
|
|
849
864
|
"tests/test_entity_files.py",
|
|
865
|
+
"tests/test_error_pages_i18n.py",
|
|
850
866
|
"tests/test_event_schema_registry.py",
|
|
851
867
|
"tests/test_events/test_item_events.py",
|
|
852
868
|
"tests/test_events/test_item_file_events.py",
|
|
853
869
|
"tests/test_events/test_other_events.py",
|
|
854
870
|
"tests/test_events/test_phase2_events.py",
|
|
855
871
|
"tests/test_events/test_phase2_projection_branches.py",
|
|
872
|
+
"tests/test_field_label_persistence.py",
|
|
856
873
|
"tests/test_file_activity.py",
|
|
857
874
|
"tests/test_fulfillment.py",
|
|
858
875
|
"tests/test_gateway/__init__.py",
|
|
@@ -864,6 +881,49 @@
|
|
|
864
881
|
"tests/test_gateway/test_state.py",
|
|
865
882
|
"tests/test_holdings.py",
|
|
866
883
|
"tests/test_i18n.py",
|
|
884
|
+
"tests/test_i18n_account.py",
|
|
885
|
+
"tests/test_i18n_accounting.py",
|
|
886
|
+
"tests/test_i18n_accounting_import.py",
|
|
887
|
+
"tests/test_i18n_auth.py",
|
|
888
|
+
"tests/test_i18n_backup.py",
|
|
889
|
+
"tests/test_i18n_cloud_gate.py",
|
|
890
|
+
"tests/test_i18n_contacts.py",
|
|
891
|
+
"tests/test_i18n_csv_import.py",
|
|
892
|
+
"tests/test_i18n_dashboard.py",
|
|
893
|
+
"tests/test_i18n_docs_import.py",
|
|
894
|
+
"tests/test_i18n_documents.py",
|
|
895
|
+
"tests/test_i18n_field_labels.py",
|
|
896
|
+
"tests/test_i18n_files.py",
|
|
897
|
+
"tests/test_i18n_financial_reports.py",
|
|
898
|
+
"tests/test_i18n_hardcoded_scan.py",
|
|
899
|
+
"tests/test_i18n_inventory.py",
|
|
900
|
+
"tests/test_i18n_journal.py",
|
|
901
|
+
"tests/test_i18n_lists_import.py",
|
|
902
|
+
"tests/test_i18n_manufacturing.py",
|
|
903
|
+
"tests/test_i18n_modules_page.py",
|
|
904
|
+
"tests/test_i18n_notes_phone.py",
|
|
905
|
+
"tests/test_i18n_reconciliation.py",
|
|
906
|
+
"tests/test_i18n_report_kit.py",
|
|
907
|
+
"tests/test_i18n_reports.py",
|
|
908
|
+
"tests/test_i18n_search.py",
|
|
909
|
+
"tests/test_i18n_settings.py",
|
|
910
|
+
"tests/test_i18n_settings_accounting.py",
|
|
911
|
+
"tests/test_i18n_settings_cloud.py",
|
|
912
|
+
"tests/test_i18n_settings_connectors.py",
|
|
913
|
+
"tests/test_i18n_settings_contacts.py",
|
|
914
|
+
"tests/test_i18n_settings_general.py",
|
|
915
|
+
"tests/test_i18n_settings_import.py",
|
|
916
|
+
"tests/test_i18n_settings_inventory.py",
|
|
917
|
+
"tests/test_i18n_settings_manufacturing.py",
|
|
918
|
+
"tests/test_i18n_settings_payments.py",
|
|
919
|
+
"tests/test_i18n_settings_sales.py",
|
|
920
|
+
"tests/test_i18n_setup.py",
|
|
921
|
+
"tests/test_i18n_shell.py",
|
|
922
|
+
"tests/test_i18n_small_mixed.py",
|
|
923
|
+
"tests/test_i18n_stars.py",
|
|
924
|
+
"tests/test_i18n_subscriptions.py",
|
|
925
|
+
"tests/test_i18n_subscriptions_import.py",
|
|
926
|
+
"tests/test_i18n_table.py",
|
|
867
927
|
"tests/test_idempotency_per_company.py",
|
|
868
928
|
"tests/test_import_history.py",
|
|
869
929
|
"tests/test_import_relay_i1.py",
|
|
@@ -906,6 +966,7 @@
|
|
|
906
966
|
"tests/test_module_i18n_seam.py",
|
|
907
967
|
"tests/test_module_importer.py",
|
|
908
968
|
"tests/test_module_load_errors.py",
|
|
969
|
+
"tests/test_module_locales.py",
|
|
909
970
|
"tests/test_modules/__init__.py",
|
|
910
971
|
"tests/test_modules/test_audit.py",
|
|
911
972
|
"tests/test_modules/test_demotion.py",
|
|
@@ -1065,6 +1126,7 @@
|
|
|
1065
1126
|
"ui/components/table.py",
|
|
1066
1127
|
"ui/config.py",
|
|
1067
1128
|
"ui/i18n.py",
|
|
1129
|
+
"ui/locales/am.json",
|
|
1068
1130
|
"ui/locales/ar.json",
|
|
1069
1131
|
"ui/locales/de.json",
|
|
1070
1132
|
"ui/locales/en.json",
|
{celerp-2.3.0 → celerp-2.3.1}/default_modules/celerp-accounting/tests/report_goldens/statement.html
RENAMED
|
@@ -16,67 +16,67 @@
|
|
|
16
16
|
<button type="submit" class="btn btn--secondary btn--sm">Apply</button><script>(function(){var f=document.getElementById('dfb-from'),t=document.getElementById('dfb-to');if(!f||!t)return;f.addEventListener('change',function(){if(f.value)t.min=f.value;});t.addEventListener('change',function(){if(t.value)f.max=t.value;});})();</script></form><a href="/settings/general?tab=company" class="settings-gear" title="Related settings">⚙</a> </div>
|
|
17
17
|
<div>
|
|
18
18
|
<form enctype="multipart/form-data" method="get" action="/reports/statement" class="flex-row gap-sm"><label class="form-label">Account</label> <div data-multiple="true" data-count-label="{n} selected" data-empty-label="Search customers, suppliers and accounts" data-search-url="1" hx-get="/reports/statement/subject-options?account=c%3Acontact%3A<uuid>&account=a%3A1120" hx-trigger="input from:.combobox-input changed delay:300ms" hx-swap="innerHTML" hx-include="find .combobox-input" hx-target="find .combobox-list" class="combobox-wrap">
|
|
19
|
-
<input type="text" value="2 selected" placeholder="Search customers, suppliers and accounts" autocomplete="off" name="q" class="combobox-input">
|
|
19
|
+
<input type="text" value="2 selected" placeholder="Search customers, suppliers and accounts" autocomplete="off" name="q" role="combobox" aria-expanded="false" aria-haspopup="listbox" aria-autocomplete="list" class="combobox-input">
|
|
20
20
|
<input type="hidden" data-name="account" value="">
|
|
21
21
|
<div class="combobox-selected">
|
|
22
22
|
<input type="hidden" name="account" value="c:contact:<uuid>" data-label="Riverside Supplies (customer)">
|
|
23
23
|
<input type="hidden" name="account" value="a:1120" data-label="1120 Accounts Receivable">
|
|
24
24
|
</div>
|
|
25
|
-
<div class="combobox-list">
|
|
26
|
-
<div data-value="c:contact:<uuid>" class="combobox-option">Owner (both)</div>
|
|
27
|
-
<div data-value="c:contact:<uuid>" class="combobox-option combobox-option--selected">Riverside Supplies (customer)</div>
|
|
28
|
-
<div data-value="a:1000" class="combobox-option">1000 Assets</div>
|
|
29
|
-
<div data-value="a:1100" class="combobox-option">1100 Current Assets</div>
|
|
30
|
-
<div data-value="a:1110" class="combobox-option">1110 Cash and Cash Equivalents</div>
|
|
31
|
-
<div data-value="a:1111" class="combobox-option">1111 Default Bank Account (Checking)</div>
|
|
32
|
-
<div data-value="a:1120" class="combobox-option combobox-option--selected">1120 Accounts Receivable</div>
|
|
33
|
-
<div data-value="a:1130" class="combobox-option">1130 Inventory</div>
|
|
34
|
-
<div data-value="a:1130-DTY" class="combobox-option">1130-DTY Inventory - Import Duty Clearing</div>
|
|
35
|
-
<div data-value="a:1130-FRT" class="combobox-option">1130-FRT Inventory - Freight Clearing</div>
|
|
36
|
-
<div data-value="a:1130-INS" class="combobox-option">1130-INS Inventory - Insurance Clearing</div>
|
|
37
|
-
<div data-value="a:1130-IVT" class="combobox-option">1130-IVT Inventory - Non-Recoverable Import VAT Clearing</div>
|
|
38
|
-
<div data-value="a:1130-OB" class="combobox-option">1130-OB Inventory - Opening Balance</div>
|
|
39
|
-
<div data-value="a:1130-P" class="combobox-option">1130-P Inventory - Purchased</div>
|
|
40
|
-
<div data-value="a:1140" class="combobox-option">1140 Prepaid Expenses</div>
|
|
41
|
-
<div data-value="a:1150" class="combobox-option">1150 VAT Receivable (Input VAT)</div>
|
|
42
|
-
<div data-value="a:1200" class="combobox-option">1200 Non-Current Assets</div>
|
|
43
|
-
<div data-value="a:1210" class="combobox-option">1210 Property, Plant and Equipment</div>
|
|
44
|
-
<div data-value="a:1220" class="combobox-option">1220 Accumulated Depreciation</div>
|
|
45
|
-
<div data-value="a:1230" class="combobox-option">1230 Intangible Assets</div>
|
|
46
|
-
<div data-value="a:2000" class="combobox-option">2000 Liabilities</div>
|
|
47
|
-
<div data-value="a:2100" class="combobox-option">2100 Current Liabilities</div>
|
|
48
|
-
<div data-value="a:2110" class="combobox-option">2110 Accounts Payable</div>
|
|
49
|
-
<div data-value="a:2120" class="combobox-option">2120 VAT Payable (Output VAT)</div>
|
|
50
|
-
<div data-value="a:2130" class="combobox-option">2130 Withholding Tax Payable</div>
|
|
51
|
-
<div data-value="a:2140" class="combobox-option">2140 Accrued Expenses</div>
|
|
52
|
-
<div data-value="a:2150" class="combobox-option">2150 Social Security Payable</div>
|
|
53
|
-
<div data-value="a:2200" class="combobox-option">2200 Non-Current Liabilities</div>
|
|
54
|
-
<div data-value="a:2210" class="combobox-option">2210 Long-term Loans</div>
|
|
55
|
-
<div data-value="a:3000" class="combobox-option">3000 Equity</div>
|
|
56
|
-
<div data-value="a:3100" class="combobox-option">3100 Registered Capital</div>
|
|
57
|
-
<div data-value="a:3200" class="combobox-option">3200 Retained Earnings</div>
|
|
58
|
-
<div data-value="a:3300" class="combobox-option">3300 Current Year Earnings</div>
|
|
59
|
-
<div data-value="a:4000" class="combobox-option">4000 Revenue</div>
|
|
60
|
-
<div data-value="a:4100" class="combobox-option">4100 Sales Revenue</div>
|
|
61
|
-
<div data-value="a:4200" class="combobox-option">4200 Service Revenue</div>
|
|
62
|
-
<div data-value="a:4300" class="combobox-option">4300 Other Income</div>
|
|
63
|
-
<div data-value="a:4400" class="combobox-option">4400 Interest Income</div>
|
|
64
|
-
<div data-value="a:5000" class="combobox-option">5000 Cost of Goods Sold</div>
|
|
65
|
-
<div data-value="a:5100" class="combobox-option">5100 Cost of Goods Sold</div>
|
|
66
|
-
<div data-value="a:5200" class="combobox-option">5200 Direct Labor</div>
|
|
67
|
-
<div data-value="a:5300" class="combobox-option">5300 Manufacturing Overhead</div>
|
|
68
|
-
<div data-value="a:6000" class="combobox-option">6000 Operating Expenses</div>
|
|
69
|
-
<div data-value="a:6100" class="combobox-option">6100 Salaries and Wages</div>
|
|
70
|
-
<div data-value="a:6200" class="combobox-option">6200 Rent</div>
|
|
71
|
-
<div data-value="a:6300" class="combobox-option">6300 Utilities</div>
|
|
72
|
-
<div data-value="a:6400" class="combobox-option">6400 Depreciation</div>
|
|
73
|
-
<div data-value="a:6500" class="combobox-option">6500 Professional Fees</div>
|
|
74
|
-
<div data-value="a:6600" class="combobox-option">6600 Marketing and Advertising</div>
|
|
75
|
-
<div data-value="a:6700" class="combobox-option">6700 Insurance</div>
|
|
76
|
-
<div data-value="a:6800" class="combobox-option">6800 Office Supplies</div>
|
|
77
|
-
<div data-value="a:6900" class="combobox-option">6900 Travel and Transportation</div>
|
|
78
|
-
<div data-value="a:6950" class="combobox-option">6950 Miscellaneous Expenses</div>
|
|
79
|
-
<div data-value="a:6960" class="combobox-option">6960 Foreign Exchange Difference</div>
|
|
25
|
+
<div role="listbox" class="combobox-list">
|
|
26
|
+
<div data-value="c:contact:<uuid>" role="option" class="combobox-option">Owner (both)</div>
|
|
27
|
+
<div data-value="c:contact:<uuid>" role="option" class="combobox-option combobox-option--selected">Riverside Supplies (customer)</div>
|
|
28
|
+
<div data-value="a:1000" role="option" class="combobox-option">1000 Assets</div>
|
|
29
|
+
<div data-value="a:1100" role="option" class="combobox-option">1100 Current Assets</div>
|
|
30
|
+
<div data-value="a:1110" role="option" class="combobox-option">1110 Cash and Cash Equivalents</div>
|
|
31
|
+
<div data-value="a:1111" role="option" class="combobox-option">1111 Default Bank Account (Checking)</div>
|
|
32
|
+
<div data-value="a:1120" role="option" class="combobox-option combobox-option--selected">1120 Accounts Receivable</div>
|
|
33
|
+
<div data-value="a:1130" role="option" class="combobox-option">1130 Inventory</div>
|
|
34
|
+
<div data-value="a:1130-DTY" role="option" class="combobox-option">1130-DTY Inventory - Import Duty Clearing</div>
|
|
35
|
+
<div data-value="a:1130-FRT" role="option" class="combobox-option">1130-FRT Inventory - Freight Clearing</div>
|
|
36
|
+
<div data-value="a:1130-INS" role="option" class="combobox-option">1130-INS Inventory - Insurance Clearing</div>
|
|
37
|
+
<div data-value="a:1130-IVT" role="option" class="combobox-option">1130-IVT Inventory - Non-Recoverable Import VAT Clearing</div>
|
|
38
|
+
<div data-value="a:1130-OB" role="option" class="combobox-option">1130-OB Inventory - Opening Balance</div>
|
|
39
|
+
<div data-value="a:1130-P" role="option" class="combobox-option">1130-P Inventory - Purchased</div>
|
|
40
|
+
<div data-value="a:1140" role="option" class="combobox-option">1140 Prepaid Expenses</div>
|
|
41
|
+
<div data-value="a:1150" role="option" class="combobox-option">1150 VAT Receivable (Input VAT)</div>
|
|
42
|
+
<div data-value="a:1200" role="option" class="combobox-option">1200 Non-Current Assets</div>
|
|
43
|
+
<div data-value="a:1210" role="option" class="combobox-option">1210 Property, Plant and Equipment</div>
|
|
44
|
+
<div data-value="a:1220" role="option" class="combobox-option">1220 Accumulated Depreciation</div>
|
|
45
|
+
<div data-value="a:1230" role="option" class="combobox-option">1230 Intangible Assets</div>
|
|
46
|
+
<div data-value="a:2000" role="option" class="combobox-option">2000 Liabilities</div>
|
|
47
|
+
<div data-value="a:2100" role="option" class="combobox-option">2100 Current Liabilities</div>
|
|
48
|
+
<div data-value="a:2110" role="option" class="combobox-option">2110 Accounts Payable</div>
|
|
49
|
+
<div data-value="a:2120" role="option" class="combobox-option">2120 VAT Payable (Output VAT)</div>
|
|
50
|
+
<div data-value="a:2130" role="option" class="combobox-option">2130 Withholding Tax Payable</div>
|
|
51
|
+
<div data-value="a:2140" role="option" class="combobox-option">2140 Accrued Expenses</div>
|
|
52
|
+
<div data-value="a:2150" role="option" class="combobox-option">2150 Social Security Payable</div>
|
|
53
|
+
<div data-value="a:2200" role="option" class="combobox-option">2200 Non-Current Liabilities</div>
|
|
54
|
+
<div data-value="a:2210" role="option" class="combobox-option">2210 Long-term Loans</div>
|
|
55
|
+
<div data-value="a:3000" role="option" class="combobox-option">3000 Equity</div>
|
|
56
|
+
<div data-value="a:3100" role="option" class="combobox-option">3100 Registered Capital</div>
|
|
57
|
+
<div data-value="a:3200" role="option" class="combobox-option">3200 Retained Earnings</div>
|
|
58
|
+
<div data-value="a:3300" role="option" class="combobox-option">3300 Current Year Earnings</div>
|
|
59
|
+
<div data-value="a:4000" role="option" class="combobox-option">4000 Revenue</div>
|
|
60
|
+
<div data-value="a:4100" role="option" class="combobox-option">4100 Sales Revenue</div>
|
|
61
|
+
<div data-value="a:4200" role="option" class="combobox-option">4200 Service Revenue</div>
|
|
62
|
+
<div data-value="a:4300" role="option" class="combobox-option">4300 Other Income</div>
|
|
63
|
+
<div data-value="a:4400" role="option" class="combobox-option">4400 Interest Income</div>
|
|
64
|
+
<div data-value="a:5000" role="option" class="combobox-option">5000 Cost of Goods Sold</div>
|
|
65
|
+
<div data-value="a:5100" role="option" class="combobox-option">5100 Cost of Goods Sold</div>
|
|
66
|
+
<div data-value="a:5200" role="option" class="combobox-option">5200 Direct Labor</div>
|
|
67
|
+
<div data-value="a:5300" role="option" class="combobox-option">5300 Manufacturing Overhead</div>
|
|
68
|
+
<div data-value="a:6000" role="option" class="combobox-option">6000 Operating Expenses</div>
|
|
69
|
+
<div data-value="a:6100" role="option" class="combobox-option">6100 Salaries and Wages</div>
|
|
70
|
+
<div data-value="a:6200" role="option" class="combobox-option">6200 Rent</div>
|
|
71
|
+
<div data-value="a:6300" role="option" class="combobox-option">6300 Utilities</div>
|
|
72
|
+
<div data-value="a:6400" role="option" class="combobox-option">6400 Depreciation</div>
|
|
73
|
+
<div data-value="a:6500" role="option" class="combobox-option">6500 Professional Fees</div>
|
|
74
|
+
<div data-value="a:6600" role="option" class="combobox-option">6600 Marketing and Advertising</div>
|
|
75
|
+
<div data-value="a:6700" role="option" class="combobox-option">6700 Insurance</div>
|
|
76
|
+
<div data-value="a:6800" role="option" class="combobox-option">6800 Office Supplies</div>
|
|
77
|
+
<div data-value="a:6900" role="option" class="combobox-option">6900 Travel and Transportation</div>
|
|
78
|
+
<div data-value="a:6950" role="option" class="combobox-option">6950 Miscellaneous Expenses</div>
|
|
79
|
+
<div data-value="a:6960" role="option" class="combobox-option">6960 Foreign Exchange Difference</div>
|
|
80
80
|
<div class="combobox-option combobox-option--empty" style="display:none">No results</div>
|
|
81
81
|
</div>
|
|
82
82
|
</div>
|
|
@@ -280,7 +280,7 @@ def setup_ui_routes(app) -> None:
|
|
|
280
280
|
Button(t("btn.clear_all_memory"), cls="btn btn--danger btn--sm",
|
|
281
281
|
hx_delete="/ai/memory-clear",
|
|
282
282
|
hx_target="#ai-memory-content",
|
|
283
|
-
hx_confirm="
|
|
283
|
+
hx_confirm=t("ai.clear_memory_confirm"),
|
|
284
284
|
),
|
|
285
285
|
cls="ai-memory__actions",
|
|
286
286
|
),
|
|
@@ -347,7 +347,7 @@ def setup_ui_routes(app) -> None:
|
|
|
347
347
|
count = result.get("count", 0)
|
|
348
348
|
return Div(
|
|
349
349
|
_msg_bubble("ai", f"\u2705 {feedback}"),
|
|
350
|
-
P(
|
|
350
|
+
P(t("ai.draft_bills_created", count=count), cls="ai-bills__done"),
|
|
351
351
|
cls="ai-bills__confirmed",
|
|
352
352
|
)
|
|
353
353
|
except APIError as e:
|
|
@@ -411,7 +411,7 @@ async def _quota_section(token: str, session_token: str) -> FT:
|
|
|
411
411
|
cls="ai-settings__stat",
|
|
412
412
|
),
|
|
413
413
|
Div(
|
|
414
|
-
Span("
|
|
414
|
+
Span(t("ai.top_up_credits"), cls="ai-settings__stat-label"),
|
|
415
415
|
Span(str(topup), cls="ai-settings__stat-value"),
|
|
416
416
|
cls="ai-settings__stat",
|
|
417
417
|
),
|
|
@@ -519,7 +519,8 @@ def _bill_preview(bills: list[dict]) -> FT:
|
|
|
519
519
|
|
|
520
520
|
bills_json = json.dumps(bills)
|
|
521
521
|
return Div(
|
|
522
|
-
H4(
|
|
522
|
+
H4(t("ai.draft_bills_ready_one" if len(bills) == 1 else "ai.draft_bills_ready_other",
|
|
523
|
+
n=len(bills)), cls="ai-bills__title"),
|
|
523
524
|
Div(*rows, cls="ai-bills__list"),
|
|
524
525
|
Div(
|
|
525
526
|
Form(
|
|
@@ -664,7 +665,7 @@ def _chat_view() -> FT:
|
|
|
664
665
|
"☰",
|
|
665
666
|
cls="ai-sidebar__toggle",
|
|
666
667
|
id="ai-sidebar-toggle",
|
|
667
|
-
title="
|
|
668
|
+
title=t("ai.toggle_sidebar"),
|
|
668
669
|
onclick="celerpAiToggleSidebar()",
|
|
669
670
|
),
|
|
670
671
|
# Expanded action buttons (stacked vertically)
|
|
@@ -691,7 +692,7 @@ def _chat_view() -> FT:
|
|
|
691
692
|
Button(
|
|
692
693
|
"+",
|
|
693
694
|
cls="ai-sidebar__icon-btn",
|
|
694
|
-
title="
|
|
695
|
+
title=t("ai.new_conversation"),
|
|
695
696
|
hx_post="/ai/conversations",
|
|
696
697
|
hx_target="#ai-history",
|
|
697
698
|
hx_swap="afterbegin",
|
|
@@ -700,7 +701,7 @@ def _chat_view() -> FT:
|
|
|
700
701
|
Button(
|
|
701
702
|
"🧠",
|
|
702
703
|
cls="ai-sidebar__icon-btn",
|
|
703
|
-
title="
|
|
704
|
+
title=t("ai.memory"),
|
|
704
705
|
hx_get="/ai/memory-panel",
|
|
705
706
|
hx_target="#ai-memory-content",
|
|
706
707
|
hx_swap="innerHTML",
|
|
@@ -758,7 +759,7 @@ def _chat_view() -> FT:
|
|
|
758
759
|
type="text",
|
|
759
760
|
name="query",
|
|
760
761
|
id="ai-query-input",
|
|
761
|
-
placeholder="
|
|
762
|
+
placeholder=t("msg.ask_anything_about_your_business_data"),
|
|
762
763
|
cls="ai-input__field",
|
|
763
764
|
autocomplete="off",
|
|
764
765
|
),
|
|
@@ -119,7 +119,7 @@ def _backup_table(items: list[dict]):
|
|
|
119
119
|
Button(
|
|
120
120
|
t("btn.restore"),
|
|
121
121
|
hx_post=f"/backup/restore/{item['id']}",
|
|
122
|
-
hx_confirm="
|
|
122
|
+
hx_confirm=t("bak.restore_type_confirm"),
|
|
123
123
|
hx_target="#backup-flash",
|
|
124
124
|
hx_swap="outerHTML",
|
|
125
125
|
cls="btn btn--xs btn--outline btn--danger",
|
|
@@ -210,6 +210,7 @@ class ItemCreate(BaseModel):
|
|
|
210
210
|
description: str | None = None
|
|
211
211
|
unit: str | None = None
|
|
212
212
|
barcode: str | None = None # digits only if provided
|
|
213
|
+
auto_barcode: bool = False # duplicate/clone: mint a fresh unique barcode from the shared sequence, never inherit one
|
|
213
214
|
hs_code: str | None = None # Harmonized System code for trade/customs
|
|
214
215
|
tax_codes: list[str] = Field(default_factory=list)
|
|
215
216
|
purchase_sku: str | None = None # vendor's SKU / part number
|
|
@@ -1248,13 +1249,19 @@ async def post_item(payload: ItemCreate, company_id=Depends(get_current_company_
|
|
|
1248
1249
|
if not payload.sku:
|
|
1249
1250
|
payload = payload.model_copy(update={"sku": str(await _next_seq(session, company_id)).zfill(6)})
|
|
1250
1251
|
|
|
1252
|
+
# Duplicate/clone: mint a fresh unique barcode from the shared SKU/barcode
|
|
1253
|
+
# sequence and discard any inherited one. Mirrors the split child, which
|
|
1254
|
+
# resets barcode for the same reason - a new entity needs a new unique
|
|
1255
|
+
# barcode (barcode is globally unique, so a copy must never carry the source's).
|
|
1256
|
+
if payload.auto_barcode:
|
|
1257
|
+
payload = payload.model_copy(update={"barcode": str(await _next_seq(session, company_id)).zfill(6)})
|
|
1251
1258
|
# Auto-copy SKU to barcode when barcode omitted and SKU is purely numeric.
|
|
1252
1259
|
# SKU is now a (possibly repeated) product-type, so gate the copy on collision:
|
|
1253
1260
|
# if another item already uses that barcode (e.g. a second item deliberately
|
|
1254
1261
|
# sharing a numeric SKU), assign a fresh sequential barcode instead so the
|
|
1255
1262
|
# duplicate-SKU create does not 409 on barcode. Single-SKU behaviour is
|
|
1256
1263
|
# unchanged (the first/only item still gets barcode == sku).
|
|
1257
|
-
|
|
1264
|
+
elif payload.barcode is None and payload.sku.isdigit():
|
|
1258
1265
|
clash = (await session.execute(
|
|
1259
1266
|
select(Projection).where(
|
|
1260
1267
|
Projection.company_id == company_id,
|
|
@@ -1283,6 +1290,7 @@ async def post_item(payload: ItemCreate, company_id=Depends(get_current_company_
|
|
|
1283
1290
|
|
|
1284
1291
|
entity_id = f"item:{uuid.uuid4()}"
|
|
1285
1292
|
data = payload.model_dump(exclude_none=True)
|
|
1293
|
+
data.pop("auto_barcode", None) # request-only signal; never persisted onto the item
|
|
1286
1294
|
if payload.location_id is not None:
|
|
1287
1295
|
data["location_id"] = str(payload.location_id)
|
|
1288
1296
|
|