celerp 2.2.0__tar.gz → 2.3.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (622) hide show
  1. {celerp-2.2.0 → celerp-2.3.0}/PKG-INFO +1 -1
  2. {celerp-2.2.0 → celerp-2.3.0}/celerp/events/schemas.py +24 -2
  3. {celerp-2.2.0 → celerp-2.3.0}/celerp/events/types.py +2 -0
  4. {celerp-2.2.0 → celerp-2.3.0}/celerp/main.py +16 -0
  5. {celerp-2.2.0 → celerp-2.3.0}/celerp/modules/loader.py +58 -2
  6. {celerp-2.2.0 → celerp-2.3.0}/celerp/output/pdf.py +1 -1
  7. {celerp-2.2.0 → celerp-2.3.0}/celerp/routers/doctor.py +12 -26
  8. {celerp-2.2.0 → celerp-2.3.0}/celerp/services/auto_je.py +536 -128
  9. celerp-2.3.0/celerp/services/cogs_backfill.py +251 -0
  10. {celerp-2.2.0 → celerp-2.3.0}/celerp/services/holdings.py +73 -10
  11. {celerp-2.2.0 → celerp-2.3.0}/celerp/services/line_measures.py +11 -2
  12. {celerp-2.2.0 → celerp-2.3.0}/celerp/services/list_behavior.py +13 -0
  13. {celerp-2.2.0 → celerp-2.3.0}/celerp/services/pick.py +32 -1
  14. {celerp-2.2.0 → celerp-2.3.0}/celerp.egg-info/PKG-INFO +1 -1
  15. {celerp-2.2.0 → celerp-2.3.0}/celerp.egg-info/SOURCES.txt +5 -0
  16. {celerp-2.2.0 → celerp-2.3.0}/celerp.egg-info/scm_file_list.json +20 -0
  17. celerp-2.3.0/celerp.egg-info/scm_version.json +8 -0
  18. {celerp-2.2.0 → celerp-2.3.0}/conftest.py +11 -14
  19. celerp-2.3.0/conftest_support.py +44 -0
  20. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-accounting/celerp_accounting/routes.py +19 -2
  21. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-admin/celerp_admin/routes.py +12 -26
  22. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-dashboard/celerp_dashboard/routes.py +1 -1
  23. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-docs/celerp_docs/routes.py +457 -87
  24. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-docs/celerp_docs/sequences.py +2 -1
  25. celerp-2.3.0/default_modules/celerp-docs/tests/test_consolidate_lots.py +47 -0
  26. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-docs/tests/test_fulfill_no_split.py +11 -12
  27. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-docs/tests/test_inventory_account_reconciliation.py +13 -6
  28. celerp-2.3.0/default_modules/celerp-docs/tests/test_writeoffs.py +409 -0
  29. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-inventory/__init__.py +2 -1
  30. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-inventory/celerp_inventory/projections.py +24 -1
  31. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-inventory/celerp_inventory/routes.py +90 -18
  32. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-manufacturing/celerp_manufacturing/projection_handler.py +9 -0
  33. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-manufacturing/celerp_manufacturing/routes.py +105 -55
  34. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-manufacturing/tests/test_build_api.py +12 -5
  35. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-manufacturing/tests/test_manufacture_from_doc.py +21 -0
  36. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-manufacturing/tests/test_manufacturing.py +19 -8
  37. celerp-2.3.0/default_modules/celerp-manufacturing/tests/test_run_records.py +427 -0
  38. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-manufacturing/tests/test_to_make_allocation.py +5 -3
  39. {celerp-2.2.0 → celerp-2.3.0}/default_modules/first_party.lock.json +6 -6
  40. {celerp-2.2.0 → celerp-2.3.0}/ui/api_client.py +24 -1
  41. {celerp-2.2.0 → celerp-2.3.0}/ui/components/shell.py +14 -24
  42. {celerp-2.2.0 → celerp-2.3.0}/ui/components/table.py +65 -9
  43. celerp-2.3.0/ui/i18n.py +175 -0
  44. {celerp-2.2.0 → celerp-2.3.0}/ui/locales/ar.json +4 -5
  45. {celerp-2.2.0 → celerp-2.3.0}/ui/locales/de.json +4 -5
  46. {celerp-2.2.0 → celerp-2.3.0}/ui/locales/en.json +6 -5
  47. {celerp-2.2.0 → celerp-2.3.0}/ui/locales/es.json +4 -5
  48. {celerp-2.2.0 → celerp-2.3.0}/ui/locales/fr.json +4 -5
  49. {celerp-2.2.0 → celerp-2.3.0}/ui/locales/id.json +4 -5
  50. {celerp-2.2.0 → celerp-2.3.0}/ui/locales/it.json +4 -5
  51. {celerp-2.2.0 → celerp-2.3.0}/ui/locales/ja.json +4 -5
  52. {celerp-2.2.0 → celerp-2.3.0}/ui/locales/pt.json +4 -5
  53. {celerp-2.2.0 → celerp-2.3.0}/ui/locales/th.json +4 -5
  54. {celerp-2.2.0 → celerp-2.3.0}/ui/locales/vi.json +4 -5
  55. {celerp-2.2.0 → celerp-2.3.0}/ui/routes/documents.py +290 -39
  56. {celerp-2.2.0 → celerp-2.3.0}/ui/routes/inventory.py +144 -38
  57. {celerp-2.2.0 → celerp-2.3.0}/ui/routes/manufacturing.py +22 -1
  58. {celerp-2.2.0 → celerp-2.3.0}/ui/routes/reconciliation.py +145 -153
  59. {celerp-2.2.0 → celerp-2.3.0}/ui/routes/search.py +1 -1
  60. {celerp-2.2.0 → celerp-2.3.0}/ui/routes/settings.py +0 -42
  61. {celerp-2.2.0 → celerp-2.3.0}/ui/routes/setup.py +4 -4
  62. {celerp-2.2.0 → celerp-2.3.0}/ui/static/app.css +15 -1
  63. celerp-2.2.0/celerp.egg-info/scm_version.json +0 -8
  64. celerp-2.2.0/ui/i18n.py +0 -77
  65. {celerp-2.2.0 → celerp-2.3.0}/CLA.md +0 -0
  66. {celerp-2.2.0 → celerp-2.3.0}/CONTRIBUTING.md +0 -0
  67. {celerp-2.2.0 → celerp-2.3.0}/LICENSE +0 -0
  68. {celerp-2.2.0 → celerp-2.3.0}/LICENSING.md +0 -0
  69. {celerp-2.2.0 → celerp-2.3.0}/MANIFEST.in +0 -0
  70. {celerp-2.2.0 → celerp-2.3.0}/NOTICE +0 -0
  71. {celerp-2.2.0 → celerp-2.3.0}/README.md +0 -0
  72. {celerp-2.2.0 → celerp-2.3.0}/alembic.ini +0 -0
  73. {celerp-2.2.0 → celerp-2.3.0}/celerp/__init__.py +0 -0
  74. {celerp-2.2.0 → celerp-2.3.0}/celerp/__main__.py +0 -0
  75. {celerp-2.2.0 → celerp-2.3.0}/celerp/ai/__init__.py +0 -0
  76. {celerp-2.2.0 → celerp-2.3.0}/celerp/ai/batch.py +0 -0
  77. {celerp-2.2.0 → celerp-2.3.0}/celerp/ai/cleanup.py +0 -0
  78. {celerp-2.2.0 → celerp-2.3.0}/celerp/ai/commands.py +0 -0
  79. {celerp-2.2.0 → celerp-2.3.0}/celerp/ai/conversations.py +0 -0
  80. {celerp-2.2.0 → celerp-2.3.0}/celerp/ai/files.py +0 -0
  81. {celerp-2.2.0 → celerp-2.3.0}/celerp/ai/intent.py +0 -0
  82. {celerp-2.2.0 → celerp-2.3.0}/celerp/ai/llm.py +0 -0
  83. {celerp-2.2.0 → celerp-2.3.0}/celerp/ai/memory.py +0 -0
  84. {celerp-2.2.0 → celerp-2.3.0}/celerp/ai/models.py +0 -0
  85. {celerp-2.2.0 → celerp-2.3.0}/celerp/ai/page_count.py +0 -0
  86. {celerp-2.2.0 → celerp-2.3.0}/celerp/ai/quota.py +0 -0
  87. {celerp-2.2.0 → celerp-2.3.0}/celerp/ai/service.py +0 -0
  88. {celerp-2.2.0 → celerp-2.3.0}/celerp/ai/tools.py +0 -0
  89. {celerp-2.2.0 → celerp-2.3.0}/celerp/alembic.ini +0 -0
  90. {celerp-2.2.0 → celerp-2.3.0}/celerp/alembic_config.py +0 -0
  91. {celerp-2.2.0 → celerp-2.3.0}/celerp/cli.py +0 -0
  92. {celerp-2.2.0 → celerp-2.3.0}/celerp/compat.py +0 -0
  93. {celerp-2.2.0 → celerp-2.3.0}/celerp/compute/__init__.py +0 -0
  94. {celerp-2.2.0 → celerp-2.3.0}/celerp/compute/aggregations.py +0 -0
  95. {celerp-2.2.0 → celerp-2.3.0}/celerp/compute/valuation.py +0 -0
  96. {celerp-2.2.0 → celerp-2.3.0}/celerp/config.py +0 -0
  97. {celerp-2.2.0 → celerp-2.3.0}/celerp/connectors/__init__.py +0 -0
  98. {celerp-2.2.0 → celerp-2.3.0}/celerp/connectors/base.py +0 -0
  99. {celerp-2.2.0 → celerp-2.3.0}/celerp/connectors/daily_scheduler.py +0 -0
  100. {celerp-2.2.0 → celerp-2.3.0}/celerp/connectors/http.py +0 -0
  101. {celerp-2.2.0 → celerp-2.3.0}/celerp/connectors/images.py +0 -0
  102. {celerp-2.2.0 → celerp-2.3.0}/celerp/connectors/quickbooks.py +0 -0
  103. {celerp-2.2.0 → celerp-2.3.0}/celerp/connectors/registry.py +0 -0
  104. {celerp-2.2.0 → celerp-2.3.0}/celerp/connectors/relay_token.py +0 -0
  105. {celerp-2.2.0 → celerp-2.3.0}/celerp/connectors/shopify.py +0 -0
  106. {celerp-2.2.0 → celerp-2.3.0}/celerp/connectors/sync_runner.py +0 -0
  107. {celerp-2.2.0 → celerp-2.3.0}/celerp/connectors/upsert.py +0 -0
  108. {celerp-2.2.0 → celerp-2.3.0}/celerp/connectors/util.py +0 -0
  109. {celerp-2.2.0 → celerp-2.3.0}/celerp/connectors/webhooks.py +0 -0
  110. {celerp-2.2.0 → celerp-2.3.0}/celerp/connectors/woocommerce.py +0 -0
  111. {celerp-2.2.0 → celerp-2.3.0}/celerp/connectors/xero.py +0 -0
  112. {celerp-2.2.0 → celerp-2.3.0}/celerp/constants.py +0 -0
  113. {celerp-2.2.0 → celerp-2.3.0}/celerp/db.py +0 -0
  114. {celerp-2.2.0 → celerp-2.3.0}/celerp/embedded_pg.py +0 -0
  115. {celerp-2.2.0 → celerp-2.3.0}/celerp/events/__init__.py +0 -0
  116. {celerp-2.2.0 → celerp-2.3.0}/celerp/events/engine.py +0 -0
  117. {celerp-2.2.0 → celerp-2.3.0}/celerp/gateway/__init__.py +0 -0
  118. {celerp-2.2.0 → celerp-2.3.0}/celerp/gateway/client.py +0 -0
  119. {celerp-2.2.0 → celerp-2.3.0}/celerp/gateway/state.py +0 -0
  120. {celerp-2.2.0 → celerp-2.3.0}/celerp/importers/__init__.py +0 -0
  121. {celerp-2.2.0 → celerp-2.3.0}/celerp/importers/importer.py +0 -0
  122. {celerp-2.2.0 → celerp-2.3.0}/celerp/importers/schema.py +0 -0
  123. {celerp-2.2.0 → celerp-2.3.0}/celerp/middleware.py +0 -0
  124. {celerp-2.2.0 → celerp-2.3.0}/celerp/migrations/README.md +0 -0
  125. {celerp-2.2.0 → celerp-2.3.0}/celerp/migrations/_auto_stamp.py +0 -0
  126. {celerp-2.2.0 → celerp-2.3.0}/celerp/migrations/_data_reconcile.py +0 -0
  127. {celerp-2.2.0 → celerp-2.3.0}/celerp/migrations/_json_compat.py +0 -0
  128. {celerp-2.2.0 → celerp-2.3.0}/celerp/migrations/env.py +0 -0
  129. {celerp-2.2.0 → celerp-2.3.0}/celerp/migrations/script.py.mako +0 -0
  130. {celerp-2.2.0 → celerp-2.3.0}/celerp/migrations/versions/a0b1c2d3e4f5_seed_landed_cost_clearing_accounts.py +0 -0
  131. {celerp-2.2.0 → celerp-2.3.0}/celerp/migrations/versions/a1b2c3d4e5f6_add_doc_share_tokens.py +0 -0
  132. {celerp-2.2.0 → celerp-2.3.0}/celerp/migrations/versions/b1c2d3e4f5a6_add_supporter_badges.py +0 -0
  133. {celerp-2.2.0 → celerp-2.3.0}/celerp/migrations/versions/b2c3d4e5f6a7_add_import_batches.py +0 -0
  134. {celerp-2.2.0 → celerp-2.3.0}/celerp/migrations/versions/b3c4d5e6f7a8_expand_role_permissions_to_role_grants.py +0 -0
  135. {celerp-2.2.0 → celerp-2.3.0}/celerp/migrations/versions/c1d2e3f4a5b6_add_marketplace.py +0 -0
  136. {celerp-2.2.0 → celerp-2.3.0}/celerp/migrations/versions/c2d3e4f5a6b7_add_is_sync_to_shopify.py +0 -0
  137. {celerp-2.2.0 → celerp-2.3.0}/celerp/migrations/versions/c4d5e6f7a8b9_account_cash_flow_category.py +0 -0
  138. {celerp-2.2.0 → celerp-2.3.0}/celerp/migrations/versions/d0e1f2a3b4c5_add_share_token_expiry.py +0 -0
  139. {celerp-2.2.0 → celerp-2.3.0}/celerp/migrations/versions/d2e3f4a5b6c7_add_password_reset_token.py +0 -0
  140. {celerp-2.2.0 → celerp-2.3.0}/celerp/migrations/versions/d5e6f7a8b9c0_rename_fx_rounding_to_fx_difference.py +0 -0
  141. {celerp-2.2.0 → celerp-2.3.0}/celerp/migrations/versions/e3f4a5b6c7d8_add_company_is_active.py +0 -0
  142. {celerp-2.2.0 → celerp-2.3.0}/celerp/migrations/versions/e4f5a6b7c8d9_backfill_connector_idempotency_key.py +0 -0
  143. {celerp-2.2.0 → celerp-2.3.0}/celerp/migrations/versions/e7c9a1b3d5f2_work_center_default_columns.py +0 -0
  144. {celerp-2.2.0 → celerp-2.3.0}/celerp/migrations/versions/f1a2b3c4d5e6_move_accounts_marketplace_to_modules.py +0 -0
  145. {celerp-2.2.0 → celerp-2.3.0}/celerp/migrations/versions/f6a7b8c9d0e1_seed_fx_rounding_account.py +0 -0
  146. {celerp-2.2.0 → celerp-2.3.0}/celerp/migrations/versions/f8a9b0c1d2e3_work_center_default_backfill.py +0 -0
  147. {celerp-2.2.0 → celerp-2.3.0}/celerp/migrations/versions/fd5de461e14e_initial_schema.py +0 -0
  148. {celerp-2.2.0 → celerp-2.3.0}/celerp/migrations/versions/g1h2i3j4k5l6_add_consignment_flag.py +0 -0
  149. {celerp-2.2.0 → celerp-2.3.0}/celerp/migrations/versions/h2i3j4k5l6m7_add_bank_accounts_and_reconciliation.py +0 -0
  150. {celerp-2.2.0 → celerp-2.3.0}/celerp/migrations/versions/j4k5l6m7n8o9_labels_db_persistence.py +0 -0
  151. {celerp-2.2.0 → celerp-2.3.0}/celerp/migrations/versions/k5l6m7n8o9p0_add_reconciliation_v2.py +0 -0
  152. {celerp-2.2.0 → celerp-2.3.0}/celerp/migrations/versions/l6m7n8o9p0q1_add_sync_runs_table.py +0 -0
  153. {celerp-2.2.0 → celerp-2.3.0}/celerp/migrations/versions/m7n8o9p0q1r2_add_connector_configs_and_outbound_queue.py +0 -0
  154. {celerp-2.2.0 → celerp-2.3.0}/celerp/migrations/versions/n8o9p0q1r2s3_backfill_payment_date.py +0 -0
  155. {celerp-2.2.0 → celerp-2.3.0}/celerp/migrations/versions/o9p0q1r2s3t4_backfill_item_price_fields.py +0 -0
  156. {celerp-2.2.0 → celerp-2.3.0}/celerp/migrations/versions/p1q2r3s4t5u6_add_session_registry_and_user_auth_state.py +0 -0
  157. {celerp-2.2.0 → celerp-2.3.0}/celerp/migrations/versions/q2r3s4t5u6v7_add_system_runtime_state.py +0 -0
  158. {celerp-2.2.0 → celerp-2.3.0}/celerp/migrations/versions/r3s4t5u6v7w8_add_projections_company_entity_type_index.py +0 -0
  159. {celerp-2.2.0 → celerp-2.3.0}/celerp/migrations/versions/s4t5u6v7w8x9_drop_user_company_id_role.py +0 -0
  160. {celerp-2.2.0 → celerp-2.3.0}/celerp/migrations/versions/t5u6v7w8x9y0_seed_inventory_sub_accounts.py +0 -0
  161. {celerp-2.2.0 → celerp-2.3.0}/celerp/migrations/versions/u6v7w8x9y0z1_backfill_item_prices_from_attributes.py +0 -0
  162. {celerp-2.2.0 → celerp-2.3.0}/celerp/migrations/versions/v7w8x9y0z1a2_backfill_purchase_unit_defaults.py +0 -0
  163. {celerp-2.2.0 → celerp-2.3.0}/celerp/migrations/versions/w8x9y0z1a2b3_backfill_category_unit_defaults.py +0 -0
  164. {celerp-2.2.0 → celerp-2.3.0}/celerp/migrations/versions/x7y8z9a0b1c2_add_projection_created_at.py +0 -0
  165. {celerp-2.2.0 → celerp-2.3.0}/celerp/migrations/versions/y8z9a0b1c2d3_per_company_ledger_idempotency.py +0 -0
  166. {celerp-2.2.0 → celerp-2.3.0}/celerp/migrations/versions/z9a0b1c2d3e4_work_centers.py +0 -0
  167. {celerp-2.2.0 → celerp-2.3.0}/celerp/models/__init__.py +0 -0
  168. {celerp-2.2.0 → celerp-2.3.0}/celerp/models/accounting.py +0 -0
  169. {celerp-2.2.0 → celerp-2.3.0}/celerp/models/ai.py +0 -0
  170. {celerp-2.2.0 → celerp-2.3.0}/celerp/models/auth.py +0 -0
  171. {celerp-2.2.0 → celerp-2.3.0}/celerp/models/base.py +0 -0
  172. {celerp-2.2.0 → celerp-2.3.0}/celerp/models/company.py +0 -0
  173. {celerp-2.2.0 → celerp-2.3.0}/celerp/models/connector_config.py +0 -0
  174. {celerp-2.2.0 → celerp-2.3.0}/celerp/models/import_batch.py +0 -0
  175. {celerp-2.2.0 → celerp-2.3.0}/celerp/models/ledger.py +0 -0
  176. {celerp-2.2.0 → celerp-2.3.0}/celerp/models/marketplace.py +0 -0
  177. {celerp-2.2.0 → celerp-2.3.0}/celerp/models/notification.py +0 -0
  178. {celerp-2.2.0 → celerp-2.3.0}/celerp/models/projections.py +0 -0
  179. {celerp-2.2.0 → celerp-2.3.0}/celerp/models/share.py +0 -0
  180. {celerp-2.2.0 → celerp-2.3.0}/celerp/models/supporter.py +0 -0
  181. {celerp-2.2.0 → celerp-2.3.0}/celerp/models/sync_run.py +0 -0
  182. {celerp-2.2.0 → celerp-2.3.0}/celerp/modules/__init__.py +0 -0
  183. {celerp-2.2.0 → celerp-2.3.0}/celerp/modules/api.py +0 -0
  184. {celerp-2.2.0 → celerp-2.3.0}/celerp/modules/audit.py +0 -0
  185. {celerp-2.2.0 → celerp-2.3.0}/celerp/modules/demotion.py +0 -0
  186. {celerp-2.2.0 → celerp-2.3.0}/celerp/modules/importer.py +0 -0
  187. {celerp-2.2.0 → celerp-2.3.0}/celerp/modules/license.py +0 -0
  188. {celerp-2.2.0 → celerp-2.3.0}/celerp/modules/meta.py +0 -0
  189. {celerp-2.2.0 → celerp-2.3.0}/celerp/modules/migrations_runner.py +0 -0
  190. {celerp-2.2.0 → celerp-2.3.0}/celerp/modules/references.py +0 -0
  191. {celerp-2.2.0 → celerp-2.3.0}/celerp/modules/registry.py +0 -0
  192. {celerp-2.2.0 → celerp-2.3.0}/celerp/modules/slots.py +0 -0
  193. {celerp-2.2.0 → celerp-2.3.0}/celerp/notifications/__init__.py +0 -0
  194. {celerp-2.2.0 → celerp-2.3.0}/celerp/notifications/service.py +0 -0
  195. {celerp-2.2.0 → celerp-2.3.0}/celerp/notifications/sse.py +0 -0
  196. {celerp-2.2.0 → celerp-2.3.0}/celerp/output/__init__.py +0 -0
  197. {celerp-2.2.0 → celerp-2.3.0}/celerp/output/branding.py +0 -0
  198. {celerp-2.2.0 → celerp-2.3.0}/celerp/output/doc_print.py +0 -0
  199. {celerp-2.2.0 → celerp-2.3.0}/celerp/output/share_render.py +0 -0
  200. {celerp-2.2.0 → celerp-2.3.0}/celerp/projections/__init__.py +0 -0
  201. {celerp-2.2.0 → celerp-2.3.0}/celerp/projections/engine.py +0 -0
  202. {celerp-2.2.0 → celerp-2.3.0}/celerp/projections/handlers/__init__.py +0 -0
  203. {celerp-2.2.0 → celerp-2.3.0}/celerp/projections/handlers/marketplace.py +0 -0
  204. {celerp-2.2.0 → celerp-2.3.0}/celerp/projections/handlers/scanning.py +0 -0
  205. {celerp-2.2.0 → celerp-2.3.0}/celerp/projections/handlers/shopify.py +0 -0
  206. {celerp-2.2.0 → celerp-2.3.0}/celerp/projections/handlers/system.py +0 -0
  207. {celerp-2.2.0 → celerp-2.3.0}/celerp/routers/__init__.py +0 -0
  208. {celerp-2.2.0 → celerp-2.3.0}/celerp/routers/auth.py +0 -0
  209. {celerp-2.2.0 → celerp-2.3.0}/celerp/routers/companies.py +0 -0
  210. {celerp-2.2.0 → celerp-2.3.0}/celerp/routers/debug.py +0 -0
  211. {celerp-2.2.0 → celerp-2.3.0}/celerp/routers/events.py +0 -0
  212. {celerp-2.2.0 → celerp-2.3.0}/celerp/routers/health.py +0 -0
  213. {celerp-2.2.0 → celerp-2.3.0}/celerp/routers/ledger.py +0 -0
  214. {celerp-2.2.0 → celerp-2.3.0}/celerp/routers/notifications.py +0 -0
  215. {celerp-2.2.0 → celerp-2.3.0}/celerp/routers/stars.py +0 -0
  216. {celerp-2.2.0 → celerp-2.3.0}/celerp/routers/system.py +0 -0
  217. {celerp-2.2.0 → celerp-2.3.0}/celerp/schemas/__init__.py +0 -0
  218. {celerp-2.2.0 → celerp-2.3.0}/celerp/services/__init__.py +0 -0
  219. {celerp-2.2.0 → celerp-2.3.0}/celerp/services/activity_redaction.py +0 -0
  220. {celerp-2.2.0 → celerp-2.3.0}/celerp/services/attachments.py +0 -0
  221. {celerp-2.2.0 → celerp-2.3.0}/celerp/services/auth.py +0 -0
  222. {celerp-2.2.0 → celerp-2.3.0}/celerp/services/backup.py +0 -0
  223. {celerp-2.2.0 → celerp-2.3.0}/celerp/services/backup_export.py +0 -0
  224. {celerp-2.2.0 → celerp-2.3.0}/celerp/services/backup_import.py +0 -0
  225. {celerp-2.2.0 → celerp-2.3.0}/celerp/services/backup_repo.py +0 -0
  226. {celerp-2.2.0 → celerp-2.3.0}/celerp/services/backup_scheduler.py +0 -0
  227. {celerp-2.2.0 → celerp-2.3.0}/celerp/services/backup_state.py +0 -0
  228. {celerp-2.2.0 → celerp-2.3.0}/celerp/services/cost_visibility.py +0 -0
  229. {celerp-2.2.0 → celerp-2.3.0}/celerp/services/demo.py +0 -0
  230. {celerp-2.2.0 → celerp-2.3.0}/celerp/services/dev_release_guard.py +0 -0
  231. {celerp-2.2.0 → celerp-2.3.0}/celerp/services/email.py +0 -0
  232. {celerp-2.2.0 → celerp-2.3.0}/celerp/services/field_schema.py +0 -0
  233. {celerp-2.2.0 → celerp-2.3.0}/celerp/services/fulfill.py +0 -0
  234. {celerp-2.2.0 → celerp-2.3.0}/celerp/services/je_keys.py +0 -0
  235. {celerp-2.2.0 → celerp-2.3.0}/celerp/services/landed_cost.py +0 -0
  236. {celerp-2.2.0 → celerp-2.3.0}/celerp/services/money.py +0 -0
  237. {celerp-2.2.0 → celerp-2.3.0}/celerp/services/payments.py +0 -0
  238. {celerp-2.2.0 → celerp-2.3.0}/celerp/services/permissions.py +0 -0
  239. {celerp-2.2.0 → celerp-2.3.0}/celerp/services/pricing.py +0 -0
  240. {celerp-2.2.0 → celerp-2.3.0}/celerp/services/relay_share.py +0 -0
  241. {celerp-2.2.0 → celerp-2.3.0}/celerp/services/reorder.py +0 -0
  242. {celerp-2.2.0 → celerp-2.3.0}/celerp/services/runtime_state.py +0 -0
  243. {celerp-2.2.0 → celerp-2.3.0}/celerp/services/session_tracker.py +0 -0
  244. {celerp-2.2.0 → celerp-2.3.0}/celerp/services/shipping.py +0 -0
  245. {celerp-2.2.0 → celerp-2.3.0}/celerp/services/star_cta.py +0 -0
  246. {celerp-2.2.0 → celerp-2.3.0}/celerp/services/status_doc_backfill.py +0 -0
  247. {celerp-2.2.0 → celerp-2.3.0}/celerp/services/supporter_badge.py +0 -0
  248. {celerp-2.2.0 → celerp-2.3.0}/celerp/services/system_health.py +0 -0
  249. {celerp-2.2.0 → celerp-2.3.0}/celerp/services/units.py +0 -0
  250. {celerp-2.2.0 → celerp-2.3.0}/celerp/session_gate.py +0 -0
  251. {celerp-2.2.0 → celerp-2.3.0}/celerp/tax_regimes.py +0 -0
  252. {celerp-2.2.0 → celerp-2.3.0}/celerp.egg-info/dependency_links.txt +0 -0
  253. {celerp-2.2.0 → celerp-2.3.0}/celerp.egg-info/entry_points.txt +0 -0
  254. {celerp-2.2.0 → celerp-2.3.0}/celerp.egg-info/requires.txt +0 -0
  255. {celerp-2.2.0 → celerp-2.3.0}/celerp.egg-info/top_level.txt +0 -0
  256. {celerp-2.2.0 → celerp-2.3.0}/default_modules/__init__.py +0 -0
  257. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-accounting/LICENSE +0 -0
  258. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-accounting/__init__.py +0 -0
  259. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-accounting/celerp_accounting/__init__.py +0 -0
  260. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-accounting/celerp_accounting/api_setup.py +0 -0
  261. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-accounting/celerp_accounting/csv_parser.py +0 -0
  262. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-accounting/celerp_accounting/matcher.py +0 -0
  263. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-accounting/celerp_accounting/models.py +0 -0
  264. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-accounting/celerp_accounting/projections.py +0 -0
  265. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-accounting/celerp_accounting/ui_routes.py +0 -0
  266. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-accounting/tests/report_goldens/balance-sheet.html +0 -0
  267. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-accounting/tests/report_goldens/cash-flow.html +0 -0
  268. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-accounting/tests/report_goldens/extended-journal-csv.csv +0 -0
  269. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-accounting/tests/report_goldens/extended-journal-print.html +0 -0
  270. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-accounting/tests/report_goldens/extended-journal.html +0 -0
  271. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-accounting/tests/report_goldens/general-ledger.html +0 -0
  272. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-accounting/tests/report_goldens/journal-csv.csv +0 -0
  273. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-accounting/tests/report_goldens/journal-print.html +0 -0
  274. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-accounting/tests/report_goldens/journal.html +0 -0
  275. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-accounting/tests/report_goldens/ledger.html +0 -0
  276. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-accounting/tests/report_goldens/pnl.html +0 -0
  277. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-accounting/tests/report_goldens/statement.html +0 -0
  278. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-accounting/tests/report_goldens/trial-balance.html +0 -0
  279. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-accounting/tests/test_accounting_banking.py +0 -0
  280. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-accounting/tests/test_accounting_banking_routers.py +0 -0
  281. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-accounting/tests/test_accounting_gaps.py +0 -0
  282. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-accounting/tests/test_accounting_import_idempotency.py +0 -0
  283. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-accounting/tests/test_cash_flow.py +0 -0
  284. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-accounting/tests/test_financial_reports_ui.py +0 -0
  285. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-accounting/tests/test_journal_gl_soa.py +0 -0
  286. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-accounting/tests/test_journal_gl_soa_ui.py +0 -0
  287. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-accounting/tests/test_reconciliation_v2.py +0 -0
  288. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-accounting/tests/test_reports_end_to_end.py +0 -0
  289. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-accounting/tests/test_route_permissions.py +0 -0
  290. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-admin/__init__.py +0 -0
  291. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-admin/celerp_admin/__init__.py +0 -0
  292. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-admin/celerp_admin/setup.py +0 -0
  293. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-ai/__init__.py +0 -0
  294. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-ai/celerp_ai/__init__.py +0 -0
  295. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-ai/celerp_ai/routes.py +0 -0
  296. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-ai/celerp_ai/setup.py +0 -0
  297. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-ai/celerp_ai/ui_routes.py +0 -0
  298. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-ai/tests/conftest.py +0 -0
  299. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-ai/tests/test_batch.py +0 -0
  300. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-ai/tests/test_cleanup.py +0 -0
  301. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-ai/tests/test_conversations.py +0 -0
  302. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-ai/tests/test_coverage_gaps.py +0 -0
  303. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-ai/tests/test_intent.py +0 -0
  304. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-ai/tests/test_llm.py +0 -0
  305. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-ai/tests/test_memory.py +0 -0
  306. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-ai/tests/test_models.py +0 -0
  307. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-ai/tests/test_page_count.py +0 -0
  308. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-ai/tests/test_quota.py +0 -0
  309. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-ai/tests/test_router.py +0 -0
  310. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-ai/tests/test_routes_coverage.py +0 -0
  311. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-ai/tests/test_service.py +0 -0
  312. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-ai/tests/test_tools.py +0 -0
  313. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-backup/__init__.py +0 -0
  314. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-backup/celerp_backup/__init__.py +0 -0
  315. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-backup/celerp_backup/routes.py +0 -0
  316. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-backup/celerp_backup/setup.py +0 -0
  317. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-connectors/__init__.py +0 -0
  318. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-connectors/celerp_connectors/__init__.py +0 -0
  319. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-connectors/celerp_connectors/models.py +0 -0
  320. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-connectors/celerp_connectors/routes.py +0 -0
  321. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-connectors/tests/__init__.py +0 -0
  322. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-connectors/tests/conftest.py +0 -0
  323. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-connectors/tests/test_compliance.py +0 -0
  324. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-connectors/tests/test_connector_correctness.py +0 -0
  325. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-connectors/tests/test_connectors.py +0 -0
  326. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-connectors/tests/test_credentials_routes.py +0 -0
  327. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-connectors/tests/test_images.py +0 -0
  328. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-connectors/tests/test_outbound.py +0 -0
  329. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-connectors/tests/test_quickbooks.py +0 -0
  330. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-connectors/tests/test_rate_limiting.py +0 -0
  331. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-connectors/tests/test_shopify.py +0 -0
  332. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-connectors/tests/test_wiring.py +0 -0
  333. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-connectors/tests/test_woocommerce.py +0 -0
  334. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-connectors/tests/test_woocommerce_webhooks.py +0 -0
  335. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-connectors/tests/test_xero.py +0 -0
  336. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-contacts/LICENSE +0 -0
  337. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-contacts/__init__.py +0 -0
  338. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-contacts/celerp_contacts/__init__.py +0 -0
  339. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-contacts/celerp_contacts/migrations.py +0 -0
  340. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-contacts/celerp_contacts/projections.py +0 -0
  341. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-contacts/celerp_contacts/routes.py +0 -0
  342. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-contacts/celerp_contacts/services.py +0 -0
  343. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-contacts/celerp_contacts/ui_routes.py +0 -0
  344. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-dashboard/LICENSE +0 -0
  345. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-dashboard/__init__.py +0 -0
  346. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-dashboard/celerp_dashboard/__init__.py +0 -0
  347. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-dashboard/celerp_dashboard/setup.py +0 -0
  348. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-docs/LICENSE +0 -0
  349. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-docs/__init__.py +0 -0
  350. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-docs/celerp_docs/__init__.py +0 -0
  351. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-docs/celerp_docs/api_setup.py +0 -0
  352. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-docs/celerp_docs/doc_constants.py +0 -0
  353. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-docs/celerp_docs/doc_email.py +0 -0
  354. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-docs/celerp_docs/doc_projections.py +0 -0
  355. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-docs/celerp_docs/doc_service.py +0 -0
  356. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-docs/celerp_docs/models_share.py +0 -0
  357. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-docs/celerp_docs/routes_payments.py +0 -0
  358. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-docs/celerp_docs/routes_share.py +0 -0
  359. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-docs/celerp_docs/taxes.py +0 -0
  360. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-docs/celerp_docs/ui_routes.py +0 -0
  361. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-docs/tests/conftest.py +0 -0
  362. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-docs/tests/test_audits.py +0 -0
  363. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-docs/tests/test_freight_je.py +0 -0
  364. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-docs/tests/test_freight_lines.py +0 -0
  365. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-docs/tests/test_fulfillment_activity.py +0 -0
  366. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-docs/tests/test_inbound_je_lifecycle.py +0 -0
  367. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-docs/tests/test_landed_receive.py +0 -0
  368. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-docs/tests/test_line_delete_persist.py +0 -0
  369. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-docs/tests/test_line_identifier.py +0 -0
  370. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-docs/tests/test_payment_void_activity.py +0 -0
  371. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-docs/tests/test_receive_sku_batch.py +0 -0
  372. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-docs/tests/test_send_visibility.py +0 -0
  373. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-docs/tests/test_service_lines.py +0 -0
  374. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-docs/tests/test_void_guards.py +0 -0
  375. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-inventory/LICENSE +0 -0
  376. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-inventory/celerp_inventory/__init__.py +0 -0
  377. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-inventory/celerp_inventory/models_import_batch.py +0 -0
  378. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-inventory/celerp_inventory/routes_attachments.py +0 -0
  379. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-inventory/celerp_inventory/routes_scanning.py +0 -0
  380. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-inventory/celerp_inventory/services.py +0 -0
  381. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-inventory/celerp_inventory/ui_routes.py +0 -0
  382. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-inventory/tests/test_item_recipe_projection.py +0 -0
  383. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-inventory/tests/test_item_workflow_projection.py +0 -0
  384. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-inventory/tests/test_landed_cost_projection.py +0 -0
  385. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-labels/LICENSE +0 -0
  386. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-labels/__init__.py +0 -0
  387. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-labels/celerp_labels/__init__.py +0 -0
  388. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-labels/celerp_labels/models.py +0 -0
  389. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-labels/celerp_labels/presets.py +0 -0
  390. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-labels/celerp_labels/routes.py +0 -0
  391. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-labels/celerp_labels/service.py +0 -0
  392. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-labels/celerp_labels/ui_routes.py +0 -0
  393. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-labels/requirements.txt +0 -0
  394. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-labels/tests/test_labels.py +0 -0
  395. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-labels/tests/test_labels_module.py +0 -0
  396. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-manufacturing/LICENSE +0 -0
  397. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-manufacturing/__init__.py +0 -0
  398. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-manufacturing/celerp_manufacturing/__init__.py +0 -0
  399. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-manufacturing/celerp_manufacturing/costing.py +0 -0
  400. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-manufacturing/celerp_manufacturing/expansion.py +0 -0
  401. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-manufacturing/celerp_manufacturing/labor.py +0 -0
  402. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-manufacturing/celerp_manufacturing/migrations.py +0 -0
  403. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-manufacturing/celerp_manufacturing/ui_routes.py +0 -0
  404. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-manufacturing/requirements.txt +0 -0
  405. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-manufacturing/tests/test_auto_complete_on_finalize.py +0 -0
  406. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-manufacturing/tests/test_bom_removed.py +0 -0
  407. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-manufacturing/tests/test_item_recipe_api.py +0 -0
  408. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-manufacturing/tests/test_item_workflow_api.py +0 -0
  409. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-manufacturing/tests/test_labor_providers.py +0 -0
  410. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-manufacturing/tests/test_manufacturing_import_idempotency.py +0 -0
  411. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-manufacturing/tests/test_manufacturing_module.py +0 -0
  412. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-manufacturing/tests/test_mfg_events.py +0 -0
  413. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-manufacturing/tests/test_phase2_manufacturing_validations.py +0 -0
  414. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-manufacturing/tests/test_production_order.py +0 -0
  415. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-manufacturing/tests/test_recipe_costing.py +0 -0
  416. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-manufacturing/tests/test_recipe_expansion.py +0 -0
  417. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-manufacturing/tests/test_recost_api.py +0 -0
  418. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-manufacturing/tests/test_where_used.py +0 -0
  419. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-manufacturing/tests/test_work_centers_and_settings.py +0 -0
  420. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-manufacturing/tests/test_workflow_time.py +0 -0
  421. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-reports/LICENSE +0 -0
  422. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-reports/__init__.py +0 -0
  423. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-reports/celerp_reports/__init__.py +0 -0
  424. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-reports/celerp_reports/api_setup.py +0 -0
  425. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-reports/celerp_reports/routes.py +0 -0
  426. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-reports/celerp_reports/ui_routes.py +0 -0
  427. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-reports/tests/test_reports_full.py +0 -0
  428. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-reports/tests/test_reports_unit.py +0 -0
  429. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-subscriptions/LICENSE +0 -0
  430. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-subscriptions/__init__.py +0 -0
  431. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-subscriptions/celerp_subscriptions/__init__.py +0 -0
  432. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-subscriptions/celerp_subscriptions/routes.py +0 -0
  433. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-subscriptions/celerp_subscriptions/ui_routes.py +0 -0
  434. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-subscriptions/tests/test_subscriptions.py +0 -0
  435. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-subscriptions/tests/test_subscriptions_ui.py +0 -0
  436. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-verticals/LICENSE +0 -0
  437. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-verticals/__init__.py +0 -0
  438. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-verticals/celerp_verticals/__init__.py +0 -0
  439. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-verticals/celerp_verticals/categories/accessory_fashion.json +0 -0
  440. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-verticals/celerp_verticals/categories/activewear.json +0 -0
  441. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-verticals/celerp_verticals/categories/art_photography.json +0 -0
  442. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-verticals/celerp_verticals/categories/audio_equipment.json +0 -0
  443. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-verticals/celerp_verticals/categories/bag_handbag.json +0 -0
  444. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-verticals/celerp_verticals/categories/banknote.json +0 -0
  445. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-verticals/celerp_verticals/categories/beauty_tool.json +0 -0
  446. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-verticals/celerp_verticals/categories/bed_bedroom.json +0 -0
  447. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-verticals/celerp_verticals/categories/beer.json +0 -0
  448. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-verticals/celerp_verticals/categories/beverage_nonalc.json +0 -0
  449. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-verticals/celerp_verticals/categories/body_part_auto.json +0 -0
  450. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-verticals/celerp_verticals/categories/book.json +0 -0
  451. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-verticals/celerp_verticals/categories/bottoms.json +0 -0
  452. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-verticals/celerp_verticals/categories/brake_suspension.json +0 -0
  453. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-verticals/celerp_verticals/categories/bullion_coin.json +0 -0
  454. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-verticals/celerp_verticals/categories/camera.json +0 -0
  455. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-verticals/celerp_verticals/categories/colored_stone.json +0 -0
  456. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-verticals/celerp_verticals/categories/comic.json +0 -0
  457. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-verticals/celerp_verticals/categories/commercial_space.json +0 -0
  458. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-verticals/celerp_verticals/categories/component_part.json +0 -0
  459. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-verticals/celerp_verticals/categories/confectionery.json +0 -0
  460. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-verticals/celerp_verticals/categories/consulting_service.json +0 -0
  461. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-verticals/celerp_verticals/categories/decorative_art.json +0 -0
  462. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-verticals/celerp_verticals/categories/diamond.json +0 -0
  463. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-verticals/celerp_verticals/categories/drawing.json +0 -0
  464. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-verticals/celerp_verticals/categories/dress_jumpsuit.json +0 -0
  465. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-verticals/celerp_verticals/categories/electrical_auto.json +0 -0
  466. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-verticals/celerp_verticals/categories/electrical_component.json +0 -0
  467. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-verticals/celerp_verticals/categories/emerald.json +0 -0
  468. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-verticals/celerp_verticals/categories/engine_part.json +0 -0
  469. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-verticals/celerp_verticals/categories/fastener.json +0 -0
  470. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-verticals/celerp_verticals/categories/fertilizer_chemical.json +0 -0
  471. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-verticals/celerp_verticals/categories/film_video.json +0 -0
  472. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-verticals/celerp_verticals/categories/fine_writing_instrument.json +0 -0
  473. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-verticals/celerp_verticals/categories/fluid_lubricant.json +0 -0
  474. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-verticals/celerp_verticals/categories/footwear.json +0 -0
  475. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-verticals/celerp_verticals/categories/fragrance.json +0 -0
  476. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-verticals/celerp_verticals/categories/fresh_food.json +0 -0
  477. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-verticals/celerp_verticals/categories/fresh_produce.json +0 -0
  478. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-verticals/celerp_verticals/categories/frozen_food.json +0 -0
  479. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-verticals/celerp_verticals/categories/gaming_console.json +0 -0
  480. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-verticals/celerp_verticals/categories/gold_bullion.json +0 -0
  481. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-verticals/celerp_verticals/categories/grain_cereal.json +0 -0
  482. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-verticals/celerp_verticals/categories/haircare.json +0 -0
  483. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-verticals/celerp_verticals/categories/hand_tool.json +0 -0
  484. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-verticals/celerp_verticals/categories/ingredient_bulk.json +0 -0
  485. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-verticals/celerp_verticals/categories/interior_part.json +0 -0
  486. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-verticals/celerp_verticals/categories/jewelry.json +0 -0
  487. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-verticals/celerp_verticals/categories/kitchen_dining.json +0 -0
  488. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-verticals/celerp_verticals/categories/laptop.json +0 -0
  489. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-verticals/celerp_verticals/categories/lighting.json +0 -0
  490. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-verticals/celerp_verticals/categories/livestock_feed.json +0 -0
  491. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-verticals/celerp_verticals/categories/makeup.json +0 -0
  492. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-verticals/celerp_verticals/categories/measuring_instrument.json +0 -0
  493. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-verticals/celerp_verticals/categories/medal_token.json +0 -0
  494. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-verticals/celerp_verticals/categories/mineral_specimen.json +0 -0
  495. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-verticals/celerp_verticals/categories/mobile_phone.json +0 -0
  496. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-verticals/celerp_verticals/categories/music_cd.json +0 -0
  497. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-verticals/celerp_verticals/categories/music_vinyl.json +0 -0
  498. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-verticals/celerp_verticals/categories/nail.json +0 -0
  499. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-verticals/celerp_verticals/categories/numismatic_coin.json +0 -0
  500. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-verticals/celerp_verticals/categories/outdoor_furniture.json +0 -0
  501. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-verticals/celerp_verticals/categories/outerwear.json +0 -0
  502. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-verticals/celerp_verticals/categories/packaged_food.json +0 -0
  503. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-verticals/celerp_verticals/categories/painting.json +0 -0
  504. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-verticals/celerp_verticals/categories/parking_bay.json +0 -0
  505. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-verticals/celerp_verticals/categories/pearl.json +0 -0
  506. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-verticals/celerp_verticals/categories/personal_care.json +0 -0
  507. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-verticals/celerp_verticals/categories/pipe_plumbing.json +0 -0
  508. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-verticals/celerp_verticals/categories/platinum_bullion.json +0 -0
  509. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-verticals/celerp_verticals/categories/power_tool.json +0 -0
  510. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-verticals/celerp_verticals/categories/print_edition.json +0 -0
  511. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-verticals/celerp_verticals/categories/residential_unit.json +0 -0
  512. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-verticals/celerp_verticals/categories/rough_gemstone.json +0 -0
  513. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-verticals/celerp_verticals/categories/ruby.json +0 -0
  514. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-verticals/celerp_verticals/categories/saas_plan.json +0 -0
  515. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-verticals/celerp_verticals/categories/safety_ppe.json +0 -0
  516. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-verticals/celerp_verticals/categories/sapphire.json +0 -0
  517. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-verticals/celerp_verticals/categories/sculpture.json +0 -0
  518. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-verticals/celerp_verticals/categories/seating.json +0 -0
  519. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-verticals/celerp_verticals/categories/seeds.json +0 -0
  520. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-verticals/celerp_verticals/categories/silver_bullion.json +0 -0
  521. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-verticals/celerp_verticals/categories/skincare.json +0 -0
  522. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-verticals/celerp_verticals/categories/soft_furnishing.json +0 -0
  523. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-verticals/celerp_verticals/categories/software_addon.json +0 -0
  524. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-verticals/celerp_verticals/categories/software_license.json +0 -0
  525. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-verticals/celerp_verticals/categories/spirit.json +0 -0
  526. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-verticals/celerp_verticals/categories/storage_furniture.json +0 -0
  527. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-verticals/celerp_verticals/categories/swimwear.json +0 -0
  528. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-verticals/celerp_verticals/categories/table_desk.json +0 -0
  529. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-verticals/celerp_verticals/categories/tablet.json +0 -0
  530. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-verticals/celerp_verticals/categories/tire_wheel.json +0 -0
  531. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-verticals/celerp_verticals/categories/tops.json +0 -0
  532. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-verticals/celerp_verticals/categories/trading_card.json +0 -0
  533. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-verticals/celerp_verticals/categories/tv_display.json +0 -0
  534. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-verticals/celerp_verticals/categories/video_game.json +0 -0
  535. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-verticals/celerp_verticals/categories/watch.json +0 -0
  536. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-verticals/celerp_verticals/categories/watch_strap.json +0 -0
  537. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-verticals/celerp_verticals/categories/wine.json +0 -0
  538. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-verticals/celerp_verticals/presets/agricultural.json +0 -0
  539. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-verticals/celerp_verticals/presets/artwork.json +0 -0
  540. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-verticals/celerp_verticals/presets/automotive.json +0 -0
  541. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-verticals/celerp_verticals/presets/blank.json +0 -0
  542. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-verticals/celerp_verticals/presets/books_media.json +0 -0
  543. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-verticals/celerp_verticals/presets/coins_precious_metals.json +0 -0
  544. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-verticals/celerp_verticals/presets/consulting.json +0 -0
  545. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-verticals/celerp_verticals/presets/cosmetics.json +0 -0
  546. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-verticals/celerp_verticals/presets/electronics.json +0 -0
  547. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-verticals/celerp_verticals/presets/fashion.json +0 -0
  548. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-verticals/celerp_verticals/presets/food_beverage.json +0 -0
  549. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-verticals/celerp_verticals/presets/furniture.json +0 -0
  550. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-verticals/celerp_verticals/presets/gemstones.json +0 -0
  551. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-verticals/celerp_verticals/presets/hardware.json +0 -0
  552. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-verticals/celerp_verticals/presets/property_rental.json +0 -0
  553. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-verticals/celerp_verticals/presets/saas.json +0 -0
  554. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-verticals/celerp_verticals/presets/watches.json +0 -0
  555. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-verticals/celerp_verticals/presets/wine_spirits.json +0 -0
  556. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-verticals/celerp_verticals/routes.py +0 -0
  557. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-verticals/celerp_verticals/ui_routes.py +0 -0
  558. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-verticals/tests/test_verticals.py +0 -0
  559. {celerp-2.2.0 → celerp-2.3.0}/default_modules/celerp-verticals/tests/test_verticals_routers.py +0 -0
  560. {celerp-2.2.0 → celerp-2.3.0}/legal/OFFICIAL-COMPONENTS.md +0 -0
  561. {celerp-2.2.0 → celerp-2.3.0}/legal/TRADEMARK.md +0 -0
  562. {celerp-2.2.0 → celerp-2.3.0}/packaging/winget/Celerp.Celerp.installer.yaml +0 -0
  563. {celerp-2.2.0 → celerp-2.3.0}/packaging/winget/Celerp.Celerp.locale.en-US.yaml +0 -0
  564. {celerp-2.2.0 → celerp-2.3.0}/packaging/winget/Celerp.Celerp.yaml +0 -0
  565. {celerp-2.2.0 → celerp-2.3.0}/packaging/winget/README.md +0 -0
  566. {celerp-2.2.0 → celerp-2.3.0}/pyproject.toml +0 -0
  567. {celerp-2.2.0 → celerp-2.3.0}/setup.cfg +0 -0
  568. {celerp-2.2.0 → celerp-2.3.0}/test_helpers.py +0 -0
  569. {celerp-2.2.0 → celerp-2.3.0}/ui/__init__.py +0 -0
  570. {celerp-2.2.0 → celerp-2.3.0}/ui/app.py +0 -0
  571. {celerp-2.2.0 → celerp-2.3.0}/ui/components/__init__.py +0 -0
  572. {celerp-2.2.0 → celerp-2.3.0}/ui/components/activity.py +0 -0
  573. {celerp-2.2.0 → celerp-2.3.0}/ui/components/attrs.py +0 -0
  574. {celerp-2.2.0 → celerp-2.3.0}/ui/components/backup.py +0 -0
  575. {celerp-2.2.0 → celerp-2.3.0}/ui/components/cloud_gate.py +0 -0
  576. {celerp-2.2.0 → celerp-2.3.0}/ui/components/currency.py +0 -0
  577. {celerp-2.2.0 → celerp-2.3.0}/ui/components/files.py +0 -0
  578. {celerp-2.2.0 → celerp-2.3.0}/ui/components/journal.py +0 -0
  579. {celerp-2.2.0 → celerp-2.3.0}/ui/components/notes.py +0 -0
  580. {celerp-2.2.0 → celerp-2.3.0}/ui/components/phone.py +0 -0
  581. {celerp-2.2.0 → celerp-2.3.0}/ui/components/report_kit.py +0 -0
  582. {celerp-2.2.0 → celerp-2.3.0}/ui/config.py +0 -0
  583. {celerp-2.2.0 → celerp-2.3.0}/ui/marketplace_catalog.py +0 -0
  584. {celerp-2.2.0 → celerp-2.3.0}/ui/routes/__init__.py +0 -0
  585. {celerp-2.2.0 → celerp-2.3.0}/ui/routes/account.py +0 -0
  586. {celerp-2.2.0 → celerp-2.3.0}/ui/routes/accounting.py +0 -0
  587. {celerp-2.2.0 → celerp-2.3.0}/ui/routes/accounting_import.py +0 -0
  588. {celerp-2.2.0 → celerp-2.3.0}/ui/routes/auth.py +0 -0
  589. {celerp-2.2.0 → celerp-2.3.0}/ui/routes/contacts.py +0 -0
  590. {celerp-2.2.0 → celerp-2.3.0}/ui/routes/csv_import.py +0 -0
  591. {celerp-2.2.0 → celerp-2.3.0}/ui/routes/dashboard.py +0 -0
  592. {celerp-2.2.0 → celerp-2.3.0}/ui/routes/docs_import.py +0 -0
  593. {celerp-2.2.0 → celerp-2.3.0}/ui/routes/events.py +0 -0
  594. {celerp-2.2.0 → celerp-2.3.0}/ui/routes/financial_reports.py +0 -0
  595. {celerp-2.2.0 → celerp-2.3.0}/ui/routes/lists_import.py +0 -0
  596. {celerp-2.2.0 → celerp-2.3.0}/ui/routes/modules_page.py +0 -0
  597. {celerp-2.2.0 → celerp-2.3.0}/ui/routes/notifications.py +0 -0
  598. {celerp-2.2.0 → celerp-2.3.0}/ui/routes/reports.py +0 -0
  599. {celerp-2.2.0 → celerp-2.3.0}/ui/routes/settings_accounting.py +0 -0
  600. {celerp-2.2.0 → celerp-2.3.0}/ui/routes/settings_cloud.py +0 -0
  601. {celerp-2.2.0 → celerp-2.3.0}/ui/routes/settings_connectors.py +0 -0
  602. {celerp-2.2.0 → celerp-2.3.0}/ui/routes/settings_contacts.py +0 -0
  603. {celerp-2.2.0 → celerp-2.3.0}/ui/routes/settings_general.py +0 -0
  604. {celerp-2.2.0 → celerp-2.3.0}/ui/routes/settings_import.py +0 -0
  605. {celerp-2.2.0 → celerp-2.3.0}/ui/routes/settings_inventory.py +0 -0
  606. {celerp-2.2.0 → celerp-2.3.0}/ui/routes/settings_manufacturing.py +0 -0
  607. {celerp-2.2.0 → celerp-2.3.0}/ui/routes/settings_payments.py +0 -0
  608. {celerp-2.2.0 → celerp-2.3.0}/ui/routes/settings_purchasing.py +0 -0
  609. {celerp-2.2.0 → celerp-2.3.0}/ui/routes/settings_sales.py +0 -0
  610. {celerp-2.2.0 → celerp-2.3.0}/ui/routes/stars.py +0 -0
  611. {celerp-2.2.0 → celerp-2.3.0}/ui/routes/subscriptions.py +0 -0
  612. {celerp-2.2.0 → celerp-2.3.0}/ui/routes/subscriptions_import.py +0 -0
  613. {celerp-2.2.0 → celerp-2.3.0}/ui/security.py +0 -0
  614. {celerp-2.2.0 → celerp-2.3.0}/ui/static/htmx.min.js +0 -0
  615. {celerp-2.2.0 → celerp-2.3.0}/ui/static/icon.png +0 -0
  616. {celerp-2.2.0 → celerp-2.3.0}/ui/static/logo.png +0 -0
  617. {celerp-2.2.0 → celerp-2.3.0}/ui/static/vendor/intl-tel-input/img/flags.webp +0 -0
  618. {celerp-2.2.0 → celerp-2.3.0}/ui/static/vendor/intl-tel-input/img/flags@2x.webp +0 -0
  619. {celerp-2.2.0 → celerp-2.3.0}/ui/static/vendor/intl-tel-input/intlTelInput.min.css +0 -0
  620. {celerp-2.2.0 → celerp-2.3.0}/ui/static/vendor/intl-tel-input/intlTelInput.min.js +0 -0
  621. {celerp-2.2.0 → celerp-2.3.0}/ui/static/vendor/intl-tel-input/intlTelInputWithUtils.min.js +0 -0
  622. {celerp-2.2.0 → celerp-2.3.0}/ui/static/vendor/intl-tel-input/utils.js +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: celerp
