@open-mercato/core 0.4.5-develop-754ef4d2f0 → 0.4.5-develop-9f9549ebc8

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 (434) hide show
  1. package/dist/generated/entities/message/index.js +65 -0
  2. package/dist/generated/entities/message/index.js.map +7 -0
  3. package/dist/generated/entities/message_access_token/index.js +19 -0
  4. package/dist/generated/entities/message_access_token/index.js.map +7 -0
  5. package/dist/generated/entities/message_confirmation/index.js +21 -0
  6. package/dist/generated/entities/message_confirmation/index.js.map +7 -0
  7. package/dist/generated/entities/message_object/index.js +23 -0
  8. package/dist/generated/entities/message_object/index.js.map +7 -0
  9. package/dist/generated/entities/message_recipient/index.js +31 -0
  10. package/dist/generated/entities/message_recipient/index.js.map +7 -0
  11. package/dist/generated/entities.ids.generated.js +8 -0
  12. package/dist/generated/entities.ids.generated.js.map +2 -2
  13. package/dist/generated/entity-fields-registry.js +10 -0
  14. package/dist/generated/entity-fields-registry.js.map +2 -2
  15. package/dist/modules/auth/components/AclEditor.js +4 -2
  16. package/dist/modules/auth/components/AclEditor.js.map +2 -2
  17. package/dist/modules/auth/frontend/reset.js +3 -3
  18. package/dist/modules/auth/frontend/reset.js.map +2 -2
  19. package/dist/modules/customers/backend/customers/deals/[id]/page.js +27 -8
  20. package/dist/modules/customers/backend/customers/deals/[id]/page.js.map +2 -2
  21. package/dist/modules/customers/lib/messageObjectPreviews.js +131 -0
  22. package/dist/modules/customers/lib/messageObjectPreviews.js.map +7 -0
  23. package/dist/modules/customers/message-objects.js +71 -0
  24. package/dist/modules/customers/message-objects.js.map +7 -0
  25. package/dist/modules/customers/widgets/messages/CustomerMessageObjectDetail.js +51 -0
  26. package/dist/modules/customers/widgets/messages/CustomerMessageObjectDetail.js.map +7 -0
  27. package/dist/modules/customers/widgets/messages/CustomerMessageObjectPreview.js +35 -0
  28. package/dist/modules/customers/widgets/messages/CustomerMessageObjectPreview.js.map +7 -0
  29. package/dist/modules/customers/widgets/messages/index.js +7 -0
  30. package/dist/modules/customers/widgets/messages/index.js.map +7 -0
  31. package/dist/modules/dashboards/components/WidgetVisibilityEditor.js +35 -6
  32. package/dist/modules/dashboards/components/WidgetVisibilityEditor.js.map +2 -2
  33. package/dist/modules/messages/acl.js +15 -0
  34. package/dist/modules/messages/acl.js.map +7 -0
  35. package/dist/modules/messages/api/[id]/actions/[actionId]/route.js +92 -0
  36. package/dist/modules/messages/api/[id]/actions/[actionId]/route.js.map +7 -0
  37. package/dist/modules/messages/api/[id]/archive/route.js +120 -0
  38. package/dist/modules/messages/api/[id]/archive/route.js.map +7 -0
  39. package/dist/modules/messages/api/[id]/attachments/route.js +195 -0
  40. package/dist/modules/messages/api/[id]/attachments/route.js.map +7 -0
  41. package/dist/modules/messages/api/[id]/confirmation/route.js +67 -0
  42. package/dist/modules/messages/api/[id]/confirmation/route.js.map +7 -0
  43. package/dist/modules/messages/api/[id]/conversation/archive/route.js +68 -0
  44. package/dist/modules/messages/api/[id]/conversation/archive/route.js.map +7 -0
  45. package/dist/modules/messages/api/[id]/conversation/read/route.js +68 -0
  46. package/dist/modules/messages/api/[id]/conversation/read/route.js.map +7 -0
  47. package/dist/modules/messages/api/[id]/conversation/route.js +68 -0
  48. package/dist/modules/messages/api/[id]/conversation/route.js.map +7 -0
  49. package/dist/modules/messages/api/[id]/forward/route.js +85 -0
  50. package/dist/modules/messages/api/[id]/forward/route.js.map +7 -0
  51. package/dist/modules/messages/api/[id]/forward-preview/route.js +70 -0
  52. package/dist/modules/messages/api/[id]/forward-preview/route.js.map +7 -0
  53. package/dist/modules/messages/api/[id]/read/route.js +120 -0
  54. package/dist/modules/messages/api/[id]/read/route.js.map +7 -0
  55. package/dist/modules/messages/api/[id]/reply/route.js +87 -0
  56. package/dist/modules/messages/api/[id]/reply/route.js.map +7 -0
  57. package/dist/modules/messages/api/[id]/route.js +350 -0
  58. package/dist/modules/messages/api/[id]/route.js.map +7 -0
  59. package/dist/modules/messages/api/object-types/route.js +54 -0
  60. package/dist/modules/messages/api/object-types/route.js.map +7 -0
  61. package/dist/modules/messages/api/openapi.js +261 -0
  62. package/dist/modules/messages/api/openapi.js.map +7 -0
  63. package/dist/modules/messages/api/route.js +262 -0
  64. package/dist/modules/messages/api/route.js.map +7 -0
  65. package/dist/modules/messages/api/token/[token]/route.js +99 -0
  66. package/dist/modules/messages/api/token/[token]/route.js.map +7 -0
  67. package/dist/modules/messages/api/types/route.js +40 -0
  68. package/dist/modules/messages/api/types/route.js.map +7 -0
  69. package/dist/modules/messages/api/unread-count/route.js +43 -0
  70. package/dist/modules/messages/api/unread-count/route.js.map +7 -0
  71. package/dist/modules/messages/backend/messages/[id]/page.js +10 -0
  72. package/dist/modules/messages/backend/messages/[id]/page.js.map +7 -0
  73. package/dist/modules/messages/backend/messages/[id]/page.meta.js +16 -0
  74. package/dist/modules/messages/backend/messages/[id]/page.meta.js.map +7 -0
  75. package/dist/modules/messages/backend/messages/compose/page.js +10 -0
  76. package/dist/modules/messages/backend/messages/compose/page.js.map +7 -0
  77. package/dist/modules/messages/backend/messages/compose/page.meta.js +17 -0
  78. package/dist/modules/messages/backend/messages/compose/page.meta.js.map +7 -0
  79. package/dist/modules/messages/backend/page.js +10 -0
  80. package/dist/modules/messages/backend/page.js.map +7 -0
  81. package/dist/modules/messages/backend/page.meta.js +33 -0
  82. package/dist/modules/messages/backend/page.meta.js.map +7 -0
  83. package/dist/modules/messages/commands/actions.js +265 -0
  84. package/dist/modules/messages/commands/actions.js.map +7 -0
  85. package/dist/modules/messages/commands/attachments.js +217 -0
  86. package/dist/modules/messages/commands/attachments.js.map +7 -0
  87. package/dist/modules/messages/commands/confirmations.js +151 -0
  88. package/dist/modules/messages/commands/confirmations.js.map +7 -0
  89. package/dist/modules/messages/commands/conversation.js +240 -0
  90. package/dist/modules/messages/commands/conversation.js.map +7 -0
  91. package/dist/modules/messages/commands/messages.js +748 -0
  92. package/dist/modules/messages/commands/messages.js.map +7 -0
  93. package/dist/modules/messages/commands/recipients.js +259 -0
  94. package/dist/modules/messages/commands/recipients.js.map +7 -0
  95. package/dist/modules/messages/commands/shared.js +258 -0
  96. package/dist/modules/messages/commands/shared.js.map +7 -0
  97. package/dist/modules/messages/commands/tokens.js +69 -0
  98. package/dist/modules/messages/commands/tokens.js.map +7 -0
  99. package/dist/modules/messages/components/ComposeMessagePageClient.js +24 -0
  100. package/dist/modules/messages/components/ComposeMessagePageClient.js.map +7 -0
  101. package/dist/modules/messages/components/MessageDetailPageClient.js +261 -0
  102. package/dist/modules/messages/components/MessageDetailPageClient.js.map +7 -0
  103. package/dist/modules/messages/components/MessagesInboxPageClient.js +390 -0
  104. package/dist/modules/messages/components/MessagesInboxPageClient.js.map +7 -0
  105. package/dist/modules/messages/components/confirmation/MessageConfirmationActions.js +31 -0
  106. package/dist/modules/messages/components/confirmation/MessageConfirmationActions.js.map +7 -0
  107. package/dist/modules/messages/components/confirmation/MessageConfirmationContent.js +69 -0
  108. package/dist/modules/messages/components/confirmation/MessageConfirmationContent.js.map +7 -0
  109. package/dist/modules/messages/components/defaults/DefaultMessageActions.js +31 -0
  110. package/dist/modules/messages/components/defaults/DefaultMessageActions.js.map +7 -0
  111. package/dist/modules/messages/components/defaults/DefaultMessageContent.js +19 -0
  112. package/dist/modules/messages/components/defaults/DefaultMessageContent.js.map +7 -0
  113. package/dist/modules/messages/components/defaults/DefaultMessageListItem.js +90 -0
  114. package/dist/modules/messages/components/defaults/DefaultMessageListItem.js.map +7 -0
  115. package/dist/modules/messages/components/defaults/MessageRecordObjectDetail.js +86 -0
  116. package/dist/modules/messages/components/defaults/MessageRecordObjectDetail.js.map +7 -0
  117. package/dist/modules/messages/components/defaults/MessageRecordObjectPreview.js +61 -0
  118. package/dist/modules/messages/components/defaults/MessageRecordObjectPreview.js.map +7 -0
  119. package/dist/modules/messages/components/message-detail/detail-panels.js +27 -0
  120. package/dist/modules/messages/components/message-detail/detail-panels.js.map +7 -0
  121. package/dist/modules/messages/components/message-detail/hooks/useMessageDetails.js +52 -0
  122. package/dist/modules/messages/components/message-detail/hooks/useMessageDetails.js.map +7 -0
  123. package/dist/modules/messages/components/message-detail/hooks/useMessageDetailsActions.js +289 -0
  124. package/dist/modules/messages/components/message-detail/hooks/useMessageDetailsActions.js.map +7 -0
  125. package/dist/modules/messages/components/message-detail/hooks/useMessageDetailsConversation.js +103 -0
  126. package/dist/modules/messages/components/message-detail/hooks/useMessageDetailsConversation.js.map +7 -0
  127. package/dist/modules/messages/components/message-detail/hooks/useMessageDetailsQueries.js +78 -0
  128. package/dist/modules/messages/components/message-detail/hooks/useMessageDetailsQueries.js.map +7 -0
  129. package/dist/modules/messages/components/message-detail/panels/MainMessageHeader.js +94 -0
  130. package/dist/modules/messages/components/message-detail/panels/MainMessageHeader.js.map +7 -0
  131. package/dist/modules/messages/components/message-detail/panels/MessageHeader.js +110 -0
  132. package/dist/modules/messages/components/message-detail/panels/MessageHeader.js.map +7 -0
  133. package/dist/modules/messages/components/message-detail/panels/MessageListComponent.js +58 -0
  134. package/dist/modules/messages/components/message-detail/panels/MessageListComponent.js.map +7 -0
  135. package/dist/modules/messages/components/message-detail/panels/actions-panel.js +51 -0
  136. package/dist/modules/messages/components/message-detail/panels/actions-panel.js.map +7 -0
  137. package/dist/modules/messages/components/message-detail/panels/attachments-panel.js +66 -0
  138. package/dist/modules/messages/components/message-detail/panels/attachments-panel.js.map +7 -0
  139. package/dist/modules/messages/components/message-detail/panels/body-panel.js +20 -0
  140. package/dist/modules/messages/components/message-detail/panels/body-panel.js.map +7 -0
  141. package/dist/modules/messages/components/message-detail/panels/composer-dialogs.js +36 -0
  142. package/dist/modules/messages/components/message-detail/panels/composer-dialogs.js.map +7 -0
  143. package/dist/modules/messages/components/message-detail/panels/dialogs.js +96 -0
  144. package/dist/modules/messages/components/message-detail/panels/dialogs.js.map +7 -0
  145. package/dist/modules/messages/components/message-detail/panels/index.js +25 -0
  146. package/dist/modules/messages/components/message-detail/panels/index.js.map +7 -0
  147. package/dist/modules/messages/components/message-detail/panels/meta-panel.js +14 -0
  148. package/dist/modules/messages/components/message-detail/panels/meta-panel.js.map +7 -0
  149. package/dist/modules/messages/components/message-detail/panels/objects-panel.js +51 -0
  150. package/dist/modules/messages/components/message-detail/panels/objects-panel.js.map +7 -0
  151. package/dist/modules/messages/components/message-detail/panels/thread-panel.js +54 -0
  152. package/dist/modules/messages/components/message-detail/panels/thread-panel.js.map +7 -0
  153. package/dist/modules/messages/components/message-detail/types.js +1 -0
  154. package/dist/modules/messages/components/message-detail/types.js.map +7 -0
  155. package/dist/modules/messages/components/message-detail/utils.js +54 -0
  156. package/dist/modules/messages/components/message-detail/utils.js.map +7 -0
  157. package/dist/modules/messages/components/utils/PriorityBadge.js +52 -0
  158. package/dist/modules/messages/components/utils/PriorityBadge.js.map +7 -0
  159. package/dist/modules/messages/components/utils/typeUiRegistry.js +77 -0
  160. package/dist/modules/messages/components/utils/typeUiRegistry.js.map +7 -0
  161. package/dist/modules/messages/data/entities.js +309 -0
  162. package/dist/modules/messages/data/entities.js.map +7 -0
  163. package/dist/modules/messages/data/validators.js +272 -0
  164. package/dist/modules/messages/data/validators.js.map +7 -0
  165. package/dist/modules/messages/emails/MessageEmail.js +108 -0
  166. package/dist/modules/messages/emails/MessageEmail.js.map +7 -0
  167. package/dist/modules/messages/events.js +24 -0
  168. package/dist/modules/messages/events.js.map +7 -0
  169. package/dist/modules/messages/frontend/messages/view/[token]/page.js +247 -0
  170. package/dist/modules/messages/frontend/messages/view/[token]/page.js.map +7 -0
  171. package/dist/modules/messages/frontend/messages/view/[token]/page.meta.js +9 -0
  172. package/dist/modules/messages/frontend/messages/view/[token]/page.meta.js.map +7 -0
  173. package/dist/modules/messages/index.js +21 -0
  174. package/dist/modules/messages/index.js.map +7 -0
  175. package/dist/modules/messages/lib/actions.js +141 -0
  176. package/dist/modules/messages/lib/actions.js.map +7 -0
  177. package/dist/modules/messages/lib/attachments.js +131 -0
  178. package/dist/modules/messages/lib/attachments.js.map +7 -0
  179. package/dist/modules/messages/lib/constants.js +7 -0
  180. package/dist/modules/messages/lib/constants.js.map +7 -0
  181. package/dist/modules/messages/lib/email-sender.js +201 -0
  182. package/dist/modules/messages/lib/email-sender.js.map +7 -0
  183. package/dist/modules/messages/lib/forwarding.js +179 -0
  184. package/dist/modules/messages/lib/forwarding.js.map +7 -0
  185. package/dist/modules/messages/lib/message-objects-registry.js +49 -0
  186. package/dist/modules/messages/lib/message-objects-registry.js.map +7 -0
  187. package/dist/modules/messages/lib/message-types-registry.js +41 -0
  188. package/dist/modules/messages/lib/message-types-registry.js.map +7 -0
  189. package/dist/modules/messages/lib/object-validation.js +20 -0
  190. package/dist/modules/messages/lib/object-validation.js.map +7 -0
  191. package/dist/modules/messages/lib/operationMetadata.js +21 -0
  192. package/dist/modules/messages/lib/operationMetadata.js.map +7 -0
  193. package/dist/modules/messages/lib/priorityUtils.js +61 -0
  194. package/dist/modules/messages/lib/priorityUtils.js.map +7 -0
  195. package/dist/modules/messages/lib/routeHelpers.js +44 -0
  196. package/dist/modules/messages/lib/routeHelpers.js.map +7 -0
  197. package/dist/modules/messages/message-objects.js +7 -0
  198. package/dist/modules/messages/message-objects.js.map +7 -0
  199. package/dist/modules/messages/message-types.js +67 -0
  200. package/dist/modules/messages/message-types.js.map +7 -0
  201. package/dist/modules/messages/migrations/Migration20260213181243.js +31 -0
  202. package/dist/modules/messages/migrations/Migration20260213181243.js.map +7 -0
  203. package/dist/modules/messages/migrations/Migration20260215165126.js +16 -0
  204. package/dist/modules/messages/migrations/Migration20260215165126.js.map +7 -0
  205. package/dist/modules/messages/notifications.js +27 -0
  206. package/dist/modules/messages/notifications.js.map +7 -0
  207. package/dist/modules/messages/setup.js +21 -0
  208. package/dist/modules/messages/setup.js.map +7 -0
  209. package/dist/modules/messages/subscribers/message-notification.js +108 -0
  210. package/dist/modules/messages/subscribers/message-notification.js.map +7 -0
  211. package/dist/modules/messages/workers/send-email.worker.js +253 -0
  212. package/dist/modules/messages/workers/send-email.worker.js.map +7 -0
  213. package/dist/modules/sales/backend/sales/documents/[id]/page.js +30 -11
  214. package/dist/modules/sales/backend/sales/documents/[id]/page.js.map +2 -2
  215. package/dist/modules/sales/commands/payments.js +12 -6
  216. package/dist/modules/sales/commands/payments.js.map +2 -2
  217. package/dist/modules/sales/lib/messageObjectPreviews.js +114 -0
  218. package/dist/modules/sales/lib/messageObjectPreviews.js.map +7 -0
  219. package/dist/modules/sales/message-objects.js +57 -0
  220. package/dist/modules/sales/message-objects.js.map +7 -0
  221. package/dist/modules/sales/widgets/messages/SalesDocumentMessageDetail.js +51 -0
  222. package/dist/modules/sales/widgets/messages/SalesDocumentMessageDetail.js.map +7 -0
  223. package/dist/modules/sales/widgets/messages/SalesDocumentMessagePreview.js +36 -0
  224. package/dist/modules/sales/widgets/messages/SalesDocumentMessagePreview.js.map +7 -0
  225. package/dist/modules/sales/widgets/messages/index.js +7 -0
  226. package/dist/modules/sales/widgets/messages/index.js.map +7 -0
  227. package/dist/modules/staff/backend/staff/leave-requests/[id]/page.js +55 -1
  228. package/dist/modules/staff/backend/staff/leave-requests/[id]/page.js.map +2 -2
  229. package/dist/modules/staff/backend/staff/my-leave-requests/[id]/page.js +60 -1
  230. package/dist/modules/staff/backend/staff/my-leave-requests/[id]/page.js.map +2 -2
  231. package/dist/modules/staff/backend/staff/team-members/[id]/page.js +2 -19
  232. package/dist/modules/staff/backend/staff/team-members/[id]/page.js.map +2 -2
  233. package/dist/modules/staff/components/LeaveRequestDetail.js +112 -0
  234. package/dist/modules/staff/components/LeaveRequestDetail.js.map +7 -0
  235. package/dist/modules/staff/components/LeaveRequestForm.js +3 -1
  236. package/dist/modules/staff/components/LeaveRequestForm.js.map +2 -2
  237. package/dist/modules/staff/components/LeaveRequestPreview.js +43 -0
  238. package/dist/modules/staff/components/LeaveRequestPreview.js.map +7 -0
  239. package/dist/modules/staff/lib/messageObjectPreviews.js +148 -0
  240. package/dist/modules/staff/lib/messageObjectPreviews.js.map +7 -0
  241. package/dist/modules/staff/message-objects.js +104 -0
  242. package/dist/modules/staff/message-objects.js.map +7 -0
  243. package/dist/modules/staff/message-types.js +23 -0
  244. package/dist/modules/staff/message-types.js.map +7 -0
  245. package/dist/modules/staff/widgets/messages/StaffMessageObjectDetail.js +51 -0
  246. package/dist/modules/staff/widgets/messages/StaffMessageObjectDetail.js.map +7 -0
  247. package/dist/modules/staff/widgets/messages/StaffMessageObjectPreview.js +34 -0
  248. package/dist/modules/staff/widgets/messages/StaffMessageObjectPreview.js.map +7 -0
  249. package/dist/modules/staff/widgets/messages/index.js +7 -0
  250. package/dist/modules/staff/widgets/messages/index.js.map +7 -0
  251. package/dist/modules/workflows/backend/definitions/visual-editor/page.js +6 -6
  252. package/dist/modules/workflows/backend/definitions/visual-editor/page.js.map +2 -2
  253. package/generated/entities/message/index.ts +31 -0
  254. package/generated/entities/message_access_token/index.ts +8 -0
  255. package/generated/entities/message_confirmation/index.ts +9 -0
  256. package/generated/entities/message_object/index.ts +10 -0
  257. package/generated/entities/message_recipient/index.ts +14 -0
  258. package/generated/entities.ids.generated.ts +8 -0
  259. package/generated/entity-fields-registry.ts +10 -0
  260. package/jest.setup.ts +5 -0
  261. package/package.json +2 -2
  262. package/src/modules/attachments/i18n/de.json +4 -0
  263. package/src/modules/attachments/i18n/en.json +4 -0
  264. package/src/modules/attachments/i18n/es.json +4 -0
  265. package/src/modules/attachments/i18n/pl.json +4 -0
  266. package/src/modules/auth/components/AclEditor.tsx +4 -2
  267. package/src/modules/auth/frontend/reset.tsx +3 -3
  268. package/src/modules/auth/i18n/de.json +5 -0
  269. package/src/modules/auth/i18n/en.json +5 -0
  270. package/src/modules/auth/i18n/es.json +5 -0
  271. package/src/modules/auth/i18n/pl.json +5 -0
  272. package/src/modules/catalog/i18n/de.json +21 -0
  273. package/src/modules/catalog/i18n/en.json +21 -0
  274. package/src/modules/catalog/i18n/es.json +21 -0
  275. package/src/modules/catalog/i18n/pl.json +21 -0
  276. package/src/modules/currencies/i18n/de.json +6 -0
  277. package/src/modules/currencies/i18n/en.json +6 -0
  278. package/src/modules/currencies/i18n/es.json +6 -0
  279. package/src/modules/currencies/i18n/pl.json +6 -0
  280. package/src/modules/customers/backend/customers/deals/[id]/page.tsx +20 -4
  281. package/src/modules/customers/i18n/de.json +26 -1
  282. package/src/modules/customers/i18n/en.json +25 -0
  283. package/src/modules/customers/i18n/es.json +25 -0
  284. package/src/modules/customers/i18n/pl.json +25 -0
  285. package/src/modules/customers/lib/messageObjectPreviews.ts +154 -0
  286. package/src/modules/customers/message-objects.ts +70 -0
  287. package/src/modules/customers/widgets/messages/CustomerMessageObjectDetail.tsx +57 -0
  288. package/src/modules/customers/widgets/messages/CustomerMessageObjectPreview.tsx +49 -0
  289. package/src/modules/customers/widgets/messages/index.ts +2 -0
  290. package/src/modules/dashboards/components/WidgetVisibilityEditor.tsx +41 -5
  291. package/src/modules/dashboards/i18n/de.json +5 -1
  292. package/src/modules/dashboards/i18n/en.json +5 -1
  293. package/src/modules/dashboards/i18n/es.json +5 -1
  294. package/src/modules/dashboards/i18n/pl.json +5 -1
  295. package/src/modules/dictionaries/i18n/de.json +14 -1
  296. package/src/modules/dictionaries/i18n/en.json +14 -1
  297. package/src/modules/dictionaries/i18n/es.json +14 -1
  298. package/src/modules/dictionaries/i18n/pl.json +14 -1
  299. package/src/modules/feature_toggles/i18n/de.json +3 -0
  300. package/src/modules/feature_toggles/i18n/en.json +3 -0
  301. package/src/modules/feature_toggles/i18n/es.json +3 -0
  302. package/src/modules/feature_toggles/i18n/pl.json +3 -0
  303. package/src/modules/messages/acl.ts +11 -0
  304. package/src/modules/messages/api/[id]/actions/[actionId]/route.ts +103 -0
  305. package/src/modules/messages/api/[id]/archive/route.ts +138 -0
  306. package/src/modules/messages/api/[id]/attachments/route.ts +217 -0
  307. package/src/modules/messages/api/[id]/confirmation/route.ts +73 -0
  308. package/src/modules/messages/api/[id]/conversation/archive/route.ts +69 -0
  309. package/src/modules/messages/api/[id]/conversation/read/route.ts +69 -0
  310. package/src/modules/messages/api/[id]/conversation/route.ts +69 -0
  311. package/src/modules/messages/api/[id]/forward/route.ts +87 -0
  312. package/src/modules/messages/api/[id]/forward-preview/route.ts +75 -0
  313. package/src/modules/messages/api/[id]/read/route.ts +138 -0
  314. package/src/modules/messages/api/[id]/reply/route.ts +89 -0
  315. package/src/modules/messages/api/[id]/route.ts +401 -0
  316. package/src/modules/messages/api/object-types/route.ts +54 -0
  317. package/src/modules/messages/api/openapi.ts +261 -0
  318. package/src/modules/messages/api/route.ts +374 -0
  319. package/src/modules/messages/api/token/[token]/route.ts +103 -0
  320. package/src/modules/messages/api/types/route.ts +39 -0
  321. package/src/modules/messages/api/unread-count/route.ts +55 -0
  322. package/src/modules/messages/backend/messages/[id]/page.meta.ts +12 -0
  323. package/src/modules/messages/backend/messages/[id]/page.tsx +12 -0
  324. package/src/modules/messages/backend/messages/compose/page.meta.ts +13 -0
  325. package/src/modules/messages/backend/messages/compose/page.tsx +12 -0
  326. package/src/modules/messages/backend/page.meta.ts +31 -0
  327. package/src/modules/messages/backend/page.tsx +12 -0
  328. package/src/modules/messages/commands/actions.ts +307 -0
  329. package/src/modules/messages/commands/attachments.ts +227 -0
  330. package/src/modules/messages/commands/confirmations.ts +183 -0
  331. package/src/modules/messages/commands/conversation.ts +292 -0
  332. package/src/modules/messages/commands/messages.ts +845 -0
  333. package/src/modules/messages/commands/recipients.ts +281 -0
  334. package/src/modules/messages/commands/shared.ts +350 -0
  335. package/src/modules/messages/commands/tokens.ts +80 -0
  336. package/src/modules/messages/components/ComposeMessagePageClient.tsx +23 -0
  337. package/src/modules/messages/components/MessageDetailPageClient.tsx +287 -0
  338. package/src/modules/messages/components/MessagesInboxPageClient.tsx +469 -0
  339. package/src/modules/messages/components/confirmation/MessageConfirmationActions.tsx +35 -0
  340. package/src/modules/messages/components/confirmation/MessageConfirmationContent.tsx +88 -0
  341. package/src/modules/messages/components/defaults/DefaultMessageActions.tsx +37 -0
  342. package/src/modules/messages/components/defaults/DefaultMessageContent.tsx +21 -0
  343. package/src/modules/messages/components/defaults/DefaultMessageListItem.tsx +102 -0
  344. package/src/modules/messages/components/defaults/MessageRecordObjectDetail.tsx +114 -0
  345. package/src/modules/messages/components/defaults/MessageRecordObjectPreview.tsx +74 -0
  346. package/src/modules/messages/components/message-detail/detail-panels.ts +13 -0
  347. package/src/modules/messages/components/message-detail/hooks/useMessageDetails.ts +56 -0
  348. package/src/modules/messages/components/message-detail/hooks/useMessageDetailsActions.ts +367 -0
  349. package/src/modules/messages/components/message-detail/hooks/useMessageDetailsConversation.ts +134 -0
  350. package/src/modules/messages/components/message-detail/hooks/useMessageDetailsQueries.ts +102 -0
  351. package/src/modules/messages/components/message-detail/panels/MainMessageHeader.tsx +108 -0
  352. package/src/modules/messages/components/message-detail/panels/MessageHeader.tsx +144 -0
  353. package/src/modules/messages/components/message-detail/panels/MessageListComponent.tsx +63 -0
  354. package/src/modules/messages/components/message-detail/panels/actions-panel.tsx +66 -0
  355. package/src/modules/messages/components/message-detail/panels/attachments-panel.tsx +86 -0
  356. package/src/modules/messages/components/message-detail/panels/body-panel.tsx +32 -0
  357. package/src/modules/messages/components/message-detail/panels/composer-dialogs.tsx +42 -0
  358. package/src/modules/messages/components/message-detail/panels/dialogs.tsx +107 -0
  359. package/src/modules/messages/components/message-detail/panels/index.ts +11 -0
  360. package/src/modules/messages/components/message-detail/panels/meta-panel.tsx +19 -0
  361. package/src/modules/messages/components/message-detail/panels/objects-panel.tsx +65 -0
  362. package/src/modules/messages/components/message-detail/panels/thread-panel.tsx +65 -0
  363. package/src/modules/messages/components/message-detail/types.ts +114 -0
  364. package/src/modules/messages/components/message-detail/utils.ts +62 -0
  365. package/src/modules/messages/components/utils/PriorityBadge.tsx +63 -0
  366. package/src/modules/messages/components/utils/typeUiRegistry.ts +106 -0
  367. package/src/modules/messages/data/entities.ts +284 -0
  368. package/src/modules/messages/data/validators.ts +297 -0
  369. package/src/modules/messages/emails/MessageEmail.tsx +143 -0
  370. package/src/modules/messages/events.ts +24 -0
  371. package/src/modules/messages/frontend/messages/view/[token]/page.meta.ts +5 -0
  372. package/src/modules/messages/frontend/messages/view/[token]/page.tsx +389 -0
  373. package/src/modules/messages/i18n/de.json +240 -0
  374. package/src/modules/messages/i18n/en.json +240 -0
  375. package/src/modules/messages/i18n/es.json +240 -0
  376. package/src/modules/messages/i18n/pl.json +240 -0
  377. package/src/modules/messages/index.ts +19 -0
  378. package/src/modules/messages/lib/actions.ts +204 -0
  379. package/src/modules/messages/lib/attachments.ts +197 -0
  380. package/src/modules/messages/lib/constants.ts +2 -0
  381. package/src/modules/messages/lib/email-sender.ts +255 -0
  382. package/src/modules/messages/lib/forwarding.ts +240 -0
  383. package/src/modules/messages/lib/message-objects-registry.ts +60 -0
  384. package/src/modules/messages/lib/message-types-registry.ts +48 -0
  385. package/src/modules/messages/lib/object-validation.ts +26 -0
  386. package/src/modules/messages/lib/operationMetadata.ts +43 -0
  387. package/src/modules/messages/lib/priorityUtils.ts +76 -0
  388. package/src/modules/messages/lib/routeHelpers.ts +65 -0
  389. package/src/modules/messages/message-objects.ts +5 -0
  390. package/src/modules/messages/message-types.ts +65 -0
  391. package/src/modules/messages/migrations/.snapshot-open-mercato.json +957 -0
  392. package/src/modules/messages/migrations/Migration20260213181243.ts +34 -0
  393. package/src/modules/messages/migrations/Migration20260215165126.ts +16 -0
  394. package/src/modules/messages/notifications.ts +25 -0
  395. package/src/modules/messages/setup.ts +19 -0
  396. package/src/modules/messages/subscribers/message-notification.ts +138 -0
  397. package/src/modules/messages/workers/send-email.worker.ts +321 -0
  398. package/src/modules/query_index/i18n/es.json +2 -2
  399. package/src/modules/resources/i18n/de.json +57 -0
  400. package/src/modules/resources/i18n/en.json +57 -0
  401. package/src/modules/resources/i18n/es.json +57 -0
  402. package/src/modules/resources/i18n/pl.json +57 -0
  403. package/src/modules/sales/backend/sales/documents/[id]/page.tsx +23 -7
  404. package/src/modules/sales/commands/payments.ts +12 -6
  405. package/src/modules/sales/i18n/de.json +26 -0
  406. package/src/modules/sales/i18n/en.json +26 -0
  407. package/src/modules/sales/i18n/es.json +26 -0
  408. package/src/modules/sales/i18n/pl.json +26 -0
  409. package/src/modules/sales/lib/messageObjectPreviews.ts +150 -0
  410. package/src/modules/sales/message-objects.ts +56 -0
  411. package/src/modules/sales/widgets/messages/SalesDocumentMessageDetail.tsx +57 -0
  412. package/src/modules/sales/widgets/messages/SalesDocumentMessagePreview.tsx +46 -0
  413. package/src/modules/sales/widgets/messages/index.ts +2 -0
  414. package/src/modules/staff/backend/staff/leave-requests/[id]/page.tsx +54 -0
  415. package/src/modules/staff/backend/staff/my-leave-requests/[id]/page.tsx +58 -0
  416. package/src/modules/staff/backend/staff/team-members/[id]/page.tsx +2 -32
  417. package/src/modules/staff/components/LeaveRequestDetail.tsx +135 -0
  418. package/src/modules/staff/components/LeaveRequestForm.tsx +3 -0
  419. package/src/modules/staff/components/LeaveRequestPreview.tsx +74 -0
  420. package/src/modules/staff/i18n/de.json +22 -0
  421. package/src/modules/staff/i18n/en.json +22 -0
  422. package/src/modules/staff/i18n/es.json +22 -0
  423. package/src/modules/staff/i18n/pl.json +22 -0
  424. package/src/modules/staff/lib/messageObjectPreviews.ts +182 -0
  425. package/src/modules/staff/message-objects.ts +102 -0
  426. package/src/modules/staff/message-types.ts +21 -0
  427. package/src/modules/staff/widgets/messages/StaffMessageObjectDetail.tsx +57 -0
  428. package/src/modules/staff/widgets/messages/StaffMessageObjectPreview.tsx +44 -0
  429. package/src/modules/staff/widgets/messages/index.ts +2 -0
  430. package/src/modules/workflows/backend/definitions/visual-editor/page.tsx +6 -6
  431. package/src/modules/workflows/i18n/de.json +41 -0
  432. package/src/modules/workflows/i18n/en.json +41 -0
  433. package/src/modules/workflows/i18n/es.json +41 -0
  434. package/src/modules/workflows/i18n/pl.json +41 -0
