Skip to content

Commit

Permalink
Merge pull request #44723 from shubham1206agra/netsuite-advanced
Browse files Browse the repository at this point in the history
[#Wave-Control: Add NetSuite] Settings Configuration in NewDot: Advanced List
  • Loading branch information
yuwenmemon authored Jul 4, 2024
2 parents 3e4d14f + 0600598 commit 6abb02b
Show file tree
Hide file tree
Showing 19 changed files with 733 additions and 108 deletions.
39 changes: 39 additions & 0 deletions src/CONST.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1372,6 +1372,12 @@ const CONST = {
PROVINCIAL_TAX_POSTING_ACCOUNT: 'provincialTaxPostingAccount',
ALLOW_FOREIGN_CURRENCY: 'allowForeignCurrency',
EXPORT_TO_NEXT_OPEN_PERIOD: 'exportToNextOpenPeriod',
AUTO_SYNC: 'autoSync',
REIMBURSEMENT_ACCOUNT_ID: 'reimbursementAccountID',
COLLECTION_ACCOUNT: 'collectionAccount',
AUTO_CREATE_ENTITIES: 'autoCreateEntities',
APPROVAL_ACCOUNT: 'approvalAccount',
CUSTOM_FORM_ID_OPTIONS: 'customFormIDOptions',
TOKEN_INPUT_STEP_NAMES: ['1', '2,', '3', '4', '5'],
TOKEN_INPUT_STEP_KEYS: {
0: 'installBundle',
Expand All @@ -1383,6 +1389,12 @@ const CONST = {
IMPORT_FIELDS: ['departments', 'classes', 'locations', 'customers', 'jobs'],
IMPORT_CUSTOM_FIELDS: ['customSegments', 'customLists'],
SYNC_OPTIONS: {
SYNC_REIMBURSED_REPORTS: 'syncReimbursedReports',
SYNC_PEOPLE: 'syncPeople',
ENABLE_NEW_CATEGORIES: 'enableNewCategories',
EXPORT_REPORTS_TO: 'exportReportsTo',
EXPORT_VENDOR_BILLS_TO: 'exportVendorBillsTo',
EXPORT_JOURNALS_TO: 'exportJournalsTo',
SYNC_TAX: 'syncTax',
},
},
Expand All @@ -1399,6 +1411,12 @@ const CONST = {
JOURNAL_ENTRY: 'JOURNAL_ENTRY',
},

NETSUITE_MAP_EXPORT_DESTINATION: {
EXPENSE_REPORT: 'expenseReport',
VENDOR_BILL: 'vendorBill',
JOURNAL_ENTRY: 'journalEntry',
},

NETSUITE_INVOICE_ITEM_PREFERENCE: {
CREATE: 'create',
SELECT: 'select',
Expand All @@ -1414,6 +1432,27 @@ const CONST = {
NON_REIMBURSABLE: 'nonreimbursable',
},

NETSUITE_REPORTS_APPROVAL_LEVEL: {
REPORTS_APPROVED_NONE: 'REPORTS_APPROVED_NONE',
REPORTS_SUPERVISOR_APPROVED: 'REPORTS_SUPERVISOR_APPROVED',
REPORTS_ACCOUNTING_APPROVED: 'REPORTS_ACCOUNTING_APPROVED',
REPORTS_APPROVED_BOTH: 'REPORTS_APPROVED_BOTH',
},

NETSUITE_VENDOR_BILLS_APPROVAL_LEVEL: {
VENDOR_BILLS_APPROVED_NONE: 'VENDOR_BILLS_APPROVED_NONE',
VENDOR_BILLS_APPROVAL_PENDING: 'VENDOR_BILLS_APPROVAL_PENDING',
VENDOR_BILLS_APPROVED: 'VENDOR_BILLS_APPROVED',
},

NETSUITE_JOURNALS_APPROVAL_LEVEL: {
JOURNALS_APPROVED_NONE: 'JOURNALS_APPROVED_NONE',
JOURNALS_APPROVAL_PENDING: 'JOURNALS_APPROVAL_PENDING',
JOURNALS_APPROVED: 'JOURNALS_APPROVED',
},

NETSUITE_APPROVAL_ACCOUNT_DEFAULT: 'APPROVAL_ACCOUNT_DEFAULT',

/**
* Countries where tax setting is permitted (Strings are in the format of Netsuite's Country type/enum)
*
Expand Down
4 changes: 4 additions & 0 deletions src/ROUTES.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1025,6 +1025,10 @@ const ROUTES = {
route: 'settings/workspaces/:policyID/connections/netsuite/export/provincial-tax-posting-account/select',
getRoute: (policyID: string) => `settings/workspaces/${policyID}/connections/netsuite/export/provincial-tax-posting-account/select` as const,
},
POLICY_ACCOUNTING_NETSUITE_ADVANCED: {
route: 'settings/workspaces/:policyID/connections/netsuite/advanced/',
getRoute: (policyID: string) => `settings/workspaces/${policyID}/connections/netsuite/advanced/` as const,
},
POLICY_ACCOUNTING_SAGE_INTACCT_PREREQUISITES: {
route: 'settings/workspaces/:policyID/accounting/sage-intacct/prerequisites',
getRoute: (policyID: string) => `settings/workspaces/${policyID}/accounting/sage-intacct/prerequisites` as const,
Expand Down
1 change: 1 addition & 0 deletions src/SCREENS.ts
Original file line number Diff line number Diff line change
Expand Up @@ -288,6 +288,7 @@ const SCREENS = {
NETSUITE_INVOICE_ITEM_SELECT: 'Policy_Accounting_NetSuite_Invoice_Item_Select',
NETSUITE_TAX_POSTING_ACCOUNT_SELECT: 'Policy_Accounting_NetSuite_Tax_Posting_Account_Select',
NETSUITE_PROVINCIAL_TAX_POSTING_ACCOUNT_SELECT: 'Policy_Accounting_NetSuite_Provincial_Tax_Posting_Account_Select',
NETSUITE_ADVANCED: 'Policy_Accounting_NetSuite_Advanced',
SAGE_INTACCT_PREREQUISITES: 'Policy_Accounting_Sage_Intacct_Prerequisites',
ENTER_SAGE_INTACCT_CREDENTIALS: 'Policy_Enter_Sage_Intacct_Credentials',
EXISTING_SAGE_INTACCT_CONNECTIONS: 'Policy_Existing_Sage_Intacct_Connections',
Expand Down
51 changes: 45 additions & 6 deletions src/languages/en.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2100,14 +2100,11 @@ export default {
outOfPocketTaxEnabledError: 'Journal entries are unavailable when taxes are enabled. Please choose a different export option.',
outOfPocketLocationEnabledError: 'Vendor bills are unavailable when locations are enabled. Please choose a different export option.',
advancedConfig: {
advanced: 'Advanced',
autoSync: 'Auto-sync',
autoSyncDescription: 'Expensify will automatically sync with QuickBooks Online every day.',
inviteEmployees: 'Invite employees',
inviteEmployeesDescription: 'Import Quickbooks Online employee records and invite employees to this workspace.',
createEntities: 'Auto-create entities',
createEntitiesDescription: "Expensify will automatically create vendors in QuickBooks Online if they don't exist already, and auto-create customers when exporting invoices.",
reimbursedReports: 'Sync reimbursed reports',
reimbursedReportsDescription: 'Any time a report is paid using Expensify ACH, the corresponding bill payment will be created in the Quickbooks Online account below.',
qboBillPaymentAccount: 'QuickBooks bill payment account',
qboInvoiceCollectionAccount: 'QuickBooks invoice collections account',
Expand Down Expand Up @@ -2172,11 +2169,8 @@ export default {
salesInvoice: 'Sales invoice',
exportInvoicesDescription: 'Sales invoices always display the date on which the invoice was sent.',
advancedConfig: {
advanced: 'Advanced',
autoSync: 'Auto-sync',
autoSyncDescription: 'Expensify will automatically sync with Xero every day.',
purchaseBillStatusTitle: 'Purchase bill status',
reimbursedReports: 'Sync reimbursed reports',
reimbursedReportsDescription: 'Any time a report is paid using Expensify ACH, the corresponding bill payment will be created in the Xero account below.',
xeroBillPaymentAccount: 'Xero bill payment account',
xeroInvoiceCollectionAccount: 'Xero invoice collections account',
Expand Down Expand Up @@ -2295,6 +2289,49 @@ export default {
},
},
},
advancedConfig: {
autoSyncDescription: 'Expensify will automatically sync with NetSuite every day.',
reimbursedReportsDescription: 'Any time a report is paid using Expensify ACH, the corresponding bill payment will be created in the NetSuite account below.',
reimbursementsAccount: 'Reimbursements account',
collectionsAccount: 'Collections account',
approvalAccount: 'A/P approval account',
defaultApprovalAccount: 'NetSuite default',
inviteEmployees: 'Invite employees and set approvals',
inviteEmployeesDescription:
'Import NetSuite employee records and invite employees to this workspace. Your approval workflow will default to manager approval and can be further configured on the *Members* page.',
autoCreateEntities: 'Auto-create employees/vendors',
enableCategories: 'Enable newly imported categories',
customFormID: 'Custom form ID',
customFormIDDescription:
'By default, Expensify will create entries using the preferred transaction form set in NetSuite. Alternatively, you have the option to designate a specific transaction form to be used.',
customFormIDReimbursable: 'Reimbursable expense',
customFormIDNonReimbursable: 'Non-reimbursable expense',
exportReportsTo: {
label: 'Expense report approval level',
values: {
[CONST.NETSUITE_REPORTS_APPROVAL_LEVEL.REPORTS_APPROVED_NONE]: 'NetSuite default preference',
[CONST.NETSUITE_REPORTS_APPROVAL_LEVEL.REPORTS_SUPERVISOR_APPROVED]: 'Only supervisor approved',
[CONST.NETSUITE_REPORTS_APPROVAL_LEVEL.REPORTS_ACCOUNTING_APPROVED]: 'Only accounting approved',
[CONST.NETSUITE_REPORTS_APPROVAL_LEVEL.REPORTS_APPROVED_BOTH]: 'Supervisor and accounting approved',
},
},
exportVendorBillsTo: {
label: 'Vendor bill approval level',
values: {
[CONST.NETSUITE_VENDOR_BILLS_APPROVAL_LEVEL.VENDOR_BILLS_APPROVED_NONE]: 'NetSuite default preference',
[CONST.NETSUITE_VENDOR_BILLS_APPROVAL_LEVEL.VENDOR_BILLS_APPROVAL_PENDING]: 'Pending approval',
[CONST.NETSUITE_VENDOR_BILLS_APPROVAL_LEVEL.VENDOR_BILLS_APPROVED]: 'Approved for posting',
},
},
exportJournalsTo: {
label: 'Journal entry approval level',
values: {
[CONST.NETSUITE_JOURNALS_APPROVAL_LEVEL.JOURNALS_APPROVED_NONE]: 'NetSuite default preference',
[CONST.NETSUITE_JOURNALS_APPROVAL_LEVEL.JOURNALS_APPROVAL_PENDING]: 'Pending approval',
[CONST.NETSUITE_JOURNALS_APPROVAL_LEVEL.JOURNALS_APPROVED]: 'Approved for posting',
},
},
},
noAccountsFound: 'No accounts found',
noAccountsFoundDescription: 'Add the account in NetSuite and sync the connection again.',
noVendorsFound: 'No vendors found',
Expand Down Expand Up @@ -2847,6 +2884,8 @@ export default {
exportPreferredExporterSubNote: 'Once set, the preferred exporter will see reports for export in their account.',
exportAs: 'Export as',
defaultVendor: 'Default vendor',
autoSync: 'Auto-sync',
reimbursedReports: 'Sync reimbursed reports',
},
bills: {
manageYourBills: 'Manage your bills',
Expand Down
52 changes: 46 additions & 6 deletions src/languages/es.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2134,14 +2134,11 @@ export default {
'QuickBooks Online no permite lugares en facturas de proveedores o cheques. Como tienes activadas los lugares en tu espacio de trabajo, estas opciones de exportación no están disponibles.',

advancedConfig: {
advanced: 'Avanzado',
autoSync: 'Autosincronización',
autoSyncDescription: 'Expensify se sincronizará automáticamente con QuickBooks Online todos los días.',
inviteEmployees: 'Invitar empleados',
inviteEmployeesDescription: 'Importe los registros de los empleados de Quickbooks Online e invítelos a este espacio de trabajo.',
createEntities: 'Crear entidades automáticamente',
createEntitiesDescription: 'Expensify creará automáticamente proveedores en QuickBooks Online si aún no existen, y creará automáticamente clientes al exportar facturas.',
reimbursedReports: 'Sincronizar informes reembolsados',
reimbursedReportsDescription:
'Cada vez que se pague un informe utilizando Expensify ACH, se creará el correspondiente pago de la factura en la cuenta de Quickbooks Online indicadas a continuación.',
qboBillPaymentAccount: 'Cuenta de pago de las facturas de QuickBooks',
Expand Down Expand Up @@ -2212,11 +2209,8 @@ export default {
salesInvoice: 'Factura de venta',
exportInvoicesDescription: 'Las facturas de venta siempre muestran la fecha en la que se envió la factura.',
advancedConfig: {
advanced: 'Avanzado',
autoSync: 'Autosincronización',
autoSyncDescription: 'Expensify se sincronizará automáticamente con Xero todos los días.',
purchaseBillStatusTitle: 'Estado de la factura de compra',
reimbursedReports: 'Sincronizar informes reembolsados',
reimbursedReportsDescription:
'Cada vez que se pague un informe utilizando Expensify ACH, se creará el correspondiente pago de la factura en la cuenta de Xero indicadas a continuación.',
xeroBillPaymentAccount: 'Cuenta de pago de las facturas de Xero',
Expand Down Expand Up @@ -2336,6 +2330,50 @@ export default {
},
},
},
advancedConfig: {
autoSyncDescription: 'Expensify se sincronizará automáticamente con NetSuite todos los días.',
reimbursedReportsDescription:
'Cada vez que se pague un informe utilizando Expensify ACH, se creará el correspondiente pago de la factura en la cuenta de NetSuite indicadas a continuación.',
reimbursementsAccount: 'Cuenta de reembolsos',
collectionsAccount: 'Cuenta de cobros',
approvalAccount: 'Cuenta de aprobación de cuentas por pagar',
defaultApprovalAccount: 'Preferencia predeterminada de NetSuite',
inviteEmployees: 'Invitar empleados y establecer aprobaciones',
inviteEmployeesDescription:
'Importar registros de empleados de NetSuite e invitar a empleados a este espacio de trabajo. Su flujo de trabajo de aprobación será por defecto la aprobación del gerente y se puede configurar más en la página *Miembros*.',
autoCreateEntities: 'Crear automáticamente empleados/proveedores',
enableCategories: 'Activar categorías recién importadas',
customFormID: 'ID de formulario personalizado',
customFormIDDescription:
'Por defecto, Expensify creará entradas utilizando el formulario de transacción preferido configurado en NetSuite. Alternativamente, tienes la opción de designar un formulario de transacción específico para ser utilizado.',
customFormIDReimbursable: 'Gasto reembolsable',
customFormIDNonReimbursable: 'Gasto no reembolsable',
exportReportsTo: {
label: 'Nivel de aprobación del informe de gastos',
values: {
[CONST.NETSUITE_REPORTS_APPROVAL_LEVEL.REPORTS_APPROVED_NONE]: 'Preferencia predeterminada de NetSuite',
[CONST.NETSUITE_REPORTS_APPROVAL_LEVEL.REPORTS_SUPERVISOR_APPROVED]: 'Solo aprobado por el supervisor',
[CONST.NETSUITE_REPORTS_APPROVAL_LEVEL.REPORTS_ACCOUNTING_APPROVED]: 'Solo aprobado por contabilidad',
[CONST.NETSUITE_REPORTS_APPROVAL_LEVEL.REPORTS_APPROVED_BOTH]: 'Aprobado por supervisor y contabilidad',
},
},
exportVendorBillsTo: {
label: 'Nivel de aprobación de facturas de proveedores',
values: {
[CONST.NETSUITE_VENDOR_BILLS_APPROVAL_LEVEL.VENDOR_BILLS_APPROVED_NONE]: 'Preferencia predeterminada de NetSuite',
[CONST.NETSUITE_VENDOR_BILLS_APPROVAL_LEVEL.VENDOR_BILLS_APPROVAL_PENDING]: 'Aprobación pendiente',
[CONST.NETSUITE_VENDOR_BILLS_APPROVAL_LEVEL.VENDOR_BILLS_APPROVED]: 'Aprobado para publicación',
},
},
exportJournalsTo: {
label: 'Nivel de aprobación de asientos contables',
values: {
[CONST.NETSUITE_JOURNALS_APPROVAL_LEVEL.JOURNALS_APPROVED_NONE]: 'Preferencia predeterminada de NetSuite',
[CONST.NETSUITE_JOURNALS_APPROVAL_LEVEL.JOURNALS_APPROVAL_PENDING]: 'Aprobación pendiente',
[CONST.NETSUITE_JOURNALS_APPROVAL_LEVEL.JOURNALS_APPROVED]: 'Aprobado para publicación',
},
},
},
noAccountsFound: 'No se han encontrado cuentas',
noAccountsFoundDescription: 'Añade la cuenta en NetSuite y sincroniza la conexión de nuevo.',
noVendorsFound: 'No se han encontrado proveedores',
Expand Down Expand Up @@ -2828,6 +2866,8 @@ export default {
exportPreferredExporterSubNote: 'Una vez configurado, el exportador preferido verá los informes para exportar en tu cuenta.',
exportAs: 'Exportar cómo',
defaultVendor: 'Proveedor predeterminado',
autoSync: 'Autosincronización',
reimbursedReports: 'Sincronizar informes reembolsados',
},
card: {
header: 'Desbloquea Tarjetas Expensify gratis',
Expand Down
12 changes: 12 additions & 0 deletions src/libs/API/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -251,6 +251,12 @@ const WRITE_COMMANDS = {
UPDATE_NETSUITE_TAX_POSTING_ACCOUNT: 'UpdateNetSuiteTaxPostingAccount',
UPDATE_NETSUITE_ALLOW_FOREIGN_CURRENCY: 'UpdateNetSuiteAllowForeignCurrency',
UPDATE_NETSUITE_EXPORT_TO_NEXT_OPEN_PERIOD: 'UpdateNetSuiteExportToNextOpenPeriod',
UPDATE_NETSUITE_AUTO_SYNC: 'UpdateNetSuiteAutoSync',
UPDATE_NETSUITE_SYNC_REIMBURSED_REPORTS: 'UpdateNetSuiteSyncReimbursedReports',
UPDATE_NETSUITE_SYNC_PEOPLE: 'UpdateNetSuiteSyncPeople',
UPDATE_NETSUITE_AUTO_CREATE_ENTITIES: 'UpdateNetSuiteAutoCreateEntities',
UPDATE_NETSUITE_ENABLE_NEW_CATEGORIES: 'UpdateNetSuiteEnableNewCategories',
UPDATE_NETSUITE_CUSTOM_FORM_ID_OPTIONS_ENABLED: 'UpdateNetSuiteCustomFormIDOptionsEnabled',
REQUEST_EXPENSIFY_CARD_LIMIT_INCREASE: 'RequestExpensifyCardLimitIncrease',
CONNECT_POLICY_TO_SAGE_INTACCT: 'ConnectPolicyToSageIntacct',
CONNECT_POLICY_TO_NETSUITE: 'ConnectPolicyToNetSuite',
Expand Down Expand Up @@ -517,6 +523,12 @@ type WriteCommandParameters = {
[WRITE_COMMANDS.UPDATE_NETSUITE_TAX_POSTING_ACCOUNT]: Parameters.UpdateNetSuiteGenericTypeParams<'bankAccountID', string>;
[WRITE_COMMANDS.UPDATE_NETSUITE_ALLOW_FOREIGN_CURRENCY]: Parameters.UpdateNetSuiteGenericTypeParams<'enabled', boolean>;
[WRITE_COMMANDS.UPDATE_NETSUITE_EXPORT_TO_NEXT_OPEN_PERIOD]: Parameters.UpdateNetSuiteGenericTypeParams<'enabled', boolean>;
[WRITE_COMMANDS.UPDATE_NETSUITE_AUTO_SYNC]: Parameters.UpdateNetSuiteGenericTypeParams<'enabled', boolean>;
[WRITE_COMMANDS.UPDATE_NETSUITE_SYNC_REIMBURSED_REPORTS]: Parameters.UpdateNetSuiteGenericTypeParams<'enabled', boolean>;
[WRITE_COMMANDS.UPDATE_NETSUITE_SYNC_PEOPLE]: Parameters.UpdateNetSuiteGenericTypeParams<'enabled', boolean>;
[WRITE_COMMANDS.UPDATE_NETSUITE_AUTO_CREATE_ENTITIES]: Parameters.UpdateNetSuiteGenericTypeParams<'enabled', boolean>;
[WRITE_COMMANDS.UPDATE_NETSUITE_ENABLE_NEW_CATEGORIES]: Parameters.UpdateNetSuiteGenericTypeParams<'enabled', boolean>;
[WRITE_COMMANDS.UPDATE_NETSUITE_CUSTOM_FORM_ID_OPTIONS_ENABLED]: Parameters.UpdateNetSuiteGenericTypeParams<'enabled', boolean>;
};

const READ_COMMANDS = {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -346,6 +346,7 @@ const SettingsModalStackNavigator = createModalStackNavigator<SettingsNavigatorP
require<ReactComponentModule>('../../../../pages/workspace/accounting/netsuite/export/NetSuiteTaxPostingAccountSelectPage').default,
[SCREENS.WORKSPACE.ACCOUNTING.NETSUITE_PROVINCIAL_TAX_POSTING_ACCOUNT_SELECT]: () =>
require<ReactComponentModule>('../../../../pages/workspace/accounting/netsuite/export/NetSuiteProvincialTaxPostingAccountSelectPage').default,
[SCREENS.WORKSPACE.ACCOUNTING.NETSUITE_ADVANCED]: () => require<ReactComponentModule>('../../../../pages/workspace/accounting/netsuite/advanced/NetSuiteAdvancedPage').default,

[SCREENS.WORKSPACE.ACCOUNTING.SAGE_INTACCT_PREREQUISITES]: () => require<ReactComponentModule>('../../../../pages/workspace/accounting/intacct/IntacctPrerequisitesPage').default,
[SCREENS.WORKSPACE.ACCOUNTING.ENTER_SAGE_INTACCT_CREDENTIALS]: () =>
Expand Down
Loading

0 comments on commit 6abb02b

Please sign in to comment.