@open-mercato/core 0.10.1-develop.7716.1.cefe7975df → 0.10.1-develop.7721.1.b5c4a00a68

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 (384) hide show
  1. package/.turbo/turbo-build.log +2 -2
  2. package/dist/generated/entities/staff_support_routing_rule/index.js +21 -0
  3. package/dist/generated/entities/staff_support_routing_rule/index.js.map +7 -0
  4. package/dist/generated/entities/staff_support_ticket/index.js +37 -0
  5. package/dist/generated/entities/staff_support_ticket/index.js.map +7 -0
  6. package/dist/generated/entities/staff_time_project/index.js +2 -0
  7. package/dist/generated/entities/staff_time_project/index.js.map +2 -2
  8. package/dist/generated/entities/staff_time_project_member/index.js +2 -0
  9. package/dist/generated/entities/staff_time_project_member/index.js.map +2 -2
  10. package/dist/generated/entities/staff_time_task/index.js +4 -0
  11. package/dist/generated/entities/staff_time_task/index.js.map +2 -2
  12. package/dist/generated/entities/staff_time_task_comment/index.js +9 -1
  13. package/dist/generated/entities/staff_time_task_comment/index.js.map +2 -2
  14. package/dist/generated/entities.ids.generated.js +2 -0
  15. package/dist/generated/entities.ids.generated.js.map +2 -2
  16. package/dist/generated/entity-fields-registry.js +38 -0
  17. package/dist/generated/entity-fields-registry.js.map +2 -2
  18. package/dist/helpers/integration/auth.js +1 -0
  19. package/dist/helpers/integration/auth.js.map +2 -2
  20. package/dist/helpers/integration/communicationChannelsFixtures.js +20 -0
  21. package/dist/helpers/integration/communicationChannelsFixtures.js.map +2 -2
  22. package/dist/modules/catalog/api/bulk-delete/route.js +12 -2
  23. package/dist/modules/catalog/api/bulk-delete/route.js.map +2 -2
  24. package/dist/modules/communication_channels/api/post/test-seed/route.js +17 -3
  25. package/dist/modules/communication_channels/api/post/test-seed/route.js.map +2 -2
  26. package/dist/modules/communication_channels/lib/test-seed.js +38 -5
  27. package/dist/modules/communication_channels/lib/test-seed.js.map +2 -2
  28. package/dist/modules/messages/commands/messages.js +2 -3
  29. package/dist/modules/messages/commands/messages.js.map +2 -2
  30. package/dist/modules/portal/frontend/[orgSlug]/portal/dashboard/page.js +2 -2
  31. package/dist/modules/portal/frontend/[orgSlug]/portal/dashboard/page.js.map +2 -2
  32. package/dist/modules/staff/api/portal/support-tickets/[id]/attachments/route.js +299 -0
  33. package/dist/modules/staff/api/portal/support-tickets/[id]/attachments/route.js.map +7 -0
  34. package/dist/modules/staff/api/portal/support-tickets/[id]/messages/route.js +91 -0
  35. package/dist/modules/staff/api/portal/support-tickets/[id]/messages/route.js.map +7 -0
  36. package/dist/modules/staff/api/portal/support-tickets/[id]/route.js +146 -0
  37. package/dist/modules/staff/api/portal/support-tickets/[id]/route.js.map +7 -0
  38. package/dist/modules/staff/api/portal/support-tickets/options/route.js +60 -0
  39. package/dist/modules/staff/api/portal/support-tickets/options/route.js.map +7 -0
  40. package/dist/modules/staff/api/portal/support-tickets/route.js +220 -0
  41. package/dist/modules/staff/api/portal/support-tickets/route.js.map +7 -0
  42. package/dist/modules/staff/api/timesheets/settings/route.js +7 -1
  43. package/dist/modules/staff/api/timesheets/settings/route.js.map +2 -2
  44. package/dist/modules/staff/api/timesheets/support-routing-rules/fallback-project/route.js +122 -0
  45. package/dist/modules/staff/api/timesheets/support-routing-rules/fallback-project/route.js.map +7 -0
  46. package/dist/modules/staff/api/timesheets/support-routing-rules/preview/route.js +180 -0
  47. package/dist/modules/staff/api/timesheets/support-routing-rules/preview/route.js.map +7 -0
  48. package/dist/modules/staff/api/timesheets/support-routing-rules/route.js +147 -0
  49. package/dist/modules/staff/api/timesheets/support-routing-rules/route.js.map +7 -0
  50. package/dist/modules/staff/api/timesheets/support-tickets/options/route.js +133 -0
  51. package/dist/modules/staff/api/timesheets/support-tickets/options/route.js.map +7 -0
  52. package/dist/modules/staff/api/timesheets/tasks/[id]/claim/route.js +33 -0
  53. package/dist/modules/staff/api/timesheets/tasks/[id]/claim/route.js.map +7 -0
  54. package/dist/modules/staff/api/timesheets/tasks/[id]/comments/route.js +25 -7
  55. package/dist/modules/staff/api/timesheets/tasks/[id]/comments/route.js.map +2 -2
  56. package/dist/modules/staff/api/timesheets/tasks/[id]/release/route.js +32 -0
  57. package/dist/modules/staff/api/timesheets/tasks/[id]/release/route.js.map +7 -0
  58. package/dist/modules/staff/api/timesheets/tasks/route.js +94 -47
  59. package/dist/modules/staff/api/timesheets/tasks/route.js.map +2 -2
  60. package/dist/modules/staff/api/timesheets/time-projects/[id]/employees/route.js +3 -0
  61. package/dist/modules/staff/api/timesheets/time-projects/[id]/employees/route.js.map +2 -2
  62. package/dist/modules/staff/api/timesheets/time-projects/route.js +3 -0
  63. package/dist/modules/staff/api/timesheets/time-projects/route.js.map +2 -2
  64. package/dist/modules/staff/backend/staff/time-tracking/projects/[id]/edit/page.js +1 -0
  65. package/dist/modules/staff/backend/staff/time-tracking/projects/[id]/edit/page.js.map +2 -2
  66. package/dist/modules/staff/backend/staff/time-tracking/projects/[id]/page.js +54 -4
  67. package/dist/modules/staff/backend/staff/time-tracking/projects/[id]/page.js.map +2 -2
  68. package/dist/modules/staff/backend/staff/time-tracking/projects/projectFormConfig.js +21 -5
  69. package/dist/modules/staff/backend/staff/time-tracking/projects/projectFormConfig.js.map +2 -2
  70. package/dist/modules/staff/backend/staff/time-tracking/settings/page.js +319 -254
  71. package/dist/modules/staff/backend/staff/time-tracking/settings/page.js.map +2 -2
  72. package/dist/modules/staff/backend/staff/time-tracking/support/page.js +363 -0
  73. package/dist/modules/staff/backend/staff/time-tracking/support/page.js.map +7 -0
  74. package/dist/modules/staff/backend/staff/time-tracking/support/page.meta.js +18 -0
  75. package/dist/modules/staff/backend/staff/time-tracking/support/page.meta.js.map +7 -0
  76. package/dist/modules/staff/cli.js +27 -0
  77. package/dist/modules/staff/cli.js.map +2 -2
  78. package/dist/modules/staff/commands/index.js +3 -0
  79. package/dist/modules/staff/commands/index.js.map +2 -2
  80. package/dist/modules/staff/commands/shared.js +10 -1
  81. package/dist/modules/staff/commands/shared.js.map +2 -2
  82. package/dist/modules/staff/commands/support-routing-rules.js +505 -0
  83. package/dist/modules/staff/commands/support-routing-rules.js.map +7 -0
  84. package/dist/modules/staff/commands/support-tickets.js +513 -0
  85. package/dist/modules/staff/commands/support-tickets.js.map +7 -0
  86. package/dist/modules/staff/commands/timesheets-projects.js +72 -14
  87. package/dist/modules/staff/commands/timesheets-projects.js.map +2 -2
  88. package/dist/modules/staff/commands/timesheets-task-assignment.js +270 -0
  89. package/dist/modules/staff/commands/timesheets-task-assignment.js.map +7 -0
  90. package/dist/modules/staff/commands/timesheets-task-comments.js +58 -12
  91. package/dist/modules/staff/commands/timesheets-task-comments.js.map +2 -2
  92. package/dist/modules/staff/commands/timesheets-tasks.js +91 -9
  93. package/dist/modules/staff/commands/timesheets-tasks.js.map +3 -3
  94. package/dist/modules/staff/data/enrichers.js +141 -0
  95. package/dist/modules/staff/data/enrichers.js.map +2 -2
  96. package/dist/modules/staff/data/entities.js +143 -2
  97. package/dist/modules/staff/data/entities.js.map +2 -2
  98. package/dist/modules/staff/data/extensions.js +8 -0
  99. package/dist/modules/staff/data/extensions.js.map +2 -2
  100. package/dist/modules/staff/data/validators.js +34 -5
  101. package/dist/modules/staff/data/validators.js.map +2 -2
  102. package/dist/modules/staff/encryption.js +6 -0
  103. package/dist/modules/staff/encryption.js.map +2 -2
  104. package/dist/modules/staff/events.js +25 -0
  105. package/dist/modules/staff/events.js.map +2 -2
  106. package/dist/modules/staff/events.payloads.js +54 -0
  107. package/dist/modules/staff/events.payloads.js.map +2 -2
  108. package/dist/modules/staff/extension-points.js +1 -0
  109. package/dist/modules/staff/extension-points.js.map +2 -2
  110. package/dist/modules/staff/frontend/[orgSlug]/portal/support/[id]/page.js +468 -0
  111. package/dist/modules/staff/frontend/[orgSlug]/portal/support/[id]/page.js.map +7 -0
  112. package/dist/modules/staff/frontend/[orgSlug]/portal/support/[id]/page.meta.js +12 -0
  113. package/dist/modules/staff/frontend/[orgSlug]/portal/support/[id]/page.meta.js.map +7 -0
  114. package/dist/modules/staff/frontend/[orgSlug]/portal/support/new/page.js +316 -0
  115. package/dist/modules/staff/frontend/[orgSlug]/portal/support/new/page.js.map +7 -0
  116. package/dist/modules/staff/frontend/[orgSlug]/portal/support/new/page.meta.js +12 -0
  117. package/dist/modules/staff/frontend/[orgSlug]/portal/support/new/page.meta.js.map +7 -0
  118. package/dist/modules/staff/frontend/[orgSlug]/portal/support/page.js +190 -0
  119. package/dist/modules/staff/frontend/[orgSlug]/portal/support/page.js.map +7 -0
  120. package/dist/modules/staff/frontend/[orgSlug]/portal/support/page.meta.js +19 -0
  121. package/dist/modules/staff/frontend/[orgSlug]/portal/support/page.meta.js.map +7 -0
  122. package/dist/modules/staff/index.js +1 -1
  123. package/dist/modules/staff/index.js.map +2 -2
  124. package/dist/modules/staff/lib/crud.js +2 -0
  125. package/dist/modules/staff/lib/crud.js.map +2 -2
  126. package/dist/modules/staff/lib/support/attachments.js +36 -0
  127. package/dist/modules/staff/lib/support/attachments.js.map +7 -0
  128. package/dist/modules/staff/lib/support/dictionaries.js +87 -0
  129. package/dist/modules/staff/lib/support/dictionaries.js.map +7 -0
  130. package/dist/modules/staff/lib/support/notifications.js +111 -0
  131. package/dist/modules/staff/lib/support/notifications.js.map +7 -0
  132. package/dist/modules/staff/lib/support/portalAttachments.js +100 -0
  133. package/dist/modules/staff/lib/support/portalAttachments.js.map +7 -0
  134. package/dist/modules/staff/lib/support/portalBroadcast.js +117 -0
  135. package/dist/modules/staff/lib/support/portalBroadcast.js.map +7 -0
  136. package/dist/modules/staff/lib/support/portalRoute.js +99 -0
  137. package/dist/modules/staff/lib/support/portalRoute.js.map +7 -0
  138. package/dist/modules/staff/lib/support/portalStatus.js +12 -0
  139. package/dist/modules/staff/lib/support/portalStatus.js.map +7 -0
  140. package/dist/modules/staff/lib/support/portalTickets.js +148 -0
  141. package/dist/modules/staff/lib/support/portalTickets.js.map +7 -0
  142. package/dist/modules/staff/lib/support/routing.js +81 -0
  143. package/dist/modules/staff/lib/support/routing.js.map +7 -0
  144. package/dist/modules/staff/lib/support/routingRuleDraft.js +25 -0
  145. package/dist/modules/staff/lib/support/routingRuleDraft.js.map +7 -0
  146. package/dist/modules/staff/lib/support/seedDefaults.js +114 -0
  147. package/dist/modules/staff/lib/support/seedDefaults.js.map +7 -0
  148. package/dist/modules/staff/lib/support/supportActivity.js +26 -0
  149. package/dist/modules/staff/lib/support/supportActivity.js.map +7 -0
  150. package/dist/modules/staff/lib/support-ui/PortalSupportNotLinked.js +23 -0
  151. package/dist/modules/staff/lib/support-ui/PortalSupportNotLinked.js.map +7 -0
  152. package/dist/modules/staff/lib/support-ui/portalAttachmentValidation.js +112 -0
  153. package/dist/modules/staff/lib/support-ui/portalAttachmentValidation.js.map +7 -0
  154. package/dist/modules/staff/lib/support-ui/portalPendingUploads.js +45 -0
  155. package/dist/modules/staff/lib/support-ui/portalPendingUploads.js.map +7 -0
  156. package/dist/modules/staff/lib/support-ui/portalSupport.js +51 -0
  157. package/dist/modules/staff/lib/support-ui/portalSupport.js.map +7 -0
  158. package/dist/modules/staff/lib/time-tracking/access.js +3 -39
  159. package/dist/modules/staff/lib/time-tracking/access.js.map +2 -2
  160. package/dist/modules/staff/lib/time-tracking/listProjectAccess.js +54 -0
  161. package/dist/modules/staff/lib/time-tracking/listProjectAccess.js.map +7 -0
  162. package/dist/modules/staff/lib/time-tracking/portalRecipients.js +92 -2
  163. package/dist/modules/staff/lib/time-tracking/portalRecipients.js.map +2 -2
  164. package/dist/modules/staff/lib/time-tracking/projectAssignment.js +112 -0
  165. package/dist/modules/staff/lib/time-tracking/projectAssignment.js.map +7 -0
  166. package/dist/modules/staff/lib/time-tracking/settingKeys.js +14 -0
  167. package/dist/modules/staff/lib/time-tracking/settingKeys.js.map +2 -2
  168. package/dist/modules/staff/lib/time-tracking/settings.js +28 -1
  169. package/dist/modules/staff/lib/time-tracking/settings.js.map +2 -2
  170. package/dist/modules/staff/lib/time-tracking/taskAssignmentRoute.js +143 -0
  171. package/dist/modules/staff/lib/time-tracking/taskAssignmentRoute.js.map +7 -0
  172. package/dist/modules/staff/lib/time-tracking/workRecipients.js +92 -0
  173. package/dist/modules/staff/lib/time-tracking/workRecipients.js.map +7 -0
  174. package/dist/modules/staff/lib/time-tracking-ui/BoardFilterChips.js +32 -3
  175. package/dist/modules/staff/lib/time-tracking-ui/BoardFilterChips.js.map +2 -2
  176. package/dist/modules/staff/lib/time-tracking-ui/KanbanBoard.js +29 -0
  177. package/dist/modules/staff/lib/time-tracking-ui/KanbanBoard.js.map +2 -2
  178. package/dist/modules/staff/lib/time-tracking-ui/KanbanCard.js +4 -0
  179. package/dist/modules/staff/lib/time-tracking-ui/KanbanCard.js.map +2 -2
  180. package/dist/modules/staff/lib/time-tracking-ui/ProjectFormSections.js +141 -1
  181. package/dist/modules/staff/lib/time-tracking-ui/ProjectFormSections.js.map +2 -2
  182. package/dist/modules/staff/lib/time-tracking-ui/SupportAttachmentsSection.js +153 -0
  183. package/dist/modules/staff/lib/time-tracking-ui/SupportAttachmentsSection.js.map +7 -0
  184. package/dist/modules/staff/lib/time-tracking-ui/SupportRequestPanel.js +67 -0
  185. package/dist/modules/staff/lib/time-tracking-ui/SupportRequestPanel.js.map +7 -0
  186. package/dist/modules/staff/lib/time-tracking-ui/TaskBoardScreen.js +3 -1
  187. package/dist/modules/staff/lib/time-tracking-ui/TaskBoardScreen.js.map +2 -2
  188. package/dist/modules/staff/lib/time-tracking-ui/TaskCommentThread.js +80 -17
  189. package/dist/modules/staff/lib/time-tracking-ui/TaskCommentThread.js.map +2 -2
  190. package/dist/modules/staff/lib/time-tracking-ui/TaskDrawer.js +230 -41
  191. package/dist/modules/staff/lib/time-tracking-ui/TaskDrawer.js.map +2 -2
  192. package/dist/modules/staff/lib/time-tracking-ui/boardDirectory.js +21 -1
  193. package/dist/modules/staff/lib/time-tracking-ui/boardDirectory.js.map +2 -2
  194. package/dist/modules/staff/lib/time-tracking-ui/boardFilters.js +16 -4
  195. package/dist/modules/staff/lib/time-tracking-ui/boardFilters.js.map +2 -2
  196. package/dist/modules/staff/lib/time-tracking-ui/kanbanBoardData.js +3 -1
  197. package/dist/modules/staff/lib/time-tracking-ui/kanbanBoardData.js.map +2 -2
  198. package/dist/modules/staff/lib/time-tracking-ui/projectDefaultAssignee.js +68 -0
  199. package/dist/modules/staff/lib/time-tracking-ui/projectDefaultAssignee.js.map +7 -0
  200. package/dist/modules/staff/lib/time-tracking-ui/settingsTabs.js +7 -0
  201. package/dist/modules/staff/lib/time-tracking-ui/settingsTabs.js.map +7 -0
  202. package/dist/modules/staff/lib/time-tracking-ui/supportTicketData.js +50 -0
  203. package/dist/modules/staff/lib/time-tracking-ui/supportTicketData.js.map +7 -0
  204. package/dist/modules/staff/lib/time-tracking-ui/taskDrawerData.js +13 -1
  205. package/dist/modules/staff/lib/time-tracking-ui/taskDrawerData.js.map +2 -2
  206. package/dist/modules/staff/lib/time-tracking-ui/timeTrackingSettingsForm.js +36 -2
  207. package/dist/modules/staff/lib/time-tracking-ui/timeTrackingSettingsForm.js.map +2 -2
  208. package/dist/modules/staff/migrations/Migration20261009180543_staff.js +42 -0
  209. package/dist/modules/staff/migrations/Migration20261009180543_staff.js.map +7 -0
  210. package/dist/modules/staff/notifications.js +92 -0
  211. package/dist/modules/staff/notifications.js.map +2 -2
  212. package/dist/modules/staff/setup.js +6 -2
  213. package/dist/modules/staff/setup.js.map +2 -2
  214. package/dist/modules/staff/subscribers/support-portal-comment-created.js +26 -0
  215. package/dist/modules/staff/subscribers/support-portal-comment-created.js.map +7 -0
  216. package/dist/modules/staff/subscribers/support-portal-comment-deleted.js +26 -0
  217. package/dist/modules/staff/subscribers/support-portal-comment-deleted.js.map +7 -0
  218. package/dist/modules/staff/subscribers/support-portal-comment-updated.js +26 -0
  219. package/dist/modules/staff/subscribers/support-portal-comment-updated.js.map +7 -0
  220. package/dist/modules/staff/subscribers/support-portal-status-column-updated.js +24 -0
  221. package/dist/modules/staff/subscribers/support-portal-status-column-updated.js.map +7 -0
  222. package/dist/modules/staff/subscribers/support-portal-task-status-changed.js +25 -0
  223. package/dist/modules/staff/subscribers/support-portal-task-status-changed.js.map +7 -0
  224. package/dist/modules/staff/subscribers/support-portal-task-updated.js +25 -0
  225. package/dist/modules/staff/subscribers/support-portal-task-updated.js.map +7 -0
  226. package/dist/modules/staff/subscribers/support-ticket-created-notification.js +25 -0
  227. package/dist/modules/staff/subscribers/support-ticket-created-notification.js.map +7 -0
  228. package/dist/modules/staff/subscribers/support-ticket-customer-replied-notification.js +25 -0
  229. package/dist/modules/staff/subscribers/support-ticket-customer-replied-notification.js.map +7 -0
  230. package/dist/modules/staff/subscribers/support-ticket-unnotified-clear.js +26 -0
  231. package/dist/modules/staff/subscribers/support-ticket-unnotified-clear.js.map +7 -0
  232. package/dist/modules/staff/subscribers/time-task-assignee-notification.js +83 -0
  233. package/dist/modules/staff/subscribers/time-task-assignee-notification.js.map +7 -0
  234. package/dist/modules/staff/widgets/injection/portal-support-tickets/widget.client.js +112 -0
  235. package/dist/modules/staff/widgets/injection/portal-support-tickets/widget.client.js.map +7 -0
  236. package/dist/modules/staff/widgets/injection/portal-support-tickets/widget.js +17 -0
  237. package/dist/modules/staff/widgets/injection/portal-support-tickets/widget.js.map +7 -0
  238. package/dist/modules/staff/widgets/injection/time-tracking-settings-support/widget.client.js +870 -0
  239. package/dist/modules/staff/widgets/injection/time-tracking-settings-support/widget.client.js.map +7 -0
  240. package/dist/modules/staff/widgets/injection/time-tracking-settings-support/widget.js +17 -0
  241. package/dist/modules/staff/widgets/injection/time-tracking-settings-support/widget.js.map +7 -0
  242. package/dist/modules/staff/widgets/injection-table.js +16 -1
  243. package/dist/modules/staff/widgets/injection-table.js.map +2 -2
  244. package/dist/modules/wms/components/backend/WmsLocationDetailPage.js +4 -18
  245. package/dist/modules/wms/components/backend/WmsLocationDetailPage.js.map +2 -2
  246. package/dist/modules/wms/components/backend/WmsLotDetailPage.js +4 -18
  247. package/dist/modules/wms/components/backend/WmsLotDetailPage.js.map +2 -2
  248. package/dist/modules/wms/components/backend/WmsSkuDetailPage.js +4 -18
  249. package/dist/modules/wms/components/backend/WmsSkuDetailPage.js.map +2 -2
  250. package/dist/modules/wms/lib/inventoryCsvExport.js +19 -0
  251. package/dist/modules/wms/lib/inventoryCsvExport.js.map +7 -0
  252. package/generated/entities/staff_support_routing_rule/index.ts +9 -0
  253. package/generated/entities/staff_support_ticket/index.ts +17 -0
  254. package/generated/entities/staff_time_project/index.ts +1 -0
  255. package/generated/entities/staff_time_project_member/index.ts +1 -0
  256. package/generated/entities/staff_time_task/index.ts +2 -0
  257. package/generated/entities/staff_time_task_comment/index.ts +4 -0
  258. package/generated/entities.ids.generated.ts +2 -0
  259. package/generated/entity-fields-registry.ts +38 -0
  260. package/package.json +8 -8
  261. package/src/helpers/integration/auth.ts +1 -1
  262. package/src/helpers/integration/communicationChannelsFixtures.ts +60 -2
  263. package/src/modules/catalog/api/bulk-delete/route.ts +12 -2
  264. package/src/modules/communication_channels/api/post/test-seed/route.ts +29 -12
  265. package/src/modules/communication_channels/lib/test-seed.ts +49 -10
  266. package/src/modules/messages/commands/messages.ts +8 -10
  267. package/src/modules/portal/frontend/[orgSlug]/portal/dashboard/page.tsx +2 -2
  268. package/src/modules/staff/AGENTS.md +22 -6
  269. package/src/modules/staff/api/portal/support-tickets/[id]/attachments/route.ts +327 -0
  270. package/src/modules/staff/api/portal/support-tickets/[id]/messages/route.ts +94 -0
  271. package/src/modules/staff/api/portal/support-tickets/[id]/route.ts +160 -0
  272. package/src/modules/staff/api/portal/support-tickets/options/route.ts +60 -0
  273. package/src/modules/staff/api/portal/support-tickets/route.ts +253 -0
  274. package/src/modules/staff/api/timesheets/settings/route.ts +7 -1
  275. package/src/modules/staff/api/timesheets/support-routing-rules/fallback-project/route.ts +131 -0
  276. package/src/modules/staff/api/timesheets/support-routing-rules/preview/route.ts +248 -0
  277. package/src/modules/staff/api/timesheets/support-routing-rules/route.ts +150 -0
  278. package/src/modules/staff/api/timesheets/support-tickets/options/route.ts +181 -0
  279. package/src/modules/staff/api/timesheets/tasks/[id]/claim/route.ts +31 -0
  280. package/src/modules/staff/api/timesheets/tasks/[id]/comments/route.ts +25 -7
  281. package/src/modules/staff/api/timesheets/tasks/[id]/release/route.ts +30 -0
  282. package/src/modules/staff/api/timesheets/tasks/route.ts +119 -67
  283. package/src/modules/staff/api/timesheets/time-projects/[id]/employees/route.ts +3 -0
  284. package/src/modules/staff/api/timesheets/time-projects/route.ts +3 -0
  285. package/src/modules/staff/backend/staff/time-tracking/projects/[id]/edit/page.tsx +1 -0
  286. package/src/modules/staff/backend/staff/time-tracking/projects/[id]/page.tsx +67 -2
  287. package/src/modules/staff/backend/staff/time-tracking/projects/projectFormConfig.ts +22 -3
  288. package/src/modules/staff/backend/staff/time-tracking/settings/page.tsx +405 -308
  289. package/src/modules/staff/backend/staff/time-tracking/support/page.meta.ts +14 -0
  290. package/src/modules/staff/backend/staff/time-tracking/support/page.tsx +428 -0
  291. package/src/modules/staff/cli.ts +28 -0
  292. package/src/modules/staff/commands/index.ts +3 -0
  293. package/src/modules/staff/commands/shared.ts +22 -1
  294. package/src/modules/staff/commands/support-routing-rules.ts +595 -0
  295. package/src/modules/staff/commands/support-tickets.ts +580 -0
  296. package/src/modules/staff/commands/timesheets-projects.ts +84 -13
  297. package/src/modules/staff/commands/timesheets-task-assignment.ts +319 -0
  298. package/src/modules/staff/commands/timesheets-task-comments.ts +70 -15
  299. package/src/modules/staff/commands/timesheets-tasks.ts +106 -15
  300. package/src/modules/staff/data/enrichers.ts +203 -0
  301. package/src/modules/staff/data/entities.ts +133 -2
  302. package/src/modules/staff/data/extensions.ts +9 -1
  303. package/src/modules/staff/data/validators.ts +36 -0
  304. package/src/modules/staff/encryption.ts +6 -0
  305. package/src/modules/staff/events.payloads.ts +87 -1
  306. package/src/modules/staff/events.ts +26 -0
  307. package/src/modules/staff/extension-points.ts +1 -0
  308. package/src/modules/staff/frontend/[orgSlug]/portal/support/[id]/page.meta.ts +10 -0
  309. package/src/modules/staff/frontend/[orgSlug]/portal/support/[id]/page.tsx +553 -0
  310. package/src/modules/staff/frontend/[orgSlug]/portal/support/new/page.meta.ts +10 -0
  311. package/src/modules/staff/frontend/[orgSlug]/portal/support/new/page.tsx +346 -0
  312. package/src/modules/staff/frontend/[orgSlug]/portal/support/page.meta.ts +17 -0
  313. package/src/modules/staff/frontend/[orgSlug]/portal/support/page.tsx +253 -0
  314. package/src/modules/staff/i18n/de.json +291 -0
  315. package/src/modules/staff/i18n/en.json +291 -0
  316. package/src/modules/staff/i18n/es.json +291 -0
  317. package/src/modules/staff/i18n/ko.json +291 -0
  318. package/src/modules/staff/i18n/pl.json +291 -0
  319. package/src/modules/staff/index.ts +1 -1
  320. package/src/modules/staff/lib/crud.ts +2 -1
  321. package/src/modules/staff/lib/support/attachments.ts +43 -0
  322. package/src/modules/staff/lib/support/dictionaries.ts +120 -0
  323. package/src/modules/staff/lib/support/notifications.ts +138 -0
  324. package/src/modules/staff/lib/support/portalAttachments.ts +140 -0
  325. package/src/modules/staff/lib/support/portalBroadcast.ts +161 -0
  326. package/src/modules/staff/lib/support/portalRoute.ts +108 -0
  327. package/src/modules/staff/lib/support/portalStatus.ts +15 -0
  328. package/src/modules/staff/lib/support/portalTickets.ts +233 -0
  329. package/src/modules/staff/lib/support/routing.ts +117 -0
  330. package/src/modules/staff/lib/support/routingRuleDraft.ts +45 -0
  331. package/src/modules/staff/lib/support/seedDefaults.ts +151 -0
  332. package/src/modules/staff/lib/support/supportActivity.ts +39 -0
  333. package/src/modules/staff/lib/support-ui/PortalSupportNotLinked.tsx +20 -0
  334. package/src/modules/staff/lib/support-ui/portalAttachmentValidation.ts +125 -0
  335. package/src/modules/staff/lib/support-ui/portalPendingUploads.ts +49 -0
  336. package/src/modules/staff/lib/support-ui/portalSupport.ts +116 -0
  337. package/src/modules/staff/lib/time-tracking/access.ts +2 -62
  338. package/src/modules/staff/lib/time-tracking/listProjectAccess.ts +78 -0
  339. package/src/modules/staff/lib/time-tracking/portalRecipients.ts +173 -5
  340. package/src/modules/staff/lib/time-tracking/projectAssignment.ts +172 -0
  341. package/src/modules/staff/lib/time-tracking/settingKeys.ts +11 -0
  342. package/src/modules/staff/lib/time-tracking/settings.ts +46 -1
  343. package/src/modules/staff/lib/time-tracking/taskAssignmentRoute.ts +165 -0
  344. package/src/modules/staff/lib/time-tracking/workRecipients.ts +183 -0
  345. package/src/modules/staff/lib/time-tracking-ui/BoardFilterChips.tsx +36 -1
  346. package/src/modules/staff/lib/time-tracking-ui/KanbanBoard.tsx +30 -0
  347. package/src/modules/staff/lib/time-tracking-ui/KanbanCard.tsx +9 -0
  348. package/src/modules/staff/lib/time-tracking-ui/ProjectFormSections.tsx +185 -6
  349. package/src/modules/staff/lib/time-tracking-ui/SupportAttachmentsSection.tsx +188 -0
  350. package/src/modules/staff/lib/time-tracking-ui/SupportRequestPanel.tsx +102 -0
  351. package/src/modules/staff/lib/time-tracking-ui/TaskBoardScreen.tsx +2 -0
  352. package/src/modules/staff/lib/time-tracking-ui/TaskCommentThread.tsx +105 -22
  353. package/src/modules/staff/lib/time-tracking-ui/TaskDrawer.tsx +278 -43
  354. package/src/modules/staff/lib/time-tracking-ui/boardDirectory.ts +21 -0
  355. package/src/modules/staff/lib/time-tracking-ui/boardFilters.ts +16 -2
  356. package/src/modules/staff/lib/time-tracking-ui/kanbanBoardData.ts +4 -0
  357. package/src/modules/staff/lib/time-tracking-ui/projectDefaultAssignee.ts +117 -0
  358. package/src/modules/staff/lib/time-tracking-ui/settingsTabs.ts +17 -0
  359. package/src/modules/staff/lib/time-tracking-ui/supportTicketData.ts +71 -0
  360. package/src/modules/staff/lib/time-tracking-ui/taskDrawerData.ts +15 -0
  361. package/src/modules/staff/lib/time-tracking-ui/timeTrackingSettingsForm.ts +48 -1
  362. package/src/modules/staff/migrations/.snapshot-open-mercato.json +714 -0
  363. package/src/modules/staff/migrations/Migration20261009180543_staff.ts +50 -0
  364. package/src/modules/staff/notifications.ts +92 -0
  365. package/src/modules/staff/setup.ts +6 -2
  366. package/src/modules/staff/subscribers/support-portal-comment-created.ts +35 -0
  367. package/src/modules/staff/subscribers/support-portal-comment-deleted.ts +35 -0
  368. package/src/modules/staff/subscribers/support-portal-comment-updated.ts +35 -0
  369. package/src/modules/staff/subscribers/support-portal-status-column-updated.ts +36 -0
  370. package/src/modules/staff/subscribers/support-portal-task-status-changed.ts +34 -0
  371. package/src/modules/staff/subscribers/support-portal-task-updated.ts +34 -0
  372. package/src/modules/staff/subscribers/support-ticket-created-notification.ts +27 -0
  373. package/src/modules/staff/subscribers/support-ticket-customer-replied-notification.ts +27 -0
  374. package/src/modules/staff/subscribers/support-ticket-unnotified-clear.ts +29 -0
  375. package/src/modules/staff/subscribers/time-task-assignee-notification.ts +102 -0
  376. package/src/modules/staff/widgets/injection/portal-support-tickets/widget.client.tsx +151 -0
  377. package/src/modules/staff/widgets/injection/portal-support-tickets/widget.ts +16 -0
  378. package/src/modules/staff/widgets/injection/time-tracking-settings-support/widget.client.tsx +1058 -0
  379. package/src/modules/staff/widgets/injection/time-tracking-settings-support/widget.ts +17 -0
  380. package/src/modules/staff/widgets/injection-table.ts +15 -0
  381. package/src/modules/wms/components/backend/WmsLocationDetailPage.tsx +4 -20
  382. package/src/modules/wms/components/backend/WmsLotDetailPage.tsx +4 -20
  383. package/src/modules/wms/components/backend/WmsSkuDetailPage.tsx +4 -19
  384. package/src/modules/wms/lib/inventoryCsvExport.ts +18 -0