@@ -76,6 +76,12 @@
76
76
  "resources.audit.availabilityRuleSets.create": "Create availability schedule",
77
77
  "resources.audit.availabilityRuleSets.delete": "Delete availability schedule",
78
78
  "resources.audit.availabilityRuleSets.update": "Update availability schedule",
79
+ "resources.audit.resourceActivities.create": "Create resource activity",
80
+ "resources.audit.resourceActivities.delete": "Delete resource activity",
81
+ "resources.audit.resourceActivities.update": "Update resource activity",
82
+ "resources.audit.resourceComments.create": "Create resource comment",
83
+ "resources.audit.resourceComments.delete": "Delete resource comment",
84
+ "resources.audit.resourceComments.update": "Update resource comment",
79
85
  "resources.audit.resourceTags.assign": "Assign resource tag",
80
86
  "resources.audit.resourceTags.create": "Create resource tag",
81
87
  "resources.audit.resourceTags.delete": "Delete resource tag",
@@ -349,6 +355,7 @@
349
355
  "resources.resources.detail.activities.update": "Update activity (Cmd/Ctrl + Enter)",
350
356
  "resources.resources.detail.activities.updateSuccess": "Activity updated.",
351
357
  "resources.resources.detail.back": "Back to resources",
358
+ "resources.resources.detail.formTitle": "Resource settings",
352
359
  "resources.resources.detail.inline.cancel": "Cancel",
