platform-types 1.10.838 → 1.10.839

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.
@@ -34,7 +34,7 @@
34
34
  * A cancelled order can still have the device on the shelf.
35
35
  */
36
36
  Object.defineProperty(exports, "__esModule", { value: true });
37
- exports.SERVICE_ORDER_ERROR_CODES = exports.MAX_SERVICE_PICTURES = exports.SERVICE_CUSTODIES = exports.SERVICE_CUSTODY_TRANSITIONS = exports.SERVICE_TERMINAL_STATUSES = exports.SERVICE_STATUSES = exports.SERVICE_TRANSITIONS = void 0;
37
+ exports.SERVICE_ORDER_ERROR_CODES = exports.MAX_SERVICE_PICTURES = exports.SERVICE_CUSTODIES = exports.SERVICE_CUSTODY_TRANSITIONS = exports.SERVICE_TERMINAL_STATUSES = exports.SERVICE_STATUSES = exports.SERVICE_ORDER_DOCUMENTS = exports.SERVICE_TRANSITIONS = void 0;
38
38
  /**
39
39
  * The legal moves on a service order. Exhaustive over `ServiceStatus` by
40
40
  * construction — adding a status to the union without a row here is a typecheck
@@ -85,6 +85,8 @@ exports.SERVICE_TRANSITIONS = {
85
85
  * of an exhaustive `Record` cannot omit one. Same reasoning, and the same
86
86
  * assertion to a non-empty tuple, as `ORDER_FULFILMENT_STATUSES`.
87
87
  */
88
+ /** Every {@link ServiceOrderDocument}, in the order the app offers them. */
89
+ exports.SERVICE_ORDER_DOCUMENTS = ['recepcion', 'presupuesto', 'entrega', 'devolucion'];
88
90
  exports.SERVICE_STATUSES = Object.keys(exports.SERVICE_TRANSITIONS);
89
91
  /**
90
92
  * The statuses a service order can end in. Nothing transitions out of these.
@@ -264,6 +266,9 @@ exports.MAX_SERVICE_PICTURES = 20;
264
266
  * cart keeps its coupon. Remove the coupon from the cart (or decline the
265
267
  * basket) and retry.
266
268
  * - `VALIDATION_FAILED` · 400 — the body or query failed its schema.
269
+ * - `PRINT_JOB_DOCUMENT_NOT_FOUND` · 404 — `GET ?mode=job-document`: the job is
270
+ * unknown to the caller's store, is not a service-order job, was cancelled, is
271
+ * still held, or ended without being sent. One answer for all five.
267
272
  *
268
273
  * ⚠️ `ROLE_FORBIDDEN` here is the router's own role check (a print agent, or a
269
274
  * role no mode admits); cross-cutting gating refusals are NOT repeated —
@@ -284,6 +289,8 @@ exports.SERVICE_ORDER_ERROR_CODES = [
284
289
  'REWORK_INDEX_UNAVAILABLE',
285
290
  'STORE_NOT_FOUND',
286
291
  'SERVICE_ORDER_NOT_FOUND',
292
+ // The print agent's `GET ?mode=job-document` — no fetchable service-order job by that id
293
+ 'PRINT_JOB_DOCUMENT_NOT_FOUND',
287
294
  // Intake and edit
288
295
  'CUSTOMER_NOT_FOUND',
289
296
  'PARENT_SERVICE_ORDER_NOT_FOUND',
@@ -585,6 +585,8 @@ exports.SOCKET_ACTIONS = [
585
585
  'print-invoice',
586
586
  'print-product',
587
587
  'print-tag',
588
+ // A service-order document, id-only (`PrintServiceOrderFrameData`).
589
+ 'print-service-order',
588
590
  'print_job_failed',
589
591
  // BE → agent: re-send your COMPLETE printer set (carries only `storeId`).
590
592
  // Needed because `register_printers` only fires on connect/local-change, so
package/dist/print.d.ts CHANGED
@@ -440,8 +440,26 @@ declare global {
440
440
  */
441
441
  printers: PrintPrinterReport[];
442
442
  }
