UNPKG

n8n-nodes-fatture-in-cloud

Version:

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

161 lines 8.53 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.ProductsModule = void 0; const n8n_workflow_1 = require("n8n-workflow"); const fattureincloud_ts_sdk_1 = require("@fattureincloud/fattureincloud-ts-sdk"); const ProductsResource_1 = require("../resources/ProductsResource"); class ProductsModule { constructor() { this.resource = ProductsResource_1.ProductsResource; } 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 productsApi = new fattureincloud_ts_sdk_1.ProductsApi(config); const companyId = context.getNodeParameter('companyId', itemIndex); let responseData; switch (operation) { case 'create': const name = context.getNodeParameter('name', itemIndex); const code = context.getNodeParameter('code', itemIndex, ''); const netPrice = context.getNodeParameter('netPrice', itemIndex, 0); const netCost = context.getNodeParameter('netCost', itemIndex, 0); const measure = context.getNodeParameter('measure', itemIndex, ''); const description = context.getNodeParameter('description', itemIndex, ''); const category = context.getNodeParameter('category', itemIndex, ''); const inStock = context.getNodeParameter('inStock', itemIndex, true); const defaultVat = context.getNodeParameter('defaultVat', itemIndex, {}); if (!name || name.trim() === '') { throw new n8n_workflow_1.NodeOperationError(context.getNode(), 'Product name is required.', { itemIndex }); } const productData = { name: name.trim(), code: code.trim(), net_price: netPrice, net_cost: netCost, measure: measure.trim(), description: description.trim(), category: category.trim(), in_stock: inStock, }; if (defaultVat.vatDetails) { productData.default_vat = { id: defaultVat.vatDetails.id, value: defaultVat.vatDetails.value, description: defaultVat.vatDetails.description || '', notes: defaultVat.vatDetails.notes || '', is_disabled: defaultVat.vatDetails.isDisabled || false, }; } const createRequest = { data: productData, }; const createResponse = await productsApi.createProduct(companyId, createRequest); responseData = createResponse.data; break; case 'get': const productId = context.getNodeParameter('productId', itemIndex); if (!productId) { throw new n8n_workflow_1.NodeOperationError(context.getNode(), 'Product ID is required.', { itemIndex }); } const getResponse = await productsApi.getProduct(companyId, productId); responseData = getResponse.data; break; case 'list': const additionalFields = context.getNodeParameter('additionalFields', itemIndex, {}); const listParams = { companyId }; if (additionalFields.fields) { listParams.fields = additionalFields.fields; } if (additionalFields.fieldset) { listParams.fieldset = additionalFields.fieldset; } if (additionalFields.sort) { listParams.sort = additionalFields.sort; } if (additionalFields.page) { listParams.page = additionalFields.page; } if (additionalFields.perPage) { listParams.perPage = additionalFields.perPage; } if (additionalFields.q) { listParams.q = additionalFields.q; } const listResponse = await productsApi.listProducts(listParams); responseData = listResponse.data; break; case 'update': const updateProductId = context.getNodeParameter('productId', itemIndex); const updateName = context.getNodeParameter('name', itemIndex); const updateCode = context.getNodeParameter('code', itemIndex, ''); const updateNetPrice = context.getNodeParameter('netPrice', itemIndex, 0); const updateNetCost = context.getNodeParameter('netCost', itemIndex, 0); const updateMeasure = context.getNodeParameter('measure', itemIndex, ''); const updateDescription = context.getNodeParameter('description', itemIndex, ''); const updateCategory = context.getNodeParameter('category', itemIndex, ''); const updateInStock = context.getNodeParameter('inStock', itemIndex, true); const updateDefaultVat = context.getNodeParameter('defaultVat', itemIndex, {}); if (!updateProductId) { throw new n8n_workflow_1.NodeOperationError(context.getNode(), 'Product ID is required.', { itemIndex }); } if (!updateName || updateName.trim() === '') { throw new n8n_workflow_1.NodeOperationError(context.getNode(), 'Product name is required.', { itemIndex }); } const updateProductData = { name: updateName.trim(), code: updateCode.trim(), net_price: updateNetPrice, net_cost: updateNetCost, measure: updateMeasure.trim(), description: updateDescription.trim(), category: updateCategory.trim(), in_stock: updateInStock, }; if (updateDefaultVat.vatDetails) { updateProductData.default_vat = { id: updateDefaultVat.vatDetails.id, value: updateDefaultVat.vatDetails.value, description: updateDefaultVat.vatDetails.description || '', notes: updateDefaultVat.vatDetails.notes || '', is_disabled: updateDefaultVat.vatDetails.isDisabled || false, }; } const modifyRequest = { data: updateProductData, }; const updateResponse = await productsApi.modifyProduct(companyId, updateProductId, modifyRequest); responseData = updateResponse.data; break; case 'delete': const deleteProductId = context.getNodeParameter('productId', itemIndex); if (!deleteProductId) { throw new n8n_workflow_1.NodeOperationError(context.getNode(), 'Product ID is required.', { itemIndex }); } await productsApi.deleteProduct(companyId, deleteProductId); responseData = { success: true, message: 'Product deleted successfully' }; break; default: throw new n8n_workflow_1.NodeOperationError(context.getNode(), `Unknown operation: ${operation}`, { itemIndex }); } return responseData; } } exports.ProductsModule = ProductsModule; //# sourceMappingURL=ProductsModule.js.map