353
360
  "resources.resources.detail.inline.clear": "Clear",
354
361
  "resources.resources.detail.inline.emailChecking": "Checking for matching records...",
@@ -435,13 +442,63 @@
435
442
  "resources.resources.detail.tabs.notes": "Notes",
436
443
  "resources.resources.detail.untitled": "Unnamed resource",
437
444
  "resources.resources.flash.createdAvailability": "Saved. You can now set availability.",
445
+ "resources.resources.form.actions.create": "Create",
446
+ "resources.resources.form.appearance.colorClear": "Clear color",
447
+ "resources.resources.form.appearance.colorHelp": "Pick a color for this resource.",
448
+ "resources.resources.form.appearance.colorLabel": "Color",
449
+ "resources.resources.form.appearance.iconClear": "Clear icon",
450
+ "resources.resources.form.appearance.iconLabel": "Icon",
451
+ "resources.resources.form.appearance.iconPicker": "Browse icons",
452
+ "resources.resources.form.appearance.iconPlaceholder": "Type an emoji or icon name",
453
+ "resources.resources.form.appearance.iconSearch": "Search icons or emojis…",
454
+ "resources.resources.form.appearance.iconSearchEmpty": "No icons match your search",
455
+ "resources.resources.form.appearance.iconSuggestions": "Suggestions",
456
+ "resources.resources.form.appearance.label": "Appearance",
457
+ "resources.resources.form.appearance.previewEmpty": "No appearance selected",
458
+ "resources.resources.form.createTitle": "Create resource",
459
+ "resources.resources.form.editTitle": "Edit resource",
460
+ "resources.resources.form.errors.create": "Failed to create resource.",
461
+ "resources.resources.form.errors.delete": "Failed to delete resource.",
462
+ "resources.resources.form.errors.load": "Failed to load resource.",
463
+ "resources.resources.form.errors.nameRequired": "Resource name is required.",
464
+ "resources.resources.form.errors.notFound": "Resource not found.",
465
+ "resources.resources.form.errors.update": "Failed to update resource.",
466
+ "resources.resources.form.fields.active": "Active",
467
+ "resources.resources.form.fields.capacity": "Capacity",
438
468
  "resources.resources.form.fields.capacity.help": "Depends on the resource and can mean spots, units, quantity, or another type of capacity.",
