mirror of
https://github.com/n8n-io/n8n.git
synced 2024-12-26 21:19:43 -08:00
5f76a5dc72
* ⚡ 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 72ac41780b
.
* ⚡ Improvements
Co-authored-by: ricardo <ricardoespinoza105@gmail.com>
578 lines
12 KiB
TypeScript
578 lines
12 KiB
TypeScript
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: 'Pa’anga', 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' },
|
||
];
|