nodefact
Version:
Biblioteca para facturación electrónica en Perú con Node.js. Compatible con UBL 2.1 y servicios web de SUNAT.
85 lines (84 loc) • 2.84 kB
JavaScript
;
/**
* Módulo Core - Tipos y utilidades comunes
*
* Este módulo proporciona tipos y utilidades comunes utilizados en toda la biblioteca.
*/
Object.defineProperty(exports, "__esModule", { value: true });
exports.TipoIGV = exports.TipoMoneda = exports.TipoDocumento = exports.NodeFactError = void 0;
exports.formatAmount = formatAmount;
exports.formatDate = formatDate;
/**
* Clase base para errores de la biblioteca
*/
class NodeFactError extends Error {
constructor(message) {
super(message);
this.name = 'NodeFactError';
}
}
exports.NodeFactError = NodeFactError;
/**
* Tipos de documentos electrónicos
*/
var TipoDocumento;
(function (TipoDocumento) {
TipoDocumento["FACTURA"] = "01";
TipoDocumento["BOLETA"] = "03";
TipoDocumento["NOTA_CREDITO"] = "07";
TipoDocumento["NOTA_DEBITO"] = "08";
TipoDocumento["GUIA_REMISION"] = "09";
TipoDocumento["COMPROBANTE_RETENCION"] = "20";
TipoDocumento["COMPROBANTE_PERCEPCION"] = "40";
TipoDocumento["RESUMEN_DIARIO"] = "RC";
TipoDocumento["COMUNICACION_BAJA"] = "RA";
})(TipoDocumento || (exports.TipoDocumento = TipoDocumento = {}));
/**
* Tipos de moneda
*/
var TipoMoneda;
(function (TipoMoneda) {
TipoMoneda["PEN"] = "PEN";
TipoMoneda["USD"] = "USD";
TipoMoneda["EUR"] = "EUR";
})(TipoMoneda || (exports.TipoMoneda = TipoMoneda = {}));
/**
* Tipos de IGV
*/
var TipoIGV;
(function (TipoIGV) {
TipoIGV["GRAVADO_OPERACION_ONEROSA"] = "10";
TipoIGV["GRAVADO_RETIRO_POR_PREMIO"] = "11";
TipoIGV["GRAVADO_RETIRO_POR_DONACION"] = "12";
TipoIGV["GRAVADO_RETIRO"] = "13";
TipoIGV["GRAVADO_RETIRO_POR_PUBLICIDAD"] = "14";
TipoIGV["GRAVADO_BONIFICACIONES"] = "15";
TipoIGV["GRAVADO_RETIRO_POR_ENTREGA_A_TRABAJADORES"] = "16";
TipoIGV["GRAVADO_IVAP"] = "17";
TipoIGV["EXONERADO_OPERACION_ONEROSA"] = "20";
TipoIGV["EXONERADO_TRANSFERENCIA_GRATUITA"] = "21";
TipoIGV["INAFECTO_OPERACION_ONEROSA"] = "30";
TipoIGV["INAFECTO_RETIRO_POR_BONIFICACION"] = "31";
TipoIGV["INAFECTO_RETIRO"] = "32";
TipoIGV["INAFECTO_RETIRO_POR_MUESTRAS_MEDICAS"] = "33";
TipoIGV["INAFECTO_RETIRO_POR_CONVENIO_COLECTIVO"] = "34";
TipoIGV["INAFECTO_RETIRO_POR_PREMIO"] = "35";
TipoIGV["INAFECTO_RETIRO_POR_PUBLICIDAD"] = "36";
TipoIGV["EXPORTACION"] = "40";
})(TipoIGV || (exports.TipoIGV = TipoIGV = {}));
/**
* Formatea un número como string con 2 decimales
* @param value Número a formatear
* @returns Número formateado como string con 2 decimales
*/
function formatAmount(value) {
return value.toFixed(2);
}
/**
* Formatea una fecha como string en formato YYYY-MM-DD
* @param date Fecha a formatear
* @returns Fecha formateada como string en formato YYYY-MM-DD
*/
function formatDate(date) {
return date.toISOString().split('T')[0];
}