3
- Version: 2.2.0
3
+ Version: 2.3.0
4
4
  Summary: Free, self-hosted ERP for small businesses
5
5
  License: Business Source License 1.1
6
6
 
@@ -117,6 +117,18 @@ class ItemExpired(BaseModel):
117
117
  reason: str | None = None
118
118
 
119
119
 
120
+ class ItemWrittenOff(BaseModel):
121
+ # A unit of stock leaving the company for a non-sale reason (spoilage, samples,
122
+ # drawings). reason/account live single-sourced on the write-off list; the item row
123
+ # only records that it is off the books and points back to that list via source_list_id.
124
+ account: str
125
+ qty: float
126
+ unit_cost: float
127
+ cost_total: float
128
+ reason: str | None = None
129
+ source_list_id: str | None = None
130
+
131
+
120
132
  class ItemSplit(BaseModel):
121
133
  # Aggregate marker on the MOTHER. The projection consumes child_ids/child_skus;
122
134
  # children_detail drives the per-child history rows (one row per child).
@@ -193,6 +205,14 @@ class ItemProduced(BaseModel):
193
205
  quantity_produced: float
194
206
 
195
207
 
208
+ class ItemCostAdjusted(BaseModel):
209
+ # Restate a lot's goods cost after the fact. Manufacturing re-costs a produced lot to the run's
210
+ # actual input cost once completion knows the true received quantity. cost_total is the new
211
+ # absolute cost_base; landed contributions rescale from it.
212
+ cost_total: float
213
+ manufacturing_order_id: str | None = None # the run that re-costed the lot (audit trail)
214
+
215
+
196
216
  # --- Manufacturing recipe (materials + labor + overhead) attached to an item ---
