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
TypeScript
/**
* 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;