UNPKG

@facturacr/atv-sdk

Version:

Librería (SDK) de Javascript/NodeJS para acceder al API de Administración Tributaria Virtual (ATV) del Ministerio de Hacienda.

93 lines (85 loc) 2.93 kB
import { ClientPayload, FinalMessagePerson } from '@src/types/globalInterfaces' import { Resumen, Persona } from '@src/types/facturaInterfaces' const DEFAULT_VALUES = { key: 0, message: 'Default msj', detailsMessage: 'Default details msj', taxes: 100, tipoIdentificacion: '01' as Persona['Identificacion']['Tipo'] } export function getSimpleSender(frontEndRequest: ClientPayload): FinalMessagePerson { const sender = frontEndRequest.Emisor return { tipoIdentificacion: sender.Identificacion.Tipo || DEFAULT_VALUES.tipoIdentificacion, numeroIdentificacion: sender.Identificacion.Numero } } export function getSimpleReceiver(frontEndRequest: ClientPayload): FinalMessagePerson { const receiver = frontEndRequest.Receptor return { tipoIdentificacion: receiver.Identificacion.Tipo || DEFAULT_VALUES.tipoIdentificacion, numeroIdentificacion: receiver.Identificacion.Numero } } function calculateTaxes(billTotal: number, billTaxes: number): number { const taxes = typeof billTaxes === 'number' ? billTaxes : DEFAULT_VALUES.taxes return billTotal * taxes } export function getBillResum(frontEndRequest: ClientPayload): Resumen { const taxes = calculateTaxes(frontEndRequest.total, frontEndRequest.impuesto) return { CodigoTipoMoneda: { CodigoMoneda: 'CRC', TipoCambio: '585.69' }, TotalServGravados: 0, TotalServExentos: 0, // TotalServExonerado: 0, TotalMercanciasGravadas: frontEndRequest.total, TotalMercanciasExentas: 0, TotalGravado: frontEndRequest.total, TotalExento: 0, TotalExonerado: 0, TotalVenta: frontEndRequest.total, TotalDescuentos: 0, TotalVentaNeta: frontEndRequest.total, TotalImpuesto: taxes, TotalComprobante: frontEndRequest.total + taxes } } export function getSender(frontEndRequest: ClientPayload): Persona { const sender = frontEndRequest.Emisor return { Nombre: sender.Nombre, Identificacion: { Tipo: sender.Identificacion.Tipo || DEFAULT_VALUES.tipoIdentificacion, Numero: sender.Identificacion.Numero }, NombreComercial: sender.Nombre, Ubicacion: sender.Ubicacion, Telefono: { CodigoPais: sender.Telefono.CodigoPais, NumTelefono: sender.Telefono.NumTelefono }, Fax: { CodigoPais: sender.Telefono.CodigoPais, NumTelefono: sender.Telefono.NumTelefono }, CorreoElectronico: sender.CorreoElectronico } } export function getReceiver(frontEndRequest: ClientPayload): Persona { const receiver = frontEndRequest.Receptor return { Nombre: receiver.Nombre, Identificacion: { Tipo: receiver.Identificacion.Tipo || DEFAULT_VALUES.tipoIdentificacion, Numero: receiver.Identificacion.Numero }, NombreComercial: receiver.NombreComercial, Ubicacion: receiver.Ubicacion, Telefono: receiver.Telefono, Fax: receiver.Fax, CorreoElectronico: receiver.CorreoElectronico } }