n8n-nodes-fatture-in-cloud
Version:
n8n community node for Fatture in Cloud integration using the official TypeScript SDK
153 lines • 8.02 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.TaxesModule = void 0;
const n8n_workflow_1 = require("n8n-workflow");
const fattureincloud_ts_sdk_1 = require("@fattureincloud/fattureincloud-ts-sdk");
const TaxesResource_1 = require("../resources/TaxesResource");
class TaxesModule {
constructor() {
this.resource = TaxesResource_1.TaxesResource;
}
async execute(context, operation, itemIndex) {
var _a;
const credentials = await context.getCredentials('fattureInCloudOAuth2Api');
let accessToken;
if ((_a = credentials.oauthTokenData) === null || _a === void 0 ? void 0 : _a.access_token) {
accessToken = credentials.oauthTokenData.access_token;
}
else if (credentials.access_token) {
accessToken = credentials.access_token;
}
else if (credentials.accessToken) {
accessToken = credentials.accessToken;
}
else {
throw new n8n_workflow_1.NodeOperationError(context.getNode(), 'Access token not found in credentials. Please re-authenticate your Fatture in Cloud connection.', { itemIndex });
}
const config = new fattureincloud_ts_sdk_1.Configuration({
accessToken,
});
const taxesApi = new fattureincloud_ts_sdk_1.TaxesApi(config);
const companyId = context.getNodeParameter('companyId', itemIndex);
let responseData;
switch (operation) {
case 'create':
const amount = context.getNodeParameter('amount', itemIndex);
const description = context.getNodeParameter('description', itemIndex);
const dueDate = context.getNodeParameter('dueDate', itemIndex);
const status = context.getNodeParameter('status', itemIndex);
const paymentAccount = context.getNodeParameter('paymentAccount', itemIndex, {});
const attachmentToken = context.getNodeParameter('attachmentToken', itemIndex, '');
if (!description || description.trim() === '') {
throw new n8n_workflow_1.NodeOperationError(context.getNode(), 'Description is required.', { itemIndex });
}
if (amount <= 0) {
throw new n8n_workflow_1.NodeOperationError(context.getNode(), 'Amount must be greater than 0.', { itemIndex });
}
const f24Data = {
amount,
description: description.trim(),
due_date: dueDate,
status: status,
};
if (paymentAccount.accountDetails && paymentAccount.accountDetails.id) {
f24Data.payment_account = {
id: paymentAccount.accountDetails.id,
name: paymentAccount.accountDetails.name || '',
};
}
if (attachmentToken.trim()) {
f24Data.attachment_token = attachmentToken.trim();
}
const createRequest = {
data: f24Data,
};
const createResponse = await taxesApi.createF24(companyId, createRequest);
responseData = createResponse.data;
break;
case 'get':
const documentId = context.getNodeParameter('documentId', itemIndex);
if (!documentId) {
throw new n8n_workflow_1.NodeOperationError(context.getNode(), 'Document ID is required.', { itemIndex });
}
const getResponse = await taxesApi.getF24(companyId, documentId);
responseData = getResponse.data;
break;
case 'list':
const filterOptions = context.getNodeParameter('filterOptions', itemIndex, {});
const listParams = { companyId };
if (filterOptions.fields) {
listParams.fields = filterOptions.fields;
}
if (filterOptions.fieldset) {
listParams.fieldset = filterOptions.fieldset;
}
if (filterOptions.sort) {
listParams.sort = filterOptions.sort;
}
if (filterOptions.page) {
listParams.page = filterOptions.page;
}
if (filterOptions.perPage) {
listParams.perPage = filterOptions.perPage;
}
if (filterOptions.q) {
listParams.q = filterOptions.q;
}
const listResponse = await taxesApi.listF24(companyId, filterOptions.fields, filterOptions.fieldset, filterOptions.sort, filterOptions.page, filterOptions.perPage, filterOptions.q);
responseData = listResponse.data;
break;
case 'update':
const updateDocumentId = context.getNodeParameter('documentId', itemIndex);
const updateAmount = context.getNodeParameter('amount', itemIndex);
const updateDescription = context.getNodeParameter('description', itemIndex);
const updateDueDate = context.getNodeParameter('dueDate', itemIndex);
const updateStatus = context.getNodeParameter('status', itemIndex);
const updatePaymentAccount = context.getNodeParameter('paymentAccount', itemIndex, {});
const updateAttachmentToken = context.getNodeParameter('attachmentToken', itemIndex, '');
if (!updateDocumentId) {
throw new n8n_workflow_1.NodeOperationError(context.getNode(), 'Document ID is required.', { itemIndex });
}
if (!updateDescription || updateDescription.trim() === '') {
throw new n8n_workflow_1.NodeOperationError(context.getNode(), 'Description is required.', { itemIndex });
}
if (updateAmount <= 0) {
throw new n8n_workflow_1.NodeOperationError(context.getNode(), 'Amount must be greater than 0.', { itemIndex });
}
const updateF24Data = {
amount: updateAmount,
description: updateDescription.trim(),
due_date: updateDueDate,
status: updateStatus,
};
if (updatePaymentAccount.accountDetails && updatePaymentAccount.accountDetails.id) {
updateF24Data.payment_account = {
id: updatePaymentAccount.accountDetails.id,
name: updatePaymentAccount.accountDetails.name || '',
};
}
if (updateAttachmentToken.trim()) {
updateF24Data.attachment_token = updateAttachmentToken.trim();
}
const modifyRequest = {
data: updateF24Data,
};
const updateResponse = await taxesApi.modifyF24(companyId, updateDocumentId, modifyRequest);
responseData = updateResponse.data;
break;
case 'delete':
const deleteDocumentId = context.getNodeParameter('documentId', itemIndex);
if (!deleteDocumentId) {
throw new n8n_workflow_1.NodeOperationError(context.getNode(), 'Document ID is required.', { itemIndex });
}
await taxesApi.deleteF24(companyId, deleteDocumentId);
responseData = { success: true, message: 'F24 deleted successfully' };
break;
default:
throw new n8n_workflow_1.NodeOperationError(context.getNode(), `Unknown operation: ${operation}`, { itemIndex });
}
return responseData;
}
}
exports.TaxesModule = TaxesModule;
//# sourceMappingURL=TaxesModule.js.map