UNPKG

n8n-nodes-fatture-in-cloud

Version:

n8n community node for Fatture in Cloud integration using the official TypeScript SDK

153 lines 8.02 kB
"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