Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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: {
Comment thread
shubham1206agra marked this conversation as resolved.
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',
Comment thread
shubham1206agra marked this conversation as resolved.
},
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