439
469
  "resources.resources.form.fields.capacityUnit": "Capacity unit",
440
470
  "resources.resources.form.fields.capacityUnit.missing": "Capacity unit dictionary is not configured.",
471
+ "resources.resources.form.fields.description": "Description",
472
+ "resources.resources.form.fields.name": "Name",
473
+ "resources.resources.form.fields.type": "Resource type",
441
474
  "resources.resources.form.fields.type.add": "Add resource type",
442
475
  "resources.resources.form.fields.type.manage": "Manage resource types",
476
+ "resources.resources.form.flash.deleted": "Resource deleted.",
477
+ "resources.resources.form.flash.updated": "Resource updated.",
478
+ "resources.resources.form.loading": "Loading resource…",
479
+ "resources.resources.list.actions.create": "Create",
480
+ "resources.resources.list.columns.active": "Active",
481
+ "resources.resources.list.columns.appearance": "Appearance",
482
+ "resources.resources.list.columns.capacity": "Capacity",
483
+ "resources.resources.list.columns.capacity.empty": "Not set",
484
+ "resources.resources.list.columns.name": "Name",
485
+ "resources.resources.list.columns.tags": "Tags",
486
+ "resources.resources.list.columns.tags.empty": "No tags",
487
+ "resources.resources.list.columns.type": "Type",
488
+ "resources.resources.list.columns.type.empty": "No type",
489
+ "resources.resources.list.confirmDelete": "Delete this resource? This action cannot be undone.",
490
+ "resources.resources.list.error.delete": "Failed to delete resource.",
491
+ "resources.resources.list.error.load": "Failed to load resources.",
443
492
  "resources.resources.list.filters.resourceType": "Resource type",
