arca-sdk 1.1.0 → 1.1.2

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.
package/dist/index.d.cts CHANGED
@@ -216,6 +216,8 @@ interface Buyer {
216
216
  docType: TaxIdType;
217
217
  /** Número de documento (sin guiones) */
218
218
  docNumber: string;
219
+ /** Opcional: Condición frente al IVA del receptor (ej: 5 para Consumidor Final, 2 para Monotributo) */
220
+ vatCondition?: number;
219
221
  }
220
222
  /**
221
223
  * Comprobante asociado (Requerido al emitir Notas de Crédito/Débito)
@@ -232,6 +234,23 @@ interface AssociatedInvoice {
232
234
  /** Fecha de emisión del comprobante original */
233
235
  date?: Date;
234
236
  }
237
+ /**
238
+ * Campo opcional de AFIP (ej. Condición IVA Receptor RG 5616)
239
+ */
240
+ interface InvoiceOptional {
241
+ /** ID del dato opcional (ej. 1010) */
242
+ id: string | number;
243
+ /** Valor del dato opcional */
244
+ value: string;
245
+ }
246
+ /**
247
+ * Fechas de servicio (Obligatorio si concept es 2 o 3)
248
+ */
249
+ interface ServiceDates {
250
+ startDate: Date;
251
+ endDate: Date;
252
+ dueDate: Date;
253
+ }
235
254
  /**
236
255
  * Request para emitir comprobante
237
256
  */
@@ -246,6 +265,8 @@ interface IssueInvoiceRequest {
246
265
  items?: InvoiceItem[];
247
266
  /** Comprobantes asociados (Obligatorio para Nota de Crédito/Débito) */
248
267
  associatedInvoices?: AssociatedInvoice[];
268
+ /** Fechas de servicio (Obligatorio si concept es 2 o 3) */
269
+ serviceDates?: ServiceDates;
249
270
  /** Monto total (requerido si no hay items) */
250
271
  total?: number;
251
272
  /** Desglose de IVA (requerido para Factura A/B) */
@@ -258,6 +279,8 @@ interface IssueInvoiceRequest {
258
279
  includesVAT?: boolean;
259
280
  /** Fecha del comprobante (default: hoy) */
260
281
  date?: Date;
282
+ /** Campos opcionales adjuntos (ej: Condición IVA receptor ID 1010) */
283
+ optionals?: InvoiceOptional[];
261
284
  }
262
285
  /**
263
286
  * Respuesta CAE (Código de Autorización Electrónico)
@@ -320,6 +343,8 @@ interface InvoiceDetails {
320
343
  caeExpiry: string;
321
344
  /** Resultado */
322
345
  result: 'A' | 'R';
346
+ /** Campos opcionales adjuntos */
347
+ optionals?: InvoiceOptional[];
323
348
  }
