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
1 change: 0 additions & 1 deletion src/CONST/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2819,7 +2819,6 @@ const CONST = {
REIMBURSABLE_EXPENSES_EXPORT_DESTINATION: 'reimbursableExpensesExportDestination',
NON_REIMBURSABLE_EXPENSES_EXPORT_DESTINATION: 'nonreimbursableExpensesExportDestination',
DEFAULT_VENDOR: 'defaultVendor',
TRAVEL_INVOICING_VENDOR: 'travelInvoicingVendorID',
TRAVEL_INVOICING_PAYABLE_ACCOUNT: 'travelInvoicingPayableAccountID',
REIMBURSABLE_PAYABLE_ACCOUNT: 'reimbursablePayableAccount',
PAYABLE_ACCT: 'payableAcct',
Expand Down
4 changes: 0 additions & 4 deletions src/ROUTES.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1888,10 +1888,6 @@ const ROUTES = {
route: 'workspaces/:policyID/accounting/netsuite/export/travel-invoicing',
getRoute: (policyID: string) => `workspaces/${policyID}/accounting/netsuite/export/travel-invoicing` as const,
},
POLICY_ACCOUNTING_NETSUITE_TRAVEL_INVOICING_VENDOR_SELECT: {
route: 'workspaces/:policyID/accounting/netsuite/export/travel-invoicing/vendor',
getRoute: (policyID: string) => `workspaces/${policyID}/accounting/netsuite/export/travel-invoicing/vendor` as const,
},
POLICY_ACCOUNTING_NETSUITE_TRAVEL_INVOICING_PAYABLE_ACCOUNT_SELECT: {
route: 'workspaces/:policyID/accounting/netsuite/export/travel-invoicing/payable-account',
getRoute: (policyID: string) => `workspaces/${policyID}/accounting/netsuite/export/travel-invoicing/payable-account` as const,
Expand Down
1 change: 0 additions & 1 deletion src/SCREENS.ts
Original file line number Diff line number Diff line change
Expand Up @@ -538,7 +538,6 @@ const SCREENS = {
QUICKBOOKS_ONLINE_TRAVEL_INVOICING_VENDOR_SELECT: 'Workspace_Accounting_Quickbooks_Online_Travel_Invoicing_Vendor_Select',
QUICKBOOKS_ONLINE_TRAVEL_INVOICING_PAYABLE_ACCOUNT_SELECT: 'Workspace_Accounting_Quickbooks_Online_Travel_Invoicing_Payable_Account_Select',
NETSUITE_TRAVEL_INVOICING_CONFIGURATION: 'Workspace_Accounting_NetSuite_Travel_Invoicing_Configuration',
NETSUITE_TRAVEL_INVOICING_VENDOR_SELECT: 'Workspace_Accounting_NetSuite_Travel_Invoicing_Vendor_Select',
NETSUITE_TRAVEL_INVOICING_PAYABLE_ACCOUNT_SELECT: 'Workspace_Accounting_NetSuite_Travel_Invoicing_Payable_Account_Select',
DYNAMIC_QUICKBOOKS_ONLINE_EXPORT_OUT_OF_POCKET_EXPENSES: 'Dynamic_Workspace_Accounting_Quickbooks_Online_Export_Out_Of_Pocket_Expenses',
DYNAMIC_QUICKBOOKS_ONLINE_EXPORT_OUT_OF_POCKET_EXPENSES_SELECT: 'Dynamic_Workspace_Accounting_Quickbooks_Online_Export_Out_Of_Pocket_Expenses_Select',
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -603,8 +603,6 @@ const SettingsModalStackNavigator = createModalStackNavigator<SettingsNavigatorP
require<ReactComponentModule>('../../../../pages/workspace/accounting/qbo/export/QuickbooksExportTravelPayableAccountSelectPage').default,
[SCREENS.WORKSPACE.ACCOUNTING.NETSUITE_TRAVEL_INVOICING_CONFIGURATION]: () =>
require<ReactComponentModule>('../../../../pages/workspace/accounting/netsuite/export/NetSuiteTravelInvoicingConfigurationPage').default,
[SCREENS.WORKSPACE.ACCOUNTING.NETSUITE_TRAVEL_INVOICING_VENDOR_SELECT]: () =>
require<ReactComponentModule>('../../../../pages/workspace/accounting/netsuite/export/NetSuiteTravelInvoicingVendorSelectPage').default,
[SCREENS.WORKSPACE.ACCOUNTING.NETSUITE_TRAVEL_INVOICING_PAYABLE_ACCOUNT_SELECT]: () =>
require<ReactComponentModule>('../../../../pages/workspace/accounting/netsuite/export/NetSuiteTravelInvoicingPayableAccountSelectPage').default,
[SCREENS.WORKSPACE.ACCOUNTING.QUICKBOOKS_DESKTOP_COMPANY_CARD_EXPENSE_ACCOUNT_SELECT]: () =>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,6 @@ const WORKSPACE_TO_RHP: Partial<Record<keyof WorkspaceSplitNavigatorParamList, s
SCREENS.WORKSPACE.ACCOUNTING.QUICKBOOKS_ONLINE_TRAVEL_INVOICING_VENDOR_SELECT,
SCREENS.WORKSPACE.ACCOUNTING.QUICKBOOKS_ONLINE_TRAVEL_INVOICING_PAYABLE_ACCOUNT_SELECT,
SCREENS.WORKSPACE.ACCOUNTING.NETSUITE_TRAVEL_INVOICING_CONFIGURATION,
SCREENS.WORKSPACE.ACCOUNTING.NETSUITE_TRAVEL_INVOICING_VENDOR_SELECT,
SCREENS.WORKSPACE.ACCOUNTING.NETSUITE_TRAVEL_INVOICING_PAYABLE_ACCOUNT_SELECT,
SCREENS.WORKSPACE.ACCOUNTING.QUICKBOOKS_ONLINE_NON_REIMBURSABLE_DEFAULT_VENDOR_SELECT,
SCREENS.WORKSPACE.ACCOUNTING.QUICKBOOKS_ONLINE_ADVANCED,
Expand Down
3 changes: 0 additions & 3 deletions src/libs/Navigation/linkingConfig/config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -569,9 +569,6 @@ const config: LinkingOptions<RootNavigatorParamList>['config'] = {
[SCREENS.WORKSPACE.ACCOUNTING.NETSUITE_TRAVEL_INVOICING_CONFIGURATION]: {
path: ROUTES.POLICY_ACCOUNTING_NETSUITE_TRAVEL_INVOICING_CONFIGURATION.route,
},
[SCREENS.WORKSPACE.ACCOUNTING.NETSUITE_TRAVEL_INVOICING_VENDOR_SELECT]: {
path: ROUTES.POLICY_ACCOUNTING_NETSUITE_TRAVEL_INVOICING_VENDOR_SELECT.route,
},
[SCREENS.WORKSPACE.ACCOUNTING.NETSUITE_TRAVEL_INVOICING_PAYABLE_ACCOUNT_SELECT]: {
path: ROUTES.POLICY_ACCOUNTING_NETSUITE_TRAVEL_INVOICING_PAYABLE_ACCOUNT_SELECT.route,
},
Expand Down
3 changes: 0 additions & 3 deletions src/libs/Navigation/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -763,9 +763,6 @@ type SettingsNavigatorParamList = {
[SCREENS.WORKSPACE.ACCOUNTING.NETSUITE_TRAVEL_INVOICING_CONFIGURATION]: {
policyID: string;
};
[SCREENS.WORKSPACE.ACCOUNTING.NETSUITE_TRAVEL_INVOICING_VENDOR_SELECT]: {
policyID: string;
};
[SCREENS.WORKSPACE.ACCOUNTING.NETSUITE_TRAVEL_INVOICING_PAYABLE_ACCOUNT_SELECT]: {
policyID: string;
};
Expand Down
12 changes: 0 additions & 12 deletions src/libs/actions/connections/NetSuiteCommands.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1062,17 +1062,6 @@ function updateNetSuiteCustomFormIDOptions(
API.write(commandName, parameters, onyxData);
}

function updateNetSuiteTravelInvoicingVendor(policyID: string, vendorID: string, oldVendorID?: string) {
const onyxData = updateNetSuiteOnyxData(policyID, CONST.NETSUITE_CONFIG.TRAVEL_INVOICING_VENDOR, vendorID, oldVendorID);
const parameters: UpdateManyPolicyConnectionConfigurationsParams = {
policyID,
connectionName: CONST.POLICY.CONNECTIONS.NAME.NETSUITE,
configUpdate: JSON.stringify({[CONST.NETSUITE_CONFIG.TRAVEL_INVOICING_VENDOR]: vendorID}),
idempotencyKey: CONST.NETSUITE_CONFIG.TRAVEL_INVOICING_VENDOR,
};
API.write(WRITE_COMMANDS.UPDATE_MANY_POLICY_CONNECTION_CONFIGS, parameters, onyxData);
}

function updateNetSuiteTravelInvoicingPayableAccount(policyID: string, accountID: string, oldAccountID?: string) {
const onyxData = updateNetSuiteOnyxData(policyID, CONST.NETSUITE_CONFIG.TRAVEL_INVOICING_PAYABLE_ACCOUNT, accountID, oldAccountID);
const parameters: UpdateManyPolicyConnectionConfigurationsParams = {
Expand Down Expand Up @@ -1123,6 +1112,5 @@ export {
updateNetSuiteCustomFormIDOptions,
updateNetSuiteCustomersJobsMapping,
updateNetSuiteAccountingMethod,
updateNetSuiteTravelInvoicingVendor,
updateNetSuiteTravelInvoicingPayableAccount,
};
Original file line number Diff line number Diff line change
Expand Up @@ -189,7 +189,7 @@ function NetSuiteExportConfigurationPage({policy}: WithPolicyConnectionsProps) {
title: travelPayableAccount?.name,
description: translate('workspace.common.travelInvoicing'),
onPress: !policyID ? undefined : () => Navigation.navigate(ROUTES.POLICY_ACCOUNTING_NETSUITE_TRAVEL_INVOICING_CONFIGURATION.getRoute(policyID)),
subscribedSettings: [CONST.NETSUITE_CONFIG.TRAVEL_INVOICING_VENDOR, CONST.NETSUITE_CONFIG.TRAVEL_INVOICING_PAYABLE_ACCOUNT],
subscribedSettings: [CONST.NETSUITE_CONFIG.TRAVEL_INVOICING_PAYABLE_ACCOUNT],
shouldHide: !isTravelInvoicingEnabled,
},
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,6 @@ type NetSuiteSectionType = {
brickRoadIndicator?: ValueOf<typeof CONST.BRICK_ROAD_INDICATOR_STATUS>;
};

const vendorSetting = [CONST.NETSUITE_CONFIG.TRAVEL_INVOICING_VENDOR];
const payableAccountSetting = [CONST.NETSUITE_CONFIG.TRAVEL_INVOICING_PAYABLE_ACCOUNT];

function NetSuiteTravelInvoicingConfigurationPage({policy}: WithPolicyConnectionsProps) {
Expand All @@ -32,24 +31,10 @@ function NetSuiteTravelInvoicingConfigurationPage({policy}: WithPolicyConnection
const policyID = policy?.id ?? String(CONST.DEFAULT_NUMBER_ID);
const config = policy?.connections?.netsuite?.options?.config;

const {vendors, payableList} = policy?.connections?.netsuite?.options?.data ?? {};
const travelVendor = vendors?.find((vendor) => vendor.id === config?.travelInvoicingVendorID);
const {payableList} = policy?.connections?.netsuite?.options?.data ?? {};
const travelPayableAccount = payableList?.find((account) => account.id === config?.travelInvoicingPayableAccountID);

const sections: NetSuiteSectionType[] = [
{
title: travelVendor?.name,
description: translate('workspace.common.travelInvoicingVendor'),
onPress: () => {
if (!policyID) {
return;
}
Navigation.navigate(ROUTES.POLICY_ACCOUNTING_NETSUITE_TRAVEL_INVOICING_VENDOR_SELECT.getRoute(policyID));
},
subscribedSettings: vendorSetting,
pendingAction: settingsPendingAction(vendorSetting, config?.pendingFields),
brickRoadIndicator: areSettingsInErrorFields(vendorSetting, config?.errorFields) ? CONST.BRICK_ROAD_INDICATOR_STATUS.ERROR : undefined,
},
{
title: travelPayableAccount?.name,
description: translate('workspace.common.travelInvoicingPayableAccount'),
Expand Down

This file was deleted.

3 changes: 0 additions & 3 deletions src/types/onyx/Policy.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1074,9 +1074,6 @@ type NetSuiteConnectionConfig = OnyxCommon.OnyxValueWithOfflineFeedback<
/** The default vendor to use for Transactions in NetSuite */
defaultVendor?: string;

/** The vendor to use for Expensify Travel expenses when exporting to NetSuite */
travelInvoicingVendorID?: string;

/** The payable account to use for Expensify Travel expenses when exporting to NetSuite */
travelInvoicingPayableAccountID?: string;

Expand Down
30 changes: 1 addition & 29 deletions tests/actions/connections/NetSuite.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import Onyx from 'react-native-onyx';
import type {OnyxEntry} from 'react-native-onyx';
import {shouldUseUpdateNetSuiteTokens} from '@libs/actions/connections';
import {connectPolicyToNetSuite, updateNetSuiteTokens, updateNetSuiteTravelInvoicingPayableAccount, updateNetSuiteTravelInvoicingVendor} from '@libs/actions/connections/NetSuiteCommands';
import {connectPolicyToNetSuite, updateNetSuiteTokens, updateNetSuiteTravelInvoicingPayableAccount} from '@libs/actions/connections/NetSuiteCommands';
// eslint-disable-next-line no-restricted-syntax -- this is required to allow mocking
import * as API from '@libs/API';
import type {WriteCommand} from '@libs/API/types';
Expand Down Expand Up @@ -158,34 +158,6 @@ describe('actions/connections/NetSuite', () => {
});
});

describe('updateNetSuiteTravelInvoicingVendor', () => {
it('writes the UpdateManyPolicyConnectionConfigs command with travelInvoicingVendorID', () => {
updateNetSuiteTravelInvoicingVendor(MOCK_POLICY_ID, 'vendor-123', 'old-vendor');

const {command} = getFirstWriteCall();
expect(command).toBe(WRITE_COMMANDS.UPDATE_MANY_POLICY_CONNECTION_CONFIGS);

const call = writeSpy.mock.calls.at(0);
// eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion -- API.write's params argument is typed as a broad union, so narrow to the shape this command sends
const params = call?.[1] as {connectionName: string; configUpdate: string; policyID: string};
expect(params.policyID).toBe(MOCK_POLICY_ID);
expect(params.connectionName).toBe(CONST.POLICY.CONNECTIONS.NAME.NETSUITE);
expect(JSON.parse(params.configUpdate)).toEqual({[CONST.NETSUITE_CONFIG.TRAVEL_INVOICING_VENDOR]: 'vendor-123'});
});

it('merges travelInvoicingVendorID optimistically onto the NetSuite options config', () => {
updateNetSuiteTravelInvoicingVendor(MOCK_POLICY_ID, 'vendor-123', 'old-vendor');

const {onyxData} = getFirstWriteCall();
const optimisticUpdate = onyxData?.optimisticData?.at(0);
expect(optimisticUpdate?.key).toBe(`${ONYXKEYS.COLLECTION.POLICY}${MOCK_POLICY_ID}`);

// eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion -- optimisticData values are typed as unknown; narrow to the partial Policy shape this update writes
const value = optimisticUpdate?.value as {connections: {netsuite: {options: {config: Record<string, unknown>}}}};
expect(value.connections.netsuite.options.config[CONST.NETSUITE_CONFIG.TRAVEL_INVOICING_VENDOR]).toBe('vendor-123');
});
});

describe('updateNetSuiteTravelInvoicingPayableAccount', () => {
it('writes the UpdateManyPolicyConnectionConfigs command with travelInvoicingPayableAccountID', () => {
updateNetSuiteTravelInvoicingPayableAccount(MOCK_POLICY_ID, 'account-123', 'old-account');
Expand Down
Loading