@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
@@ -0,0 +1,109 @@
1
+ /**
2
+ * Workflows Module - Event Trigger Subscriber
3
+ *
4
+ * Wildcard subscriber that listens to all events and evaluates
5
+ * workflow event triggers. When a matching trigger is found,
6
+ * the corresponding workflow is started with mapped context.
7
+ */
8
+
9
+ import type { EntityManager } from '@mikro-orm/core'
10
+ import type { AwilixContainer } from 'awilix'
11
+
12
+ export const metadata = {
13
+ event: '*', // Subscribe to ALL events
14
+ persistent: true, // Ensure reliability
15
+ id: 'workflows:event-trigger',
16
+ }
17
+
18
+ // Events that should never trigger workflows (internal/system events)
19
+ const EXCLUDED_EVENT_PREFIXES = [
20
+ 'query_index.', // Internal indexing events
21
+ 'search.', // Internal search events
22
+ 'workflows.', // Workflow internal events (avoid recursion)
23
+ 'cache.', // Cache events
24
+ 'queue.', // Queue events
25
+ ]
26
+
27
+ /**
28
+ * Check if an event should be excluded from trigger processing.
29
+ */
30
+ function isExcludedEvent(eventName: string): boolean {
31
+ return EXCLUDED_EVENT_PREFIXES.some(prefix => eventName.startsWith(prefix))
32
+ }
33
+
34
+ export default async function handle(
35
+ payload: unknown,
36
+ ctx: { resolve: <T = unknown>(name: string) => T; eventName?: string }
37
+ ): Promise<void> {
38
+ const eventName = ctx.eventName
39
+ if (!eventName) {
40
+ // Skip if no event name (shouldn't happen, but be safe)
41
+ return
42
+ }
43
+
44
+ // Skip excluded events
45
+ if (isExcludedEvent(eventName)) {
46
+ return
47
+ }
48
+
49
+ // Ensure payload is an object
50
+ const eventPayload = (payload && typeof payload === 'object' ? payload : {}) as Record<string, unknown>
51
+
52
+ // Extract tenant/org from payload
53
+ const tenantId = eventPayload?.tenantId as string | undefined
54
+ const organizationId = eventPayload?.organizationId as string | undefined
55
+
56
+ // Skip events without tenant context
57
+ if (!tenantId || !organizationId) {
58
+ return
59
+ }
60
+
61
+ // Get dependencies from container
62
+ let em: EntityManager
63
+ let container: AwilixContainer
64
+
65
+ try {
66
+ em = ctx.resolve<EntityManager>('em')
67
+ // Create a minimal container wrapper using the resolve function
68
+ // This avoids the need to register 'container' as a self-reference in DI
69
+ container = {
70
+ resolve: ctx.resolve,
71
+ // Provide minimal AwilixContainer interface for type compatibility
72
+ cradle: new Proxy({}, {
73
+ get: (_target, prop: string) => ctx.resolve(prop),
74
+ }),
75
+ } as unknown as AwilixContainer
76
+ } catch (error) {
77
+ // DI not available - skip
78
+ console.warn(`[workflow-trigger] Cannot resolve dependencies for event "${eventName}":`, error)
79
+ return
80
+ }
81
+
82
+ // Import service dynamically to avoid circular dependencies
83
+ const { processEventTriggers } = await import('../lib/event-trigger-service')
84
+
85
+ try {
86
+ const result = await processEventTriggers(em, container, {
87
+ eventName,
88
+ payload: eventPayload,
89
+ tenantId,
90
+ organizationId,
91
+ })
92
+
93
+ if (result.triggered > 0) {
94
+ console.log(
95
+ `[workflow-trigger] Triggered ${result.triggered} workflow(s) for "${eventName}"` +
96
+ (result.skipped > 0 ? ` (${result.skipped} skipped)` : '') +
97
+ (result.errors.length > 0 ? ` (${result.errors.length} errors)` : '')
98
+ )
99
+ }
100
+
101
+ if (result.errors.length > 0) {
102
+ for (const err of result.errors) {
103
+ console.error(`[workflow-trigger] Trigger ${err.triggerId} failed:`, err.error)
104
+ }
105
+ }
106
+ } catch (error) {
107
+ console.error(`[workflow-trigger] Error processing triggers for "${eventName}":`, error)
108
+ }
109
+ }
@@ -0,0 +1,446 @@
1
+ "use client"
2
+
3
+ import * as React from 'react'
4
+ import type { InjectionWidgetComponentProps } from '@open-mercato/shared/modules/widgets/injection'
5
+ import { useQuery, useMutation, useQueryClient } from '@tanstack/react-query'
6
+ import { apiCall } from '@open-mercato/ui/backend/utils/apiCall'
7
+ import { useT } from '@open-mercato/shared/lib/i18n/context'
8
+ import { Button } from '@open-mercato/ui/primitives/button'
9
+ import { Spinner } from '@open-mercato/ui/primitives/spinner'
10
+ import { Textarea } from '@open-mercato/ui/primitives/textarea'
11
+ import { Badge } from '@open-mercato/ui/primitives/badge'
12
+ import { emitSalesDocumentDataRefresh } from '@open-mercato/core/modules/sales/lib/frontend/documentDataEvents'
13
+
14
+ type OrderRecord = {
15
+ id: string
16
+ orderNumber?: string
17
+ status?: string
18
+ statusEntryId?: string
19
+ }
20
+
21
+ type WorkflowInstance = {
22
+ id: string
23
+ workflowId: string
24
+ status: 'RUNNING' | 'PAUSED' | 'COMPLETED' | 'FAILED' | 'CANCELLED' | 'WAITING_FOR_ACTIVITIES'
25
+ currentStepId: string
26
+ context: Record<string, any>
27
+ }
28
+
29
+ type UserTask = {
30
+ id: string
31
+ taskName: string
32
+ status: 'PENDING' | 'IN_PROGRESS' | 'COMPLETED' | 'CANCELLED'
33
+ workflowInstanceId: string
34
+ claimedBy: string | null
35
+ }
36
+
37
+ type DictionaryEntry = {
38
+ id: string
39
+ value: string
40
+ label: string
41
+ color?: string
42
+ icon?: string
43
+ }
44
+
45
+ const WORKFLOW_ID = 'sales_order_approval_v1'
46
+
47
+ export default function OrderApprovalWidget({ data }: InjectionWidgetComponentProps<unknown, OrderRecord>) {
48
+ const t = useT()
49
+ const queryClient = useQueryClient()
50
+ const orderId = data?.id
51
+
52
+ const [decision, setDecision] = React.useState<'approve' | 'reject' | ''>('')
53
+ const [comments, setComments] = React.useState('')
54
+ const [error, setError] = React.useState<string | null>(null)
55
+
56
+ // Track if we're waiting for workflow to process (for polling)
57
+ const [isWaitingForProcessing, setIsWaitingForProcessing] = React.useState(false)
58
+
59
+ // Fetch current order status directly (to detect when workflow updates it)
60
+ // Use list endpoint with ID filter since single-item endpoint doesn't exist
61
+ const { data: orderData } = useQuery({
62
+ queryKey: ['order-status', orderId],
63
+ queryFn: async () => {
64
+ if (!orderId) return null
65
+ const result = await apiCall<{ items: Array<{ id: string; status?: string | null }> }>(
66
+ `/api/sales/orders?id=${orderId}&pageSize=1`
67
+ )
68
+ return result.ok && result.result?.items?.[0] ? result.result.items[0] : null
69
+ },
70
+ enabled: Boolean(orderId),
71
+ staleTime: 5_000,
72
+ // Poll when waiting for processing to detect status change
73
+ refetchInterval: isWaitingForProcessing ? 2_000 : false,
74
+ })
75
+
76
+ // Use fresh order status from query, fallback to prop data
77
+ // The API returns status as a string value (e.g., "approved", "pending_approval")
78
+ const currentOrderStatus = orderData?.status || data?.status
79
+
80
+ // Fetch active workflow instances for this order
81
+ const { data: instancesData, isLoading: instancesLoading } = useQuery({
82
+ queryKey: ['workflow-instances', orderId],
83
+ queryFn: async () => {
84
+ if (!orderId) return { data: [] }
85
+ const result = await apiCall<{ data: WorkflowInstance[] }>(
86
+ `/api/workflows/instances?entityId=${orderId}&status=RUNNING,PAUSED,WAITING_FOR_ACTIVITIES`
87
+ )
88
+ return result.ok ? result.result : { data: [] }
89
+ },
90
+ enabled: Boolean(orderId),
91
+ staleTime: 5_000,
92
+ // Poll every 2 seconds when waiting for processing
93
+ refetchInterval: isWaitingForProcessing ? 2_000 : false,
94
+ })
95
+
96
+ const activeInstance = instancesData?.data?.find(
97
+ (inst) => inst.workflowId === WORKFLOW_ID && !['COMPLETED', 'FAILED', 'CANCELLED'].includes(inst.status)
98
+ )
99
+
100
+ // Fetch pending user tasks for active instance
101
+ const { data: tasksData, isLoading: tasksLoading } = useQuery({
102
+ queryKey: ['workflow-tasks', activeInstance?.id],
103
+ queryFn: async () => {
104
+ if (!activeInstance?.id) return { data: [] }
105
+ const result = await apiCall<{ data: UserTask[] }>(
106
+ `/api/workflows/tasks?workflowInstanceId=${activeInstance.id}&status=PENDING,IN_PROGRESS`
107
+ )
108
+ return result.ok ? result.result : { data: [] }
109
+ },
110
+ enabled: Boolean(activeInstance?.id),
111
+ staleTime: 5_000,
112
+ // Poll every 2 seconds when waiting for processing
113
+ refetchInterval: isWaitingForProcessing ? 2_000 : false,
114
+ })
115
+
116
+ const pendingTask = tasksData?.data?.[0]
117
+
118
+ // Auto-detect when workflow is processing (active instance but no pending task)
119
+ const isProcessing = activeInstance && !pendingTask && !['COMPLETED', 'FAILED', 'CANCELLED'].includes(activeInstance.status)
120
+
121
+ // Track previous status to detect changes
122
+ const prevStatusRef = React.useRef<string | undefined>(data?.status)
123
+
124
+ // Update polling state when processing state changes
125
+ React.useEffect(() => {
126
+ if (isProcessing) {
127
+ setIsWaitingForProcessing(true)
128
+ } else if (!activeInstance || activeInstance.status === 'COMPLETED') {
129
+ setIsWaitingForProcessing(false)
130
+ }
131
+ }, [isProcessing, activeInstance])
132
+
133
+ // When order status changes, emit refresh event to update the page
134
+ React.useEffect(() => {
135
+ const newStatus = orderData?.status
136
+ const oldStatus = prevStatusRef.current
137
+
138
+ if (newStatus && oldStatus && newStatus !== oldStatus) {
139
+ // Status changed - emit document refresh event to reload the page data
140
+ if (orderId) {
141
+ emitSalesDocumentDataRefresh({ documentId: orderId, kind: 'order' })
142
+ }
143
+ }
144
+
145
+ prevStatusRef.current = newStatus || oldStatus
146
+ }, [orderData?.status, orderId])
147
+
148
+ // First fetch dictionaries to find the order_status dictionary ID
149
+ const { data: dictionariesData } = useQuery({
150
+ queryKey: ['dictionaries'],
151
+ queryFn: async () => {
152
+ const result = await apiCall<{ items: Array<{ id: string; key: string }> }>(
153
+ '/api/dictionaries'
154
+ )
155
+ return result.ok ? result.result : { items: [] }
156
+ },
157
+ staleTime: 60_000,
158
+ })
159
+
160
+ const orderStatusDictionaryId = React.useMemo(() => {
161
+ const dict = dictionariesData?.items?.find(d => d.key === 'sales.order_status')
162
+ return dict?.id
163
+ }, [dictionariesData])
164
+
165
+ // Fetch order status dictionary entries using the dictionary ID
166
+ const { data: statusEntriesData } = useQuery({
167
+ queryKey: ['dictionary-entries', orderStatusDictionaryId],
168
+ queryFn: async () => {
169
+ if (!orderStatusDictionaryId) return { items: [] }
170
+ const result = await apiCall<{ items: DictionaryEntry[] }>(
171
+ `/api/dictionaries/${orderStatusDictionaryId}/entries`
172
+ )
173
+ return result.ok ? result.result : { items: [] }
174
+ },
175
+ enabled: Boolean(orderStatusDictionaryId),
176
+ staleTime: 60_000,
177
+ })
178
+
179
+ const findStatusId = React.useCallback((code: string) => {
180
+ const entries = statusEntriesData?.items || []
181
+ // The API returns 'value' as the code/key for dictionary entries
182
+ const entry = entries.find(
183
+ (e) => e.value === code || e.label?.toLowerCase() === code.toLowerCase()
184
+ )
185
+ return entry?.id
186
+ }, [statusEntriesData])
187
+
188
+ // Start workflow mutation
189
+ const startWorkflowMutation = useMutation({
190
+ mutationFn: async () => {
191
+ const pendingApprovalStatusId = findStatusId('pending_approval')
192
+ const approvedStatusId = findStatusId('approved')
193
+ const rejectedStatusId = findStatusId('rejected')
194
+
195
+ if (!pendingApprovalStatusId || !approvedStatusId || !rejectedStatusId) {
196
+ throw new Error(t('workflows.orderApproval.missingStatuses', 'Missing order status entries. Please ensure pending_approval, approved, and rejected statuses exist in the sales.order_status dictionary.'))
197
+ }
198
+
199
+ const result = await apiCall<{ data: WorkflowInstance }>('/api/workflows/instances', {
200
+ method: 'POST',
201
+ body: JSON.stringify({
202
+ workflowId: WORKFLOW_ID,
203
+ initialContext: {
204
+ orderId,
205
+ pendingApprovalStatusId,
206
+ approvedStatusId,
207
+ rejectedStatusId,
208
+ },
209
+ metadata: {
210
+ entityType: 'SalesOrder',
211
+ entityId: orderId,
212
+ },
213
+ }),
214
+ })
215
+
216
+ if (!result.ok) {
217
+ const errorResult = result.result as { error?: string } | null
218
+ throw new Error(errorResult?.error || t('workflows.orderApproval.startError', 'Failed to start approval workflow'))
219
+ }
220
+
221
+ return result.result
222
+ },
223
+ onSuccess: () => {
224
+ setError(null)
225
+ queryClient.invalidateQueries({ queryKey: ['workflow-instances', orderId] })
226
+ },
227
+ onError: (err: Error) => {
228
+ setError(err.message)
229
+ },
230
+ })
231
+
232
+ // Complete task mutation
233
+ const completeTaskMutation = useMutation({
234
+ mutationFn: async ({ taskId, formData }: { taskId: string; formData: { decision: string; comments?: string } }) => {
235
+ const result = await apiCall(`/api/workflows/tasks/${taskId}/complete`, {
236
+ method: 'POST',
237
+ body: JSON.stringify({ formData }),
238
+ })
239
+
240
+ if (!result.ok) {
241
+ const errorResult = result.result as { error?: string } | null
242
+ throw new Error(errorResult?.error || t('workflows.orderApproval.completeError', 'Failed to complete approval task'))
243
+ }
244
+
245
+ return result.result
246
+ },
247
+ onSuccess: () => {
248
+ setError(null)
249
+ setDecision('')
250
+ setComments('')
251
+ // Start polling immediately after submitting decision
252
+ setIsWaitingForProcessing(true)
253
+ queryClient.invalidateQueries({ queryKey: ['workflow-instances', orderId] })
254
+ queryClient.invalidateQueries({ queryKey: ['workflow-tasks', activeInstance?.id] })
255
+ // Also refresh the order data
256
+ queryClient.invalidateQueries({ queryKey: ['sales-order', orderId] })
257
+ },
258
+ onError: (err: Error) => {
259
+ setError(err.message)
260
+ },
261
+ })
262
+
263
+ const handleStartWorkflow = () => {
264
+ // Start polling after starting workflow
265
+ setIsWaitingForProcessing(true)
266
+ startWorkflowMutation.mutate()
267
+ }
268
+
269
+ const handleCompleteTask = () => {
270
+ if (!pendingTask || !decision) return
271
+ completeTaskMutation.mutate({
272
+ taskId: pendingTask.id,
273
+ formData: { decision, comments },
274
+ })
275
+ }
276
+
277
+ // Handle keyboard shortcuts (Cmd/Ctrl+Enter to submit)
278
+ const handleKeyDown = (e: React.KeyboardEvent) => {
279
+ if ((e.metaKey || e.ctrlKey) && e.key === 'Enter') {
280
+ e.preventDefault()
281
+ if (pendingTask && decision && !isSubmitting) {
282
+ handleCompleteTask()
283
+ }
284
+ }
285
+ }
286
+
287
+ const isLoading = instancesLoading || tasksLoading
288
+ const isSubmitting = startWorkflowMutation.isPending || completeTaskMutation.isPending
289
+
290
+ // Don't render if no orderId
291
+ if (!orderId) return null
292
+
293
+ // Only show widget when order status is pending_approval
294
+ const orderStatus = currentOrderStatus?.toLowerCase()
295
+ if (orderStatus !== 'pending_approval') {
296
+ return null
297
+ }
298
+
299
+ // Loading state
300
+ if (isLoading) {
301
+ return (
302
+ <div className="flex items-center justify-center p-4">
303
+ <Spinner size="sm" />
304
+ <span className="ml-2 text-sm text-muted-foreground">{t('common.loading', 'Loading...')}</span>
305
+ </div>
306
+ )
307
+ }
308
+
309
+ // Show workflow status badge
310
+ const getStatusBadge = () => {
311
+ if (!activeInstance) return null
312
+
313
+ const statusVariants: Record<string, 'default' | 'secondary' | 'destructive' | 'outline'> = {
314
+ RUNNING: 'default',
315
+ PAUSED: 'secondary',
316
+ WAITING_FOR_ACTIVITIES: 'secondary',
317
+ COMPLETED: 'default',
318
+ FAILED: 'destructive',
319
+ CANCELLED: 'outline',
320
+ }
321
+
322
+ return (
323
+ <Badge variant={statusVariants[activeInstance.status] || 'outline'}>
324
+ {t(`workflows.instances.statuses.${activeInstance.status}`, activeInstance.status)}
325
+ </Badge>
326
+ )
327
+ }
328
+
329
+ return (
330
+ <div className="space-y-3 rounded-lg border bg-card p-4 shadow-sm">
331
+ <div className="flex items-start justify-between gap-3">
332
+ <div>
333
+ <div className="text-sm font-semibold text-foreground">
334
+ {t('workflows.orderApproval.groupLabel', 'Order Approval')}
335
+ </div>
336
+ <p className="text-xs text-muted-foreground">
337
+ {t('workflows.orderApproval.groupDescription', 'Review and approve or reject this order')}
338
+ </p>
339
+ </div>
340
+ {getStatusBadge()}
341
+ </div>
342
+
343
+ {error && (
344
+ <div className="rounded-md border border-red-200 bg-red-50 p-3 text-xs text-red-800">
345
+ {error}
346
+ </div>
347
+ )}
348
+
349
+ {/* No active workflow - show request approval button */}
350
+ {!activeInstance && (
351
+ <div className="space-y-3">
352
+ <p className="text-sm text-muted-foreground">
353
+ {t('workflows.orderApproval.noWorkflowActive', 'No approval workflow is active for this order.')}
354
+ </p>
355
+ <Button
356
+ onClick={handleStartWorkflow}
357
+ disabled={isSubmitting}
358
+ variant="default"
359
+ size="sm"
360
+ >
361
+ {isSubmitting && <Spinner size="sm" className="mr-2" />}
362
+ {t('workflows.orderApproval.requestApproval', 'Request Approval')}
363
+ </Button>
364
+ </div>
365
+ )}
366
+
367
+ {/* Active workflow with pending task - show approve/reject UI */}
368
+ {activeInstance && pendingTask && (
369
+ <div className="space-y-3" onKeyDown={handleKeyDown}>
370
+ <div className="rounded-md border border-amber-200 bg-amber-50 p-3">
371
+ <p className="text-sm font-medium text-amber-800">
372
+ {t('workflows.orderApproval.pendingTitle', 'Pending Approval')}
373
+ </p>
374
+ <p className="text-xs text-amber-700 mt-1">
375
+ {t('workflows.orderApproval.pendingDescription', 'This order requires approval before processing.')}
376
+ </p>
377
+ </div>
378
+
379
+ <div className="space-y-2">
380
+ <label className="text-sm font-medium">
381
+ {t('workflows.orderApproval.decisionLabel', 'Decision')}
382
+ </label>
383
+ <div className="flex gap-2">
384
+ <Button
385
+ variant={decision === 'approve' ? 'default' : 'outline'}
386
+ size="sm"
387
+ onClick={() => setDecision('approve')}
388
+ className={decision === 'approve' ? 'bg-emerald-600 hover:bg-emerald-700' : ''}
389
+ >
390
+ {t('workflows.orderApproval.approveButton', 'Approve')}
391
+ </Button>
392
+ <Button
393
+ variant={decision === 'reject' ? 'destructive' : 'outline'}
394
+ size="sm"
395
+ onClick={() => setDecision('reject')}
396
+ >
397
+ {t('workflows.orderApproval.rejectButton', 'Reject')}
398
+ </Button>
399
+ </div>
400
+ </div>
401
+
402
+ <div className="space-y-2">
403
+ <label className="text-sm font-medium">
404
+ {t('workflows.orderApproval.commentsLabel', 'Comments')} <span className="text-muted-foreground font-normal">({t('common.optional', 'optional')})</span>
405
+ </label>
406
+ <Textarea
407
+ value={comments}
408
+ onChange={(e) => setComments(e.target.value)}
409
+ placeholder={t('workflows.orderApproval.commentsPlaceholder', 'Add optional comments...')}
410
+ rows={2}
411
+ />
412
+ </div>
413
+
414
+ <Button
415
+ onClick={handleCompleteTask}
416
+ disabled={!decision || isSubmitting}
417
+ variant="default"
418
+ size="sm"
419
+ className="w-full"
420
+ >
421
+ {isSubmitting && <Spinner size="sm" className="mr-2" />}
422
+ {t('workflows.orderApproval.submitDecision', 'Submit Decision')}
423
+ </Button>
424
+ </div>
425
+ )}
426
+
427
+ {/* Active workflow but no pending task (processing) */}
428
+ {activeInstance && !pendingTask && activeInstance.status !== 'COMPLETED' && (
429
+ <div className="rounded-md border border-blue-200 bg-blue-50 p-3">
430
+ <p className="text-sm text-blue-800">
431
+ {t('workflows.orderApproval.processing', 'Workflow is processing...')}
432
+ </p>
433
+ </div>
434
+ )}
435
+
436
+ {/* Completed workflow */}
437
+ {activeInstance && activeInstance.status === 'COMPLETED' && (
438
+ <div className="rounded-md border border-emerald-200 bg-emerald-50 p-3">
439
+ <p className="text-sm text-emerald-800">
440
+ {t('workflows.orderApproval.completed', 'Approval workflow completed.')}
441
+ </p>
442
+ </div>
443
+ )}
444
+ </div>
445
+ )
446
+ }
@@ -0,0 +1,16 @@
1
+ import type { InjectionWidgetModule } from '@open-mercato/shared/modules/widgets/injection'
2
+ import OrderApprovalWidget from './widget.client'
3
+
4
+ const widget: InjectionWidgetModule<any, any> = {
5
+ metadata: {
6
+ id: 'workflows.injection.order-approval',
7
+ title: 'Order Approval',
8
+ description: 'Approve or reject orders requiring authorization',
9
+ features: ['sales.orders.approve'],
10
+ priority: 100,
11
+ enabled: true,
12
+ },
13
+ Widget: OrderApprovalWidget,
14
+ }
15
+
16
+ export default widget
@@ -0,0 +1,21 @@
1
+ import type { ModuleInjectionTable } from '@open-mercato/shared/modules/widgets/injection'
2
+
3
+ /**
4
+ * Workflows module injection table
5
+ * Maps injection spot IDs to widget IDs for automatic widget injection
6
+ */
7
+ export const injectionTable: ModuleInjectionTable = {
8
+ // Inject the order approval widget into the sales order detail page
9
+ 'sales.document.detail.order:details': [
10
+ {
11
+ widgetId: 'workflows.injection.order-approval',
12
+ kind: 'group',
13
+ column: 2,
14
+ groupLabel: 'workflows.orderApproval.groupLabel',
15
+ groupDescription: 'workflows.orderApproval.groupDescription',
16
+ priority: 200,
17
+ },
18
+ ],
19
+ }
20
+
21
+ export default injectionTable
@@ -1,57 +0,0 @@
1
- const id = "id";
2
- const recipient_user_id = "recipient_user_id";
3
- const type = "type";
4
- const title_key = "title_key";
5
- const body_key = "body_key";
6
- const title_variables = "title_variables";
7
- const body_variables = "body_variables";
8
- const title = "title";
9
- const body = "body";
10
- const icon = "icon";
11
- const severity = "severity";
12
- const status = "status";
13
- const action_data = "action_data";
14
- const action_result = "action_result";
15
- const action_taken = "action_taken";
16
- const source_module = "source_module";
17
- const source_entity_type = "source_entity_type";
18
- const source_entity_id = "source_entity_id";
19
- const link_href = "link_href";
20
- const group_key = "group_key";
21
- const created_at = "created_at";
22
- const read_at = "read_at";
23
- const actioned_at = "actioned_at";
24
- const dismissed_at = "dismissed_at";
25
- const expires_at = "expires_at";
26
- const tenant_id = "tenant_id";
27
- const organization_id = "organization_id";
28
- export {
29
- action_data,
30
- action_result,
31
- action_taken,
32
- actioned_at,
33
- body,
34
- body_key,
35
- body_variables,
36
- created_at,
37
- dismissed_at,
38
- expires_at,
39
- group_key,
40
- icon,
41
- id,
42
- link_href,
43
- organization_id,
44
- read_at,
45
- recipient_user_id,
46
- severity,
47
- source_entity_id,
48
- source_entity_type,
49
- source_module,
50
- status,
51
- tenant_id,
52
- title,
53
- title_key,
54
- title_variables,
55
- type
56
- };
57
- //# sourceMappingURL=index.js.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../../generated/entities/notification/index.ts"],
4
- "sourcesContent": ["export const id = 'id'\nexport const recipient_user_id = 'recipient_user_id'\nexport const type = 'type'\nexport const title_key = 'title_key'\nexport const body_key = 'body_key'\nexport const title_variables = 'title_variables'\nexport const body_variables = 'body_variables'\nexport const title = 'title'\nexport const body = 'body'\nexport const icon = 'icon'\nexport const severity = 'severity'\nexport const status = 'status'\nexport const action_data = 'action_data'\nexport const action_result = 'action_result'\nexport const action_taken = 'action_taken'\nexport const source_module = 'source_module'\nexport const source_entity_type = 'source_entity_type'\nexport const source_entity_id = 'source_entity_id'\nexport const link_href = 'link_href'\nexport const group_key = 'group_key'\nexport const created_at = 'created_at'\nexport const read_at = 'read_at'\nexport const actioned_at = 'actioned_at'\nexport const dismissed_at = 'dismissed_at'\nexport const expires_at = 'expires_at'\nexport const tenant_id = 'tenant_id'\nexport const organization_id = 'organization_id'\n"],
5
- "mappings": "AAAO,MAAM,KAAK;AACX,MAAM,oBAAoB;AAC1B,MAAM,OAAO;AACb,MAAM,YAAY;AAClB,MAAM,WAAW;AACjB,MAAM,kBAAkB;AACxB,MAAM,iBAAiB;AACvB,MAAM,QAAQ;AACd,MAAM,OAAO;AACb,MAAM,OAAO;AACb,MAAM,WAAW;AACjB,MAAM,SAAS;AACf,MAAM,cAAc;AACpB,MAAM,gBAAgB;AACtB,MAAM,eAAe;AACrB,MAAM,gBAAgB;AACtB,MAAM,qBAAqB;AAC3B,MAAM,mBAAmB;AACzB,MAAM,YAAY;AAClB,MAAM,YAAY;AAClB,MAAM,aAAa;AACnB,MAAM,UAAU;AAChB,MAAM,cAAc;AACpB,MAAM,eAAe;AACrB,MAAM,aAAa;AACnB,MAAM,YAAY;AAClB,MAAM,kBAAkB;",
6
- "names": []
7
- }