443
- /** Print use cases that can be routed independently. */
444
- type PrintUseCase = 'order' | 'invoice' | 'label' | 'tag' | 'receipt' | 'report';
443
+ /**
444
+ * Print use cases that can be routed independently. `service-order` is every
445
+ * service-order document (the intake receipt, the quote, the delivery and
446
+ * hand-back records) — PDF documents, routed apart from `receipt`, which is the
447
+ * ESC/POS ticket rule.
448
+ */
449
+ type PrintUseCase = 'order' | 'invoice' | 'label' | 'tag' | 'receipt' | 'report' | 'service-order';
450
+ /**
451
+ * `data` of the server → agent `print-service-order` frame. Id-only, always:
452
+ * the agent fetches the PDF with `GET /services?mode=job-document&jobId=…`,
453
+ * which renders the document THIS job names and nothing else. The ids are
454
+ * for display; the fetch reads them off the job, never off the request.
455
+ */
456
+ interface PrintServiceOrderFrameData {
457
+ jobId: string;
458
+ storeId: string;
459
+ serviceOrderId: string;
460
+ document: ServiceOrderDocument;
461
+ options?: PrintOptions;
462
+ }
445
463
  /**
446
464
  * One row of `PRINT_RULE#${storeId}` — at most one rule per
447
465
  * (`storeId`, `useCase`, `agentId`).
@@ -551,6 +569,10 @@ declare global {
551
569
  printerId?: string;
552
570
  orderId?: string;
553
571
  invoiceId?: string;
572
+ /** The service order a `service-order` job prints — dispatch-stamped, never written by an ack. */
573
+ serviceOrderId?: string;
574
+ /** Which document of {@link serviceOrderId} the job prints. */
575
+ serviceOrderDocument?: ServiceOrderDocument;
554
576
  detail?: string;
555
577
  /**
556
578
  * Machine-readable failure classification, when one is recognised. BE-side
@@ -564,11 +586,11 @@ declare global {
564
586
  * An automatic job (`Store.config.autoPrint`) adds three BE-side codes on
565
587
  * `error`: `PRINT_QUEUE_EXPIRED` — it was held for want of a connected
566
588
  * agent and its `heldUntil` passed — `AUTO_PRINT_SOURCE_GONE` — the
567
- * order or invoice it was printing no longer exists when it was replayed —
589
+ * order, invoice or service order it was printing no longer exists when it was replayed —
568
590
  * and `AUTO_PRINT_NO_LONGER_ELIGIBLE` — at replay it no longer passed the
569
591
  * checks it was minted under (the store's switch for its event is off, the
570
592
  * order was cancelled or its ready / delivered mark cleared, the factura is
571
- * a credit note), so it was never sent.
593
+ * a credit note, the service order was cancelled or disabled), so it was never sent.
572
594
  * A HELD job is `queued` with `NO_PRINTER_CONNECTED` and `heldUntil`.
573
595
  */
574
596
  errorCode?: string;
@@ -1108,8 +1108,30 @@ declare global {
1108
1108
  by: string;
1109
1109
  at: number;
1110
1110
  };
1111
+ /**
1112
+ * `true` once any document of this order was dispatched to the print
1113
+ * agents. Like `Order.orderPrinted` it means QUEUED, not printed — it is
1114
+ * set before any agent has seen the job.
1115
+ */
1116
+ serviceOrderPrinted?: boolean;
1117
+ /** The most recent print job's id, last-write-wins across all four documents. */
1118
+ printJobId?: string;
1119
+ /** Which document {@link printJobId} prints. */
1120
+ printJobDocument?: ServiceOrderDocument;
1121
+ /**
1122
+ * ms epoch at which the agent confirmed {@link printJobId} printed. Absent =
1123
+ * not confirmed. Removed by every new dispatch, so it always describes the
1124
+ * CURRENT `printJobId`.
1125
+ */
1126
+ printedAt?: number;
1111
1127
  disabled: boolean;
1112
1128
  }
1129
+ /**
1130
+ * One printable service-order document — the `document` of
1131
+ * `GET /services?mode=pdf` and of `POST /services {mode:'print'}`.
1132
+ * `recepcion` is the intake receipt (comprobante de ingreso).
1133
+ */
1134
+ type ServiceOrderDocument = (typeof SERVICE_ORDER_DOCUMENTS)[number];
1113
1135
  /**
1114
1136
  * The running-timer sentinel — one row per technician, for exactly as long as
1115
1137
  * their timer runs. PK `SERVICETIMER#{storeId}`, SK `{technicianId}`.
@@ -1313,6 +1335,8 @@ export declare const SERVICE_TRANSITIONS: Readonly<Record<ServiceStatus, readonl
1313
1335
  * of an exhaustive `Record` cannot omit one. Same reasoning, and the same
1314
1336
  * assertion to a non-empty tuple, as `ORDER_FULFILMENT_STATUSES`.
1315
1337
  */
