tmn-afip

0.7.3 • Public • Published

tmn-afip

Librería para usar los Web Services de AFIP con JavaScript

Descripción

Esta librería facilita la comunicación con los Web Services de AFIP, permitiendo realizar operaciones como facturación electrónica y consultas al padrón de contribuyentes desde aplicaciones JavaScript.

Instalación

npm install tmn-afip

Configuración

Para utilizar la librería, necesitarás:

  1. Un CUIT válido
  2. Certificado y clave privada emitidos por AFIP
  3. Tener habilitado el servicio al que deseas conectarte en la página de AFIP

Obtener certificado y clave

Para obtener un certificado y clave:

  1. Ingrese a la página de AFIP
  2. Vaya a "Servicios administrativos" → "Gestión de Certificados Digitales"
  3. Siga las instrucciones para generar su certificado y clave privada

Uso básico

const Afip = require('tmn-afip');

const afip = new Afip({
  CUIT: 20111111112,
  production: false,
  cert: "cert.pem",
  key: "key.pem",
  res_folder: "./Afip_res/"
});

// Consultar estado del servidor
async function checkStatus() {
  const serverStatus = await afip.ElectronicBilling.getServerStatus();
  console.log(serverStatus);
}

// Consultar último comprobante
async function getLastInvoice() {
  const lastVoucher = await afip.ElectronicBilling.getLastVoucher({
    PtoVta: 1,
    CbteTipo: 11
  });
  console.log(lastVoucher);
}

// Crear factura electrónica
async function createInvoice() {
  const date = new Date();
  const invoice = {
    CantReg: 1,
    PtoVta: 1,
    CbteTipo: 11,
    Concepto: 1,
    DocTipo: 99,
    DocNro: 0,
    CbteDesde: 1,
    CbteHasta: 1,
    CbteFch: parseInt(date.toISOString().slice(0, 10).replace(/-/g, '')),
    ImpTotal: 121,
    ImpNeto: 100,
    ImpIVA: 21,
    FchServDesde: parseInt(date.toISOString().slice(0, 10).replace(/-/g, '')),
    FchServHasta: parseInt(date.toISOString().slice(0, 10).replace(/-/g, '')),
    FchVtoPago: parseInt(date.toISOString().slice(0, 10).replace(/-/g, '')),
    MonId: 'PES',
    MonCotiz: 1,
    Iva: [
      {
        Id: 5, // 5 = 21%
        BaseImp: 100,
        Importe: 21
      }
    ]
  };
  
  const result = await afip.ElectronicBilling.createVoucher(invoice);
  console.log(result);
}

Web Services disponibles

  • Facturación Electrónica (ElectronicBilling)
  • Padrón A13 (RegisterScopeThirteen)
  • Padrón A5 (RegisterScopeFive)
  • Padrón A10 (RegisterScopeTen)
  • Inscripción y Registro (RegisterInscriptionProof)

Configuración avanzada

const afip = new Afip({
  CUIT: 20111111112,
  production: false,
  cert: "cert.pem",
  key: "key.pem",
  res_folder: "./Afip_res/",
  ta_folder: "./Token/",
  soap_timeout: 20000
});

Contribuir

Las contribuciones son bienvenidas. Por favor, envía tus pull requests a https://github.com/tamnora/afip.js

Publicar en npm

Para publicar este paquete en npm y usarlo en varios proyectos:

Preparación para publicación

  1. Asegúrate de tener una cuenta en npm y estar logueado:

    npm login
  2. Verifica el contenido del paquete que será publicado:

    npm pack --dry-run
  3. Actualiza la versión del paquete según corresponda:

    npm version patch  # Para cambios pequeños
    npm version minor  # Para nuevas características
    npm version major  # Para cambios importantes

Publicar el paquete

npm publish --access public

Si es la primera vez que publicas este paquete, debes usar:

npm publish --access public

Uso en otros proyectos

Una vez publicado, puedes usar el paquete en cualquier proyecto:

npm install tmn-afip

Actualizar el paquete

Después de hacer cambios:

  1. Actualiza la versión: npm version patch|minor|major
  2. Publica nuevamente: npm publish

Licencia

Este proyecto está licenciado bajo la Licencia MIT - ver el archivo LICENSE para más detalles.

Package Sidebar

Install

npm i tmn-afip

Weekly Downloads

160

Version

0.7.3

License

MIT

Unpacked Size

274 kB

Total Files

23

Last publish

Collaborators

  • danieltmn