324
349
  /**
325
350
  * Punto de venta habilitado en ARCA
@@ -394,6 +419,7 @@ declare class WsfeService {
394
419
  total: number;
395
420
  concept?: BillingConcept;
396
421
  date?: Date;
422
+ optionals?: InvoiceOptional[];
397
423
  }): Promise<CAEResponse>;
398
424
  /**
399
425
  * Emite un Ticket C con detalle de items.
@@ -403,6 +429,7 @@ declare class WsfeService {
403
429
  items: InvoiceItem[];
404
430
  concept?: BillingConcept;
405
431
  date?: Date;
432
+ optionals?: InvoiceOptional[];
406
433
  }): Promise<CAEResponse>;
407
434
  /**
408
435
  * Emite una Factura A (Responsable Inscripto a Responsable Inscripto, con IVA discriminado).
@@ -414,6 +441,7 @@ declare class WsfeService {
414
441
  concept?: BillingConcept;
415
442
  date?: Date;
416
443
  includesVAT?: boolean;
444
+ optionals?: InvoiceOptional[];
417
445
  }): Promise<CAEResponse>;
418
446
  /**
419
447
  * Emite una Factura B (con IVA discriminado).
@@ -425,6 +453,7 @@ declare class WsfeService {
425
453
  concept?: BillingConcept;
426
454
  date?: Date;
427
455
  includesVAT?: boolean;
456
+ optionals?: InvoiceOptional[];
428
457
  }): Promise<CAEResponse>;
429
458
  /**
430
459
  * Emite una Factura C (consumidor final, sin discriminación de IVA).
@@ -434,6 +463,7 @@ declare class WsfeService {
434
463
  concept?: BillingConcept;
435
464
  date?: Date;
436
465
  buyer?: Buyer;
466
+ optionals?: InvoiceOptional[];
437
467
  }): Promise<CAEResponse>;
438
468
  /**
439
469
  * Emite un Recibo A (con IVA discriminado).
@@ -444,6 +474,7 @@ declare class WsfeService {
444
474
  concept?: BillingConcept;
445
475
  date?: Date;
446
476
  includesVAT?: boolean;
477
+ optionals?: InvoiceOptional[];
447
478
  }): Promise<CAEResponse>;
448
479
  /**
449
480
  * Emite un Recibo B (con IVA discriminado).
@@ -454,6 +485,7 @@ declare class WsfeService {
454
485
  concept?: BillingConcept;
455
486
  date?: Date;
456
487
  includesVAT?: boolean;
488
+ optionals?: InvoiceOptional[];
457
489
  }): Promise<CAEResponse>;
458
490
  /**
459
491
  * Emite un Recibo C (sin discriminación de IVA).
@@ -463,6 +495,7 @@ declare class WsfeService {
463
495
  concept?: BillingConcept;
464
496
  date?: Date;
465
497
  buyer?: Buyer;
498
+ optionals?: InvoiceOptional[];
466
499
  }): Promise<CAEResponse>;
467
500
  /**
468
501
  * Emite una Nota de Crédito A.
@@ -475,6 +508,7 @@ declare class WsfeService {
475
508
  concept?: BillingConcept;
476
509
  date?: Date;
477
510
  includesVAT?: boolean;
511
+ optionals?: InvoiceOptional[];
478
512
  }): Promise<CAEResponse>;
479
513
  /**
480
514
  * Emite una Nota de Crédito B.
@@ -487,6 +521,7 @@ declare class WsfeService {
487
521
  concept?: BillingConcept;
488
522
  date?: Date;
489
523
  includesVAT?: boolean;
524
+ optionals?: InvoiceOptional[];
490
525
  }): Promise<CAEResponse>;
491
526
  /**
492
527
  * Emite una Nota de Crédito C.
@@ -498,6 +533,7 @@ declare class WsfeService {
498
533
  concept?: BillingConcept;
499
534
  date?: Date;
500
535
  buyer?: Buyer;
536
+ optionals?: InvoiceOptional[];
501
537
  }): Promise<CAEResponse>;
502
538
  /**
503
539
  * Emite una Nota de Débito A.
@@ -510,6 +546,7 @@ declare class WsfeService {
510
546
  concept?: BillingConcept;
511
547
  date?: Date;
512
548
  includesVAT?: boolean;
549
+ optionals?: InvoiceOptional[];
513
550
  }): Promise<CAEResponse>;
514
551
  /**
515
552
  * Emite una Nota de Débito B.
@@ -522,6 +559,7 @@ declare class WsfeService {
522
559
  concept?: BillingConcept;
523
560
  date?: Date;
524
561
  includesVAT?: boolean;
562
+ optionals?: InvoiceOptional[];
525
563
  }): Promise<CAEResponse>;
526
564
  /**
527
565
  * Emite una Nota de Débito C.
@@ -533,6 +571,7 @@ declare class WsfeService {
533
571
  concept?: BillingConcept;
534
572
  date?: Date;
535
573
  buyer?: Buyer;
574
+ optionals?: InvoiceOptional[];
536
575
  }): Promise<CAEResponse>;
537
576
  /**
538
577
  * Consulta un comprobante ya emitido (FECompConsultar).
package/dist/index.d.ts CHANGED
@@ -216,6 +216,8 @@ interface Buyer {
216
216
  docType: TaxIdType;
217
217
  /** Número de documento (sin guiones) */
218
218
  docNumber: string;
219
+ /** Opcional: Condición frente al IVA del receptor (ej: 5 para Consumidor Final, 2 para Monotributo) */
220
+ vatCondition?: number;
219
221
  }
220
222
  /**
221
223
  * Comprobante asociado (Requerido al emitir Notas de Crédito/Débito)
@@ -232,6 +234,23 @@ interface AssociatedInvoice {
232
234
  /** Fecha de emisión del comprobante original */
233
235
  date?: Date;
234
236
  }
237
+ /**
238
+ * Campo opcional de AFIP (ej. Condición IVA Receptor RG 5616)
239
+ */
240
+ interface InvoiceOptional {
241
+ /** ID del dato opcional (ej. 1010) */
242
+ id: string | number;
243
+ /** Valor del dato opcional */
244
+ value: string;
245
+ }
246
+ /**
247
+ * Fechas de servicio (Obligatorio si concept es 2 o 3)
248
+ */
249
+ interface ServiceDates {
250
+ startDate: Date;
251
+ endDate: Date;
252
+ dueDate: Date;
253
+ }
235
254
  /**
236
255
  * Request para emitir comprobante
237
256
  */