1338
+ /** Every {@link ServiceOrderDocument}, in the order the app offers them. */
1339
+ export declare const SERVICE_ORDER_DOCUMENTS: readonly ["recepcion", "presupuesto", "entrega", "devolucion"];
1316
1340
  export declare const SERVICE_STATUSES: [ServiceStatus, ...ServiceStatus[]];
1317
1341
  /**
1318
1342
  * The statuses a service order can end in. Nothing transitions out of these.
@@ -1481,12 +1505,15 @@ export declare const MAX_SERVICE_PICTURES = 20;
1481
1505
  * cart keeps its coupon. Remove the coupon from the cart (or decline the
1482
1506
  * basket) and retry.
1483
1507
  * - `VALIDATION_FAILED` · 400 — the body or query failed its schema.
1508
+ * - `PRINT_JOB_DOCUMENT_NOT_FOUND` · 404 — `GET ?mode=job-document`: the job is
1509
+ * unknown to the caller's store, is not a service-order job, was cancelled, is
1510
+ * still held, or ended without being sent. One answer for all five.
1484
1511
  *
1485
1512
  * ⚠️ `ROLE_FORBIDDEN` here is the router's own role check (a print agent, or a
1486
1513
  * role no mode admits); cross-cutting gating refusals are NOT repeated —
1487
1514
  * check `GATING_ERROR_CODES` in addition. The deposit's opt-in idempotency
1488
1515
  * refusals are included here.
1489
1516
  */