@@ -96,6 +96,12 @@
96
96
  "staff.audit.resources.create": "Crear recurso",
97
97
  "staff.audit.resources.delete": "Eliminar recurso",
98
98
  "staff.audit.resources.update": "Actualizar recurso",
99
+ "staff.audit.support.routingRules.create": "Crear regla de enrutamiento de soporte",
100
+ "staff.audit.support.routingRules.createFallbackProject": "Crear proyecto de respaldo de soporte",
101
+ "staff.audit.support.routingRules.delete": "Eliminar regla de enrutamiento de soporte",
102
+ "staff.audit.support.routingRules.update": "Actualizar regla de enrutamiento de soporte",
103
+ "staff.audit.support.tickets.create": "Registrar ticket de soporte",
104
+ "staff.audit.support.tickets.message": "Mensaje del cliente en el ticket",
99
105
  "staff.audit.teamMemberActivities.create": "Crear actividad de miembro del equipo",
100
106
  "staff.audit.teamMemberActivities.delete": "Eliminar actividad de miembro del equipo",
101
107
  "staff.audit.teamMemberActivities.update": "Actualizar actividad de miembro del equipo",
@@ -138,8 +144,10 @@
138
144
  "staff.audit.timesheets.task_statuses.delete": "Eliminar estado de tarea",
