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

104 lines 4.17 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.findSalesOrderByNumber = findSalesOrderByNumber; exports.formatDate = formatDate; exports.formatDateTime = formatDateTime; const n8n_workflow_1 = require("n8n-workflow"); const GenericFunctions_1 = require("./GenericFunctions"); async function findSalesOrderByNumber(salesOrderNumber) { if (!salesOrderNumber || salesOrderNumber.trim() === '') { throw new n8n_workflow_1.NodeApiError(this.getNode(), { message: 'Sales order number is required', description: 'Please provide a valid sales order number to search.', httpCode: '400', }); } const targetNumber = salesOrderNumber.trim(); try { const criteria = `(salesorder_number:'${targetNumber.replace(/'/g, "\\'")}')`; const response = await GenericFunctions_1.zohoApiRequest.call(this, 'GET', '/salesorders', {}, { criteria, per_page: 200, }); if (response && Array.isArray(response.salesorders)) { const exactMatches = response.salesorders.filter((order) => order.salesorder_number === targetNumber); if (exactMatches.length > 0) { const fullResponse = await GenericFunctions_1.zohoApiRequest.call(this, 'GET', `/salesorders/${exactMatches[0].salesorder_id}`); return fullResponse.salesorder; } } const searchResponse = await GenericFunctions_1.zohoApiRequest.call(this, 'GET', '/salesorders', {}, { search_text: targetNumber, per_page: 200, }); if (searchResponse && Array.isArray(searchResponse.salesorders)) { const exactMatches = searchResponse.salesorders.filter((order) => order.salesorder_number === targetNumber); if (exactMatches.length > 0) { const fullResponse = await GenericFunctions_1.zohoApiRequest.call(this, 'GET', `/salesorders/${exactMatches[0].salesorder_id}`); return fullResponse.salesorder; } } return null; } catch (error) { throw error; } } function formatDate(dateTimeString) { if (!dateTimeString || typeof dateTimeString !== 'string' || dateTimeString.trim() === '') { return ''; } const trimmed = dateTimeString.trim(); const isoDateRegex = /^\d{4}-\d{2}-\d{2}$/; if (isoDateRegex.test(trimmed)) { const date = new Date(trimmed + 'T00:00:00'); if (!isNaN(date.getTime())) { return trimmed; } } try { const date = new Date(dateTimeString); if (isNaN(date.getTime())) { return ''; } if (dateTimeString.includes('T') || dateTimeString.includes('Z') || dateTimeString.includes('+') || dateTimeString.includes('-', 10)) { const year = date.getUTCFullYear(); const month = String(date.getUTCMonth() + 1).padStart(2, '0'); const day = String(date.getUTCDate()).padStart(2, '0'); return `${year}-${month}-${day}`; } else { const year = date.getFullYear(); const month = String(date.getMonth() + 1).padStart(2, '0'); const day = String(date.getDate()).padStart(2, '0'); return `${year}-${month}-${day}`; } } catch (error) { return ''; } } function formatDateTime(dateTimeString) { if (!dateTimeString || typeof dateTimeString !== 'string' || dateTimeString.trim() === '') { return ''; } const trimmed = dateTimeString.trim(); try { const isoDateRegex = /^\d{4}-\d{2}-\d{2}$/; if (isoDateRegex.test(trimmed)) { const date = new Date(`${trimmed}T00:00:00Z`); if (!isNaN(date.getTime())) { return date.toISOString().replace(/\.\d{3}Z$/, 'Z'); } } const date = new Date(trimmed); if (isNaN(date.getTime())) { return ''; } return date.toISOString().replace(/\.\d{3}Z$/, 'Z'); } catch (error) { return ''; } } //# sourceMappingURL=SalesOrderUtils.js.map