444
493
  "resources.resources.list.filters.tags": "Tags",
494
+ "resources.resources.list.flash.deleted": "Resource deleted.",
495
+ "resources.resources.list.group.unassigned": "Unassigned",
496
+ "resources.resources.list.group.unknown": "Unknown",
497
+ "resources.resources.page.title": "Resources",
498
+ "resources.resources.schedule.actions.details": "View details",
499
+ "resources.resources.tabs.availability": "Availability",
500
+ "resources.resources.tabs.details": "Details",
501
+ "resources.resources.tabs.label": "Resource sections",
445
502
  "resources.resources.tags.cancelShortcut": "Cancel (Esc)",
446
503
  "resources.resources.tags.createError": "Failed to create tag.",
447
504
  "resources.resources.tags.errors.invalid": "Invalid tag payload",
@@ -76,6 +76,12 @@
76
76
  "resources.audit.availabilityRuleSets.create": "Crear horario de disponibilidad",
77
77
  "resources.audit.availabilityRuleSets.delete": "Eliminar horario de disponibilidad",
78
78
  "resources.audit.availabilityRuleSets.update": "Actualizar horario de disponibilidad",
79
+ "resources.audit.resourceActivities.create": "Crear actividad de recurso",
80
+ "resources.audit.resourceActivities.delete": "Eliminar actividad de recurso",
81
+ "resources.audit.resourceActivities.update": "Actualizar actividad de recurso",
82
+ "resources.audit.resourceComments.create": "Crear comentario de recurso",
83
+ "resources.audit.resourceComments.delete": "Eliminar comentario de recurso",
84
+ "resources.audit.resourceComments.update": "Actualizar comentario de recurso",
79
85
  "resources.audit.resourceTags.assign": "Asignar etiqueta de recurso",
80
86
  "resources.audit.resourceTags.create": "Crear etiqueta de recurso",
81
87
  "resources.audit.resourceTags.delete": "Eliminar etiqueta de recurso",
@@ -349,6 +355,7 @@
349
355
  "resources.resources.detail.activities.update": "Actualizar actividad (Cmd/Ctrl + Enter)",
350
356
  "resources.resources.detail.activities.updateSuccess": "Actividad actualizada.",
351
357
  "resources.resources.detail.back": "Volver a recursos",
358
+ "resources.resources.detail.formTitle": "Configuración de recurso",
352
359
  "resources.resources.detail.inline.cancel": "Cancelar",
353
360
  "resources.resources.detail.inline.clear": "Claro",
354
361
  "resources.resources.detail.inline.emailChecking": "Comprobando registros coincidentes...",
@@ -435,13 +442,63 @@
435
442
  "resources.resources.detail.tabs.notes": "Notas",
436
443
  "resources.resources.detail.untitled": "Recurso sin nombre",
437
444
  "resources.resources.flash.createdAvailability": "Guardado. Ahora puedes establecer la disponibilidad.",
445
+ "resources.resources.form.actions.create": "Crear",
446
+ "resources.resources.form.appearance.colorClear": "Limpiar color",
447
+ "resources.resources.form.appearance.colorHelp": "Seleccione un color para este recurso.",
448
+ "resources.resources.form.appearance.colorLabel": "Color",
449
+ "resources.resources.form.appearance.iconClear": "Limpiar icono",
450
+ "resources.resources.form.appearance.iconLabel": "Icono",
451
+ "resources.resources.form.appearance.iconPicker": "Explorar iconos",
452
+ "resources.resources.form.appearance.iconPlaceholder": "Escriba un emoji o nombre de icono",
453
+ "resources.resources.form.appearance.iconSearch": "Buscar iconos o emojis…",
454
+ "resources.resources.form.appearance.iconSearchEmpty": "Ningún icono coincide con su búsqueda",
455
+ "resources.resources.form.appearance.iconSuggestions": "Sugerencias",
456
+ "resources.resources.form.appearance.label": "Apariencia",
457
+ "resources.resources.form.appearance.previewEmpty": "No se ha seleccionado apariencia",
458
+ "resources.resources.form.createTitle": "Crear recurso",
459
+ "resources.resources.form.editTitle": "Editar recurso",
460
+ "resources.resources.form.errors.create": "Error al crear el recurso.",
461
+ "resources.resources.form.errors.delete": "Error al eliminar el recurso.",
462
+ "resources.resources.form.errors.load": "Error al cargar el recurso.",
463
+ "resources.resources.form.errors.nameRequired": "El nombre del recurso es obligatorio.",
464
+ "resources.resources.form.errors.notFound": "Recurso no encontrado.",
465
+ "resources.resources.form.errors.update": "Error al actualizar el recurso.",
466
+ "resources.resources.form.fields.active": "Activo",
467
+ "resources.resources.form.fields.capacity": "Capacidad",
438
468
  "resources.resources.form.fields.capacity.help": "Depende del recurso y puede significar plazas, unidades, cantidad u otro tipo de capacidad.",
439
469
  "resources.resources.form.fields.capacityUnit": "Unidad de capacidad",
440
470
  "resources.resources.form.fields.capacityUnit.missing": "El diccionario de unidades de capacidad no está configurado.",
471
+ "resources.resources.form.fields.description": "Descripción",
472
+ "resources.resources.form.fields.name": "Nombre",
473
+ "resources.resources.form.fields.type": "Tipo de recurso",
441
474
  "resources.resources.form.fields.type.add": "Agregar tipo de recurso",
442
475
  "resources.resources.form.fields.type.manage": "Administrar tipos de recurso",
476
+ "resources.resources.form.flash.deleted": "Recurso eliminado.",
477
+ "resources.resources.form.flash.updated": "Recurso actualizado.",
478
+ "resources.resources.form.loading": "Cargando recurso…",
479
+ "resources.resources.list.actions.create": "Crear",
480
+ "resources.resources.list.columns.active": "Activo",
481
+ "resources.resources.list.columns.appearance": "Apariencia",
482
+ "resources.resources.list.columns.capacity": "Capacidad",
483
+ "resources.resources.list.columns.capacity.empty": "No establecido",
484
+ "resources.resources.list.columns.name": "Nombre",
485
+ "resources.resources.list.columns.tags": "Tags",
486
+ "resources.resources.list.columns.tags.empty": "Sin etiquetas",
487
+ "resources.resources.list.columns.type": "Type",
488
+ "resources.resources.list.columns.type.empty": "Sin tipo",
489
+ "resources.resources.list.confirmDelete": "¿Eliminar este recurso? Esta acción no se puede deshacer.",
490
+ "resources.resources.list.error.delete": "Error al eliminar el recurso.",
491
+ "resources.resources.list.error.load": "Error al cargar los recursos.",
443
492
  "resources.resources.list.filters.resourceType": "Tipo de recurso",
444
493
  "resources.resources.list.filters.tags": "Etiquetas",
494
+ "resources.resources.list.flash.deleted": "Recurso eliminado.",
495
+ "resources.resources.list.group.unassigned": "Sin asignar",
496
+ "resources.resources.list.group.unknown": "Desconocido",
497
+ "resources.resources.page.title": "Recursos",
498
+ "resources.resources.schedule.actions.details": "Ver detalles",
499
+ "resources.resources.tabs.availability": "Disponibilidad",
500
+ "resources.resources.tabs.details": "Detalles",
501
+ "resources.resources.tabs.label": "Secciones de recurso",
445
502
  "resources.resources.tags.cancelShortcut": "Cancelar (Esc)",
446
503
  "resources.resources.tags.createError": "No se pudo crear la etiqueta.",
447
504
  "resources.resources.tags.errors.invalid": "Datos de etiqueta inválidos",
@@ -76,6 +76,12 @@
76
76
  "resources.audit.availabilityRuleSets.create": "Utwórz harmonogram dostępności",
77
77
  "resources.audit.availabilityRuleSets.delete": "Usuń harmonogram dostępności",
78
78
  "resources.audit.availabilityRuleSets.update": "Zaktualizuj harmonogram dostępności",
79
+ "resources.audit.resourceActivities.create": "Utwórz aktywność zasobu",
80
+ "resources.audit.resourceActivities.delete": "Usuń aktywność zasobu",
81
+ "resources.audit.resourceActivities.update": "Zaktualizuj aktywność zasobu",
82
+ "resources.audit.resourceComments.create": "Utwórz komentarz zasobu",
83
+ "resources.audit.resourceComments.delete": "Usuń komentarz zasobu",
84
+ "resources.audit.resourceComments.update": "Zaktualizuj komentarz zasobu",
79
85
  "resources.audit.resourceTags.assign": "Przypisz tag zasobu",
80
86
  "resources.audit.resourceTags.create": "Utwórz tag zasobu",
81
87
  "resources.audit.resourceTags.delete": "Usuń tag zasobu",
@@ -349,6 +355,7 @@
349
355
  "resources.resources.detail.activities.update": "Aktywność aktualizacji (Cmd/Ctrl + Enter)",
350
356
  "resources.resources.detail.activities.updateSuccess": "Aktywność zaktualizowana.",
351
357
  "resources.resources.detail.back": "Powrót do zasobów",
358
+ "resources.resources.detail.formTitle": "Ustawienia zasobów",
352
359
  "resources.resources.detail.inline.cancel": "Anulować",
353
360
  "resources.resources.detail.inline.clear": "Jasne",
354
361
  "resources.resources.detail.inline.emailChecking": "Sprawdzam pasujące rekordy...",
@@ -435,13 +442,63 @@
435
442
  "resources.resources.detail.tabs.notes": "Notatki",