139
145
  "staff.audit.timesheets.task_statuses.reorder": "Reordenar estados de tarea",
140
146
  "staff.audit.timesheets.task_statuses.update": "Actualizar estado de tarea",
147
+ "staff.audit.timesheets.tasks.claim": "Tomar tarea",
141
148
  "staff.audit.timesheets.tasks.create": "Crear tarea",
142
149
  "staff.audit.timesheets.tasks.delete": "Eliminar tarea",
150
+ "staff.audit.timesheets.tasks.release": "Liberar tarea",
143
151
  "staff.audit.timesheets.tasks.statusChange": "Mover tarea",
144
152
  "staff.audit.timesheets.tasks.update": "Actualizar tarea",
145
153
  "staff.audit.timesheets.time_entries.create": "Crear registro de tiempo",
@@ -343,6 +351,11 @@
343
351
  "staff.notifications.leaveRequest.pending.title": "Solicitud de ausencia pendiente",
344
352
  "staff.notifications.leaveRequest.rejected.body": "Su solicitud de licencia del {startDate} al {endDate} ha sido rechazada{reason, select, other { - {reason}}}",
345
353
  "staff.notifications.leaveRequest.rejected.title": "Solicitud de licencia rechazada",
354
+ "staff.notifications.supportTicket.actions.open": "Abrir ticket",
355
+ "staff.notifications.supportTicket.created.body": "{customer} registró «{subject}» ({category}) en {project}.",
356
+ "staff.notifications.supportTicket.created.title": "Nuevo ticket de soporte {reference}",
357
+ "staff.notifications.supportTicket.customerReplied.body": "{customer} añadió un mensaje a «{subject}».",
358
+ "staff.notifications.supportTicket.customerReplied.title": "El cliente respondió en {reference}",
346
359
  "staff.notifications.timeEntryTimer.runningLong.body": "Un temporizador lleva mucho tiempo en marcha. Deténlo si el trabajo ha terminado.",
