@open-mercato/core 0.4.2-canary-c71ef83148 → 0.4.2-canary-f821f89ef6

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 (632) hide show
  1. package/dist/generated/entities/workflow_event_trigger/index.js +33 -0
  2. package/dist/generated/entities/workflow_event_trigger/index.js.map +7 -0
  3. package/dist/generated/entities.ids.generated.js +2 -5
  4. package/dist/generated/entities.ids.generated.js.map +2 -2
  5. package/dist/generated/entity-fields-registry.js +2 -2
  6. package/dist/generated/entity-fields-registry.js.map +2 -2
  7. package/dist/modules/api_docs/frontend/docs/api/page.js +2 -3
  8. package/dist/modules/api_docs/frontend/docs/api/page.js.map +2 -2
  9. package/dist/modules/api_keys/backend/api-keys/page.js +1 -1
  10. package/dist/modules/api_keys/backend/api-keys/page.js.map +2 -2
  11. package/dist/modules/attachments/components/AttachmentLibrary.js +0 -4
  12. package/dist/modules/attachments/components/AttachmentLibrary.js.map +2 -2
  13. package/dist/modules/attachments/components/AttachmentPartitionSettings.js +0 -2
  14. package/dist/modules/attachments/components/AttachmentPartitionSettings.js.map +2 -2
  15. package/dist/modules/auth/api/admin/nav.js +3 -4
  16. package/dist/modules/auth/api/admin/nav.js.map +2 -2
  17. package/dist/modules/auth/api/login.js +6 -25
  18. package/dist/modules/auth/api/login.js.map +2 -2
  19. package/dist/modules/auth/api/reset/confirm.js +2 -25
  20. package/dist/modules/auth/api/reset/confirm.js.map +2 -2
  21. package/dist/modules/auth/api/reset.js +0 -23
  22. package/dist/modules/auth/api/reset.js.map +2 -2
  23. package/dist/modules/auth/api/sidebar/preferences/route.js +9 -14
  24. package/dist/modules/auth/api/sidebar/preferences/route.js.map +2 -2
  25. package/dist/modules/auth/api/users/route.js +2 -4
  26. package/dist/modules/auth/api/users/route.js.map +2 -2
  27. package/dist/modules/auth/backend/roles/[id]/edit/page.js +1 -4
  28. package/dist/modules/auth/backend/roles/[id]/edit/page.js.map +2 -2
  29. package/dist/modules/auth/backend/roles/page.js +3 -3
  30. package/dist/modules/auth/backend/roles/page.js.map +2 -2
  31. package/dist/modules/auth/backend/users/[id]/edit/page.js +3 -18
  32. package/dist/modules/auth/backend/users/[id]/edit/page.js.map +2 -2
  33. package/dist/modules/auth/backend/users/create/page.js +2 -15
  34. package/dist/modules/auth/backend/users/create/page.js.map +2 -2
  35. package/dist/modules/auth/backend/users/page.js +3 -3
  36. package/dist/modules/auth/backend/users/page.js.map +2 -2
  37. package/dist/modules/auth/cli.js +11 -25
  38. package/dist/modules/auth/cli.js.map +2 -2
  39. package/dist/modules/auth/commands/users.js +2 -59
  40. package/dist/modules/auth/commands/users.js.map +2 -2
  41. package/dist/modules/auth/data/validators.js +3 -6
  42. package/dist/modules/auth/data/validators.js.map +2 -2
  43. package/dist/modules/auth/events.js +30 -0
  44. package/dist/modules/auth/events.js.map +7 -0
  45. package/dist/modules/auth/frontend/login.js +3 -105
  46. package/dist/modules/auth/frontend/login.js.map +2 -2
  47. package/dist/modules/auth/frontend/reset/[token]/page.js +10 -20
  48. package/dist/modules/auth/frontend/reset/[token]/page.js.map +2 -2
  49. package/dist/modules/auth/lib/setup-app.js +8 -42
  50. package/dist/modules/auth/lib/setup-app.js.map +2 -2
  51. package/dist/modules/auth/services/authService.js +3 -24
  52. package/dist/modules/auth/services/authService.js.map +2 -2
  53. package/dist/modules/business_rules/api/execute/[ruleId]/route.js +145 -0
  54. package/dist/modules/business_rules/api/execute/[ruleId]/route.js.map +7 -0
  55. package/dist/modules/business_rules/api/execute/route.js +1 -7
  56. package/dist/modules/business_rules/api/execute/route.js.map +2 -2
  57. package/dist/modules/business_rules/backend/rules/page.js +0 -4
  58. package/dist/modules/business_rules/backend/rules/page.js.map +2 -2
  59. package/dist/modules/business_rules/backend/sets/page.js +0 -3
  60. package/dist/modules/business_rules/backend/sets/page.js.map +2 -2
  61. package/dist/modules/business_rules/cli.js +1 -2
  62. package/dist/modules/business_rules/cli.js.map +2 -2
  63. package/dist/modules/business_rules/data/validators.js +34 -0
  64. package/dist/modules/business_rules/data/validators.js.map +2 -2
  65. package/dist/modules/business_rules/index.js +21 -1
  66. package/dist/modules/business_rules/index.js.map +2 -2
  67. package/dist/modules/business_rules/lib/rule-engine.js +185 -34
  68. package/dist/modules/business_rules/lib/rule-engine.js.map +2 -2
  69. package/dist/modules/catalog/components/PriceKindSettings.js +0 -2
  70. package/dist/modules/catalog/components/PriceKindSettings.js.map +2 -2
  71. package/dist/modules/catalog/components/categories/CategoriesDataTable.js +2 -2
  72. package/dist/modules/catalog/components/categories/CategoriesDataTable.js.map +2 -2
  73. package/dist/modules/catalog/components/products/ProductsDataTable.js +0 -2
  74. package/dist/modules/catalog/components/products/ProductsDataTable.js.map +2 -2
  75. package/dist/modules/catalog/events.js +34 -0
  76. package/dist/modules/catalog/events.js.map +7 -0
  77. package/dist/modules/configs/cli.js +0 -6
  78. package/dist/modules/configs/cli.js.map +2 -2
  79. package/dist/modules/configs/components/CachePanel.js +4 -4
  80. package/dist/modules/configs/components/CachePanel.js.map +2 -2
  81. package/dist/modules/configs/lib/system-status.js +1 -48
  82. package/dist/modules/configs/lib/system-status.js.map +2 -2
  83. package/dist/modules/configs/lib/upgrade-actions.js +0 -18
  84. package/dist/modules/configs/lib/upgrade-actions.js.map +2 -2
  85. package/dist/modules/currencies/backend/currencies/page.js +0 -3
  86. package/dist/modules/currencies/backend/currencies/page.js.map +2 -2
  87. package/dist/modules/currencies/backend/exchange-rates/page.js +0 -2
  88. package/dist/modules/currencies/backend/exchange-rates/page.js.map +2 -2
  89. package/dist/modules/customers/backend/customers/companies/page.js +0 -3
  90. package/dist/modules/customers/backend/customers/companies/page.js.map +2 -2
  91. package/dist/modules/customers/backend/customers/deals/page.js +0 -3
  92. package/dist/modules/customers/backend/customers/deals/page.js.map +2 -2
  93. package/dist/modules/customers/backend/customers/people/page.js +0 -3
  94. package/dist/modules/customers/backend/customers/people/page.js.map +2 -2
  95. package/dist/modules/customers/commands/deals.js +0 -31
  96. package/dist/modules/customers/commands/deals.js.map +2 -2
  97. package/dist/modules/customers/components/CustomerTodosTable.js +0 -1
  98. package/dist/modules/customers/components/CustomerTodosTable.js.map +2 -2
  99. package/dist/modules/customers/events.js +49 -0
  100. package/dist/modules/customers/events.js.map +7 -0
  101. package/dist/modules/customers/widgets/dashboard/customer-todos/widget.js +1 -2
  102. package/dist/modules/customers/widgets/dashboard/customer-todos/widget.js.map +2 -2
  103. package/dist/modules/customers/widgets/dashboard/new-customers/widget.js +1 -2
  104. package/dist/modules/customers/widgets/dashboard/new-customers/widget.js.map +2 -2
  105. package/dist/modules/customers/widgets/dashboard/new-deals/widget.js +1 -2
  106. package/dist/modules/customers/widgets/dashboard/new-deals/widget.js.map +2 -2
  107. package/dist/modules/customers/widgets/dashboard/next-interactions/widget.js +1 -2
  108. package/dist/modules/customers/widgets/dashboard/next-interactions/widget.js.map +2 -2
  109. package/dist/modules/dashboards/cli.js +5 -44
  110. package/dist/modules/dashboards/cli.js.map +2 -2
  111. package/dist/modules/dashboards/components/WidgetVisibilityEditor.js +11 -16
  112. package/dist/modules/dashboards/components/WidgetVisibilityEditor.js.map +3 -3
  113. package/dist/modules/dashboards/services/widgetDataService.js +3 -139
  114. package/dist/modules/dashboards/services/widgetDataService.js.map +2 -2
  115. package/dist/modules/dashboards/widgets/dashboard/aov-kpi/widget.js +1 -2
  116. package/dist/modules/dashboards/widgets/dashboard/aov-kpi/widget.js.map +2 -2
  117. package/dist/modules/dashboards/widgets/dashboard/new-customers-kpi/widget.js +1 -2
  118. package/dist/modules/dashboards/widgets/dashboard/new-customers-kpi/widget.js.map +2 -2
  119. package/dist/modules/dashboards/widgets/dashboard/orders-by-status/widget.js +1 -2
  120. package/dist/modules/dashboards/widgets/dashboard/orders-by-status/widget.js.map +2 -2
  121. package/dist/modules/dashboards/widgets/dashboard/orders-kpi/widget.js +1 -2
  122. package/dist/modules/dashboards/widgets/dashboard/orders-kpi/widget.js.map +2 -2
  123. package/dist/modules/dashboards/widgets/dashboard/pipeline-summary/widget.js +1 -2
  124. package/dist/modules/dashboards/widgets/dashboard/pipeline-summary/widget.js.map +2 -2
  125. package/dist/modules/dashboards/widgets/dashboard/revenue-kpi/widget.js +1 -2
  126. package/dist/modules/dashboards/widgets/dashboard/revenue-kpi/widget.js.map +2 -2
  127. package/dist/modules/dashboards/widgets/dashboard/revenue-trend/widget.js +1 -2
  128. package/dist/modules/dashboards/widgets/dashboard/revenue-trend/widget.js.map +2 -2
  129. package/dist/modules/dashboards/widgets/dashboard/sales-by-region/widget.js +1 -2
  130. package/dist/modules/dashboards/widgets/dashboard/sales-by-region/widget.js.map +2 -2
  131. package/dist/modules/dashboards/widgets/dashboard/top-customers/widget.js +1 -2
  132. package/dist/modules/dashboards/widgets/dashboard/top-customers/widget.js.map +2 -2
  133. package/dist/modules/dashboards/widgets/dashboard/top-products/widget.js +1 -2
  134. package/dist/modules/dashboards/widgets/dashboard/top-products/widget.js.map +2 -2
  135. package/dist/modules/dictionaries/components/DictionaryTable.js +0 -2
  136. package/dist/modules/dictionaries/components/DictionaryTable.js.map +2 -2
  137. package/dist/modules/directory/backend/directory/organizations/page.js +2 -2
  138. package/dist/modules/directory/backend/directory/organizations/page.js.map +2 -2
  139. package/dist/modules/directory/backend/directory/tenants/page.js +2 -2
  140. package/dist/modules/directory/backend/directory/tenants/page.js.map +2 -2
  141. package/dist/modules/directory/events.js +23 -0
  142. package/dist/modules/directory/events.js.map +7 -0
  143. package/dist/modules/entities/backend/entities/user/[entityId]/records/page.js +2 -2
  144. package/dist/modules/entities/backend/entities/user/[entityId]/records/page.js.map +2 -2
  145. package/dist/modules/entities/components/SystemEntitiesTable.js +1 -1
  146. package/dist/modules/entities/components/SystemEntitiesTable.js.map +2 -2
  147. package/dist/modules/entities/components/UserEntitiesTable.js +2 -2
  148. package/dist/modules/entities/components/UserEntitiesTable.js.map +2 -2
  149. package/dist/modules/feature_toggles/components/FeatureTogglesTable.js +3 -3
  150. package/dist/modules/feature_toggles/components/FeatureTogglesTable.js.map +2 -2
  151. package/dist/modules/feature_toggles/components/OverridesTable.js +1 -1
  152. package/dist/modules/feature_toggles/components/OverridesTable.js.map +2 -2
  153. package/dist/modules/planner/backend/planner/availability-rulesets/page.js +2 -2
  154. package/dist/modules/planner/backend/planner/availability-rulesets/page.js.map +2 -2
  155. package/dist/modules/query_index/cli.js +7 -63
  156. package/dist/modules/query_index/cli.js.map +2 -2
  157. package/dist/modules/query_index/components/QueryIndexesTable.js +1 -7
  158. package/dist/modules/query_index/components/QueryIndexesTable.js.map +2 -2
  159. package/dist/modules/resources/backend/resources/resource-types/page.js +2 -2
  160. package/dist/modules/resources/backend/resources/resource-types/page.js.map +2 -2
  161. package/dist/modules/resources/backend/resources/resources/page.js +2 -2
  162. package/dist/modules/resources/backend/resources/resources/page.js.map +2 -2
  163. package/dist/modules/sales/acl.js +1 -0
  164. package/dist/modules/sales/acl.js.map +2 -2
  165. package/dist/modules/sales/backend/sales/channels/offers/page.js +0 -2
  166. package/dist/modules/sales/backend/sales/channels/offers/page.js.map +2 -2
  167. package/dist/modules/sales/backend/sales/channels/page.js +0 -2
  168. package/dist/modules/sales/backend/sales/channels/page.js.map +2 -2
  169. package/dist/modules/sales/backend/sales/documents/[id]/page.js +12 -0
  170. package/dist/modules/sales/backend/sales/documents/[id]/page.js.map +2 -2
  171. package/dist/modules/sales/commands/documents.js +62 -53
  172. package/dist/modules/sales/commands/documents.js.map +2 -2
  173. package/dist/modules/sales/commands/payments.js +0 -26
  174. package/dist/modules/sales/commands/payments.js.map +2 -2
  175. package/dist/modules/sales/components/AdjustmentKindSettings.js +2 -2
  176. package/dist/modules/sales/components/AdjustmentKindSettings.js.map +2 -2
  177. package/dist/modules/sales/components/PaymentMethodsSettings.js +2 -2
  178. package/dist/modules/sales/components/PaymentMethodsSettings.js.map +2 -2
  179. package/dist/modules/sales/components/ShippingMethodsSettings.js +2 -2
  180. package/dist/modules/sales/components/ShippingMethodsSettings.js.map +2 -2
  181. package/dist/modules/sales/components/TaxRatesSettings.js +2 -2
  182. package/dist/modules/sales/components/TaxRatesSettings.js.map +2 -2
  183. package/dist/modules/sales/components/channels/SalesChannelOffersPanel.js +0 -2
  184. package/dist/modules/sales/components/channels/SalesChannelOffersPanel.js.map +2 -2
  185. package/dist/modules/sales/components/documents/AdjustmentsSection.js +0 -2
  186. package/dist/modules/sales/components/documents/AdjustmentsSection.js.map +2 -2
  187. package/dist/modules/sales/components/documents/PaymentsSection.js +1 -2
  188. package/dist/modules/sales/components/documents/PaymentsSection.js.map +2 -2
  189. package/dist/modules/sales/components/documents/SalesDocumentsTable.js +0 -2
  190. package/dist/modules/sales/components/documents/SalesDocumentsTable.js.map +2 -2
  191. package/dist/modules/sales/events.js +63 -0
  192. package/dist/modules/sales/events.js.map +7 -0
  193. package/dist/modules/sales/lib/dictionaries.js +3 -0
  194. package/dist/modules/sales/lib/dictionaries.js.map +2 -2
  195. package/dist/modules/sales/lib/frontend/documentDataEvents.js +25 -0
  196. package/dist/modules/sales/lib/frontend/documentDataEvents.js.map +7 -0
  197. package/dist/modules/staff/backend/staff/team-members/page.js +1 -1
  198. package/dist/modules/staff/backend/staff/team-members/page.js.map +2 -2
  199. package/dist/modules/staff/backend/staff/team-roles/page.js +2 -2
  200. package/dist/modules/staff/backend/staff/team-roles/page.js.map +2 -2
  201. package/dist/modules/staff/backend/staff/teams/[id]/edit/page.js +2 -2
  202. package/dist/modules/staff/backend/staff/teams/[id]/edit/page.js.map +2 -2
  203. package/dist/modules/staff/backend/staff/teams/page.js +2 -2
  204. package/dist/modules/staff/backend/staff/teams/page.js.map +2 -2
  205. package/dist/modules/staff/commands/leave-requests.js +0 -79
  206. package/dist/modules/staff/commands/leave-requests.js.map +2 -2
  207. package/dist/modules/workflows/acl.js +2 -0
  208. package/dist/modules/workflows/acl.js.map +2 -2
  209. package/dist/modules/workflows/api/instances/route.js +18 -6
  210. package/dist/modules/workflows/api/instances/route.js.map +2 -2
  211. package/dist/modules/workflows/api/tasks/route.js +6 -1
  212. package/dist/modules/workflows/api/tasks/route.js.map +2 -2
  213. package/dist/modules/workflows/backend/definitions/[id]/page.js +9 -1
  214. package/dist/modules/workflows/backend/definitions/[id]/page.js.map +2 -2
  215. package/dist/modules/workflows/backend/definitions/[id]/page.meta.js +1 -1
  216. package/dist/modules/workflows/backend/definitions/[id]/page.meta.js.map +2 -2
  217. package/dist/modules/workflows/backend/definitions/create/page.js +24 -15
  218. package/dist/modules/workflows/backend/definitions/create/page.js.map +2 -2
  219. package/dist/modules/workflows/backend/definitions/create/page.meta.js +1 -1
  220. package/dist/modules/workflows/backend/definitions/create/page.meta.js.map +2 -2
  221. package/dist/modules/workflows/backend/definitions/page.js +0 -5
  222. package/dist/modules/workflows/backend/definitions/page.js.map +2 -2
  223. package/dist/modules/workflows/backend/definitions/visual-editor/page.js +150 -132
  224. package/dist/modules/workflows/backend/definitions/visual-editor/page.js.map +2 -2
  225. package/dist/modules/workflows/backend/definitions/visual-editor/page.meta.js +1 -1
  226. package/dist/modules/workflows/backend/definitions/visual-editor/page.meta.js.map +2 -2
  227. package/dist/modules/workflows/backend/events/[id]/page.js +1 -1
  228. package/dist/modules/workflows/backend/events/[id]/page.js.map +2 -2
  229. package/dist/modules/workflows/backend/events/[id]/page.meta.js +2 -2
  230. package/dist/modules/workflows/backend/events/[id]/page.meta.js.map +2 -2
  231. package/dist/modules/workflows/backend/instances/[id]/page.meta.js +2 -2
  232. package/dist/modules/workflows/backend/instances/[id]/page.meta.js.map +2 -2
  233. package/dist/modules/workflows/backend/instances/page.js +0 -3
  234. package/dist/modules/workflows/backend/instances/page.js.map +2 -2
  235. package/dist/modules/workflows/backend/tasks/[id]/page.js +1 -1
  236. package/dist/modules/workflows/backend/tasks/[id]/page.js.map +2 -2
  237. package/dist/modules/workflows/backend/tasks/[id]/page.meta.js +2 -2
  238. package/dist/modules/workflows/backend/tasks/[id]/page.meta.js.map +2 -2
  239. package/dist/modules/workflows/backend/tasks/page.js +5 -9
  240. package/dist/modules/workflows/backend/tasks/page.js.map +2 -2
  241. package/dist/modules/workflows/cli.js +93 -15
  242. package/dist/modules/workflows/cli.js.map +3 -3
  243. package/dist/modules/workflows/components/DefinitionTriggersEditor.js +481 -0
  244. package/dist/modules/workflows/components/DefinitionTriggersEditor.js.map +7 -0
  245. package/dist/modules/workflows/components/EventTriggersEditor.js +553 -0
  246. package/dist/modules/workflows/components/EventTriggersEditor.js.map +7 -0
  247. package/dist/modules/workflows/data/entities.js +64 -1
  248. package/dist/modules/workflows/data/entities.js.map +2 -2
  249. package/dist/modules/workflows/data/validators.js +115 -0
  250. package/dist/modules/workflows/data/validators.js.map +2 -2
  251. package/dist/modules/workflows/events.js +38 -0
  252. package/dist/modules/workflows/events.js.map +7 -0
  253. package/dist/modules/workflows/examples/checkout-demo-definition.json +1 -5
  254. package/dist/modules/workflows/examples/order-approval-definition.json +257 -0
  255. package/dist/modules/workflows/examples/order-approval-guard-rules.json +32 -0
  256. package/dist/modules/workflows/lib/activity-executor.js +75 -13
  257. package/dist/modules/workflows/lib/activity-executor.js.map +2 -2
  258. package/dist/modules/workflows/lib/event-trigger-service.js +308 -0
  259. package/dist/modules/workflows/lib/event-trigger-service.js.map +7 -0
  260. package/dist/modules/workflows/lib/graph-utils.js +71 -2
  261. package/dist/modules/workflows/lib/graph-utils.js.map +2 -2
  262. package/dist/modules/workflows/lib/seeds.js +22 -5
  263. package/dist/modules/workflows/lib/seeds.js.map +2 -2
  264. package/dist/modules/workflows/lib/start-validator.js +33 -23
  265. package/dist/modules/workflows/lib/start-validator.js.map +2 -2
  266. package/dist/modules/workflows/lib/transition-handler.js +161 -57
  267. package/dist/modules/workflows/lib/transition-handler.js.map +3 -3
  268. package/dist/modules/workflows/migrations/Migration20260123143500.js +36 -0
  269. package/dist/modules/workflows/migrations/Migration20260123143500.js.map +7 -0
  270. package/dist/modules/workflows/subscribers/event-trigger.js +78 -0
  271. package/dist/modules/workflows/subscribers/event-trigger.js.map +7 -0
  272. package/dist/modules/workflows/widgets/injection/order-approval/widget.client.js +323 -0
  273. package/dist/modules/workflows/widgets/injection/order-approval/widget.client.js.map +7 -0
  274. package/dist/modules/workflows/widgets/injection/order-approval/widget.js +17 -0
  275. package/dist/modules/workflows/widgets/injection/order-approval/widget.js.map +7 -0
  276. package/dist/modules/workflows/widgets/injection-table.js +19 -0
  277. package/dist/modules/workflows/widgets/injection-table.js.map +7 -0
  278. package/generated/entities/workflow_event_trigger/index.ts +15 -0
  279. package/generated/entities.ids.generated.ts +2 -5
  280. package/generated/entity-fields-registry.ts +2 -2
  281. package/package.json +2 -2
  282. package/src/modules/api_docs/frontend/docs/api/page.tsx +2 -3
  283. package/src/modules/api_keys/backend/api-keys/page.tsx +1 -1
  284. package/src/modules/attachments/components/AttachmentLibrary.tsx +0 -4
  285. package/src/modules/attachments/components/AttachmentPartitionSettings.tsx +0 -2
  286. package/src/modules/auth/README.md +1 -1
  287. package/src/modules/auth/__tests__/cli-setup-acl.test.ts +1 -1
  288. package/src/modules/auth/api/__tests__/login.test.ts +0 -2
  289. package/src/modules/auth/api/admin/nav.ts +6 -10
  290. package/src/modules/auth/api/login.ts +7 -26
  291. package/src/modules/auth/api/reset/confirm.ts +2 -25
  292. package/src/modules/auth/api/reset.ts +0 -23
  293. package/src/modules/auth/api/sidebar/preferences/route.ts +12 -21
  294. package/src/modules/auth/api/users/route.ts +2 -5
  295. package/src/modules/auth/backend/roles/[id]/edit/page.tsx +1 -4
  296. package/src/modules/auth/backend/roles/page.tsx +3 -3
  297. package/src/modules/auth/backend/users/[id]/edit/page.tsx +3 -22
  298. package/src/modules/auth/backend/users/create/page.tsx +2 -19
  299. package/src/modules/auth/backend/users/page.tsx +3 -3
  300. package/src/modules/auth/cli.ts +11 -38
  301. package/src/modules/auth/commands/users.ts +2 -73
  302. package/src/modules/auth/data/validators.ts +2 -6
  303. package/src/modules/auth/events.ts +39 -0
  304. package/src/modules/auth/frontend/login.tsx +5 -131
  305. package/src/modules/auth/frontend/reset/[token]/page.tsx +11 -24
  306. package/src/modules/auth/i18n/de.json +1 -48
  307. package/src/modules/auth/i18n/en.json +1 -48
  308. package/src/modules/auth/i18n/es.json +1 -48
  309. package/src/modules/auth/i18n/pl.json +1 -48
  310. package/src/modules/auth/lib/setup-app.ts +9 -58
  311. package/src/modules/auth/services/authService.ts +4 -27
  312. package/src/modules/business_rules/api/execute/[ruleId]/route.ts +163 -0
  313. package/src/modules/business_rules/api/execute/route.ts +1 -8
  314. package/src/modules/business_rules/backend/rules/page.tsx +0 -4
  315. package/src/modules/business_rules/backend/sets/page.tsx +0 -3
  316. package/src/modules/business_rules/cli.ts +1 -2
  317. package/src/modules/business_rules/data/validators.ts +40 -0
  318. package/src/modules/business_rules/i18n/en.json +1 -3
  319. package/src/modules/business_rules/index.ts +25 -0
  320. package/src/modules/business_rules/lib/__tests__/rule-engine.test.ts +0 -51
  321. package/src/modules/business_rules/lib/rule-engine.ts +277 -51
  322. package/src/modules/catalog/components/PriceKindSettings.tsx +0 -2
  323. package/src/modules/catalog/components/categories/CategoriesDataTable.tsx +2 -2
  324. package/src/modules/catalog/components/products/ProductsDataTable.tsx +0 -2
  325. package/src/modules/catalog/events.ts +45 -0
  326. package/src/modules/catalog/i18n/en.json +1 -3
  327. package/src/modules/configs/cli.ts +0 -6
  328. package/src/modules/configs/components/CachePanel.tsx +4 -4
  329. package/src/modules/configs/i18n/en.json +2 -12
  330. package/src/modules/configs/i18n/pl.json +2 -12
  331. package/src/modules/configs/lib/system-status.ts +1 -48
  332. package/src/modules/configs/lib/system-status.types.ts +0 -1
  333. package/src/modules/configs/lib/upgrade-actions.ts +0 -18
  334. package/src/modules/currencies/backend/currencies/page.tsx +0 -3
  335. package/src/modules/currencies/backend/exchange-rates/page.tsx +0 -2
  336. package/src/modules/customers/backend/customers/companies/page.tsx +0 -3
  337. package/src/modules/customers/backend/customers/deals/page.tsx +0 -3
  338. package/src/modules/customers/backend/customers/people/page.tsx +0 -3
  339. package/src/modules/customers/commands/deals.ts +0 -39
  340. package/src/modules/customers/components/CustomerTodosTable.tsx +0 -1
  341. package/src/modules/customers/events.ts +63 -0
  342. package/src/modules/customers/i18n/en.json +1 -5
  343. package/src/modules/customers/widgets/dashboard/customer-todos/widget.ts +2 -2
  344. package/src/modules/customers/widgets/dashboard/new-customers/widget.ts +2 -2
  345. package/src/modules/customers/widgets/dashboard/new-deals/widget.ts +2 -2
  346. package/src/modules/customers/widgets/dashboard/next-interactions/widget.ts +2 -2
  347. package/src/modules/dashboards/cli.ts +5 -55
  348. package/src/modules/dashboards/components/WidgetVisibilityEditor.tsx +11 -22
  349. package/src/modules/dashboards/services/widgetDataService.ts +4 -164
  350. package/src/modules/dashboards/widgets/dashboard/aov-kpi/widget.ts +2 -2
  351. package/src/modules/dashboards/widgets/dashboard/new-customers-kpi/widget.ts +2 -2
  352. package/src/modules/dashboards/widgets/dashboard/orders-by-status/widget.ts +2 -2
  353. package/src/modules/dashboards/widgets/dashboard/orders-kpi/widget.ts +2 -2
  354. package/src/modules/dashboards/widgets/dashboard/pipeline-summary/widget.ts +2 -2
  355. package/src/modules/dashboards/widgets/dashboard/revenue-kpi/widget.ts +2 -2
  356. package/src/modules/dashboards/widgets/dashboard/revenue-trend/widget.ts +2 -2
  357. package/src/modules/dashboards/widgets/dashboard/sales-by-region/widget.ts +2 -2
  358. package/src/modules/dashboards/widgets/dashboard/top-customers/widget.ts +2 -2
  359. package/src/modules/dashboards/widgets/dashboard/top-products/widget.ts +2 -2
  360. package/src/modules/dictionaries/components/DictionaryTable.tsx +0 -2
  361. package/src/modules/directory/backend/directory/organizations/page.tsx +2 -2
  362. package/src/modules/directory/backend/directory/tenants/page.tsx +2 -2
  363. package/src/modules/directory/events.ts +31 -0
  364. package/src/modules/entities/backend/entities/user/[entityId]/records/page.tsx +2 -2
  365. package/src/modules/entities/components/SystemEntitiesTable.tsx +1 -1
  366. package/src/modules/entities/components/UserEntitiesTable.tsx +2 -2
  367. package/src/modules/feature_toggles/components/FeatureTogglesTable.tsx +4 -3
  368. package/src/modules/feature_toggles/components/OverridesTable.tsx +1 -1
  369. package/src/modules/planner/backend/planner/availability-rulesets/page.tsx +2 -2
  370. package/src/modules/query_index/cli.ts +13 -82
  371. package/src/modules/query_index/components/QueryIndexesTable.tsx +2 -8
  372. package/src/modules/resources/backend/resources/resource-types/page.tsx +2 -2
  373. package/src/modules/resources/backend/resources/resources/page.tsx +2 -2
  374. package/src/modules/sales/acl.ts +1 -0
  375. package/src/modules/sales/backend/sales/channels/offers/page.tsx +0 -2
  376. package/src/modules/sales/backend/sales/channels/page.tsx +0 -2
  377. package/src/modules/sales/backend/sales/documents/[id]/page.tsx +16 -0
  378. package/src/modules/sales/commands/documents.ts +70 -62
  379. package/src/modules/sales/commands/payments.ts +0 -33
  380. package/src/modules/sales/components/AdjustmentKindSettings.tsx +2 -2
  381. package/src/modules/sales/components/PaymentMethodsSettings.tsx +2 -2
  382. package/src/modules/sales/components/ShippingMethodsSettings.tsx +2 -2
  383. package/src/modules/sales/components/TaxRatesSettings.tsx +2 -2
  384. package/src/modules/sales/components/channels/SalesChannelOffersPanel.tsx +0 -2
  385. package/src/modules/sales/components/documents/AdjustmentsSection.tsx +0 -2
  386. package/src/modules/sales/components/documents/PaymentsSection.tsx +1 -2
  387. package/src/modules/sales/components/documents/SalesDocumentsTable.tsx +0 -2
  388. package/src/modules/sales/events.ts +82 -0
  389. package/src/modules/sales/i18n/de.json +0 -20
  390. package/src/modules/sales/i18n/en.json +1 -25
  391. package/src/modules/sales/i18n/es.json +0 -20
  392. package/src/modules/sales/i18n/pl.json +0 -20
  393. package/src/modules/sales/lib/dictionaries.ts +3 -0
  394. package/src/modules/sales/lib/frontend/documentDataEvents.ts +28 -0
  395. package/src/modules/staff/backend/staff/team-members/page.tsx +1 -1
  396. package/src/modules/staff/backend/staff/team-roles/page.tsx +2 -2
  397. package/src/modules/staff/backend/staff/teams/[id]/edit/page.tsx +2 -2
  398. package/src/modules/staff/backend/staff/teams/page.tsx +2 -2
  399. package/src/modules/staff/commands/leave-requests.ts +0 -94
  400. package/src/modules/staff/i18n/de.json +0 -4
  401. package/src/modules/staff/i18n/en.json +1 -9
  402. package/src/modules/staff/i18n/es.json +0 -4
  403. package/src/modules/staff/i18n/pl.json +0 -4
  404. package/src/modules/workflows/acl.ts +2 -0
  405. package/src/modules/workflows/api/__tests__/instances.route.test.ts +5 -2
  406. package/src/modules/workflows/api/instances/route.ts +21 -7
  407. package/src/modules/workflows/api/tasks/route.ts +7 -1
  408. package/src/modules/workflows/backend/definitions/[id]/page.meta.ts +1 -1
  409. package/src/modules/workflows/backend/definitions/[id]/page.tsx +9 -0
  410. package/src/modules/workflows/backend/definitions/create/page.meta.ts +1 -1
  411. package/src/modules/workflows/backend/definitions/create/page.tsx +9 -0
  412. package/src/modules/workflows/backend/definitions/page.tsx +0 -5
  413. package/src/modules/workflows/backend/definitions/visual-editor/page.meta.ts +1 -1
  414. package/src/modules/workflows/backend/definitions/visual-editor/page.tsx +21 -3
  415. package/src/modules/workflows/backend/events/[id]/page.meta.ts +2 -2
  416. package/src/modules/workflows/backend/events/[id]/page.tsx +1 -1
  417. package/src/modules/workflows/backend/instances/[id]/page.meta.ts +2 -2
  418. package/src/modules/workflows/backend/instances/page.tsx +1 -4
  419. package/src/modules/workflows/backend/tasks/[id]/page.meta.ts +2 -2
  420. package/src/modules/workflows/backend/tasks/[id]/page.tsx +1 -1
  421. package/src/modules/workflows/backend/tasks/page.tsx +6 -10
  422. package/src/modules/workflows/cli.ts +123 -12
  423. package/src/modules/workflows/components/DefinitionTriggersEditor.tsx +581 -0
  424. package/src/modules/workflows/components/EventTriggersEditor.tsx +664 -0
  425. package/src/modules/workflows/data/entities.ts +124 -0
  426. package/src/modules/workflows/data/validators.ts +138 -0
  427. package/src/modules/workflows/events.ts +49 -0
  428. package/src/modules/workflows/examples/checkout-demo-definition.json +1 -5
  429. package/src/modules/workflows/examples/order-approval-definition.json +257 -0
  430. package/src/modules/workflows/examples/order-approval-guard-rules.json +32 -0
  431. package/src/modules/workflows/i18n/en.json +72 -3
  432. package/src/modules/workflows/lib/__tests__/activity-executor.test.ts +43 -36
  433. package/src/modules/workflows/lib/__tests__/transition-handler.test.ts +170 -90
  434. package/src/modules/workflows/lib/activity-executor.ts +129 -16
  435. package/src/modules/workflows/lib/event-trigger-service.ts +557 -0
  436. package/src/modules/workflows/lib/graph-utils.ts +117 -2
  437. package/src/modules/workflows/lib/seeds.ts +34 -8
  438. package/src/modules/workflows/lib/start-validator.ts +38 -28
  439. package/src/modules/workflows/lib/transition-handler.ts +212 -71
  440. package/src/modules/workflows/migrations/Migration20260123143500.ts +38 -0
  441. package/src/modules/workflows/subscribers/event-trigger.ts +109 -0
  442. package/src/modules/workflows/widgets/injection/order-approval/widget.client.tsx +446 -0
  443. package/src/modules/workflows/widgets/injection/order-approval/widget.ts +16 -0
  444. package/src/modules/workflows/widgets/injection-table.ts +21 -0
  445. package/dist/generated/entities/notification/index.js +0 -57
  446. package/dist/generated/entities/notification/index.js.map +0 -7
  447. package/dist/modules/auth/api/profile/route.js +0 -157
  448. package/dist/modules/auth/api/profile/route.js.map +0 -7
  449. package/dist/modules/auth/backend/auth/profile/page.js +0 -141
  450. package/dist/modules/auth/backend/auth/profile/page.js.map +0 -7
  451. package/dist/modules/auth/backend/auth/profile/page.meta.js +0 -13
  452. package/dist/modules/auth/backend/auth/profile/page.meta.js.map +0 -7
  453. package/dist/modules/auth/notifications.js +0 -112
  454. package/dist/modules/auth/notifications.js.map +0 -7
  455. package/dist/modules/business_rules/notifications.js +0 -28
  456. package/dist/modules/business_rules/notifications.js.map +0 -7
  457. package/dist/modules/business_rules/subscribers/rule-execution-failed-notification.js +0 -37
  458. package/dist/modules/business_rules/subscribers/rule-execution-failed-notification.js.map +0 -7
  459. package/dist/modules/catalog/notifications.js +0 -28
  460. package/dist/modules/catalog/notifications.js.map +0 -7
  461. package/dist/modules/catalog/subscribers/low-stock-notification.js +0 -38
  462. package/dist/modules/catalog/subscribers/low-stock-notification.js.map +0 -7
  463. package/dist/modules/customers/notifications.js +0 -48
  464. package/dist/modules/customers/notifications.js.map +0 -7
  465. package/dist/modules/dashboards/lib/role-widgets.js +0 -58
  466. package/dist/modules/dashboards/lib/role-widgets.js.map +0 -7
  467. package/dist/modules/directory/api/get/tenants/lookup.js +0 -70
  468. package/dist/modules/directory/api/get/tenants/lookup.js.map +0 -7
  469. package/dist/modules/notifications/acl.js +0 -11
  470. package/dist/modules/notifications/acl.js.map +0 -7
  471. package/dist/modules/notifications/api/[id]/action/route.js +0 -74
  472. package/dist/modules/notifications/api/[id]/action/route.js.map +0 -7
  473. package/dist/modules/notifications/api/[id]/dismiss/route.js +0 -15
  474. package/dist/modules/notifications/api/[id]/dismiss/route.js.map +0 -7
  475. package/dist/modules/notifications/api/[id]/read/route.js +0 -15
  476. package/dist/modules/notifications/api/[id]/read/route.js.map +0 -7
  477. package/dist/modules/notifications/api/[id]/restore/route.js +0 -53
  478. package/dist/modules/notifications/api/[id]/restore/route.js.map +0 -7
  479. package/dist/modules/notifications/api/batch/route.js +0 -17
  480. package/dist/modules/notifications/api/batch/route.js.map +0 -7
  481. package/dist/modules/notifications/api/feature/route.js +0 -17
  482. package/dist/modules/notifications/api/feature/route.js.map +0 -7
  483. package/dist/modules/notifications/api/mark-all-read/route.js +0 -35
  484. package/dist/modules/notifications/api/mark-all-read/route.js.map +0 -7
  485. package/dist/modules/notifications/api/openapi.js +0 -76
  486. package/dist/modules/notifications/api/openapi.js.map +0 -7
  487. package/dist/modules/notifications/api/role/route.js +0 -17
  488. package/dist/modules/notifications/api/role/route.js.map +0 -7
  489. package/dist/modules/notifications/api/route.js +0 -85
  490. package/dist/modules/notifications/api/route.js.map +0 -7
  491. package/dist/modules/notifications/api/settings/route.js +0 -155
  492. package/dist/modules/notifications/api/settings/route.js.map +0 -7
  493. package/dist/modules/notifications/api/unread-count/route.js +0 -38
  494. package/dist/modules/notifications/api/unread-count/route.js.map +0 -7
  495. package/dist/modules/notifications/backend/config/notifications/page.js +0 -10
  496. package/dist/modules/notifications/backend/config/notifications/page.js.map +0 -7
  497. package/dist/modules/notifications/backend/config/notifications/page.meta.js +0 -24
  498. package/dist/modules/notifications/backend/config/notifications/page.meta.js.map +0 -7
  499. package/dist/modules/notifications/cli.js +0 -16
  500. package/dist/modules/notifications/cli.js.map +0 -7
  501. package/dist/modules/notifications/data/entities.js +0 -112
  502. package/dist/modules/notifications/data/entities.js.map +0 -7
  503. package/dist/modules/notifications/data/validators.js +0 -98
  504. package/dist/modules/notifications/data/validators.js.map +0 -7
  505. package/dist/modules/notifications/di.js +0 -13
  506. package/dist/modules/notifications/di.js.map +0 -7
  507. package/dist/modules/notifications/emails/NotificationEmail.js +0 -58
  508. package/dist/modules/notifications/emails/NotificationEmail.js.map +0 -7
  509. package/dist/modules/notifications/frontend/NotificationInboxPageClient.js +0 -44
  510. package/dist/modules/notifications/frontend/NotificationInboxPageClient.js.map +0 -7
  511. package/dist/modules/notifications/frontend/NotificationSettingsPageClient.js +0 -220
  512. package/dist/modules/notifications/frontend/NotificationSettingsPageClient.js.map +0 -7
  513. package/dist/modules/notifications/index.js +0 -14
  514. package/dist/modules/notifications/index.js.map +0 -7
  515. package/dist/modules/notifications/lib/deliveryConfig.js +0 -107
  516. package/dist/modules/notifications/lib/deliveryConfig.js.map +0 -7
  517. package/dist/modules/notifications/lib/deliveryStrategies.js +0 -14
  518. package/dist/modules/notifications/lib/deliveryStrategies.js.map +0 -7
  519. package/dist/modules/notifications/lib/events.js +0 -12
  520. package/dist/modules/notifications/lib/events.js.map +0 -7
  521. package/dist/modules/notifications/lib/notificationBuilder.js +0 -66
  522. package/dist/modules/notifications/lib/notificationBuilder.js.map +0 -7
  523. package/dist/modules/notifications/lib/notificationFactory.js +0 -54
  524. package/dist/modules/notifications/lib/notificationFactory.js.map +0 -7
  525. package/dist/modules/notifications/lib/notificationMapper.js +0 -34
  526. package/dist/modules/notifications/lib/notificationMapper.js.map +0 -7
  527. package/dist/modules/notifications/lib/notificationRecipients.js +0 -35
  528. package/dist/modules/notifications/lib/notificationRecipients.js.map +0 -7
  529. package/dist/modules/notifications/lib/notificationService.js +0 -279
  530. package/dist/modules/notifications/lib/notificationService.js.map +0 -7
  531. package/dist/modules/notifications/lib/routeHelpers.js +0 -101
  532. package/dist/modules/notifications/lib/routeHelpers.js.map +0 -7
  533. package/dist/modules/notifications/lib/safeHref.js +0 -24
  534. package/dist/modules/notifications/lib/safeHref.js.map +0 -7
  535. package/dist/modules/notifications/migrations/Migration20260123000001.js +0 -70
  536. package/dist/modules/notifications/migrations/Migration20260123000001.js.map +0 -7
  537. package/dist/modules/notifications/migrations/Migration20260126150000.js +0 -37
  538. package/dist/modules/notifications/migrations/Migration20260126150000.js.map +0 -7
  539. package/dist/modules/notifications/migrations/Migration20260129082610.js +0 -13
  540. package/dist/modules/notifications/migrations/Migration20260129082610.js.map +0 -7
  541. package/dist/modules/notifications/subscribers/deliver-notification.js +0 -165
  542. package/dist/modules/notifications/subscribers/deliver-notification.js.map +0 -7
  543. package/dist/modules/notifications/workers/create-notification.worker.js +0 -70
  544. package/dist/modules/notifications/workers/create-notification.worker.js.map +0 -7
  545. package/dist/modules/sales/notifications.client.js +0 -51
  546. package/dist/modules/sales/notifications.client.js.map +0 -7
  547. package/dist/modules/sales/notifications.js +0 -88
  548. package/dist/modules/sales/notifications.js.map +0 -7
  549. package/dist/modules/sales/subscribers/quote-expiring-notification.js +0 -38
  550. package/dist/modules/sales/subscribers/quote-expiring-notification.js.map +0 -7
  551. package/dist/modules/sales/widgets/notifications/SalesOrderCreatedRenderer.js +0 -137
  552. package/dist/modules/sales/widgets/notifications/SalesOrderCreatedRenderer.js.map +0 -7
  553. package/dist/modules/sales/widgets/notifications/SalesQuoteCreatedRenderer.js +0 -137
  554. package/dist/modules/sales/widgets/notifications/SalesQuoteCreatedRenderer.js.map +0 -7
  555. package/dist/modules/sales/widgets/notifications/index.js +0 -7
  556. package/dist/modules/sales/widgets/notifications/index.js.map +0 -7
  557. package/dist/modules/sales/widgets/notifications/useSalesDocumentTotals.js +0 -60
  558. package/dist/modules/sales/widgets/notifications/useSalesDocumentTotals.js.map +0 -7
  559. package/dist/modules/staff/notifications.js +0 -75
  560. package/dist/modules/staff/notifications.js.map +0 -7
  561. package/dist/modules/workflows/notifications.js +0 -28
  562. package/dist/modules/workflows/notifications.js.map +0 -7
  563. package/dist/modules/workflows/subscribers/task-assigned-notification.js +0 -38
  564. package/dist/modules/workflows/subscribers/task-assigned-notification.js.map +0 -7
  565. package/generated/entities/notification/index.ts +0 -27
  566. package/src/modules/auth/api/profile/route.ts +0 -163
  567. package/src/modules/auth/backend/auth/profile/page.meta.ts +0 -9
  568. package/src/modules/auth/backend/auth/profile/page.tsx +0 -174
  569. package/src/modules/auth/notifications.ts +0 -109
  570. package/src/modules/business_rules/notifications.ts +0 -25
  571. package/src/modules/business_rules/subscribers/rule-execution-failed-notification.ts +0 -50
  572. package/src/modules/catalog/notifications.ts +0 -25
  573. package/src/modules/catalog/subscribers/low-stock-notification.ts +0 -52
  574. package/src/modules/customers/notifications.ts +0 -44
  575. package/src/modules/dashboards/lib/role-widgets.ts +0 -80
  576. package/src/modules/directory/api/get/tenants/lookup.ts +0 -75
  577. package/src/modules/notifications/__tests__/deliver-notification.test.ts +0 -195
  578. package/src/modules/notifications/__tests__/deliveryStrategies.test.ts +0 -19
  579. package/src/modules/notifications/__tests__/notificationService.test.ts +0 -208
  580. package/src/modules/notifications/acl.ts +0 -7
  581. package/src/modules/notifications/api/[id]/action/route.ts +0 -75
  582. package/src/modules/notifications/api/[id]/dismiss/route.ts +0 -12
  583. package/src/modules/notifications/api/[id]/read/route.ts +0 -12
  584. package/src/modules/notifications/api/[id]/restore/route.ts +0 -53
  585. package/src/modules/notifications/api/batch/route.ts +0 -14
  586. package/src/modules/notifications/api/feature/route.ts +0 -14
  587. package/src/modules/notifications/api/mark-all-read/route.ts +0 -34
  588. package/src/modules/notifications/api/openapi.ts +0 -76
  589. package/src/modules/notifications/api/role/route.ts +0 -14
  590. package/src/modules/notifications/api/route.ts +0 -92
  591. package/src/modules/notifications/api/settings/route.ts +0 -157
  592. package/src/modules/notifications/api/unread-count/route.ts +0 -38
  593. package/src/modules/notifications/backend/config/notifications/page.meta.ts +0 -22
  594. package/src/modules/notifications/backend/config/notifications/page.tsx +0 -12
  595. package/src/modules/notifications/cli.ts +0 -18
  596. package/src/modules/notifications/data/entities.ts +0 -99
  597. package/src/modules/notifications/data/validators.ts +0 -115
  598. package/src/modules/notifications/di.ts +0 -11
  599. package/src/modules/notifications/emails/NotificationEmail.tsx +0 -98
  600. package/src/modules/notifications/frontend/NotificationInboxPageClient.tsx +0 -42
  601. package/src/modules/notifications/frontend/NotificationSettingsPageClient.tsx +0 -233
  602. package/src/modules/notifications/i18n/de.json +0 -50
  603. package/src/modules/notifications/i18n/en.json +0 -50
  604. package/src/modules/notifications/i18n/es.json +0 -50
  605. package/src/modules/notifications/i18n/pl.json +0 -50
  606. package/src/modules/notifications/index.ts +0 -12
  607. package/src/modules/notifications/lib/deliveryConfig.ts +0 -153
  608. package/src/modules/notifications/lib/deliveryStrategies.ts +0 -50
  609. package/src/modules/notifications/lib/events.ts +0 -48
  610. package/src/modules/notifications/lib/notificationBuilder.ts +0 -121
  611. package/src/modules/notifications/lib/notificationFactory.ts +0 -76
  612. package/src/modules/notifications/lib/notificationMapper.ts +0 -33
  613. package/src/modules/notifications/lib/notificationRecipients.ts +0 -83
  614. package/src/modules/notifications/lib/notificationService.ts +0 -414
  615. package/src/modules/notifications/lib/routeHelpers.ts +0 -151
  616. package/src/modules/notifications/lib/safeHref.ts +0 -29
  617. package/src/modules/notifications/migrations/.snapshot-open-mercato.json +0 -336
  618. package/src/modules/notifications/migrations/Migration20260123000001.ts +0 -73
  619. package/src/modules/notifications/migrations/Migration20260126150000.ts +0 -39
  620. package/src/modules/notifications/migrations/Migration20260129082610.ts +0 -13
  621. package/src/modules/notifications/subscribers/deliver-notification.ts +0 -204
  622. package/src/modules/notifications/workers/create-notification.worker.ts +0 -122
  623. package/src/modules/sales/notifications.client.ts +0 -65
  624. package/src/modules/sales/notifications.ts +0 -82
  625. package/src/modules/sales/subscribers/quote-expiring-notification.ts +0 -53
  626. package/src/modules/sales/widgets/notifications/SalesOrderCreatedRenderer.tsx +0 -156
  627. package/src/modules/sales/widgets/notifications/SalesQuoteCreatedRenderer.tsx +0 -156
  628. package/src/modules/sales/widgets/notifications/index.ts +0 -2
  629. package/src/modules/sales/widgets/notifications/useSalesDocumentTotals.ts +0 -81
  630. package/src/modules/staff/notifications.ts +0 -71
  631. package/src/modules/workflows/notifications.ts +0 -25
  632. package/src/modules/workflows/subscribers/task-assigned-notification.ts +0 -53
