fiscalapi
Version:
SDK de Node.js para FiscalAPI
112 lines • 12.2 kB
JavaScript
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=