From dad3fa355a6a95d6aaab16443a920be867444543 Mon Sep 17 00:00:00 2001 From: ricardo Date: Thu, 24 Jun 2021 18:48:08 -0400 Subject: [PATCH] :zap: Add resolve data to all resources --- .../nodes-base/nodes/Zoho/GenericFunctions.ts | 3 +- .../nodes-base/nodes/Zoho/ZohoCrm.node.ts | 7 +++++ .../Zoho/descriptions/AccountDescription.ts | 5 +++- .../Zoho/descriptions/ContactDescription.ts | 4 +++ .../Zoho/descriptions/DealDescription.ts | 4 ++- .../Zoho/descriptions/InvoiceDescription.ts | 3 ++ .../Zoho/descriptions/LeadDescription.ts | 4 +++ .../Zoho/descriptions/ProductDescription.ts | 4 +++ .../descriptions/PurchaseOrderDescription.ts | 4 +++ .../Zoho/descriptions/QuoteDescription.ts | 3 ++ .../descriptions/SalesOrderDescription.ts | 3 ++ .../nodes/Zoho/descriptions/SharedFields.ts | 30 ++++++++++++++----- .../Zoho/descriptions/VendorDescription.ts | 3 ++ 13 files changed, 66 insertions(+), 11 deletions(-) diff --git a/packages/nodes-base/nodes/Zoho/GenericFunctions.ts b/packages/nodes-base/nodes/Zoho/GenericFunctions.ts index 43e0b9d764..fa862de03b 100644 --- a/packages/nodes-base/nodes/Zoho/GenericFunctions.ts +++ b/packages/nodes-base/nodes/Zoho/GenericFunctions.ts @@ -66,7 +66,6 @@ export async function zohoApiRequest( } try { - console.log(JSON.stringify(options, null, 2)); const responseData = await this.helpers.requestOAuth2?.call(this, 'zohoOAuth2Api', options); if (responseData === undefined) return []; @@ -377,7 +376,7 @@ export async function getFields( return sortBy(options, o => o.name); } -function getModuleName(resource: string) { +export function getModuleName(resource: string) { const map: { [key: string]: string } = { account: 'Accounts', contact: 'Contacts', diff --git a/packages/nodes-base/nodes/Zoho/ZohoCrm.node.ts b/packages/nodes-base/nodes/Zoho/ZohoCrm.node.ts index 3206b67a55..ce52749aba 100644 --- a/packages/nodes-base/nodes/Zoho/ZohoCrm.node.ts +++ b/packages/nodes-base/nodes/Zoho/ZohoCrm.node.ts @@ -25,6 +25,7 @@ import { adjustSalesOrderPayload, adjustVendorPayload, getFields, + getModuleName, getPicklistOptions, handleListing, throwOnEmptyUpdate, @@ -321,6 +322,7 @@ export class ZohoCrm implements INodeType { const resource = this.getNodeParameter('resource', 0) as CamelCaseResource; const operation = this.getNodeParameter('operation', 0) as string; + const resolveData = this.getNodeParameter('resolveData', 0, false) as boolean; let responseData; @@ -1444,6 +1446,11 @@ export class ZohoCrm implements INodeType { throw error; } + if (resolveData) { + responseData = await zohoApiRequest.call(this, 'GET', `/${getModuleName(resource)}/${responseData[0].details.id}`); + responseData = responseData.data; + } + Array.isArray(responseData) ? returnData.push(...responseData) : returnData.push(responseData); diff --git a/packages/nodes-base/nodes/Zoho/descriptions/AccountDescription.ts b/packages/nodes-base/nodes/Zoho/descriptions/AccountDescription.ts index 397cd10afe..5c26563b8b 100644 --- a/packages/nodes-base/nodes/Zoho/descriptions/AccountDescription.ts +++ b/packages/nodes-base/nodes/Zoho/descriptions/AccountDescription.ts @@ -7,6 +7,7 @@ import { currencies, makeCustomFieldsFixedCollection, makeGetAllFields, + makeResolve, shippingAddress, } from './SharedFields'; @@ -75,7 +76,7 @@ export const accountFields = [ }, }, }, - + // ---------------------------------------- // account: upsert // ---------------------------------------- @@ -98,6 +99,8 @@ export const accountFields = [ }, }, + makeResolve('account', ['create', 'update', 'upsert']), + // ---------------------------------------- // account: create + upsert // ---------------------------------------- diff --git a/packages/nodes-base/nodes/Zoho/descriptions/ContactDescription.ts b/packages/nodes-base/nodes/Zoho/descriptions/ContactDescription.ts index e1efe35e09..b382d2bb24 100644 --- a/packages/nodes-base/nodes/Zoho/descriptions/ContactDescription.ts +++ b/packages/nodes-base/nodes/Zoho/descriptions/ContactDescription.ts @@ -7,6 +7,7 @@ import { mailingAddress, makeCustomFieldsFixedCollection, makeGetAllFields, + makeResolve, otherAddress, } from './SharedFields'; @@ -75,6 +76,7 @@ export const contactFields = [ }, }, }, + makeResolve('contact', ['create']), { displayName: 'Additional Fields', name: 'additionalFields', @@ -230,6 +232,7 @@ export const contactFields = [ }, }, }, + makeResolve('contact', ['upsert']), { displayName: 'Additional Fields', name: 'additionalFields', @@ -436,6 +439,7 @@ export const contactFields = [ }, }, }, + makeResolve('contact', ['update']), { displayName: 'Update Fields', name: 'updateFields', diff --git a/packages/nodes-base/nodes/Zoho/descriptions/DealDescription.ts b/packages/nodes-base/nodes/Zoho/descriptions/DealDescription.ts index 3f55fd61df..90211bfd42 100644 --- a/packages/nodes-base/nodes/Zoho/descriptions/DealDescription.ts +++ b/packages/nodes-base/nodes/Zoho/descriptions/DealDescription.ts @@ -6,6 +6,7 @@ import { currencies, makeCustomFieldsFixedCollection, makeGetAllFields, + makeResolve, } from './SharedFields'; export const dealOperations = [ @@ -95,7 +96,6 @@ export const dealFields = [ }, }, }, - // ---------------------------------------- // deal: create + upsert // ---------------------------------------- @@ -120,6 +120,7 @@ export const dealFields = [ }, }, }, + makeResolve('deal', ['create', 'upsert']), { displayName: 'Additional Fields', name: 'additionalFields', @@ -278,6 +279,7 @@ export const dealFields = [ }, }, }, + makeResolve('deal', ['update']), { displayName: 'Update Fields', name: 'updateFields', diff --git a/packages/nodes-base/nodes/Zoho/descriptions/InvoiceDescription.ts b/packages/nodes-base/nodes/Zoho/descriptions/InvoiceDescription.ts index 093cad1185..7dbb03cc58 100644 --- a/packages/nodes-base/nodes/Zoho/descriptions/InvoiceDescription.ts +++ b/packages/nodes-base/nodes/Zoho/descriptions/InvoiceDescription.ts @@ -7,6 +7,7 @@ import { currencies, makeCustomFieldsFixedCollection, makeGetAllFields, + makeResolve, productDetailsOptions, shippingAddress, } from './SharedFields'; @@ -126,6 +127,7 @@ export const invoiceFields = [ }, }, }, + makeResolve('invoice', ['create', 'upsert']), { displayName: 'Additional Fields', name: 'additionalFields', @@ -317,6 +319,7 @@ export const invoiceFields = [ }, }, }, + makeResolve('invoice', ['update']), { displayName: 'Update Fields', name: 'updateFields', diff --git a/packages/nodes-base/nodes/Zoho/descriptions/LeadDescription.ts b/packages/nodes-base/nodes/Zoho/descriptions/LeadDescription.ts index 84a3c26749..922acabd37 100644 --- a/packages/nodes-base/nodes/Zoho/descriptions/LeadDescription.ts +++ b/packages/nodes-base/nodes/Zoho/descriptions/LeadDescription.ts @@ -7,6 +7,7 @@ import { currencies, makeCustomFieldsFixedCollection, makeGetAllFields, + makeResolve, } from './SharedFields'; export const leadOperations = [ @@ -92,6 +93,7 @@ export const leadFields = [ }, }, }, + makeResolve('lead', ['create']), { displayName: 'Additional Fields', name: 'additionalFields', @@ -286,6 +288,7 @@ export const leadFields = [ }, }, }, + makeResolve('lead', ['upsert']), { displayName: 'Additional Fields', name: 'additionalFields', @@ -513,6 +516,7 @@ export const leadFields = [ }, }, }, + makeResolve('lead', ['update']), { displayName: 'Update Fields', name: 'updateFields', diff --git a/packages/nodes-base/nodes/Zoho/descriptions/ProductDescription.ts b/packages/nodes-base/nodes/Zoho/descriptions/ProductDescription.ts index b24c9eeb88..730921caf2 100644 --- a/packages/nodes-base/nodes/Zoho/descriptions/ProductDescription.ts +++ b/packages/nodes-base/nodes/Zoho/descriptions/ProductDescription.ts @@ -5,6 +5,7 @@ import { import { makeCustomFieldsFixedCollection, makeGetAllFields, + makeResolve, } from './SharedFields'; export const productOperations = [ @@ -98,6 +99,8 @@ export const productFields = [ // ---------------------------------------- // product: create + upsert // ---------------------------------------- + makeResolve('product', ['create', 'upsert']), + { displayName: 'Additional Fields', name: 'additionalFields', @@ -257,6 +260,7 @@ export const productFields = [ }, }, }, + makeResolve('product', ['update']), { displayName: 'Update Fields', name: 'updateFields', diff --git a/packages/nodes-base/nodes/Zoho/descriptions/PurchaseOrderDescription.ts b/packages/nodes-base/nodes/Zoho/descriptions/PurchaseOrderDescription.ts index c811c51941..7ee7fac6d8 100644 --- a/packages/nodes-base/nodes/Zoho/descriptions/PurchaseOrderDescription.ts +++ b/packages/nodes-base/nodes/Zoho/descriptions/PurchaseOrderDescription.ts @@ -7,6 +7,7 @@ import { currencies, makeCustomFieldsFixedCollection, makeGetAllFields, + makeResolve, productDetailsOptions, shippingAddress, } from './SharedFields'; @@ -147,6 +148,8 @@ export const purchaseOrderFields = [ }, }, }, + makeResolve('purchaseOrder', ['create', 'upsert']), + { displayName: 'Additional Fields', name: 'additionalFields', @@ -419,6 +422,7 @@ export const purchaseOrderFields = [ }, }, }, + makeResolve('purchaseOrder', ['update']), { displayName: 'Update Fields', name: 'updateFields', diff --git a/packages/nodes-base/nodes/Zoho/descriptions/QuoteDescription.ts b/packages/nodes-base/nodes/Zoho/descriptions/QuoteDescription.ts index 84927e2b46..f566b964c2 100644 --- a/packages/nodes-base/nodes/Zoho/descriptions/QuoteDescription.ts +++ b/packages/nodes-base/nodes/Zoho/descriptions/QuoteDescription.ts @@ -7,6 +7,7 @@ import { currencies, makeCustomFieldsFixedCollection, makeGetAllFields, + makeResolve, productDetailsOptions, shippingAddress, } from './SharedFields'; @@ -126,6 +127,7 @@ export const quoteFields = [ }, }, }, + makeResolve('quote', ['create', 'upsert']), { displayName: 'Additional Fields', name: 'additionalFields', @@ -321,6 +323,7 @@ export const quoteFields = [ }, }, }, + makeResolve('quote', ['update']), { displayName: 'Update Fields', name: 'updateFields', diff --git a/packages/nodes-base/nodes/Zoho/descriptions/SalesOrderDescription.ts b/packages/nodes-base/nodes/Zoho/descriptions/SalesOrderDescription.ts index e18356c785..2f2894905e 100644 --- a/packages/nodes-base/nodes/Zoho/descriptions/SalesOrderDescription.ts +++ b/packages/nodes-base/nodes/Zoho/descriptions/SalesOrderDescription.ts @@ -7,6 +7,7 @@ import { currencies, makeCustomFieldsFixedCollection, makeGetAllFields, + makeResolve, productDetailsOptions, shippingAddress, } from './SharedFields'; @@ -151,6 +152,7 @@ export const salesOrderFields = [ }, }, }, + makeResolve('salesOrder', ['create', 'upsert']), { displayName: 'Additional Fields', name: 'additionalFields', @@ -384,6 +386,7 @@ export const salesOrderFields = [ }, }, }, + makeResolve('salesOrder', ['update']), { displayName: 'Update Fields', name: 'updateFields', diff --git a/packages/nodes-base/nodes/Zoho/descriptions/SharedFields.ts b/packages/nodes-base/nodes/Zoho/descriptions/SharedFields.ts index d2bc0042e5..6d2823b6e4 100644 --- a/packages/nodes-base/nodes/Zoho/descriptions/SharedFields.ts +++ b/packages/nodes-base/nodes/Zoho/descriptions/SharedFields.ts @@ -271,43 +271,43 @@ export const productDetailsOptions = [ displayName: 'Quantity', name: 'quantity', type: 'number', - default: '', + default: 1, }, { displayName: 'Quantity in Stock', name: 'quantity_in_stock', type: 'number', - default: '', + default: 0, }, { displayName: 'Tax', name: 'Tax', type: 'number', - default: '', + default: 0, }, { displayName: 'Total', name: 'total', type: 'number', - default: '', + default: 0, }, { displayName: 'Total After Discount', name: 'total_after_discount', type: 'number', - default: '', + default: 0, }, { displayName: 'Total (Net)', name: 'net_total', type: 'number', - default: '', + default: 0, }, { displayName: 'Unit Price', name: 'unit_price', type: 'number', - default: '', + default: 0, }, ]; @@ -484,6 +484,22 @@ export const makeCustomFieldsFixedCollection = (resource: CamelCaseResource) => }; }; +export const makeResolve = (resource: string, operations: string[]) => { + return { + displayName: 'Resolve Data', + name: 'resolveData', + type: 'boolean', + displayOptions: { + show: { + resource: [resource], + operation: operations, + }, + }, + default: false, + description: `By default the response only contain the ID of the ${resource}. If this option gets activated it
will resolve the data automatically.`, + }; +}; + // https://www.zoho.com/subscriptions/help/supported-currencies.html export const currencies = [ diff --git a/packages/nodes-base/nodes/Zoho/descriptions/VendorDescription.ts b/packages/nodes-base/nodes/Zoho/descriptions/VendorDescription.ts index 2f6d7eade7..6de157f065 100644 --- a/packages/nodes-base/nodes/Zoho/descriptions/VendorDescription.ts +++ b/packages/nodes-base/nodes/Zoho/descriptions/VendorDescription.ts @@ -7,6 +7,7 @@ import { currencies, makeCustomFieldsFixedCollection, makeGetAllFields, + makeResolve, } from './SharedFields'; export const vendorOperations = [ @@ -100,6 +101,7 @@ export const vendorFields = [ // ---------------------------------------- // vendor: create + upsert // ---------------------------------------- + makeResolve('vendor', ['create', 'upsert']), { displayName: 'Additional Fields', name: 'additionalFields', @@ -230,6 +232,7 @@ export const vendorFields = [ }, }, }, + makeResolve('vendor', ['update']), { displayName: 'Update Fields', name: 'updateFields',