Facturación Electrónica
Los métodos de este Web Service se encuentran disponibles en afip.electronicBillingService
La especificación de este Web Service se encuentra disponible aquí
Nota:
Hablaremos de comprobante
indistintamente si es una factura
, nota de crédito, etc
Índice
Obtener número del último comprobante creado
Debemos utilizar el método getLastVoucher
con los parámetros punto de venta y tipo de comprobante que queremos consultar.
const lastVoucher = await afip.electronicBillingService.getLastVoucher(1, 6); //Devuelve el número del último comprobante creado para el punto de venta 1 y el tipo de comprobante 6 (Factura B)
Para mas información acerca de este método ver el item 4.15 de la especificación del Web service
Crear y asignar CAE a un comprobante
Debemos utilizar el método createVoucher
pasándole como parámetro un Objeto con los detalles del comprobante y si queremos tener la respuesta completa enviada por el WS debemos pasarle como segundo parámetro true
, en caso de no enviarle el segundo parámetro nos devolverá como respuesta { CAE : CAE asignado el comprobante, CAEFchVto : Fecha de vencimiento del CAE (yyyy-mm-dd) }
.
const date = new Date(Date.now() - new Date().getTimezoneOffset() * 60000)
.toISOString()
.split("T")[0];
let data = {
CantReg: 1, // Cantidad de comprobantes a registrar
PtoVta: 1, // Punto de venta
CbteTipo: 6, // Tipo de comprobante (ver tipos disponibles)
Concepto: 1, // Concepto del Comprobante: (1)Productos, (2)Servicios, (3)Productos y Servicios
DocTipo: 99, // Tipo de documento del comprador (99 consumidor final, ver tipos disponibles)
DocNro: 0, // Número de documento del comprador (0 consumidor final)
CbteDesde: 1, // Número de comprobante o numero del primer comprobante en caso de ser mas de uno
CbteHasta: 1, // Número de comprobante o numero del último comprobante en caso de ser mas de uno
CbteFch: parseInt(date.replace(/-/g, "")), // (Opcional) Fecha del comprobante (yyyymmdd) o fecha actual si es nulo
ImpTotal: 121, // Importe total del comprobante
ImpTotConc: 0, // Importe neto no gravado
ImpNeto: 100, // Importe neto gravado
ImpOpEx: 0, // Importe exento de IVA
ImpIVA: 21, //Importe total de IVA
ImpTrib: 0, //Importe total de tributos
MonId: "PES", //Tipo de moneda usada en el comprobante (ver tipos disponibles)('PES' para pesos argentinos)
MonCotiz: 1, // Cotización de la moneda usada (1 para pesos argentinos)
Iva: [
// (Opcional) Alícuotas asociadas al comprobante
{
Id: 5, // Id del tipo de IVA (5 para 21%)(ver tipos disponibles)
BaseImp: 100, // Base imponible
Importe: 21, // Importe
},
],
};
// Tip: .createInvoice() es un alias de .createVoucher()
const res = await afip.electronicBillingService.createVoucher(data);
Este método acepta mas parámetros, pueden ver todos los parámetros disponibles Aqui
Para mas información acerca de este método ver el item 4.1 de la especificación del Web service
Crear y asignar CAE a siguiente comprobante
Debemos utilizar el método createNextVoucher
pasándole como parámetro un Objeto con los detalles del comprobante al igual que el método createVoucher
, nos devolverá como respuesta { CAE : CAE asignado al comprobante, CAEFchVto : Fecha de vencimiento del CAE (yyyy-mm-dd), voucher_number : Número asignado al comprobante }
.
const res = await afip.electronicBillingService.createNextVoucher(data);
Obtener información de un comprobante
Con este método podemos obtener toda la información relacionada a un comprobante o simplemente saber si el comprobante existe, debemos ejecutar el método getVoucherInfo
pasándole como parámetros el número de comprobante, el punto de venta y el tipo de comprobante, nos devolverá un Objeto con toda la información del comprobante o null
si el comprobante no existe.
const voucherInfo = await afip.electronicBillingService.getVoucherInfo(1, 1, 6); //Devuelve la información del comprobante 1 para el punto de venta 1 y el tipo de comprobante 6 (Factura B)
if (voucherInfo === null) {
console.log("El comprobante no existe");
} else {
console.log("Esta es la información del comprobante:");
console.log(voucherInfo);
}
Para mas información acerca de este método ver el item 4.19 de la especificación del Web service
Obtener puntos de venta disponibles
const salesPoints = await afip.electronicBillingService.getSalesPoints();
Obtener tipos de comprobantes disponibles
const voucherTypes = await afip.electronicBillingService.getVoucherTypes();
Para mas información acerca de este método ver el item 4.4 de la especificación del Web service
Obtener tipos de conceptos disponibles
const conceptTypes = await afip.electronicBillingService.getConceptTypes();
Para mas información acerca de este método ver el item 4.5 de la especificación del Web service
Obtener tipos de documentos disponibles
const documentTypes = await afip.electronicBillingService.getDocumentTypes();
Para mas información acerca de este método ver el item 4.6 de la especificación del Web service
Obtener tipos de alícuotas disponibles
const aloquotTypes = await afip.electronicBillingService.getAliquotTypes();
Para mas información acerca de este método ver el item 4.7 de la especificación del Web service
Obtener tipos de monedas disponibles
const currenciesTypes =
await afip.electronicBillingService.getCurrenciesTypes();
Para mas información acerca de este método ver el item 4.8 de la especificación del Web service
Obtener tipos de opciones disponibles para el comprobante
const optionTypes = await afip.electronicBillingService.getOptionsTypes();
Para mas información acerca de este método ver el item 4.9 de la especificacion del Web service
Obtener tipos de tributos disponibles
const taxTypes = await afip.electronicBillingService.getTaxTypes();
Para mas información acerca de este método ver el item 4.10 de la especificación del Web service
Obtener estado del servidor
Para esto utilizaremos el método getServerStatus
const serverStatus = await afip.electronicBillingService.getServerStatus();
console.log("Este es el estado del servidor:");
console.log(serverStatus);