n8n-nodes-fatture-in-cloud
Version:
n8n community node for Fatture in Cloud integration using the official TypeScript SDK
128 lines • 6.96 kB
JavaScript
;
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