Expand Zoho node (#1763)

*  Initial refactor of Zoho node

*  Refactor out extra credentials parameter

* 🔥 Remove unused filters

*  Fix date of birth fields

*  Fix param casing

*  Adjust param types

*  Adjust invoice operations

*  Refactor types in adjusters

*  Add product resource

*  Refactor product details field

*  Adjust purchase order params

*  Adjust quote params

*  Adjust sales orders params

* 🔥 Remove old unused files

*  Add vendor resource

*  Fix minor details

*  Implement continueOnFail

* 🐛 Fix empty response for getAll

*  Simplify response for single item

* 🔥 Remove unused import

* 🔨 Restore old node name

*  Prevent request on empty update

*  Apply Dali's suggestions

*  Improvements

*  Add filters for lead:getAll

*  Add upsert to all resources

*  Add filters to all getAll operations

* 🔨 Restore continue on fail

* 🔨 Refactor upsert addition

* 🔨 Refactor getFields for readability

*  Add custom fields to all create-update ops

*  Implement custom fields adjuster

* 🔥 Remove logging

* 👕 Appease linter

* 👕 Refactor type helper for linter

*  Fix refactored type

* 🔨 Refactor reduce for simplicity

*  Fix vendor:getAll filter options

*  Fix custom fields for product operations

*  Make sort_by into options param

* 🚚 Rename upsert operation

* ✏️ Add descriptions to upsert

*  Deduplicate system-defined check fields

* 🔨 Re-order address fields

* ✏️ Generalize references in getAll fields

* 🔥 Remove extra comma

*  Make getFields helper more readable

* ✏️ Touch up description for account ID

* 🔥 Remove currency from contacts

* 🔨 Resort emails and phones for contact

* 🐛 Fix sales cycle duration param type

* ✏️ Clarify descriptions with percentages

* 🔨 Reorder total fields

* ✏️ Clarify percentages for discounts

* ✏️ Clarify percentages for commissions

* 🔨 Convert currency to picklist

* ✏️ Add documentation links

*  Add resource loaders for picklists

*  Fix build

* 🔨 Refactor product details

*  Add resolve data to all resources

*  Change resolve data toggle default

*  Restore lead:getFields operation

* 🔥 Remove upsert descriptions

* 🔨 Change casing for upsert operations

*  Add operation descriptions

* 🔨 Restore makeResolve default value

* 🔨 Return nested details

*  Reposition Resolve Data toggles

* ✏️ Document breaking changes

* Revert "Reposition Resolve Data toggles"

This reverts commit 72ac41780b3ebec9cc6a5bf527e154ffe6ed884a.

*  Improvements

Co-authored-by: ricardo <ricardoespinoza105@gmail.com>
This commit is contained in:
Iván Ovejero
2021-07-02 23:34:12 +02:00
committed by GitHub
parent 7c34a7dcd2
commit 5f76a5dc72
19 changed files with 7297 additions and 1134 deletions

View File

@@ -0,0 +1,577 @@
import { capitalizeInitial } from '../GenericFunctions';
import { CamelCaseResource } from '../types';
export const billingAddress = {
displayName: 'Billing Address',
name: 'Billing_Address',
type: 'fixedCollection',
default: {},
placeholder: 'Add Billing Address Field',
options: [
{
displayName: 'Billing Address Fields',
name: 'address_fields',
values: [
{
displayName: 'Street',
name: 'Billing_Street',
type: 'string',
default: '',
},
{
displayName: 'City',
name: 'Billing_City',
type: 'string',
default: '',
},
{
displayName: 'State',
name: 'Billing_State',
type: 'string',
default: '',
},
{
displayName: 'Country',
name: 'Billing_Country',
type: 'string',
default: '',
},
{
displayName: 'Zip Code',
name: 'Billing_Code',
type: 'string',
default: '',
},
],
},
],
};
export const shippingAddress = {
displayName: 'Shipping Address',
name: 'Shipping_Address',
type: 'fixedCollection',
default: {},
placeholder: 'Add Shipping Address Field',
options: [
{
displayName: 'Shipping Address Fields',
name: 'address_fields',
values: [
{
displayName: 'Street',
name: 'Shipping_Street',
type: 'string',
default: '',
},
{
displayName: 'City',
name: 'Shipping_City',
type: 'string',
default: '',
},
{
displayName: 'State',
name: 'Shipping_State',
type: 'string',
default: '',
},
{
displayName: 'Country',
name: 'Shipping_Country',
type: 'string',
default: '',
},
{
displayName: 'Zip Code',
name: 'Shipping_Code',
type: 'string',
default: '',
},
],
},
],
};
export const mailingAddress = {
displayName: 'Mailing Address',
name: 'Mailing_Address',
type: 'fixedCollection',
default: {},
placeholder: 'Add Mailing Address Field',
options: [
{
displayName: 'Mailing Address Fields',
name: 'address_fields',
values: [
{
displayName: 'Street',
name: 'Mailing_Street',
type: 'string',
default: '',
},
{
displayName: 'City',
name: 'Mailing_City',
type: 'string',
default: '',
},
{
displayName: 'State',
name: 'Mailing_State',
type: 'string',
default: '',
},
{
displayName: 'Country',
name: 'Mailing_Country',
type: 'string',
default: '',
},
{
displayName: 'Zip Code',
name: 'Mailing_Zip',
type: 'string',
default: '',
},
],
},
],
};
export const otherAddress = {
displayName: 'Other Address',
name: 'Other_Address',
type: 'fixedCollection',
default: {},
placeholder: 'Add Other Address Field',
options: [
{
displayName: 'Other Address Fields',
name: 'address_fields',
values: [
{
displayName: 'Street',
name: 'Other_Street',
type: 'string',
default: '',
},
{
displayName: 'City',
name: 'Other_City',
type: 'string',
default: '',
},
{
displayName: 'State',
name: 'Other_State',
type: 'string',
default: '',
},
{
displayName: 'Zip Code',
name: 'Other_Zip',
type: 'string',
default: '',
},
],
},
],
};
export const address = {
displayName: 'Address',
name: 'Address',
type: 'fixedCollection',
default: {},
placeholder: 'Add Address Field',
options: [
{
displayName: 'Address Fields',
name: 'address_fields',
values: [
{
displayName: 'Street',
name: 'Street',
type: 'string',
default: '',
},
{
displayName: 'City',
name: 'City',
type: 'string',
default: '',
},
{
displayName: 'State',
name: 'State',
type: 'string',
default: '',
},
{
displayName: 'Country',
name: 'Country',
type: 'string',
default: '',
},
{
displayName: 'Zip Code',
name: 'Zip_Code',
type: 'string',
default: '',
},
],
},
],
};
// displayName: 'Products',
// name: 'Product_Details',
// type: 'collection',
// typeOptions: {
// multipleValues: true,
// multipleValueButtonText: 'Add Product',
// },
// default: {},
// placeholder: 'Add Field',
// displayOptions: {
// show: {
// resource: [
// resource,
// ],
// operation: [
// operation,
// ],
// },
// },
export const productDetailsOptions = [
{
displayName: 'List Price',
name: 'list_price',
type: 'number',
default: '',
},
{
displayName: 'Product ID',
name: 'id',
type: 'options',
default: [],
typeOptions: {
loadOptionsMethod: 'getProducts',
},
},
{
displayName: 'Product Description',
name: 'product_description',
type: 'string',
default: '',
},
{
displayName: 'Quantity',
name: 'quantity',
type: 'number',
default: 1,
},
{
displayName: 'Quantity in Stock',
name: 'quantity_in_stock',
type: 'number',
default: 0,
},
{
displayName: 'Tax',
name: 'Tax',
type: 'number',
default: 0,
},
{
displayName: 'Total',
name: 'total',
type: 'number',
default: 0,
},
{
displayName: 'Total After Discount',
name: 'total_after_discount',
type: 'number',
default: 0,
},
{
displayName: 'Total (Net)',
name: 'net_total',
type: 'number',
default: 0,
},
{
displayName: 'Unit Price',
name: 'unit_price',
type: 'number',
default: 0,
},
];
export const makeGetAllFields = (resource: CamelCaseResource) => {
const loadOptionsMethod = `get${capitalizeInitial(resource)}Fields`;
return [
{
displayName: 'Return All',
name: 'returnAll',
type: 'boolean',
default: false,
description: 'Return all results.',
displayOptions: {
show: {
resource: [
resource,
],
operation: [
'getAll',
],
},
},
},
{
displayName: 'Limit',
name: 'limit',
type: 'number',
default: 5,
description: 'The number of results to return.',
typeOptions: {
minValue: 1,
maxValue: 1000,
},
displayOptions: {
show: {
resource: [
resource,
],
operation: [
'getAll',
],
returnAll: [
false,
],
},
},
},
{
displayName: 'Options',
name: 'options',
type: 'collection',
placeholder: 'Add Option',
default: {},
displayOptions: {
show: {
resource: [
resource,
],
operation: [
'getAll',
],
},
},
options: [
{
displayName: 'Approved',
name: 'approved',
type: 'boolean',
default: true,
description: 'Retrieve only approved records. Defaults to true.',
},
{
displayName: 'Converted',
name: 'converted',
type: 'boolean',
default: false,
description: 'Retrieve only converted records. Defaults to false.',
},
{
displayName: 'Fields',
name: 'fields',
type: 'multiOptions',
typeOptions: {
loadOptionsMethod,
},
default: [],
description: 'Return only these fields.',
},
{
displayName: 'Include Child',
name: 'include_child',
type: 'boolean',
default: false,
description: 'Retrieve only records from child territories.',
},
{
displayName: 'Sort By',
name: 'sort_by',
type: 'options',
typeOptions: {
loadOptionsMethod,
},
default: [],
description: 'Field to sort records by.',
},
{
displayName: 'Sort Order',
name: 'sort_order',
type: 'options',
options: [
{
name: 'Ascending',
value: 'asc',
},
{
name: 'Descending',
value: 'desc',
},
],
default: 'desc',
description: 'Ascending or descending order sort order.',
},
{
displayName: 'Territory ID',
name: 'territory_id',
type: 'string',
default: '',
description: 'Retrieve only records from this territory.',
},
],
},
];
};
export const makeCustomFieldsFixedCollection = (resource: CamelCaseResource) => {
const loadOptionsMethod = `getCustom${capitalizeInitial(resource)}Fields`;
return {
displayName: 'Custom Fields',
name: 'customFields',
placeholder: 'Add Custom Field',
type: 'fixedCollection',
typeOptions: {
multipleValues: true,
},
description: 'Filter by custom fields.',
default: {},
options: [
{
name: 'customFields',
displayName: 'Custom Field',
values: [
{
displayName: 'Field ID',
name: 'fieldId',
type: 'options',
typeOptions: {
loadOptionsMethod,
},
default: '',
description: 'Custom field to set a value to.',
},
{
displayName: 'Value',
name: 'value',
type: 'string',
default: '',
description: 'Value to set on custom field.',
},
],
},
],
};
};
// https://www.zoho.com/subscriptions/help/supported-currencies.html
export const currencies = [
{ name: 'US Dollar', value: 'USD' },
{ name: 'Euro', value: 'EUR' },
{ name: 'UAE Dirham', value: 'AED' },
{ name: 'Afghani', value: 'AFN' },
{ name: 'Lek', value: 'ALL' },
{ name: 'Argentine Peso', value: 'ARS' },
{ name: 'Australian Dollar', value: 'AUD' },
{ name: 'Azerbaijan Manat', value: 'AZN' },
{ name: 'Barbados Dollar', value: 'BBD' },
{ name: 'Taka', value: 'BDT' },
{ name: 'Bulgarian Lev', value: 'BGN' },
{ name: 'Bermudian Dollar', value: 'BMD' },
{ name: 'Brunei Dollar', value: 'BND' },
{ name: 'Boliviano', value: 'BOB' },
{ name: 'Brazilian Real', value: 'BRL' },
{ name: 'Bahamian Dollar', value: 'BSD' },
{ name: 'Pula', value: 'BWP' },
{ name: 'Belize Dollar', value: 'BZD' },
{ name: 'Canadian Dollar', value: 'CAD' },
{ name: 'Swiss Franc', value: 'CHF' },
{ name: 'Chilean Peso', value: 'CLP' },
{ name: 'Yuan Renminbi', value: 'CNY' },
{ name: 'Colombian Peso', value: 'COP' },
{ name: 'Costa Rican Colon', value: 'CRC' },
{ name: 'Czech Koruna', value: 'CZK' },
{ name: 'Danish Krone', value: 'DKK' },
{ name: 'Dominican Peso', value: 'DOP' },
{ name: 'Algerian Dinar', value: 'DZD' },
{ name: 'Egyptian Pound', value: 'EGP' },
{ name: 'Fiji Dollar', value: 'FJD' },
{ name: 'Pound Sterling', value: 'GBP' },
{ name: 'Quetzal', value: 'GTQ' },
{ name: 'Hong Kong Dollar', value: 'HKD' },
{ name: 'Lempira', value: 'HNL' },
{ name: 'Kuna', value: 'HRK' },
{ name: 'Forint', value: 'HUF' },
{ name: 'Rupiah', value: 'IDR' },
{ name: 'New Israeli Sheqel', value: 'ILS' },
{ name: 'Indian Rupee', value: 'INR' },
{ name: 'Jamaican Dollar', value: 'JMD' },
{ name: 'Yen', value: 'JPY' },
{ name: 'Kenyan Shilling', value: 'KES' },
{ name: 'Won', value: 'KRW' },
{ name: 'Tenge', value: 'KZT' },
{ name: 'Lao Kip', value: 'LAK' },
{ name: 'Lebanese Pound', value: 'LBP' },
{ name: 'Sri Lanka Rupee', value: 'LKR' },
{ name: 'Liberian Dollar', value: 'LRD' },
{ name: 'Moroccan Dirham', value: 'MAD' },
{ name: 'Kyat', value: 'MMK' },
{ name: 'Pataca', value: 'MOP' },
{ name: 'Ouguiya', value: 'MRO' },
{ name: 'Mauritius Rupee', value: 'MUR' },
{ name: 'Rufiyaa', value: 'MVR' },
{ name: 'Mexican Peso', value: 'MXN' },
{ name: 'Malaysian Ringgit', value: 'MYR' },
{ name: 'Cordoba Oro', value: 'NIO' },
{ name: 'Norwegian Krone', value: 'NOK' },
{ name: 'Nepalese Rupee', value: 'NPR' },
{ name: 'New Zealand Dollar', value: 'NZD' },
{ name: 'Sol', value: 'PEN' },
{ name: 'Kina', value: 'PGK' },
{ name: 'Philippine Peso', value: 'PHP' },
{ name: 'Pakistan Rupee', value: 'PKR' },
{ name: 'Zloty', value: 'PLN' },
{ name: 'Qatari Rial', value: 'QAR' },
{ name: 'Romanian Leu', value: 'RON' },
{ name: 'Russian Ruble', value: 'RUB' },
{ name: 'Saudi Riyal', value: 'SAR' },
{ name: 'Solomon Islands Dollar ', value: 'SBD' },
{ name: 'Seychelles Rupee', value: 'SCR' },
{ name: 'Swedish Krona', value: 'SEK' },
{ name: 'Singapore Dollar', value: 'SGD' },
{ name: 'Syrian Pound', value: 'SYP' },
{ name: 'Baht', value: 'THB' },
{ name: 'Paanga', value: 'TOP' },
{ name: 'Turkish Lira', value: 'TRY' },
{ name: 'Trinidad and Tobago Dollar', value: 'TTD' },
{ name: 'New Taiwan Dollar', value: 'TWD' },
{ name: 'Hryvnia', value: 'UAH' },
{ name: 'Dong', value: 'VND' },
{ name: 'Vatu', value: 'VUV' },
{ name: 'Tala', value: 'WST' },
{ name: 'East Caribbean Dollar', value: 'XCD' },
{ name: 'West African CFA Franc', value: 'XOF' },
{ name: 'Yemeni Rial', value: 'YER' },
{ name: 'Rand', value: 'ZAR' },
];