347
360
  "staff.notifications.timeEntryTimer.runningLong.title": "El temporizador sigue en marcha",
348
361
  "staff.notifications.timeProjectAccess.actions.openTeam": "Abrir el equipo del proyecto",
@@ -359,9 +372,89 @@
359
372
  "staff.notifications.timeReport.approved.title": "Informe de tiempo cerrado",
360
373
  "staff.notifications.timeReport.readyForApproval.body": "El informe {reference} espera tu aprobación.",
361
374
  "staff.notifications.timeReport.readyForApproval.title": "Informe de tiempo listo para aprobación",
375
+ "staff.notifications.timeTask.actions.open": "Abrir tarea",
376
+ "staff.notifications.timeTask.assigned.body": "«{title}» ahora es tuya.",
377
+ "staff.notifications.timeTask.assigned.title": "Se te asignó {reference}",
378
+ "staff.notifications.timeTask.released.body": "«{title}» se puede tomar.",
379
+ "staff.notifications.timeTask.released.title": "La tarea {reference} no tiene responsable",
362
380
  "staff.notifications.timesheet.actions.openTimesheet": "Abrir parte de horas",
363
381
  "staff.notifications.timesheet.periodIncomplete.body": "Algunos días laborables entre {periodFrom} y {periodTo} no tienen tiempo registrado.",
