@open-mercato/core 0.6.7-develop.6661.1.0043ed1d03 → 0.6.7-develop.6670.1.4efa7961c6

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 (494) hide show
  1. package/.turbo/turbo-build.log +2 -2
  2. package/dist/generated/entities/inventory_balance/index.js +21 -0
  3. package/dist/generated/entities/inventory_balance/index.js.map +7 -0
  4. package/dist/generated/entities/inventory_lot/index.js +19 -0
  5. package/dist/generated/entities/inventory_lot/index.js.map +7 -0
  6. package/dist/generated/entities/inventory_movement/index.js +35 -0
  7. package/dist/generated/entities/inventory_movement/index.js.map +7 -0
  8. package/dist/generated/entities/inventory_reservation/index.js +23 -0
  9. package/dist/generated/entities/inventory_reservation/index.js.map +7 -0
  10. package/dist/generated/entities/product_inventory_profile/index.js +21 -0
  11. package/dist/generated/entities/product_inventory_profile/index.js.map +7 -0
  12. package/dist/generated/entities/sales_order_warehouse_assignment/index.js +11 -0
  13. package/dist/generated/entities/sales_order_warehouse_assignment/index.js.map +7 -0
  14. package/dist/generated/entities/warehouse/index.js +25 -0
  15. package/dist/generated/entities/warehouse/index.js.map +7 -0
  16. package/dist/generated/entities/warehouse_location/index.js +21 -0
  17. package/dist/generated/entities/warehouse_location/index.js.map +7 -0
  18. package/dist/generated/entities/warehouse_zone/index.js +11 -0
  19. package/dist/generated/entities/warehouse_zone/index.js.map +7 -0
  20. package/dist/generated/entities.ids.generated.js +12 -0
  21. package/dist/generated/entities.ids.generated.js.map +2 -2
  22. package/dist/generated/entity-fields-registry.js +98 -0
  23. package/dist/generated/entity-fields-registry.js.map +2 -2
  24. package/dist/modules/auth/backend/roles/page.js +12 -4
  25. package/dist/modules/auth/backend/roles/page.js.map +2 -2
  26. package/dist/modules/auth/lib/backendChrome.js +1 -0
  27. package/dist/modules/auth/lib/backendChrome.js.map +2 -2
  28. package/dist/modules/auth/services/rbacService.js +16 -17
  29. package/dist/modules/auth/services/rbacService.js.map +2 -2
  30. package/dist/modules/catalog/api/products/route.js +3 -0
  31. package/dist/modules/catalog/api/products/route.js.map +2 -2
  32. package/dist/modules/catalog/api/variants/route.js +3 -0
  33. package/dist/modules/catalog/api/variants/route.js.map +2 -2
  34. package/dist/modules/customer_accounts/migrations/Migration20260724120000_customer_accounts.js +56 -0
  35. package/dist/modules/customer_accounts/migrations/Migration20260724120000_customer_accounts.js.map +7 -0
  36. package/dist/modules/directory/api/organizations/route.js +1 -1
  37. package/dist/modules/directory/api/organizations/route.js.map +1 -1
  38. package/dist/modules/entities/api/definitions.js +2 -0
  39. package/dist/modules/entities/api/definitions.js.map +2 -2
  40. package/dist/modules/entities/lib/helpers.js +1 -0
  41. package/dist/modules/entities/lib/helpers.js.map +2 -2
  42. package/dist/modules/query_index/lib/engine.js +6 -6
  43. package/dist/modules/query_index/lib/engine.js.map +2 -2
  44. package/dist/modules/sales/api/documents/factory.js +1 -0
  45. package/dist/modules/sales/api/documents/factory.js.map +2 -2
  46. package/dist/modules/sales/api/quotes/accept/route.js +7 -2
  47. package/dist/modules/sales/api/quotes/accept/route.js.map +2 -2
  48. package/dist/modules/sales/api/quotes/public/[token]/route.js +2 -1
  49. package/dist/modules/sales/api/quotes/public/[token]/route.js.map +2 -2
  50. package/dist/modules/sales/commands/documents.js +53 -0
  51. package/dist/modules/sales/commands/documents.js.map +2 -2
  52. package/dist/modules/sales/components/documents/ItemsSection.js +51 -2
  53. package/dist/modules/sales/components/documents/ItemsSection.js.map +2 -2
  54. package/dist/modules/sales/events.js +2 -0
  55. package/dist/modules/sales/events.js.map +2 -2
  56. package/dist/modules/sales/lib/publicQuoteTenantScope.js +24 -0
  57. package/dist/modules/sales/lib/publicQuoteTenantScope.js.map +7 -0
  58. package/dist/modules/sales/widgets/injection/order-items-context.js +11 -0
  59. package/dist/modules/sales/widgets/injection/order-items-context.js.map +7 -0
  60. package/dist/modules/wms/acl.js +18 -0
  61. package/dist/modules/wms/acl.js.map +7 -0
  62. package/dist/modules/wms/analytics.js +11 -0
  63. package/dist/modules/wms/analytics.js.map +7 -0
  64. package/dist/modules/wms/api/dashboard/operational/route.js +80 -0
  65. package/dist/modules/wms/api/dashboard/operational/route.js.map +7 -0
  66. package/dist/modules/wms/api/interceptors.js +90 -0
  67. package/dist/modules/wms/api/interceptors.js.map +7 -0
  68. package/dist/modules/wms/api/inventory/adjust/route.js +51 -0
  69. package/dist/modules/wms/api/inventory/adjust/route.js.map +7 -0
  70. package/dist/modules/wms/api/inventory/allocate/route.js +51 -0
  71. package/dist/modules/wms/api/inventory/allocate/route.js.map +7 -0
  72. package/dist/modules/wms/api/inventory/balances/route.js +172 -0
  73. package/dist/modules/wms/api/inventory/balances/route.js.map +7 -0
  74. package/dist/modules/wms/api/inventory/cycle-count/route.js +52 -0
  75. package/dist/modules/wms/api/inventory/cycle-count/route.js.map +7 -0
  76. package/dist/modules/wms/api/inventory/helpers.js +113 -0
  77. package/dist/modules/wms/api/inventory/helpers.js.map +7 -0
  78. package/dist/modules/wms/api/inventory/import/apply/route.js +46 -0
  79. package/dist/modules/wms/api/inventory/import/apply/route.js.map +7 -0
  80. package/dist/modules/wms/api/inventory/import/helpers.js +195 -0
  81. package/dist/modules/wms/api/inventory/import/helpers.js.map +7 -0
  82. package/dist/modules/wms/api/inventory/import/template/route.js +32 -0
  83. package/dist/modules/wms/api/inventory/import/template/route.js.map +7 -0
  84. package/dist/modules/wms/api/inventory/import/validate/route.js +54 -0
  85. package/dist/modules/wms/api/inventory/import/validate/route.js.map +7 -0
  86. package/dist/modules/wms/api/inventory/move/route.js +51 -0
  87. package/dist/modules/wms/api/inventory/move/route.js.map +7 -0
  88. package/dist/modules/wms/api/inventory/movements/route.js +164 -0
  89. package/dist/modules/wms/api/inventory/movements/route.js.map +7 -0
  90. package/dist/modules/wms/api/inventory/receive/route.js +50 -0
  91. package/dist/modules/wms/api/inventory/receive/route.js.map +7 -0
  92. package/dist/modules/wms/api/inventory/release/route.js +44 -0
  93. package/dist/modules/wms/api/inventory/release/route.js.map +7 -0
  94. package/dist/modules/wms/api/inventory/reservations/route.js +128 -0
  95. package/dist/modules/wms/api/inventory/reservations/route.js.map +7 -0
  96. package/dist/modules/wms/api/inventory/reserve/route.js +59 -0
  97. package/dist/modules/wms/api/inventory/reserve/route.js.map +7 -0
  98. package/dist/modules/wms/api/inventory-profiles/route.js +178 -0
  99. package/dist/modules/wms/api/inventory-profiles/route.js.map +7 -0
  100. package/dist/modules/wms/api/listEnrichers.js +181 -0
  101. package/dist/modules/wms/api/listEnrichers.js.map +7 -0
  102. package/dist/modules/wms/api/listSearch.js +77 -0
  103. package/dist/modules/wms/api/listSearch.js.map +7 -0
  104. package/dist/modules/wms/api/locations/route.js +172 -0
  105. package/dist/modules/wms/api/locations/route.js.map +7 -0
  106. package/dist/modules/wms/api/lots/route.js +204 -0
  107. package/dist/modules/wms/api/lots/route.js.map +7 -0
  108. package/dist/modules/wms/api/openapi.js +27 -0
  109. package/dist/modules/wms/api/openapi.js.map +7 -0
  110. package/dist/modules/wms/api/sales-orders/[salesOrderId]/re-run-reservation/route.js +54 -0
  111. package/dist/modules/wms/api/sales-orders/[salesOrderId]/re-run-reservation/route.js.map +7 -0
  112. package/dist/modules/wms/api/sales-orders/[salesOrderId]/warehouse-assignment/route.js +279 -0
  113. package/dist/modules/wms/api/sales-orders/[salesOrderId]/warehouse-assignment/route.js.map +7 -0
  114. package/dist/modules/wms/api/sales-orders/assign-warehouse/route.js +56 -0
  115. package/dist/modules/wms/api/sales-orders/assign-warehouse/route.js.map +7 -0
  116. package/dist/modules/wms/api/sales-orders/unassign-warehouse/route.js +43 -0
  117. package/dist/modules/wms/api/sales-orders/unassign-warehouse/route.js.map +7 -0
  118. package/dist/modules/wms/api/warehouses/route.js +181 -0
  119. package/dist/modules/wms/api/warehouses/route.js.map +7 -0
  120. package/dist/modules/wms/api/zones/route.js +159 -0
  121. package/dist/modules/wms/api/zones/route.js.map +7 -0
  122. package/dist/modules/wms/backend/config/wms/page.js +9 -0
  123. package/dist/modules/wms/backend/config/wms/page.js.map +7 -0
  124. package/dist/modules/wms/backend/config/wms/page.meta.js +18 -0
  125. package/dist/modules/wms/backend/config/wms/page.meta.js.map +7 -0
  126. package/dist/modules/wms/backend/page.js +9 -0
  127. package/dist/modules/wms/backend/page.js.map +7 -0
  128. package/dist/modules/wms/backend/page.meta.js +16 -0
  129. package/dist/modules/wms/backend/page.meta.js.map +7 -0
  130. package/dist/modules/wms/backend/wms/inventory/page.js +9 -0
  131. package/dist/modules/wms/backend/wms/inventory/page.js.map +7 -0
  132. package/dist/modules/wms/backend/wms/inventory/page.meta.js +18 -0
  133. package/dist/modules/wms/backend/wms/inventory/page.meta.js.map +7 -0
  134. package/dist/modules/wms/backend/wms/location/[id]/page.js +9 -0
  135. package/dist/modules/wms/backend/wms/location/[id]/page.js.map +7 -0
  136. package/dist/modules/wms/backend/wms/location/[id]/page.meta.js +18 -0
  137. package/dist/modules/wms/backend/wms/location/[id]/page.meta.js.map +7 -0
  138. package/dist/modules/wms/backend/wms/locations/page.js +10 -0
  139. package/dist/modules/wms/backend/wms/locations/page.js.map +7 -0
  140. package/dist/modules/wms/backend/wms/locations/page.meta.js +18 -0
  141. package/dist/modules/wms/backend/wms/locations/page.meta.js.map +7 -0
  142. package/dist/modules/wms/backend/wms/lot/[id]/page.js +9 -0
  143. package/dist/modules/wms/backend/wms/lot/[id]/page.js.map +7 -0
  144. package/dist/modules/wms/backend/wms/lot/[id]/page.meta.js +18 -0
  145. package/dist/modules/wms/backend/wms/lot/[id]/page.meta.js.map +7 -0
  146. package/dist/modules/wms/backend/wms/lots/page.js +9 -0
  147. package/dist/modules/wms/backend/wms/lots/page.js.map +7 -0
  148. package/dist/modules/wms/backend/wms/lots/page.meta.js +18 -0
  149. package/dist/modules/wms/backend/wms/lots/page.meta.js.map +7 -0
  150. package/dist/modules/wms/backend/wms/movements/page.js +22 -0
  151. package/dist/modules/wms/backend/wms/movements/page.js.map +7 -0
  152. package/dist/modules/wms/backend/wms/movements/page.meta.js +18 -0
  153. package/dist/modules/wms/backend/wms/movements/page.meta.js.map +7 -0
  154. package/dist/modules/wms/backend/wms/reservations/page.js +23 -0
  155. package/dist/modules/wms/backend/wms/reservations/page.js.map +7 -0
  156. package/dist/modules/wms/backend/wms/reservations/page.meta.js +18 -0
  157. package/dist/modules/wms/backend/wms/reservations/page.meta.js.map +7 -0
  158. package/dist/modules/wms/backend/wms/sku/[id]/page.js +9 -0
  159. package/dist/modules/wms/backend/wms/sku/[id]/page.js.map +7 -0
  160. package/dist/modules/wms/backend/wms/sku/[id]/page.meta.js +18 -0
  161. package/dist/modules/wms/backend/wms/sku/[id]/page.meta.js.map +7 -0
  162. package/dist/modules/wms/backend/wms/warehouses/page.js +10 -0
  163. package/dist/modules/wms/backend/wms/warehouses/page.js.map +7 -0
  164. package/dist/modules/wms/backend/wms/warehouses/page.meta.js +18 -0
  165. package/dist/modules/wms/backend/wms/warehouses/page.meta.js.map +7 -0
  166. package/dist/modules/wms/backend/wms/zones/page.js +10 -0
  167. package/dist/modules/wms/backend/wms/zones/page.js.map +7 -0
  168. package/dist/modules/wms/backend/wms/zones/page.meta.js +18 -0
  169. package/dist/modules/wms/backend/wms/zones/page.meta.js.map +7 -0
  170. package/dist/modules/wms/ce.js +80 -0
  171. package/dist/modules/wms/ce.js.map +7 -0
  172. package/dist/modules/wms/cli.js +83 -0
  173. package/dist/modules/wms/cli.js.map +7 -0
  174. package/dist/modules/wms/commands/configuration.js +1519 -0
  175. package/dist/modules/wms/commands/configuration.js.map +7 -0
  176. package/dist/modules/wms/commands/index.js +4 -0
  177. package/dist/modules/wms/commands/index.js.map +7 -0
  178. package/dist/modules/wms/commands/inventory-actions.js +1539 -0
  179. package/dist/modules/wms/commands/inventory-actions.js.map +7 -0
  180. package/dist/modules/wms/commands/sales-order-assignment.js +277 -0
  181. package/dist/modules/wms/commands/sales-order-assignment.js.map +7 -0
  182. package/dist/modules/wms/commands/shared.js +82 -0
  183. package/dist/modules/wms/commands/shared.js.map +7 -0
  184. package/dist/modules/wms/components/backend/AdjustInventoryDialog.js +755 -0
  185. package/dist/modules/wms/components/backend/AdjustInventoryDialog.js.map +7 -0
  186. package/dist/modules/wms/components/backend/ChangeLotStatusDialog.js +269 -0
  187. package/dist/modules/wms/components/backend/ChangeLotStatusDialog.js.map +7 -0
  188. package/dist/modules/wms/components/backend/CycleCountWizardDialog.js +1783 -0
  189. package/dist/modules/wms/components/backend/CycleCountWizardDialog.js.map +7 -0
  190. package/dist/modules/wms/components/backend/ImportInventoryDialog.js +766 -0
  191. package/dist/modules/wms/components/backend/ImportInventoryDialog.js.map +7 -0
  192. package/dist/modules/wms/components/backend/InventoryOperationsSection.js +119 -0
  193. package/dist/modules/wms/components/backend/InventoryOperationsSection.js.map +7 -0
  194. package/dist/modules/wms/components/backend/LocationEditDialog.js +140 -0
  195. package/dist/modules/wms/components/backend/LocationEditDialog.js.map +7 -0
  196. package/dist/modules/wms/components/backend/MoveInventoryDialog.js +791 -0
  197. package/dist/modules/wms/components/backend/MoveInventoryDialog.js.map +7 -0
  198. package/dist/modules/wms/components/backend/ReceiveInventoryDialog.js +656 -0
  199. package/dist/modules/wms/components/backend/ReceiveInventoryDialog.js.map +7 -0
  200. package/dist/modules/wms/components/backend/ReleaseReservationDialog.js +344 -0
  201. package/dist/modules/wms/components/backend/ReleaseReservationDialog.js.map +7 -0
  202. package/dist/modules/wms/components/backend/ReserveInventoryDialog.js +475 -0
  203. package/dist/modules/wms/components/backend/ReserveInventoryDialog.js.map +7 -0
  204. package/dist/modules/wms/components/backend/WmsConfigurationPage.js +1112 -0
  205. package/dist/modules/wms/components/backend/WmsConfigurationPage.js.map +7 -0
  206. package/dist/modules/wms/components/backend/WmsInventoryConsolePage.js +908 -0
  207. package/dist/modules/wms/components/backend/WmsInventoryConsolePage.js.map +7 -0
  208. package/dist/modules/wms/components/backend/WmsLocationDetailPage.js +1015 -0
  209. package/dist/modules/wms/components/backend/WmsLocationDetailPage.js.map +7 -0
  210. package/dist/modules/wms/components/backend/WmsLotDetailPage.js +1049 -0
  211. package/dist/modules/wms/components/backend/WmsLotDetailPage.js.map +7 -0
  212. package/dist/modules/wms/components/backend/WmsLotsListPage.js +297 -0
  213. package/dist/modules/wms/components/backend/WmsLotsListPage.js.map +7 -0
  214. package/dist/modules/wms/components/backend/WmsOperationalDashboardPage.js +757 -0
  215. package/dist/modules/wms/components/backend/WmsOperationalDashboardPage.js.map +7 -0
  216. package/dist/modules/wms/components/backend/WmsSkuDetailPage.js +975 -0
  217. package/dist/modules/wms/components/backend/WmsSkuDetailPage.js.map +7 -0
  218. package/dist/modules/wms/components/backend/inventoryMutationLoaders.js +710 -0
  219. package/dist/modules/wms/components/backend/inventoryMutationLoaders.js.map +7 -0
  220. package/dist/modules/wms/components/backend/useWmsInventoryMutationAccess.js +79 -0
  221. package/dist/modules/wms/components/backend/useWmsInventoryMutationAccess.js.map +7 -0
  222. package/dist/modules/wms/components/backend/useWmsInventoryScopeFromSearchParams.js +24 -0
  223. package/dist/modules/wms/components/backend/useWmsInventoryScopeFromSearchParams.js.map +7 -0
  224. package/dist/modules/wms/components/backend/wmsLookupLoaders.js +55 -0
  225. package/dist/modules/wms/components/backend/wmsLookupLoaders.js.map +7 -0
  226. package/dist/modules/wms/data/enrichers.js +501 -0
  227. package/dist/modules/wms/data/enrichers.js.map +7 -0
  228. package/dist/modules/wms/data/entities.js +467 -0
  229. package/dist/modules/wms/data/entities.js.map +7 -0
  230. package/dist/modules/wms/data/validators.js +399 -0
  231. package/dist/modules/wms/data/validators.js.map +7 -0
  232. package/dist/modules/wms/di.js +27 -0
  233. package/dist/modules/wms/di.js.map +7 -0
  234. package/dist/modules/wms/events.js +42 -0
  235. package/dist/modules/wms/events.js.map +7 -0
  236. package/dist/modules/wms/index.js +17 -0
  237. package/dist/modules/wms/index.js.map +7 -0
  238. package/dist/modules/wms/lib/catalogInventoryProfileIntent.js +54 -0
  239. package/dist/modules/wms/lib/catalogInventoryProfileIntent.js.map +7 -0
  240. package/dist/modules/wms/lib/catalogInventoryProfileSync.js +144 -0
  241. package/dist/modules/wms/lib/catalogInventoryProfileSync.js.map +7 -0
  242. package/dist/modules/wms/lib/expiry.js +29 -0
  243. package/dist/modules/wms/lib/expiry.js.map +7 -0
  244. package/dist/modules/wms/lib/flashMutationError.js +51 -0
  245. package/dist/modules/wms/lib/flashMutationError.js.map +7 -0
  246. package/dist/modules/wms/lib/inventoryDisplayUi.js +188 -0
  247. package/dist/modules/wms/lib/inventoryDisplayUi.js.map +7 -0
  248. package/dist/modules/wms/lib/inventoryIdempotency.js +37 -0
  249. package/dist/modules/wms/lib/inventoryIdempotency.js.map +7 -0
  250. package/dist/modules/wms/lib/inventoryImportCsv.js +173 -0
  251. package/dist/modules/wms/lib/inventoryImportCsv.js.map +7 -0
  252. package/dist/modules/wms/lib/inventoryImportService.js +468 -0
  253. package/dist/modules/wms/lib/inventoryImportService.js.map +7 -0
  254. package/dist/modules/wms/lib/inventoryMutationUi.js +25 -0
  255. package/dist/modules/wms/lib/inventoryMutationUi.js.map +7 -0
  256. package/dist/modules/wms/lib/inventoryPolicy.js +61 -0
  257. package/dist/modules/wms/lib/inventoryPolicy.js.map +7 -0
  258. package/dist/modules/wms/lib/inventoryReconciliation.js +193 -0
  259. package/dist/modules/wms/lib/inventoryReconciliation.js.map +7 -0
  260. package/dist/modules/wms/lib/inventoryTrackingValidation.js +13 -0
  261. package/dist/modules/wms/lib/inventoryTrackingValidation.js.map +7 -0
  262. package/dist/modules/wms/lib/loadOperationalDashboard.js +580 -0
  263. package/dist/modules/wms/lib/loadOperationalDashboard.js.map +7 -0
  264. package/dist/modules/wms/lib/lowStockBalanceFilter.js +49 -0
  265. package/dist/modules/wms/lib/lowStockBalanceFilter.js.map +7 -0
  266. package/dist/modules/wms/lib/primaryWarehousePolicy.js +32 -0
  267. package/dist/modules/wms/lib/primaryWarehousePolicy.js.map +7 -0
  268. package/dist/modules/wms/lib/roleFeatures.js +30 -0
  269. package/dist/modules/wms/lib/roleFeatures.js.map +7 -0
  270. package/dist/modules/wms/lib/salesOrderInventoryAutomation.js +291 -0
  271. package/dist/modules/wms/lib/salesOrderInventoryAutomation.js.map +7 -0
  272. package/dist/modules/wms/lib/salesOrderWarehouseAssignment.js +54 -0
  273. package/dist/modules/wms/lib/salesOrderWarehouseAssignment.js.map +7 -0
  274. package/dist/modules/wms/lib/wmsIntegrationToggles.js +71 -0
  275. package/dist/modules/wms/lib/wmsIntegrationToggles.js.map +7 -0
  276. package/dist/modules/wms/migrations/Migration20260428110546.js +78 -0
  277. package/dist/modules/wms/migrations/Migration20260428110546.js.map +7 -0
  278. package/dist/modules/wms/migrations/Migration20260527120000.js +15 -0
  279. package/dist/modules/wms/migrations/Migration20260527120000.js.map +7 -0
  280. package/dist/modules/wms/migrations/Migration20260527140000.js +37 -0
  281. package/dist/modules/wms/migrations/Migration20260527140000.js.map +7 -0
  282. package/dist/modules/wms/migrations/Migration20260613120000.js +23 -0
  283. package/dist/modules/wms/migrations/Migration20260613120000.js.map +7 -0
  284. package/dist/modules/wms/migrations/Migration20260616090000.js +13 -0
  285. package/dist/modules/wms/migrations/Migration20260616090000.js.map +7 -0
  286. package/dist/modules/wms/migrations/Migration20260707180000.js +15 -0
  287. package/dist/modules/wms/migrations/Migration20260707180000.js.map +7 -0
  288. package/dist/modules/wms/notifications.client.js +18 -0
  289. package/dist/modules/wms/notifications.client.js.map +7 -0
  290. package/dist/modules/wms/notifications.js +53 -0
  291. package/dist/modules/wms/notifications.js.map +7 -0
  292. package/dist/modules/wms/search.js +196 -0
  293. package/dist/modules/wms/search.js.map +7 -0
  294. package/dist/modules/wms/setup.js +30 -0
  295. package/dist/modules/wms/setup.js.map +7 -0
  296. package/dist/modules/wms/subscribers/low-stock-notification.js +40 -0
  297. package/dist/modules/wms/subscribers/low-stock-notification.js.map +7 -0
  298. package/dist/modules/wms/subscribers/reservation-shortfall-notification.js +69 -0
  299. package/dist/modules/wms/subscribers/reservation-shortfall-notification.js.map +7 -0
  300. package/dist/modules/wms/subscribers/sales-order-cancelled-release.js +14 -0
  301. package/dist/modules/wms/subscribers/sales-order-cancelled-release.js.map +7 -0
  302. package/dist/modules/wms/subscribers/sales-order-confirmed-reserve.js +14 -0
  303. package/dist/modules/wms/subscribers/sales-order-confirmed-reserve.js.map +7 -0
  304. package/dist/modules/wms/translations.js +10 -0
  305. package/dist/modules/wms/translations.js.map +7 -0
  306. package/dist/modules/wms/vector.js +9 -0
  307. package/dist/modules/wms/vector.js.map +7 -0
  308. package/dist/modules/wms/widgets/injection/catalog-inventory-profile/widget.js +200 -0
  309. package/dist/modules/wms/widgets/injection/catalog-inventory-profile/widget.js.map +7 -0
  310. package/dist/modules/wms/widgets/injection/order-items-stock-column/widget.js +104 -0
  311. package/dist/modules/wms/widgets/injection/order-items-stock-column/widget.js.map +7 -0
  312. package/dist/modules/wms/widgets/injection/sales-order-stock-context/widget.client.js +389 -0
  313. package/dist/modules/wms/widgets/injection/sales-order-stock-context/widget.client.js.map +7 -0
  314. package/dist/modules/wms/widgets/injection/sales-order-stock-context/widget.js +16 -0
  315. package/dist/modules/wms/widgets/injection/sales-order-stock-context/widget.js.map +7 -0
  316. package/dist/modules/wms/widgets/injection-table.js +36 -0
  317. package/dist/modules/wms/widgets/injection-table.js.map +7 -0
  318. package/dist/modules/wms/widgets/notifications/WmsLowStockRenderer.js +150 -0
  319. package/dist/modules/wms/widgets/notifications/WmsLowStockRenderer.js.map +7 -0
  320. package/dist/modules/wms/widgets/notifications/WmsReservationShortfallRenderer.js +186 -0
  321. package/dist/modules/wms/widgets/notifications/WmsReservationShortfallRenderer.js.map +7 -0
  322. package/dist/modules/wms/widgets/notifications/index.js +7 -0
  323. package/dist/modules/wms/widgets/notifications/index.js.map +7 -0
  324. package/generated/entities/inventory_balance/index.ts +9 -0
  325. package/generated/entities/inventory_lot/index.ts +8 -0
  326. package/generated/entities/inventory_movement/index.ts +16 -0
  327. package/generated/entities/inventory_reservation/index.ts +10 -0
  328. package/generated/entities/product_inventory_profile/index.ts +9 -0
  329. package/generated/entities/sales_order_warehouse_assignment/index.ts +4 -0
  330. package/generated/entities/warehouse/index.ts +11 -0
  331. package/generated/entities/warehouse_location/index.ts +9 -0
  332. package/generated/entities/warehouse_zone/index.ts +4 -0
  333. package/generated/entities.ids.generated.ts +12 -0
  334. package/generated/entity-fields-registry.ts +98 -0
  335. package/package.json +7 -7
  336. package/src/modules/auth/backend/roles/page.tsx +13 -4
  337. package/src/modules/auth/i18n/de.json +2 -0
  338. package/src/modules/auth/i18n/en.json +2 -0
  339. package/src/modules/auth/i18n/es.json +2 -0
  340. package/src/modules/auth/i18n/pl.json +2 -0
  341. package/src/modules/auth/lib/backendChrome.tsx +1 -0
  342. package/src/modules/auth/services/rbacService.ts +25 -21
  343. package/src/modules/catalog/api/products/route.ts +3 -0
  344. package/src/modules/catalog/api/variants/route.ts +3 -0
  345. package/src/modules/customer_accounts/migrations/Migration20260724120000_customer_accounts.ts +96 -0
  346. package/src/modules/directory/api/organizations/route.ts +1 -1
  347. package/src/modules/entities/api/definitions.ts +2 -0
  348. package/src/modules/entities/lib/helpers.ts +1 -0
  349. package/src/modules/query_index/lib/engine.ts +18 -6
  350. package/src/modules/sales/api/documents/factory.ts +1 -0
  351. package/src/modules/sales/api/quotes/accept/route.ts +9 -2
  352. package/src/modules/sales/api/quotes/public/[token]/route.ts +2 -1
  353. package/src/modules/sales/commands/documents.ts +71 -0
  354. package/src/modules/sales/components/documents/ItemsSection.tsx +58 -0
  355. package/src/modules/sales/events.ts +2 -0
  356. package/src/modules/sales/lib/publicQuoteTenantScope.ts +49 -0
  357. package/src/modules/sales/widgets/injection/order-items-context.ts +15 -0
  358. package/src/modules/wms/acl.ts +14 -0
  359. package/src/modules/wms/analytics.ts +9 -0
  360. package/src/modules/wms/api/dashboard/operational/route.ts +83 -0
  361. package/src/modules/wms/api/interceptors.ts +108 -0
  362. package/src/modules/wms/api/inventory/adjust/route.ts +50 -0
  363. package/src/modules/wms/api/inventory/allocate/route.ts +50 -0
  364. package/src/modules/wms/api/inventory/balances/route.ts +178 -0
  365. package/src/modules/wms/api/inventory/cycle-count/route.ts +51 -0
  366. package/src/modules/wms/api/inventory/helpers.ts +128 -0
  367. package/src/modules/wms/api/inventory/import/apply/route.ts +47 -0
  368. package/src/modules/wms/api/inventory/import/helpers.ts +223 -0
  369. package/src/modules/wms/api/inventory/import/template/route.ts +31 -0
  370. package/src/modules/wms/api/inventory/import/validate/route.ts +56 -0
  371. package/src/modules/wms/api/inventory/move/route.ts +50 -0
  372. package/src/modules/wms/api/inventory/movements/route.ts +164 -0
  373. package/src/modules/wms/api/inventory/receive/route.ts +49 -0
  374. package/src/modules/wms/api/inventory/release/route.ts +43 -0
  375. package/src/modules/wms/api/inventory/reservations/route.ts +128 -0
  376. package/src/modules/wms/api/inventory/reserve/route.ts +59 -0
  377. package/src/modules/wms/api/inventory-profiles/route.ts +177 -0
  378. package/src/modules/wms/api/listEnrichers.ts +312 -0
  379. package/src/modules/wms/api/listSearch.ts +121 -0
  380. package/src/modules/wms/api/locations/route.ts +171 -0
  381. package/src/modules/wms/api/lots/route.ts +205 -0
  382. package/src/modules/wms/api/openapi.ts +28 -0
  383. package/src/modules/wms/api/sales-orders/[salesOrderId]/re-run-reservation/route.ts +58 -0
  384. package/src/modules/wms/api/sales-orders/[salesOrderId]/warehouse-assignment/route.ts +306 -0
  385. package/src/modules/wms/api/sales-orders/assign-warehouse/route.ts +57 -0
  386. package/src/modules/wms/api/sales-orders/unassign-warehouse/route.ts +43 -0
  387. package/src/modules/wms/api/warehouses/route.ts +181 -0
  388. package/src/modules/wms/api/zones/route.ts +158 -0
  389. package/src/modules/wms/backend/config/wms/page.meta.ts +14 -0
  390. package/src/modules/wms/backend/config/wms/page.tsx +5 -0
  391. package/src/modules/wms/backend/page.meta.ts +12 -0
  392. package/src/modules/wms/backend/page.tsx +5 -0
  393. package/src/modules/wms/backend/wms/inventory/page.meta.ts +14 -0
  394. package/src/modules/wms/backend/wms/inventory/page.tsx +5 -0
  395. package/src/modules/wms/backend/wms/location/[id]/page.meta.ts +14 -0
  396. package/src/modules/wms/backend/wms/location/[id]/page.tsx +5 -0
  397. package/src/modules/wms/backend/wms/locations/page.meta.ts +14 -0
  398. package/src/modules/wms/backend/wms/locations/page.tsx +12 -0
  399. package/src/modules/wms/backend/wms/lot/[id]/page.meta.ts +14 -0
  400. package/src/modules/wms/backend/wms/lot/[id]/page.tsx +5 -0
  401. package/src/modules/wms/backend/wms/lots/page.meta.ts +14 -0
  402. package/src/modules/wms/backend/wms/lots/page.tsx +5 -0
  403. package/src/modules/wms/backend/wms/movements/page.meta.ts +14 -0
  404. package/src/modules/wms/backend/wms/movements/page.tsx +23 -0
  405. package/src/modules/wms/backend/wms/reservations/page.meta.ts +14 -0
  406. package/src/modules/wms/backend/wms/reservations/page.tsx +24 -0
  407. package/src/modules/wms/backend/wms/sku/[id]/page.meta.ts +14 -0
  408. package/src/modules/wms/backend/wms/sku/[id]/page.tsx +5 -0
  409. package/src/modules/wms/backend/wms/warehouses/page.meta.ts +14 -0
  410. package/src/modules/wms/backend/wms/warehouses/page.tsx +12 -0
  411. package/src/modules/wms/backend/wms/zones/page.meta.ts +14 -0
  412. package/src/modules/wms/backend/wms/zones/page.tsx +12 -0
  413. package/src/modules/wms/ce.ts +76 -0
  414. package/src/modules/wms/cli.ts +96 -0
  415. package/src/modules/wms/commands/configuration.ts +1844 -0
  416. package/src/modules/wms/commands/index.ts +3 -0
  417. package/src/modules/wms/commands/inventory-actions.ts +1866 -0
  418. package/src/modules/wms/commands/sales-order-assignment.ts +346 -0
  419. package/src/modules/wms/commands/shared.ts +90 -0
  420. package/src/modules/wms/components/backend/AdjustInventoryDialog.tsx +820 -0
  421. package/src/modules/wms/components/backend/ChangeLotStatusDialog.tsx +312 -0
  422. package/src/modules/wms/components/backend/CycleCountWizardDialog.tsx +2007 -0
  423. package/src/modules/wms/components/backend/ImportInventoryDialog.tsx +1018 -0
  424. package/src/modules/wms/components/backend/InventoryOperationsSection.tsx +159 -0
  425. package/src/modules/wms/components/backend/LocationEditDialog.tsx +185 -0
  426. package/src/modules/wms/components/backend/MoveInventoryDialog.tsx +907 -0
  427. package/src/modules/wms/components/backend/ReceiveInventoryDialog.tsx +695 -0
  428. package/src/modules/wms/components/backend/ReleaseReservationDialog.tsx +424 -0
  429. package/src/modules/wms/components/backend/ReserveInventoryDialog.tsx +511 -0
  430. package/src/modules/wms/components/backend/WmsConfigurationPage.tsx +1340 -0
  431. package/src/modules/wms/components/backend/WmsInventoryConsolePage.tsx +1132 -0
  432. package/src/modules/wms/components/backend/WmsLocationDetailPage.tsx +1310 -0
  433. package/src/modules/wms/components/backend/WmsLotDetailPage.tsx +1355 -0
  434. package/src/modules/wms/components/backend/WmsLotsListPage.tsx +359 -0
  435. package/src/modules/wms/components/backend/WmsOperationalDashboardPage.tsx +958 -0
  436. package/src/modules/wms/components/backend/WmsSkuDetailPage.tsx +1245 -0
  437. package/src/modules/wms/components/backend/inventoryMutationLoaders.ts +960 -0
  438. package/src/modules/wms/components/backend/useWmsInventoryMutationAccess.ts +89 -0
  439. package/src/modules/wms/components/backend/useWmsInventoryScopeFromSearchParams.ts +32 -0
  440. package/src/modules/wms/components/backend/wmsLookupLoaders.ts +78 -0
  441. package/src/modules/wms/data/enrichers.ts +718 -0
  442. package/src/modules/wms/data/entities.ts +436 -0
  443. package/src/modules/wms/data/validators.ts +463 -0
  444. package/src/modules/wms/di.ts +25 -0
  445. package/src/modules/wms/events.ts +41 -0
  446. package/src/modules/wms/i18n/de.json +1051 -0
  447. package/src/modules/wms/i18n/en.json +1051 -0
  448. package/src/modules/wms/i18n/es.json +1051 -0
  449. package/src/modules/wms/i18n/pl.json +1051 -0
  450. package/src/modules/wms/index.ts +15 -0
  451. package/src/modules/wms/lib/catalogInventoryProfileIntent.ts +65 -0
  452. package/src/modules/wms/lib/catalogInventoryProfileSync.ts +199 -0
  453. package/src/modules/wms/lib/expiry.ts +30 -0
  454. package/src/modules/wms/lib/flashMutationError.ts +74 -0
  455. package/src/modules/wms/lib/inventoryDisplayUi.ts +249 -0
  456. package/src/modules/wms/lib/inventoryIdempotency.ts +54 -0
  457. package/src/modules/wms/lib/inventoryImportCsv.ts +212 -0
  458. package/src/modules/wms/lib/inventoryImportService.ts +629 -0
  459. package/src/modules/wms/lib/inventoryMutationUi.ts +21 -0
  460. package/src/modules/wms/lib/inventoryPolicy.ts +111 -0
  461. package/src/modules/wms/lib/inventoryReconciliation.ts +263 -0
  462. package/src/modules/wms/lib/inventoryTrackingValidation.ts +23 -0
  463. package/src/modules/wms/lib/loadOperationalDashboard.ts +776 -0
  464. package/src/modules/wms/lib/lowStockBalanceFilter.ts +74 -0
  465. package/src/modules/wms/lib/primaryWarehousePolicy.ts +46 -0
  466. package/src/modules/wms/lib/roleFeatures.ts +32 -0
  467. package/src/modules/wms/lib/salesOrderInventoryAutomation.ts +390 -0
  468. package/src/modules/wms/lib/salesOrderWarehouseAssignment.ts +78 -0
  469. package/src/modules/wms/lib/wmsIntegrationToggles.ts +81 -0
  470. package/src/modules/wms/migrations/.snapshot-open-mercato.json +2880 -0
  471. package/src/modules/wms/migrations/Migration20260428110546.ts +91 -0
  472. package/src/modules/wms/migrations/Migration20260527120000.ts +15 -0
  473. package/src/modules/wms/migrations/Migration20260527140000.ts +35 -0
  474. package/src/modules/wms/migrations/Migration20260613120000.ts +21 -0
  475. package/src/modules/wms/migrations/Migration20260616090000.ts +11 -0
  476. package/src/modules/wms/migrations/Migration20260707180000.ts +13 -0
  477. package/src/modules/wms/notifications.client.ts +18 -0
  478. package/src/modules/wms/notifications.ts +51 -0
  479. package/src/modules/wms/search.ts +230 -0
  480. package/src/modules/wms/setup.ts +29 -0
  481. package/src/modules/wms/subscribers/low-stock-notification.ts +54 -0
  482. package/src/modules/wms/subscribers/reservation-shortfall-notification.ts +98 -0
  483. package/src/modules/wms/subscribers/sales-order-cancelled-release.ts +21 -0
  484. package/src/modules/wms/subscribers/sales-order-confirmed-reserve.ts +21 -0
  485. package/src/modules/wms/translations.ts +6 -0
  486. package/src/modules/wms/vector.ts +7 -0
  487. package/src/modules/wms/widgets/injection/catalog-inventory-profile/widget.ts +238 -0
  488. package/src/modules/wms/widgets/injection/order-items-stock-column/widget.tsx +153 -0
  489. package/src/modules/wms/widgets/injection/sales-order-stock-context/widget.client.tsx +476 -0
  490. package/src/modules/wms/widgets/injection/sales-order-stock-context/widget.ts +15 -0
  491. package/src/modules/wms/widgets/injection-table.ts +34 -0
  492. package/src/modules/wms/widgets/notifications/WmsLowStockRenderer.tsx +153 -0
  493. package/src/modules/wms/widgets/notifications/WmsReservationShortfallRenderer.tsx +194 -0
  494. package/src/modules/wms/widgets/notifications/index.ts +2 -0