1490
- export declare const SERVICE_ORDER_ERROR_CODES: readonly ["UNIT_QUANTITY_NOT_WHOLE", "UNIT_REVISION_STALE", "ROLE_FORBIDDEN", "PARENT_FILTER_CONFLICT", "VALIDATION_FAILED", "INVALID_CURSOR", "INVALID_FROM_DATE", "INVALID_TO_DATE", "INVALID_DATE_RANGE", "REWORK_INDEX_UNAVAILABLE", "STORE_NOT_FOUND", "SERVICE_ORDER_NOT_FOUND", "CUSTOMER_NOT_FOUND", "PARENT_SERVICE_ORDER_NOT_FOUND", "SERVICE_TEMPLATE_NOT_FOUND", "SERVICE_TYPE_REQUIRED", "INVALID_IMAGE_REFERENCE", "MISSING_STORE_CONTEXT", "WARRANTY_BELOW_LEGAL_MINIMUM", "TECHNICIAN_NOT_FOUND", "TECHNICIAN_NOT_ELIGIBLE", "CUSTODY_ILLEGAL_TRANSITION", "SERVICE_ORDER_BILLABLE_FROZEN", "SERVICE_ORDER_EDIT_CHANGED", "SERVICE_ORDER_DISABLED_STATE_UNCHANGED", "APPOINTMENT_NOT_FOUND", "APPOINTMENT_NOT_LINKABLE", "APPOINTMENT_NOT_OPEN", "APPOINTMENT_CUSTOMER_MISMATCH", "APPOINTMENT_VERSION_CONFLICT", "SERVICE_ORDER_TERMINAL", "SERVICE_ORDER_DISABLED", "SERVICE_ORDER_ILLEGAL_TRANSITION", "SERVICE_ORDER_STATUS_CHANGED", "SERVICE_ORDER_OUTCOME_REQUIRED", "SERVICE_ORDER_OUTCOME_NOT_ALLOWED", "SERVICE_ORDER_CUSTODY_NOT_RECEIVED", "SERVICE_ORDER_BILLABLE_NOT_AT_THIS_TRANSITION", "PAYMENT_METHODS_NOT_CONFIGURED", "PAYMENT_METHOD_NOT_FOUND", "SERVICE_ORDER_DEPOSIT_CHANGED", "INVALID_IDEMPOTENCY_KEY", "IDEMPOTENCY_KEY_REUSE", "IDEMPOTENCY_IN_PROGRESS", "IDEMPOTENCY_KEY_FAILED", "IDEMPOTENCY_LOCK_CONTENTION", "SERVICE_DEPOSIT_CURRENCY_MISMATCH", "SERVICE_DEPOSIT_INVALID", "INVALID_AMOUNT", "DEFAULT_DRAWER_UNAVAILABLE", "CURRENCY_MISMATCH", "SHIFT_NOT_OPEN", "SERVICE_BILLING_PRODUCTS_UNAVAILABLE", "CATEGORY_NOT_FOUND", "CATEGORY_DISABLED", "CATEGORY_DISABLE_IN_PROGRESS", "SERVICE_BILLING_PRODUCT_IN_BASKET", "SERVICE_DELIVERY_BASKET_DECISION_REQUIRED", "SERVICE_DELIVERY_BASKET_CURRENCY_MISMATCH", "PRODUCT_NOT_AVAILABLE", "PRODUCT_SALE_LIMIT_EXCEEDED", "PRODUCT_SALE_LIMIT_INVALID", "FX_CONVERSION_UNAVAILABLE", "TRANSACT_ITEMS_LIMIT_EXCEEDED", "SERVICE_LINE_PRICE_TOO_LARGE", "SERVICE_PARTS_RESTORE_EXCEEDS_CONSUMED", "SERVICE_PARTS_RESTORE_EXCEEDS_AMOUNT", "SERVICE_PARTS_STOCK_INSUFFICIENT", "SERVICE_PARTS_PRODUCT_NOT_FOUND", "SERVICE_PARTS_LEDGER_FULL", "SERVICE_PARTS_TOO_MANY", "SERVICE_ORDER_PARTS_CHANGED", "SERVICE_QUOTE_NOT_FOUND", "SERVICE_QUOTE_NOT_OFFERABLE", "SERVICE_QUOTE_HOLDS_TOO_MANY", "SERVICE_QUOTE_SUPERSEDED", "SERVICE_QUOTE_ALREADY_RESOLVED", "SERVICE_QUOTE_LAPSED", "SERVICE_QUOTE_CHANNEL_RESERVED", "SERVICE_QUOTE_CHANNEL_NOT_APPLICABLE", "SERVICE_QUOTE_REASON_NOT_APPLICABLE", "SERVICE_ORDER_QUOTE_CHANGED", "SERVICE_ORDER_NOT_READY", "SERVICE_RENOTIFY_IMPERSONATED", "SERVICE_RENOTIFY_TOO_SOON", "SERVICE_RENOTIFY_CONFLICT", "SERVICE_RENOTIFY_NOT_RECORDED", "SERVICE_RENOTIFY_LEDGER_UNREADABLE", "SERVICE_RENOTIFY_NOT_DISPATCHED", "SERVICE_TIMER_ALREADY_RUNNING", "SERVICE_TIMER_NOT_RUNNING", "SERVICE_TIMER_STOP_CONFLICT", "TECHNICIAN_NOT_CLOCKED_IN", "SERVICE_ORDER_GONE", "SERVICE_WORKLOG_NOT_FOUND", "SERVICE_WORKLOG_NOT_REVERSIBLE", "SERVICE_WORKLOG_ALREADY_REVERSED", "SERVICE_ORDER_WORKLOG_CHANGED", "CART_PROMOTION_UNAVAILABLE", "COUPON_NOT_FOUND", "COUPON_NOT_ACTIVE", "COUPON_EXPIRED", "COUPON_EXHAUSTED", "COUPON_EXHAUSTED_AT_CHECKOUT", "COUPON_MIN_SUBTOTAL", "COUPON_REQUIRES_CUSTOMER", "COUPON_BUDGET_EXHAUSTED", "COUPON_CURRENCY_MISMATCH"];
1517
+ export declare const SERVICE_ORDER_ERROR_CODES: readonly ["UNIT_QUANTITY_NOT_WHOLE", "UNIT_REVISION_STALE", "ROLE_FORBIDDEN", "PARENT_FILTER_CONFLICT", "VALIDATION_FAILED", "INVALID_CURSOR", "INVALID_FROM_DATE", "INVALID_TO_DATE", "INVALID_DATE_RANGE", "REWORK_INDEX_UNAVAILABLE", "STORE_NOT_FOUND", "SERVICE_ORDER_NOT_FOUND", "PRINT_JOB_DOCUMENT_NOT_FOUND", "CUSTOMER_NOT_FOUND", "PARENT_SERVICE_ORDER_NOT_FOUND", "SERVICE_TEMPLATE_NOT_FOUND", "SERVICE_TYPE_REQUIRED", "INVALID_IMAGE_REFERENCE", "MISSING_STORE_CONTEXT", "WARRANTY_BELOW_LEGAL_MINIMUM", "TECHNICIAN_NOT_FOUND", "TECHNICIAN_NOT_ELIGIBLE", "CUSTODY_ILLEGAL_TRANSITION", "SERVICE_ORDER_BILLABLE_FROZEN", "SERVICE_ORDER_EDIT_CHANGED", "SERVICE_ORDER_DISABLED_STATE_UNCHANGED", "APPOINTMENT_NOT_FOUND", "APPOINTMENT_NOT_LINKABLE", "APPOINTMENT_NOT_OPEN", "APPOINTMENT_CUSTOMER_MISMATCH", "APPOINTMENT_VERSION_CONFLICT", "SERVICE_ORDER_TERMINAL", "SERVICE_ORDER_DISABLED", "SERVICE_ORDER_ILLEGAL_TRANSITION", "SERVICE_ORDER_STATUS_CHANGED", "SERVICE_ORDER_OUTCOME_REQUIRED", "SERVICE_ORDER_OUTCOME_NOT_ALLOWED", "SERVICE_ORDER_CUSTODY_NOT_RECEIVED", "SERVICE_ORDER_BILLABLE_NOT_AT_THIS_TRANSITION", "PAYMENT_METHODS_NOT_CONFIGURED", "PAYMENT_METHOD_NOT_FOUND", "SERVICE_ORDER_DEPOSIT_CHANGED", "INVALID_IDEMPOTENCY_KEY", "IDEMPOTENCY_KEY_REUSE", "IDEMPOTENCY_IN_PROGRESS", "IDEMPOTENCY_KEY_FAILED", "IDEMPOTENCY_LOCK_CONTENTION", "SERVICE_DEPOSIT_CURRENCY_MISMATCH", "SERVICE_DEPOSIT_INVALID", "INVALID_AMOUNT", "DEFAULT_DRAWER_UNAVAILABLE", "CURRENCY_MISMATCH", "SHIFT_NOT_OPEN", "SERVICE_BILLING_PRODUCTS_UNAVAILABLE", "CATEGORY_NOT_FOUND", "CATEGORY_DISABLED", "CATEGORY_DISABLE_IN_PROGRESS", "SERVICE_BILLING_PRODUCT_IN_BASKET", "SERVICE_DELIVERY_BASKET_DECISION_REQUIRED", "SERVICE_DELIVERY_BASKET_CURRENCY_MISMATCH", "PRODUCT_NOT_AVAILABLE", "PRODUCT_SALE_LIMIT_EXCEEDED", "PRODUCT_SALE_LIMIT_INVALID", "FX_CONVERSION_UNAVAILABLE", "TRANSACT_ITEMS_LIMIT_EXCEEDED", "SERVICE_LINE_PRICE_TOO_LARGE", "SERVICE_PARTS_RESTORE_EXCEEDS_CONSUMED", "SERVICE_PARTS_RESTORE_EXCEEDS_AMOUNT", "SERVICE_PARTS_STOCK_INSUFFICIENT", "SERVICE_PARTS_PRODUCT_NOT_FOUND", "SERVICE_PARTS_LEDGER_FULL", "SERVICE_PARTS_TOO_MANY", "SERVICE_ORDER_PARTS_CHANGED", "SERVICE_QUOTE_NOT_FOUND", "SERVICE_QUOTE_NOT_OFFERABLE", "SERVICE_QUOTE_HOLDS_TOO_MANY", "SERVICE_QUOTE_SUPERSEDED", "SERVICE_QUOTE_ALREADY_RESOLVED", "SERVICE_QUOTE_LAPSED", "SERVICE_QUOTE_CHANNEL_RESERVED", "SERVICE_QUOTE_CHANNEL_NOT_APPLICABLE", "SERVICE_QUOTE_REASON_NOT_APPLICABLE", "SERVICE_ORDER_QUOTE_CHANGED", "SERVICE_ORDER_NOT_READY", "SERVICE_RENOTIFY_IMPERSONATED", "SERVICE_RENOTIFY_TOO_SOON", "SERVICE_RENOTIFY_CONFLICT", "SERVICE_RENOTIFY_NOT_RECORDED", "SERVICE_RENOTIFY_LEDGER_UNREADABLE", "SERVICE_RENOTIFY_NOT_DISPATCHED", "SERVICE_TIMER_ALREADY_RUNNING", "SERVICE_TIMER_NOT_RUNNING", "SERVICE_TIMER_STOP_CONFLICT", "TECHNICIAN_NOT_CLOCKED_IN", "SERVICE_ORDER_GONE", "SERVICE_WORKLOG_NOT_FOUND", "SERVICE_WORKLOG_NOT_REVERSIBLE", "SERVICE_WORKLOG_ALREADY_REVERSED", "SERVICE_ORDER_WORKLOG_CHANGED", "CART_PROMOTION_UNAVAILABLE", "COUPON_NOT_FOUND", "COUPON_NOT_ACTIVE", "COUPON_EXPIRED", "COUPON_EXHAUSTED", "COUPON_EXHAUSTED_AT_CHECKOUT", "COUPON_MIN_SUBTOTAL", "COUPON_REQUIRES_CUSTOMER", "COUPON_BUDGET_EXHAUSTED", "COUPON_CURRENCY_MISMATCH"];
1491
1518
  export type ServiceOrderErrorCode = (typeof SERVICE_ORDER_ERROR_CODES)[number];