@@ -366,15 +366,13 @@ export default function QueryIndexesTable() {
366
366
  onSortingChange={setSorting}
367
367
  perspective={{ tableId: 'query_index.status.list' }}
368
368
  rowActions={(row) => {
369
- const items: Array<{ id: string; label: string; onSelect: () => void; destructive?: boolean }> = [
370
- { id: 'reindex', label: t('query_index.table.actions.reindex'), onSelect: () => trigger('reindex', row.entityId) },
369
+ const items: Array<{ label: string; onSelect: () => void; destructive?: boolean }> = [
370
+ { label: t('query_index.table.actions.reindex'), onSelect: () => trigger('reindex', row.entityId) },
371
371
  {
372
- id: 'reindex-force',
373
372
  label: t('query_index.table.actions.reindexForce'),
374
373
  onSelect: () => trigger('reindex', row.entityId, { force: true }),
375
374
  },
376
375
  {
377
- id: 'purge',
378
376
  label: t('query_index.table.actions.purge'),
379
377
  destructive: true,
380
378
  onSelect: () => trigger('purge', row.entityId),
@@ -384,12 +382,10 @@ export default function QueryIndexesTable() {
384
382
  if (row.vectorEnabled) {
385
383
  items.push(
386
384
  {
387
- id: 'vector-reindex',
388
385
  label: t('query_index.table.actions.vectorReindex'),
389
386
  onSelect: () => triggerVector('reindex', row.entityId),
390
387
  },
391
388
  {
392
- id: 'vector-purge',
393
389
  label: t('query_index.table.actions.vectorPurge'),
394
390
  destructive: true,
395
391
  onSelect: () => triggerVector('purge', row.entityId),
@@ -400,12 +396,10 @@ export default function QueryIndexesTable() {
400
396
  if (row.fulltextEnabled) {
401
397
  items.push(
402
398
  {
403
- id: 'fulltext-reindex',
404
399
  label: t('query_index.table.actions.fulltextReindex'),
405
400
  onSelect: () => triggerFulltext('reindex', row.entityId),
406
401
  },
407
402
  {
408
- id: 'fulltext-purge',
409
403
  label: t('query_index.table.actions.fulltextPurge'),
410
404
  destructive: true,
411
405
  onSelect: () => triggerFulltext('purge', row.entityId),
@@ -266,10 +266,10 @@ export default function ResourcesResourceTypesPage() {
266
266
  rowActions={(row) => (
267
267
  <RowActions
268
268
  items={[
269
- { id: 'edit', label: translations.actions.edit, href: `/backend/resources/resource-types/${row.id}/edit` },
269
+ { label: translations.actions.edit, href: `/backend/resources/resource-types/${row.id}/edit` },
270
270
  ...(row.resourceCount > 0
271
271
  ? []
272
- : [{ id: 'delete', label: translations.actions.delete, destructive: true, onSelect: () => handleDelete(row) }]),
272
+ : [{ label: translations.actions.delete, destructive: true, onSelect: () => handleDelete(row) }]),
273
273
  ]}
274
274
  />
275
275
  )}
@@ -481,8 +481,8 @@ export default function ResourcesResourcesPage() {
481
481
  if (!canManage || row.rowKind !== 'resource') return null
482
482
  return (
483
483
  <RowActions items={[
484
- { id: 'edit', label: t('common.edit', 'Edit'), href: `/backend/resources/resources/${encodeURIComponent(row.id)}` },
485
- { id: 'delete', label: t('common.delete', 'Delete'), destructive: true, onSelect: () => { void handleDelete(row) } },
484
+ { label: t('common.edit', 'Edit'), href: `/backend/resources/resources/${encodeURIComponent(row.id)}` },
485
+ { label: t('common.delete', 'Delete'), destructive: true, onSelect: () => { void handleDelete(row) } },
486
486
  ]} />
487
487
  )
488
488
  }}
@@ -1,6 +1,7 @@
1
1
  export const features = [
2
2
  { id: 'sales.orders.view', title: 'View sales orders', module: 'sales' },
3
3
  { id: 'sales.orders.manage', title: 'Manage sales orders', module: 'sales' },
4
+ { id: 'sales.orders.approve', title: 'Approve sales orders', module: 'sales' },
4
5
  { id: 'sales.quotes.view', title: 'View sales quotes', module: 'sales' },
5
6
  { id: 'sales.quotes.manage', title: 'Manage sales quotes', module: 'sales' },
6
7
  { id: 'sales.shipments.manage', title: 'Manage order shipments', module: 'sales' },
@@ -334,12 +334,10 @@ export default function SalesChannelOffersListPage() {
334
334
  <RowActions
335
335
  items={[
336
336
  {
337
- id: 'edit',
338
337
  label: t('sales.channels.offers.actions.edit', 'Edit'),
339
338
  href: `/backend/sales/channels/${row.channelId}/offers/${row.id}/edit`,
340
339
  },
341
340
  {
342
- id: 'delete',
343
341
  label: t('sales.channels.offers.actions.delete', 'Delete'),
344
342
  onSelect: () => handleDelete(row),
345
343
  destructive: true,
@@ -191,12 +191,10 @@ export default function SalesChannelsPage() {
191
191
  <RowActions
192
192
  items={[
193
193
  {
194
- id: 'edit',
195
194
  label: t('sales.channels.table.actions.edit', 'Edit'),
196
195
  href: `/backend/sales/channels/${row.id}/edit`,
197
196
  },
198
197
  {
199
- id: 'delete',
200
198
  label: t('sales.channels.table.actions.delete', 'Delete'),
201
199
  onSelect: () => handleDelete(row),
202
200
  },
@@ -50,6 +50,9 @@ import {
50
50
  emitSalesDocumentTotalsRefresh,
51
51
  subscribeSalesDocumentTotalsRefresh,
52
52
  } from '@open-mercato/core/modules/sales/lib/frontend/documentTotalsEvents'
53
+ import {
54
+ subscribeSalesDocumentDataRefresh,
55
+ } from '@open-mercato/core/modules/sales/lib/frontend/documentDataEvents'
53
56
  import type { CommentSummary, SectionAction } from '@open-mercato/ui/backend/detail'
54
57
  import { ICON_SUGGESTIONS } from '@open-mercato/core/modules/customers/lib/dictionaries'
55
58
  import { readMarkdownPreferenceCookie, writeMarkdownPreferenceCookie } from '@open-mercato/core/modules/customers/lib/markdownPreference'
@@ -2601,6 +2604,19 @@ export default function SalesDocumentDetailPage({
2601
2604
  [kind, record?.id, refreshDocumentTotals],
2602
2605
  )
2603
2606
 
2607
+ // Subscribe to document data refresh events (e.g., from workflow status updates)
2608
+ React.useEffect(
2609
+ () =>
2610
+ subscribeSalesDocumentDataRefresh((detail) => {
2611
+ if (!record?.id) return
2612
+ if (detail.documentId !== record.id) return
2613
+ if (detail.kind && detail.kind !== kind) return
2614
+ // Increment reloadKey to trigger a full document reload
2615
+ setReloadKey((prev) => prev + 1)
2616
+ }),
2617
+ [kind, record?.id],
2618
+ )
2619
+
2604
2620
  const statusDictionaryMap = React.useMemo(
2605
2621
  () =>
2606
2622
  createDictionaryMap(
@@ -4,15 +4,13 @@ import { randomUUID } from 'crypto'
4
4
  import { z } from 'zod'
5
5
  import { registerCommand } from '@open-mercato/shared/lib/commands'
6
6
  import type { CommandHandler } from '@open-mercato/shared/lib/commands'
7
- import { emitCrudSideEffects, requireId } from '@open-mercato/shared/lib/commands/helpers'
7
+ import { emitCrudSideEffects, requireId, type CrudEventsConfig } from '@open-mercato/shared/lib/commands/helpers'
8
8
  import type { EntityManager } from '@mikro-orm/postgresql'
9
9
  import type { EventBus } from '@open-mercato/events'
10
10
  import type { DataEngine } from '@open-mercato/shared/lib/data/engine'
11
11
  import { CrudHttpError } from '@open-mercato/shared/lib/crud/errors'
12
12
  import { deriveResourceFromCommandId, invalidateCrudCache } from '@open-mercato/shared/lib/crud/cache'
13
13
  import { resolveTranslations } from '@open-mercato/shared/lib/i18n/server'
14
- import { resolveNotificationService } from '../../notifications/lib/notificationService'
15
- import { buildFeatureNotificationFromType } from '../../notifications/lib/notificationBuilder'
16
14
  import { setRecordCustomFields } from '@open-mercato/core/modules/entities/lib/helpers'
17
15
  import { loadCustomFieldValues } from '@open-mercato/shared/lib/crud/custom-fields'
18
16
  import { normalizeCustomFieldValues } from '@open-mercato/shared/lib/custom-fields/normalize'
@@ -90,7 +88,29 @@ import { resolveDictionaryEntryValue } from '../lib/dictionaries'
90
88
  import { resolveStatusEntryIdByValue } from '../lib/statusHelpers'
91
89
  import { SalesDocumentNumberGenerator } from '../services/salesDocumentNumberGenerator'
92
90
  import { loadSalesSettings } from './settings'
93
- import { notificationTypes } from '../notifications'
91
+
92
+ // CRUD events configuration for workflow triggers
93
+ const orderCrudEvents: CrudEventsConfig<SalesOrder> = {
94
+ module: 'sales',
95
+ entity: 'orders',
96
+ persistent: true,
97
+ buildPayload: (ctx) => ({
98
+ id: ctx.identifiers.id,
99
+ organizationId: ctx.identifiers.organizationId,
100
+ tenantId: ctx.identifiers.tenantId,
101
+ }),
102
+ }
103
+
104
+ const quoteCrudEvents: CrudEventsConfig<SalesQuote> = {
105
+ module: 'sales',
106
+ entity: 'quotes',
107
+ persistent: true,
108
+ buildPayload: (ctx) => ({
109
+ id: ctx.identifiers.id,
110
+ organizationId: ctx.identifiers.organizationId,
111
+ tenantId: ctx.identifiers.tenantId,
112
+ }),
113
+ }
94
114
 
95
115
  type DocumentAddressSnapshot = {
96
116
  id: string
@@ -3114,36 +3134,30 @@ const createQuoteCommand: CommandHandler<QuoteCreateInput, { quoteId: string }>
3114
3134
  })
3115
3135
  await em.flush()
3116
3136
 
3117
- // Create notification for users with sales.quotes.manage feature
3118
- try {
3119
- const notificationService = resolveNotificationService(ctx.container)
3120
- const typeDef = notificationTypes.find((type) => type.type === 'sales.quote.created')
3121
- if (typeDef) {
3122
- const totalAmount = quote.grandTotalGrossAmount && quote.currencyCode
3123
- ? `${quote.grandTotalGrossAmount} ${quote.currencyCode}`
3124
- : ''
3125
- const totalDisplay = totalAmount ? ` (${totalAmount})` : ''
3126
- const notificationInput = buildFeatureNotificationFromType(typeDef, {
3127
- requiredFeature: 'sales.quotes.manage',
3128
- bodyVariables: {
3129
- quoteNumber: quote.quoteNumber,
3130
- total: totalDisplay,
3131
- totalAmount,
3132
- },
3133
- sourceEntityType: 'sales:quote',
3134
- sourceEntityId: quote.id,
3135
- linkHref: `/backend/sales/quotes/${quote.id}`,
3136
- })
3137
+ // Emit CRUD side effects to trigger workflow event listeners
3138
+ const dataEngine = ctx.container.resolve('dataEngine') as DataEngine
3139
+ await emitCrudSideEffects({
3140
+ dataEngine,
3141
+ action: 'created',
3142
+ entity: quote,
3143
+ identifiers: {
3144
+ id: quote.id,
3145
+ organizationId: quote.organizationId,
3146
+ tenantId: quote.tenantId,
3147
+ },
3148
+ events: quoteCrudEvents,
3149
+ indexer: { entityType: E.sales.sales_quote },
3150
+ })
3137
3151
 
3138
- await notificationService.createForFeature(notificationInput, {
3139
- tenantId: quote.tenantId,
3140
- organizationId: quote.organizationId ?? null,
3141
- })
3142
- }
3143
- } catch (err) {
3144
- // Notification creation is non-critical, don't fail the command
3145
- console.error('[sales.quotes.create] Failed to create notification:', err)
3146
- }
3152
+ // Invalidate cache
3153
+ const resourceKind = deriveResourceFromCommandId(createQuoteCommand.id) ?? 'sales.quote'
3154
+ await invalidateCrudCache(
3155
+ ctx.container,
3156
+ resourceKind,
3157
+ { id: quote.id, organizationId: quote.organizationId, tenantId: quote.tenantId },
3158
+ ctx.auth?.tenantId ?? null,
3159
+ 'created'
3160
+ )
3147
3161
 
3148
3162
  return { quoteId: quote.id }
3149
3163
  },
@@ -3816,36 +3830,30 @@ const createOrderCommand: CommandHandler<OrderCreateInput, { orderId: string }>
3816
3830
  })
3817
3831
  await em.flush()
3818
3832
 
3819
- // Create notification for users with sales.orders.manage feature
3820
- try {
3821
- const notificationService = resolveNotificationService(ctx.container)
3822
- const typeDef = notificationTypes.find((type) => type.type === 'sales.order.created')
3823
- if (typeDef) {
3824
- const totalAmount = order.grandTotalGrossAmount && order.currencyCode
3825
- ? `${order.grandTotalGrossAmount} ${order.currencyCode}`
3826
- : ''
3827
- const totalDisplay = totalAmount ? ` (${totalAmount})` : ''
3828
- const notificationInput = buildFeatureNotificationFromType(typeDef, {
3829
- requiredFeature: 'sales.orders.manage',
3830
- bodyVariables: {
3831
- orderNumber: order.orderNumber,
3832
- total: totalDisplay,
3833
- totalAmount,
3834
- },
3835
- sourceEntityType: 'sales:order',
3836
- sourceEntityId: order.id,
3837
- linkHref: `/backend/sales/orders/${order.id}`,
3838
- })
3833
+ // Emit CRUD side effects to trigger workflow event listeners
3834
+ const dataEngine = ctx.container.resolve('dataEngine') as DataEngine
3835
+ await emitCrudSideEffects({
3836
+ dataEngine,
3837
+ action: 'created',
3838
+ entity: order,
3839
+ identifiers: {
3840
+ id: order.id,
3841
+ organizationId: order.organizationId,
3842
+ tenantId: order.tenantId,
3843
+ },
3844
+ events: orderCrudEvents,
3845
+ indexer: { entityType: E.sales.sales_order },
3846
+ })
3839
3847
 
3840
- await notificationService.createForFeature(notificationInput, {
3841
- tenantId: order.tenantId,
3842
- organizationId: order.organizationId ?? null,
3843
- })
3844
- }
3845
- } catch (err) {
3846
- // Notification creation is non-critical, don't fail the command
3847
- console.error('[sales.orders.create] Failed to create notification:', err)
3848
- }
3848
+ // Invalidate cache
3849
+ const resourceKind = deriveResourceFromCommandId(createOrderCommand.id) ?? 'sales.order'
3850
+ await invalidateCrudCache(
3851
+ ctx.container,
3852
+ resourceKind,
3853
+ { id: order.id, organizationId: order.organizationId, tenantId: order.tenantId },
3854
+ ctx.auth?.tenantId ?? null,
3855
+ 'created'
3856
+ )
3849
3857
 
3850
3858
  return { orderId: order.id }
3851
3859
  },
@@ -35,9 +35,6 @@ import { invalidateCrudCache } from '@open-mercato/shared/lib/crud/cache'
35
35
  import { emitCrudSideEffects } from '@open-mercato/shared/lib/commands/helpers'
36
36
  import type { DataEngine } from '@open-mercato/shared/lib/data/engine'
37
37
  import { findOneWithDecryption, findWithDecryption } from '@open-mercato/shared/lib/encryption/find'
38
- import { resolveNotificationService } from '../../notifications/lib/notificationService'
39
- import { buildFeatureNotificationFromType } from '../../notifications/lib/notificationBuilder'
40
- import { notificationTypes } from '../notifications'
41
38
 
42
39
  export type PaymentAllocationSnapshot = {
43
40
  id: string
@@ -425,36 +422,6 @@ const createPaymentCommand: CommandHandler<
425
422
  const totals = await recomputeOrderPaymentTotals(em, order)
426
423
  await em.flush()
427
424
  await invalidateOrderCache(ctx.container, order, ctx.auth?.tenantId ?? null)
428
-
429
- // Create notification for payment received
430
- try {
431
- const notificationService = resolveNotificationService(ctx.container)
432
- const typeDef = notificationTypes.find((type) => type.type === 'sales.payment.received')
433
- if (typeDef) {
434
- const amountDisplay = payment.amount && payment.currencyCode
435
- ? `${payment.currencyCode} ${payment.amount}`
436
- : ''
437
- const notificationInput = buildFeatureNotificationFromType(typeDef, {
438
- requiredFeature: 'sales.orders.manage',
439
- bodyVariables: {
440
- orderNumber: order.orderNumber ?? '',
441
- amount: amountDisplay,
442
- },
443
- sourceEntityType: 'sales:order',
444
- sourceEntityId: order.id,
445
- linkHref: `/backend/sales/orders/${order.id}`,
446
- })
447
-
448
- await notificationService.createForFeature(notificationInput, {
449
- tenantId: payment.tenantId,
450
- organizationId: payment.organizationId ?? null,
451
- })
452
- }
453
- } catch (err) {
454
- // Notification creation is non-critical, don't fail the command
455
- console.error('[sales.payments.create] Failed to create notification:', err)
456
- }
457
-
458
425
  return { paymentId: payment.id, orderTotals: totals }
459
426
  },
460
427
  captureAfter: async (_input, result, ctx) => {
@@ -333,8 +333,8 @@ export function AdjustmentKindSettings() {
333
333
  rowActions={(entry) => (
334
334
  <RowActions
335
335
  items={[
336
- { id: 'edit', label: labels.edit, onSelect: () => openDialog({ mode: 'edit', entry }) },
337
- { id: 'delete', label: labels.delete, destructive: true, onSelect: () => { void handleDelete(entry) } },
336
+ { label: labels.edit, onSelect: () => openDialog({ mode: 'edit', entry }) },
337
+ { label: labels.delete, destructive: true, onSelect: () => { void handleDelete(entry) } },
338
338
  ]}
339
339
  />
340
340
  )}
@@ -526,8 +526,8 @@ export function PaymentMethodsSettings() {
526
526
  rowActions={(row) => (
527
527
  <RowActions
528
528
  items={[
529
- { id: 'edit', label: translations.actions.edit, onSelect: () => openEdit(row) },
530
- { id: 'delete', label: translations.actions.delete, destructive: true, onSelect: () => deleteEntry(row) },
529
+ { label: translations.actions.edit, onSelect: () => openEdit(row) },
530
+ { label: translations.actions.delete, destructive: true, onSelect: () => deleteEntry(row) },
531
531
  ]}
532
532
  />
533
533
  )}
@@ -820,8 +820,8 @@ export function ShippingMethodsSettings() {
820
820
  rowActions={(row) => (
821
821
  <RowActions
822
822
  items={[
823
- { id: 'edit', label: translations.actions.edit, onSelect: () => openEdit(row) },
824
- { id: 'delete', label: translations.actions.delete, destructive: true, onSelect: () => deleteEntry(row) },
823
+ { label: translations.actions.edit, onSelect: () => openEdit(row) },
824
+ { label: translations.actions.delete, destructive: true, onSelect: () => deleteEntry(row) },
825
825
  ]}
826
826
  />
827
827
  )}
@@ -335,8 +335,8 @@ export function TaxRatesSettings() {
335
335
  rowActions={(row) => (
336
336
  <RowActions
337
337
  items={[
338
- { id: 'edit', label: translations.actions.edit, onSelect: () => openEdit(row) },
339
- { id: 'delete', label: translations.actions.delete, destructive: true, onSelect: () => deleteEntry(row) },
338
+ { label: translations.actions.edit, onSelect: () => openEdit(row) },
339
+ { label: translations.actions.delete, destructive: true, onSelect: () => deleteEntry(row) },
340
340
  ]}
341
341
  />
342
342
  )}
@@ -185,12 +185,10 @@ export function SalesChannelOffersPanel({ channelId, channelName }: { channelId:
185
185
  <RowActions
186
186
  items={[
187
187
  {
188
- id: 'edit',
189
188
  label: t('sales.channels.offers.actions.edit', 'Edit'),
190
189
  href: `/backend/sales/channels/${channelId}/offers/${row.id}/edit`,
191
190
  },
192
191
  {
193
- id: 'delete',
194
192
  label: t('sales.channels.offers.actions.delete', 'Delete'),
195
193
  onSelect: () => handleDelete(row),
196
194
  destructive: true,
@@ -427,12 +427,10 @@ export function SalesDocumentAdjustmentsSection({
427
427
  <RowActions
428
428
  items={[
429
429
  {
430
- id: 'edit',
431
430
  label: t('ui.actions.edit', 'Edit'),
432
431
  onSelect: () => handleEdit(row),
433
432
  },
434
433
  {
435
- id: 'delete',
436
434
  label: t('ui.actions.delete', 'Delete'),
437
435
  destructive: true,
438
436
  onSelect: () => handleDelete(row),
@@ -295,9 +295,8 @@ export function SalesDocumentPaymentsSection({
295
295
  return (
296
296
  <RowActions
297
297
  items={[
298
- { id: 'edit', label: editActionLabel, onSelect: () => openEditPayment(row.original) },
298
+ { label: editActionLabel, onSelect: () => openEditPayment(row.original) },
299
299
  {
300
- id: 'delete',
301
300
  label: deleteActionLabel,
302
301
  destructive: true,
303
302
  onSelect: () => void handleDelete(row.original),
@@ -699,12 +699,10 @@ export function SalesDocumentsTable({ kind }: { kind: SalesDocumentKind }) {
699
699
  <RowActions
700
700
  items={[
701
701
  {
702
- id: 'open',
703
702
  label: t('sales.documents.list.table.open', 'Open'),
704
703
  href: `/backend/sales/${resource}/${row.id}?kind=${kind}`,
705
704
  },
706
705
  {
707
- id: 'delete',
708
706
  label:
709
707
  kind === 'order'
710
708
  ? t('sales.documents.list.table.deleteOrder', 'Delete order')
@@ -0,0 +1,82 @@
1
+ import { createModuleEvents } from '@open-mercato/shared/modules/events'
2
+
3
+ /**
4
+ * Sales Module Events
5
+ *
6
+ * Declares all events that can be emitted by the sales module.
7
+ */
8
+ const events = [
9
+ // Orders
10
+ { id: 'sales.orders.created', label: 'Sales Order Created', entity: 'orders', category: 'crud' },
11
+ { id: 'sales.orders.updated', label: 'Sales Order Updated', entity: 'orders', category: 'crud' },
12
+ { id: 'sales.orders.deleted', label: 'Sales Order Deleted', entity: 'orders', category: 'crud' },
13
+
14
+ // Quotes
15
+ { id: 'sales.quotes.created', label: 'Quote Created', entity: 'quotes', category: 'crud' },
16
+ { id: 'sales.quotes.updated', label: 'Quote Updated', entity: 'quotes', category: 'crud' },
17
+ { id: 'sales.quotes.deleted', label: 'Quote Deleted', entity: 'quotes', category: 'crud' },
18
+
19
+ // Invoices
20
+ { id: 'sales.invoices.created', label: 'Invoice Created', entity: 'invoices', category: 'crud' },
21
+ { id: 'sales.invoices.updated', label: 'Invoice Updated', entity: 'invoices', category: 'crud' },
22
+ { id: 'sales.invoices.deleted', label: 'Invoice Deleted', entity: 'invoices', category: 'crud' },
23
+
24
+ // Order Lines
25
+ { id: 'sales.lines.created', label: 'Order Line Created', entity: 'lines', category: 'crud' },
26
+ { id: 'sales.lines.updated', label: 'Order Line Updated', entity: 'lines', category: 'crud' },
27
+ { id: 'sales.lines.deleted', label: 'Order Line Deleted', entity: 'lines', category: 'crud' },
28
+
29
+ // Payments
30
+ { id: 'sales.payments.created', label: 'Payment Created', entity: 'payments', category: 'crud' },
31
+ { id: 'sales.payments.updated', label: 'Payment Updated', entity: 'payments', category: 'crud' },
32
+ { id: 'sales.payments.deleted', label: 'Payment Deleted', entity: 'payments', category: 'crud' },
33
+
34
+ // Shipments
35
+ { id: 'sales.shipments.created', label: 'Shipment Created', entity: 'shipments', category: 'crud' },
36
+ { id: 'sales.shipments.updated', label: 'Shipment Updated', entity: 'shipments', category: 'crud' },
37
+ { id: 'sales.shipments.deleted', label: 'Shipment Deleted', entity: 'shipments', category: 'crud' },
38
+
39
+ // Notes
40
+ { id: 'sales.notes.created', label: 'Note Created', entity: 'notes', category: 'crud' },
41
+ { id: 'sales.notes.updated', label: 'Note Updated', entity: 'notes', category: 'crud' },
42
+ { id: 'sales.notes.deleted', label: 'Note Deleted', entity: 'notes', category: 'crud' },
43
+
44
+ // Configuration
45
+ { id: 'sales.configuration.created', label: 'Configuration Created', entity: 'configuration', category: 'crud' },
46
+ { id: 'sales.configuration.updated', label: 'Configuration Updated', entity: 'configuration', category: 'crud' },
47
+ { id: 'sales.configuration.deleted', label: 'Configuration Deleted', entity: 'configuration', category: 'crud' },
48
+
49
+ // Lifecycle events - Document calculations
50
+ { id: 'sales.document.totals.calculated', label: 'Document Totals Calculated', category: 'lifecycle' },
51
+ { id: 'sales.document.calculate.before', label: 'Before Document Calculate', category: 'lifecycle', excludeFromTriggers: true },
52
+ { id: 'sales.document.calculate.after', label: 'After Document Calculate', category: 'lifecycle', excludeFromTriggers: true },
53
+
54
+ // Lifecycle events - Line calculations
55
+ { id: 'sales.line.calculate.before', label: 'Before Line Calculate', category: 'lifecycle', excludeFromTriggers: true },
56
+ { id: 'sales.line.calculate.after', label: 'After Line Calculate', category: 'lifecycle', excludeFromTriggers: true },
57
+
58
+ // Lifecycle events - Tax calculations
59
+ { id: 'sales.tax.calculate.before', label: 'Before Tax Calculate', category: 'lifecycle', excludeFromTriggers: true },
60
+ { id: 'sales.tax.calculate.after', label: 'After Tax Calculate', category: 'lifecycle', excludeFromTriggers: true },
61
+
62
+ // Lifecycle events - Shipping adjustments
63
+ { id: 'sales.shipping.adjustments.apply.before', label: 'Before Shipping Adjustments', category: 'lifecycle', excludeFromTriggers: true },
64
+ { id: 'sales.shipping.adjustments.apply.after', label: 'After Shipping Adjustments', category: 'lifecycle', excludeFromTriggers: true },
65
+
66
+ // Lifecycle events - Payment adjustments
67
+ { id: 'sales.payment.adjustments.apply.before', label: 'Before Payment Adjustments', category: 'lifecycle', excludeFromTriggers: true },
68
+ { id: 'sales.payment.adjustments.apply.after', label: 'After Payment Adjustments', category: 'lifecycle', excludeFromTriggers: true },
69
+ ] as const
70
+
71
+ export const eventsConfig = createModuleEvents({
72
+ moduleId: 'sales',
73
+ events,
74
+ })
75
+
76
+ /** Type-safe event emitter for sales module */
77
+ export const emitSalesEvent = eventsConfig.emit
78
+
79
+ /** Event IDs that can be emitted by the sales module */
80
+ export type SalesEventId = typeof events[number]['id']
81
+
82
+ export default eventsConfig
@@ -9,26 +9,6 @@
9
9
  "title": "Vertriebsmanagement",
10
10
  "description": "Angebote, Aufträge, Fulfillment, Rechnungsstellung und Zahlungen verbunden mit dem Produktkatalog."
11
11
  },
12
- "notifications": {
13
- "order": {
14
- "created": {
15
- "title": "Neue Bestellung",
16
- "body": "Bestellung {orderNumber} wurde erstellt{total}"
17
- }
18
- },
19
- "quote": {
20
- "created": {
21
- "title": "Neues Angebot",
22
- "body": "Angebot {quoteNumber} wurde erstellt{total}"
23
- }
24
- },
25
- "renderer": {
26
- "viewOrder": "Bestellung anzeigen",
27
- "viewQuote": "Angebot anzeigen",
28
- "assignedToYou": "Ihnen zugewiesen",
29
- "pendingReview": "Ausstehende Prüfung"
30
- }
31
- },
32
12
  "quotes": {
33
13
  "send": {
34
14
  "action": "An Kunden senden",
@@ -9,26 +9,6 @@
9
9
  "title": "Sales Management",
10
10
  "description": "Quotes, orders, fulfillment, invoicing, and payments connected to the product catalog."
11
11
  },
12
- "notifications": {
13
- "order": {
14
- "created": {
15
- "title": "New Sales Order",
16
- "body": "Sales order {orderNumber} has been created{total}"
17
- }
18
- },
19
- "quote": {
20
- "created": {
21
- "title": "New Sales Quote",
22
- "body": "Sales quote {quoteNumber} has been created{total}"
23
- }
24
- },
25
- "renderer": {
26
- "viewOrder": "View Order",
27
- "viewQuote": "View Quote",
28
- "assignedToYou": "Assigned to you",
29
- "pendingReview": "Pending review"
30
- }
31
- },
32
12
  "quotes": {
33
13
  "send": {
34
14
  "action": "Send to customer",
@@ -1536,9 +1516,5 @@
1536
1516
  "sales.search.badge.deliveryWindow": "Delivery window",
1537
1517
  "sales.search.badge.paymentMethod": "Payment method",
1538
1518
  "sales.search.badge.taxRate": "Tax rate",
1539
- "sales.search.badge.documentTag": "Document tag",
1540
- "sales.notifications.payment.received.title": "Payment Received",
1541
- "sales.notifications.payment.received.body": "Payment of {amount} received for order #{orderNumber}",
1542
- "sales.notifications.quote.expiring.title": "Quote Expiring Soon",
1543
- "sales.notifications.quote.expiring.body": "Quote #{quoteNumber} expires in {daysUntilExpiry} days ({expiresAt})"
1519
+ "sales.search.badge.documentTag": "Document tag"
1544
1520
  }
@@ -9,26 +9,6 @@
9
9
  "title": "Gestión de ventas",
10
10
  "description": "Cotizaciones, pedidos, cumplimiento, facturación y pagos conectados al catálogo de productos."
11
11
  },
12
- "notifications": {
13
- "order": {
14
- "created": {
15
- "title": "Nuevo pedido de venta",
16
- "body": "El pedido {orderNumber} ha sido creado{total}"
17
- }
18
- },
19
- "quote": {
20
- "created": {
21
- "title": "Nueva cotización",
22
- "body": "La cotización {quoteNumber} ha sido creada{total}"
23
- }
24
- },
25
- "renderer": {
26
- "viewOrder": "Ver pedido",
27
- "viewQuote": "Ver cotización",
28
- "assignedToYou": "Asignado a usted",
29
- "pendingReview": "Pendiente de revisión"
30
- }
31
- },
32
12
  "quotes": {
33
13
  "send": {
34
14
  "action": "Enviar al cliente",