@@ -246,6 +265,8 @@ interface IssueInvoiceRequest {
246
265
  items?: InvoiceItem[];
247
266
  /** Comprobantes asociados (Obligatorio para Nota de Crédito/Débito) */
248
267
  associatedInvoices?: AssociatedInvoice[];
268
+ /** Fechas de servicio (Obligatorio si concept es 2 o 3) */
269
+ serviceDates?: ServiceDates;
249
270
  /** Monto total (requerido si no hay items) */
250
271
  total?: number;
251
272
  /** Desglose de IVA (requerido para Factura A/B) */
@@ -258,6 +279,8 @@ interface IssueInvoiceRequest {
258
279
  includesVAT?: boolean;
259
280
  /** Fecha del comprobante (default: hoy) */
260
281
  date?: Date;
282
+ /** Campos opcionales adjuntos (ej: Condición IVA receptor ID 1010) */
283
+ optionals?: InvoiceOptional[];
261
284
  }
262
285
  /**
263
286
  * Respuesta CAE (Código de Autorización Electrónico)
@@ -320,6 +343,8 @@ interface InvoiceDetails {
320
343
  caeExpiry: string;
321
344
  /** Resultado */
322
345
  result: 'A' | 'R';
346
+ /** Campos opcionales adjuntos */
347
+ optionals?: InvoiceOptional[];
323
348
  }
324
349
  /**
325
350
  * Punto de venta habilitado en ARCA
@@ -394,6 +419,7 @@ declare class WsfeService {
394
419
  total: number;
395
420
  concept?: BillingConcept;
396
421
  date?: Date;
422
+ optionals?: InvoiceOptional[];
397
423
  }): Promise<CAEResponse>;
398
424
  /**
399
425
  * Emite un Ticket C con detalle de items.
@@ -403,6 +429,7 @@ declare class WsfeService {
403
429
  items: InvoiceItem[];
404
430
  concept?: BillingConcept;
405
431
  date?: Date;
432
+ optionals?: InvoiceOptional[];
406
433
  }): Promise<CAEResponse>;
407
434
  /**
408
435
  * Emite una Factura A (Responsable Inscripto a Responsable Inscripto, con IVA discriminado).
@@ -414,6 +441,7 @@ declare class WsfeService {
414
441
  concept?: BillingConcept;
415
442
  date?: Date;
416
443
  includesVAT?: boolean;
444
+ optionals?: InvoiceOptional[];
417
445
  }): Promise<CAEResponse>;
418
446
  /**
419
447
  * Emite una Factura B (con IVA discriminado).
@@ -425,6 +453,7 @@ declare class WsfeService {
425
453
  concept?: BillingConcept;
426
454
  date?: Date;
427
455
  includesVAT?: boolean;
456
+ optionals?: InvoiceOptional[];
428
457
  }): Promise<CAEResponse>;
429
458
  /**
430
459
  * Emite una Factura C (consumidor final, sin discriminación de IVA).
@@ -434,6 +463,7 @@ declare class WsfeService {
434
463
  concept?: BillingConcept;
435
464
  date?: Date;
436
465
  buyer?: Buyer;
466
+ optionals?: InvoiceOptional[];
437
467
  }): Promise<CAEResponse>;
438
468
  /**
439
469
  * Emite un Recibo A (con IVA discriminado).
@@ -444,6 +474,7 @@ declare class WsfeService {
444
474
  concept?: BillingConcept;
445
475
  date?: Date;
446
476
  includesVAT?: boolean;
477
+ optionals?: InvoiceOptional[];
447
478
  }): Promise<CAEResponse>;
448
479
  /**
449
480
  * Emite un Recibo B (con IVA discriminado).
@@ -454,6 +485,7 @@ declare class WsfeService {
454
485
  concept?: BillingConcept;
455
486
  date?: Date;
456
487
  includesVAT?: boolean;
488
+ optionals?: InvoiceOptional[];
457
489
  }): Promise<CAEResponse>;
458
490
  /**
459
491
  * Emite un Recibo C (sin discriminación de IVA).
@@ -463,6 +495,7 @@ declare class WsfeService {
463
495
  concept?: BillingConcept;
464
496
  date?: Date;
465
497
  buyer?: Buyer;
498
+ optionals?: InvoiceOptional[];
466
499
  }): Promise<CAEResponse>;
467
500
  /**
468
501
  * Emite una Nota de Crédito A.
@@ -475,6 +508,7 @@ declare class WsfeService {
475
508
  concept?: BillingConcept;
476
509
  date?: Date;
477
510
  includesVAT?: boolean;
511
+ optionals?: InvoiceOptional[];
478
512
  }): Promise<CAEResponse>;
479
513
  /**
480
514
  * Emite una Nota de Crédito B.
@@ -487,6 +521,7 @@ declare class WsfeService {
487
521
  concept?: BillingConcept;
488
522
  date?: Date;
489
523
  includesVAT?: boolean;
524
+ optionals?: InvoiceOptional[];
490
525
  }): Promise<CAEResponse>;
491
526
  /**
492
527
  * Emite una Nota de Crédito C.
@@ -498,6 +533,7 @@ declare class WsfeService {
498
533
  concept?: BillingConcept;
499
534
  date?: Date;
500
535
  buyer?: Buyer;
536
+ optionals?: InvoiceOptional[];
501
537
  }): Promise<CAEResponse>;
502
538
  /**
503
539
  * Emite una Nota de Débito A.
@@ -510,6 +546,7 @@ declare class WsfeService {
510
546
  concept?: BillingConcept;
511
547
  date?: Date;
512
548
  includesVAT?: boolean;
549
+ optionals?: InvoiceOptional[];
513
550
  }): Promise<CAEResponse>;
514
551
  /**
515
552
  * Emite una Nota de Débito B.
@@ -522,6 +559,7 @@ declare class WsfeService {
522
559
  concept?: BillingConcept;
523
560
  date?: Date;
524
561
  includesVAT?: boolean;
562
+ optionals?: InvoiceOptional[];
525
563
  }): Promise<CAEResponse>;
526
564
  /**
527
565
  * Emite una Nota de Débito C.
@@ -533,6 +571,7 @@ declare class WsfeService {
533
571
  concept?: BillingConcept;
534
572
  date?: Date;
535
573
  buyer?: Buyer;
574
+ optionals?: InvoiceOptional[];
536
575
  }): Promise<CAEResponse>;
537
576
  /**
538
577
  * Consulta un comprobante ya emitido (FECompConsultar).
package/dist/index.js CHANGED
@@ -678,7 +678,8 @@ var WsfeService = class _WsfeService {
678
678
  buyer: {
679
679
  docType: 99 /* FINAL_CONSUMER */,