364
382
  "staff.notifications.timesheet.periodIncomplete.title": "Periodo de parte de horas incompleto",
383
+ "staff.portal.support.attachments.add": "Añadir archivos",
384
+ "staff.portal.support.attachments.delete": "Eliminar archivo",
385
+ "staff.portal.support.attachments.deleteConfirm": "¿Eliminar {name}?",
386
+ "staff.portal.support.attachments.deleteFailed": "No se pudo eliminar el archivo.",
387
+ "staff.portal.support.attachments.empty": "Aún no hay archivos.",
388
+ "staff.portal.support.attachments.failedHeading": "No se pudieron subir estos archivos.",
389
+ "staff.portal.support.attachments.reattach": "Vuelve a adjuntar este archivo.",
390
+ "staff.portal.support.attachments.remove": "Quitar archivo",
391
+ "staff.portal.support.attachments.retry": "Reintentar",
392
+ "staff.portal.support.attachments.title": "Archivos",
393
+ "staff.portal.support.attachments.uploadFailed": "No se pudo subir {name}.",
394
+ "staff.portal.support.attachments.uploadFailedReason": "No se pudo subir {name}: {reason}",
395
+ "staff.portal.support.backToList": "Todos los tickets",
396
+ "staff.portal.support.blocked": "Esta acción no está disponible ahora.",
397
+ "staff.portal.support.description": "Pide ayuda y sigue el progreso de tus solicitudes.",
398
+ "staff.portal.support.detail.colleague": "Un compañero",
399
+ "staff.portal.support.detail.conversation": "Conversación",
400
+ "staff.portal.support.detail.loadFailed": "No se pudo cargar este ticket.",
401
+ "staff.portal.support.detail.notFoundDescription": "Este ticket no existe o no es tuyo.",
402
+ "staff.portal.support.detail.notFoundTitle": "Ticket no encontrado",
403
+ "staff.portal.support.detail.rateLimited": "Has enviado muchos mensajes recientemente. Inténtalo más tarde.",
404
+ "staff.portal.support.detail.reopenHint": "Responder reabrirá este ticket.",
405
+ "staff.portal.support.detail.reopened": "Tu mensaje fue enviado y el ticket se reabrió.",
406
+ "staff.portal.support.detail.replyFailed": "No se pudo enviar tu mensaje.",
407
+ "staff.portal.support.detail.replyLabel": "Tu respuesta",
408
+ "staff.portal.support.detail.replyPlaceholder": "Escribe una respuesta",
409
+ "staff.portal.support.detail.replySent": "Tu mensaje fue enviado.",
410
+ "staff.portal.support.detail.send": "Enviar respuesta",
411
+ "staff.portal.support.detail.supportTeam": "Equipo de soporte",
412
+ "staff.portal.support.detail.supportTeamNamed": "Equipo de soporte · {name}",
413
+ "staff.portal.support.detail.title": "Ticket de soporte",
414
+ "staff.portal.support.detail.you": "Tú",
415
+ "staff.portal.support.emptyDescription": "Cuando registres un ticket, podrás seguirlo aquí.",
416
+ "staff.portal.support.emptyTitle": "Aún no hay tickets de soporte",
417
+ "staff.portal.support.fileSize.bytes": "{size} B",
418
+ "staff.portal.support.fileSize.kilobytes": "{size} KB",
419
+ "staff.portal.support.fileSize.megabytes": "{size} MB",
420
+ "staff.portal.support.filter.all": "Todos los estados",
421
+ "staff.portal.support.filter.status": "Estado",
422
+ "staff.portal.support.lastActivityAt": "Última actividad: {date}",
423
+ "staff.portal.support.loadFailed": "No se pudieron cargar tus tickets de soporte.",
424
+ "staff.portal.support.nav": "Soporte",
425
+ "staff.portal.support.new.cancel": "Cancelar",
426
+ "staff.portal.support.new.category": "Categoría",
427
+ "staff.portal.support.new.categoryPlaceholder": "Elige una categoría",
428
+ "staff.portal.support.new.createFailed": "No se pudo registrar el ticket. Inténtalo de nuevo.",
429
+ "staff.portal.support.new.created": "Ticket {reference} registrado.",
430
+ "staff.portal.support.new.description": "Cuéntanos qué necesitas. No incluyas contraseñas ni otros secretos.",
431
+ "staff.portal.support.new.descriptionLabel": "Descripción",
432
+ "staff.portal.support.new.descriptionPlaceholder": "¿Qué pasó y qué esperabas?",
433
+ "staff.portal.support.new.optionsLoadFailed": "No se pudo cargar el formulario de soporte.",
434
+ "staff.portal.support.new.rateLimited": "Has registrado muchos tickets recientemente. Inténtalo más tarde.",
435
+ "staff.portal.support.new.subject": "Asunto",
436
+ "staff.portal.support.new.subjectPlaceholder": "Resumen breve del problema",
437
+ "staff.portal.support.new.submit": "Registrar ticket",
438
+ "staff.portal.support.new.title": "Nuevo ticket de soporte",
439
+ "staff.portal.support.newTicket": "Nuevo ticket",
440
+ "staff.portal.support.next": "Siguiente",
441
+ "staff.portal.support.notLinked.description": "Tu cuenta del portal no está vinculada a una empresa, por lo que no hay tickets que mostrar. Pide al administrador de tu cuenta que la vincule.",
442
+ "staff.portal.support.notLinked.title": "Los tickets de soporte no están disponibles para tu cuenta",
443
+ "staff.portal.support.pageIndicator": "Página {page} / {total}",
444
+ "staff.portal.support.previous": "Anterior",
445
+ "staff.portal.support.retry": "Intentar de nuevo",
446
+ "staff.portal.support.status.inProgress": "En curso",
447
+ "staff.portal.support.status.received": "Recibido",
448
+ "staff.portal.support.status.resolved": "Resuelto",
449
+ "staff.portal.support.title": "Soporte",
450
+ "staff.portal.support.unavailableDescription": "Contáctanos directamente hasta que se habiliten las solicitudes de soporte.",
451
+ "staff.portal.support.unavailableTitle": "Las solicitudes de soporte aún no están disponibles",
452
+ "staff.portal.support.widget.empty": "No hay tickets abiertos.",
453
+ "staff.portal.support.widget.loading": "Cargando tus tickets…",
454
+ "staff.portal.support.widget.openCount": "Tickets abiertos: {count}",
455
+ "staff.portal.support.widget.retry": "Reintentar",
456
+ "staff.portal.support.widget.title": "Tickets de soporte",
457
+ "staff.portal.support.widget.viewAll": "Ver todos",
365
458
  "staff.portal.timeReports.backToList": "Todos los informes de tiempo",
366
459
  "staff.portal.timeReports.billableHours": "Horas facturables",
367
460
  "staff.portal.timeReports.detailTitle": "Informe de tiempo",
@@ -524,6 +617,148 @@
524
617
  "staff.services.table.name": "Nombre",
525
618
  "staff.services.table.search": "Buscar servicios...",
526
619
  "staff.services.table.tags": "Etiquetas",
