UNPKG

n8n-nodes-fatture-in-cloud

Version:

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

189 lines 11.1 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.ReceiptsModule = void 0; const n8n_workflow_1 = require("n8n-workflow"); const fattureincloud_ts_sdk_1 = require("@fattureincloud/fattureincloud-ts-sdk"); const ReceiptsResource_1 = require("../resources/ReceiptsResource"); class ReceiptsModule { constructor() { this.resource = ReceiptsResource_1.ReceiptsResource; } 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 receiptsApi = new fattureincloud_ts_sdk_1.ReceiptsApi(config); const companyId = context.getNodeParameter('companyId', itemIndex); let responseData; switch (operation) { case 'create': const date = context.getNodeParameter('date', itemIndex); const number = context.getNodeParameter('number', itemIndex); const numeration = context.getNodeParameter('numeration', itemIndex, ''); const amountNet = context.getNodeParameter('amountNet', itemIndex); const amountVat = context.getNodeParameter('amountVat', itemIndex); const type = context.getNodeParameter('type', itemIndex); const description = context.getNodeParameter('description', itemIndex); const rcCenter = context.getNodeParameter('rcCenter', itemIndex, ''); const paymentAccount = context.getNodeParameter('paymentAccount', itemIndex); const itemsList = context.getNodeParameter('itemsList', itemIndex); if (!description || description.trim() === '') { throw new n8n_workflow_1.NodeOperationError(context.getNode(), 'Description is required.', { itemIndex }); } if (!paymentAccount || !paymentAccount.accountDetails || !paymentAccount.accountDetails.id) { throw new n8n_workflow_1.NodeOperationError(context.getNode(), 'Payment account is required.', { itemIndex }); } if (!itemsList || !itemsList.item || !Array.isArray(itemsList.item) || itemsList.item.length === 0) { throw new n8n_workflow_1.NodeOperationError(context.getNode(), 'At least one item is required.', { itemIndex }); } const receiptData = { date, number, numeration: numeration.trim(), amount_net: amountNet, amount_vat: amountVat, type: type, description: description.trim(), rc_center: rcCenter.trim(), payment_account: { id: paymentAccount.accountDetails.id, name: paymentAccount.accountDetails.name, }, items_list: itemsList.item.map((item) => { if (!item.vat || !item.vat.vatDetails) { throw new n8n_workflow_1.NodeOperationError(context.getNode(), 'VAT details are required for each item.', { itemIndex }); } return { id: item.id || undefined, amount_net: item.amountNet, amount_vat: item.amountVat, category: item.category.trim(), vat: { id: item.vat.vatDetails.id, value: item.vat.vatDetails.value, description: item.vat.vatDetails.description || '', }, }; }), }; const createRequest = { data: receiptData, }; const createResponse = await receiptsApi.createReceipt(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 receiptsApi.getReceipt(companyId, documentId); responseData = getResponse.data; break; case 'list': const filterOptions = context.getNodeParameter('filterOptions', itemIndex, {}); const listResponse = await receiptsApi.listReceipts(companyId, filterOptions.fields, filterOptions.fieldset, filterOptions.page, filterOptions.perPage, filterOptions.sort, filterOptions.q); responseData = listResponse.data; break; case 'update': const updateDocumentId = context.getNodeParameter('documentId', itemIndex); const updateDate = context.getNodeParameter('date', itemIndex); const updateNumber = context.getNodeParameter('number', itemIndex); const updateNumeration = context.getNodeParameter('numeration', itemIndex, ''); const updateAmountNet = context.getNodeParameter('amountNet', itemIndex); const updateAmountVat = context.getNodeParameter('amountVat', itemIndex); const updateType = context.getNodeParameter('type', itemIndex); const updateDescription = context.getNodeParameter('description', itemIndex); const updateRcCenter = context.getNodeParameter('rcCenter', itemIndex, ''); const updatePaymentAccount = context.getNodeParameter('paymentAccount', itemIndex); const updateItemsList = context.getNodeParameter('itemsList', 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 (!updatePaymentAccount || !updatePaymentAccount.accountDetails || !updatePaymentAccount.accountDetails.id) { throw new n8n_workflow_1.NodeOperationError(context.getNode(), 'Payment account is required.', { itemIndex }); } if (!updateItemsList || !updateItemsList.item || !Array.isArray(updateItemsList.item) || updateItemsList.item.length === 0) { throw new n8n_workflow_1.NodeOperationError(context.getNode(), 'At least one item is required.', { itemIndex }); } const updateReceiptData = { date: updateDate, number: updateNumber, numeration: updateNumeration.trim(), amount_net: updateAmountNet, amount_vat: updateAmountVat, type: updateType, description: updateDescription.trim(), rc_center: updateRcCenter.trim(), payment_account: { id: updatePaymentAccount.accountDetails.id, name: updatePaymentAccount.accountDetails.name, }, items_list: updateItemsList.item.map((item) => { if (!item.vat || !item.vat.vatDetails) { throw new n8n_workflow_1.NodeOperationError(context.getNode(), 'VAT details are required for each item.', { itemIndex }); } return { id: item.id || undefined, amount_net: item.amountNet, amount_vat: item.amountVat, category: item.category.trim(), vat: { id: item.vat.vatDetails.id, value: item.vat.vatDetails.value, description: item.vat.vatDetails.description || '', }, }; }), }; const modifyRequest = { data: updateReceiptData, }; const updateResponse = await receiptsApi.modifyReceipt(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 receiptsApi.deleteReceipt(companyId, deleteDocumentId); responseData = { success: true, message: 'Receipt deleted successfully' }; break; case 'getMonthlyTotals': const monthlyFilterOptions = context.getNodeParameter('filterOptions', itemIndex, {}); if (!monthlyFilterOptions.type) { throw new n8n_workflow_1.NodeOperationError(context.getNode(), 'Receipt type is required for monthly totals.', { itemIndex }); } if (!monthlyFilterOptions.year) { throw new n8n_workflow_1.NodeOperationError(context.getNode(), 'Year is required for monthly totals.', { itemIndex }); } const monthlyTotalsResponse = await receiptsApi.getReceiptsMonthlyTotals(companyId, monthlyFilterOptions.type, monthlyFilterOptions.year); responseData = monthlyTotalsResponse.data; break; default: throw new n8n_workflow_1.NodeOperationError(context.getNode(), `Unknown operation: ${operation}`, { itemIndex }); } return responseData; } } exports.ReceiptsModule = ReceiptsModule; //# sourceMappingURL=ReceiptsModule.js.map