UNPKG

nodefact

Version:

Biblioteca para facturación electrónica en Perú con Node.js. Compatible con UBL 2.1 y servicios web de SUNAT.

138 lines (137 loc) 3.24 kB
/** * Módulo Core - Tipos y utilidades comunes * * Este módulo proporciona tipos y utilidades comunes utilizados en toda la biblioteca. */ /** * Clase base para errores de la biblioteca */ export declare class NodeFactError extends Error { constructor(message: string); } /** * Opciones para la firma digital */ export interface SignOptions { keyFile?: string; certFile?: string; pemFile?: string; password?: string; algorithm?: string; location?: string; uri?: string; transforms?: string[]; } /** * Tipos de documentos electrónicos */ export declare enum TipoDocumento { FACTURA = "01", BOLETA = "03", NOTA_CREDITO = "07", NOTA_DEBITO = "08", GUIA_REMISION = "09", COMPROBANTE_RETENCION = "20", COMPROBANTE_PERCEPCION = "40", RESUMEN_DIARIO = "RC", COMUNICACION_BAJA = "RA" } /** * Tipos de moneda */ export declare enum TipoMoneda { PEN = "PEN", USD = "USD", EUR = "EUR" } /** * Tipos de IGV */ export declare enum TipoIGV { GRAVADO_OPERACION_ONEROSA = "10", GRAVADO_RETIRO_POR_PREMIO = "11", GRAVADO_RETIRO_POR_DONACION = "12", GRAVADO_RETIRO = "13", GRAVADO_RETIRO_POR_PUBLICIDAD = "14", GRAVADO_BONIFICACIONES = "15", GRAVADO_RETIRO_POR_ENTREGA_A_TRABAJADORES = "16", GRAVADO_IVAP = "17", EXONERADO_OPERACION_ONEROSA = "20", EXONERADO_TRANSFERENCIA_GRATUITA = "21", INAFECTO_OPERACION_ONEROSA = "30", INAFECTO_RETIRO_POR_BONIFICACION = "31", INAFECTO_RETIRO = "32", INAFECTO_RETIRO_POR_MUESTRAS_MEDICAS = "33", INAFECTO_RETIRO_POR_CONVENIO_COLECTIVO = "34", INAFECTO_RETIRO_POR_PREMIO = "35", INAFECTO_RETIRO_POR_PUBLICIDAD = "36", EXPORTACION = "40" } /** * Datos del emisor */ export interface Emisor { ruc: string; razonSocial: string; nombreComercial?: string; direccion: { ubigeo?: string; departamento?: string; provincia?: string; distrito?: string; direccion: string; }; codigoEstablecimiento?: string; } /** * Datos del receptor */ export interface Receptor { tipoDocumento: string; numeroDocumento: string; razonSocial: string; direccion?: { ubigeo?: string; departamento?: string; provincia?: string; distrito?: string; direccion: string; }; } /** * Datos de un ítem */ export interface Item { codigo: string; descripcion: string; unidadMedida: string; cantidad: number; valorUnitario: number; precioUnitario: number; tipoIGV: TipoIGV; igv: number; porcentajeIGV: number; subtotal: number; total: number; } /** * Datos de impuestos */ export interface Impuestos { igv: number; isc?: number; icbper?: number; total: number; } /** * Formatea un número como string con 2 decimales * @param value Número a formatear * @returns Número formateado como string con 2 decimales */ export declare function formatAmount(value: number): string; /** * 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 */ export declare function formatDate(date: Date): string;