680
680
  docNumber: "0"
681
- }
681
+ },
682
+ optionals: params.optionals
682
683
  });
683
684
  }
684
685
  /**
@@ -695,7 +696,8 @@ var WsfeService = class _WsfeService {
695
696
  buyer: {
696
697
  docType: 99 /* FINAL_CONSUMER */,
697
698
  docNumber: "0"
698
- }
699
+ },
700
+ optionals: params.optionals
699
701
  });
700
702
  return { ...cae, items: params.items };
701
703
  }
@@ -847,6 +849,11 @@ var WsfeService = class _WsfeService {
847
849
  );
848
850
  }
849
851
  const det = data.ResultGet;
852
+ let optionals;
853
+ if (det.Opcionales && det.Opcionales.Opcional) {
854
+ const optList = Array.isArray(det.Opcionales.Opcional) ? det.Opcionales.Opcional : [det.Opcionales.Opcional];
855
+ optionals = optList.map((o) => ({ id: String(o.Id), value: String(o.Valor) }));
856
+ }
850
857
  return {
851
858
  invoiceType: Number(det.CbteTipo),
852
859
  pointOfSale: Number(det.PtoVta),
@@ -860,7 +867,8 @@ var WsfeService = class _WsfeService {
860
867
  vat: Number(det.ImpIVA),
861
868
  cae: String(det.CodAutorizacion),
862
869
  caeExpiry: String(det.FchVto),
863
- result: det.Resultado
870
+ result: det.Resultado,
871
+ optionals
864
872
  };
865
873
  }
866
874
  /**
@@ -933,7 +941,9 @@ var WsfeService = class _WsfeService {
933
941
  associatedInvoices: params.associatedInvoices,
934
942
  date: params.date,
935
943
  vatData,
936
- includesVAT
944
+ includesVAT,
945
+ optionals: params.optionals,
946
+ serviceDates: params.serviceDates
937
947
  });
938
948
  }
939
949
  /**
@@ -952,7 +962,9 @@ var WsfeService = class _WsfeService {
952
962
  docNumber: "0"
953
963
  },
954
964
  items: params.items,
955
- associatedInvoices: params.associatedInvoices
965
+ associatedInvoices: params.associatedInvoices,
966
+ optionals: params.optionals,
967
+ serviceDates: params.serviceDates
956
968
  });
957
969
  }
958
970
  /**
@@ -999,10 +1011,12 @@ var WsfeService = class _WsfeService {
999
1011
  date: request.date || /* @__PURE__ */ new Date(),