620
+ "staff.support.attachments.empty": "No hay archivos en este ticket.",
621
+ "staff.support.attachments.fromCustomer": "Del cliente",
622
+ "staff.support.attachments.internal": "Interno",
623
+ "staff.support.attachments.loadFailed": "No se pudieron cargar los archivos del ticket.",
624
+ "staff.support.attachments.loading": "Cargando archivos…",
625
+ "staff.support.attachments.retry": "Reintentar",
626
+ "staff.support.attachments.shareWithCustomer": "Compartir con el cliente",
627
+ "staff.support.attachments.title": "Archivos del ticket",
628
+ "staff.support.attachments.upload": "Subir",
629
+ "staff.support.attachments.uploadFailed": "No se pudo subir el archivo.",
630
+ "staff.support.attachments.visible": "Visible para el cliente",
631
+ "staff.support.errors.attachmentNotYours": "Solo puedes eliminar archivos que subiste.",
632
+ "staff.support.errors.attachmentsUnavailable": "Los archivos adjuntos no están disponibles ahora.",
633
+ "staff.support.errors.categoryNotFound": "Esta categoría no existe en el diccionario de categorías de soporte.",
634
+ "staff.support.errors.categoryRuleExists": "Esta categoría ya tiene una regla de enrutamiento.",
635
+ "staff.support.errors.categoryUnavailable": "Las solicitudes en esta categoría no están disponibles ahora.",
636
+ "staff.support.errors.fallbackProjectInUse": "El proyecto de soporte ya tiene tareas, por lo que su creación no se puede deshacer. Apunta la regla de respaldo a otro proyecto.",
637
+ "staff.support.errors.fallbackRuleExists": "Esta organización ya tiene una regla de respaldo.",
638
+ "staff.support.errors.fallbackRuleRequired": "La regla de respaldo no se puede eliminar ni pausar. Apúntala a otro proyecto en su lugar.",
639
+ "staff.support.errors.fileRequired": "Elige un archivo antes de subirlo.",
640
+ "staff.support.errors.projectHasNoDefaultStatus": "El proyecto seleccionado no tiene un estado de tarea predeterminado, por lo que no se pueden registrar tickets en su tablero.",
641
+ "staff.support.errors.projectNotFound": "El proyecto seleccionado no existe en esta organización.",
642
+ "staff.support.errors.referenceConflict": "Se registraron demasiados tickets a la vez. Envíalo de nuevo.",
643
+ "staff.support.errors.routingRuleNotFound": "No se encontró la regla de enrutamiento.",
644
+ "staff.support.errors.ticketNotFound": "No se encontró el ticket de soporte.",
645
+ "staff.support.fallbackProject.name": "Atención al cliente",
646
+ "staff.support.settings.actions.cancel": "Cancelar",
647
+ "staff.support.settings.actions.delete": "Eliminar",
648
+ "staff.support.settings.actions.edit": "Editar",
649
+ "staff.support.settings.actions.refresh": "Actualizar",
650
+ "staff.support.settings.actions.retry": "Reintentar",
651
+ "staff.support.settings.actions.save": "Guardar",
652
+ "staff.support.settings.categories.add": "Añadir categoría",
653
+ "staff.support.settings.categories.appearance": "Apariencia",
654
+ "staff.support.settings.categories.colorClear": "Quitar color",
655
+ "staff.support.settings.categories.colorHelp": "Se muestra como color de la insignia de la categoría.",
656
+ "staff.support.settings.categories.colorLabel": "Color",
657
+ "staff.support.settings.categories.confirmDelete": "¿Eliminar la categoría «{value}»?",
658
+ "staff.support.settings.categories.createTitle": "Añadir categoría",
659
+ "staff.support.settings.categories.deleted": "Categoría eliminada.",
660
+ "staff.support.settings.categories.description": "Categorías que eligen los clientes al registrar un ticket en el portal.",
661
+ "staff.support.settings.categories.editTitle": "Editar categoría",
662
+ "staff.support.settings.categories.empty": "Aún no hay categorías.",
663
+ "staff.support.settings.categories.iconBrowse": "Explorar iconos",
664
+ "staff.support.settings.categories.iconClear": "Quitar icono",
665
+ "staff.support.settings.categories.iconLabel": "Icono",
666
+ "staff.support.settings.categories.iconPlaceholder": "Nombre del icono",
667
+ "staff.support.settings.categories.iconSearchEmpty": "No se encontraron iconos.",
668
+ "staff.support.settings.categories.iconSearchPlaceholder": "Buscar iconos",
669
+ "staff.support.settings.categories.iconSuggestions": "Sugerencias",
670
+ "staff.support.settings.categories.inherited": "Heredada",
671
+ "staff.support.settings.categories.inheritedTooltip": "Definida por una organización superior.",
672
+ "staff.support.settings.categories.label": "Etiqueta",
673
+ "staff.support.settings.categories.missingDictionary": "El diccionario de categorías de soporte aún no se ha creado para esta organización.",
674
+ "staff.support.settings.categories.noAccess": "No tienes permiso para ver las categorías de soporte.",
675
+ "staff.support.settings.categories.previewEmpty": "Sin apariencia",
676
+ "staff.support.settings.categories.saved": "Categoría guardada.",
677
+ "staff.support.settings.categories.search": "Buscar categorías",
678
+ "staff.support.settings.categories.title": "Categorías",
679
+ "staff.support.settings.categories.value": "Valor",
680
+ "staff.support.settings.description": "Configura las categorías de tickets de soporte, a qué proyecto se dirige cada una y el prefijo de referencia del ticket.",
681
+ "staff.support.settings.errors.delete": "No se pudo eliminar.",
682
+ "staff.support.settings.errors.load": "No se pudieron cargar los ajustes de soporte.",
683
+ "staff.support.settings.errors.save": "No se pudo guardar.",
684
+ "staff.support.settings.errors.saveBlocked": "Guardado bloqueado por la validación",
685
+ "staff.support.settings.prefix.description": "Los clientes ven referencias como SUP-1042. El prefijo se aplica a todo el tenant.",
686
+ "staff.support.settings.prefix.invalid": "Usa de 2 a 10 letras mayúsculas o dígitos, empezando por una letra.",
687
+ "staff.support.settings.prefix.saved": "Prefijo de referencia guardado.",
688
+ "staff.support.settings.prefix.title": "Prefijo de referencia",
689
+ "staff.support.settings.preview.empty": "No hay categorías que dirigir.",
690
+ "staff.support.settings.preview.title": "Adónde van ahora los tickets",
691
+ "staff.support.settings.preview.unavailable": "No disponible en el portal",
692
+ "staff.support.settings.preview.via": "Dirigido por",
693
+ "staff.support.settings.preview.viaCategory": "Regla de categoría",
694
+ "staff.support.settings.preview.viaFallback": "Regla predeterminada",
695
+ "staff.support.settings.referencePrefix": "Prefijo de referencia",
696
+ "staff.support.settings.routing.active": "Activa",
697
+ "staff.support.settings.routing.addRule": "Añadir regla",
698
+ "staff.support.settings.routing.addRuleTitle": "Añadir regla",
699
+ "staff.support.settings.routing.category": "Categoría",
700
+ "staff.support.settings.routing.confirmDelete": "¿Eliminar esta regla? La categoría usará el proyecto predeterminado.",
701
+ "staff.support.settings.routing.createFallback": "Crear proyecto predeterminado",
702
+ "staff.support.settings.routing.deleted": "Regla eliminada.",
703
+ "staff.support.settings.routing.description": "Toda categoría sin una regla válida va al proyecto predeterminado. Añade una regla para enviar una categoría a su propio proyecto.",
704
+ "staff.support.settings.routing.editRuleTitle": "Editar regla",
705
+ "staff.support.settings.routing.fallbackCreated": "Proyecto predeterminado creado.",
706
+ "staff.support.settings.routing.fallbackProject": "Proyecto predeterminado",
707
+ "staff.support.settings.routing.fallbackUnusableDescription": "Está completado, eliminado o no tiene estado predeterminado. Apunta la regla predeterminada a otro proyecto.",
708
+ "staff.support.settings.routing.fallbackUnusableTitle": "El proyecto predeterminado no puede recibir tickets",
709
+ "staff.support.settings.routing.fallingBack": "Se redirige a {project}",
710
+ "staff.support.settings.routing.loading": "Cargando enrutamiento…",
711
+ "staff.support.settings.routing.noFallbackDescription": "Los clientes no pueden registrar tickets de categorías sin regla propia hasta que exista un proyecto predeterminado.",
712
+ "staff.support.settings.routing.noFallbackTitle": "Sin proyecto predeterminado",
713
+ "staff.support.settings.routing.noOverrides": "No hay reglas de categoría. Todas las categorías van al proyecto predeterminado.",
714
+ "staff.support.settings.routing.nobodyNotified": "Nadie de este proyecto recibirá avisos de los tickets enviados aquí: no tiene asignador activo, ni responsable predeterminado utilizable, ni propietario. En su lugar, los tickets nuevos se notificarán a los jefes de proyecto de la organización.",
715
+ "staff.support.settings.routing.overrides": "Reglas de categoría",
716
+ "staff.support.settings.routing.problem.categoryMissing": "La categoría ya no existe.",
717
+ "staff.support.settings.routing.problem.paused": "La regla está en pausa.",
718
+ "staff.support.settings.routing.problem.projectUnusable": "El proyecto está completado, eliminado o no tiene estado predeterminado.",
719
+ "staff.support.settings.routing.project": "Proyecto",
720
+ "staff.support.settings.routing.routing": "Dirigiendo",
721
+ "staff.support.settings.routing.saved": "Enrutamiento guardado.",
722
+ "staff.support.settings.routing.searchProject": "Buscar proyectos",
723
+ "staff.support.settings.routing.selectCategory": "Selecciona una categoría",
724
+ "staff.support.settings.routing.selectProject": "Selecciona un proyecto",
725
+ "staff.support.settings.routing.state": "Estado",
726
+ "staff.support.settings.routing.title": "Enrutamiento",
727
+ "staff.support.settings.routing.unnotifiedTickets.few": "{count} tickets no se notificaron a nadie.",
728
+ "staff.support.settings.routing.unnotifiedTickets.many": "{count} tickets no se notificaron a nadie.",
729
+ "staff.support.settings.routing.unnotifiedTickets.one": "{count} ticket no se notificó a nadie.",
730
+ "staff.support.settings.routing.unnotifiedTickets.other": "{count} tickets no se notificaron a nadie.",
731
+ "staff.support.settings.routing.unnotifiedTicketsLink": "Abrirlos en la bandeja de soporte",
732
+ "staff.support.settings.title": "Soporte",
733
+ "staff.support.tickets.columns.assignee": "Responsable",
734
+ "staff.support.tickets.columns.category": "Categoría",
735
+ "staff.support.tickets.columns.customer": "Cliente",
736
+ "staff.support.tickets.columns.lastActivity": "Última actividad",
737
+ "staff.support.tickets.columns.portalStatus": "Estado",
738
+ "staff.support.tickets.columns.project": "Proyecto",
739
+ "staff.support.tickets.columns.reference": "Ticket",
740
+ "staff.support.tickets.columns.subject": "Asunto",
741
+ "staff.support.tickets.customerKind.company": "Empresa",
742
+ "staff.support.tickets.customerKind.person": "Persona",
743
+ "staff.support.tickets.empty": "Ningún ticket de soporte coincide con estos filtros.",
744
+ "staff.support.tickets.filters.assignee": "Responsable",
745
+ "staff.support.tickets.filters.category": "Categoría",
746
+ "staff.support.tickets.filters.customer": "Cliente",
747
+ "staff.support.tickets.filters.customerPlaceholder": "Buscar clientes",
748
+ "staff.support.tickets.filters.nobodyNotified": "Nadie notificado",
749
+ "staff.support.tickets.filters.portalStatus": "Estado que ve el cliente",
750
+ "staff.support.tickets.filters.project": "Proyecto",
751
+ "staff.support.tickets.filters.projectPlaceholder": "Buscar proyectos",
752
+ "staff.support.tickets.loadError": "No se pudieron cargar los tickets de soporte.",
753
+ "staff.support.tickets.nobodyNotified": "Nadie notificado",
754
+ "staff.support.tickets.optionsLoadError": "No se pudieron cargar las opciones de filtro.",
755
+ "staff.support.tickets.refresh": "Actualizar",
756
+ "staff.support.tickets.searchPlaceholder": "Buscar por referencia del ticket",
757
+ "staff.support.tickets.status.inProgress": "En curso",
758
+ "staff.support.tickets.status.received": "Recibido",
759
+ "staff.support.tickets.status.resolved": "Resuelto",
760
+ "staff.support.tickets.title": "Bandeja de soporte",
761
+ "staff.support.tickets.unassigned": "Sin asignar",
527
762
  "staff.teamMembers.actions.add": "Agregar miembro",
