UNPKG

fiscalapi

Version:

SDK de Node.js para FiscalAPI

112 lines 12.2 kB
import { BaseFiscalapiService } from './base-fiscalapi-service'; /** * Implementación del servicio de facturas */ export class InvoiceService extends BaseFiscalapiService { /** * Crea una nueva instancia del servicio de facturas * @param {IFiscalapiHttpClient} httpClient - Cliente HTTP * @param {string} apiVersion - Versión de la API */ constructor(httpClient, apiVersion) { super(httpClient, 'invoices', apiVersion); this.INCOME_ENDPOINT = 'income'; this.CREDIT_NOTE_ENDPOINT = 'credit-note'; this.PAYMENT_ENDPOINT = 'payment'; } /** * @inheritdoc */ async create(requestModel) { if (!requestModel) { throw new Error('requestModel cannot be null'); } let endpoint; switch (requestModel.typeCode) { case 'I': endpoint = this.INCOME_ENDPOINT; break; case 'E': endpoint = this.CREDIT_NOTE_ENDPOINT; break; case 'P': endpoint = this.PAYMENT_ENDPOINT; break; default: throw new Error(`Unsupported invoice type: ${requestModel.typeCode}`); } return await this.executeRequest({ path: endpoint, data: requestModel, method: 'POST', }); } /** * Cancela una factura * @param {CancelInvoiceRequest} request - Solicitud para cancelar factura * @returns {Promise<ApiResponse<CancelInvoiceResponse>>} Respuesta de la cancelación */ async cancel(request) { if (!request) { throw new Error('request cannot be null'); } return await this.executeRequest({ data: request, method: 'DELETE', }); } /** * Obtiene el PDF de una factura * @param {CreatePdfRequest} request - Solicitud para crear PDF * @returns {Promise<ApiResponse<FileResponse>>} Respuesta con el archivo PDF */ async getPdf(request) { if (!request) { throw new Error('request cannot be null'); } return await this.executeRequest({ path: 'pdf', data: request, method: 'POST', }); } /** * Obtiene el XML de una factura * @param {string} id - ID de la factura * @returns {Promise<ApiResponse<FileResponse>>} Respuesta con el archivo XML */ async getXml(id) { if (!id || id.trim() === '') { throw new Error('id cannot be null or empty'); } return await this.executeRequest({ path: `${id}/xml`, method: 'GET', }); } /** * Envía una factura por correo electrónico * @param {SendInvoiceRequest} request - Solicitud para enviar factura * @returns {Promise<ApiResponse<boolean>>} Resultado de la operación */ async send(request) { return await this.executeRequest({ path: 'send', data: request, method: 'POST', }); } /** * Obtiene el estado de una factura * @param {InvoiceStatusRequest} request - Solicitud para consultar estado * @returns {Promise<ApiResponse<InvoiceStatusResponse>>} Respuesta con el estado de la factura */ async getStatus(request) { return await this.executeRequest({ path: 'status', data: request, method: 'POST', }); } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW52b2ljZS1zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3NlcnZpY2VzL2ludm9pY2Utc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQVloRTs7R0FFRztBQUNILE1BQU0sT0FBTyxjQUFlLFNBQVEsb0JBQTZCO0lBSy9EOzs7O09BSUc7SUFDSCxZQUFZLFVBQWdDLEVBQUUsVUFBa0I7UUFDOUQsS0FBSyxDQUFDLFVBQVUsRUFBRSxVQUFVLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFWM0Isb0JBQWUsR0FBRyxRQUFRLENBQUM7UUFDM0IseUJBQW9CLEdBQUcsYUFBYSxDQUFDO1FBQ3JDLHFCQUFnQixHQUFHLFNBQVMsQ0FBQztJQVM5QyxDQUFDO0lBRUQ7O09BRUc7SUFDTyxLQUFLLENBQUMsTUFBTSxDQUFDLFlBQXFCO1FBQzFDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUNsQixNQUFNLElBQUksS0FBSyxDQUFDLDZCQUE2QixDQUFDLENBQUM7UUFDakQsQ0FBQztRQUVELElBQUksUUFBZ0IsQ0FBQztRQUVyQixRQUFRLFlBQVksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUM5QixLQUFLLEdBQUc7Z0JBQ04sUUFBUSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUM7Z0JBQ2hDLE1BQU07WUFDUixLQUFLLEdBQUc7Z0JBQ04sUUFBUSxHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQztnQkFDckMsTUFBTTtZQUNSLEtBQUssR0FBRztnQkFDTixRQUFRLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDO2dCQUNqQyxNQUFNO1lBQ1I7Z0JBQ0UsTUFBTSxJQUFJLEtBQUssQ0FBQyw2QkFBNkIsWUFBWSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFDMUUsQ0FBQztRQUVDLE9BQU8sTUFBTSxJQUFJLENBQUMsY0FBYyxDQUFtQjtZQUNqRCxJQUFJLEVBQUMsUUFBUTtZQUNiLElBQUksRUFBQyxZQUFZO1lBQ2pCLE1BQU0sRUFBQyxNQUFNO1NBQ2QsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxLQUFLLENBQUMsTUFBTSxDQUFDLE9BQTZCO1FBQ3hDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNiLE1BQU0sSUFBSSxLQUFLLENBQUMsd0JBQXdCLENBQUMsQ0FBQztRQUM1QyxDQUFDO1FBRUQsT0FBTyxNQUFNLElBQUksQ0FBQyxjQUFjLENBQThDO1lBQzVFLElBQUksRUFBQyxPQUFPO1lBQ1osTUFBTSxFQUFDLFFBQVE7U0FDaEIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxLQUFLLENBQUMsTUFBTSxDQUFDLE9BQXlCO1FBQ3BDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNiLE1BQU0sSUFBSSxLQUFLLENBQUMsd0JBQXdCLENBQUMsQ0FBQztRQUM1QyxDQUFDO1FBQ0QsT0FBTyxNQUFNLElBQUksQ0FBQyxjQUFjLENBQWlDO1lBQy9ELElBQUksRUFBQyxLQUFLO1lBQ1YsSUFBSSxFQUFDLE9BQU87WUFDWixNQUFNLEVBQUMsTUFBTTtTQUNkLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsS0FBSyxDQUFDLE1BQU0sQ0FBQyxFQUFVO1FBRXJCLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDO1lBQzVCLE1BQU0sSUFBSSxLQUFLLENBQUMsNEJBQTRCLENBQUMsQ0FBQztRQUNoRCxDQUFDO1FBRUQsT0FBTyxNQUFNLElBQUksQ0FBQyxjQUFjLENBQXVCO1lBQ3JELElBQUksRUFBQyxHQUFHLEVBQUUsTUFBTTtZQUNoQixNQUFNLEVBQUUsS0FBSztTQUNkLENBQUMsQ0FBQztJQUVMLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsS0FBSyxDQUFDLElBQUksQ0FBQyxPQUEyQjtRQUNwQyxPQUFPLE1BQU0sSUFBSSxDQUFDLGNBQWMsQ0FBOEI7WUFDNUQsSUFBSSxFQUFDLE1BQU07WUFDWCxJQUFJLEVBQUMsT0FBTztZQUNaLE1BQU0sRUFBQyxNQUFNO1NBQ2QsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxLQUFLLENBQUMsU0FBUyxDQUFDLE9BQTZCO1FBQ3ZDLE9BQU8sTUFBTSxJQUFJLENBQUMsY0FBYyxDQUE4QztZQUM5RSxJQUFJLEVBQUMsUUFBUTtZQUNiLElBQUksRUFBQyxPQUFPO1lBQ1osTUFBTSxFQUFDLE1BQU07U0FDZCxDQUFDLENBQUM7SUFDUCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJRmlzY2FsYXBpSHR0cENsaWVudCB9IGZyb20gJy4uL2h0dHAvZmlzY2FsYXBpLWh0dHAtY2xpZW50LmludGVyZmFjZSc7XG5pbXBvcnQgeyBBcGlSZXNwb25zZSB9IGZyb20gJy4uL2NvbW1vbi9hcGktcmVzcG9uc2UnO1xuaW1wb3J0IHsgRmlsZVJlc3BvbnNlIH0gZnJvbSAnLi4vY29tbW9uL2ZpbGUtcmVzcG9uc2UnO1xuaW1wb3J0IHsgQmFzZUZpc2NhbGFwaVNlcnZpY2UgfSBmcm9tICcuL2Jhc2UtZmlzY2FsYXBpLXNlcnZpY2UnO1xuaW1wb3J0IHsgSUludm9pY2VTZXJ2aWNlIH0gZnJvbSAnLi4vYWJzdHJhY3Rpb25zL2ludm9pY2Utc2VydmljZS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgXG4gIEludm9pY2UsIFxuICBDYW5jZWxJbnZvaWNlUmVxdWVzdCwgXG4gIENhbmNlbEludm9pY2VSZXNwb25zZSwgXG4gIENyZWF0ZVBkZlJlcXVlc3QsIFxuICBTZW5kSW52b2ljZVJlcXVlc3QsXG4gIEludm9pY2VTdGF0dXNSZXF1ZXN0LFxuICBJbnZvaWNlU3RhdHVzUmVzcG9uc2Vcbn0gZnJvbSAnLi4vbW9kZWxzL2ludm9pY2UnO1xuXG4vKipcbiAqIEltcGxlbWVudGFjacOzbiBkZWwgc2VydmljaW8gZGUgZmFjdHVyYXNcbiAqL1xuZXhwb3J0IGNsYXNzIEludm9pY2VTZXJ2aWNlIGV4dGVuZHMgQmFzZUZpc2NhbGFwaVNlcnZpY2U8SW52b2ljZT4gaW1wbGVtZW50cyBJSW52b2ljZVNlcnZpY2Uge1xuICBwcml2YXRlIHJlYWRvbmx5IElOQ09NRV9FTkRQT0lOVCA9ICdpbmNvbWUnO1xuICBwcml2YXRlIHJlYWRvbmx5IENSRURJVF9OT1RFX0VORFBPSU5UID0gJ2NyZWRpdC1ub3RlJztcbiAgcHJpdmF0ZSByZWFkb25seSBQQVlNRU5UX0VORFBPSU5UID0gJ3BheW1lbnQnO1xuXG4gIC8qKlxuICAgKiBDcmVhIHVuYSBudWV2YSBpbnN0YW5jaWEgZGVsIHNlcnZpY2lvIGRlIGZhY3R1cmFzXG4gICAqIEBwYXJhbSB7SUZpc2NhbGFwaUh0dHBDbGllbnR9IGh0dHBDbGllbnQgLSBDbGllbnRlIEhUVFBcbiAgICogQHBhcmFtIHtzdHJpbmd9IGFwaVZlcnNpb24gLSBWZXJzacOzbiBkZSBsYSBBUElcbiAgICovXG4gIGNvbnN0cnVjdG9yKGh0dHBDbGllbnQ6IElGaXNjYWxhcGlIdHRwQ2xpZW50LCBhcGlWZXJzaW9uOiBzdHJpbmcpIHtcbiAgICBzdXBlcihodHRwQ2xpZW50LCAnaW52b2ljZXMnLCBhcGlWZXJzaW9uKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAaW5oZXJpdGRvY1xuICAgKi9cbiAgIG92ZXJyaWRlIGFzeW5jIGNyZWF0ZShyZXF1ZXN0TW9kZWw6IEludm9pY2UpOiBQcm9taXNlPEFwaVJlc3BvbnNlPEludm9pY2U+PiB7XG4gICAgaWYgKCFyZXF1ZXN0TW9kZWwpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcigncmVxdWVzdE1vZGVsIGNhbm5vdCBiZSBudWxsJyk7XG4gICAgfVxuXG4gICAgbGV0IGVuZHBvaW50OiBzdHJpbmc7XG5cbiAgICBzd2l0Y2ggKHJlcXVlc3RNb2RlbC50eXBlQ29kZSkge1xuICAgICAgY2FzZSAnSSc6XG4gICAgICAgIGVuZHBvaW50ID0gdGhpcy5JTkNPTUVfRU5EUE9JTlQ7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnRSc6XG4gICAgICAgIGVuZHBvaW50ID0gdGhpcy5DUkVESVRfTk9URV9FTkRQT0lOVDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdQJzpcbiAgICAgICAgZW5kcG9pbnQgPSB0aGlzLlBBWU1FTlRfRU5EUE9JTlQ7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbnN1cHBvcnRlZCBpbnZvaWNlIHR5cGU6ICR7cmVxdWVzdE1vZGVsLnR5cGVDb2RlfWApO1xuICAgIH1cblxuICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuZXhlY3V0ZVJlcXVlc3Q8SW52b2ljZSwgSW52b2ljZT4oe1xuICAgICAgICBwYXRoOmVuZHBvaW50LFxuICAgICAgICBkYXRhOnJlcXVlc3RNb2RlbCxcbiAgICAgICAgbWV0aG9kOidQT1NUJyxcbiAgICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIENhbmNlbGEgdW5hIGZhY3R1cmFcbiAgICogQHBhcmFtIHtDYW5jZWxJbnZvaWNlUmVxdWVzdH0gcmVxdWVzdCAtIFNvbGljaXR1ZCBwYXJhIGNhbmNlbGFyIGZhY3R1cmFcbiAgICogQHJldHVybnMge1Byb21pc2U8QXBpUmVzcG9uc2U8Q2FuY2VsSW52b2ljZVJlc3BvbnNlPj59IFJlc3B1ZXN0YSBkZSBsYSBjYW5jZWxhY2nDs25cbiAgICovXG4gIGFzeW5jIGNhbmNlbChyZXF1ZXN0OiBDYW5jZWxJbnZvaWNlUmVxdWVzdCk6IFByb21pc2U8QXBpUmVzcG9uc2U8Q2FuY2VsSW52b2ljZVJlc3BvbnNlPj4ge1xuICAgIGlmICghcmVxdWVzdCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdyZXF1ZXN0IGNhbm5vdCBiZSBudWxsJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuZXhlY3V0ZVJlcXVlc3Q8Q2FuY2VsSW52b2ljZVJlc3BvbnNlLCBDYW5jZWxJbnZvaWNlUmVxdWVzdD4oe1xuICAgICAgZGF0YTpyZXF1ZXN0LFxuICAgICAgbWV0aG9kOidERUxFVEUnLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIE9idGllbmUgZWwgUERGIGRlIHVuYSBmYWN0dXJhXG4gICAqIEBwYXJhbSB7Q3JlYXRlUGRmUmVxdWVzdH0gcmVxdWVzdCAtIFNvbGljaXR1ZCBwYXJhIGNyZWFyIFBERlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxBcGlSZXNwb25zZTxGaWxlUmVzcG9uc2U+Pn0gUmVzcHVlc3RhIGNvbiBlbCBhcmNoaXZvIFBERlxuICAgKi9cbiAgYXN5bmMgZ2V0UGRmKHJlcXVlc3Q6IENyZWF0ZVBkZlJlcXVlc3QpOiBQcm9taXNlPEFwaVJlc3BvbnNlPEZpbGVSZXNwb25zZT4+IHtcbiAgICBpZiAoIXJlcXVlc3QpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcigncmVxdWVzdCBjYW5ub3QgYmUgbnVsbCcpO1xuICAgIH1cbiAgICByZXR1cm4gYXdhaXQgdGhpcy5leGVjdXRlUmVxdWVzdDxGaWxlUmVzcG9uc2UsIENyZWF0ZVBkZlJlcXVlc3Q+KHtcbiAgICAgIHBhdGg6J3BkZicsXG4gICAgICBkYXRhOnJlcXVlc3QsXG4gICAgICBtZXRob2Q6J1BPU1QnLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIE9idGllbmUgZWwgWE1MIGRlIHVuYSBmYWN0dXJhXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBpZCAtIElEIGRlIGxhIGZhY3R1cmFcbiAgICogQHJldHVybnMge1Byb21pc2U8QXBpUmVzcG9uc2U8RmlsZVJlc3BvbnNlPj59IFJlc3B1ZXN0YSBjb24gZWwgYXJjaGl2byBYTUxcbiAgICovXG4gIGFzeW5jIGdldFhtbChpZDogc3RyaW5nKTogUHJvbWlzZTxBcGlSZXNwb25zZTxGaWxlUmVzcG9uc2U+PiB7XG5cbiAgICBpZiAoIWlkIHx8IGlkLnRyaW0oKSA9PT0gJycpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignaWQgY2Fubm90IGJlIG51bGwgb3IgZW1wdHknKTtcbiAgICB9XG5cbiAgICByZXR1cm4gYXdhaXQgdGhpcy5leGVjdXRlUmVxdWVzdDxGaWxlUmVzcG9uc2UsIHN0cmluZz4oe1xuICAgICAgcGF0aDpgJHtpZH0veG1sYCxcbiAgICAgIG1ldGhvZDogJ0dFVCcsXG4gICAgfSk7XG5cbiAgfVxuXG4gIC8qKlxuICAgKiBFbnbDrWEgdW5hIGZhY3R1cmEgcG9yIGNvcnJlbyBlbGVjdHLDs25pY29cbiAgICogQHBhcmFtIHtTZW5kSW52b2ljZVJlcXVlc3R9IHJlcXVlc3QgLSBTb2xpY2l0dWQgcGFyYSBlbnZpYXIgZmFjdHVyYVxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxBcGlSZXNwb25zZTxib29sZWFuPj59IFJlc3VsdGFkbyBkZSBsYSBvcGVyYWNpw7NuXG4gICAqL1xuICBhc3luYyBzZW5kKHJlcXVlc3Q6IFNlbmRJbnZvaWNlUmVxdWVzdCk6IFByb21pc2U8QXBpUmVzcG9uc2U8Ym9vbGVhbj4+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5leGVjdXRlUmVxdWVzdDxib29sZWFuLCBTZW5kSW52b2ljZVJlcXVlc3Q+KHtcbiAgICAgIHBhdGg6J3NlbmQnLFxuICAgICAgZGF0YTpyZXF1ZXN0LFxuICAgICAgbWV0aG9kOidQT1NUJyxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBPYnRpZW5lIGVsIGVzdGFkbyBkZSB1bmEgZmFjdHVyYVxuICAgKiBAcGFyYW0ge0ludm9pY2VTdGF0dXNSZXF1ZXN0fSByZXF1ZXN0IC0gU29saWNpdHVkIHBhcmEgY29uc3VsdGFyIGVzdGFkb1xuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxBcGlSZXNwb25zZTxJbnZvaWNlU3RhdHVzUmVzcG9uc2U+Pn0gUmVzcHVlc3RhIGNvbiBlbCBlc3RhZG8gZGUgbGEgZmFjdHVyYVxuICAgKi9cbiAgYXN5bmMgZ2V0U3RhdHVzKHJlcXVlc3Q6IEludm9pY2VTdGF0dXNSZXF1ZXN0KTogUHJvbWlzZTxBcGlSZXNwb25zZTxJbnZvaWNlU3RhdHVzUmVzcG9uc2U+PiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmV4ZWN1dGVSZXF1ZXN0PEludm9pY2VTdGF0dXNSZXNwb25zZSwgSW52b2ljZVN0YXR1c1JlcXVlc3Q+KHtcbiAgICAgICAgcGF0aDonc3RhdHVzJyxcbiAgICAgICAgZGF0YTpyZXF1ZXN0LFxuICAgICAgICBtZXRob2Q6J1BPU1QnLFxuICAgICAgfSk7XG4gIH1cbn0iXX0=