UNPKG

n8n-nodes-fatture-in-cloud

Version:

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

128 lines 6.96 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.CashbookModule = void 0; const n8n_workflow_1 = require("n8n-workflow"); const fattureincloud_ts_sdk_1 = require("@fattureincloud/fattureincloud-ts-sdk"); const CashbookResource_1 = require("../resources/CashbookResource"); class CashbookModule { constructor() { this.resource = CashbookResource_1.CashbookResource; } 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 cashbookApi = new fattureincloud_ts_sdk_1.CashbookApi(config); const companyId = context.getNodeParameter('companyId', itemIndex); let responseData; switch (operation) { case 'create': const date = context.getNodeParameter('date', itemIndex); const amountIn = context.getNodeParameter('amountIn', itemIndex, 0); const amountOut = context.getNodeParameter('amountOut', itemIndex, 0); const description = context.getNodeParameter('description', itemIndex); const kind = context.getNodeParameter('kind', itemIndex, 'receipt'); if (!description || description.trim() === '') { throw new n8n_workflow_1.NodeOperationError(context.getNode(), 'Description is required.', { itemIndex }); } if (amountIn === 0 && amountOut === 0) { throw new n8n_workflow_1.NodeOperationError(context.getNode(), 'Either Amount In or Amount Out must be greater than 0.', { itemIndex }); } const cashbookData = { date, description: description.trim(), kind, }; if (amountIn > 0) { cashbookData.amount_in = amountIn; } if (amountOut > 0) { cashbookData.amount_out = amountOut; } const createRequest = { data: cashbookData, }; const createResponse = await cashbookApi.createCashbookEntry(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 cashbookApi.getCashbookEntry(companyId, documentId); responseData = getResponse.data; break; case 'list': const additionalFields = context.getNodeParameter('additionalFields', itemIndex, {}); const dateFrom = additionalFields.dateFrom || `${new Date().getFullYear()}-01-01`; const dateTo = additionalFields.dateTo || undefined; const year = additionalFields.year || undefined; const type = additionalFields.type && additionalFields.type !== 'all' ? additionalFields.type : undefined; const listResponse = await cashbookApi.listCashbookEntries(companyId, dateFrom, dateTo, year, type); responseData = listResponse.data; break; case 'update': const updateDocumentId = context.getNodeParameter('documentId', itemIndex); const updateDate = context.getNodeParameter('date', itemIndex); const updateAmountIn = context.getNodeParameter('amountIn', itemIndex, 0); const updateAmountOut = context.getNodeParameter('amountOut', itemIndex, 0); const updateDescription = context.getNodeParameter('description', itemIndex); const updateKind = context.getNodeParameter('kind', itemIndex, 'receipt'); 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 (updateAmountIn === 0 && updateAmountOut === 0) { throw new n8n_workflow_1.NodeOperationError(context.getNode(), 'Either Amount In or Amount Out must be greater than 0.', { itemIndex }); } const updateCashbookData = { date: updateDate, description: updateDescription.trim(), kind: updateKind, }; if (updateAmountIn > 0) { updateCashbookData.amount_in = updateAmountIn; } if (updateAmountOut > 0) { updateCashbookData.amount_out = updateAmountOut; } const modifyRequest = { data: updateCashbookData, }; const updateResponse = await cashbookApi.modifyCashbookEntry(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 cashbookApi.deleteCashbookEntry(companyId, deleteDocumentId); responseData = { success: true, message: 'Cashbook entry deleted successfully' }; break; default: throw new n8n_workflow_1.NodeOperationError(context.getNode(), `Unknown operation: ${operation}`, { itemIndex }); } return responseData; } } exports.CashbookModule = CashbookModule; //# sourceMappingURL=CashbookModule.js.map