@open-mercato/core 0.10.1-develop.7774.1.9a13ef7580 → 0.10.1-develop.7776.1.3032ea0741

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.
@@ -413,6 +413,77 @@ export const orderLineUpdateSchema = z
413
413
  })
414
414
  .merge(orderLineCreateSchema.partial())
415
415
 
416
+ /**
417
+ * Translation keys for the bulk-line schema refusals. The schema runs outside a
418
+ * request, so it cannot translate; it tags each issue with its key in `params`
419
+ * and the HTTP boundary resolves it. The English text stays here as the
420
+ * fallback and as the message a non-HTTP caller sees.
421
+ */
422
+ export const SALES_ORDER_LINE_BULK_ISSUE_KEYS = {
423
+ empty: 'sales.documents.items.bulk.errorEmptyBatch',
424
+ duplicate: 'sales.documents.items.bulk.errorDuplicateId',
425
+ upsertDeleteConflict: 'sales.documents.items.bulk.errorUpsertDeleteConflict',
426
+ } as const
427
+
428
+ export const SALES_ORDER_LINE_BULK_EMPTY_MESSAGE =
429
+ 'Provide at least one line to upsert or delete.'
430
+ export const SALES_ORDER_LINE_BULK_DUPLICATE_MESSAGE =
431
+ 'The same line id appears more than once in lines.'
432
+ export const SALES_ORDER_LINE_BULK_UPSERT_DELETE_CONFLICT_MESSAGE =
433
+ 'A line id cannot be upserted and deleted in the same request.'
434
+
435
+ /**
436
+ * One entry of a bulk line write. Identical to what the per-line upsert accepts,
437
+ * minus the scope and parent keys the envelope already carries: `id` present
438
+ * updates that line, `id` absent appends a new one.
439
+ */
440
+ export const orderLineBulkUpsertEntrySchema = orderLineCreateSchema
441
+ .omit({ organizationId: true, tenantId: true, orderId: true })
442
+ .extend({ id: uuid().optional() })
443
+
444
+ export const orderLineBulkUpsertSchema = scoped
445
+ .extend({
446
+ orderId: uuid(),
447
+ orderTotals: z.lazy(() => orderHeaderTotalsSchema).optional(),
448
+ lines: z.array(orderLineBulkUpsertEntrySchema).default([]),
449
+ deleteIds: z.array(uuid()).default([]),
450
+ })
451
+ .superRefine((value, ctx) => {
452
+ if (!value.lines.length && !value.deleteIds.length) {
453
+ ctx.addIssue({
454
+ code: z.ZodIssueCode.custom,
455
+ path: ['lines'],
456
+ message: SALES_ORDER_LINE_BULK_EMPTY_MESSAGE,
457
+ params: { omKey: SALES_ORDER_LINE_BULK_ISSUE_KEYS.empty },
458
+ })
459
+ }
460
+ const seen = new Set<string>()
461
+ value.lines.forEach((line, index) => {
462
+ if (!line.id) return
463
+ if (seen.has(line.id)) {
464
+ ctx.addIssue({
465
+ code: z.ZodIssueCode.custom,
466
+ path: ['lines', index, 'id'],
467
+ message: SALES_ORDER_LINE_BULK_DUPLICATE_MESSAGE,
468
+ params: { omKey: SALES_ORDER_LINE_BULK_ISSUE_KEYS.duplicate },
469
+ })
470
+ return
471
+ }
472
+ seen.add(line.id)
473
+ })
474
+ value.deleteIds.forEach((id, index) => {
475
+ if (!seen.has(id)) return
476
+ ctx.addIssue({
477
+ code: z.ZodIssueCode.custom,
478
+ path: ['deleteIds', index],
479
+ message: SALES_ORDER_LINE_BULK_UPSERT_DELETE_CONFLICT_MESSAGE,
480
+ params: { omKey: SALES_ORDER_LINE_BULK_ISSUE_KEYS.upsertDeleteConflict },
481
+ })
482
+ })
483
+ })
484
+
485
+ export type OrderLineBulkUpsertInput = z.infer<typeof orderLineBulkUpsertSchema>
486
+
416
487
  export const quoteLineCreateSchema = scoped.extend({
417
488
  quoteId: uuid(),
418
489
  lineNumber: z.coerce.number().int().min(0).optional(),
@@ -31,6 +31,7 @@
31
31
  "sales.audit.orders.delete": "Bestellung löschen",
32
32
  "sales.audit.orders.lines.delete": "Bestellposition löschen",
33
33
  "sales.audit.orders.lines.upsert": "Bestellposition aktualisieren",
34
+ "sales.audit.orders.lines.upsert_many": "Bestellpositionen aktualisieren",
34
35
  "sales.audit.orders.update": "Bestellung aktualisieren",
35
36
  "sales.audit.payment-methods.create": "Create payment method",
36
37
  "sales.audit.payment-methods.delete": "Delete payment method",
@@ -847,10 +848,12 @@
847
848
  "sales.documents.empty.adjustments.description": "Fügen Sie Rabatte, Gebühren oder Steuern hinzu, um die Summen anzupassen.",
848
849
  "sales.documents.empty.adjustments.title": "Noch keine Anpassungen.",
849
850
  "sales.documents.errors.forbidden": "Sie haben keinen Zugriff zum Generieren von Nummern.",
851
+ "sales.documents.errors.guard_blocked": "Vorgang durch eine Richtlinie blockiert",
850
852
  "sales.documents.errors.number_edit_forbidden": "Dokumentennummer kann nicht bearbeitet werden.",
851
853
  "sales.documents.errors.number_forbidden": "Dokumentennummernoperation ist nicht zulässig.",
852
854
  "sales.documents.errors.number_generate_failed": "Dokumentnummer konnte nicht generiert werden.",
853
855
  "sales.documents.errors.organization_required": "Organisationskontext ist erforderlich.",
856
+ "sales.documents.errors.organization_selection_invalid": "Ihre ausgewählte Organisation ist nicht mehr verfügbar. Bitte wählen Sie eine Organisation erneut aus und versuchen Sie es noch einmal.",
854
857
  "sales.documents.errors.unauthorized": "Nicht autorisiert",
855
858
  "sales.documents.errors.undoStaleOrder": "Diese Änderung kann nicht mehr rückgängig gemacht werden, da der Auftrag danach geändert wurde.",
856
859
  "sales.documents.errors.undoStaleQuote": "Diese Änderung kann nicht mehr rückgängig gemacht werden, da das Angebot danach geändert wurde.",
@@ -1005,6 +1008,10 @@
1005
1008
  "sales.documents.items.addLine": "Position hinzufügen",
1006
1009
  "sales.documents.items.addTitle": "Position hinzufügen",
1007
1010
  "sales.documents.items.baseUnitTag": "Basis",
1011
+ "sales.documents.items.bulk.errorDuplicateId": "Dieselbe Positions-ID kommt in lines mehrfach vor.",
1012
+ "sales.documents.items.bulk.errorEmptyBatch": "Geben Sie mindestens eine Position zum Speichern oder Löschen an.",
1013
+ "sales.documents.items.bulk.errorInvalidInput": "Ungültige Eingabe",
1014
+ "sales.documents.items.bulk.errorUpsertDeleteConflict": "Eine Positions-ID kann in derselben Anfrage nicht gespeichert und gelöscht werden.",
1008
1015
  "sales.documents.items.cancel": "Abbrechen",
1009
1016
  "sales.documents.items.created": "Position hinzugefügt.",
1010
1017
  "sales.documents.items.deleteConfirm": "Diese Position löschen?",
@@ -1028,6 +1035,7 @@
1028
1035
  "sales.documents.items.errorQuantityInvalid": "Geben Sie die Menge als Zahl ein, zum Beispiel {{example}}.",
1029
1036
  "sales.documents.items.errorQuantityShipmentsUnknown": "Die Menge kann erst gesenkt werden, wenn die Sendungen dieses Auftrags geladen wurden. Öffnen Sie den Auftrag erneut, um es noch einmal zu versuchen.",
1030
1037
  "sales.documents.items.errorSave": "Position konnte nicht gespeichert werden.",
1038
+ "sales.documents.items.errorSaveBatch": "Bestellpositionen konnten nicht gespeichert werden.",
1031
1039
  "sales.documents.items.errorScope": "Organisation und Mandant sind erforderlich.",
1032
1040
  "sales.documents.items.errorUnitPrice": "Der Stückpreis muss größer als 0 sein.",
1033
1041
  "sales.documents.items.errorUnitPriceInvalid": "Geben Sie den Stückpreis als Zahl ein, zum Beispiel {{example}}.",
@@ -1312,6 +1320,7 @@
1312
1320
  "sales.orders.form.shipments": "Sendungen",
1313
1321
  "sales.orders.lines.delete": "Bestellposition löschen",
1314
1322
  "sales.orders.lines.upsert": "Bestellposition aktualisieren",
1323
+ "sales.orders.lines.upsert_many": "Bestellpositionen aktualisieren",
1315
1324
  "sales.orders.linesRequired": "Fügen Sie vor dem Erstellen der Bestellung mindestens eine Position hinzu.",
1316
1325
  "sales.orders.list.title": "Aufträge",
1317
1326
  "sales.orders.status_change.actor_api_key": "API-Schlüssel {name}",
@@ -31,6 +31,7 @@
31
31
  "sales.audit.orders.delete": "Delete sales order",
32
32
  "sales.audit.orders.lines.delete": "Delete order line",
33
33
  "sales.audit.orders.lines.upsert": "Update order line",
34
+ "sales.audit.orders.lines.upsert_many": "Update order lines",
34
35
  "sales.audit.orders.update": "Update sales order",
35
36
  "sales.audit.payment-methods.create": "Create payment method",
36
37
  "sales.audit.payment-methods.delete": "Delete payment method",
@@ -847,10 +848,12 @@
847
848
  "sales.documents.empty.adjustments.description": "Add discounts, fees, or taxes to refine totals.",
848
849
  "sales.documents.empty.adjustments.title": "No adjustments yet.",
849
850
  "sales.documents.errors.forbidden": "You do not have access to generate numbers.",
851
+ "sales.documents.errors.guard_blocked": "Operation blocked by guard",
850
852
  "sales.documents.errors.number_edit_forbidden": "Document number cannot be edited.",
851
853
  "sales.documents.errors.number_forbidden": "Document number operation is not allowed.",
852
854
  "sales.documents.errors.number_generate_failed": "Failed to generate document number.",
853
855
  "sales.documents.errors.organization_required": "Organization context is required.",
856
+ "sales.documents.errors.organization_selection_invalid": "Your selected organization is no longer available. Please re-select an organization and try again.",
854
857
  "sales.documents.errors.unauthorized": "Unauthorized",
855
858
  "sales.documents.errors.undoStaleOrder": "This change can no longer be undone because the order was changed afterwards.",
856
859
  "sales.documents.errors.undoStaleQuote": "This change can no longer be undone because the quote was changed afterwards.",
@@ -1005,6 +1008,10 @@
1005
1008
  "sales.documents.items.addLine": "Add item",
1006
1009
  "sales.documents.items.addTitle": "Add line",
1007
1010
  "sales.documents.items.baseUnitTag": "base",
1011
+ "sales.documents.items.bulk.errorDuplicateId": "The same line id appears more than once in lines.",
1012
+ "sales.documents.items.bulk.errorEmptyBatch": "Provide at least one line to upsert or delete.",
1013
+ "sales.documents.items.bulk.errorInvalidInput": "Invalid input",
1014
+ "sales.documents.items.bulk.errorUpsertDeleteConflict": "A line id cannot be upserted and deleted in the same request.",
1008
1015
  "sales.documents.items.cancel": "Cancel",
1009
1016
  "sales.documents.items.created": "Line added.",
1010
1017
  "sales.documents.items.deleteConfirm": "Delete this line item?",
@@ -1028,6 +1035,7 @@
1028
1035
  "sales.documents.items.errorQuantityInvalid": "Enter the quantity as a number, for example {{example}}.",
1029
1036
  "sales.documents.items.errorQuantityShipmentsUnknown": "The quantity cannot be lowered until this order's shipments have been read. Reopen the order to try again.",
1030
1037
  "sales.documents.items.errorSave": "Failed to save line.",
1038
+ "sales.documents.items.errorSaveBatch": "Failed to save order lines.",
1031
1039
  "sales.documents.items.errorScope": "Organization and tenant are required.",
1032
1040
  "sales.documents.items.errorUnitPrice": "Unit price must be greater than 0.",
1033
1041
  "sales.documents.items.errorUnitPriceInvalid": "Enter the unit price as a number, for example {{example}}.",
@@ -1312,6 +1320,7 @@
1312
1320
  "sales.orders.form.shipments": "Shipments",
1313
1321
  "sales.orders.lines.delete": "Delete order line",
1314
1322
  "sales.orders.lines.upsert": "Update order line",
1323
+ "sales.orders.lines.upsert_many": "Update order lines",
1315
1324
  "sales.orders.linesRequired": "Add at least one line item before creating the order.",
1316
1325
  "sales.orders.list.title": "Orders",
1317
1326
  "sales.orders.status_change.actor_api_key": "API key {name}",
@@ -31,6 +31,7 @@
31
31
  "sales.audit.orders.delete": "Eliminar pedido de ventas",
32
32
  "sales.audit.orders.lines.delete": "Eliminar línea de pedido",
33
33
  "sales.audit.orders.lines.upsert": "Actualizar línea de pedido",
34
+ "sales.audit.orders.lines.upsert_many": "Actualizar líneas de pedido",
34
35
  "sales.audit.orders.update": "Actualizar pedido de ventas",
35
36
  "sales.audit.payment-methods.create": "Create payment method",
36
37
  "sales.audit.payment-methods.delete": "Delete payment method",
@@ -847,10 +848,12 @@
847
848
  "sales.documents.empty.adjustments.description": "Agrega descuentos, tarifas o impuestos para ajustar los totales.",
848
849
  "sales.documents.empty.adjustments.title": "Aún no hay ajustes.",
849
850
  "sales.documents.errors.forbidden": "No tienes acceso para generar números.",
851
+ "sales.documents.errors.guard_blocked": "Operación bloqueada por una política",
850
852
  "sales.documents.errors.number_edit_forbidden": "El número de documento no se puede editar.",
851
853
  "sales.documents.errors.number_forbidden": "La operación sobre el número de documento no está permitida.",
852
854
  "sales.documents.errors.number_generate_failed": "No se pudo generar el número de documento.",
853
855
  "sales.documents.errors.organization_required": "Se requiere contexto de organización.",
856
+ "sales.documents.errors.organization_selection_invalid": "La organización seleccionada ya no está disponible. Vuelva a seleccionar una organización e inténtelo de nuevo.",
854
857
  "sales.documents.errors.unauthorized": "No autorizado",
855
858
  "sales.documents.errors.undoStaleOrder": "Este cambio ya no se puede deshacer porque el pedido se modificó después.",
856
859
  "sales.documents.errors.undoStaleQuote": "Este cambio ya no se puede deshacer porque la cotización se modificó después.",
@@ -1005,6 +1008,10 @@
1005
1008
  "sales.documents.items.addLine": "Agregar artículo",
1006
1009
  "sales.documents.items.addTitle": "Agregar línea",
1007
1010
  "sales.documents.items.baseUnitTag": "base",
1011
+ "sales.documents.items.bulk.errorDuplicateId": "El mismo id de línea aparece más de una vez en lines.",
1012
+ "sales.documents.items.bulk.errorEmptyBatch": "Indique al menos una línea para guardar o eliminar.",
1013
+ "sales.documents.items.bulk.errorInvalidInput": "Entrada no válida",
1014
+ "sales.documents.items.bulk.errorUpsertDeleteConflict": "Un id de línea no puede guardarse y eliminarse en la misma solicitud.",
1008
1015
  "sales.documents.items.cancel": "Cancelar",
1009
1016
  "sales.documents.items.created": "Línea agregada.",
1010
1017
  "sales.documents.items.deleteConfirm": "¿Eliminar esta línea de artículo?",
@@ -1028,6 +1035,7 @@
1028
1035
  "sales.documents.items.errorQuantityInvalid": "Introduce la cantidad como un número, por ejemplo {{example}}.",
1029
1036
  "sales.documents.items.errorQuantityShipmentsUnknown": "La cantidad no se puede reducir hasta que se carguen los envíos de este pedido. Vuelve a abrir el pedido para intentarlo de nuevo.",
1030
1037
  "sales.documents.items.errorSave": "No se pudo guardar la línea.",
1038
+ "sales.documents.items.errorSaveBatch": "No se pudieron guardar las líneas del pedido.",
1031
1039
  "sales.documents.items.errorScope": "Se requieren organización e inquilino.",
1032
1040
  "sales.documents.items.errorUnitPrice": "El precio unitario debe ser mayor que 0.",
1033
1041
  "sales.documents.items.errorUnitPriceInvalid": "Introduce el precio unitario como un número, por ejemplo {{example}}.",
@@ -1312,6 +1320,7 @@
1312
1320
  "sales.orders.form.shipments": "Envíos",
1313
1321
  "sales.orders.lines.delete": "Eliminar línea de pedido",
1314
1322
  "sales.orders.lines.upsert": "Actualizar línea de pedido",
1323
+ "sales.orders.lines.upsert_many": "Actualizar líneas de pedido",
1315
1324
  "sales.orders.linesRequired": "Añade al menos una línea antes de crear el pedido.",
1316
1325
  "sales.orders.list.title": "Pedidos",
1317
1326
  "sales.orders.status_change.actor_api_key": "Clave API {name}",
@@ -31,6 +31,7 @@
31
31
  "sales.audit.orders.delete": "판매 주문 삭제",
32
32
  "sales.audit.orders.lines.delete": "주문 라인 삭제",
33
33
  "sales.audit.orders.lines.upsert": "주문 라인 수정",
34
+ "sales.audit.orders.lines.upsert_many": "주문 항목 일괄 수정",
34
35
  "sales.audit.orders.update": "판매 주문 수정",
35
36
  "sales.audit.payment-methods.create": "결제 수단 생성",
36
37
  "sales.audit.payment-methods.delete": "결제 수단 삭제",
@@ -847,10 +848,12 @@
847
848
  "sales.documents.empty.adjustments.description": "할인, 수수료 또는 세금을 추가해 합계를 조정하세요.",
848
849
  "sales.documents.empty.adjustments.title": "아직 조정 내역이 없습니다.",
849
850
  "sales.documents.errors.forbidden": "번호를 생성할 권한이 없습니다.",
851
+ "sales.documents.errors.guard_blocked": "정책에 의해 차단된 작업입니다.",
850
852
  "sales.documents.errors.number_edit_forbidden": "문서 번호는 수정할 수 없습니다.",
851
853
  "sales.documents.errors.number_forbidden": "문서 번호 작업이 허용되지 않습니다.",
852
854
  "sales.documents.errors.number_generate_failed": "문서 번호를 생성하지 못했습니다.",
853
855
  "sales.documents.errors.organization_required": "조직 컨텍스트가 필요합니다.",
856
+ "sales.documents.errors.organization_selection_invalid": "선택한 조직을 더 이상 사용할 수 없습니다. 조직을 다시 선택한 후 다시 시도해 주세요.",
854
857
  "sales.documents.errors.unauthorized": "권한이 없습니다",
855
858
  "sales.documents.errors.undoStaleOrder": "이후에 주문이 변경되어 이 변경 사항을 더 이상 실행 취소할 수 없습니다.",
856
859
  "sales.documents.errors.undoStaleQuote": "이후에 견적이 변경되어 이 변경 사항을 더 이상 실행 취소할 수 없습니다.",
@@ -1005,6 +1008,10 @@
1005
1008
  "sales.documents.items.addLine": "품목 추가",
1006
1009
  "sales.documents.items.addTitle": "품목 추가",
1007
1010
  "sales.documents.items.baseUnitTag": "기본",
1011
+ "sales.documents.items.bulk.errorDuplicateId": "같은 품목 id가 lines에 여러 번 있습니다.",
1012
+ "sales.documents.items.bulk.errorEmptyBatch": "저장하거나 삭제할 품목을 하나 이상 지정하세요.",
1013
+ "sales.documents.items.bulk.errorInvalidInput": "입력값이 올바르지 않습니다.",
1014
+ "sales.documents.items.bulk.errorUpsertDeleteConflict": "같은 요청에서 품목 id를 저장하면서 삭제할 수 없습니다.",
1008
1015
  "sales.documents.items.cancel": "취소",
1009
1016
  "sales.documents.items.created": "품목이 추가되었습니다.",
1010
1017
  "sales.documents.items.deleteConfirm": "이 품목을 삭제하시겠습니까?",
@@ -1028,6 +1035,7 @@
1028
1035
  "sales.documents.items.errorQuantityInvalid": "수량을 숫자로 입력하세요. 예: {{example}}.",
1029
1036
  "sales.documents.items.errorQuantityShipmentsUnknown": "이 주문의 배송 정보를 불러올 때까지 수량을 줄일 수 없습니다. 주문을 다시 열어 재시도하세요.",
1030
1037
  "sales.documents.items.errorSave": "품목을 저장하지 못했습니다.",
1038
+ "sales.documents.items.errorSaveBatch": "주문 항목을 저장하지 못했습니다.",
1031
1039
  "sales.documents.items.errorScope": "조직 및 테넌트 정보가 필요합니다.",
1032
1040
  "sales.documents.items.errorUnitPrice": "단가는 0보다 커야 합니다.",
1033
1041
  "sales.documents.items.errorUnitPriceInvalid": "단가를 숫자로 입력하세요. 예: {{example}}.",
@@ -1312,6 +1320,7 @@
1312
1320
  "sales.orders.form.shipments": "배송",
1313
1321
  "sales.orders.lines.delete": "주문 항목 삭제",
1314
1322
  "sales.orders.lines.upsert": "주문 항목 업데이트",
1323
+ "sales.orders.lines.upsert_many": "주문 항목 일괄 수정",
1315
1324
  "sales.orders.linesRequired": "주문을 생성하기 전에 하나 이상의 광고 항목을 추가하세요.",
1316
1325
  "sales.orders.list.title": "주문",
1317
1326
  "sales.orders.status_change.actor_api_key": "API 키 {name}",
@@ -31,6 +31,7 @@
31
31
  "sales.audit.orders.delete": "Usuń zamówienie sprzedaży",
32
32
  "sales.audit.orders.lines.delete": "Usuń pozycję zamówienia",
33
33
  "sales.audit.orders.lines.upsert": "Zaktualizuj pozycję zamówienia",
34
+ "sales.audit.orders.lines.upsert_many": "Zaktualizuj pozycje zamówienia",
34
35
  "sales.audit.orders.update": "Aktualizuj zamówienie sprzedaży",
35
36
  "sales.audit.payment-methods.create": "Utworzenie metody płatności",
36
37
  "sales.audit.payment-methods.delete": "Usunięcie metody płatności",
@@ -847,10 +848,12 @@
847
848
  "sales.documents.empty.adjustments.description": "Dodaj rabaty, opłaty lub podatki, aby doprecyzować sumy.",
848
849
  "sales.documents.empty.adjustments.title": "Brak korekt.",
849
850
  "sales.documents.errors.forbidden": "Brak uprawnień do generowania numerów.",
851
+ "sales.documents.errors.guard_blocked": "Operacja zablokowana przez regułę",
850
852
  "sales.documents.errors.number_edit_forbidden": "Numer dokumentu nie może być edytowany.",
851
853
  "sales.documents.errors.number_forbidden": "Operacja na numerze dokumentu jest niedozwolona.",
852
854
  "sales.documents.errors.number_generate_failed": "Nie udało się wygenerować numeru dokumentu.",
853
855
  "sales.documents.errors.organization_required": "Wymagany jest kontekst organizacji.",
856
+ "sales.documents.errors.organization_selection_invalid": "Wybrana organizacja nie jest już dostępna. Wybierz organizację ponownie i spróbuj jeszcze raz.",
854
857
  "sales.documents.errors.unauthorized": "Brak autoryzacji",
855
858
  "sales.documents.errors.undoStaleOrder": "Tej zmiany nie można już cofnąć, ponieważ zamówienie zostało później zmienione.",
856
859
  "sales.documents.errors.undoStaleQuote": "Tej zmiany nie można już cofnąć, ponieważ oferta została później zmieniona.",
@@ -1005,6 +1008,10 @@
1005
1008
  "sales.documents.items.addLine": "Dodaj pozycję",
1006
1009
  "sales.documents.items.addTitle": "Dodaj pozycję",
1007
1010
  "sales.documents.items.baseUnitTag": "bazowa",
1011
+ "sales.documents.items.bulk.errorDuplicateId": "Ten sam id pozycji występuje w lines więcej niż raz.",
1012
+ "sales.documents.items.bulk.errorEmptyBatch": "Podaj co najmniej jedną pozycję do zapisania lub usunięcia.",
1013
+ "sales.documents.items.bulk.errorInvalidInput": "Nieprawidłowe dane",
1014
+ "sales.documents.items.bulk.errorUpsertDeleteConflict": "Tego samego id pozycji nie można w jednym żądaniu zapisać i usunąć.",
1008
1015
  "sales.documents.items.cancel": "Anuluj",
1009
1016
  "sales.documents.items.created": "Pozycja dodana.",
1010
1017
  "sales.documents.items.deleteConfirm": "Usunąć tę pozycję?",
@@ -1028,6 +1035,7 @@
1028
1035
  "sales.documents.items.errorQuantityInvalid": "Podaj ilość jako liczbę, na przykład {{example}}.",
1029
1036
  "sales.documents.items.errorQuantityShipmentsUnknown": "Nie można obniżyć ilości, dopóki wysyłki tego zamówienia nie zostaną wczytane. Otwórz zamówienie ponownie, aby spróbować jeszcze raz.",
1030
1037
  "sales.documents.items.errorSave": "Nie udało się zapisać pozycji.",
1038
+ "sales.documents.items.errorSaveBatch": "Nie udało się zapisać pozycji zamówienia.",
1031
1039
  "sales.documents.items.errorScope": "Wymagane są organizacja i najemca.",
1032
1040
  "sales.documents.items.errorUnitPrice": "Cena jednostkowa musi być większa niż 0.",
1033
1041
  "sales.documents.items.errorUnitPriceInvalid": "Podaj cenę jednostkową jako liczbę, na przykład {{example}}.",
@@ -1312,6 +1320,7 @@
1312
1320
  "sales.orders.form.shipments": "Wysyłki",
1313
1321
  "sales.orders.lines.delete": "Usuń pozycję zamówienia",
1314
1322
  "sales.orders.lines.upsert": "Zaktualizuj pozycję zamówienia",
1323
+ "sales.orders.lines.upsert_many": "Zaktualizuj pozycje zamówienia",
1315
1324
  "sales.orders.linesRequired": "Dodaj co najmniej jedną pozycję przed utworzeniem zamówienia.",
1316
1325
  "sales.orders.list.title": "Zamówienia",
1317
1326
  "sales.orders.status_change.actor_api_key": "Klucz API {name}",