528
763
  "staff.teamMembers.actions.backToList": "Volver a miembros del equipo",
529
764
  "staff.teamMembers.actions.delete": "Eliminar",
@@ -1023,6 +1258,20 @@
1023
1258
  "staff.time_tracking.access.request.error": "No se ha podido enviar la solicitud de acceso.",
1024
1259
  "staff.time_tracking.access.request.sent": "Solicitud enviada",
1025
1260
  "staff.time_tracking.access.request.success": "Tu solicitud se ha enviado a los Team Leaders.",
1261
+ "staff.time_tracking.assigners.badge": "Asignador",
1262
+ "staff.time_tracking.assigners.defaultAssignee": "Responsable predeterminado de los tickets del portal",
1263
+ "staff.time_tracking.assigners.defaultAssigneeAfterCreate": "Guarda el proyecto y añade miembros para elegir un responsable predeterminado.",
1264
+ "staff.time_tracking.assigners.defaultAssigneeHelp": "Los nuevos tickets del portal de clientes enviados a este proyecto se asignan a este miembro. Las tareas creadas en el tablero siguen asignadas a su creador.",
1265
+ "staff.time_tracking.assigners.defaultAssigneeInactive": "Este miembro ya no es un miembro activo del proyecto. Los nuevos tickets quedarán sin asignar y se avisará a los asignadores.",
1266
+ "staff.time_tracking.assigners.defaultAssigneeLoadFailed": "No se pudieron cargar los miembros del proyecto, por lo que ahora no se puede comprobar el responsable predeterminado.",
1267
+ "staff.time_tracking.assigners.defaultAssigneeNone": "Sin responsable predeterminado",
1268
+ "staff.time_tracking.assigners.defaultAssigneeRetry": "Reintentar",
1269
+ "staff.time_tracking.assigners.disabled": "El miembro ya no es asignador.",
1270
+ "staff.time_tracking.assigners.enabled": "El miembro ahora es asignador.",
1271
+ "staff.time_tracking.assigners.help": "Los asignadores reciben avisos sobre trabajo nuevo y liberado y pueden tomar tareas sin asignar.",
1272
+ "staff.time_tracking.assigners.label": "Asignador",
1273
+ "staff.time_tracking.assigners.needsUser": "Solo los miembros con cuenta de usuario pueden ser asignadores.",
1274
+ "staff.time_tracking.assigners.saveError": "No se pudo cambiar la configuración de asignador.",
1026
1275
  "staff.time_tracking.board.addStatus.cta": "Añadir estado",
1027
1276
  "staff.time_tracking.board.addStatus.error": "No se pudo añadir la columna.",
1028
1277
  "staff.time_tracking.board.addStatus.placeholder": "Nombre de la columna",
@@ -1031,6 +1280,7 @@
1031
1280
  "staff.time_tracking.board.card.addTimeAria": "Añadir tiempo a {title}",
1032
1281
  "staff.time_tracking.board.card.aria": "Tarea: {title}",
1033
1282
  "staff.time_tracking.board.card.assignee": "Asignada a {name}",
1283
+ "staff.time_tracking.board.card.customerRequest": "Solicitud del cliente",
1034
1284
  "staff.time_tracking.board.card.moveTo.aria": "Mover {title} a otra columna",
1035
1285
  "staff.time_tracking.board.card.moveTo.cta": "Mover",
1036
1286
  "staff.time_tracking.board.card.moveTo.menu": "Mover {title} a",
@@ -1059,6 +1309,8 @@
1059
1309
  "staff.time_tracking.board.filters.remove": "Quitar filtro: {label}",
1060
1310
  "staff.time_tracking.board.filters.status": "Estado",
1061
1311
  "staff.time_tracking.board.filters.tag": "Etiqueta",
1312
+ "staff.time_tracking.board.filters.unassigned": "Sin asignar",
1313
+ "staff.time_tracking.board.filters.unassignedWithCount": "Sin asignar ({count})",
1062
1314
  "staff.time_tracking.board.list.caption": "Tareas",
1063
1315
  "staff.time_tracking.board.list.columns.assignee": "Responsable",
1064
1316
  "staff.time_tracking.board.list.columns.hours": "Registradas",
@@ -1613,6 +1865,8 @@
1613
1865
  "staff.time_tracking.settings.scope.hint": "La tarifa y la moneda se mantienen a nivel de proyecto, y la tarifa específica a nivel de entrada.",
1614
1866
  "staff.time_tracking.settings.scope.title": "Alcance de los ajustes",
1615
1867
  "staff.time_tracking.settings.subtitle": "Reglas comunes a todos los clientes y proyectos",
1868
+ "staff.time_tracking.settings.tabs.general": "Seguimiento del tiempo",
1869
+ "staff.time_tracking.settings.tabs.label": "Secciones de ajustes",
1616
1870
  "staff.time_tracking.settings.targets.dailyHours": "Objetivo diario de horas",
1617
1871
  "staff.time_tracking.settings.targets.dailyHoursError": "Introduce un número de horas entre 0 y 24, o deja el campo vacío.",
1618
1872
  "staff.time_tracking.settings.targets.dailyHoursHint": "Escala las barras de carga en la hoja de horas. Déjalo vacío para desactivar los objetivos.",
@@ -1640,15 +1894,32 @@
1640
1894
  "staff.time_tracking.tags.placeholder": "Buscar etiquetas",
1641
1895
  "staff.time_tracking.tags.remove": "Quitar etiqueta",
1642
1896
  "staff.time_tracking.tags.title": "Etiquetas",
1897
+ "staff.time_tracking.taskComments.addInternalNote": "Añadir nota interna",
1643
1898
  "staff.time_tracking.taskComments.empty": "Aún no hay comentarios.",
1899
+ "staff.time_tracking.taskComments.errors.customerImmutable": "Los mensajes escritos por el cliente no se pueden editar ni eliminar.",
1644
1900
  "staff.time_tracking.taskComments.errors.idRequired": "Se requiere el identificador del comentario.",
