UNPKG

@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
"use strict"; 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