@arathron/n8n-nodes-zoho-books
Version:
n8n community nodes for Zoho Books and Zoho Inventory API integration - Complete CRUD operations for Sales Orders, Invoices, Items, Vendors, Credit Notes, Payments, Purchase Orders, Bills, Composite Items, Tax Management, Tax Groups, and Tax Exemptions
90 lines • 4.92 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.TaxGroupResource = void 0;
const GenericFunctions_1 = require("../utils/GenericFunctions");
const TaxUtils_1 = require("../utils/TaxUtils");
const Cache_1 = require("../utils/Cache");
class TaxGroupResource {
resourceName = 'Tax Group';
endpoint = '/settings/taxgroups';
async create(executeFunctions, itemIndex, additionalFields) {
const taxGroupName = executeFunctions.getNodeParameter('taxGroupName', itemIndex);
const taxIds = executeFunctions.getNodeParameter('taxIds', itemIndex);
const params = {
tax_group_name: taxGroupName,
tax_ids: taxIds,
...additionalFields,
};
const validation = (0, TaxUtils_1.validateTaxGroupData)(params);
if (!validation.isValid) {
throw new Error(`Invalid tax group data: ${(0, TaxUtils_1.createValidationErrorMessage)(validation)}`);
}
const body = {
JSONString: JSON.stringify(params),
};
const response = await GenericFunctions_1.zohoApiRequest.call(executeFunctions, 'POST', this.endpoint, body);
const credentials = await executeFunctions.getCredentials('zohoBooksOAuth2');
const organizationId = credentials.organizationId;
(0, Cache_1.delCachedPattern)(`taxgroups:${organizationId}*`);
return (0, TaxUtils_1.normalizeTaxGroupResponse)(response?.tax_group);
}
async get(executeFunctions, itemIndex, _additionalFields) {
const taxGroupId = executeFunctions.getNodeParameter('taxGroupId', itemIndex);
const response = await GenericFunctions_1.zohoApiRequest.call(executeFunctions, 'GET', `${this.endpoint}/${taxGroupId}`);
return (0, TaxUtils_1.normalizeTaxGroupResponse)(response?.tax_group);
}
async getAll(executeFunctions, itemIndex, _additionalFields) {
const returnAll = executeFunctions.getNodeParameter('returnAll', itemIndex);
const limit = executeFunctions.getNodeParameter('limit', itemIndex, 50);
const page = executeFunctions.getNodeParameter('page', itemIndex, 1);
const perPage = executeFunctions.getNodeParameter('perPage', itemIndex, 50);
const response = await GenericFunctions_1.zohoApiRequest.call(executeFunctions, 'GET', this.endpoint, {}, {
page,
per_page: returnAll ? 200 : Math.min(perPage, 200),
});
if (returnAll) {
return GenericFunctions_1.zohoApiRequestAllItems.call(executeFunctions, 'GET', this.endpoint, {}, {});
}
else {
const taxGroups = response?.taxgroups || [];
return taxGroups.slice(0, limit);
}
}
async update(executeFunctions, itemIndex, _additionalFields) {
const taxGroupId = executeFunctions.getNodeParameter('taxGroupId', itemIndex);
const updateFields = executeFunctions.getNodeParameter('updateFields', itemIndex, {});
if (Object.keys(updateFields).length > 0) {
if (updateFields.tax_ids && typeof updateFields.tax_ids === 'string') {
updateFields.tax_ids = updateFields.tax_ids
.split(',')
.map(id => id.trim())
.filter(id => id.length > 0);
}
const validation = (0, TaxUtils_1.validateTaxGroupData)(updateFields);
if (!validation.isValid) {
throw new Error(`Invalid tax group update data: ${(0, TaxUtils_1.createValidationErrorMessage)(validation)}`);
}
}
const body = {
JSONString: JSON.stringify(updateFields),
};
const response = await GenericFunctions_1.zohoApiRequest.call(executeFunctions, 'PUT', `${this.endpoint}/${taxGroupId}`, body);
const credentials = await executeFunctions.getCredentials('zohoBooksOAuth2');
const organizationId = credentials.organizationId;
(0, Cache_1.delCachedPattern)(`taxgroups:${organizationId}*`);
return (0, TaxUtils_1.normalizeTaxGroupResponse)(response?.tax_group);
}
async delete(executeFunctions, itemIndex, _additionalFields) {
const taxGroupId = executeFunctions.getNodeParameter('taxGroupId', itemIndex);
const response = await GenericFunctions_1.zohoApiRequest.call(executeFunctions, 'DELETE', `${this.endpoint}/${taxGroupId}`);
const credentials = await executeFunctions.getCredentials('zohoBooksOAuth2');
const organizationId = credentials.organizationId;
(0, Cache_1.delCachedPattern)(`taxgroups:${organizationId}*`);
return response;
}
async list(executeFunctions, _itemIndex, _additionalFields) {
return GenericFunctions_1.zohoApiRequestAllItems.call(executeFunctions, 'GET', this.endpoint, {}, {});
}
}
exports.TaxGroupResource = TaxGroupResource;
//# sourceMappingURL=TaxGroup.resource.js.map