1645
1901
  "staff.time_tracking.taskComments.errors.notAuthor": "Solo puedes editar o eliminar tus propios comentarios.",
1646
1902
  "staff.time_tracking.taskComments.errors.notFound": "Comentario no encontrado o no accesible.",
1647
1903
  "staff.time_tracking.taskComments.errors.taskIdRequired": "Se requiere el identificador de la tarea.",
1904
+ "staff.time_tracking.taskComments.errors.visibilityPortalOnly": "Solo los tickets de soporte de clientes pueden tener respuestas visibles para el cliente.",
1905
+ "staff.time_tracking.taskComments.fromCustomer": "Cliente",
1906
+ "staff.time_tracking.taskComments.internalNote": "Nota interna",
1907
+ "staff.time_tracking.taskComments.makeInternal": "Hacer interno",
1908
+ "staff.time_tracking.taskComments.makeInternalError": "No se pudo cambiar la respuesta.",
1648
1909
  "staff.time_tracking.taskComments.placeholder": "Escribe un comentario…",
1910
+ "staff.time_tracking.taskComments.replyToCustomer": "Responder al cliente",
1911
+ "staff.time_tracking.taskComments.shortcutInternal": "añade una nota interna",
1649
1912
  "staff.time_tracking.taskComments.submit": "Comentar",
1650
1913
  "staff.time_tracking.taskComments.submitHint": "⌘↵ envía",
1914
+ "staff.time_tracking.taskComments.supportPlaceholder": "Escribe una respuesta o una nota interna…",
1651
1915
  "staff.time_tracking.taskComments.title": "Comentarios",
1916
+ "staff.time_tracking.taskComments.visibleToCustomer": "Visible para el cliente",
1917
+ "staff.time_tracking.taskDrawer.assignment.claim": "Tomar",
1918
+ "staff.time_tracking.taskDrawer.assignment.claimError": "No se pudo tomar la tarea.",
1919
+ "staff.time_tracking.taskDrawer.assignment.claimed": "Tarea tomada.",
1920
+ "staff.time_tracking.taskDrawer.assignment.release": "Liberar",
1921
+ "staff.time_tracking.taskDrawer.assignment.releaseError": "No se pudo liberar la tarea.",
1922
+ "staff.time_tracking.taskDrawer.assignment.released": "Tarea liberada.",
1652
1923
  "staff.time_tracking.taskDrawer.autoSave": "Los cambios se guardan automáticamente",
1653
1924
  "staff.time_tracking.taskDrawer.close": "Cerrar",
1654
1925
  "staff.time_tracking.taskDrawer.comments.empty": "Todavía no hay comentarios.",
@@ -1660,6 +1931,7 @@
1660
1931
  "staff.time_tracking.taskDrawer.comments.submit": "Comentar",
1661
1932
  "staff.time_tracking.taskDrawer.comments.title": "Comentarios ({count})",
1662
1933
  "staff.time_tracking.taskDrawer.comments.unknownAuthor": "Autor desconocido",
1934
+ "staff.time_tracking.taskDrawer.conflict": "Otra persona ha cambiado esta tarea. Ahora se muestra su versión más reciente. Revísala e inténtalo de nuevo.",
1663
1935
  "staff.time_tracking.taskDrawer.created": "creada el {date}",
1664
1936
  "staff.time_tracking.taskDrawer.entries.empty": "Todavía no hay registros de tiempo.",
1665
1937
  "staff.time_tracking.taskDrawer.entries.noDescription": "Sin descripción",
@@ -1699,6 +1971,18 @@
1699
1971
  "staff.time_tracking.taskDrawer.subtasks.title": "Subtareas",
1700
1972
  "staff.time_tracking.taskDrawer.subtasks.toggle": "Marcar {title} como hecha",
1701
1973
  "staff.time_tracking.taskDrawer.subtasks.toggleError": "No se pudo cambiar el estado de la subtarea.",
1974
+ "staff.time_tracking.taskDrawer.support.category": "Categoría",
1975
+ "staff.time_tracking.taskDrawer.support.customer": "Cliente",
1976
+ "staff.time_tracking.taskDrawer.support.originalRequest": "Solicitud original",
1977
+ "staff.time_tracking.taskDrawer.support.portalStatus": "El cliente ve",
1978
+ "staff.time_tracking.taskDrawer.support.reference": "Ticket",
1979
+ "staff.time_tracking.taskDrawer.support.reporter": "Reportado por",
1980
+ "staff.time_tracking.taskDrawer.support.routedVia": "Enrutado por",
1981
+ "staff.time_tracking.taskDrawer.support.routedViaCategory": "Regla de categoría",
1982
+ "staff.time_tracking.taskDrawer.support.routedViaFallback": "Proyecto de respaldo",
1983
+ "staff.time_tracking.taskDrawer.support.title": "Solicitud del cliente",
1984
+ "staff.time_tracking.taskDrawer.support.titleHint": "El cliente ve su solicitud original, no el título ni la descripción de la tarea.",
1985
+ "staff.time_tracking.taskDrawer.support.unknown": "Desconocido",
1702
1986
  "staff.time_tracking.taskDrawer.timer.start": "Iniciar",
1703
1987
  "staff.time_tracking.taskDrawer.timer.stop": "Detener {elapsed}",
1704
1988
  "staff.time_tracking.taskDrawer.timer.switchText": "Solo puede haber un temporizador en marcha. ¿Detener el otro e iniciarlo aquí?",
@@ -1787,10 +2071,12 @@
1787
2071
  "staff.time_tracking.timesheet.view.grid": "Cuadrícula",
1788
2072
  "staff.time_tracking.timesheet.view.label": "Vista de la hoja de horas",
1789
2073
  "staff.time_tracking.timesheet.view.list": "Lista",
2074
+ "staff.timesheets.errors.assignerNeedsUser": "Solo los miembros del equipo con cuenta de usuario pueden ser asignadores, porque deben iniciar sesión y recibir notificaciones.",
1790
2075
  "staff.timesheets.errors.bulkSave": "No se pudieron guardar en lote los registros de tiempo.",
1791
2076
  "staff.timesheets.errors.bulkTagsUnsupported": "Las etiquetas no se pueden cambiar desde la cuadrícula de la hoja de horas. Abre el registro de tiempo para editar sus etiquetas.",
1792
2077
  "staff.timesheets.errors.copyDaySameDate": "El día de origen y el de destino deben ser diferentes.",
1793
2078
  "staff.timesheets.errors.copyDayTargetNotEmpty": "El día de destino ya tiene registros de tiempo. Revísalos primero o confirma para añadir estas copias de todos modos.",
2079
+ "staff.timesheets.errors.defaultAssigneeNotMember": "El responsable predeterminado debe ser un miembro activo de este proyecto.",
1794
2080
  "staff.timesheets.errors.entryNotFound": "Registro de tiempo no encontrado, eliminado o no asignado a ti.",
1795
2081
  "staff.timesheets.errors.invalidBody": "Cuerpo de la solicitud no válido.",
1796
2082
  "staff.timesheets.errors.invalidProjectId": "Identificador de proyecto no válido.",
@@ -1801,6 +2087,8 @@
1801
2087
  "staff.timesheets.errors.noActiveSegment": "No se encontró ningún segmento de temporizador activo para este registro.",
1802
2088
  "staff.timesheets.errors.noStaffMember": "Ningún miembro del personal vinculado a tu cuenta.",
1803
2089
  "staff.timesheets.errors.notAssigned": "No estás asignado a este proyecto.",
2090
+ "staff.timesheets.errors.notAssignee": "Solo el responsable actual puede liberar esta tarea.",
2091
+ "staff.timesheets.errors.notAssigner": "Solo los asignadores activos de este proyecto pueden tomar tareas.",
1804
2092
  "staff.timesheets.errors.notOwner": "Solo puedes gestionar tus propios registros de tiempo.",
1805
2093
  "staff.timesheets.errors.outsideAssignmentWindow": "Esta fecha está fuera de tu asignación a este proyecto.",
1806
2094
  "staff.timesheets.errors.projectCodeDuplicate": "Ya existe un proyecto con este código.",
@@ -1810,6 +2098,9 @@
1810
2098
  "staff.timesheets.errors.projectsKpis": "Failed to load project KPIs.",
1811
2099
  "staff.timesheets.errors.segmentCreate": "No se pudo crear el segmento del registro de tiempo.",
1812
2100
  "staff.timesheets.errors.staffMemberNotFound": "Miembro del personal no encontrado o no accesible.",
2101
+ "staff.timesheets.errors.taskAlreadyClaimed": "Otra persona ya tomó esta tarea.",
2102
+ "staff.timesheets.errors.taskChanged": "La tarea cambió mientras la liberabas. Actualiza e inténtalo de nuevo.",
2103
+ "staff.timesheets.errors.taskNotClaimable": "No se puede tomar una tarea terminada.",
1813
2104
  "staff.timesheets.errors.taskNotFound": "Tarea no encontrada o no accesible.",
1814
2105
  "staff.timesheets.errors.timerAlreadyRunning": "Ya hay otro temporizador en marcha. Detenlo antes de iniciar uno nuevo.",
1815
2106
  "staff.timesheets.errors.timerAlreadyStarted": "El temporizador ya está iniciado para este registro.",