@ramiidv/arca-agro 0.5.0 → 0.6.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.
- package/CHANGELOG.md +34 -0
- package/README.md +229 -202
- package/dist/cpe-client.d.ts +14 -2
- package/dist/cpe-client.d.ts.map +1 -1
- package/dist/cpe-client.js +60 -48
- package/dist/cpe-client.js.map +1 -1
- package/dist/cpe-schemas.d.ts +12 -0
- package/dist/cpe-schemas.d.ts.map +1 -1
- package/dist/cpe-schemas.js +16 -0
- package/dist/cpe-schemas.js.map +1 -1
- package/dist/cpe-types.d.ts +25 -6
- package/dist/cpe-types.d.ts.map +1 -1
- package/dist/errors.d.ts +30 -6
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +39 -11
- package/dist/errors.js.map +1 -1
- package/dist/index.d.ts +7 -6
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -3
- package/dist/index.js.map +1 -1
- package/dist/internal.d.ts +49 -0
- package/dist/internal.d.ts.map +1 -0
- package/dist/internal.js +184 -0
- package/dist/internal.js.map +1 -0
- package/dist/lpg-client.d.ts +42 -6
- package/dist/lpg-client.d.ts.map +1 -1
- package/dist/lpg-client.js +130 -59
- package/dist/lpg-client.js.map +1 -1
- package/dist/lpg-schemas.d.ts +18 -0
- package/dist/lpg-schemas.d.ts.map +1 -1
- package/dist/lpg-schemas.js +227 -50
- package/dist/lpg-schemas.js.map +1 -1
- package/dist/lpg-types.d.ts +178 -11
- package/dist/lpg-types.d.ts.map +1 -1
- package/dist/schema.d.ts +7 -3
- package/dist/schema.d.ts.map +1 -1
- package/dist/schema.js +10 -5
- package/dist/schema.js.map +1 -1
- package/dist/types.d.ts +10 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/validation.d.ts +17 -2
- package/dist/validation.d.ts.map +1 -1
- package/dist/validation.js +29 -2
- package/dist/validation.js.map +1 -1
- package/llms.txt +88 -62
- package/package.json +2 -2
package/llms.txt
CHANGED
|
@@ -1,106 +1,132 @@
|
|
|
1
|
-
# @ramiidv/arca-agro
|
|
1
|
+
# @ramiidv/arca-agro
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
> SDK en TypeScript para los web services agropecuarios SOAP de ARCA (ex AFIP), con autenticación WSAA automática (vía `@ramiidv/arca-common`): WSCPE (Carta de Porte Electrónica de granos, automotor y ferroviaria) y WSLPG (Liquidación Primaria de Granos, ajustes y certificación primaria `cg*`).
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
WSCTG (Código de Trazabilidad de Granos) no está incluido: se derogó el 1/11/2021 (RG 5017/2021) y sus endpoints responden 404. El número de CTG lo devuelve WSCPE (`cabecera.nroCTG`).
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
- WSLPG - Liquidación Primaria de Granos (primary grain settlement) and certificación primaria (cg*)
|
|
7
|
+
## Instalación
|
|
9
8
|
|
|
10
|
-
|
|
9
|
+
```bash
|
|
10
|
+
npm install @ramiidv/arca-agro
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
Requisitos: Node >= 20.19. Solo ESM; desde CommonJS se carga con `require()` (require(esm)). Depende de `@ramiidv/arca-common`. El certificado tiene que tener asociados los servicios `wscpe` y/o `wslpg` en WSAA.
|
|
11
14
|
|
|
12
|
-
##
|
|
15
|
+
## Arquitectura
|
|
13
16
|
|
|
14
17
|
```
|
|
15
|
-
ArcaAgro
|
|
16
|
-
├── .cpe → CpeClient (WSCPE) → WSAA
|
|
17
|
-
└── .lpg → LpgClient (WSLPG) → WSAA
|
|
18
|
+
ArcaAgro (extiende ArcaSdkBase)
|
|
19
|
+
├── .cpe → CpeClient (WSCPE) → servicio WSAA "wscpe"
|
|
20
|
+
└── .lpg → LpgClient (WSLPG) → servicio WSAA "wslpg"
|
|
18
21
|
```
|
|
19
22
|
|
|
20
|
-
|
|
23
|
+
Los sub-clientes solo se obtienen desde `ArcaAgro` (sus clases se exportan como tipos). Todo método público acepta un último argumento opcional `opts?: CallOptions` (`{ signal?: AbortSignal }`).
|
|
21
24
|
|
|
22
|
-
##
|
|
25
|
+
## Configuración
|
|
23
26
|
|
|
24
|
-
|
|
25
|
-
|---|---|---|---|
|
|
26
|
-
| WSCPE | https://cpea-ws-qaext.afip.gob.ar/wscpe/services/soap | https://cpea-ws.afip.gob.ar/wscpe/services/soap | https://serviciosjava.afip.gob.ar/wscpe/ |
|
|
27
|
-
| WSLPG | https://fwshomo.afip.gov.ar/wslpg/LpgService | https://serviciosjava.afip.gob.ar/wslpg/LpgService | http://serviciosjava.afip.gob.ar/wslpg/ (http!) |
|
|
27
|
+
`ArcaAgroConfig` extiende `ArcaSdkConfig` de `@ramiidv/arca-common`: `cuit` (number | string, se valida el dígito verificador), `cert`, `key`, `keyPassphrase?`, `production` (default false), `timeout` (30000), `retries` (1, solo consultas), `retryDelayMs` (1000), `tokenTTLMinutes` (720), `ticketStorage`, `clockOffsetMs`, `autoClockSkew`, `loginErrorCooldownMs`, `permanentErrorCooldownMs`, `fetch`, `legacyTls`, `onEvent`, `wsaa` (WsaaClient compartido, mismo entorno), `signal` (cancela todas las llamadas de la instancia), `endpoints?: { cpe?, lpg?, wsaa? }`.
|
|
28
28
|
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
- `dummy` (both): empty SOAP Body, no auth.
|
|
29
|
+
```typescript
|
|
30
|
+
import fs from 'node:fs';
|
|
31
|
+
import { ArcaAgro, FileTicketStorage, TIPO_CPE } from '@ramiidv/arca-agro';
|
|
33
32
|
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
33
|
+
const agro = new ArcaAgro({
|
|
34
|
+
cuit: '20-12345678-6',
|
|
35
|
+
cert: fs.readFileSync('cert.pem', 'utf-8'),
|
|
36
|
+
key: fs.readFileSync('key.pem', 'utf-8'),
|
|
37
|
+
production: false,
|
|
38
|
+
ticketStorage: new FileTicketStorage('.arca-tickets'),
|
|
39
|
+
});
|
|
40
|
+
```
|
|
37
41
|
|
|
38
42
|
## ArcaAgro
|
|
39
43
|
|
|
40
44
|
- `cpe: CpeClient`, `lpg: LpgClient`
|
|
41
|
-
- `status(opts?)` → `{ cpe: AgroServiceStatus, lpg: AgroServiceStatus }
|
|
45
|
+
- `status(opts?)` → `{ cpe: AgroServiceStatus, lpg: AgroServiceStatus }`, donde `AgroServiceStatus = { ok: true, status } | { ok: false, error, status? }` (`statusOf` de common: la caída de un servicio no oculta el otro).
|
|
42
46
|
- `clearAuthCache(): Promise<void>`
|
|
43
|
-
- `on(
|
|
47
|
+
- `on(tipo, handler)`, `off(tipo, handler)`: eventos `auth:*` y `request:*`.
|
|
44
48
|
|
|
45
|
-
##
|
|
49
|
+
## Endpoints y namespaces
|
|
46
50
|
|
|
47
|
-
|
|
51
|
+
| Servicio | Homologación | Producción | Namespace |
|
|
52
|
+
|---|---|---|---|
|
|
53
|
+
| WSCPE | https://cpea-ws-qaext.afip.gob.ar/wscpe/services/soap | https://cpea-ws.afip.gob.ar/wscpe/services/soap | https://serviciosjava.afip.gob.ar/wscpe/ |
|
|
54
|
+
| WSLPG | https://fwshomo.afip.gov.ar/wslpg/LpgService | https://serviciosjava.afip.gob.ar/wslpg/LpgService | http://serviciosjava.afip.gob.ar/wslpg/ (http) |
|
|
48
55
|
|
|
49
|
-
|
|
56
|
+
Constantes: `CPE_ENDPOINTS`, `LPG_ENDPOINTS`, `CPE_NAMESPACE`, `LPG_NAMESPACE`, `WSAA_SERVICES`.
|
|
50
57
|
|
|
51
|
-
|
|
52
|
-
- `
|
|
53
|
-
|
|
58
|
+
Detalles SOAP (de los WSDL oficiales):
|
|
59
|
+
- WSCPE: elemento de request `<Op>Req` (operación con mayúscula, ej: `AutorizarCPEAutomotorReq`) y de respuesta `<Op>Resp` con un hijo `respuesta` (excepción: `consultarRenspa` responde `ConsultarRenspaRes`). SOAPAction = namespace + operación. Auth `{ token, sign, cuitRepresentada }`. Errores en `respuesta.errores.error[]{codigo, descripcion}`.
|
|
60
|
+
- WSLPG: elementos según el WSDL (ej: `liquidacionReq`/`liquidacionResp` → `liqReturn`; `CgConsultarXNroOrdenReq` con mayúscula; `ajusteXCoeConsReq` → `ajusteXcoeConsResp`). SOAPAction = namespace + operación. Auth `{ token, sign, cuit }`. Errores en `errores.error[]` y `erroresFormato.error[]`; información en `eventos.evento[]`.
|
|
61
|
+
- `dummy` (ambos): Body vacío, sin auth.
|
|
62
|
+
|
|
63
|
+
## CpeClient (agro.cpe)
|
|
64
|
+
|
|
65
|
+
Constantes: `TIPO_CPE = { AUTOMOTOR: 74, FERROVIARIA: 75, AUTOMOTOR_FLETE_CORTO: 274 }`, `ESTADOS_CPE`. Los requests replican el contenido de `solicitud` del XSD. `CartaPorteId = { tipoCPE, sucursal, nroOrden }`.
|
|
66
|
+
|
|
67
|
+
Emisiones (nunca se reintentan):
|
|
68
|
+
- `autorizarCPEAutomotor(AutorizarCPEAutomotorParams)` → `CPEAutomotorDetalle` (exige `cabecera.nroCTG`)
|
|
69
|
+
- params: `{ cabecera: { tipoCP, cuitSolicitante, sucursal, nroOrden }, origen: { operador? | productor? }, correspondeRetiroProductor, esSolicitanteCampo, retiroProductor?, intervinientes?, datosCarga: { codGrano, cosecha, semilla?, pesoBruto, pesoTara }, destino: { cuit, esDestinoCampo, codProvincia, codLocalidad, planta? }, destinatario: { cuit }, transporte: { cuitTransportista, dominio[], fechaHoraPartida, kmRecorrer, codigoTurno?, cuitChofer, tarifa?, cuitPagadorFlete, cuitIntermediarioFlete?, mercaderiaFumigada }, observaciones? }`
|
|
54
70
|
- `autorizarCPEFerroviaria(AutorizarCPEFerroviariaParams)` → `CPEFerroviariaDetalle`
|
|
55
|
-
-
|
|
71
|
+
- Devuelven `CPEResultado { cabecera?, pdf?, metadata?, advertencias? }`: `editarCPEAutomotor`, `editarCPEConfirmadaAutomotor`, `confirmarArriboCPE`, `confirmacionDefinitivaCPEAutomotor`, `descargadoDestinoCPE`, `rechazoCPE`, `anularCPE`, `nuevoDestinoDestinatarioCPEAutomotor`, `regresoOrigenCPEAutomotor`, `desvioCPEAutomotor`, `informarContingencia`, `cerrarContingenciaCPE`, `editarCPEFerroviaria`, `editarCPEConfirmadaFerroviaria`, `confirmacionDefinitivaCPEFerroviaria`, `nuevoDestinoDestinatarioCPEFerroviaria`, `regresoOrigenCPEFerroviaria`, `desvioCPEFerroviaria`
|
|
56
72
|
|
|
57
|
-
|
|
58
|
-
- `consultarCPEAutomotor({cuitSolicitante?, cartaPorte? | nroCTG?})` → `CPEAutomotorDetalle`
|
|
73
|
+
Consultas (se reintentan; listas vacías → `[]`):
|
|
74
|
+
- `consultarCPEAutomotor({ cuitSolicitante?, cartaPorte? | nroCTG? })` → `CPEAutomotorDetalle`
|
|
59
75
|
- `consultarCPEFerroviaria(...)` → `CPEFerroviariaDetalle`
|
|
60
76
|
- `consultaCPEFerroviariaPorNroOperativo(nroOperativo)` → `OperativoFerroviarioCPE`
|
|
61
|
-
- `consultarCPEPorDestino({planta, fechaPartidaDesde, fechaPartidaHasta, tipoCartaPorte?})` → `CPEResumen[]`
|
|
62
|
-
- `consultarCPEPPendientesDeResolucion({perfil: 'S'|'D', planta?})` → `CPEResumen[]`
|
|
63
|
-
- `consultarUltNroOrden(sucursal, tipoCPE)` → number (
|
|
64
|
-
- `siguienteNroOrden(sucursal, tipoCPE)` → number (
|
|
65
|
-
- `consultarProvincias()`, `consultarLocalidadesPorProvincia(codProvincia)`, `consultarTiposGrano()`, `consultarCategoriasSemillas()` → `CodigoDescripcion[]` (`codigo`
|
|
77
|
+
- `consultarCPEPorDestino({ planta, fechaPartidaDesde, fechaPartidaHasta, tipoCartaPorte? })` → `CPEResumen[]`
|
|
78
|
+
- `consultarCPEPPendientesDeResolucion({ perfil: 'S' | 'D', planta? })` → `CPEResumen[]`
|
|
79
|
+
- `consultarUltNroOrden(sucursal, tipoCPE)` → number (lanza si falta)
|
|
80
|
+
- `siguienteNroOrden(sucursal, tipoCPE)` → number (NO es atómico: dos llamadas concurrentes obtienen el mismo número)
|
|
81
|
+
- `consultarProvincias()`, `consultarLocalidadesPorProvincia(codProvincia)`, `consultarTiposGrano()`, `consultarCategoriasSemillas()`, `consultarUnidadesMedida()` → `CodigoDescripcion[]` (`codigo` es string)
|
|
82
|
+
- `consultarTiposEmbalaje()` → `TipoEmbalajeCPE[]` (`{ codigo, descripcion, unidadMedida: CodigoDescripcion[] }`)
|
|
66
83
|
- `consultarPlantas(cuit)` → `PlantaCPE[]`; `consultarLocalidadesProductor(cuit)` → `LocalidadProductorCPE[]`; `consultarVariedadesSemillas(codGrano?)` → `VariedadSemillaCPE[]`
|
|
84
|
+
- `consultarRenspa(cuit, codProvincia)` → `RenspaCPE[]` (`{ nroRenspa, descripcion }`)
|
|
85
|
+
- `consultarDomiciliosPorCUIT(cuit)` → `DomicilioCPE[]` (`{ tipo, orden, descripcion }`)
|
|
67
86
|
- `dummy()` → ServerStatus
|
|
68
87
|
|
|
69
|
-
|
|
88
|
+
No implementado: el circuito de derivados granarios (CPE DG: `autorizarCPE*DG`, `aceptarEmision*DG`, `rechazarEmision*DG`, las variantes `*DG`/`*Ductos`/`*EmisionDestinoDG` de editar, confirmar, desviar, regresar, nuevo destino, anular, contingencia y descarga), `consultarCPE*DG`, `consultarCPEDuctos`, `consultarCPEDGPendienteActivacion`, `consultarCPEEmitidasDestinoDGPendientesActivacion`, `consultarDerivadosGranarios`, `consultarPlantasDG`.
|
|
70
89
|
|
|
71
90
|
## LpgClient (agro.lpg)
|
|
72
91
|
|
|
73
|
-
|
|
74
|
-
- `liquidacionAutorizar({ liquidacion: LiquidacionLpg, deducciones?, retenciones?, percepciones? })` → `{ autorizacion: LiquidacionAutorizadaLpg (coe: string), eventos }`
|
|
75
|
-
- `liquidacionAnular(coe)` → `{ coe?, resultado
|
|
92
|
+
Emisiones (nunca se reintentan):
|
|
93
|
+
- `liquidacionAutorizar({ liquidacion: LiquidacionLpg, deducciones?, retenciones?, percepciones? })` → `{ autorizacion: LiquidacionAutorizadaLpg (coe: string), eventos, advertencias? }`
|
|
94
|
+
- `liquidacionAnular(coe)` → `{ coe?, resultado?, pdf?, eventos }`; `resultado: 'R'` (rechazada) lanza `ArcaAgroServiceError`
|
|
76
95
|
- `liquidacionAjustarUnificado({ ajusteBase, ajusteCredito?, ajusteDebito? })` → `{ ajusteUnificado (coe: string), eventos }`
|
|
77
|
-
- `cgAutorizar(CgAutorizarParams)` → `{ autorizacion (coe: string), eventos }`
|
|
78
|
-
- `cgSolicitarAnulacion(coe, {pdf?})`, `cgConfirmarAnulacion(coe, {pdf?})` → `{ estadoCertificado
|
|
96
|
+
- `cgAutorizar(CgAutorizarParams)` → `{ autorizacion (coe: string), eventos }`. `cabecera.cuitCorredor` acepta `0` (sin corredor, `LpgCuit0Type`) o una CUIT válida.
|
|
97
|
+
- `cgSolicitarAnulacion(coe, { pdf? })`, `cgConfirmarAnulacion(coe, { pdf? })` → `{ estadoCertificado?, pdf?, eventos }`
|
|
79
98
|
|
|
80
|
-
|
|
81
|
-
- `liquidacionXCoeConsultar(coe, {pdf?})`, `liquidacionXNroOrdenConsultar(ptoEmision, nroOrden)` → `{ liquidacion?, autorizacion, pdf?, eventos }`
|
|
99
|
+
Consultas:
|
|
100
|
+
- `liquidacionXCoeConsultar(coe, { pdf? })`, `liquidacionXNroOrdenConsultar(ptoEmision, nroOrden)` → `{ liquidacion?, autorizacion, pdf?, eventos }`
|
|
82
101
|
- `liquidacionUltimoNroOrdenConsultar(ptoEmision)`, `cgConsultarUltimoNroOrden(ptoEmision)` → number
|
|
83
|
-
-
|
|
102
|
+
- `liquidacionPorContratoConsultar({ nroContrato, cuitComprador, cuitVendedor, cuitCorredor?, codGrano })` → `string[]` (COEs)
|
|
103
|
+
- `ajusteXCoeConsultar(coe, { pdf? })`, `ajusteXNroOrdenConsultar(ptoEmision, nroOrden)`, `ajustePorContratoConsultar(nroContrato)` → `AjusteConsultaResultado { ajusteUnificado (coe), pdf?, eventos }`
|
|
104
|
+
- `cgConsultarXCoe(coe, { pdf? })`, `cgConsultarXNroOrden(ptoEmision, nroOrden)` → `CertificacionConsultaResultado { autorizacion (coe), cabecera?, primaria?, retiroTransferencia?, preexistente?, ..., pdf?, eventos }`
|
|
105
|
+
- `cgBuscarCtg(CgBuscarCtgParams)` → `CtgCertificableLpg[]`; `cgBuscarCertConSaldoDisponible(params)` → `CertificadoConSaldoLpg[]`
|
|
106
|
+
- Paramétricas → `CodigoDescripcion[]`: `provinciasConsultar`, `localidadXProvinciaConsultar(codProvincia)`, `tipoOperacionXActividadConsultar(nroActLiquida)`, `puertoConsultar`, `tipoActividadConsultar`, `tipoActividadRepresentadoConsultar`, `tipoCertificadoDepositoConsultar`, `tipoRetencionConsultar`, `tipoDeduccionConsultar`, `tipoGranoConsultar`, `codigoGradoReferenciaConsultar`, `campaniasConsultar`; `codigoGradoEntregadoXTipoGranoConsultar(codGrano)` → `GradoEntregadoLpg[]`
|
|
84
107
|
- `dummy()`
|
|
85
108
|
|
|
86
|
-
`
|
|
109
|
+
No implementado: `lsg*` (liquidación secundaria), `lpgAutorizarAnticipo`, `lpgCancelarAnticipo`, `lpgAnularContraDocumento`, `liquidacionAjustarContrato`, `asociarLiquidacionAContrato`, `cgInformarCalidad`.
|
|
110
|
+
|
|
111
|
+
## Validación
|
|
87
112
|
|
|
88
|
-
|
|
113
|
+
Todos los requests se validan localmente contra el XSD antes de enviarse (`ArcaValidationError` con todos los `details[]`): obligatorios, campos desconocidos, rangos/largos/enumeraciones, dígito verificador de CUIT, números finitos, decimales redondeados a `fractionDigits`, `xsd:date` (Date | AAAAMMDD | AAAA-MM-DD), `xsd:dateTime` (Date → hora de Argentina `-03:00`, o string ISO que se envía tal cual; el manual WSCPE muestra el formato sin zona horaria: para eso pasar el string sin zona). Exportados: `validateAutorizarCPEAutomotor`, `validateAutorizarCPEFerroviaria`, `validateEditarCPEAutomotor`, `validateEditarCPEFerroviaria`, `validateEditarCPEConfirmada`, `validateConfirmacionDefinitivaCPEAutomotor`, `validateConfirmacionDefinitivaCPEFerroviaria`, `validateLiquidacion`, `validateAjusteUnificado`, `validateCgAutorizar`.
|
|
89
114
|
|
|
90
|
-
##
|
|
115
|
+
## Errores
|
|
91
116
|
|
|
92
|
-
|
|
117
|
+
- `ArcaValidationError`: datos inválidos (no se envía el request).
|
|
118
|
+
- `ArcaAgroServiceError extends ArcaServiceError`: errores de negocio de ARCA; `errors[]`, `service`, `method`, `response`, `uncertain`. Un `<error>` sin código cuenta como error; solo se ignora el código explícito `0`.
|
|
119
|
+
- `ArcaSoapError`: transporte/HTTP/SOAP Fault; `uncertain` en emisiones (no en Faults `Client`); `faultDetail` con el `<detail>`. `cpeFaultException(error)` devuelve el `Exception` de WSCPE (`uuid`, `timestamp`, `businessErrorId`, `exceptionDetails`, `serverName`).
|
|
120
|
+
- `ArcaAgroResponseError`: falta un dato imprescindible (nroCTG, coe, nroOrden) o una consulta no tiene la forma del XSD; `uncertain` en emisiones.
|
|
121
|
+
- `ArcaAuthError`, `ArcaTicketVigenteError`: WSAA.
|
|
93
122
|
|
|
94
|
-
|
|
123
|
+
Errores admitidos: WSCPE 550 y WSLPG 1021 ("Error al generar el archivo pdf", operación Aceptada) no lanzan; el resultado viene sin `pdf` y con `advertencias: ServiceErrorDetail[]`. Si vienen junto con otro error, se lanza con todos.
|
|
95
124
|
|
|
96
|
-
|
|
97
|
-
- `ArcaAgroServiceError extends ArcaServiceError` - ARCA business errors; `errors[]`, `service`, `method`, `response`
|
|
98
|
-
- `ArcaSoapError` - transport/HTTP/SOAP Fault; `uncertain` for emissions
|
|
99
|
-
- `ArcaAgroResponseError` - response missing a required datum (nroCTG, coe, nroOrden); `uncertain` for emissions
|
|
100
|
-
- `ArcaAuthError`, `ArcaTicketVigenteError` - WSAA
|
|
125
|
+
`uncertain: true` en emisiones: `ArcaSoapError` (timeout, 5xx, Fault Server), `ArcaAgroResponseError` (sin identificador) o `ArcaAgroServiceError` cuando la respuesta trae errores y también el resultado (`cabecera.nroCTG`/`cabecera.estado` en WSCPE; `autorizacion.coe`, `ajusteUnificado.coe` o `resultado: 'A'` en WSLPG). En una emisión aceptada, un campo secundario con forma inválida se omite en lugar de lanzar.
|
|
101
126
|
|
|
102
|
-
##
|
|
127
|
+
## Recuperar una emisión incierta
|
|
103
128
|
|
|
104
|
-
- CPE: `consultarUltNroOrden(sucursal, tipoCPE)
|
|
105
|
-
-
|
|
106
|
-
-
|
|
129
|
+
- CPE: si `consultarUltNroOrden(sucursal, tipoCPE) < nroOrden`, no se emitió: reintentar con el mismo nroOrden. Si no, `consultarCPEAutomotor({ cartaPorte })` y comparar datos clave (destino, dominio, fechaHoraPartida) con lo enviado: otro proceso pudo haber usado el número.
|
|
130
|
+
- Liquidación: `liquidacionUltimoNroOrdenConsultar(ptoEmision)` + `liquidacionXNroOrdenConsultar`; anulación: `liquidacionXCoeConsultar(coe)` y mirar `autorizacion.estado`.
|
|
131
|
+
- Ajuste: el número de orden es el mismo contador que el de las liquidaciones: `liquidacionUltimoNroOrdenConsultar(ptoEmision)` + `ajusteXNroOrdenConsultar`.
|
|
132
|
+
- Certificación: `cgConsultarUltimoNroOrden(ptoEmision)` + `cgConsultarXNroOrden`; anulación: `cgConsultarXCoe(coe)`.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ramiidv/arca-agro",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.6.0",
|
|
4
4
|
"description": "SDK para servicios agropecuarios de ARCA (ex AFIP) - WSCPE (Carta de Porte Electrónica) y WSLPG (Liquidación Primaria de Granos)",
|
|
5
5
|
"author": "ramiidv",
|
|
6
6
|
"license": "MIT",
|
|
@@ -62,6 +62,6 @@
|
|
|
62
62
|
"node": ">=20.19.0"
|
|
63
63
|
},
|
|
64
64
|
"dependencies": {
|
|
65
|
-
"@ramiidv/arca-common": "^0.
|
|
65
|
+
"@ramiidv/arca-common": "^0.7.0"
|
|
66
66
|
}
|
|
67
67
|
}
|