197
217
  # The recipe is the single source of truth for how a manufactured item is built.
198
218
  # Interpretation (cost roll-up, expansion) lives in celerp-manufacturing; the schema
@@ -710,8 +730,8 @@ class MfgOrderIssued(BaseModel):
710
730
 
711
731
 
712
732
  class MfgOrderReceived(BaseModel):
713
- # Finished goods received from a run. quantity restocks the output (per allow_splitting);
714
- # lot_item_id is set when a non-splittable output created a new lot under the product.
733
+ # Finished goods received from a run. quantity is received as a discrete lot under the product;
734
+ # lot_item_id is that lot's id.
715
735
  quantity: float
716
736
  lot_item_id: str | None = None
717
737
  received_by: str | None = None
@@ -1045,6 +1065,7 @@ EVENT_SCHEMA_MAP: dict[str, type[BaseModel]] = {
1045
1065
  "item.fulfilled": ItemFulfilled,
1046
1066
  "item.fulfillment_reversed": ItemFulfillmentReversed,
1047
1067
  "item.expired": ItemExpired,
1068
+ "item.written_off": ItemWrittenOff,
1048
1069
  "item.split": ItemSplit,
1049
1070
  "item.split_from": ItemSplitFrom,
1050
1071
  "item.transform": ItemTransform,
@@ -1054,6 +1075,7 @@ EVENT_SCHEMA_MAP: dict[str, type[BaseModel]] = {
1054
1075
  "item.patched": ItemPatched,
1055
1076
  "item.consumed": ItemConsumed,
1056
1077
  "item.produced": ItemProduced,
1078
+ "item.cost_adjusted": ItemCostAdjusted,
1057
1079
  "item.recipe.set": ItemRecipeSet,
1058
1080
  "item.workflow.set": ItemWorkflowSet,
1059
1081
  "item.reserved": ItemReserved,
@@ -15,6 +15,7 @@ class EventType(StrEnum):
15
15
  ITEM_TRANSFERRED = "item.transferred"
16
16
  ITEM_QUANTITY_ADJUSTED = "item.quantity.adjusted"
17
17
  ITEM_EXPIRED = "item.expired"
18
+ ITEM_WRITTEN_OFF = "item.written_off"
18
19
  ITEM_SPLIT = "item.split"
19
20
  ITEM_SPLIT_FROM = "item.split_from"
20
21
  ITEM_TRANSFORM = "item.transform"
@@ -22,6 +23,7 @@ class EventType(StrEnum):
22
23
  ITEM_MERGED = "item.merged"
23
24
  ITEM_CONSUMED = "item.consumed"
24
25
  ITEM_PRODUCED = "item.produced"
26
+ ITEM_COST_ADJUSTED = "item.cost_adjusted"
25
27
  ITEM_RECIPE_SET = "item.recipe.set"
26
28
  ITEM_WORKFLOW_SET = "item.workflow.set"
27
29
  ITEM_RESERVED = "item.reserved"
@@ -281,6 +281,22 @@ async def lifespan(_app: FastAPI):
281
281
  "may show their status without a document link until a later boot"
282
282
  )
283
283
 
284
+ # One-time backfill: post the missing COGS JE for invoices finalized before
285
+ # COGS moved into the finalize JE and never fulfilled since. Marker-gated
286
+ # (runs once; retries stragglers while any doc is locked or errored);
287
+ # non-fatal like the backfill above.
288
+ try:
289
+ from celerp.db import SessionLocal as _CogsSession
290
+ from celerp.services.cogs_backfill import run_cogs_backfill
291
+ async with _CogsSession() as _cogs_sess:
292
+ await run_cogs_backfill(_cogs_sess)
293
+ await _cogs_sess.commit()
294
+ except Exception:
295
+ logging.getLogger(__name__).exception(
296
+ "COGS backfill failed (non-fatal); affected invoices keep their "
297
+ "missing COGS until a later boot retries"
298
+ )
299
+
284
300
  # Bring up the relay tunnel per the lazy free-tier lifecycle (3.1). A token-holder
285
301
  # is past first activation and never re-enters it. Paid instances (public_url set)
286
302
  # keep the tunnel always-on; a free instance opens it at boot only when it already
@@ -549,6 +549,12 @@ def load_all(module_dir: str | Path, enabled: set[str]) -> list[dict]:
549
549
  """
550
550
  _loaded.clear()
551
551
  _load_errors.clear()
552
+ # Module-contributed i18n catalogs are rebuilt from scratch on every pass,
553
+ # exactly like _loaded above, so a re-scan (a module toggled off, or a
554
+ # catalog changed) never leaves a stale or orphaned catalog behind. Lazy
555
+ # import keeps ui.i18n the lowest leaf (it must not import this module).
556
+ from ui.i18n import clear_registry
557
+ clear_registry()
552
558
 
553
559
  # Support comma-separated module directories
554
560
  raw = str(module_dir)
@@ -581,8 +587,12 @@ def load_all(module_dir: str | Path, enabled: set[str]) -> list[dict]:
581
587
  sys.path.insert(0, p_str)
582
588
  candidate_paths.append(p)
583
589
 
584
- # Sort by dependency order (skip reasons land in _load_errors)
585
- ordered = _topo_sort(candidate_paths, enabled, errors=_load_errors)
590
+ # Sort by dependency order (skip reasons land in _load_errors). Discovery is
591
+ # name-sorted first so load order - and therefore every first-registered-wins
592
+ # tie-break (slots and module i18n catalogs alike) - is deterministic, not
593
+ # dependent on the filesystem's iterdir() order.
594
+ ordered = _topo_sort(
595
+ sorted(candidate_paths, key=lambda p: p.name), enabled, errors=_load_errors)
586
596
 
587
597
  # Relay credentials for the premium-license gate, resolved lazily and ONCE
588
598
  # per load pass: the JWT is the same for every module, and there must be no
@@ -827,6 +837,52 @@ def _load_one(pkg_path: Path, pkg_name: str, *, trusted: bool = False) -> dict |
827
837
  for item in contribution:
828
838
  register_slot(slot_name, {**item, "_module": pkg_name})
829
839
 
840
+ # Register module-contributed UI translation catalogs (the `locales`
841
+ # manifest key, mirroring `slots` above). Each entry maps a language code to
842
+ # {"file": <path>, "rtl": <bool>}. Pushed into ui.i18n through a lazy import
843
+ # so the i18n leaf never imports the module subsystem. A malformed or
844
+ # unreadable entry is logged and skipped; the module and its other locales
845
+ # still load.
846
+ locales = manifest.get("locales") or {}
847
+ if not isinstance(locales, dict):
848
+ log.error(
849
+ "Module %r 'locales' skipped: must be a dict, got %s",
850
+ pkg_name, type(locales).__name__,
851
+ )
852
+ locales = {}
853
+ for lang, entry in locales.items():
854
+ if not isinstance(lang, str) or not lang.strip():
855
+ log.error(
856
+ "Module %r locale skipped: language code must be a non-empty string (got %r)",
857
+ pkg_name, lang,
858
+ )
859
+ continue
860
+ if (not isinstance(entry, dict)
861
+ or not isinstance(entry.get("file"), str) or not entry["file"].strip()):
862
+ log.error(
863
+ "Module %r locale %r skipped: entry must be a dict with a non-empty string 'file'",
864
+ pkg_name, lang,
865
+ )
866
+ continue
867
+ rtl = entry.get("rtl", False)
868
+ if not isinstance(rtl, bool):
869
+ log.error(
870
+ "Module %r locale %r: 'rtl' must be a bool, got %s - treating as false",
871
+ pkg_name, lang, type(rtl).__name__,
872
+ )
873
+ rtl = False
874
+ cat_path = pkg_path / entry["file"]
875
+ try:
876
+ catalog = json.loads(cat_path.read_text(encoding="utf-8"))
877
+ except (OSError, ValueError) as exc:
878
+ log.error(
879
+ "Module %r locale %r skipped: cannot read %s (%s: %s)",
880
+ pkg_name, lang, entry["file"], type(exc).__name__, exc,
881
+ )
882
+ continue
883
+ from ui.i18n import register_catalog
884
+ register_catalog(lang, catalog, rtl=rtl)
885
+
830
886
  log.info(
831
887
  "Module %r loaded (v%s, slots: %s)",
832
888
  manifest["name"],
@@ -349,7 +349,7 @@ def generate_document_pdf(doc: dict[str, Any], company: dict[str, Any] | None =
349
349
  if li_taxes:
350
350
  tax_str = " + ".join(
351
351
  f"{t.get('label') or t.get('code') or 'Tax'} {float(t.get('rate', 0)):.1f}%"
352
- for item in li_taxes
352
+ for t in li_taxes
353
353
  )
354
354
  else:
355
355
  tax_str = f"{float(li.get('tax_rate') or 0):.1f}%"
@@ -426,33 +426,19 @@ async def _check_legacy_item_prices(
426
426
  async def _emit_finalize_je(
427
427
  session: AsyncSession, company_id, user_id, doc_id: str, state: dict,
428
428
  ) -> None:
429
- total = float(state.get("total", 0) or 0)
430
- subtotal = float(state.get("subtotal", total) or total)
431
- tax = float(state.get("tax", 0) or 0)
432
- ts = state.get("issue_date") or state.get("created_at") or state.get("finalized_at")
433
-
434
- je_id = f"je:auto:{doc_id}:fin"
435
- entries = [
436
- {"account": "1120", "debit": total, "credit": 0.0},
437
- {"account": "4100", "debit": 0.0, "credit": subtotal},
438
- ]
439
- if tax > 0:
440
- entries.append({"account": "2120", "debit": 0.0, "credit": tax})
429
+ """Delegate to auto_je.create_for_doc_finalized for DRY compliance.
441
430
 
442
- await emit_event(
443
- session, company_id=company_id, entity_id=je_id,
444
- entity_type="journal_entry", event_type="acc.journal_entry.created",
445
- data={"memo": f"Auto JE for {doc_id} finalized", "entries": entries, "ts": ts},
446
- actor_id=user_id, location_id=None, source="auto_je",
447
- idempotency_key=je_idempotency_key(doc_id, "invoice.finalized", "c"),
448
- metadata_={"trigger": "doc.finalized", "doc_id": doc_id},
449
- )
450
- await emit_event(
451
- session, company_id=company_id, entity_id=je_id,
452
- entity_type="journal_entry", event_type="acc.journal_entry.posted",
453
- data={}, actor_id=user_id, location_id=None, source="auto_je",
454
- idempotency_key=je_idempotency_key(doc_id, "invoice.finalized", "p"),
455
- metadata_={"trigger": "doc.finalized", "doc_id": doc_id},
431
+ A repaired invoice gets the same JE a live finalize posts - revenue, tax,
432
+ and the COGS pair - in the company's base currency.
433
+ """
434
+ from celerp.models.company import Company
435
+ from celerp.services import auto_je as _auto_je
436
+
437
+ company = await session.get(Company, company_id)
438
+ base_currency = (company.settings.get("currency", "USD") if company else "USD")
439
+ await _auto_je.create_for_doc_finalized(
440
+ session, company_id=company_id, user_id=user_id, doc_id=doc_id,
441
+ doc=state, base_currency=base_currency,
456
442
  )
457
443
 
458
444