sunat-catalogs v1.0.7
Instalación y uso
npm install --save sunat-catalogsconst Catalogs = require('sunat-catalogs');Atributos Estáticos (Statics Attributes)
Todos los catálogos definidos en la sección "Definición de Catálogos", tendrán los siguientes atributos estáticos, los cuales nos permitiran acceder a los metadatos del catálogo.
Atributo | Descripción |
|---|---|
numeroCat | Número de catálogo |
tituloCat | Título del catálogo |
nombreCat | Nombre del catálogo definida por la agencia |
agenciaCat | Agencia del catálogo |
uriCat | URI del catálogo |
const { TipoTributo } = require('sunat-catalogs');
console.log(TipoTributo.numeroCat);
// Resultado: 05
console.log(TipoTributo.tituloCat);
// Resultado: Código de tipos de tributos y otros conceptos
console.log(TipoTributo.nombreCat);
// Resultado: Codigo de tributos
console.log(TipoTributo.agenciaCat);
// Resultado: PE:SUNAT
console.log(TipoTributo.uriCat);
// Resultado: urn:pe:gob:sunat:cpe:see:gem:catalogos:catalogo05
console.log(`Catálogo Nro. ${TipoTributo.numeroCat} - ${TipoTributo.tituloCat}`);
// Resultado: Catálogo Nro. 05 - Código de tipos de tributos y otros conceptosIMPORTANTE:Los métodos estáticos se llaman sin crear instancias de su clase y tampoco son invocables cuando se instancia la clase.
Funciones
Todos los catálogos definidos en la sección "Definición de Catálogos", tendrán definida la funcióndescripcion()para acceder a la descripción de los códigos de los catálogos.Cada catálogo también cuenta con funciones propias.
const { TipoTributo } = require('sunat-catalogs');
const tributo = new TipoTributo(TipoTributo.ICBPER);
console.log(tributo.descripcion());
// Resultado: Impuesto al Consumo de las bolsas de plástico
console.log(tributo.nombre());
// Resultado: ICBPER
console.log(tributo.categoria());
// Resultado: S
console.log(tributo.codigo());
// Resultado: OTHDefinición de Catálogos
Catálogo Nro. 01 - Código de Tipo de Documento
Para este catálogo se ha definido la clase de nombre TipoDocumeto, la misma que cuenta con las siguientes funciones:
descripcion()- Permite obtener la descripción del tipo de documento
const { TipoDocumento } = require('sunat-catalogs');
const documento = new TipoDocumento(TipoDocumento.FA);
console.log(documento.descripcion());
// Resultado: FacturaEn la siguiente tabla se describen las constantes disponibles:
| Constante | Código | Descripción |
|---|---|---|
| FA | 01 | Factura |
| BV | 03 | Boleta de Venta |
| NC | 07 | Nota de Crédito |
| ND | 08 | Nota de Débito |
| GRR | 09 | Guía de Remisión Remitente |
| CPER | 20 | Comprobante de Retención |
| GRT | 31 | Guía de Remisión Transportista |
| CPEP | 40 | Comprobante de Percepción |
Catálogo Nro. 02 - Código de Tipo de Monedas
Para este catálogo se ha definido la clase de nombre TipoMoneda, la misma que cuenta con las siguientes funciones:
descripcion()- Permite obtener la descripción del tipo de moneda
const { TipoMoneda } = require('sunat-catalogs');
const moneda = new TipoMoneda(TipoMoneda.SOL);
console.log(moneda.descripcion());
// Resultado: SolEn la siguiente tabla se describen las constantes disponibles:
| Constante | Código | Descripción |
|---|---|---|
| SOL | PEN | Sol |
| DOLAR | USD | US Dollar |
| EURO | EUR | Euro |
Catálogo Nro. 03 - Códigos de Tipo de Unidad de Medida
Para este catálogo se ha definido la clase de nombre TipoUnidadMedida, la misma que cuenta con las siguientes funciones:
descripcion()- Permite obtener la descripción del tipo de unidad de medida
const { TipoUnidadMedida } = require('sunat-catalogs');
const medida = new TipoUnidadMedida(TipoUnidadMedida.UNIDAD_INTERNACIONAL);
console.log(medida.descripcion());
// Resultado: Número de unidades internacionalesEn la siguiente tabla se describen las constantes disponibles:
| Constante | Código | Descripción |
|---|---|---|
| UNIDAD_INTERNACIONAL | NIU | Número de unidades internacionales |
| UNIDAD_MEDIDA_ACORDADA | ZZ | Unidad de medida acordada entre dos partes |
Catálogo Nro. 04 - Código de País
Para este catálogo se ha definido la clase de nombre Pais, la misma que cuenta con las siguientes funciones:
descripcion()- Permite obtener la descripción del país
const { Pais } = require('sunat-catalogs');
const pais = new Pais(Pais.PERU);
console.log(pais.descripcion());
// Resultado: PerúEn la siguiente tabla se describen las constantes disponibles:
| Constante | Codigo | Descripción |
|---|---|---|
| PERU | PE | Perú |
Catálogo Nro. 05 - Código de Tipos de Tributos
Para este catálogo se ha definido la clase de nombre TipoTributo, la misma que cuenta con las siguientes funciones:
descripcion()- Permite obtener la descripción del tipo de tributonombre()- Permite obtener el nombre del tipo de tributocategoria()- Permite obtener la categoría del tipo de tributocodigo()- Permite obtener el código internacional del tipo de tributo
const { TipoTributo } = require('sunat-catalogs');
const tributo = new TipoTributo(TipoTributo.IGV);
console.log(tributo.descripcion());
// Resultado: IGV Impuesto General a las Ventas
console.log(tributo.nombre());
// Resultado: IGV
console.log(tributo.categoria());
// Resultado: S
console.log(tributo.codigo());
// Resultado: VATEn la siguiente tabla se describen las constantes disponibles:
| Constante | Código | Descripción |
|---|---|---|
| IGV | 1000 | Impuesto General a las Ventas |
| IVAP | 1016 | Impuesto a la Venta Arroz Pilado |
| ISC | 2000 | Impuesto al Consumo de las Bolsas de Plástico |
| ICBPER | 7152 | Impuesto a la Bolsa Plastica |
| EXP | 9995 | Exportación |
| GRA | 9996 | Gratuito |
| EXO | 9997 | Exonerado |
| INA | 9998 | Inafecto |
| OTROS | 9999 | Otros Tributos |
Catálogo Nro. 06 - Código de Tipo de Documento de Identidad
Para este catálogo se ha definido la clase de nombre TipoDocumentoIdentidad, la misma que cuenta con las siguientes funciones:
descripcion()- Permite obtener la descripción del documento de identidad
const { TipoDocumentoIdentidad } = require('sunat-catalogs');
const documento = new TipoDocumentoIdentidad(TipoDocumentoIdentidad.DNI);
console.log(documento.descripcion());
// Resultado: Documento Nacional de IdentidadEn la siguiente tabla se describen las constantes disponibles:
| Constante | Código | Descripción |
|---|---|---|
| NO_DOMICILIADO | 0 | DOC.TRIB.NO.DOM.SIN.RUC |
| DNI | 1 | Documento Nacional de Identidad |
| CARNET_EXTRANJERIA | 4 | Carnet de extranjería |
| RUC | 6 | Registro Unico de Contributentes |
| PASAPORTE | 7 | Pasaporte |
| TIN | C | TIN - Doc Trib PP.NN |
| IN | D | IN - Doc Trib PP. JJ |
| TAM | E | TAM - Tarjeta Andina de Migración |
Catálogo Nro. 07 - Código de Tipo de Afectación del IGV
Para este catálogo se ha definido la clase de nombre TipoAfectacionIgv, la misma que cuenta con las siguientes funciones:
descripcion()- Permite obtener la descripción del tipo de afectacióncodTributo(onerosa)- Permite obtener el código del tributo relacionado al tipo de afectaciónonerosa- Definir comotruesi la operación es onerosa yfalsesi la operación es gratuita
const { TipoAfectacionIgv } = require('sunat-catalogs');
const afectacion = new TipoAfectacionIgv(TipoAfectacionIgv.GRAVADO_IVAP);
console.log(afectacion.descripcion());
// Resultado: Gravado - IVAP
console.log(afectacion.codTributo(true));
// Resultado: 1016
console.log(afectacion.codTributo(false));
// Resultado: 9996En la siguiente tabla se describen las constantes disponibles:
| Constante | Código | Descripción |
|---|---|---|
| GRAVADO_ONEROSA | 10 | Gravado - Operación Onerosa |
| GRAVADO_PREMIO | 11 | Gravado - Retiro por premio |
| GRAVADO_DONACION | 12 | Gravado - Retiro por donación |
| GRAVADO_RETIRO | 13 | Gravado - Retiro |
| GRAVADO_PUBLICIDAD | 14 | Gravado - Retiro por publicidad |
| GRAVADO_BONIFICACIONES | 15 | Gravado - Bonificaciones |
| GRAVADO_ENTREGA_TRABAJADORES | 16 | Gravado - Retiro por entrega a trabajadores |
| GRAVADO_IVAP | 17 | Gravado - IVAP |
| EXONERADO_ONEROSA | 20 | Exonerado - Operación Onerosa |
| EXONERADO_GRATUITA | 21 | Exonerado - Transferencia gratuita |
| INAFECTO_ONEROSA | 30 | Inafecto - Operación Onerosa |
| INAFECTO_BONIFICACION | 31 | Inafecto - Retiro por Bonificación |
| INAFECTO_RETIRO | 32 | Inafecto - Retiro |
| INAFECTO_MUESTRAS_MEDICAS | 33 | Inafecto - Retiro por Muestras Médicas |
| INAFECTO_CONVENIO_COLECTIVO | 34 | Inafecto - Retiro por Convenio Colectivo |
| INAFECTO_PREMIO | 35 | Inafecto - Retiro por premio |
| INAFECTO_PUBLICIDAD | 36 | Inafecto - Retiro por publicidad |
| INAFECTO_GRATUITA | 37 | Inafecto - Transferencia gratuita |
| EXPORTACION | 40 | Exportación de Bienes o Servicios |
Catálogo Nro. 08 - Código de Tipos de Sistema de Cálculo del ISC
Para este catálogo se ha definido la clase de nombre TipoSistemaIsc, la misma que cuenta con las siguientes funciones:
descripcion()- Permite obtener la descripción del tipo de sistema de cálculo
const { TipoSistemaIsc } = require('sunat-catalogs');
const documento = new TipoSistemaIsc(TipoSistemaIsc.SISTEMA_VALOR);
console.log(documento.descripcion());
// Resultado: Sistema al valorEn la siguiente tabla se describen las constantes disponibles:
| Constante | Código | Descripción |
|---|---|---|
| SISTEMA_VALOR | 01 | Sistema al valor |
| APLICACION_MONTO_FIJO | 02 | Aplicación del monto fijo |
| SISTEMA_PRECIO_PUBLICO | 03 | Sistema de precios de venta al público |
Catálogo Nro. 09 - Códigos de Tipo de Nota de Crédito
Para este catálogo se ha definido la clase de nombre TipoNotaCredito, la misma que cuenta con las siguientes funciones:
descripcion()- Permite obtener la descripción del tipo de nota de crédito
const { TipoNotaCredito } = require('sunat-catalogs');
const nc = new TipoNotaCredito(TipoNotaCredito.ANULACION_OPERACION);
console.log(nc.descripcion());
// Resultado: Anulación de la operaciónEn la siguiente tabla se describen las constantes disponibles:
| Constante | Código | Descripción |
|---|---|---|
| ANULACION_OPERACION | 01 | Anulación de la operación |
| ANULACION_ERROR_RUC | 02 | Anulación por error en el RUC |
| CORRECCION_ERROR_DESCRIPCION | 03 | Corrección por error en la descripción |
| DESCUENTO_GLOBAL | 04 | Descuento global |
| DESCUENTO_ITEM | 05 | Descuento por ítem |
| DEVOLUCION_TOTAL | 06 | Devolución total |
| DEVOLUCION_ITEM | 07 | Devolución por ítem |
| BONIFICACION | 08 | Bonificación |
| DISMINUCION_VALOR | 09 | Disminución en el valor |
| OTROS_CONCEPTOS | 10 | Otros Conceptos |
| AJUSTES_OPERACION_EXPORTACION | 11 | Ajustes de operaciones de exportación |
| AJUSTES_AFECTOS_IVAP | 12 | Ajustes afectos al IVAP |
Catálogo Nro. 10 - Códigos de Tipo de Nota de Débito
Para este catálogo se ha definido la clase de nombre TipoNotaDebito, la misma que cuenta con las siguientes funciones:
descripcion()- Permite obtener la descripción del tipo de nota de débito
const { TipoNotaDebito } = require('sunat-catalogs');
const nd = new TipoNotaDebito(TipoNotaDebito.INTERESES_MORA);
console.log(nd.descripcion());
// Resultado: Intereses por moraEn la siguiente tabla se describen las constantes disponibles:
| Constante | Código | Descripción |
|---|---|---|
| INTERESES_MORA | 01 | Intereses por mora |
| AUMENTO_VALOR | 02 | Aumento en el valor |
| PENALIDADES | 03 | Penalidades/ otros conceptos |
| AJUSTES_OPERACION_EXPORTACION | 11 | Ajustes de operaciones de exportación |
| AJUSTES_AFECTOS_IVAP | 12 | Ajustes afectos al IVAP |
Catálogo Nro. 12 - Código de Documentos Relacionados
Para este catálogo se ha definido la clase de nombre DocumentoRelacionado, la misma que cuenta con las siguientes funciones:
descripcion()- Permite obtener la descripción del documento relacionado
const { DocumentoRelacionado } = require('sunat-catalogs');
const documento = new DocumentoRelacionado(DocumentoRelacionado.FA_ANTICIPO);
console.log(documento.descripcion());
// Resultado: Factura - emitida por anticiposEn la siguiente tabla se describen las constantes disponibles:
| Constante | Código | Descripción |
|---|---|---|
| FA_CORREGIR_RUC | 01 | Factura - emitida para corregir error en el RUC |
| FA_ANTICIPO | 02 | Factura - emitida por anticipos |
| BV_ANTICIPO | 03 | Boleta de Venta - emitida por anticipos |
| TICKET_SALIDA_ENAPU | 04 | Ticket de Salida - ENAPU |
| CODIGO_SCOP | 05 | Código SCOP |
| OTROS | 99 | Otros |
Catálogo Nro. 16 - Código de Tipo de Precio de Venta (TipoPrecioVenta)
Para este catálogo se ha definido la clase de nombre DocumentoRelacionado, la misma que cuenta con las siguientes funciones:
descripcion()- Permite obtener la descripción del documento relacionado
const { DocumentoRelacionado } = require('sunat-catalogs');
const documento = new DocumentoRelacionado(DocumentoRelacionado.FA_ANTICIPO);
console.log(documento.descripcion());
// Resultado: Factura - emitida por anticiposEn la siguiente tabla se describen las constantes disponibles:
| Constante | Código | Descripción |
|---|---|---|
| PRECIO_UNITARIO | 01 | Precio unitario (incluye el IGV) |
| VALOR_REFERENCIAL_UNITARIO | 02 | Valor referencial unitario en operaciones no onerosas (Gratuitas) |
| TARIFAS_REGULADAS | 03 | Tarifas reguladas |
Catálogo Nro. 19 - Código de Estado del Ítem
Para este catálogo se ha definido la clase de nombre EstadoItem, la misma que cuenta con las siguientes funciones:
descripcion()- Permite obtener la descripción del estado de ítem
const { EstadoItem } = require('sunat-catalogs');
const estado = new EstadoItem(EstadoItem.ADICIONAR);
console.log(estado.descripcion());
// Resultado: AdicionarEn la siguiente tabla se describen las constantes disponibles:
| Constante | Código | Descripción |
|---|---|---|
| ADICIONAR | 1 | Adicionar |
| MODIFICAR | 2 | Modificar |
| ANULADO | 3 | Anulado |
Catálogo Nro. 22 - Código de Regimen de Percepciones
Para este catálogo se ha definido la clase de nombre RegimenPercepcion, la misma que cuenta con las siguientes funciones:
descripcion()- Permite obtener la descripción de la percepcióntasa()- Permite obtener la tasa de percepción
const { RegimenPercepcion } = require('sunat-catalogs');
const percepcion = new RegimenPercepcion(RegimenPercepcion.VENTA_INTERNA);
console.log(percepcion.descripcion());
// Resultado: Percepción venta interna
console.log(percepcion.tasa());
// Resultado: 2.00En la siguiente tabla se describen las constantes disponibles:
| Constante | Código | Descripción |
|---|---|---|
| VENTA_INTERNA | 01 | Percepción venta interna |
| ADQUISICION_COMBUSTIBLE | 02 | Percepción a la adquisición de combustible |
| TASA_ESPECIAL | 03 | Percepción realizada al agente de percepción con tasa especial |
Catálogo Nro. 23 - Código de Regimen de Retenciones
Para este catálogo se ha definido la clase de nombre RegimenRetencion, la misma que cuenta con las siguientes funciones:
descripcion()- Permite obtener la descripción de la retencióntasa()- Permite obtener la tasa de retención
const { RegimenRetencion } = require('sunat-catalogs');
const retencion = new RegimenRetencion(RegimenRetencion.TASA_3);
console.log(retencion.descripcion());
// Resultado: Tasa 3%
console.log(retencion.tasa());
// Resultado: 3.00En la siguiente tabla se describen las constantes disponibles:
| Constante | Código | Descripción |
|---|---|---|
| TASA_3 | 01 | Tasa 3% |
| TASA_6 | 02 | Tasa 6% |
Catálogo Nro. 51 - Códigos de Tipo de Operación
Para este catálogo se ha definido la clase de nombre TipoOperacion, la misma que cuenta con las siguientes funciones:
descripcion()- Permite obtener la descripción del tipo de operación
const { TipoOperacion } = require('sunat-catalogs');
const operacion = new TipoOperacion(TipoOperacion.VENTA_INTERNA);
console.log(operacion.descripcion());
// Resultado: Venta internaEn la siguiente tabla se describen las constantes disponibles:
| Constante | Código | Descripción |
|---|---|---|
| VENTA_INTERNA | 0101 | Venta interna |
| VENTA_INTERNA_GASTOS_DEDUCIBLES | 0112 | Sustenta gastos deducibles PPNN |
| VENTA_INTERNA_NRUS | 0113 | NRUS |
| EXPORTACION_BIENES | 0200 | Exportación de Bienes |
| EXPORTACION_SERVICIOS_INTEGRAMENTE_PAIS | 0201 | Prestación servicios realizados íntegramente en el país |
| EXPORTACION_SERVICIOS_HOSPEDAJE_NO_DOMICILIADO | 0202 | Prestación de servicios de hospedaje no domiciliado |
| EXPORTACION_SERVICIOS_TRANSPORTE_NAVIERAS | 0203 | Transporte de navieras |
| EXPORTACION_SERVICIOS_NAVES_AERONAVES_EXTRANJERAS | 0204 | Servicios a naves y aeronaves de bandera extranjera |
| EXPORTACION_SERVICIOS_PAQUETE_TURISTICO | 0205 | Servicios que conformen un paquete turístico |
| EXPORTACION_SERVICIOS_TRANSPORTE_CARGA | 0206 | Servicios complementarios al transporte de carga |
| EXPORTACION_SERVICIOS_SUMINISTRO_ELECTRICO_ZED | 0207 | Suministro de energía eléctrica domiciliados en ZED |
| EXPORTACION_SERVICIOS_PARCIALMENTE_EXTRANJERO | 0208 | Prestación servicios realizados parcialmente en el extranjero |
| OPERACIONES_CARTA_PORTE_AEREO | 0301 | Operaciones con carta de porte aéreo |
| OPERACIONES_TRANSPORTE_FERROVIARIO | 0302 | Operaciones de transporte ferroviario de pasajeros |
| OPERACIONES_REGALIA_PETROLEO | 0303 | Operaciones de pago de regalía petrolera |
| VENTA_NO_DOMICILIADA_NO_CALIFICA_EXPORTACION | 0401 | Ventas no domiciliados que no califican como exportación |
| OPERACION_DETRACCION | 1001 | Operación sujeta a detracción |
| OPERACION_DETRACCION_RECURSOS_HIDROBIOLOGICOS | 1002 | Recursos hidrobiológicos |
| OPERACION_DETRACCION_TRANSPORTE_PASAJEROS | 1003 | Servicios de transporte pasajeros |
| OPERACION_DETRACCION_TRANSPORTE_CARGA | 1004 | Servicios de transporte carga |
| OPERACION_PERCEPCION | 2001 | Operación sujeta a percepción |
Catálogo Nro. 53 - Códigos de Cargos o Descuentos
Para este catálogo se ha definido la clase de nombre CargoDescuento, la misma que cuenta con las siguientes funciones:
descripcion()- Permite obtener la descripción del cargo o descuentoindicador()- Permite saber si el código corresponde a un cargo (true) o un descuento (false)nivel()- Permite obtener el nivel relacionado al código (item o global)esCargoDet()- Determina si corresponde a un cargo por detalle (true o false)esDescuentoDet()- Determina si corresponde a un descuento por detalle (true o false)esCargoGlb()- Determina si corresponde a un cargo global (true o false)esDescuentoGlb()- Determina si corresponde a un descuento global (true o false)
const { CargoDescuento } = require('sunat-catalogs');
const operacion = new CargoDescuento(CargoDescuento.DCTOS_ITEM_AFECTA_BASE_IGV_IVAP);
console.log(operacion.descripcion());
// Resultado: Descuentos que afectan la base imponible del IGV/IVAPEn la siguiente tabla se describen las constantes disponibles:
| Constante | Código | Descripción |
|---|---|---|
| DCTOS_ITEM_AFECTA_BASE_IGV_IVAP | 00 | Descuentos que afectan la base imponible del IGV/IVAP |
| DCTOS_ITEM_NO_AFECTA_BASE_IGV_IVAP | 01 | Descuentos que no afectan la base imponible del IGV/IVAP |
| DCTOS_GLOBAL_AFECTA_BASE_IGV_IVAP | 02 | Descuentos globales que afectan la base imponible del IGV/IVAP |
| DCTOS_GLOBAL_NO_AFECTA_BASE_IGV_IVAP | 03 | Descuentos globales que no afectan la base imponible del IGV/IVAP |
| CARGOS_ITEM_AFECTA_BASE_IGV_IVAP | 47 | Cargos que afectan la base imponible del IGV/IVAP |
| CARGOS_ITEM_NO_AFECTA_BASE_IGV_IVAP | 48 | Cargos que no afectan la base imponible del IGV/IVAP |
| CARGOS_GLOBAL_AFECTA_BASE_IGV_IVAP | 49 | Cargos globales que afectan la base imponible del IGV/IVAP |
| CARGOS_GLOBAL_NO_AFECTA_BASE_IGV_IVAP | 50 | Cargos globales que no afectan la base imponible del IGV/IVAP |