@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
JavaScript
"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