UNPKG

n8n-nodes-fatture-in-cloud

Version:

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

296 lines 14 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.FattureInCloud = void 0; const n8n_workflow_1 = require("n8n-workflow"); const UserModule_1 = require("./modules/UserModule"); const CompaniesModule_1 = require("./modules/CompaniesModule"); const ClientsModule_1 = require("./modules/ClientsModule"); const IssuedDocumentsModule_1 = require("./modules/IssuedDocumentsModule"); const SuppliersModule_1 = require("./modules/SuppliersModule"); const ProductsModule_1 = require("./modules/ProductsModule"); const ReceivedDocumentsModule_1 = require("./modules/ReceivedDocumentsModule"); const ReceiptsModule_1 = require("./modules/ReceiptsModule"); const TaxesModule_1 = require("./modules/TaxesModule"); const ArchiveModule_1 = require("./modules/ArchiveModule"); const CashbookModule_1 = require("./modules/CashbookModule"); const InfoModule_1 = require("./modules/InfoModule"); const WebhooksModule_1 = require("./modules/WebhooksModule"); const SettingsModule_1 = require("./modules/SettingsModule"); const EInvoicesModule_1 = require("./modules/EInvoicesModule"); const EmailsModule_1 = require("./modules/EmailsModule"); class FattureInCloud { constructor() { this.description = { displayName: 'Fatture in Cloud', name: 'fattureInCloud', icon: 'file:fic.svg', group: ['productivity'], version: 1, subtitle: '={{$parameter["operation"] + ": " + $parameter["resource"]}}', description: 'Interact with Fatture in Cloud API', defaults: { name: 'Fatture in Cloud', }, inputs: ["main"], outputs: ["main"], usableAsTool: true, credentials: [ { name: 'fattureInCloudOAuth2Api', required: true, }, ], properties: [ { displayName: 'Resource', name: 'resource', type: 'options', noDataExpression: true, options: [ { name: 'Archive Document', value: 'archive', }, { name: 'Cashbook', value: 'cashbook', }, { name: 'Client', value: 'client', }, { name: 'Company', value: 'company', }, { name: 'E-Invoice', value: 'eInvoices', }, { name: 'Email', value: 'emails', }, { name: 'Info', value: 'info', }, { name: 'Issued Document', value: 'issuedDocument', }, { name: 'Product', value: 'product', }, { name: 'Receipt', value: 'receipt', }, { name: 'Received Document', value: 'receivedDocument', }, { name: 'Setting', value: 'settings', }, { name: 'Supplier', value: 'supplier', }, { name: 'Tax (F24)', value: 'tax', }, { name: 'User', value: 'user', }, { name: 'Webhook', value: 'webhook', }, ], default: 'issuedDocument', }, ], }; this.modules = new Map(); const userModule = new UserModule_1.UserModule(); const companiesModule = new CompaniesModule_1.CompaniesModule(); const clientsModule = new ClientsModule_1.ClientsModule(); const issuedDocumentsModule = new IssuedDocumentsModule_1.IssuedDocumentsModule(); const suppliersModule = new SuppliersModule_1.SuppliersModule(); const productsModule = new ProductsModule_1.ProductsModule(); const receivedDocumentsModule = new ReceivedDocumentsModule_1.ReceivedDocumentsModule(); const receiptsModule = new ReceiptsModule_1.ReceiptsModule(); const taxesModule = new TaxesModule_1.TaxesModule(); const archiveModule = new ArchiveModule_1.ArchiveModule(); const cashbookModule = new CashbookModule_1.CashbookModule(); const infoModule = new InfoModule_1.InfoModule(); const webhooksModule = new WebhooksModule_1.WebhooksModule(); const settingsModule = new SettingsModule_1.SettingsModule(); const eInvoicesModule = new EInvoicesModule_1.EInvoicesModule(); const emailsModule = new EmailsModule_1.EmailsModule(); this.modules.set(userModule.resource.name, userModule); this.modules.set(companiesModule.resource.name, companiesModule); this.modules.set(clientsModule.resource.name, clientsModule); this.modules.set(issuedDocumentsModule.resource.name, issuedDocumentsModule); this.modules.set(suppliersModule.resource.name, suppliersModule); this.modules.set(productsModule.resource.name, productsModule); this.modules.set(receivedDocumentsModule.resource.name, receivedDocumentsModule); this.modules.set(receiptsModule.resource.name, receiptsModule); this.modules.set(taxesModule.resource.name, taxesModule); this.modules.set(archiveModule.resource.name, archiveModule); this.modules.set(cashbookModule.resource.name, cashbookModule); this.modules.set(infoModule.resource.name, infoModule); this.modules.set(webhooksModule.resource.name, webhooksModule); this.modules.set(settingsModule.resource.name, settingsModule); this.modules.set(eInvoicesModule.resource.name, eInvoicesModule); this.modules.set(emailsModule.resource.name, emailsModule); this.buildProperties(); } buildProperties() { const resourceOperations = {}; const allProperties = []; this.modules.forEach((module, resourceName) => { const resource = module.resource; resourceOperations[resourceName] = { displayName: 'Operation', name: 'operation', type: 'options', default: '', noDataExpression: true, displayOptions: { show: { resource: [resourceName], }, }, options: resource.operations.map(op => ({ name: op.displayName, value: op.value, description: op.description, action: op.action, })), }; resource.properties.forEach(prop => { if (!prop.displayOptions) { prop.displayOptions = {}; } if (!prop.displayOptions.show) { prop.displayOptions.show = {}; } prop.displayOptions.show.resource = [resourceName]; allProperties.push(prop); }); resource.operations.forEach(operation => { if (operation.properties) { operation.properties.forEach(prop => { if (!prop.displayOptions) { prop.displayOptions = {}; } if (!prop.displayOptions.show) { prop.displayOptions.show = {}; } prop.displayOptions.show.resource = [resourceName]; if (!prop.displayOptions.show.operation) { prop.displayOptions.show.operation = []; } if (Array.isArray(prop.displayOptions.show.operation)) { prop.displayOptions.show.operation.push(operation.value); } allProperties.push(prop); }); } }); }); Object.values(resourceOperations).forEach(prop => { this.description.properties.push(prop); }); this.description.properties.push(...allProperties); } async execute() { var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m; const items = this.getInputData(); const returnData = []; const length = items.length; const resource = this.getNodeParameter('resource', 0); const operation = this.getNodeParameter('operation', 0); const createModule = (resourceName) => { switch (resourceName) { case 'user': return new UserModule_1.UserModule(); case 'company': return new CompaniesModule_1.CompaniesModule(); case 'client': return new ClientsModule_1.ClientsModule(); case 'issuedDocument': return new IssuedDocumentsModule_1.IssuedDocumentsModule(); case 'supplier': return new SuppliersModule_1.SuppliersModule(); case 'product': return new ProductsModule_1.ProductsModule(); case 'receivedDocument': return new ReceivedDocumentsModule_1.ReceivedDocumentsModule(); case 'receipt': return new ReceiptsModule_1.ReceiptsModule(); case 'tax': return new TaxesModule_1.TaxesModule(); case 'archive': return new ArchiveModule_1.ArchiveModule(); case 'cashbook': return new CashbookModule_1.CashbookModule(); case 'info': return new InfoModule_1.InfoModule(); case 'webhook': return new WebhooksModule_1.WebhooksModule(); case 'emails': return new EmailsModule_1.EmailsModule(); case 'settings': return new SettingsModule_1.SettingsModule(); case 'eInvoices': return new EInvoicesModule_1.EInvoicesModule(); default: return null; } }; const module = createModule(resource); if (!module) { throw new n8n_workflow_1.NodeOperationError(this.getNode(), `Unknown resource: ${resource}`, { level: 'warning' }); } for (let i = 0; i < length; i++) { try { const responseData = await module.execute(this, operation, i); const executionData = this.helpers.constructExecutionMetaData(this.helpers.returnJsonArray(responseData || {}), { itemData: { item: i } }); returnData.push(...executionData); } catch (error) { const errorMessage = ((_c = (_b = (_a = error.response) === null || _a === void 0 ? void 0 : _a.data) === null || _b === void 0 ? void 0 : _b.error) === null || _c === void 0 ? void 0 : _c.validation_result) || ((_e = (_d = error.response) === null || _d === void 0 ? void 0 : _d.data) === null || _e === void 0 ? void 0 : _e.error_description) || ((_g = (_f = error.response) === null || _f === void 0 ? void 0 : _f.data) === null || _g === void 0 ? void 0 : _g.message) || error.message || 'Unknown error'; const errorDetails = { message: errorMessage, status: (_h = error.response) === null || _h === void 0 ? void 0 : _h.status, statusText: (_j = error.response) === null || _j === void 0 ? void 0 : _j.statusText, data: (_k = error.response) === null || _k === void 0 ? void 0 : _k.data, }; if (this.continueOnFail()) { const executionErrorData = this.helpers.constructExecutionMetaData(this.helpers.returnJsonArray({ error: errorDetails }), { itemData: { item: i } }); returnData.push(...executionErrorData); continue; } const nodeError = new n8n_workflow_1.NodeOperationError(this.getNode(), `Fatture in Cloud API Error: ${errorMessage}`, { itemIndex: i, description: `Status: ${((_l = error.response) === null || _l === void 0 ? void 0 : _l.status) || 'Unknown'}, Details: ${JSON.stringify(((_m = error.response) === null || _m === void 0 ? void 0 : _m.data) || {})}`, }); throw nodeError; } } return [returnData]; } } exports.FattureInCloud = FattureInCloud; //# sourceMappingURL=FattureInCloud.node.js.map