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