436
443
  "resources.resources.detail.untitled": "Nienazwany zasób",
437
444
  "resources.resources.flash.createdAvailability": "Zapisano. Możesz teraz ustawić dostępność.",
445
+ "resources.resources.form.actions.create": "Utwórz",
446
+ "resources.resources.form.appearance.colorClear": "Wyczyść kolor",
447
+ "resources.resources.form.appearance.colorHelp": "Wybierz kolor dla tego zasobu.",
448
+ "resources.resources.form.appearance.colorLabel": "Kolor",
449
+ "resources.resources.form.appearance.iconClear": "Wyczyść ikonę",
450
+ "resources.resources.form.appearance.iconLabel": "Ikona",
451
+ "resources.resources.form.appearance.iconPicker": "Przeglądaj ikony",
452
+ "resources.resources.form.appearance.iconPlaceholder": "Wpisz emoji lub nazwę ikony",
453
+ "resources.resources.form.appearance.iconSearch": "Szukaj ikon lub emoji…",
454
+ "resources.resources.form.appearance.iconSearchEmpty": "Żadne ikony nie pasują do wyszukiwania",
455
+ "resources.resources.form.appearance.iconSuggestions": "Sugestie",
456
+ "resources.resources.form.appearance.label": "Wygląd",
457
+ "resources.resources.form.appearance.previewEmpty": "Nie wybrano wyglądu",
458
+ "resources.resources.form.createTitle": "Utwórz zasób",
459
+ "resources.resources.form.editTitle": "Edytuj zasób",
460
+ "resources.resources.form.errors.create": "Nie udało się utworzyć zasobu.",
461
+ "resources.resources.form.errors.delete": "Nie udało się usunąć zasobu.",
462
+ "resources.resources.form.errors.load": "Nie udało się załadować zasobu.",
463
+ "resources.resources.form.errors.nameRequired": "Nazwa zasobu jest wymagana.",
464
+ "resources.resources.form.errors.notFound": "Nie znaleziono zasobu.",
465
+ "resources.resources.form.errors.update": "Nie udało się zaktualizować zasobu.",
466
+ "resources.resources.form.fields.active": "Aktywny",
467
+ "resources.resources.form.fields.capacity": "Pojemność",
438
468
  "resources.resources.form.fields.capacity.help": "Zależy od zasobu i może oznaczać miejsca, jednostki, ilość lub inny typ pojemności.",
439
469
  "resources.resources.form.fields.capacityUnit": "Jednostka pojemności",
440
470
  "resources.resources.form.fields.capacityUnit.missing": "Słownik jednostek pojemności nie jest skonfigurowany.",
471
+ "resources.resources.form.fields.description": "Opis",
472
+ "resources.resources.form.fields.name": "Nazwa",
473
+ "resources.resources.form.fields.type": "Typ zasobu",
441
474
  "resources.resources.form.fields.type.add": "Dodaj typ zasobu",
442
475
  "resources.resources.form.fields.type.manage": "Zarządzaj typami zasobów",
476
+ "resources.resources.form.flash.deleted": "Zasób został usunięty.",
477
+ "resources.resources.form.flash.updated": "Zasób został zaktualizowany.",
478
+ "resources.resources.form.loading": "Ładowanie zasobu…",
479
+ "resources.resources.list.actions.create": "Utwórz",
480
+ "resources.resources.list.columns.active": "Aktywny",
481
+ "resources.resources.list.columns.appearance": "Wygląd",
482
+ "resources.resources.list.columns.capacity": "Pojemność",
483
+ "resources.resources.list.columns.capacity.empty": "Nie ustawiono",
484
+ "resources.resources.list.columns.name": "Nazwa",
485
+ "resources.resources.list.columns.tags": "Tags",
486
+ "resources.resources.list.columns.tags.empty": "Brak tagów",
487
+ "resources.resources.list.columns.type": "Type",
488
+ "resources.resources.list.columns.type.empty": "Brak typu",
489
+ "resources.resources.list.confirmDelete": "Usunąć ten zasób? Ta operacja jest nieodwracalna.",
490
+ "resources.resources.list.error.delete": "Nie udało się usunąć zasobu.",
491
+ "resources.resources.list.error.load": "Nie udało się załadować zasobów.",
443
492
  "resources.resources.list.filters.resourceType": "Typ zasobu",
444
493
  "resources.resources.list.filters.tags": "Tagi",
494
+ "resources.resources.list.flash.deleted": "Zasób został usunięty.",
495
+ "resources.resources.list.group.unassigned": "Nieprzypisany",
496
+ "resources.resources.list.group.unknown": "Nieznany",
497
+ "resources.resources.page.title": "Zasoby",
498
+ "resources.resources.schedule.actions.details": "Zobacz szczegóły",
499
+ "resources.resources.tabs.availability": "Dostępność",
500
+ "resources.resources.tabs.details": "Szczegóły",
501
+ "resources.resources.tabs.label": "Sekcje zasobów",
445
502
  "resources.resources.tags.cancelShortcut": "Anuluj (Esc)",
446
503
  "resources.resources.tags.createError": "Nie udało się utworzyć taga.",
447
504
  "resources.resources.tags.errors.invalid": "Nieprawidłowe dane taga",