@@ -0,0 +1,1051 @@
1
+ {
2
+ "wms.audit.inventory.receive": "Recibir inventario",
3
+ "wms.audit.salesOrder.assignWarehouse": "Asignar almacén al pedido",
4
+ "wms.audit.salesOrder.reRunReservation": "Volver a ejecutar la reserva del pedido",
5
+ "wms.audit.salesOrder.unassignWarehouse": "Quitar asignación de almacén del pedido",
6
+ "wms.backend.config.actions.addLocation": "Añadir ubicación",
7
+ "wms.backend.config.actions.addProfile": "Añadir perfil",
8
+ "wms.backend.config.actions.addWarehouse": "Añadir almacén",
9
+ "wms.backend.config.actions.addZone": "Añadir zona",
10
+ "wms.backend.config.description": "Configuración operativa de fase 1 para almacenes, ubicaciones de almacenamiento y políticas de seguimiento de inventario.",
11
+ "wms.backend.config.locations.columns.capacityUnits": "Unidades de capacidad",
12
+ "wms.backend.config.locations.columns.code": "Ubicación",
13
+ "wms.backend.config.locations.columns.status": "Estado",
14
+ "wms.backend.config.locations.columns.type": "Tipo",
15
+ "wms.backend.config.locations.columns.warehouse": "Almacén",
16
+ "wms.backend.config.locations.confirmDelete": "¿Archivar ubicación \"{code}\"?",
17
+ "wms.backend.config.locations.description": "Mantenga los contenedores de topología a nivel de pasillo/bin/muelle que almacenan el inventario operativo.",
18
+ "wms.backend.config.locations.dialog.create": "Crear ubicación",
19
+ "wms.backend.config.locations.dialog.edit": "Editar ubicación",
20
+ "wms.backend.config.locations.empty.description": "Cree ubicaciones para definir los contenedores utilizados por saldos, reservas y registros del libro de movimientos.",
21
+ "wms.backend.config.locations.empty.title": "Sin ubicaciones",
22
+ "wms.backend.config.locations.errors.delete": "No se pudo archivar la ubicación.",
23
+ "wms.backend.config.locations.errors.load": "No se pudieron cargar las ubicaciones.",
24
+ "wms.backend.config.locations.errors.save": "No se pudo guardar la ubicación.",
25
+ "wms.backend.config.locations.flash.created": "Ubicación creada",
26
+ "wms.backend.config.locations.flash.deleted": "Ubicación archivada",
27
+ "wms.backend.config.locations.flash.updated": "Ubicación actualizada",
28
+ "wms.backend.config.locations.form.active": "Activo",
29
+ "wms.backend.config.locations.form.capacityUnits": "Unidades de capacidad",
30
+ "wms.backend.config.locations.form.capacityWeight": "Capacidad de peso",
31
+ "wms.backend.config.locations.form.code": "Código",
32
+ "wms.backend.config.locations.form.type": "Tipo",
33
+ "wms.backend.config.locations.form.warehouse": "Almacén",
34
+ "wms.backend.config.locations.search": "Buscar ubicaciones",
35
+ "wms.backend.config.locations.title": "Ubicaciones",
36
+ "wms.backend.config.locations.type.aisle": "Pasillo",
37
+ "wms.backend.config.locations.type.bin": "Bin",
38
+ "wms.backend.config.locations.type.dock": "Muelle",
39
+ "wms.backend.config.locations.type.rack": "Estantería",
40
+ "wms.backend.config.locations.type.slot": "Ranura",
41
+ "wms.backend.config.locations.type.staging": "Preparación",
42
+ "wms.backend.config.locations.type.zone": "Zona",
43
+ "wms.backend.config.nav.title": "Configuración WMS",
44
+ "wms.backend.config.profiles.allVariants": "Todas las variantes",
45
+ "wms.backend.config.profiles.columns.product": "Producto",
46
+ "wms.backend.config.profiles.columns.reorderPoint": "Punto de reorden",
47
+ "wms.backend.config.profiles.columns.safetyStock": "Stock de seguridad",
48
+ "wms.backend.config.profiles.columns.strategy": "Estrategia",
49
+ "wms.backend.config.profiles.columns.uom": "UOM",
50
+ "wms.backend.config.profiles.columns.variant": "Variante",
51
+ "wms.backend.config.profiles.confirmDelete": "¿Archivar perfil de inventario \"{id}\"?",
52
+ "wms.backend.config.profiles.description": "Configure la estrategia de seguimiento, los umbrales de reorden y el comportamiento de lote/serie por ámbito de producto.",
53
+ "wms.backend.config.profiles.dialog.create": "Crear perfil de inventario",
54
+ "wms.backend.config.profiles.dialog.edit": "Editar perfil de inventario",
55
+ "wms.backend.config.profiles.empty.description": "Cree perfiles para controlar la estrategia de reserva, el seguimiento de lote/serie y los umbrales de stock bajo.",
56
+ "wms.backend.config.profiles.empty.title": "Sin perfiles de inventario",
57
+ "wms.backend.config.profiles.errors.delete": "No se pudo archivar el perfil de inventario.",
58
+ "wms.backend.config.profiles.errors.load": "No se pudieron cargar los perfiles de inventario.",
59
+ "wms.backend.config.profiles.errors.save": "No se pudo guardar el perfil de inventario.",
60
+ "wms.backend.config.profiles.flash.created": "Perfil de inventario creado",
61
+ "wms.backend.config.profiles.flash.deleted": "Perfil de inventario archivado",
62
+ "wms.backend.config.profiles.flash.updated": "Perfil de inventario actualizado",
63
+ "wms.backend.config.profiles.form.product": "Producto",
64
+ "wms.backend.config.profiles.form.reorderPoint": "Punto de reorden",
65
+ "wms.backend.config.profiles.form.safetyStock": "Stock de seguridad",
66
+ "wms.backend.config.profiles.form.strategy": "Estrategia de rotación",
67
+ "wms.backend.config.profiles.form.trackExpiration": "Seguir caducidad",
68
+ "wms.backend.config.profiles.form.trackLot": "Seguir lotes",
69
+ "wms.backend.config.profiles.form.trackSerial": "Seguir series",
70
+ "wms.backend.config.profiles.form.uom": "UOM predeterminada",
71
+ "wms.backend.config.profiles.form.variant": "Variante",
72
+ "wms.backend.config.profiles.title": "Perfiles de inventario",
73
+ "wms.backend.config.profiles.validation.fefoRequired": "FEFO es obligatorio cuando el seguimiento de caducidad está habilitado.",
74
+ "wms.backend.config.title": "Configuración WMS",
75
+ "wms.backend.config.viewAll": "Ver todo →",
76
+ "wms.backend.config.warehouses.columns.city": "Ciudad",
77
+ "wms.backend.config.warehouses.columns.code": "Código",
78
+ "wms.backend.config.warehouses.columns.country": "País",
79
+ "wms.backend.config.warehouses.columns.name": "Almacén",
80
+ "wms.backend.config.warehouses.columns.primary": "Principal",
81
+ "wms.backend.config.warehouses.columns.status": "Estado",
82
+ "wms.backend.config.warehouses.confirmDelete": "¿Archivar almacén \"{name}\"?",
83
+ "wms.backend.config.warehouses.description": "Gestione los nodos de almacén de alto nivel utilizados por las reservas WMS y los movimientos de inventario.",
84
+ "wms.backend.config.warehouses.dialog.create": "Crear almacén",
85
+ "wms.backend.config.warehouses.dialog.edit": "Editar almacén",
86
+ "wms.backend.config.warehouses.empty.description": "Cree el primer almacén para exponer la topología y la asignación de inventario en WMS.",
87
+ "wms.backend.config.warehouses.empty.title": "Sin almacenes",
88
+ "wms.backend.config.warehouses.errors.delete": "No se pudo archivar el almacén.",
89
+ "wms.backend.config.warehouses.errors.load": "No se pudieron cargar los almacenes.",
90
+ "wms.backend.config.warehouses.errors.save": "No se pudo guardar el almacén.",
91
+ "wms.backend.config.warehouses.flash.created": "Almacén creado",
92
+ "wms.backend.config.warehouses.flash.deleted": "Almacén archivado",
93
+ "wms.backend.config.warehouses.flash.updated": "Almacén actualizado",
94
+ "wms.backend.config.warehouses.form.active": "Activo",
95
+ "wms.backend.config.warehouses.form.city": "Ciudad",
96
+ "wms.backend.config.warehouses.form.code": "Código",
97
+ "wms.backend.config.warehouses.form.country": "País",
98
+ "wms.backend.config.warehouses.form.name": "Nombre",
99
+ "wms.backend.config.warehouses.form.primary": "Almacén principal",
100
+ "wms.backend.config.warehouses.form.timezone": "Zona horaria",
101
+ "wms.backend.config.warehouses.primary.yes": "Principal",
102
+ "wms.backend.config.warehouses.search": "Buscar almacenes",
103
+ "wms.backend.config.warehouses.title": "Almacenes",
104
+ "wms.backend.config.zones.columns.code": "Código",
105
+ "wms.backend.config.zones.columns.name": "Zona",
106
+ "wms.backend.config.zones.columns.priority": "Prioridad",
107
+ "wms.backend.config.zones.columns.warehouse": "Almacén",
108
+ "wms.backend.config.zones.confirmDelete": "¿Archivar zona \"{name}\"?",
109
+ "wms.backend.config.zones.description": "Agrupe ubicaciones en zonas funcionales (p. ej., recepción, zona de picking, a granel) para impulsar el enrutamiento y la prioridad.",
110
+ "wms.backend.config.zones.dialog.create": "Crear zona",
111
+ "wms.backend.config.zones.dialog.edit": "Editar zona",
112
+ "wms.backend.config.zones.empty.description": "Las zonas agrupan ubicaciones en áreas funcionales para impulsar la prioridad de picking y las reglas de enrutamiento.",
113
+ "wms.backend.config.zones.empty.title": "Sin zonas",
114
+ "wms.backend.config.zones.errors.delete": "No se pudo archivar la zona.",
115
+ "wms.backend.config.zones.errors.load": "No se pudieron cargar las zonas.",
116
+ "wms.backend.config.zones.errors.save": "No se pudo guardar la zona.",
117
+ "wms.backend.config.zones.flash.created": "Zona creada",
118
+ "wms.backend.config.zones.flash.deleted": "Zona archivada",
119
+ "wms.backend.config.zones.flash.updated": "Zona actualizada",
120
+ "wms.backend.config.zones.form.code": "Código",
121
+ "wms.backend.config.zones.form.name": "Nombre",
122
+ "wms.backend.config.zones.form.priority": "Prioridad",
123
+ "wms.backend.config.zones.form.warehouse": "Almacén",
124
+ "wms.backend.config.zones.search": "Buscar zonas",
125
+ "wms.backend.config.zones.title": "Zonas",
126
+ "wms.backend.dashboard.actions.refresh": "Actualizar",
127
+ "wms.backend.dashboard.activity.columns.actions": "Acciones",
128
+ "wms.backend.dashboard.activity.columns.details": "Detalles",
129
+ "wms.backend.dashboard.activity.columns.event": "Evento",
130
+ "wms.backend.dashboard.activity.columns.location": "Ubicación",
131
+ "wms.backend.dashboard.activity.columns.time": "Hora",
132
+ "wms.backend.dashboard.activity.empty": "Aún no hay movimientos recientes.",
133
+ "wms.backend.dashboard.activity.open": "Abrir movimiento",
134
+ "wms.backend.dashboard.activity.reasons.cycleCount": "Conteo cíclico",
135
+ "wms.backend.dashboard.activity.title": "Actividad reciente",
136
+ "wms.backend.dashboard.activity.titles.adjusted": "Ajustado {quantity}× {sku}",
137
+ "wms.backend.dashboard.activity.titles.allocated": "Asignado {quantity}× {sku}",
138
+ "wms.backend.dashboard.activity.titles.generic": "{type} {quantity}× {sku}",
139
+ "wms.backend.dashboard.activity.titles.moved": "Movido {quantity}× {sku}",
140
+ "wms.backend.dashboard.activity.titles.received": "Recibido {quantity}× {sku}",
141
+ "wms.backend.dashboard.activity.titles.reconciled": "Inventario conciliado — {sku}",
142
+ "wms.backend.dashboard.activity.types.adjust": "Ajustar",
143
+ "wms.backend.dashboard.activity.types.cycle_count": "Conciliado",
144
+ "wms.backend.dashboard.activity.types.pack": "Asignar",
145
+ "wms.backend.dashboard.activity.types.pick": "Asignar",
146
+ "wms.backend.dashboard.activity.types.putaway": "Ubicación",
147
+ "wms.backend.dashboard.activity.types.receipt": "Recibir",
148
+ "wms.backend.dashboard.activity.types.return_receive": "Recibir",
149
+ "wms.backend.dashboard.activity.types.ship": "Enviar",
150
+ "wms.backend.dashboard.activity.types.transfer": "Mover",
151
+ "wms.backend.dashboard.activity.viewAll": "Ver todos los movimientos →",
152
+ "wms.backend.dashboard.errors.load": "No se pudo cargar el panel.",
153
+ "wms.backend.dashboard.errors.locations": "No se pudieron cargar las ubicaciones.",
154
+ "wms.backend.dashboard.errors.warehouses": "No se pudieron cargar los almacenes.",
155
+ "wms.backend.dashboard.expiry.available": "{quantity} disponible",
156
+ "wms.backend.dashboard.expiry.description": "Lotes próximos y vencidos con stock en existencia en el ámbito de almacén seleccionado.",
157
+ "wms.backend.dashboard.expiry.expiringSoon.empty": "No hay lotes que caduquen en los próximos 30 días.",
158
+ "wms.backend.dashboard.expiry.expiringSoon.title": "Caduca pronto",
159
+ "wms.backend.dashboard.expiry.expiringSoon.viewAll": "Ver todos los que caducan →",
160
+ "wms.backend.dashboard.expiry.openLot": "Abrir lote",
161
+ "wms.backend.dashboard.expiry.pastDue.empty": "No hay lotes caducados con stock disponible.",
162
+ "wms.backend.dashboard.expiry.pastDue.title": "Vencidos",
163
+ "wms.backend.dashboard.expiry.pastDue.viewAll": "Ver todos los vencidos →",
164
+ "wms.backend.dashboard.expiry.title": "Control de caducidad",
165
+ "wms.backend.dashboard.filters.allWarehouses": "Todos los almacenes",
166
+ "wms.backend.dashboard.firstRun.actions.addLocations": "Añadir ubicaciones",
167
+ "wms.backend.dashboard.firstRun.actions.createWarehouse": "Crear almacén",
168
+ "wms.backend.dashboard.firstRun.actions.receiveStock": "Recibir primer stock",
169
+ "wms.backend.dashboard.firstRun.noLocations.description": "Su almacén está configurado — añada al menos una ubicación de almacenamiento antes de poder recibir stock.",
170
+ "wms.backend.dashboard.firstRun.noLocations.title": "Añadir ubicaciones de almacenamiento",
171
+ "wms.backend.dashboard.firstRun.title": "Configure su almacén",
172
+ "wms.backend.dashboard.kpis.agingReservations.badge": "{count} envejeciendo",
173
+ "wms.backend.dashboard.kpis.agingReservations.caption": "Retenciones activas con más de 7 días",
174
+ "wms.backend.dashboard.kpis.agingReservations.cta": "Ver reservas",
175
+ "wms.backend.dashboard.kpis.agingReservations.title": "Reservas envejeciendo",
176
+ "wms.backend.dashboard.kpis.expiringSoon.badge": "{count} lotes",
177
+ "wms.backend.dashboard.kpis.expiringSoon.caption": "Lotes que caducan en 30 días",
178
+ "wms.backend.dashboard.kpis.expiringSoon.cta": "Ver caducidad",
179
+ "wms.backend.dashboard.kpis.expiringSoon.title": "Caduca pronto",
180
+ "wms.backend.dashboard.kpis.lowStock.badgeActive": "{count} activos",
181
+ "wms.backend.dashboard.kpis.lowStock.badgeSinceYesterday": "+{count} desde ayer",
182
+ "wms.backend.dashboard.kpis.lowStock.badgeStable": "Estable",
183
+ "wms.backend.dashboard.kpis.lowStock.caption": "Por debajo del punto de reorden",
184
+ "wms.backend.dashboard.kpis.lowStock.cta": "Ver stock bajo",
185
+ "wms.backend.dashboard.kpis.lowStock.title": "Stock bajo",
186
+ "wms.backend.dashboard.kpis.pastDue.badge": "{count} lotes",
187
+ "wms.backend.dashboard.kpis.pastDue.caption": "Lotes caducados con stock en existencia",
188
+ "wms.backend.dashboard.kpis.pastDue.cta": "Ver vencidos",
189
+ "wms.backend.dashboard.kpis.pastDue.title": "Vencidos",
190
+ "wms.backend.dashboard.kpis.reorderCritical.badge": "{count} críticos",
191
+ "wms.backend.dashboard.kpis.reorderCritical.caption": "Por debajo del stock de seguridad",
192
+ "wms.backend.dashboard.kpis.reorderCritical.cta": "Ver críticos",
193
+ "wms.backend.dashboard.kpis.reorderCritical.title": "Reorden crítico",
194
+ "wms.backend.dashboard.kpis.todaysMoves.badgeDown": "{count} vs ayer",
195
+ "wms.backend.dashboard.kpis.todaysMoves.badgeUp": "+{count} vs ayer",
196
+ "wms.backend.dashboard.kpis.todaysMoves.caption": "Movimientos registrados hoy",
197
+ "wms.backend.dashboard.kpis.todaysMoves.cta": "Ver libro mayor",
198
+ "wms.backend.dashboard.kpis.todaysMoves.title": "Movimientos de hoy",
199
+ "wms.backend.dashboard.loading": "Cargando panel…",
200
+ "wms.backend.dashboard.quickActions.adjust": "Ajustar inventario",
201
+ "wms.backend.dashboard.quickActions.cycleCount": "Conteo cíclico",
202
+ "wms.backend.dashboard.quickActions.description": "Abrir un panel sin salir del tablero",
203
+ "wms.backend.dashboard.quickActions.inventory": "Abrir consola de inventario",
204
+ "wms.backend.dashboard.quickActions.movements": "Ver movimientos",
205
+ "wms.backend.dashboard.quickActions.receive": "Recibir inventario",
206
+ "wms.backend.dashboard.quickActions.title": "Acciones rápidas",
207
+ "wms.backend.dashboard.subtitle": "Actividad en vivo de hoy · actualización automática 60 s · última actualización {time}",
208
+ "wms.backend.dashboard.subtitleLoading": "Actividad en vivo de hoy · actualización automática 60 s",
209
+ "wms.backend.dashboard.title": "Panel operativo",
210
+ "wms.backend.dashboard.trends.allocate": "Asignar",
211
+ "wms.backend.dashboard.trends.empty": "Aún no hay tendencias de movimiento.",
212
+ "wms.backend.dashboard.trends.receive": "Recibir",
213
+ "wms.backend.dashboard.trends.title": "Tendencias mensuales",
214
+ "wms.backend.inventory.adjust.dialog.description": "Añadir un delta firmado al libro mayor",
215
+ "wms.backend.inventory.adjust.dialog.shortcutSave": "para guardar",
216
+ "wms.backend.inventory.adjust.dialog.submit": "Guardar ajuste",
217
+ "wms.backend.inventory.adjust.dialog.title": "Ajustar inventario",
218
+ "wms.backend.inventory.adjust.errors.deltaZero": "El delta de inventario debe ser distinto de cero.",
219
+ "wms.backend.inventory.adjust.errors.lot": "No se pudo resolver el lote de inventario.",
220
+ "wms.backend.inventory.adjust.errors.previewBalance": "No se pudo cargar la vista previa del saldo.",
221
+ "wms.backend.inventory.adjust.errors.submit": "No se pudo ajustar el inventario.",
222
+ "wms.backend.inventory.adjust.errors.warehouse": "Seleccione primero un almacén.",
223
+ "wms.backend.inventory.adjust.flash.success": "Inventario ajustado",
224
+ "wms.backend.inventory.adjust.form.decrease": "Disminuir cantidad",
225
+ "wms.backend.inventory.adjust.form.delta": "Ajuste",
226
+ "wms.backend.inventory.adjust.form.increase": "Aumentar cantidad",
227
+ "wms.backend.inventory.adjust.form.location": "Ubicación",
228
+ "wms.backend.inventory.adjust.form.locationPlaceholder": "Seleccionar ubicación",
229
+ "wms.backend.inventory.adjust.form.lot": "Lote",
230
+ "wms.backend.inventory.adjust.form.lotPlaceholder": "Seleccionar lote (opcional)",
231
+ "wms.backend.inventory.adjust.form.notes": "Notas",
232
+ "wms.backend.inventory.adjust.form.notesPlaceholder": "Opcional — contexto para auditores",
233
+ "wms.backend.inventory.adjust.form.reason": "Motivo",
234
+ "wms.backend.inventory.adjust.form.reasonPlaceholder": "Seleccionar motivo",
235
+ "wms.backend.inventory.adjust.form.serial": "Número de serie",
236
+ "wms.backend.inventory.adjust.form.serialHelp": "Úselo cuando el perfil de variante sigue series.",
237
+ "wms.backend.inventory.adjust.form.serialPlaceholder": "Opcional — para variantes con seguimiento de serie",
238
+ "wms.backend.inventory.adjust.form.variant": "Variante",
239
+ "wms.backend.inventory.adjust.form.variantPlaceholder": "Buscar variante o SKU",
240
+ "wms.backend.inventory.adjust.form.warehouse": "Almacén",
241
+ "wms.backend.inventory.adjust.form.warehousePlaceholder": "Seleccionar almacén",
242
+ "wms.backend.inventory.adjust.preview.belowReorder": "Por debajo del reorden",
243
+ "wms.backend.inventory.adjust.preview.loading": "Actualizando saldo…",
244
+ "wms.backend.inventory.adjust.preview.onHandLabel": "En existencia",
245
+ "wms.backend.inventory.adjust.preview.title": "Vista previa del saldo",
246
+ "wms.backend.inventory.adjust.reasons.correction": "Corrección",
247
+ "wms.backend.inventory.adjust.reasons.damaged": "Dañado",
248
+ "wms.backend.inventory.adjust.reasons.found": "Stock encontrado",
249
+ "wms.backend.inventory.adjust.reasons.other": "Otro",
250
+ "wms.backend.inventory.adjust.reasons.shrinkage": "Merma",
251
+ "wms.backend.inventory.allocate.errors.submit": "No se pudo asignar la reserva.",
252
+ "wms.backend.inventory.allocate.flash.success": "Reserva asignada",
253
+ "wms.backend.inventory.balances.actions.move": "Mover",
254
+ "wms.backend.inventory.balances.columns.allocated": "Asignado",
255
+ "wms.backend.inventory.balances.columns.available": "Disponible",
256
+ "wms.backend.inventory.balances.columns.location": "Ubicación",
257
+ "wms.backend.inventory.balances.columns.lot": "Lote",
258
+ "wms.backend.inventory.balances.columns.reserved": "Reservado",
259
+ "wms.backend.inventory.balances.columns.variant": "Variante",
260
+ "wms.backend.inventory.balances.columns.warehouse": "Almacén",
261
+ "wms.backend.inventory.balances.description": "Cantidades actuales en existencia, reservadas, asignadas y disponibles por contenedor.",
262
+ "wms.backend.inventory.balances.empty.description": "Los saldos aparecen después de que los recibos, ajustes o movimientos crean contenedores de inventario.",
263
+ "wms.backend.inventory.balances.empty.importCsv": "Importar CSV",
264
+ "wms.backend.inventory.balances.empty.receive": "Recibir stock",
265
+ "wms.backend.inventory.balances.empty.title": "Sin contenedores de saldo",
266
+ "wms.backend.inventory.balances.lotLink": "Ver lote",
267
+ "wms.backend.inventory.balances.search": "Buscar saldos",
268
+ "wms.backend.inventory.balances.title": "Saldos de inventario",
269
+ "wms.backend.inventory.common.notAvailable": "—",
270
+ "wms.backend.inventory.console.scopeBar.allVariants": "Todos los SKU",
271
+ "wms.backend.inventory.console.scopeBar.allWarehouses": "Todos los almacenes",
272
+ "wms.backend.inventory.console.scopeBar.clearAll": "Limpiar",
273
+ "wms.backend.inventory.console.scopeBar.label": "Ámbito",
274
+ "wms.backend.inventory.console.scopeBar.warehouse": "Almacén",
275
+ "wms.backend.inventory.cycleCount.dialog.title": "Conteo cíclico",
276
+ "wms.backend.inventory.cycleCount.errors.ambiguousLot": "Se encontraron varios lotes en esta ubicación — seleccione un lote para continuar.",
277
+ "wms.backend.inventory.cycleCount.errors.autoAdjustRequired": "Active el autoajuste para confirmar una discrepancia.",
278
+ "wms.backend.inventory.cycleCount.errors.balance": "No se pudo cargar el existente del sistema.",
279
+ "wms.backend.inventory.cycleCount.errors.scope": "Complete la configuración y seleccione una ubicación de conteo.",
280
+ "wms.backend.inventory.cycleCount.errors.scopeEstimate": "No se pudo estimar el ámbito del conteo.",
281
+ "wms.backend.inventory.cycleCount.errors.submit": "No se pudo registrar el conteo cíclico.",
282
+ "wms.backend.inventory.cycleCount.errors.warehouse": "Seleccione primero un almacén.",
283
+ "wms.backend.inventory.cycleCount.errors.zoneWarehouse": "La zona seleccionada no pertenece a este almacén.",
284
+ "wms.backend.inventory.cycleCount.flash.success": "Conteo cíclico registrado ({delta})",
285
+ "wms.backend.inventory.cycleCount.form.assignee": "Asignado",
286
+ "wms.backend.inventory.cycleCount.form.assigneeLocked": "Solo el usuario actual puede asignarse sin acceso al directorio de usuarios.",
287
+ "wms.backend.inventory.cycleCount.form.assigneePlaceholder": "Seleccionar asignado",
288
+ "wms.backend.inventory.cycleCount.form.autoAdjust": "Autoajuste al confirmar",
289
+ "wms.backend.inventory.cycleCount.form.autoAdjustHint": "Sí — registra un movimiento de inventario cíclico al confirmar",
290
+ "wms.backend.inventory.cycleCount.form.autoAdjustHintOff": "No — el libro mayor permanece sin cambios",
291
+ "wms.backend.inventory.cycleCount.form.autoAdjustNoVariance": "No se requiere escritura en el libro mayor — los conteos coinciden.",
292
+ "wms.backend.inventory.cycleCount.form.countNotes": "Notas",
293
+ "wms.backend.inventory.cycleCount.form.countNotesPlaceholder": "Opcional — defectos, notas de embalaje",
294
+ "wms.backend.inventory.cycleCount.form.counted": "Contado",
295
+ "wms.backend.inventory.cycleCount.form.currentlyScanning": "Escaneando actualmente",
296
+ "wms.backend.inventory.cycleCount.form.decrease": "Disminuir cantidad",
297
+ "wms.backend.inventory.cycleCount.form.decreaseExpectedSkus": "Disminuir SKU esperados",
298
+ "wms.backend.inventory.cycleCount.form.expectedSkus": "SKU esperados",
299
+ "wms.backend.inventory.cycleCount.form.expectedSkusLoading": "Estimando ámbito…",
300
+ "wms.backend.inventory.cycleCount.form.fromBin": "Desde bin",
301
+ "wms.backend.inventory.cycleCount.form.fromBinPlaceholder": "Bin inicial",
302
+ "wms.backend.inventory.cycleCount.form.increase": "Aumentar cantidad",
303
+ "wms.backend.inventory.cycleCount.form.increaseExpectedSkus": "Aumentar SKU esperados",
304
+ "wms.backend.inventory.cycleCount.form.location": "Ubicación",
305
+ "wms.backend.inventory.cycleCount.form.locationPlaceholder": "Seleccionar ubicación",
306
+ "wms.backend.inventory.cycleCount.form.lot": "Lote",
307
+ "wms.backend.inventory.cycleCount.form.lotPlaceholder": "Seleccionar lote (opcional)",
308
+ "wms.backend.inventory.cycleCount.form.reason": "Motivo",
309
+ "wms.backend.inventory.cycleCount.form.reasonPlaceholder": "Obligatorio para desviaciones — contexto del auditor",
310
+ "wms.backend.inventory.cycleCount.form.schedule": "Programar",
311
+ "wms.backend.inventory.cycleCount.form.scheduleImmediate": "Inicio inmediato",
312
+ "wms.backend.inventory.cycleCount.form.schedulePlaceholder": "Elegir fecha y hora",
313
+ "wms.backend.inventory.cycleCount.form.setupNotes": "Notas",
314
+ "wms.backend.inventory.cycleCount.form.setupNotesPlaceholder": "Opcional — instrucciones previas al conteo",
315
+ "wms.backend.inventory.cycleCount.form.toBin": "Hasta bin",
316
+ "wms.backend.inventory.cycleCount.form.toBinPlaceholder": "Bin final",
317
+ "wms.backend.inventory.cycleCount.form.variant": "Variante / SKU",
318
+ "wms.backend.inventory.cycleCount.form.variantPlaceholder": "Buscar variante o SKU",
319
+ "wms.backend.inventory.cycleCount.form.variantScanPlaceholder": "Seleccione una variante para comenzar el escaneo",
320
+ "wms.backend.inventory.cycleCount.form.warehouse": "Almacén",
321
+ "wms.backend.inventory.cycleCount.form.warehousePlaceholder": "Seleccionar almacén",
322
+ "wms.backend.inventory.cycleCount.form.zone": "Zona",
323
+ "wms.backend.inventory.cycleCount.form.zonePlaceholder": "Seleccionar zona",
324
+ "wms.backend.inventory.cycleCount.form.zonePlaceholderDisabled": "Seleccione primero un almacén",
325
+ "wms.backend.inventory.cycleCount.form.zoneScopeHint": "{warehouse} · {expectedSkus} SKU · {binCount} bins en el ámbito",
326
+ "wms.backend.inventory.cycleCount.form.zoneSelectWarehouse": "Seleccione un almacén para elegir una zona.",
327
+ "wms.backend.inventory.cycleCount.form.zoneWarehouseHint": "Zona funcional dentro de {warehouse}",
328
+ "wms.backend.inventory.cycleCount.review.commitSummary.movement": "{delta} neto · 1 escritura en el libro mayor",
329
+ "wms.backend.inventory.cycleCount.review.commitSummary.noMovement": "Sin movimiento · libro mayor sin cambios",
330
+ "wms.backend.inventory.cycleCount.review.commitSummary.ready": "Listo",
331
+ "wms.backend.inventory.cycleCount.review.commitSummary.title": "Resumen de confirmación",
332
+ "wms.backend.inventory.cycleCount.review.counted": "Contado",
333
+ "wms.backend.inventory.cycleCount.review.matches": "Coincide",
334
+ "wms.backend.inventory.cycleCount.review.matchesNone": "Sin coincidencia",
335
+ "wms.backend.inventory.cycleCount.review.matchesWithinTolerance": "Dentro de la tolerancia",
336
+ "wms.backend.inventory.cycleCount.review.noVariance": "Los conteos coinciden con el libro mayor. La publicación no creará un movimiento.",
337
+ "wms.backend.inventory.cycleCount.review.progress.loading": "Actualizando saldo…",
338
+ "wms.backend.inventory.cycleCount.review.progress.match": "Coincidencia",
339
+ "wms.backend.inventory.cycleCount.review.progress.summary": "Sistema {system} · Contado {counted}",
340
+ "wms.backend.inventory.cycleCount.review.progress.title": "Progreso",
341
+ "wms.backend.inventory.cycleCount.review.system": "Existente del sistema",
342
+ "wms.backend.inventory.cycleCount.review.totalCounted": "Total contado",
343
+ "wms.backend.inventory.cycleCount.review.totalCountedSummary": "{counted} unidades · {location} · {variant}",
344
+ "wms.backend.inventory.cycleCount.review.variance": "Delta de ajuste",
345
+ "wms.backend.inventory.cycleCount.review.varianceDetail": "Desviación",
346
+ "wms.backend.inventory.cycleCount.review.varianceLine": "Contado {counted} vs esperado {expected} · {delta}",
347
+ "wms.backend.inventory.cycleCount.review.variances": "Desviaciones",
348
+ "wms.backend.inventory.cycleCount.review.variancesNone": "Ninguno",
349
+ "wms.backend.inventory.cycleCount.steps.back": "Atrás",
350
+ "wms.backend.inventory.cycleCount.steps.counting.finish": "Finalizar sesión ({count})",
351
+ "wms.backend.inventory.cycleCount.steps.counting.finishComplete": "Cerrar sesión",
352
+ "wms.backend.inventory.cycleCount.steps.counting.finishConfirm": "Confirmar cierre",
353
+ "wms.backend.inventory.cycleCount.steps.counting.finishTooltip": "{count} línea(s) ya confirmada(s) — haga clic para cerrar sin perderlas",
354
+ "wms.backend.inventory.cycleCount.steps.counting.finishWarning": "{remaining} artículo(s) aún en alcance — confirmar para terminar antes.",
355
+ "wms.backend.inventory.cycleCount.steps.counting.progressSkus": "{posted} / {expected} SKUs contados",
356
+ "wms.backend.inventory.cycleCount.steps.counting.queueComplete": "Todos los {total} artículos contados — sesión completa",
357
+ "wms.backend.inventory.cycleCount.steps.counting.queueEmpty": "No se encontraron artículos en el rango — ingrese la ubicación manualmente.",
358
+ "wms.backend.inventory.cycleCount.steps.counting.queueError": "Error al cargar el alcance — ingrese la ubicación manualmente.",
359
+ "wms.backend.inventory.cycleCount.steps.counting.queueItem": "Artículo {current} de {total}",
360
+ "wms.backend.inventory.cycleCount.steps.counting.queueLoading": "Cargando alcance de conteo…",
361
+ "wms.backend.inventory.cycleCount.steps.counting.shortcut": "para continuar",
362
+ "wms.backend.inventory.cycleCount.steps.counting.submit": "Revisar desviaciones",
363
+ "wms.backend.inventory.cycleCount.steps.counting.subtitle": "Paso 2 de 3 · Escanear y contar artículos",
364
+ "wms.backend.inventory.cycleCount.steps.counting.subtitleWithPosted": "Paso 2 de 3 · {count} línea(s) registrada(s) — contar siguiente SKU",
365
+ "wms.backend.inventory.cycleCount.steps.review.shortcut": "para confirmar",
366
+ "wms.backend.inventory.cycleCount.steps.review.submit": "Commit count",
367
+ "wms.backend.inventory.cycleCount.steps.review.subtitle": "Paso 3 de 3 · Revisar desviaciones y confirmar",
368
+ "wms.backend.inventory.cycleCount.steps.setup.shortcut": "para iniciar",
369
+ "wms.backend.inventory.cycleCount.steps.setup.submit": "Iniciar conteo",
370
+ "wms.backend.inventory.cycleCount.steps.setup.subtitle": "Paso 1 de 3 · Definir ámbito y expectativas",
371
+ "wms.backend.inventory.errors.balances": "No se pudieron cargar los saldos.",
372
+ "wms.backend.inventory.errors.movements": "No se pudieron cargar los movimientos.",
373
+ "wms.backend.inventory.errors.reservations": "No se pudieron cargar las reservas.",
374
+ "wms.backend.inventory.import.actions.apply": "Aplicar importación",
375
+ "wms.backend.inventory.import.actions.applying": "Importando…",
376
+ "wms.backend.inventory.import.actions.autoMap": "Mapeo automático",
377
+ "wms.backend.inventory.import.actions.back": "Atrás",
378
+ "wms.backend.inventory.import.actions.cancel": "Cancelar",
379
+ "wms.backend.inventory.import.actions.chooseDifferent": "Elegir otro archivo",
380
+ "wms.backend.inventory.import.actions.chooseFile": "Elegir archivo CSV",
381
+ "wms.backend.inventory.import.actions.hideDetails": "Ocultar detalles",
382
+ "wms.backend.inventory.import.actions.importRows": "Importar {count} filas",
383
+ "wms.backend.inventory.import.actions.next": "Siguiente",
384
+ "wms.backend.inventory.import.actions.template": "Descargar plantilla",
385
+ "wms.backend.inventory.import.actions.validate": "Validar",
386
+ "wms.backend.inventory.import.actions.validating": "Validando…",
387
+ "wms.backend.inventory.import.actions.viewDetails": "Ver detalles →",
388
+ "wms.backend.inventory.import.columns.delta": "Delta",
389
+ "wms.backend.inventory.import.columns.issues": "Problemas",
390
+ "wms.backend.inventory.import.columns.location": "Ubicación",
391
+ "wms.backend.inventory.import.columns.row": "Fila",
392
+ "wms.backend.inventory.import.columns.sku": "SKU",
393
+ "wms.backend.inventory.import.columns.status": "Estado",
394
+ "wms.backend.inventory.import.defaultReason": "Recibo de inventario por importación CSV",
395
+ "wms.backend.inventory.import.defaultReasonReconcile": "Saldo inicial por importación CSV",
396
+ "wms.backend.inventory.import.dialog.description": "Cargue filas de recibo, valide y luego añada las cantidades al libro mayor WMS.",
397
+ "wms.backend.inventory.import.dialog.title": "Importar CSV",
398
+ "wms.backend.inventory.import.errors.apply": "La importación falló.",
399
+ "wms.backend.inventory.import.errors.csvFileRequired": "Se requiere un archivo CSV.",
400
+ "wms.backend.inventory.import.errors.file": "Elija primero un archivo CSV.",
401
+ "wms.backend.inventory.import.errors.scope": "Seleccione el ámbito de organización antes de importar.",
402
+ "wms.backend.inventory.import.errors.validate": "La validación falló.",
403
+ "wms.backend.inventory.import.errors.validationFailed": "La validación falló.",
404
+ "wms.backend.inventory.import.flash.applied": "Importación finalizada ({applied} aplicadas, {skipped} omitidas).",
405
+ "wms.backend.inventory.import.flash.appliedPartial": "Importación finalizada con errores ({applied} aplicadas, {skipped} omitidas, {failed} fallidas).",
406
+ "wms.backend.inventory.import.flash.validated": "CSV validado — revise las filas antes de aplicar.",
407
+ "wms.backend.inventory.import.flash.validationErrors": "Corrija los errores de validación antes de aplicar.",
408
+ "wms.backend.inventory.import.mapping.csvColumn": "Columna CSV",
409
+ "wms.backend.inventory.import.mapping.fields.catalogVariantId": "catalog_variant_id",
410
+ "wms.backend.inventory.import.mapping.fields.locationCode": "location_code",
411
+ "wms.backend.inventory.import.mapping.fields.locationId": "location_id",
412
+ "wms.backend.inventory.import.mapping.fields.lotId": "lot_id",
413
+ "wms.backend.inventory.import.mapping.fields.lotNumber": "lot_number",
414
+ "wms.backend.inventory.import.mapping.fields.quantity": "quantity",
415
+ "wms.backend.inventory.import.mapping.fields.serialNumber": "serial_number",
416
+ "wms.backend.inventory.import.mapping.fields.sku": "sku",
417
+ "wms.backend.inventory.import.mapping.fields.warehouseCode": "warehouse_code",
418
+ "wms.backend.inventory.import.mapping.fields.warehouseId": "warehouse_id",
419
+ "wms.backend.inventory.import.mapping.skipColumn": "— omitir columna",
420
+ "wms.backend.inventory.import.mapping.status": "Estado",
421
+ "wms.backend.inventory.import.mapping.status.mapped": "Mapeado",
422
+ "wms.backend.inventory.import.mapping.status.skipped": "Omitido",
423
+ "wms.backend.inventory.import.mapping.summary": "{mapped} de {total} columnas mapeadas · {rows} filas detectadas",
424
+ "wms.backend.inventory.import.mapping.targetField": "Campo de destino",
425
+ "wms.backend.inventory.import.review.banner.rowIssue": "Fila {row}: {issue}",
426
+ "wms.backend.inventory.import.review.banner.title": "{count} filas se omitirán en la importación",
427
+ "wms.backend.inventory.import.review.overwriteBanner.rowDetail": "Fila {row}: {location} — {current} → {quantity} ({delta})",
428
+ "wms.backend.inventory.import.review.overwriteBanner.title": "{count} filas cambiarán los niveles de stock existentes",
429
+ "wms.backend.inventory.import.review.preview.empty": "No hay filas de vista previa disponibles.",
430
+ "wms.backend.inventory.import.review.preview.lot": "Lote",
431
+ "wms.backend.inventory.import.review.preview.qty": "Cant.",
432
+ "wms.backend.inventory.import.review.preview.title": "Vista previa · primeras 3 filas",
433
+ "wms.backend.inventory.import.review.skipDuplicates": "Omitir duplicados",
434
+ "wms.backend.inventory.import.review.skipDuplicatesHint": "Las filas duplicadas en el archivo CSV se omitirán en lugar de fallar la validación",
435
+ "wms.backend.inventory.import.review.stats.columns": "Columnas mapeadas",
436
+ "wms.backend.inventory.import.review.stats.issues": "Problemas de validación",
437
+ "wms.backend.inventory.import.review.stats.rows": "Filas a importar",
438
+ "wms.backend.inventory.import.review.writeLedger": "Escribir en el libro mayor",
439
+ "wms.backend.inventory.import.review.writeLedgerHint": "Cada fila crea una entrada de auditoría en el libro mayor WMS",
440
+ "wms.backend.inventory.import.shortcut.continue": "continuar",
441
+ "wms.backend.inventory.import.shortcut.import": "para importar",
442
+ "wms.backend.inventory.import.steps.mapping.subtitle": "Paso 2 de 3 · Mapear columnas CSV a campos",
443
+ "wms.backend.inventory.import.steps.review.subtitle": "Paso 3 de 3 · Revisar e importar",
444
+ "wms.backend.inventory.import.steps.upload.subtitle": "Paso 1 de 3 · Cargar su archivo",
445
+ "wms.backend.inventory.import.summary": "{total} filas · {valid} válidas · {errors} errores · {warnings} advertencias · {skipped} omitidas",
446
+ "wms.backend.inventory.import.upload.dropzoneEmpty": "Elija archivo CSV o suéltelo aquí",
447
+ "wms.backend.inventory.import.upload.encoding": "Codificación",
448
+ "wms.backend.inventory.import.upload.encodingValue": "UTF-8 (detectado automáticamente)",
449
+ "wms.backend.inventory.import.upload.fileMeta": "{rows} filas · {size} · detectado",
450
+ "wms.backend.inventory.import.upload.format": "Formato",
451
+ "wms.backend.inventory.import.upload.formatValue": "CSV · separado por comas",
452
+ "wms.backend.inventory.import.upload.hasHeader": "La primera fila es encabezado de columna",
453
+ "wms.backend.inventory.import.upload.hasHeaderOn": "Activado — omitir primera fila al importar",
454
+ "wms.backend.inventory.import.upload.quantityHint": "La columna de cantidad se suma al stock que ya existe en ese almacén/ubicación — no es un saldo objetivo.",
455
+ "wms.backend.inventory.import.upload.reconcileMode": "Conciliar al saldo exacto",
456
+ "wms.backend.inventory.import.upload.reconcileModeHint": "El stock existente en cada ubicación se sobrescribe para coincidir exactamente con el archivo — incluida su reducción. Úselo para un inventario completo o importación de saldo inicial. Déjelo desactivado para sumar cantidades al stock existente.",
457
+ "wms.backend.inventory.import.upload.skuHint": "La columna sku debe coincidir con una variante de producto del catálogo existente en su organización. Los códigos de almacén y ubicación deben existir ya en WMS.",
458
+ "wms.backend.inventory.import.validation.catalog_variant_not_found": "Variante de catálogo no encontrada",
459
+ "wms.backend.inventory.import.validation.duplicate_of_row": "Duplicado de la fila {row}",
460
+ "wms.backend.inventory.import.validation.duplicate_row": "Fila duplicada en el archivo",
461
+ "wms.backend.inventory.import.validation.insufficient_available_for_negative_delta": "Stock disponible insuficiente para ajuste negativo",
462
+ "wms.backend.inventory.import.validation.location_not_found": "Ubicación no encontrada",
463
+ "wms.backend.inventory.import.validation.location_required": "La ubicación es obligatoria",
464
+ "wms.backend.inventory.import.validation.lot_not_found": "Lote no encontrado",
465
+ "wms.backend.inventory.import.validation.overwriting_existing_balance": "Sobrescribirá un saldo existente",
466
+ "wms.backend.inventory.import.validation.quantity_invalid": "La cantidad debe ser cero o mayor",
467
+ "wms.backend.inventory.import.validation.quantity_required": "La cantidad es obligatoria",
468
+ "wms.backend.inventory.import.validation.sku_ambiguous": "Varias variantes del catálogo comparten este SKU",
469
+ "wms.backend.inventory.import.validation.sku_not_found": "SKU no encontrado en el catálogo",
470
+ "wms.backend.inventory.import.validation.sku_required": "El SKU es obligatorio",
471
+ "wms.backend.inventory.import.validation.warehouse_not_found": "Almacén no encontrado",
472
+ "wms.backend.inventory.import.validation.warehouse_required": "El almacén es obligatorio",
473
+ "wms.backend.inventory.move.dialog.description": "Transfiera stock disponible entre ubicaciones dentro del mismo almacén.",
474
+ "wms.backend.inventory.move.dialog.shortcutSave": "para guardar",
475
+ "wms.backend.inventory.move.dialog.submit": "Mover stock",
476
+ "wms.backend.inventory.move.dialog.title": "Mover inventario",
477
+ "wms.backend.inventory.move.dialog.titlePutaway": "Guardar en la ubicación final",
478
+ "wms.backend.inventory.move.errors.insufficientAvailable": "La cantidad supera el stock disponible en la ubicación de origen.",
479
+ "wms.backend.inventory.move.errors.previewBalance": "No se pudo cargar la cantidad disponible.",
480
+ "wms.backend.inventory.move.errors.quantityPositive": "La cantidad a mover debe ser mayor que cero.",
481
+ "wms.backend.inventory.move.errors.sameLocation": "El destino debe ser distinto de la ubicación de origen.",
482
+ "wms.backend.inventory.move.errors.submit": "No se pudo mover el inventario.",
483
+ "wms.backend.inventory.move.flash.success": "Inventario movido",
484
+ "wms.backend.inventory.move.form.fromLocation": "Desde ubicación",
485
+ "wms.backend.inventory.move.form.fromLocationPlaceholder": "Seleccionar ubicación de origen",
486
+ "wms.backend.inventory.move.form.notes": "Notas",
487
+ "wms.backend.inventory.move.form.notesPlaceholder": "Opcional — contexto para auditores",
488
+ "wms.backend.inventory.move.form.quantity": "Cantidad",
489
+ "wms.backend.inventory.move.form.reason": "Motivo",
490
+ "wms.backend.inventory.move.form.reasonPlaceholder": "Seleccionar motivo",
491
+ "wms.backend.inventory.move.form.toLocation": "Hasta ubicación",
492
+ "wms.backend.inventory.move.form.toLocationPlaceholder": "Seleccionar ubicación de destino",
493
+ "wms.backend.inventory.move.form.variant": "Variante",
494
+ "wms.backend.inventory.move.form.variantPlaceholder": "Buscar variante o SKU",
495
+ "wms.backend.inventory.move.form.warehouse": "Almacén",
496
+ "wms.backend.inventory.move.form.warehousePlaceholder": "Seleccionar almacén",
497
+ "wms.backend.inventory.move.preview.availableLabel": "Disponible",
498
+ "wms.backend.inventory.move.preview.capacity": "{used} / {capacity} unidades usadas · {remaining} restantes",
499
+ "wms.backend.inventory.move.preview.capacityExceeded": "Este movimiento superaría la capacidad de destino en {quantity} unidad(es).",
500
+ "wms.backend.inventory.move.preview.capacityLoading": "Cargando capacidad de destino…",
501
+ "wms.backend.inventory.move.preview.capacityUnset": "No hay límite de capacidad establecido para esta ubicación.",
502
+ "wms.backend.inventory.move.preview.destEmpty": "0 unidades (contenedor vacío)",
503
+ "wms.backend.inventory.move.preview.destLoading": "Cargando destino…",
504
+ "wms.backend.inventory.move.preview.destTitle": "Stock actual en destino",
505
+ "wms.backend.inventory.move.preview.destUnit": "unidades ya aquí",
506
+ "wms.backend.inventory.move.preview.loading": "Actualizando disponibilidad…",
507
+ "wms.backend.inventory.move.preview.title": "Disponibilidad en origen",
508
+ "wms.backend.inventory.move.reasons.consolidation": "Consolidación",
509
+ "wms.backend.inventory.move.reasons.correction": "Corrección",
510
+ "wms.backend.inventory.move.reasons.other": "Otro",
511
+ "wms.backend.inventory.move.reasons.replenishment": "Reposición",
512
+ "wms.backend.inventory.move.reasons.transfer": "Transferencia",
513
+ "wms.backend.inventory.movements.columns.locationFrom": "Origen",
514
+ "wms.backend.inventory.movements.columns.locationTo": "Destino",
515
+ "wms.backend.inventory.movements.columns.performedAt": "Realizado el",
516
+ "wms.backend.inventory.movements.columns.quantity": "Cantidad",
517
+ "wms.backend.inventory.movements.columns.referenceType": "Tipo de referencia",
518
+ "wms.backend.inventory.movements.columns.type": "Tipo",
519
+ "wms.backend.inventory.movements.columns.variant": "Variante",
520
+ "wms.backend.inventory.movements.columns.warehouse": "Almacén",
521
+ "wms.backend.inventory.movements.description": "Historial inmutable de movimientos de recibos, transferencias, ajustes y conteos cíclicos.",
522
+ "wms.backend.inventory.movements.empty.description": "Las filas de movimiento se crean mediante recibos, reservas, movimientos y acciones de conciliación.",
523
+ "wms.backend.inventory.movements.empty.title": "Sin movimientos de inventario",
524
+ "wms.backend.inventory.movements.search": "Buscar libro de movimientos",
525
+ "wms.backend.inventory.movements.title": "Libro mayor de movimientos de inventario",
526
+ "wms.backend.inventory.mutations.errors.scope": "Seleccione una organización e inicie sesión antes de registrar cambios de inventario.",
527
+ "wms.backend.inventory.nav.title": "Inventario",
528
+ "wms.backend.inventory.operations.adjust": "Ajustar inventario",
529
+ "wms.backend.inventory.operations.cycleCount": "Conteo cíclico",
530
+ "wms.backend.inventory.operations.description": "Reciba stock entrante, reserve o mueva stock, registre ajustes o ejecute un conteo cíclico.",
531
+ "wms.backend.inventory.operations.import": "Importar CSV",
532
+ "wms.backend.inventory.operations.move": "Mover stock",
533
+ "wms.backend.inventory.operations.receive": "Recibir stock",
534
+ "wms.backend.inventory.operations.reserve": "Reservar",
535
+ "wms.backend.inventory.operations.title": "Operaciones de inventario",
536
+ "wms.backend.inventory.receive.dialog.description": "Registrar la entrada de stock como un movimiento de recepción",
537
+ "wms.backend.inventory.receive.dialog.title": "Recibir mercancía",
538
+ "wms.backend.inventory.receive.errors.lot": "No se pudo resolver el lote de inventario.",
539
+ "wms.backend.inventory.receive.errors.lotRequired": "El número de lote es obligatorio para esta variante.",
540
+ "wms.backend.inventory.receive.errors.quantityPositive": "La cantidad debe ser mayor que cero.",
541
+ "wms.backend.inventory.receive.errors.serialRequired": "El número de serie es obligatorio para esta variante.",
542
+ "wms.backend.inventory.receive.errors.submit": "No se pudo recibir la mercancía.",
543
+ "wms.backend.inventory.receive.flash.success": "Mercancía recibida",
544
+ "wms.backend.inventory.receive.form.cancel": "Cancelar",
545
+ "wms.backend.inventory.receive.form.decrease": "Disminuir cantidad",
546
+ "wms.backend.inventory.receive.form.increase": "Aumentar cantidad",
547
+ "wms.backend.inventory.receive.form.location": "Ubicación",
548
+ "wms.backend.inventory.receive.form.locationPlaceholder": "Seleccionar ubicación",
549
+ "wms.backend.inventory.receive.form.lot": "Lote",
550
+ "wms.backend.inventory.receive.form.lotPlaceholder": "Seleccionar o crear lote (opcional)",
551
+ "wms.backend.inventory.receive.form.lotRequiredPlaceholder": "Introducir número de lote",
552
+ "wms.backend.inventory.receive.form.notes": "Notas",
553
+ "wms.backend.inventory.receive.form.notesPlaceholder": "Notas opcionales o número de referencia",
554
+ "wms.backend.inventory.receive.form.quantity": "Cantidad recibida",
555
+ "wms.backend.inventory.receive.form.referenceType": "Tipo de recepción",
556
+ "wms.backend.inventory.receive.form.serial": "Número de serie",
557
+ "wms.backend.inventory.receive.form.serialPlaceholder": "Opcional — para variantes con seguimiento de serie",
558
+ "wms.backend.inventory.receive.form.serialRequiredPlaceholder": "Introducir número de serie",
559
+ "wms.backend.inventory.receive.form.shortcut": "para recibir",
560
+ "wms.backend.inventory.receive.form.submit": "Recibir",
561
+ "wms.backend.inventory.receive.form.submitting": "Recibiendo…",
562
+ "wms.backend.inventory.receive.form.variant": "Variante",
563
+ "wms.backend.inventory.receive.form.variantPlaceholder": "Buscar variante o SKU",
564
+ "wms.backend.inventory.receive.form.warehouse": "Almacén",
565
+ "wms.backend.inventory.receive.form.warehousePlaceholder": "Seleccionar almacén",
566
+ "wms.backend.inventory.receive.referenceTypes.manual": "Recepción manual",
567
+ "wms.backend.inventory.receive.referenceTypes.po": "Orden de compra",
568
+ "wms.backend.inventory.receive.referenceTypes.qc": "Liberación QC",
569
+ "wms.backend.inventory.receive.referenceTypes.rma": "RMA / devolución",
570
+ "wms.backend.inventory.receive.referenceTypes.so": "Devolución de venta",
571
+ "wms.backend.inventory.receive.referenceTypes.transfer": "Transferencia",
572
+ "wms.backend.inventory.referenceTypes.manual": "Manual",
573
+ "wms.backend.inventory.referenceTypes.po": "Orden de compra",
574
+ "wms.backend.inventory.referenceTypes.qc": "Control de calidad",
575
+ "wms.backend.inventory.referenceTypes.rma": "RMA",
576
+ "wms.backend.inventory.referenceTypes.so": "Pedido de venta",
577
+ "wms.backend.inventory.referenceTypes.transfer": "Transferencia",
578
+ "wms.backend.inventory.release.dialog.description": "Devuelva la cantidad reservada al stock disponible para este contenedor.",
579
+ "wms.backend.inventory.release.dialog.shortcutSave": "para confirmar",
580
+ "wms.backend.inventory.release.dialog.submit": "Liberar reserva",
581
+ "wms.backend.inventory.release.dialog.title": "Liberar reserva",
582
+ "wms.backend.inventory.release.errors.balanceIntegrityViolation": "Error de integridad de saldo — ejecute \"mercato wms verify-balances --repair\" para diagnosticar y corregir la desviación antes de reintentar.",
583
+ "wms.backend.inventory.release.errors.submit": "No se pudo liberar la reserva.",
584
+ "wms.backend.inventory.release.flash.success": "Reserva liberada",
585
+ "wms.backend.inventory.release.form.notes": "Notas",
586
+ "wms.backend.inventory.release.form.notesPlaceholder": "Opcional — contexto adicional",
587
+ "wms.backend.inventory.release.form.reason": "Motivo",
588
+ "wms.backend.inventory.release.form.reasonPlaceholder": "Seleccionar motivo",
589
+ "wms.backend.inventory.release.reasons.correction": "Corrección",
590
+ "wms.backend.inventory.release.reasons.manual_release": "Liberación manual",
591
+ "wms.backend.inventory.release.reasons.order_cancelled": "Pedido cancelado",
592
+ "wms.backend.inventory.release.reasons.other": "Otro",
593
+ "wms.backend.inventory.release.summary.quantity": "Cantidad",
594
+ "wms.backend.inventory.release.summary.source": "Origen",
595
+ "wms.backend.inventory.release.summary.variant": "Variante",
596
+ "wms.backend.inventory.release.summary.warehouse": "Almacén",
597
+ "wms.backend.inventory.release.warning": "Esta acción no se puede deshacer — la cantidad reservada se liberará de inmediato.",
598
+ "wms.backend.inventory.reservationStatuses.active": "Activo",
599
+ "wms.backend.inventory.reservationStatuses.fulfilled": "Cumplido",
600
+ "wms.backend.inventory.reservationStatuses.released": "Liberado",
601
+ "wms.backend.inventory.reservations.actions.allocate": "Asignar",
602
+ "wms.backend.inventory.reservations.actions.release": "Liberar",
603
+ "wms.backend.inventory.reservations.columns.quantity": "Cantidad",
604
+ "wms.backend.inventory.reservations.columns.sourceId": "Origen",
605
+ "wms.backend.inventory.reservations.columns.sourceType": "Tipo de origen",
606
+ "wms.backend.inventory.reservations.columns.status": "Estado",
607
+ "wms.backend.inventory.reservations.columns.variant": "Variante",
608
+ "wms.backend.inventory.reservations.columns.warehouse": "Almacén",
609
+ "wms.backend.inventory.reservations.description": "Registros de reserva activos e históricos creados por llamadas API manuales o automatización del ciclo de ventas.",
610
+ "wms.backend.inventory.reservations.empty.description": "Las reservas muestran stock comprometido con pedidos, transferencias o retenciones manuales.",
611
+ "wms.backend.inventory.reservations.empty.title": "Sin reservas",
612
+ "wms.backend.inventory.reservations.filter.activeOnly": "Solo activas",
613
+ "wms.backend.inventory.reservations.filter.showAll": "Mostrar todo",
614
+ "wms.backend.inventory.reservations.search": "Buscar reservas",
615
+ "wms.backend.inventory.reservations.title": "Reservas de inventario",
616
+ "wms.backend.inventory.reserve.cancel": "Cancelar",
617
+ "wms.backend.inventory.reserve.description": "Comprometer stock del inventario disponible. El sistema asigna según la estrategia de rotación configurada.",
618
+ "wms.backend.inventory.reserve.errors.failed": "Error al reservar el inventario.",
619
+ "wms.backend.inventory.reserve.errors.insufficientStock": "No hay suficiente stock disponible para completar esta reserva.",
620
+ "wms.backend.inventory.reserve.errors.lotRequired": "Seleccione un lote para esta variante.",
621
+ "wms.backend.inventory.reserve.errors.quantityInvalid": "Ingrese una cantidad positiva.",
622
+ "wms.backend.inventory.reserve.errors.serialRequired": "Introduzca un número de serie para esta variante.",
623
+ "wms.backend.inventory.reserve.errors.variantRequired": "Seleccione una variante.",
624
+ "wms.backend.inventory.reserve.errors.warehouseRequired": "Seleccione un almacén.",
625
+ "wms.backend.inventory.reserve.fields.lot": "Lote (opcional)",
626
+ "wms.backend.inventory.reserve.fields.lotPlaceholder": "Cualquier lote (el sistema selecciona)…",
627
+ "wms.backend.inventory.reserve.fields.lotRequiredPlaceholder": "Seleccionar lote…",
628
+ "wms.backend.inventory.reserve.fields.quantity": "Cantidad",
629
+ "wms.backend.inventory.reserve.fields.serial": "Número de serie",
630
+ "wms.backend.inventory.reserve.fields.serialPlaceholder": "Introducir número de serie…",
631
+ "wms.backend.inventory.reserve.fields.sourceType": "Tipo de reserva",
632
+ "wms.backend.inventory.reserve.fields.variant": "Variante / SKU",
633
+ "wms.backend.inventory.reserve.fields.variantPlaceholder": "Buscar SKU o nombre…",
634
+ "wms.backend.inventory.reserve.fields.warehouse": "Almacén",
635
+ "wms.backend.inventory.reserve.fields.warehousePlaceholder": "Seleccionar almacén…",
636
+ "wms.backend.inventory.reserve.sourceType.manual": "Retención manual",
637
+ "wms.backend.inventory.reserve.sourceType.order": "Pedido",
638
+ "wms.backend.inventory.reserve.sourceType.transfer": "Transferencia",
639
+ "wms.backend.inventory.reserve.submit": "Reservar",
640
+ "wms.backend.inventory.reserve.submitting": "Reservando…",
641
+ "wms.backend.inventory.reserve.success": "Reserva creada correctamente.",
642
+ "wms.backend.inventory.reserve.title": "Reservar inventario",
643
+ "wms.backend.inventory.sourceTypes.manual": "Manual",
644
+ "wms.backend.inventory.sourceTypes.order": "Pedido de venta",
645
+ "wms.backend.inventory.sourceTypes.transfer": "Transferencia",
646
+ "wms.backend.location.actions.adjust": "Ajustar stock",
647
+ "wms.backend.location.actions.backToLocations": "Volver a ubicaciones",
648
+ "wms.backend.location.activity.columns.details": "Detalles",
649
+ "wms.backend.location.activity.columns.event": "Evento",
650
+ "wms.backend.location.activity.columns.location": "Ubicación",
651
+ "wms.backend.location.activity.columns.time": "Hora",
652
+ "wms.backend.location.activity.empty": "No hay movimientos recientes para esta ubicación.",
653
+ "wms.backend.location.activity.title": "Actividad reciente",
654
+ "wms.backend.location.activity.types.adjust": "Ajustar",
655
+ "wms.backend.location.activity.types.cycle_count": "Conciliar",
656
+ "wms.backend.location.activity.types.pack": "Asignar",
657
+ "wms.backend.location.activity.types.pick": "Asignar",
658
+ "wms.backend.location.activity.types.putaway": "Ubicación",
659
+ "wms.backend.location.activity.types.receipt": "Recibir",
660
+ "wms.backend.location.activity.types.return_receive": "Recibir",
661
+ "wms.backend.location.activity.types.ship": "Enviar",
662
+ "wms.backend.location.activity.types.transfer": "Mover",
663
+ "wms.backend.location.activity.viewAll": "Ver todos los movimientos →",
664
+ "wms.backend.location.detail.breadcrumb": "Ubicación",
665
+ "wms.backend.location.detail.pageTitle": "Vista de ubicación",
666
+ "wms.backend.location.errors.balances": "No se pudieron cargar los artículos en la ubicación.",
667
+ "wms.backend.location.errors.invalidId": "Identificador de ubicación no válido.",
668
+ "wms.backend.location.errors.load": "No se pudo cargar la vista de ubicación.",
669
+ "wms.backend.location.errors.location": "No se pudo cargar la ubicación.",
670
+ "wms.backend.location.errors.lots": "No se pudieron cargar los lotes.",
671
+ "wms.backend.location.errors.movements": "No se pudo cargar la actividad reciente.",
672
+ "wms.backend.location.errors.notFound": "Ubicación no encontrada.",
673
+ "wms.backend.location.header.active": "Activo",
674
+ "wms.backend.location.header.inactive": "Inactivo",
675
+ "wms.backend.location.header.lastCounted": "Último conteo {when}",
676
+ "wms.backend.location.header.neverCounted": "Nunca contado",
677
+ "wms.backend.location.header.zone": "Zona {code}",
678
+ "wms.backend.location.items.actions.adjustSelected": "Adjust selected",
679
+ "wms.backend.location.items.actions.cycleCountZone": "Conteo cíclico de zona",
680
+ "wms.backend.location.items.actions.exportCsv": "Exportar CSV",
681
+ "wms.backend.location.items.columns.lot": "Lote",
682
+ "wms.backend.location.items.columns.onHand": "En existencia",
683
+ "wms.backend.location.items.columns.reserved": "Reservado",
684
+ "wms.backend.location.items.columns.select": "Seleccionar",
685
+ "wms.backend.location.items.columns.sku": "SKU",
686
+ "wms.backend.location.items.columns.status": "Estado",
687
+ "wms.backend.location.items.columns.variant": "Nombre de variante",
688
+ "wms.backend.location.items.empty.description": "Pruebe otro filtro o registre inventario mediante recibos o ajustes.",
689
+ "wms.backend.location.items.empty.title": "Sin artículos en esta vista",
690
+ "wms.backend.location.items.filters.all": "Todos los artículos",
691
+ "wms.backend.location.items.filters.nearExpiry": "Próximo a caducar",
692
+ "wms.backend.location.items.filters.picking": "Preparación",
693
+ "wms.backend.location.items.filters.sellable": "Vendible",
694
+ "wms.backend.location.items.footer.showing": "Mostrando {shown} de {total} artículos",
695
+ "wms.backend.location.items.footer.viewAll": "Ver todos los artículos →",
696
+ "wms.backend.location.items.status.available": "Disponible",
697
+ "wms.backend.location.items.status.expired": "Caducado",
698
+ "wms.backend.location.items.status.lowStock": "Stock bajo",
699
+ "wms.backend.location.items.status.nearExpiry": "Próximo a caducar",
700
+ "wms.backend.location.items.status.reserved": "Reservado",
701
+ "wms.backend.location.items.title": "Artículos en esta ubicación",
702
+ "wms.backend.location.kpis.activeLots.badge": "{count} lotes",
703
+ "wms.backend.location.kpis.activeLots.caption": "Lotes con cantidad en existencia",
704
+ "wms.backend.location.kpis.activeLots.cta": "Ver artículos",
705
+ "wms.backend.location.kpis.activeLots.title": "Lotes activos",
706
+ "wms.backend.location.kpis.capacityUsed.badgeHigh": "Cerca del límite",
707
+ "wms.backend.location.kpis.capacityUsed.badgeOk": "Dentro de la capacidad",
708
+ "wms.backend.location.kpis.capacityUsed.caption": "En existencia vs capacidad de ubicación",
709
+ "wms.backend.location.kpis.capacityUsed.cta": "Editar ubicación",
710
+ "wms.backend.location.kpis.capacityUsed.title": "Capacidad utilizada",
711
+ "wms.backend.location.kpis.lastCounted.badgeNever": "Nunca",
712
+ "wms.backend.location.kpis.lastCounted.badgeRecent": "Reciente",
713
+ "wms.backend.location.kpis.lastCounted.badgeStale": "Próximo a vencer",
714
+ "wms.backend.location.kpis.lastCounted.caption": "Conteo cíclico más reciente",
715
+ "wms.backend.location.kpis.lastCounted.cta": "Iniciar conteo cíclico",
716
+ "wms.backend.location.kpis.lastCounted.daysAgo": "hace {days} d",
717
+ "wms.backend.location.kpis.lastCounted.title": "Último conteo",
718
+ "wms.backend.location.kpis.lastCounted.today": "Hoy",
719
+ "wms.backend.location.kpis.pendingPicks.badge": "{count} unidades",
720
+ "wms.backend.location.kpis.pendingPicks.caption": "Unidades reservadas y asignadas",
721
+ "wms.backend.location.kpis.pendingPicks.cta": "Ver reservas",
722
+ "wms.backend.location.kpis.pendingPicks.title": "Picks pendientes",
723
+ "wms.backend.location.kpis.skusOccupied.badge": "{count} activos",
724
+ "wms.backend.location.kpis.skusOccupied.caption": "Variantes distintas con stock",
725
+ "wms.backend.location.kpis.skusOccupied.cta": "Ver artículos",
726
+ "wms.backend.location.kpis.skusOccupied.title": "SKU ocupados",
727
+ "wms.backend.location.loading": "Cargando vista de ubicación…",
728
+ "wms.backend.location.quickActions.adjust": "Ajustar inventario",
729
+ "wms.backend.location.quickActions.cycleCount": "Conteo cíclico",
730
+ "wms.backend.location.quickActions.description": "Ejecute acciones comunes de inventario sin salir de esta vista de ubicación",
731
+ "wms.backend.location.quickActions.move": "Mover stock",
732
+ "wms.backend.location.quickActions.openLedger": "Abrir libro mayor",
733
+ "wms.backend.location.quickActions.title": "Acciones rápidas",
734
+ "wms.backend.location.types.aisle": "Pasillo",
735
+ "wms.backend.location.types.bin": "Bin",
736
+ "wms.backend.location.types.dock": "Muelle",
737
+ "wms.backend.location.types.rack": "Estantería",
738
+ "wms.backend.location.types.slot": "Ranura",
739
+ "wms.backend.location.types.staging": "Preparación",
740
+ "wms.backend.location.types.zone": "Zona",
741
+ "wms.backend.locations.nav.title": "Ubicaciones",
742
+ "wms.backend.lot.actions.adjust": "Ajustar stock",
743
+ "wms.backend.lot.actions.backToLots": "Volver a lotes",
744
+ "wms.backend.lot.activity.columns.details": "Detalles",
745
+ "wms.backend.lot.activity.columns.event": "Evento",
746
+ "wms.backend.lot.activity.columns.location": "Ubicación",
747
+ "wms.backend.lot.activity.columns.time": "Hora",
748
+ "wms.backend.lot.activity.empty": "No hay movimientos recientes para este lote.",
749
+ "wms.backend.lot.activity.title": "Actividad reciente",
750
+ "wms.backend.lot.activity.titles.adjusted": "Ajustado {quantity}× {lot}",
751
+ "wms.backend.lot.activity.titles.allocated": "Asignado {quantity}× {lot}",
752
+ "wms.backend.lot.activity.titles.generic": "{type} {quantity}× {lot}",
753
+ "wms.backend.lot.activity.titles.moved": "Movido {quantity}× {lot}",
754
+ "wms.backend.lot.activity.titles.received": "Recibido {quantity}× {lot}",
755
+ "wms.backend.lot.activity.titles.reconciled": "Conteo cíclico de {lot}",
756
+ "wms.backend.lot.activity.types.adjust": "Ajustar",
757
+ "wms.backend.lot.activity.types.cycle_count": "Conciliar",
758
+ "wms.backend.lot.activity.types.pack": "Asignar",
759
+ "wms.backend.lot.activity.types.pick": "Asignar",
760
+ "wms.backend.lot.activity.types.putaway": "Ubicación",
761
+ "wms.backend.lot.activity.types.receipt": "Recibir",
762
+ "wms.backend.lot.activity.types.return_receive": "Recibir",
763
+ "wms.backend.lot.activity.types.ship": "Enviar",
764
+ "wms.backend.lot.activity.types.transfer": "Mover",
765
+ "wms.backend.lot.activity.viewAll": "Ver todos los movimientos →",
766
+ "wms.backend.lot.changeStatus.dialog.description": "Actualice el estado de calidad/retención de este lote. El cambio se registra de inmediato.",
767
+ "wms.backend.lot.changeStatus.dialog.title": "Cambiar estado del lote",
768
+ "wms.backend.lot.changeStatus.errors.submit": "No se pudo actualizar el estado del lote.",
769
+ "wms.backend.lot.changeStatus.flash.success": "Estado del lote actualizado",
770
+ "wms.backend.lot.changeStatus.form.cancel": "Cancelar",
771
+ "wms.backend.lot.changeStatus.form.notes": "Notas",
772
+ "wms.backend.lot.changeStatus.form.notesPlaceholder": "Motivo opcional del cambio de estado",
773
+ "wms.backend.lot.changeStatus.form.shortcut": "para guardar",
774
+ "wms.backend.lot.changeStatus.form.status": "Nuevo estado",
775
+ "wms.backend.lot.changeStatus.form.submit": "Actualizar estado",
776
+ "wms.backend.lot.changeStatus.form.submitting": "Guardando…",
777
+ "wms.backend.lot.detail.breadcrumb": "Lote",
778
+ "wms.backend.lot.detail.pageTitle": "Detalle de lote",
779
+ "wms.backend.lot.distribution.actions.adjustSelected": "Adjust selected",
780
+ "wms.backend.lot.distribution.actions.cycleCountZone": "Conteo cíclico de zona",
781
+ "wms.backend.lot.distribution.actions.exportCsv": "Exportar CSV",
782
+ "wms.backend.lot.distribution.columns.lastMove": "Último movimiento",
783
+ "wms.backend.lot.distribution.columns.location": "Ubicación",
784
+ "wms.backend.lot.distribution.columns.onHand": "En existencia",
785
+ "wms.backend.lot.distribution.columns.reserved": "Reservado",
786
+ "wms.backend.lot.distribution.columns.select": "Seleccionar",
787
+ "wms.backend.lot.distribution.columns.status": "Estado",
788
+ "wms.backend.lot.distribution.columns.warehouse": "Almacén",
789
+ "wms.backend.lot.distribution.empty.description": "Pruebe otro filtro o registre inventario mediante recibos o ajustes.",
790
+ "wms.backend.lot.distribution.empty.title": "Sin ubicaciones en esta vista",
791
+ "wms.backend.lot.distribution.filters.all": "Todas las ubicaciones",
792
+ "wms.backend.lot.distribution.filters.nearExpiry": "Próximo a caducar",
793
+ "wms.backend.lot.distribution.filters.picking": "Preparación",
794
+ "wms.backend.lot.distribution.filters.sellable": "Vendible",
795
+ "wms.backend.lot.distribution.footer.openLedger": "Abrir libro mayor para este lote →",
796
+ "wms.backend.lot.distribution.footer.showing": "Mostrando {shown} de {total} ubicaciones",
797
+ "wms.backend.lot.distribution.lastMove.daysAgo": "hace {days} días",
798
+ "wms.backend.lot.distribution.lastMove.today": "{time} hoy",
799
+ "wms.backend.lot.distribution.lastMove.yesterday": "Ayer",
800
+ "wms.backend.lot.distribution.status.available": "Disponible",
801
+ "wms.backend.lot.distribution.status.expired": "Caducado",
802
+ "wms.backend.lot.distribution.status.lowStock": "Stock bajo",
803
+ "wms.backend.lot.distribution.status.nearExpiry": "Próximo a caducar",
804
+ "wms.backend.lot.distribution.status.reserved": "Reservado",
805
+ "wms.backend.lot.distribution.title": "Dónde se encuentra este lote",
806
+ "wms.backend.lot.errors.balances": "No se pudieron cargar las ubicaciones del lote.",
807
+ "wms.backend.lot.errors.invalidId": "Identificador de lote no válido.",
808
+ "wms.backend.lot.errors.load": "No se pudo cargar la vista de lote.",
809
+ "wms.backend.lot.errors.lot": "No se pudo cargar el lote.",
810
+ "wms.backend.lot.errors.movements": "No se pudo cargar la actividad reciente.",
811
+ "wms.backend.lot.errors.notFound": "Lote no encontrado.",
812
+ "wms.backend.lot.errors.profile": "No se pudo cargar el perfil de inventario.",
813
+ "wms.backend.lot.errors.variant": "No se pudo cargar el SKU.",
814
+ "wms.backend.lot.errors.warehouses": "No se pudieron cargar los almacenes.",
815
+ "wms.backend.lot.filters.allWarehouses": "Todos los almacenes",
816
+ "wms.backend.lot.header.daysRemaining": "{days} días restantes",
817
+ "wms.backend.lot.header.expires": "Cad. {date}",
818
+ "wms.backend.lot.header.received": "Recibido {date}",
819
+ "wms.backend.lot.kpis.daysToExpiry.badgeOk": "Dentro del plazo",
820
+ "wms.backend.lot.kpis.daysToExpiry.badgeSoon": "Caduca pronto",
821
+ "wms.backend.lot.kpis.daysToExpiry.caption": "Hasta la fecha de caducidad",
822
+ "wms.backend.lot.kpis.daysToExpiry.cta": "Ver perfil de SKU",
823
+ "wms.backend.lot.kpis.daysToExpiry.title": "Días hasta caducidad",
824
+ "wms.backend.lot.kpis.lotAge.badgeAged": "Stock envejecido",
825
+ "wms.backend.lot.kpis.lotAge.badgeFresh": "Lote fresco",
826
+ "wms.backend.lot.kpis.lotAge.caption": "Desde que se creó el lote",
827
+ "wms.backend.lot.kpis.lotAge.cta": "Ver movimientos",
828
+ "wms.backend.lot.kpis.lotAge.title": "Antigüedad del lote",
829
+ "wms.backend.lot.kpis.lotAge.value": "{days} d",
830
+ "wms.backend.lot.kpis.onHand.badge": "{count} unidades",
831
+ "wms.backend.lot.kpis.onHand.caption": "Cantidad física de este lote",
832
+ "wms.backend.lot.kpis.onHand.cta": "Ver ubicaciones",
833
+ "wms.backend.lot.kpis.onHand.title": "Total en existencia",
834
+ "wms.backend.lot.kpis.qualityStatus.caption": "Estado de retención y QC del lote",
835
+ "wms.backend.lot.kpis.qualityStatus.cta": "Edit lot profile",
836
+ "wms.backend.lot.kpis.qualityStatus.notesCaption": "Nota: {notes}",
837
+ "wms.backend.lot.kpis.qualityStatus.title": "Estado de calidad",
838
+ "wms.backend.lot.kpis.reserved.badge": "{count} unidades retenidas",
839
+ "wms.backend.lot.kpis.reserved.caption": "Comprometido desde este lote",
840
+ "wms.backend.lot.kpis.reserved.cta": "Ver reservas",
841
+ "wms.backend.lot.kpis.reserved.title": "Reservado",
842
+ "wms.backend.lot.loading": "Cargando vista de lote…",
843
+ "wms.backend.lot.quickActions.adjust": "Ajustar inventario",
844
+ "wms.backend.lot.quickActions.cycleCount": "Conteo cíclico",
845
+ "wms.backend.lot.quickActions.description": "Ejecute acciones comunes de inventario sin salir de esta vista de lote",
846
+ "wms.backend.lot.quickActions.move": "Mover stock",
847
+ "wms.backend.lot.quickActions.openLedger": "Abrir libro mayor",
848
+ "wms.backend.lot.quickActions.title": "Acciones rápidas",
849
+ "wms.backend.lot.status.available": "Disponible",
850
+ "wms.backend.lot.status.expired": "Caducado",
851
+ "wms.backend.lot.status.hold": "Hold",
852
+ "wms.backend.lot.status.nearExpiry": "Próximo a caducar",
853
+ "wms.backend.lot.status.quarantine": "Cuarentena",
854
+ "wms.backend.lots.actions.changeStatus": "Cambiar estado",
855
+ "wms.backend.lots.actions.move": "Mover",
856
+ "wms.backend.lots.columns.expiresAt": "Caduca",
857
+ "wms.backend.lots.columns.lotNumber": "Número de lote",
858
+ "wms.backend.lots.columns.sku": "SKU",
859
+ "wms.backend.lots.columns.status": "Estado",
860
+ "wms.backend.lots.description.all": "Explore registros de lotes y tandas con contexto de caducidad.",
861
+ "wms.backend.lots.description.expiringSoon": "Lotes que caducan en los próximos 30 días en el ámbito de almacén seleccionado.",
862
+ "wms.backend.lots.description.pastDue": "Lotes pasada su fecha de caducidad con stock en existencia en el ámbito de almacén seleccionado.",
863
+ "wms.backend.lots.empty.description": "Ajuste filtros o cree lotes mediante operaciones de inventario.",
864
+ "wms.backend.lots.empty.importCsv": "Importar CSV",
865
+ "wms.backend.lots.empty.receive": "Recibir stock",
866
+ "wms.backend.lots.empty.title": "No se encontraron lotes",
867
+ "wms.backend.lots.errors.load": "No se pudieron cargar los lotes.",
868
+ "wms.backend.lots.loading": "Cargando lotes…",
869
+ "wms.backend.lots.nav.title": "Lotes",
870
+ "wms.backend.lots.search": "Buscar lotes",
871
+ "wms.backend.lots.title.all": "Lotes de inventario",
872
+ "wms.backend.lots.title.expiringSoon": "Lotes que caducan pronto",
873
+ "wms.backend.lots.title.pastDue": "Lotes vencidos",
874
+ "wms.backend.movements.nav.title": "Movimientos",
875
+ "wms.backend.nav.title": "WMS",
876
+ "wms.backend.reservations.nav.title": "Reservas",
877
+ "wms.backend.sku.actions.adjust": "Ajustar stock",
878
+ "wms.backend.sku.actions.backToInventory": "Volver a inventario",
879
+ "wms.backend.sku.activity.columns.details": "Detalles",
880
+ "wms.backend.sku.activity.columns.event": "Evento",
881
+ "wms.backend.sku.activity.columns.location": "Ubicación",
882
+ "wms.backend.sku.activity.columns.time": "Hora",
883
+ "wms.backend.sku.activity.empty": "No hay movimientos recientes para este SKU.",
884
+ "wms.backend.sku.activity.title": "Actividad reciente",
885
+ "wms.backend.sku.activity.types.adjust": "Ajustar",
886
+ "wms.backend.sku.activity.types.cycle_count": "Conciliar",
887
+ "wms.backend.sku.activity.types.pack": "Asignar",
888
+ "wms.backend.sku.activity.types.pick": "Asignar",
889
+ "wms.backend.sku.activity.types.putaway": "Ubicación",
890
+ "wms.backend.sku.activity.types.receipt": "Recibir",
891
+ "wms.backend.sku.activity.types.return_receive": "Recibir",
892
+ "wms.backend.sku.activity.types.ship": "Enviar",
893
+ "wms.backend.sku.activity.types.transfer": "Mover",
894
+ "wms.backend.sku.activity.viewAll": "Ver todos los movimientos →",
895
+ "wms.backend.sku.detail.breadcrumb": "SKU",
896
+ "wms.backend.sku.detail.pageTitle": "Detalle de SKU",
897
+ "wms.backend.sku.distribution.actions.adjustSelected": "Adjust selected",
898
+ "wms.backend.sku.distribution.actions.cycleCountZone": "Conteo cíclico de zona",
899
+ "wms.backend.sku.distribution.actions.exportCsv": "Exportar CSV",
900
+ "wms.backend.sku.distribution.columns.location": "Ubicación",
901
+ "wms.backend.sku.distribution.columns.lot": "Lote",
902
+ "wms.backend.sku.distribution.columns.onHand": "En existencia",
903
+ "wms.backend.sku.distribution.columns.reserved": "Reservado",
904
+ "wms.backend.sku.distribution.columns.select": "Seleccionar",
905
+ "wms.backend.sku.distribution.columns.status": "Estado",
906
+ "wms.backend.sku.distribution.columns.warehouse": "Almacén",
907
+ "wms.backend.sku.distribution.empty.description": "Pruebe otro filtro o registre inventario mediante recibos o ajustes.",
908
+ "wms.backend.sku.distribution.empty.title": "Sin ubicaciones en esta vista",
909
+ "wms.backend.sku.distribution.filters.all": "Todos los bins",
910
+ "wms.backend.sku.distribution.filters.nearExpiry": "Próximo a caducar",
911
+ "wms.backend.sku.distribution.filters.picking": "Preparación",
912
+ "wms.backend.sku.distribution.filters.sellable": "Vendible",
913
+ "wms.backend.sku.distribution.footer.showing": "Mostrando {shown} de {total} ubicaciones",
914
+ "wms.backend.sku.distribution.footer.viewAll": "Ver todas las ubicaciones →",
915
+ "wms.backend.sku.distribution.status.available": "Disponible",
916
+ "wms.backend.sku.distribution.status.expired": "Caducado",
917
+ "wms.backend.sku.distribution.status.lowStock": "Stock bajo",
918
+ "wms.backend.sku.distribution.status.nearExpiry": "Próximo a caducar",
919
+ "wms.backend.sku.distribution.status.reserved": "Reservado",
920
+ "wms.backend.sku.distribution.title": "Distribución de stock",
921
+ "wms.backend.sku.errors.balances": "No se pudo cargar la distribución de stock.",
922
+ "wms.backend.sku.errors.invalidId": "Identificador de SKU no válido.",
923
+ "wms.backend.sku.errors.load": "No se pudo cargar la vista de SKU.",
924
+ "wms.backend.sku.errors.lots": "No se pudieron cargar los lotes.",
925
+ "wms.backend.sku.errors.movements": "No se pudo cargar la actividad reciente.",
926
+ "wms.backend.sku.errors.notFound": "SKU no encontrado.",
927
+ "wms.backend.sku.errors.profile": "No se pudo cargar el perfil de inventario.",
928
+ "wms.backend.sku.errors.variant": "No se pudo cargar el SKU.",
929
+ "wms.backend.sku.errors.warehouses": "No se pudieron cargar los almacenes.",
930
+ "wms.backend.sku.filters.allWarehouses": "Todos los almacenes",
931
+ "wms.backend.sku.header.active": "Activo",
932
+ "wms.backend.sku.header.inactive": "Inactivo",
933
+ "wms.backend.sku.header.since": "SKU desde {date}",
934
+ "wms.backend.sku.kpis.available.badge": "Vendible",
935
+ "wms.backend.sku.kpis.available.badgeEmpty": "Ninguno",
936
+ "wms.backend.sku.kpis.available.caption": "Listo para asignar",
937
+ "wms.backend.sku.kpis.available.cta": "Ajustar stock",
938
+ "wms.backend.sku.kpis.available.title": "Disponible",
939
+ "wms.backend.sku.kpis.daysOfSupply.badgeShort": "Autonomía corta",
940
+ "wms.backend.sku.kpis.daysOfSupply.caption": "Basado en las salidas de los últimos {days} días",
941
+ "wms.backend.sku.kpis.daysOfSupply.cta": "Ver movimientos",
942
+ "wms.backend.sku.kpis.daysOfSupply.title": "Días de suministro",
943
+ "wms.backend.sku.kpis.onHand.badgeLow": "Por debajo del reorden",
944
+ "wms.backend.sku.kpis.onHand.caption": "Cantidad física total",
945
+ "wms.backend.sku.kpis.onHand.cta": "Ver distribución",
946
+ "wms.backend.sku.kpis.onHand.title": "En existencia",
947
+ "wms.backend.sku.kpis.reorderPoint.badgeSafety": "Seguridad {count}",
948
+ "wms.backend.sku.kpis.reorderPoint.caption": "Del perfil de inventario",
949
+ "wms.backend.sku.kpis.reorderPoint.cta": "Editar perfil",
950
+ "wms.backend.sku.kpis.reorderPoint.title": "Punto de reorden",
951
+ "wms.backend.sku.kpis.reserved.badge": "{count} unidades retenidas",
952
+ "wms.backend.sku.kpis.reserved.caption": "Comprometido con pedidos",
953
+ "wms.backend.sku.kpis.reserved.cta": "Ver reservas",
954
+ "wms.backend.sku.kpis.reserved.title": "Reservado",
955
+ "wms.backend.sku.loading": "Cargando vista de SKU…",
956
+ "wms.backend.sku.quickActions.adjust": "Ajustar inventario",
957
+ "wms.backend.sku.quickActions.cycleCount": "Conteo cíclico",
958
+ "wms.backend.sku.quickActions.description": "Ejecute acciones comunes de inventario sin salir de esta vista de SKU",
959
+ "wms.backend.sku.quickActions.move": "Mover stock",
960
+ "wms.backend.sku.quickActions.openLedger": "Abrir libro mayor",
961
+ "wms.backend.sku.quickActions.receive": "Recibir stock",
962
+ "wms.backend.sku.quickActions.title": "Acciones rápidas",
963
+ "wms.backend.warehouses.nav.title": "Almacenes",
964
+ "wms.backend.zones.nav.title": "Zonas",
965
+ "wms.common.active": "Activo",
966
+ "wms.common.inactive": "Inactivo",
967
+ "wms.errors.forbidden": "Acceso denegado",
968
+ "wms.errors.forbidden.adjustInventory": "No tienes permiso para ajustar o mover inventario.",
969
+ "wms.errors.forbidden.cycleCount": "No tienes permiso para realizar conteos cíclicos.",
970
+ "wms.errors.forbidden.import": "No tienes permiso para importar inventario.",
971
+ "wms.errors.forbidden.manageInventory": "No tienes permiso para gestionar perfiles de inventario.",
972
+ "wms.errors.forbidden.manageLocations": "No tienes permiso para gestionar ubicaciones del almacén.",
973
+ "wms.errors.forbidden.manageReservations": "No tienes permiso para gestionar reservas de inventario.",
974
+ "wms.errors.forbidden.manageWarehouses": "No tienes permiso para gestionar almacenes.",
975
+ "wms.errors.forbidden.manageZones": "No tienes permiso para gestionar zonas del almacén.",
976
+ "wms.errors.forbidden.receiveInventory": "No tienes permiso para recibir inventario entrante.",
977
+ "wms.errors.internalServerError": "Error interno del servidor",
978
+ "wms.errors.unauthorized": "No autorizado",
979
+ "wms.nav.group": "WMS",
980
+ "wms.notifications.lowStock.body": "Alerta de stock bajo — disponible: {availableQuantity}, punto de reorden: {reorderPoint}, stock de seguridad: {safetyStock}",
981
+ "wms.notifications.lowStock.renderer.available": "Disponible",
982
+ "wms.notifications.lowStock.renderer.belowReorderPoint": "Por debajo del punto de reorden",
983
+ "wms.notifications.lowStock.renderer.belowSafetyStock": "Por debajo del stock de seguridad",
984
+ "wms.notifications.lowStock.renderer.reorderPoint": "Reorden",
985
+ "wms.notifications.lowStock.renderer.viewInventory": "Ver inventario",
986
+ "wms.notifications.lowStock.renderer.viewSku": "Ver SKU",
987
+ "wms.notifications.lowStock.title": "Alerta de stock bajo",
988
+ "wms.notifications.reservationShortfall.body": "El pedido {orderNumber} no pudo reservarse por completo — faltan {shortfallQuantity} de {shortfallSku} ({shortfallCount} línea(s)).",
989
+ "wms.notifications.reservationShortfall.renderer.lines": "Líneas con faltante",
990
+ "wms.notifications.reservationShortfall.renderer.order": "Pedido",
991
+ "wms.notifications.reservationShortfall.renderer.shortQty": "Faltan {quantity}",
992
+ "wms.notifications.reservationShortfall.renderer.sku": "SKU",
993
+ "wms.notifications.reservationShortfall.renderer.viewInventory": "Ver inventario",
994
+ "wms.notifications.reservationShortfall.renderer.viewOrder": "Ver pedido",
995
+ "wms.notifications.reservationShortfall.renderer.viewReservations": "Ver reservas",
996
+ "wms.notifications.reservationShortfall.title": "Faltante de reserva",
997
+ "wms.search.badge.inventoryProfile": "Perfil de inventario",
998
+ "wms.search.badge.location": "Ubicación",
999
+ "wms.search.badge.lot": "Lote de inventario",
1000
+ "wms.search.badge.warehouse": "Almacén",
1001
+ "wms.search.profile.productScoped": "Ámbito de producto",
1002
+ "wms.search.profile.variantScoped": "Ámbito de variante",
1003
+ "wms.validation.warehouse.inactivePrimary": "Los almacenes inactivos no pueden marcarse como principal.",
1004
+ "wms.validation.warehouse.primaryConflict": "Otro almacén acaba de establecerse como principal para esta organización. Vuelve a intentarlo.",
1005
+ "wms.widgets.catalog.inventoryProfile.defaultStrategy": "Estrategia de rotación",
1006
+ "wms.widgets.catalog.inventoryProfile.defaultUom": "UOM predeterminada",
1007
+ "wms.widgets.catalog.inventoryProfile.errors.defaultUomRequired": "Indique una UOM predeterminada para el perfil de inventario de WMS.",
1008
+ "wms.widgets.catalog.inventoryProfile.errors.fefoRequired": "FEFO es obligatorio cuando el seguimiento de caducidad está habilitado.",
1009
+ "wms.widgets.catalog.inventoryProfile.errors.nonNegative": "Use una cantidad no negativa.",
1010
+ "wms.widgets.catalog.inventoryProfile.errors.strategyRequired": "Seleccione una estrategia de rotación de WMS.",
1011
+ "wms.widgets.catalog.inventoryProfile.groupDescription": "Configure las reglas de seguimiento y los umbrales de reabastecimiento propios de WMS para este registro del catálogo.",
1012
+ "wms.widgets.catalog.inventoryProfile.groupLabel": "Perfil de inventario",
1013
+ "wms.widgets.catalog.inventoryProfile.manageInventory": "Gestionar inventario con WMS",
1014
+ "wms.widgets.catalog.inventoryProfile.reorderPoint": "Punto de reorden",
1015
+ "wms.widgets.catalog.inventoryProfile.safetyStock": "Stock de seguridad",
1016
+ "wms.widgets.catalog.inventoryProfile.strategy.fefo": "FEFO",
1017
+ "wms.widgets.catalog.inventoryProfile.strategy.fifo": "FIFO",
1018
+ "wms.widgets.catalog.inventoryProfile.strategy.lifo": "LIFO",
1019
+ "wms.widgets.catalog.inventoryProfile.trackExpiration": "Seguimiento de caducidad",
1020
+ "wms.widgets.catalog.inventoryProfile.trackLot": "Seguimiento de lotes",
1021
+ "wms.widgets.catalog.inventoryProfile.trackSerial": "Seguimiento de números de serie",
1022
+ "wms.widgets.sales.orderItems.stockColumn.available": "disp.",
1023
+ "wms.widgets.sales.orderItems.stockColumn.header": "Stock de almacén",
1024
+ "wms.widgets.sales.orderItems.stockColumn.loading": "…",
1025
+ "wms.widgets.sales.orderItems.stockColumn.noData": "—",
1026
+ "wms.widgets.sales.orderItems.stockColumn.reserved": "reservado",
1027
+ "wms.widgets.sales.stockContext.actions.inventory": "Abrir consola de inventario",
1028
+ "wms.widgets.sales.stockContext.actions.rerunReservation": "Volver a ejecutar reserva",
1029
+ "wms.widgets.sales.stockContext.actions.reservations": "Abrir reservas",
1030
+ "wms.widgets.sales.stockContext.assignError": "No se pudo actualizar la asignación de almacén.",
1031
+ "wms.widgets.sales.stockContext.assignSuccess": "Asignación de almacén guardada.",
1032
+ "wms.widgets.sales.stockContext.assignedWarehouse": "Almacén asignado",
1033
+ "wms.widgets.sales.stockContext.available": "Disponible",
1034
+ "wms.widgets.sales.stockContext.description": "Resumen en vivo de reservas y disponibilidad para este pedido de venta.",
1035
+ "wms.widgets.sales.stockContext.empty": "Todavía no hay un resumen de stock de WMS disponible para este pedido.",
1036
+ "wms.widgets.sales.stockContext.explicitAssignmentHint": "La asignación explícita tiene prioridad sobre el almacén derivado de reservas.",
1037
+ "wms.widgets.sales.stockContext.linesTitle": "Disponibilidad de variantes",
1038
+ "wms.widgets.sales.stockContext.releaseBtn": "Liberar",
1039
+ "wms.widgets.sales.stockContext.rerunError": "No se pudo volver a ejecutar la reserva.",
1040
+ "wms.widgets.sales.stockContext.rerunSuccess": "Se ha iniciado la reejecución de la reserva. El contexto de stock se actualizará en breve.",
1041
+ "wms.widgets.sales.stockContext.reservationCount": "Registros de reserva",
1042
+ "wms.widgets.sales.stockContext.reservationsTitle": "Reservas activas",
1043
+ "wms.widgets.sales.stockContext.reserved": "Reservado",
1044
+ "wms.widgets.sales.stockContext.status.fully_reserved": "Totalmente reservado",
1045
+ "wms.widgets.sales.stockContext.status.partially_reserved": "Parcialmente reservado",
1046
+ "wms.widgets.sales.stockContext.status.unreserved": "Sin reservar",
1047
+ "wms.widgets.sales.stockContext.title": "Contexto de stock de WMS",
1048
+ "wms.widgets.sales.stockContext.unassignSuccess": "Asignación de almacén eliminada.",
1049
+ "wms.widgets.sales.stockContext.unassigned": "Sin asignar",
1050
+ "wms.widgets.sales.stockContext.warehousePlaceholder": "Seleccionar almacén"
1051
+ }