issue(), issueCreditNote(),
issueDebitNote() y las vistas previas.
Cuándo corresponde
Lo define el alta en ARCA, no el comprobante. WSMTXCA autoriza solo si el contribuyente está empadronado en Codificación de Productos, opción Factura con Detalle, y el punto de venta es del tipo “Codificación de Productos - Web Services” y no está bloqueado. WSFE, el servicio por defecto, rechaza un punto de venta que no sea del tipo RECE. Cada punto de venta pertenece entonces a un solo servicio:client.wsmtxca.getSalesPoints() lista los puntos de venta habilitados para
WSMTXCA. Un comprobante enviado por el servicio que no corresponde vuelve
rejected: WSFE lo rechaza con 10005 y WSMTXCA con 10010 o 101.
Indicar el servicio requerido
La selección es explícita y se pasa en el segundo argumento. El SDK no detecta qué servicio corresponde al contribuyente o al punto de venta. Tampoco cambia de servicio después de un rechazo o de un timeout.service, la llamada usa WSFE. issue(),
issueCreditNote(), issueDebitNote(), preview(), previewCreditNote() y
previewDebitNote() aceptan la opción. Los tipos siguen el literal que
pasaste: con { service: "wsmtxca" }, tanto el request de la vista previa
como el del resultado son de WSMTXCA, sin casts.
Detalle de ítems
El detalle vive en los mismositems. Además de la plata, net o gross con
vat, cada ítem lleva description, quantity, unit, unitPrice,
matrixCode y matrixUnits, y opcionalmente discount y code.
{ service: "wsmtxca" } exige esos campos en todos los ítems. Si falta alguno
o no cumple las reglas de ARCA, se lanza ArcaInputError con el índice del
ítem y el campo, antes de cualquier llamada. La emisión predeterminada ignora
estos campos y arma la cabecera fiscal.
Lo que no tiene GTIN porque no es parte de la mercadería que vendés
habitualmente, como fletes, servicios, alquileres o muestras, usa uno de los
códigos genéricos de ARCA.
ARCA_WSMTXCA_GENERIC_CODES los lista con su
descripción:
amounts ya revisado no tiene líneas, así que
{ service: "wsmtxca" } con amounts se rechaza con ArcaInputError: WSMTXCA
necesita items con detalle.
unitPrice es la única excepción monetaria del SDK: un string decimal en
unidades mayores con hasta seis decimales, para no perder la precisión del
precio unitario del servicio. Todos los demás importes del ítem son enteros en
centavos.
El SDK arma las dos codificaciones que requiere ARCA. La aplicación no construye
listas SOAP.
Clases y receptor
WSMTXCA autoriza solo comprobantes de clase A y B, incluidas las facturas con leyenda de retención y las FCE. Un comprobante de clase C con{ service: "wsmtxca" } se rechaza con ArcaInputError en voucherType
antes de cualquier llamada. Emitilo por WSFE.
Un consumidor final sin identificar no lleva documento: el SDK no envía
codigoTipoDocumento ni numeroDocumento, como pide ARCA. La cabecera del
resultado igual lo informa como documentType: 99 y documentNumber: "0",
igual que en WSFE, y el QR usa esos valores. Si el importe llega al umbral de
identificación, el receptor necesita cuit o dni, igual que en WSFE.
Previsualizar
preview(input, { service: "wsmtxca" }).request es el request de WSMTXCA sin
número de comprobante:
include: { request: true }, cualquier resultado trae en request el
request de WSMTXCA que el SDK envió o preparó para ese intento. Las llamadas a
WSFE conservan sus tipos WsfeVoucherInput.
FCE en los dos servicios
Los datos de negocio son los mismos:fce: { cbu, alias?, transfer?, reference? }
en la factura y fce: { annulment, reference? } en la nota. La codificación,
en cambio, difiere:
No dupliques estas entradas a través de
optionalFields cuando ya usás fce.
Consulta y reservas
La consulta de WSMTXCA compara la evidencia completa del detalle, no solo el total de cabecera, así que una reserva repetida se resuelve contra los ítems que ARCA tiene registrados. Si la consulta vuelve incompleta, el resultado quedaindeterminate y no se reenvía nada.
Las reservas guardan el servicio. Una reserva de WSMTXCA, o cualquier reserva
con líneas del servicio, se escribe como registro v: 2. Un SDK que no conoce
ese formato no la reproduce, así que nunca reenvía por WSFE un comprobante que
era de WSMTXCA. La vida de estos registros está en
Evitar comprobantes duplicados.
Para consultar un comprobante, usá lookup() con { service: "wsmtxca" }, y
para el último número autorizado, lastAuthorized() con la misma opción.
Para las lecturas de client.wsmtxca, como getLastAuthorizedVoucher() y
getSalesPoints(), mirá
Módulos de transporte.