@fiado/type-kit 3.444.0 → 3.445.0

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.
@@ -0,0 +1,24 @@
1
+ export type PickupLocationType = 'FIADO_STORE' | 'CARRIER_OFFICE';
2
+ export interface FiadoStorePickupData {
3
+ pickupLocationType: 'FIADO_STORE';
4
+ storeId: string;
5
+ }
6
+ export interface CarrierOfficePickupData {
7
+ pickupLocationType: 'CARRIER_OFFICE';
8
+ carrierOfficeCode: string;
9
+ latitude: number;
10
+ longitude: number;
11
+ recipientName: string;
12
+ recipientPhone: string;
13
+ }
14
+ export type PickupDeliveryData = FiadoStorePickupData | CarrierOfficePickupData;
15
+ export interface HomeDeliveryData {
16
+ street: string;
17
+ addressNumber: string;
18
+ neighborhood: string;
19
+ municipality: string;
20
+ region: string;
21
+ postalCode: string;
22
+ recipientName: string;
23
+ recipientPhone: string;
24
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -1,4 +1,5 @@
1
1
  import { CurrencyId } from '../currency';
2
+ import { PickupDeliveryData, HomeDeliveryData } from './SaleDeliveryData';
2
3
  export declare class SaleResponseDto {
3
4
  id: string;
4
5
  referenceCode: string;
@@ -6,9 +7,41 @@ export declare class SaleResponseDto {
6
7
  buyerDirectorId: string;
7
8
  newAccountDirectorId: string | null;
8
9
  deliveryType: 'PICKUP' | 'HOME';
10
+ /**
11
+ * Dónde había que entregar el dispositivo (retiro en tienda/oficina, u domicilio) —
12
+ * discriminado por `deliveryType`. Requerido porque `Sale_GT` lo requiere desde que existe la
13
+ * tabla; ventas con el objeto vacío son datos corruptos de un bug de persistencia ya corregido
14
+ * (ver memoria `patron-dynamoose-saveunknown-object-anidado`), no un estado válido del contrato.
15
+ */
16
+ deliveryData: PickupDeliveryData | HomeDeliveryData;
9
17
  trackingCode: string | null;
10
18
  providerStatus: string | null;
19
+ /**
20
+ * Detalle textual del status reportado por el proveedor de envío (ej. "en camino a sucursal
21
+ * destino") — DISTINTO de `providerStatus` (arriba), que es el código/estado corto. `null`
22
+ * porque el conector no siempre lo trae (eventos tempranos del envío).
23
+ */
24
+ providerStatusDetail: string | null;
25
+ /**
26
+ * Número de rastreo real que ve el comprador — DISTINTO de `trackingCode` (arriba, que es el ID
27
+ * de correlación interno asignado al CREAR el envío). Este es el que soporte le pasa al
28
+ * cliente cuando reclama. `null` porque el conector no siempre lo trae.
29
+ */
30
+ trackingNumber: string | null;
31
+ /** URL pública de rastreo del proveedor — mismo motivo de nullability que `trackingNumber`. */
32
+ trackingUrl: string | null;
33
+ /** Qué transportadora gestiona el envío — relevante para cuando haya más de un proveedor. */
34
+ shippingProviderId: string;
35
+ /**
36
+ * ID del cobro en transaction-processor-business — el puente para investigar una reclamación de
37
+ * pago sin buscar a mano en logs por `buyerDirectorId` + ventana de tiempo.
38
+ */
39
+ paymentId: string;
11
40
  status: string;
41
+ /** Fecha de compra (epoch ms) — el dato base de cualquier investigación de reclamación. */
42
+ createdAt: number;
43
+ /** Última modificación de la venta (epoch ms). */
44
+ updatedAt: number;
12
45
  /**
13
46
  * Modelo de la variante (resuelto server-side por `variantId`, incluyendo variantes con
14
47
  * stock=0). `null` si la resolución falló (variante borrada o error de infraestructura) — ver
@@ -4,6 +4,7 @@ export * from './CreateDeviceVariantRequestDto';
4
4
  export * from './UpdateDeviceVariantRequestDto';
5
5
  export * from './CreateSaleRequestDto';
6
6
  export * from './SaleResponseDto';
7
+ export * from './SaleDeliveryData';
7
8
  export * from './RedeemSaleCodeRequestDto';
8
9
  export * from './DeviceVariantImageUploadUrlRequestDto';
9
10
  export * from './DeviceVariantImageUploadUrlResponseDto';
@@ -20,6 +20,7 @@ __exportStar(require("./CreateDeviceVariantRequestDto"), exports);
20
20
  __exportStar(require("./UpdateDeviceVariantRequestDto"), exports);
21
21
  __exportStar(require("./CreateSaleRequestDto"), exports);
22
22
  __exportStar(require("./SaleResponseDto"), exports);
23
+ __exportStar(require("./SaleDeliveryData"), exports);
23
24
  __exportStar(require("./RedeemSaleCodeRequestDto"), exports);
24
25
  __exportStar(require("./DeviceVariantImageUploadUrlRequestDto"), exports);
25
26
  __exportStar(require("./DeviceVariantImageUploadUrlResponseDto"), exports);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fiado/type-kit",
3
- "version": "3.444.0",
3
+ "version": "3.445.0",
4
4
  "description": "",
5
5
  "main": "bin/index.js",
6
6
  "types": "bin/index.d.ts",
@@ -0,0 +1,41 @@
1
+ // Shape de `deliveryData` de una venta de celular. Portado 1:1 (mismos nombres y tipos) desde
2
+ // `cell-phone-sales-business/src/infrastructure/entities/SaleRow.ts` (TD-011, shape CONFIRMADO
3
+ // por el líder técnico, no inferido) — hasta ahora vivía SOLO como interfaces locales del lambda,
4
+ // nunca se había publicado a `@fiado/type-kit`. Se publica acá porque `SaleResponseDto.deliveryData`
5
+ // (agregado para que backoffice pueda investigar reclamaciones sin ir a logs) necesita un tipo real,
6
+ // no `Record<string, unknown>` — y las DTOs de type-kit no pueden depender de tipos locales de un lambda.
7
+ //
8
+ // El retiro en tienda Fiado (`FIADO_STORE`) es un flujo INTERNO que nunca dispara un envío externo;
9
+ // solo el retiro en oficina de transportadora (`CARRIER_OFFICE`) lo hace — por eso la unión
10
+ // discriminada por `pickupLocationType` en vez de un objeto plano con campos opcionales.
11
+ export type PickupLocationType = 'FIADO_STORE' | 'CARRIER_OFFICE';
12
+
13
+ export interface FiadoStorePickupData {
14
+ pickupLocationType: 'FIADO_STORE';
15
+ storeId: string;
16
+ }
17
+
18
+ // Campos genéricos/agnósticos de proveedor a propósito (`carrierOfficeCode`, no el nombre real del
19
+ // campo de Estafeta): la traducción a los nombres del contrato de cada transportadora vive en el
20
+ // adaptador del lambda (`CreateShippingRequestMapper`), nunca en este tipo compartido.
21
+ export interface CarrierOfficePickupData {
22
+ pickupLocationType: 'CARRIER_OFFICE';
23
+ carrierOfficeCode: string;
24
+ latitude: number;
25
+ longitude: number;
26
+ recipientName: string;
27
+ recipientPhone: string;
28
+ }
29
+
30
+ export type PickupDeliveryData = FiadoStorePickupData | CarrierOfficePickupData;
31
+
32
+ export interface HomeDeliveryData {
33
+ street: string;
34
+ addressNumber: string;
35
+ neighborhood: string;
36
+ municipality: string;
37
+ region: string;
38
+ postalCode: string;
39
+ recipientName: string;
40
+ recipientPhone: string;
41
+ }
@@ -1,4 +1,5 @@
1
1
  import { CurrencyId } from '../currency';
2
+ import { PickupDeliveryData, HomeDeliveryData } from './SaleDeliveryData';
2
3
 
3
4
  export class SaleResponseDto {
4
5
  id!: string;
@@ -7,9 +8,41 @@ export class SaleResponseDto {
7
8
  buyerDirectorId!: string;
8
9
  newAccountDirectorId!: string | null;
9
10
  deliveryType!: 'PICKUP' | 'HOME';
11
+ /**
12
+ * Dónde había que entregar el dispositivo (retiro en tienda/oficina, u domicilio) —
13
+ * discriminado por `deliveryType`. Requerido porque `Sale_GT` lo requiere desde que existe la
14
+ * tabla; ventas con el objeto vacío son datos corruptos de un bug de persistencia ya corregido
15
+ * (ver memoria `patron-dynamoose-saveunknown-object-anidado`), no un estado válido del contrato.
16
+ */
17
+ deliveryData!: PickupDeliveryData | HomeDeliveryData;
10
18
  trackingCode!: string | null;
11
19
  providerStatus!: string | null;
20
+ /**
21
+ * Detalle textual del status reportado por el proveedor de envío (ej. "en camino a sucursal
22
+ * destino") — DISTINTO de `providerStatus` (arriba), que es el código/estado corto. `null`
23
+ * porque el conector no siempre lo trae (eventos tempranos del envío).
24
+ */
25
+ providerStatusDetail!: string | null;
26
+ /**
27
+ * Número de rastreo real que ve el comprador — DISTINTO de `trackingCode` (arriba, que es el ID
28
+ * de correlación interno asignado al CREAR el envío). Este es el que soporte le pasa al
29
+ * cliente cuando reclama. `null` porque el conector no siempre lo trae.
30
+ */
31
+ trackingNumber!: string | null;
32
+ /** URL pública de rastreo del proveedor — mismo motivo de nullability que `trackingNumber`. */
33
+ trackingUrl!: string | null;
34
+ /** Qué transportadora gestiona el envío — relevante para cuando haya más de un proveedor. */
35
+ shippingProviderId!: string;
36
+ /**
37
+ * ID del cobro en transaction-processor-business — el puente para investigar una reclamación de
38
+ * pago sin buscar a mano en logs por `buyerDirectorId` + ventana de tiempo.
39
+ */
40
+ paymentId!: string;
12
41
  status!: string;
42
+ /** Fecha de compra (epoch ms) — el dato base de cualquier investigación de reclamación. */
43
+ createdAt!: number;
44
+ /** Última modificación de la venta (epoch ms). */
45
+ updatedAt!: number;
13
46
  /**
14
47
  * Modelo de la variante (resuelto server-side por `variantId`, incluyendo variantes con
15
48
  * stock=0). `null` si la resolución falló (variante borrada o error de infraestructura) — ver
@@ -4,6 +4,7 @@ export * from './CreateDeviceVariantRequestDto';
4
4
  export * from './UpdateDeviceVariantRequestDto';
5
5
  export * from './CreateSaleRequestDto';
6
6
  export * from './SaleResponseDto';
7
+ export * from './SaleDeliveryData';
7
8
  export * from './RedeemSaleCodeRequestDto';
8
9
  export * from './DeviceVariantImageUploadUrlRequestDto';
9
10
  export * from './DeviceVariantImageUploadUrlResponseDto';