1000
1012
  buyer: request.buyer,
1001
1013
  associatedInvoices: request.associatedInvoices,
1014
+ serviceDates: request.serviceDates,
1002
1015
  net,
1003
1016
  vat,
1004
1017
  total,
1005
- vatData: request.vatData
1018
+ vatData: request.vatData,
1019
+ optionals: request.optionals
1006
1020
  });
1007
1021
  const endpoint = getWsfeEndpoint(this.config.environment);
1008
1022
  const response = await callArcaApi(endpoint, {
@@ -1159,6 +1173,31 @@ var WsfeService = class _WsfeService {
1159
1173
  });
1160
1174
  asocXml += "\n </ar:CbtesAsoc>";
1161
1175
  }
1176
+ let optXml = "";
1177
+ if (params.optionals && params.optionals.length > 0) {
1178
+ optXml = "<ar:Opcionales>";
1179
+ params.optionals.forEach((opt) => {
1180
+ optXml += `
1181
+ <ar:Opcional>
1182
+ <ar:Id>${opt.id}</ar:Id>
1183
+ <ar:Valor>${opt.value}</ar:Valor>
1184
+ </ar:Opcional>`;
1185
+ });
1186
+ optXml += "\n </ar:Opcionales>";
1187
+ }
1188
+ const condicionIVAReceptorXml = params.buyer?.vatCondition !== void 0 ? `
1189
+ <ar:CondicionIVAReceptorId>${params.buyer.vatCondition}</ar:CondicionIVAReceptorId>` : "";
1190
+ let fechasServicioXml = "";
1191
+ if (params.concept === 2 /* SERVICES */ || params.concept === 3 /* PRODUCTS_AND_SERVICES */) {
1192
+ const defaultDateStr = params.date.toISOString().split("T")[0].replace(/-/g, "");
1193
+ const startDateStr = params.serviceDates?.startDate ? params.serviceDates.startDate.toISOString().split("T")[0].replace(/-/g, "") : defaultDateStr;
1194
+ const endDateStr = params.serviceDates?.endDate ? params.serviceDates.endDate.toISOString().split("T")[0].replace(/-/g, "") : defaultDateStr;
1195
+ const dueDateStr = params.serviceDates?.dueDate ? params.serviceDates.dueDate.toISOString().split("T")[0].replace(/-/g, "") : defaultDateStr;
1196
+ fechasServicioXml = `
1197
+ <ar:FchServDesde>${startDateStr}</ar:FchServDesde>
1198
+ <ar:FchServHasta>${endDateStr}</ar:FchServHasta>
1199
+ <ar:FchVtoPago>${dueDateStr}</ar:FchVtoPago>`;
1200
+ }
1162
1201
  return `<?xml version="1.0" encoding="UTF-8"?>
1163
1202
  <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
1164
1203
  xmlns:ar="http://ar.gov.afip.dif.FEV1/">
@@ -1180,7 +1219,7 @@ var WsfeService = class _WsfeService {
1180
1219
  <ar:FECAEDetRequest>
1181
1220
  <ar:Concepto>${params.concept}</ar:Concepto>
1182
1221
  <ar:DocTipo>${params.buyer?.docType || 99}</ar:DocTipo>
1183
- <ar:DocNro>${params.buyer?.docNumber || 0}</ar:DocNro>
1222
+ <ar:DocNro>${params.buyer?.docNumber || 0}</ar:DocNro>${condicionIVAReceptorXml}
1184
1223
  <ar:CbteDesde>${params.invoiceNumber}</ar:CbteDesde>
1185
1224
  <ar:CbteHasta>${params.invoiceNumber}</ar:CbteHasta>
1186
1225
  <ar:CbteFch>${dateStr}</ar:CbteFch>
@@ -1191,9 +1230,10 @@ var WsfeService = class _WsfeService {
1191
1230
  <ar:ImpIVA>${params.vat.toFixed(2)}</ar:ImpIVA>
1192
1231
  <ar:ImpTrib>0.00</ar:ImpTrib>
1193
1232
  <ar:MonId>PES</ar:MonId>
1194
- <ar:MonCotiz>1</ar:MonCotiz>
1233
+ <ar:MonCotiz>1</ar:MonCotiz>${fechasServicioXml}
1195
1234
  ${asocXml}
1196
1235
  ${vatXml}
1236
+ ${optXml}
1197
1237
  </ar:FECAEDetRequest>
1198
1238
  </ar:FeDetReq>
1199
1239
  </ar:FeCAEReq>