@@ -24,6 +24,7 @@ import { Dialog, DialogContent, DialogDescription, DialogFooter, DialogHeader, D
24
24
  import { ArrowRightLeft, Building2, CreditCard, Mail, Pencil, Plus, Send, Store, Truck, UserRound, Wand2, X } from 'lucide-react'
25
25
  import { FormHeader, type ActionItem } from '@open-mercato/ui/backend/forms'
26
26
  import { VersionHistoryAction } from '@open-mercato/ui/backend/version-history'
27
+ import { SendObjectMessageDialog } from '@open-mercato/ui/backend/messages'
27
28
  import Link from 'next/link'
28
29
  import { flash } from '@open-mercato/ui/backend/FlashMessages'
29
30
  import { apiCall, apiCallOrThrow, readApiResultOrThrow } from '@open-mercato/ui/backend/utils/apiCall'
@@ -4425,13 +4426,28 @@ export default function SalesDocumentDetailPage({
4425
4426
  backHref={kind === 'order' ? '/backend/sales/orders' : '/backend/sales/quotes'}
4426
4427
  backLabel={t('sales.documents.detail.back', 'Back to documents')}
4427
4428
  utilityActions={record ? (
4428
- <VersionHistoryAction
4429
- config={{
4430
- resourceKind: kind === 'order' ? 'sales.order' : 'sales.quote',
4431
- resourceId: record.id,
4432
- }}
4433
- t={t}
4434
- />
4429
+ <>
4430
+ <SendObjectMessageDialog
4431
+ object={{
4432
+ entityModule: 'sales',
4433
+ entityType: kind,
4434
+ entityId: record.id,
4435
+ sourceEntityType: kind === 'order' ? 'sales.order' : 'sales.quote',
4436
+ sourceEntityId: record.id,
4437
+ }}
4438
+ defaultValues={{
4439
+ sourceEntityType: kind === 'order' ? 'sales.order' : 'sales.quote',
4440
+ sourceEntityId: record.id,
4441
+ }}
4442
+ />
4443
+ <VersionHistoryAction
4444
+ config={{
4445
+ resourceKind: kind === 'order' ? 'sales.order' : 'sales.quote',
4446
+ resourceId: record.id,
4447
+ }}
4448
+ t={t}
4449
+ />
4450
+ </>
4435
4451
  ) : null}
4436
4452
  entityTypeLabel={kind === 'order'
4437
4453
  ? t('sales.documents.detail.order', 'Sales order')
@@ -564,21 +564,27 @@ const updatePaymentCommand: CommandHandler<
564
564
  },
565
565
  async execute(rawInput, ctx) {
566
566
  const input = paymentUpdateSchema.parse(rawInput ?? {})
567
- ensureTenantScope(ctx, input.tenantId)
568
- ensureOrganizationScope(ctx, input.organizationId)
569
567
  const em = (ctx.container.resolve('em') as EntityManager).fork()
570
568
  const { translate } = await resolveTranslations()
569
+ const scopeSeed = assertFound(
570
+ await em.findOne(SalesPayment, { id: input.id }),
571
+ 'sales.payments.not_found'
572
+ )
573
+ const resolvedTenantId = input.tenantId ?? scopeSeed.tenantId
574
+ const resolvedOrganizationId = input.organizationId ?? scopeSeed.organizationId
575
+ ensureTenantScope(ctx, resolvedTenantId)
576
+ ensureOrganizationScope(ctx, resolvedOrganizationId)
571
577
  const payment = assertFound(
572
578
  await findOneWithDecryption(
573
579
  em,
574
580
  SalesPayment,
575
581
  { id: input.id },
576
582
  { populate: ['order'] },
577
- { tenantId: input.tenantId, organizationId: input.organizationId },
583
+ { tenantId: resolvedTenantId, organizationId: resolvedOrganizationId },
578
584
  ),
579
585
  'sales.payments.not_found'
580
586
  )
581
- ensureSameScope(payment, input.organizationId, input.tenantId)
587
+ ensureSameScope(payment, resolvedOrganizationId, resolvedTenantId)
582
588
  const previousOrder = payment.order as SalesOrder | null
583
589
  if (input.orderId !== undefined) {
584
590
  if (!input.orderId) {
@@ -588,7 +594,7 @@ const updatePaymentCommand: CommandHandler<
588
594
  await em.findOne(SalesOrder, { id: input.orderId }),
589
595
  'sales.payments.order_not_found'
590
596
  )
591
- ensureSameScope(order, input.organizationId, input.tenantId)
597
+ ensureSameScope(order, resolvedOrganizationId, resolvedTenantId)
592
598
  if (
593
599
  order.currencyCode &&
594
600
  input.currencyCode &&
@@ -609,7 +615,7 @@ const updatePaymentCommand: CommandHandler<
609
615
  await em.findOne(SalesPaymentMethod, { id: input.paymentMethodId }),
610
616
  'sales.payments.method_not_found'
611
617
  )
612
- ensureSameScope(method, input.organizationId, input.tenantId)
618
+ ensureSameScope(method, resolvedOrganizationId, resolvedTenantId)
613
619
  payment.paymentMethod = method
614
620
  }
615
621
  }
@@ -4,6 +4,12 @@
4
4
  "audit_logs.resource_kind.sales.payment": "Zahlung",
5
5
  "audit_logs.resource_kind.sales.shipment": "Versand",
6
6
  "customers~sales.nav.group": "Vertrieb",
7
+ "sales.audit.channels.create": "Vertriebskanal erstellen",
8
+ "sales.audit.channels.delete": "Vertriebskanal löschen",
9
+ "sales.audit.channels.update": "Vertriebskanal aktualisieren",
10
+ "sales.audit.notes.create": "Notiz erstellen",
11
+ "sales.audit.notes.delete": "Notiz löschen",
12
+ "sales.audit.notes.update": "Notiz aktualisieren",
7
13
  "sales.audit.orders.adjustments.delete": "Auftragsanpassung löschen",
8
14
  "sales.audit.orders.adjustments.upsert": "Auftragsanpassung aktualisieren",
9
15
  "sales.audit.orders.create": "Bestellung erstellen",
@@ -11,8 +17,12 @@
11
17
  "sales.audit.orders.lines.delete": "Bestellposition löschen",
12
18
  "sales.audit.orders.lines.upsert": "Bestellposition aktualisieren",
13
19
  "sales.audit.orders.update": "Bestellung aktualisieren",
20
+ "sales.audit.payments.create": "Zahlung erstellen",
21
+ "sales.audit.payments.delete": "Zahlung löschen",
22
+ "sales.audit.payments.update": "Zahlung aktualisieren",
14
23
  "sales.audit.quotes.adjustments.delete": "Angebotsanpassung löschen",
15
24
  "sales.audit.quotes.adjustments.upsert": "Angebotsanpassung aktualisieren",
25
+ "sales.audit.quotes.convert": "Angebot in Bestellung umwandeln",
16
26
  "sales.audit.quotes.create": "Angebot erstellen",
17
27
  "sales.audit.quotes.delete": "Angebot löschen",
18
28
  "sales.audit.quotes.lines.delete": "Angebotsposition löschen",
@@ -351,7 +361,11 @@
351
361
  "sales.config.statuses.lines.title": "Positionsstatus",
352
362
  "sales.config.statuses.orders.description": "Verwalten Sie die verfügbaren Statuswerte für Verkaufsaufträge.",
353
363
  "sales.config.statuses.orders.title": "Bestellstatus",
364
+ "sales.config.statuses.payments.description": "Verfügbare Statuswerte für Zahlungen konfigurieren.",
365
+ "sales.config.statuses.payments.title": "Zahlungsstatus",
354
366
  "sales.config.statuses.search": "Status durchsuchen…",
367
+ "sales.config.statuses.shipments.description": "Verfügbare Statuswerte für Lieferungen konfigurieren.",
368
+ "sales.config.statuses.shipments.title": "Lieferstatus",
355
369
  "sales.config.statuses.success.delete": "Status gelöscht.",
356
370
  "sales.config.statuses.success.save": "Status gespeichert.",
357
371
  "sales.config.taxRates.actions.add": "Steuersatz hinzufügen",
@@ -637,9 +651,11 @@
637
651
  "sales.documents.detail.items.variantSearch": "Variante suchen",
638
652
  "sales.documents.detail.loading": "Dokument wird geladen…",
639
653
  "sales.documents.detail.number": "Dokumentnummer",
654
+ "sales.documents.detail.numberEditForbidden": "Dokumentennummer kann nicht bearbeitet werden.",
640
655
  "sales.documents.detail.numberEmpty": "Noch keine Nummer",
641
656
  "sales.documents.detail.numberGenerateError": "Nummer konnte nicht generiert werden.",
642
657
  "sales.documents.detail.numberGenerated": "Neue Nummer generiert.",
658
+ "sales.documents.detail.numberRequired": "Dokumentennummer ist erforderlich.",
643
659
  "sales.documents.detail.order": "Bestellung",
644
660
  "sales.documents.detail.paymentMethod.empty": "Keine Zahlungsmethoden gefunden.",
645
661
  "sales.documents.detail.paymentMethod.label": "Zahlungsmethode",
@@ -779,6 +795,8 @@
779
795
  "sales.documents.empty.adjustments.description": "Fügen Sie Rabatte, Gebühren oder Steuern hinzu, um die Summen anzupassen.",
780
796
  "sales.documents.empty.adjustments.title": "Noch keine Anpassungen.",
781
797
  "sales.documents.errors.forbidden": "Sie haben keinen Zugriff zum Generieren von Nummern.",
798
+ "sales.documents.errors.number_edit_forbidden": "Dokumentennummer kann nicht bearbeitet werden.",
799
+ "sales.documents.errors.number_forbidden": "Dokumentennummernoperation ist nicht zulässig.",
782
800
  "sales.documents.errors.number_generate_failed": "Dokumentnummer konnte nicht generiert werden.",
783
801
  "sales.documents.errors.organization_required": "Organisationskontext ist erforderlich.",
784
802
  "sales.documents.errors.unauthorized": "Nicht autorisiert",
@@ -1084,8 +1102,13 @@
1084
1102
  "sales.documents.status.sectionTitle": "Statusänderungen",
1085
1103
  "sales.errors.invalid_query": "Ungültige Abfrageparameter",
1086
1104
  "sales.errors.organization_required": "Organisationskontext ist erforderlich",
1105
+ "sales.errors.tag_invalid": "Ungültiges Tag-Format.",
1106
+ "sales.errors.tag_required": "Tag ist erforderlich.",
1087
1107
  "sales.errors.tenant_required": "Mandantenkontext ist erforderlich",
1088
1108
  "sales.errors.unauthorized": "Nicht autorisiert",
1109
+ "sales.messageObjects.notFound": "Nicht gefunden",
1110
+ "sales.messageObjects.order.title": "Bestellung",
1111
+ "sales.messageObjects.quote.title": "Angebot",
1089
1112
  "sales.module.description": "Angebote, Aufträge, Fulfillment, Rechnungsstellung und Zahlungen verbunden mit dem Produktkatalog.",
1090
1113
  "sales.module.title": "Vertriebsmanagement",
1091
1114
  "sales.nav.channels": "Vertriebskanäle",
@@ -1141,6 +1164,9 @@
1141
1164
  "sales.orders.status_change.empty": "nicht gesetzt",
1142
1165
  "sales.orders.status_change.note": "Status geändert von {from} auf {to} durch {actor}.",
1143
1166
  "sales.orders.update": "Bestellung aktualisieren",
1167
+ "sales.payments.currency_mismatch": "Zahlungswährung stimmt nicht mit der Bestellwährung überein.",
1168
+ "sales.payments.not_found": "Zahlung nicht gefunden.",
1169
+ "sales.payments.order_required": "Bestellung ist für diese Zahlung erforderlich.",
1144
1170
  "sales.quotes.accept.adminEmail.body": "Der Kunde hat das Angebot {quoteNumber} angenommen. Eine Bestellung wurde erstellt: {orderNumber}.",
1145
1171
  "sales.quotes.accept.adminEmail.cta": "Bestellung ansehen",
1146
1172
  "sales.quotes.accept.adminEmail.footer": "Open Mercato",
@@ -4,6 +4,12 @@
4
4
  "audit_logs.resource_kind.sales.payment": "Payment",
5
5
  "audit_logs.resource_kind.sales.shipment": "Shipment",
6
6
  "customers~sales.nav.group": "Sales",
7
+ "sales.audit.channels.create": "Create sales channel",
8
+ "sales.audit.channels.delete": "Delete sales channel",
9
+ "sales.audit.channels.update": "Update sales channel",
10
+ "sales.audit.notes.create": "Create note",
11
+ "sales.audit.notes.delete": "Delete note",
12
+ "sales.audit.notes.update": "Update note",
7
13
  "sales.audit.orders.adjustments.delete": "Delete order adjustment",
8
14
  "sales.audit.orders.adjustments.upsert": "Update order adjustment",
9
15
  "sales.audit.orders.create": "Create sales order",
@@ -11,8 +17,12 @@
11
17
  "sales.audit.orders.lines.delete": "Delete order line",
12
18
  "sales.audit.orders.lines.upsert": "Update order line",
13
19
  "sales.audit.orders.update": "Update sales order",
20
+ "sales.audit.payments.create": "Create payment",
21
+ "sales.audit.payments.delete": "Delete payment",
22
+ "sales.audit.payments.update": "Update payment",
14
23
  "sales.audit.quotes.adjustments.delete": "Delete quote adjustment",
15
24
  "sales.audit.quotes.adjustments.upsert": "Update quote adjustment",
25
+ "sales.audit.quotes.convert": "Convert quote to order",
16
26
  "sales.audit.quotes.create": "Create sales quote",
17
27
  "sales.audit.quotes.delete": "Delete sales quote",
18
28
  "sales.audit.quotes.lines.delete": "Delete quote line",
@@ -351,7 +361,11 @@
351
361
  "sales.config.statuses.lines.title": "Order line statuses",
352
362
  "sales.config.statuses.orders.description": "Configure the status values available for sales orders.",
353
363
  "sales.config.statuses.orders.title": "Order statuses",
364
+ "sales.config.statuses.payments.description": "Configure the status values available for payments.",
365
+ "sales.config.statuses.payments.title": "Payment statuses",
354
366
  "sales.config.statuses.search": "Search statuses…",
367
+ "sales.config.statuses.shipments.description": "Configure the status values available for shipments.",
368
+ "sales.config.statuses.shipments.title": "Shipment statuses",
355
369
  "sales.config.statuses.success.delete": "Status deleted.",
356
370
  "sales.config.statuses.success.save": "Status saved.",
357
371
  "sales.config.taxRates.actions.add": "Add tax rate",
@@ -637,9 +651,11 @@
637
651
  "sales.documents.detail.items.variantSearch": "Search variant",
638
652
  "sales.documents.detail.loading": "Loading document…",
639
653
  "sales.documents.detail.number": "Document number",
654
+ "sales.documents.detail.numberEditForbidden": "Document number cannot be edited.",
640
655
  "sales.documents.detail.numberEmpty": "No number yet",
641
656
  "sales.documents.detail.numberGenerateError": "Could not generate number.",
642
657
  "sales.documents.detail.numberGenerated": "New number generated.",
658
+ "sales.documents.detail.numberRequired": "Document number is required.",
643
659
  "sales.documents.detail.order": "Sales order",
644
660
  "sales.documents.detail.paymentMethod.empty": "No payment methods found.",
645
661
  "sales.documents.detail.paymentMethod.label": "Payment method",
@@ -779,6 +795,8 @@
779
795
  "sales.documents.empty.adjustments.description": "Add discounts, fees, or taxes to refine totals.",
780
796
  "sales.documents.empty.adjustments.title": "No adjustments yet.",
781
797
  "sales.documents.errors.forbidden": "You do not have access to generate numbers.",
798
+ "sales.documents.errors.number_edit_forbidden": "Document number cannot be edited.",
799
+ "sales.documents.errors.number_forbidden": "Document number operation is not allowed.",
782
800
  "sales.documents.errors.number_generate_failed": "Failed to generate document number.",
783
801
  "sales.documents.errors.organization_required": "Organization context is required.",
784
802
  "sales.documents.errors.unauthorized": "Unauthorized",
@@ -1084,8 +1102,13 @@
1084
1102
  "sales.documents.status.sectionTitle": "Status changes",
1085
1103
  "sales.errors.invalid_query": "Invalid query parameters",
1086
1104
  "sales.errors.organization_required": "Organization context is required",
1105
+ "sales.errors.tag_invalid": "Invalid tag format.",
1106
+ "sales.errors.tag_required": "Tag is required.",
1087
1107
  "sales.errors.tenant_required": "Tenant context is required",
1088
1108
  "sales.errors.unauthorized": "Unauthorized",
1109
+ "sales.messageObjects.notFound": "Not found",
1110
+ "sales.messageObjects.order.title": "Sales order",
1111
+ "sales.messageObjects.quote.title": "Sales quote",
1089
1112
  "sales.module.description": "Quotes, orders, fulfillment, invoicing, and payments connected to the product catalog.",
1090
1113
  "sales.module.title": "Sales Management",
1091
1114
  "sales.nav.channels": "Channels",
@@ -1141,6 +1164,9 @@
1141
1164
  "sales.orders.status_change.empty": "unset",
1142
1165
  "sales.orders.status_change.note": "Status changed from {from} to {to} by {actor}.",
1143
1166
  "sales.orders.update": "Update sales order",
1167
+ "sales.payments.currency_mismatch": "Payment currency does not match the order currency.",
1168
+ "sales.payments.not_found": "Payment not found.",
1169
+ "sales.payments.order_required": "Order is required for this payment.",
1144
1170
  "sales.quotes.accept.adminEmail.body": "The customer accepted quote {quoteNumber}. An order has been created: {orderNumber}.",
1145
1171
  "sales.quotes.accept.adminEmail.cta": "View order",
1146
1172
  "sales.quotes.accept.adminEmail.footer": "Open Mercato",
@@ -4,6 +4,12 @@
4
4
  "audit_logs.resource_kind.sales.payment": "Pago",
5
5
  "audit_logs.resource_kind.sales.shipment": "Envío",
6
6
  "customers~sales.nav.group": "Ventas",
7
+ "sales.audit.channels.create": "Crear canal de ventas",
8
+ "sales.audit.channels.delete": "Eliminar canal de ventas",
9
+ "sales.audit.channels.update": "Actualizar canal de ventas",
10
+ "sales.audit.notes.create": "Crear nota",
11
+ "sales.audit.notes.delete": "Eliminar nota",
12
+ "sales.audit.notes.update": "Actualizar nota",
7
13
  "sales.audit.orders.adjustments.delete": "Eliminar ajuste de pedido",
8
14
  "sales.audit.orders.adjustments.upsert": "Actualizar ajuste de pedido",
9
15
  "sales.audit.orders.create": "Crear pedido de ventas",
@@ -11,8 +17,12 @@
11
17
  "sales.audit.orders.lines.delete": "Eliminar línea de pedido",
12
18
  "sales.audit.orders.lines.upsert": "Actualizar línea de pedido",
13
19
  "sales.audit.orders.update": "Actualizar pedido de ventas",
20
+ "sales.audit.payments.create": "Crear pago",
21
+ "sales.audit.payments.delete": "Eliminar pago",
22
+ "sales.audit.payments.update": "Actualizar pago",
14
23
  "sales.audit.quotes.adjustments.delete": "Eliminar ajuste de cotización",
15
24
  "sales.audit.quotes.adjustments.upsert": "Actualizar ajuste de cotización",
25
+ "sales.audit.quotes.convert": "Convertir cotización a pedido",
16
26
  "sales.audit.quotes.create": "Crear cotización",
17
27
  "sales.audit.quotes.delete": "Eliminar cotización",
18
28
  "sales.audit.quotes.lines.delete": "Eliminar línea de cotización",
@@ -351,7 +361,11 @@
351
361
  "sales.config.statuses.lines.title": "Estados de líneas",
352
362
  "sales.config.statuses.orders.description": "Configura los estados disponibles para los pedidos de ventas.",
353
363
  "sales.config.statuses.orders.title": "Estados de pedidos",
364
+ "sales.config.statuses.payments.description": "Configure los valores de estado disponibles para pagos.",
365
+ "sales.config.statuses.payments.title": "Estados de pago",
354
366
  "sales.config.statuses.search": "Buscar estados…",
367
+ "sales.config.statuses.shipments.description": "Configure los valores de estado disponibles para envíos.",
368
+ "sales.config.statuses.shipments.title": "Estados de envío",
355
369
  "sales.config.statuses.success.delete": "Estado eliminado.",
356
370
  "sales.config.statuses.success.save": "Estado guardado.",
357
371
  "sales.config.taxRates.actions.add": "Agregar tipo de impuesto",
@@ -637,9 +651,11 @@
637
651
  "sales.documents.detail.items.variantSearch": "Buscar variante",
638
652
  "sales.documents.detail.loading": "Cargando documento…",
639
653
  "sales.documents.detail.number": "Número de documento",
654
+ "sales.documents.detail.numberEditForbidden": "El número de documento no se puede editar.",
640
655
  "sales.documents.detail.numberEmpty": "Sin número aún",
641
656
  "sales.documents.detail.numberGenerateError": "No se pudo generar el número.",
642
657
  "sales.documents.detail.numberGenerated": "Nuevo número generado.",
658
+ "sales.documents.detail.numberRequired": "El número de documento es obligatorio.",
643
659
  "sales.documents.detail.order": "Pedido",
644
660
  "sales.documents.detail.paymentMethod.empty": "No se encontraron métodos de pago.",
645
661
  "sales.documents.detail.paymentMethod.label": "Método de pago",
@@ -779,6 +795,8 @@
779
795
  "sales.documents.empty.adjustments.description": "Agrega descuentos, tarifas o impuestos para ajustar los totales.",
780
796
  "sales.documents.empty.adjustments.title": "Aún no hay ajustes.",
781
797
  "sales.documents.errors.forbidden": "No tienes acceso para generar números.",
798
+ "sales.documents.errors.number_edit_forbidden": "El número de documento no se puede editar.",
799
+ "sales.documents.errors.number_forbidden": "La operación sobre el número de documento no está permitida.",
782
800
  "sales.documents.errors.number_generate_failed": "No se pudo generar el número de documento.",
783
801
  "sales.documents.errors.organization_required": "Se requiere contexto de organización.",
784
802
  "sales.documents.errors.unauthorized": "No autorizado",
@@ -1084,8 +1102,13 @@
1084
1102
  "sales.documents.status.sectionTitle": "Cambios de estado",
1085
1103
  "sales.errors.invalid_query": "Parámetros de consulta inválidos",
1086
1104
  "sales.errors.organization_required": "Se requiere el contexto de la organización",
1105
+ "sales.errors.tag_invalid": "Formato de etiqueta no válido.",
1106
+ "sales.errors.tag_required": "La etiqueta es obligatoria.",
1087
1107
  "sales.errors.tenant_required": "Se requiere el contexto del inquilino",
1088
1108
  "sales.errors.unauthorized": "No autorizado",
1109
+ "sales.messageObjects.notFound": "No encontrado",
1110
+ "sales.messageObjects.order.title": "Pedido",
1111
+ "sales.messageObjects.quote.title": "Cotización",
1089
1112
  "sales.module.description": "Cotizaciones, pedidos, cumplimiento, facturación y pagos conectados al catálogo de productos.",
1090
1113
  "sales.module.title": "Gestión de ventas",
1091
1114
  "sales.nav.channels": "Canales de ventas",
@@ -1141,6 +1164,9 @@
1141
1164
  "sales.orders.status_change.empty": "sin definir",
1142
1165
  "sales.orders.status_change.note": "Estado cambiado de {from} a {to} por {actor}.",
1143
1166
  "sales.orders.update": "Actualizar pedido de ventas",
1167
+ "sales.payments.currency_mismatch": "La moneda del pago no coincide con la moneda del pedido.",
1168
+ "sales.payments.not_found": "Pago no encontrado.",
1169
+ "sales.payments.order_required": "Se requiere un pedido para este pago.",
1144
1170
  "sales.quotes.accept.adminEmail.body": "El cliente aceptó la cotización {quoteNumber}. Se ha creado un pedido: {orderNumber}.",
1145
1171
  "sales.quotes.accept.adminEmail.cta": "Ver pedido",
1146
1172
  "sales.quotes.accept.adminEmail.footer": "Open Mercato",