1492
1519
  export {};
@@ -82,6 +82,8 @@ export const SERVICE_TRANSITIONS = {
82
82
  * of an exhaustive `Record` cannot omit one. Same reasoning, and the same
83
83
  * assertion to a non-empty tuple, as `ORDER_FULFILMENT_STATUSES`.
84
84
  */
85
+ /** Every {@link ServiceOrderDocument}, in the order the app offers them. */
86
+ export const SERVICE_ORDER_DOCUMENTS = ['recepcion', 'presupuesto', 'entrega', 'devolucion'];
85
87
  export const SERVICE_STATUSES = Object.keys(SERVICE_TRANSITIONS);
86
88
  /**
87
89
  * The statuses a service order can end in. Nothing transitions out of these.
@@ -261,6 +263,9 @@ export const MAX_SERVICE_PICTURES = 20;
261
263
  * cart keeps its coupon. Remove the coupon from the cart (or decline the
262
264
  * basket) and retry.
263
265
  * - `VALIDATION_FAILED` · 400 — the body or query failed its schema.
266
+ * - `PRINT_JOB_DOCUMENT_NOT_FOUND` · 404 — `GET ?mode=job-document`: the job is
267
+ * unknown to the caller's store, is not a service-order job, was cancelled, is
268
+ * still held, or ended without being sent. One answer for all five.
264
269
  *
265
270
  * ⚠️ `ROLE_FORBIDDEN` here is the router's own role check (a print agent, or a
266
271
  * role no mode admits); cross-cutting gating refusals are NOT repeated —
@@ -281,6 +286,8 @@ export const SERVICE_ORDER_ERROR_CODES = [
281
286
  'REWORK_INDEX_UNAVAILABLE',
282
287
  'STORE_NOT_FOUND',
283
288
  'SERVICE_ORDER_NOT_FOUND',
289
+ // The print agent's `GET ?mode=job-document` — no fetchable service-order job by that id
290
+ 'PRINT_JOB_DOCUMENT_NOT_FOUND',
284
291
  // Intake and edit
285
292
  'CUSTOMER_NOT_FOUND',
286
293
  'PARENT_SERVICE_ORDER_NOT_FOUND',
package/dist/socket.d.ts CHANGED
@@ -26,7 +26,7 @@
26
26
  * A client must ignore actions it does not own rather than assume it
27
27
  * receives all of them.
28
28
  */
29
- export declare const SOCKET_ACTIONS: readonly ["account", "appointments", "appointmentWaitlist", "attendance", "attributes", "automation-rules", "baskets", "cart", "brands", "cash", "catalogOperation", "categories", "campaigns", "customers", "customerNote", "customerAddress", "customerContact", "deliveries", "globals", "inventory", "invoices", "literals", "loyalty", "orders", "presupuestos", "products", "promotions", "segments", "returns", "rma", "templates", "services", "service-templates", "shifts", "stores", "suppliers", "supplier-invoice", "support", "surveys", "users", "warehouses", "zones", "favorites", "webhooks", "account-delete", "baskets-delete", "cart-delete", "log-delete", "notifications", "support-message", "payment_received", "mp_payment_status_changed", "payment_linked", "payment_unlinked", "mercadopago", "mercadopago_dynamic_qr_created", "mercadopago_static_qr_created", "mp_hook_log_appended", "mp_ipn_log_appended", "orderPaymentAttempt", "orderDelivery", "paymentAttemptChanged", "orderPurchaseWithdrawal", "orderReturnRequest", "purchaseWithdrawalChanged", "stripe", "subscription", "caea", "print", "print-order", "print-invoice", "print-product", "print-tag", "print_job_failed", "request_printers", "printers_changed", "agent_status_changed", "print_rules_changed", "printers_active", "agent_command", "maintenance", "currency_auto_updated", "drain_progress", "integration_event_appended", "userActivityRecorded", "mercadolibre_settlement_period", "customDomain", "purchaseOrders", "cycleCounts", "stockTransfers", "workItems", "wholesaleRequests"];
29
+ export declare const SOCKET_ACTIONS: readonly ["account", "appointments", "appointmentWaitlist", "attendance", "attributes", "automation-rules", "baskets", "cart", "brands", "cash", "catalogOperation", "categories", "campaigns", "customers", "customerNote", "customerAddress", "customerContact", "deliveries", "globals", "inventory", "invoices", "literals", "loyalty", "orders", "presupuestos", "products", "promotions", "segments", "returns", "rma", "templates", "services", "service-templates", "shifts", "stores", "suppliers", "supplier-invoice", "support", "surveys", "users", "warehouses", "zones", "favorites", "webhooks", "account-delete", "baskets-delete", "cart-delete", "log-delete", "notifications", "support-message", "payment_received", "mp_payment_status_changed", "payment_linked", "payment_unlinked", "mercadopago", "mercadopago_dynamic_qr_created", "mercadopago_static_qr_created", "mp_hook_log_appended", "mp_ipn_log_appended", "orderPaymentAttempt", "orderDelivery", "paymentAttemptChanged", "orderPurchaseWithdrawal", "orderReturnRequest", "purchaseWithdrawalChanged", "stripe", "subscription", "caea", "print", "print-order", "print-invoice", "print-product", "print-tag", "print-service-order", "print_job_failed", "request_printers", "printers_changed", "agent_status_changed", "print_rules_changed", "printers_active", "agent_command", "maintenance", "currency_auto_updated", "drain_progress", "integration_event_appended", "userActivityRecorded", "mercadolibre_settlement_period", "customDomain", "purchaseOrders", "cycleCounts", "stockTransfers", "workItems", "wholesaleRequests"];
30
30
  /** Union of every server→client data-frame action. */
31
31
  export type SocketAction = (typeof SOCKET_ACTIONS)[number];
32
32
  /**
package/dist/socket.js CHANGED
@@ -582,6 +582,8 @@ export const SOCKET_ACTIONS = [
582
582
  'print-invoice',
583
583
  'print-product',
584
584
  'print-tag',
585
+ // A service-order document, id-only (`PrintServiceOrderFrameData`).
586
+ 'print-service-order',
585
587
  'print_job_failed',
586
588
  // BE → agent: re-send your COMPLETE printer set (carries only `storeId`).
587
589
  // Needed because `register_printers` only fires on connect/local-change, so
package/dist/store.d.ts CHANGED
@@ -108,6 +108,8 @@ declare global {
108
108
  orderReady?: boolean;
109
109
  /** The shipping tag, when an order with a delivery address is marked delivered. */
110
110
  deliveryTag?: boolean;
111
+ /** The intake receipt (comprobante de ingreso), when a service order is created. */
112
+ serviceOrderCreated?: boolean;
111
113
  }
112
114
  /**
113
115
  * One store-wide module a store can switch off for every user — the
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "platform-types",
3
- "version": "1.10.838",
3
+ "version": "1.10.839",
4
4
  "description": "Shared wire and entity contracts for the platform.",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",