@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, and Assemblies
154 lines • 6.09 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.buildContactPayload = buildContactPayload;
exports.normalizeContact = normalizeContact;
exports.createContact = createContact;
exports.getContact = getContact;
exports.getAllContacts = getAllContacts;
exports.updateContact = updateContact;
exports.deleteContact = deleteContact;
exports.searchContactsByName = searchContactsByName;
const n8n_workflow_1 = require("n8n-workflow");
const GenericFunctions_1 = require("./GenericFunctions");
const SalesOrderUtils_1 = require("./SalesOrderUtils");
function buildContactPayload(params) {
const payload = {
name: params.contactName,
};
if (params.companyName) {
payload.company_name = params.companyName;
}
if (params.email) {
payload.email = params.email;
}
if (params.phone) {
payload.phone = params.phone;
}
if (params.website) {
payload.website = params.website;
}
if (params.currencyCode) {
payload.currency_code = params.currencyCode;
}
if (params.openingBalance !== undefined && params.openingBalance !== null) {
payload.opening_balance = params.openingBalance;
}
if (params.billingAddress && params.billingAddress.address) {
const billingAddress = params.billingAddress.address;
payload.billing_address = {
address: billingAddress.street,
city: billingAddress.city,
state: billingAddress.state,
zip: billingAddress.zip,
country: billingAddress.country,
};
}
if (params.shippingAddress && params.shippingAddress.address) {
const shippingAddress = params.shippingAddress.address;
payload.shipping_address = {
address: shippingAddress.street,
city: shippingAddress.city,
state: shippingAddress.state,
zip: shippingAddress.zip,
country: shippingAddress.country,
};
}
if (params.customFields && Object.keys(params.customFields).length > 0) {
payload.custom_fields = params.customFields;
}
return payload;
}
function normalizeContact(rawContact) {
return {
contactId: rawContact.contact_id,
name: rawContact.name,
companyName: rawContact.company_name,
email: rawContact.email,
phone: rawContact.phone,
website: rawContact.website,
currencyCode: rawContact.currency_code,
openingBalance: rawContact.opening_balance,
billingAddress: rawContact.billing_address ? {
street: rawContact.billing_address.address,
city: rawContact.billing_address.city,
state: rawContact.billing_address.state,
zip: rawContact.billing_address.zip,
country: rawContact.billing_address.country,
} : undefined,
shippingAddress: rawContact.shipping_address ? {
street: rawContact.shipping_address.address,
city: rawContact.shipping_address.city,
state: rawContact.shipping_address.state,
zip: rawContact.shipping_address.zip,
country: rawContact.shipping_address.country,
} : undefined,
customFields: rawContact.custom_fields,
createdAt: rawContact.created_time,
updatedAt: rawContact.last_modified_time,
};
}
async function createContact(payload) {
return await GenericFunctions_1.zohoApiRequest.call(this, 'POST', '/contacts', payload);
}
async function getContact(contactId) {
if (!contactId || contactId.trim() === '') {
throw new n8n_workflow_1.NodeApiError(this.getNode(), {
message: 'Contact ID is required',
description: 'Please provide a valid contact ID.',
httpCode: '400',
});
}
return await GenericFunctions_1.zohoApiRequest.call(this, 'GET', `/contacts/${contactId.trim()}`);
}
async function getAllContacts(returnAll = false, limit = 50, updatedAfter) {
const query = {};
if (updatedAfter && typeof updatedAfter === 'string' && updatedAfter.trim() !== '') {
const timestamp = (0, SalesOrderUtils_1.formatDateTime)(updatedAfter);
if (timestamp && timestamp.trim() !== '') {
query.filter_by = 'Last Modified Time';
query.last_modified_time = timestamp;
}
}
if (returnAll) {
return await GenericFunctions_1.zohoApiRequestAllItems.call(this, 'GET', '/contacts', {}, query);
}
else {
query.per_page = limit;
const response = await GenericFunctions_1.zohoApiRequest.call(this, 'GET', '/contacts', {}, query);
return response.contacts || [];
}
}
async function updateContact(contactId, payload) {
if (!contactId || contactId.trim() === '') {
throw new n8n_workflow_1.NodeApiError(this.getNode(), {
message: 'Contact ID is required',
description: 'Please provide a valid contact ID.',
httpCode: '400',
});
}
return await GenericFunctions_1.zohoApiRequest.call(this, 'PUT', `/contacts/${contactId.trim()}`, payload);
}
async function deleteContact(contactId) {
if (!contactId || contactId.trim() === '') {
throw new n8n_workflow_1.NodeApiError(this.getNode(), {
message: 'Contact ID is required',
description: 'Please provide a valid contact ID.',
httpCode: '400',
});
}
return await GenericFunctions_1.zohoApiRequest.call(this, 'DELETE', `/contacts/${contactId.trim()}`);
}
async function searchContactsByName(searchName) {
if (!searchName || searchName.trim() === '') {
throw new n8n_workflow_1.NodeApiError(this.getNode(), {
message: 'Search name is required',
description: 'Please provide a name to search for.',
httpCode: '400',
});
}
const query = {
search_text: searchName.trim(),
};
return await GenericFunctions_1.zohoApiRequestAllItems.call(this, 'GET', '/contacts', {}, query);
}
//# sourceMappingURL=ContactsUtils.js.map