n8n-nodes-everest-tms
Version:
Everest TMS n8n integration
90 lines • 4.65 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.executeInvoiceOperations = executeInvoiceOperations;
const GenericFunctions_1 = require("../GenericFunctions");
async function executeInvoiceOperations(itemIndex) {
const operation = this.getNodeParameter('operation', itemIndex);
if (operation === 'get') {
const id = this.getNodeParameter('id', itemIndex);
(0, GenericFunctions_1.validateRequiredFields)({ id }, ['id']);
const response = await GenericFunctions_1.everestApiRequest.call(this, 'POST', '/invoices/get', { id });
return response.invoice || response;
}
if (operation === 'getMany') {
const options = this.getNodeParameter('options', itemIndex, {});
const body = (0, GenericFunctions_1.cleanObject)(options);
// Handle pagination
if (body.limit && body.limit > 0) {
// Use custom limit_start if provided, otherwise default to 0
const limitStart = body.limit_start || 0;
body.limit_start = limitStart;
body.limit_end = limitStart + body.limit;
delete body.limit;
const response = await GenericFunctions_1.everestApiRequest.call(this, 'POST', '/invoices', body);
return response.invoices || [];
}
else {
return await GenericFunctions_1.everestApiRequestAllItems.call(this, 'invoices', 'POST', '/invoices', body);
}
}
if (operation === 'create') {
const type = this.getNodeParameter('type', itemIndex);
const title = this.getNodeParameter('title', itemIndex);
const description = this.getNodeParameter('description', itemIndex);
const nameOrCompany = this.getNodeParameter('name_or_company', itemIndex);
const address = this.getNodeParameter('address', itemIndex);
const amountExcl = this.getNodeParameter('amount_excl', itemIndex);
const amountIncl = this.getNodeParameter('amount_incl', itemIndex);
const createdFor = this.getNodeParameter('created_for', itemIndex);
const additionalFields = this.getNodeParameter('additionalFields', itemIndex, {});
const missionsString = this.getNodeParameter('missions', itemIndex, '');
(0, GenericFunctions_1.validateRequiredFields)({ type, title, description, name_or_company: nameOrCompany, address, amount_excl: amountExcl, amount_incl: amountIncl, created_for: createdFor }, ['type', 'title', 'description', 'name_or_company', 'address', 'amount_excl', 'amount_incl', 'created_for']);
const body = {
type,
title,
description,
name_or_company: nameOrCompany,
address,
amount_excl: amountExcl,
amount_incl: amountIncl,
created_for: createdFor,
...(0, GenericFunctions_1.cleanObject)(additionalFields),
};
// Handle missions array
if (missionsString) {
body.missions = missionsString.split(',').map(ref => ref.trim());
}
// Handle date conversion
if (body.date_paid) {
body.date_paid = Math.floor(new Date(body.date_paid).getTime() / 1000);
}
const response = await GenericFunctions_1.everestApiRequest.call(this, 'POST', '/invoices/create', body);
return response.invoice || response;
}
if (operation === 'update') {
const id = this.getNodeParameter('id', itemIndex);
const updateFields = this.getNodeParameter('updateFields', itemIndex, {});
(0, GenericFunctions_1.validateRequiredFields)({ id }, ['id']);
const body = {
id,
...(0, GenericFunctions_1.cleanObject)(updateFields),
};
// Handle missions array
if (body.missions && typeof body.missions === 'string') {
body.missions = body.missions.split(',').map(ref => ref.trim());
}
// Handle date conversion
if (body.date_paid) {
body.date_paid = Math.floor(new Date(body.date_paid).getTime() / 1000);
}
const response = await GenericFunctions_1.everestApiRequest.call(this, 'POST', '/invoices/update', body);
return response.invoice || response;
}
if (operation === 'delete') {
const id = this.getNodeParameter('id', itemIndex);
(0, GenericFunctions_1.validateRequiredFields)({ id }, ['id']);
return await GenericFunctions_1.everestApiRequest.call(this, 'POST', '/invoices/delete', { id });
}
throw new Error(`The operation "${operation}" is not known!`);
}
//# sourceMappingURL=InvoiceOperations.js.map