From 059083b45640bad56f1797a2b496f16e3fb992ae Mon Sep 17 00:00:00 2001 From: mkzie2 Date: Wed, 30 Oct 2024 15:05:29 +0700 Subject: [PATCH 1/4] fix: report fields are not disabled after disconnect accounting integration --- src/libs/PolicyUtils.ts | 5 ++++ src/libs/actions/connections/index.ts | 40 ++++++++++++++++++++++++++- 2 files changed, 44 insertions(+), 1 deletion(-) diff --git a/src/libs/PolicyUtils.ts b/src/libs/PolicyUtils.ts index 36e5ccef3308..c79cd86ec38f 100644 --- a/src/libs/PolicyUtils.ts +++ b/src/libs/PolicyUtils.ts @@ -381,6 +381,10 @@ function isControlPolicy(policy: OnyxEntry): boolean { return policy?.type === CONST.POLICY.TYPE.CORPORATE; } +function isCollectPolicy(policy: OnyxEntry): boolean { + return policy?.type === CONST.POLICY.TYPE.TEAM; +} + function isTaxTrackingEnabled(isPolicyExpenseChat: boolean, policy: OnyxEntry, isDistanceRequest: boolean): boolean { const distanceUnit = getDistanceRateCustomUnit(policy); const customUnitID = distanceUnit?.customUnitID ?? 0; @@ -1160,6 +1164,7 @@ export { getApprovalWorkflow, getReimburserAccountID, isControlPolicy, + isCollectPolicy, isNetSuiteCustomSegmentRecord, getNameFromNetSuiteCustomField, isNetSuiteCustomFieldPropertyEditable, diff --git a/src/libs/actions/connections/index.ts b/src/libs/actions/connections/index.ts index e4ef3e4ed047..404177cb4205 100644 --- a/src/libs/actions/connections/index.ts +++ b/src/libs/actions/connections/index.ts @@ -11,6 +11,7 @@ import type { } from '@libs/API/parameters'; import {READ_COMMANDS, WRITE_COMMANDS} from '@libs/API/types'; import * as ErrorUtils from '@libs/ErrorUtils'; +import * as PolicyUtils from '@libs/PolicyUtils'; import CONST from '@src/CONST'; import ONYXKEYS from '@src/ONYXKEYS'; import type * as OnyxCommon from '@src/types/onyx/OnyxCommon'; @@ -42,11 +43,48 @@ function removePolicyConnection(policyID: string, connectionName: PolicyConnecti }, ]; + const successData: OnyxUpdate[] = []; + const failureData: OnyxUpdate[] = []; + const policy = PolicyUtils.getPolicy(policyID); + if (PolicyUtils.isCollectPolicy(policy) && ['quickbooksOnline', 'xero'].includes(connectionName)) { + optimisticData.push({ + onyxMethod: Onyx.METHOD.MERGE, + key: `${ONYXKEYS.COLLECTION.POLICY}${policyID}`, + value: { + areReportFieldsEnabled: false, + pendingFields: { + areReportFieldsEnabled: CONST.RED_BRICK_ROAD_PENDING_ACTION.UPDATE, + }, + }, + }); + + successData.push({ + onyxMethod: Onyx.METHOD.MERGE, + key: `${ONYXKEYS.COLLECTION.POLICY}${policyID}`, + value: { + pendingFields: { + areReportFieldsEnabled: null, + }, + }, + }); + + failureData.push({ + onyxMethod: Onyx.METHOD.MERGE, + key: `${ONYXKEYS.COLLECTION.POLICY}${policyID}`, + value: { + areReportFieldsEnabled: policy?.areReportFieldsEnabled, + pendingFields: { + areReportFieldsEnabled: null, + }, + }, + }); + } + const parameters: RemovePolicyConnectionParams = { policyID, connectionName, }; - API.write(WRITE_COMMANDS.REMOVE_POLICY_CONNECTION, parameters, {optimisticData}); + API.write(WRITE_COMMANDS.REMOVE_POLICY_CONNECTION, parameters, {optimisticData, successData, failureData}); } function createPendingFields( From b38b67bed71034c1dd842adca7ce3e81efeab452 Mon Sep 17 00:00:00 2001 From: mkzie2 Date: Wed, 25 Dec 2024 16:21:20 +0700 Subject: [PATCH 2/4] use constants --- src/libs/actions/connections/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libs/actions/connections/index.ts b/src/libs/actions/connections/index.ts index 218b936880d3..9c5b0d4f4552 100644 --- a/src/libs/actions/connections/index.ts +++ b/src/libs/actions/connections/index.ts @@ -46,7 +46,7 @@ function removePolicyConnection(policyID: string, connectionName: PolicyConnecti const successData: OnyxUpdate[] = []; const failureData: OnyxUpdate[] = []; const policy = PolicyUtils.getPolicy(policyID); - if (PolicyUtils.isCollectPolicy(policy) && ['quickbooksOnline', 'xero'].includes(connectionName)) { + if (PolicyUtils.isCollectPolicy(policy) && ([CONST.POLICY.CONNECTIONS.NAME.QBO, CONST.POLICY.CONNECTIONS.NAME.XERO] as PolicyConnectionName[]).includes(connectionName)) { optimisticData.push({ onyxMethod: Onyx.METHOD.MERGE, key: `${ONYXKEYS.COLLECTION.POLICY}${policyID}`, From ce41955d7334271b99e5aa7ff48491da3062204f Mon Sep 17 00:00:00 2001 From: mkzie2 Date: Fri, 27 Dec 2024 14:13:27 +0700 Subject: [PATCH 3/4] Update src/libs/actions/connections/index.ts Co-authored-by: Gandalf --- src/libs/actions/connections/index.ts | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/libs/actions/connections/index.ts b/src/libs/actions/connections/index.ts index 9c5b0d4f4552..f381643ec07b 100644 --- a/src/libs/actions/connections/index.ts +++ b/src/libs/actions/connections/index.ts @@ -46,7 +46,12 @@ function removePolicyConnection(policyID: string, connectionName: PolicyConnecti const successData: OnyxUpdate[] = []; const failureData: OnyxUpdate[] = []; const policy = PolicyUtils.getPolicy(policyID); - if (PolicyUtils.isCollectPolicy(policy) && ([CONST.POLICY.CONNECTIONS.NAME.QBO, CONST.POLICY.CONNECTIONS.NAME.XERO] as PolicyConnectionName[]).includes(connectionName)) { +const supportedConnections: PolicyConnectionName[] = [ + CONST.POLICY.CONNECTIONS.NAME.QBO, + CONST.POLICY.CONNECTIONS.NAME.XERO, +]; + +if (PolicyUtils.isCollectPolicy(policy) && supportedConnections.includes(connectionName)) { optimisticData.push({ onyxMethod: Onyx.METHOD.MERGE, key: `${ONYXKEYS.COLLECTION.POLICY}${policyID}`, From eebb7c6176dd7074bb9a5ee18be691c3167acd07 Mon Sep 17 00:00:00 2001 From: mkzie2 Date: Fri, 27 Dec 2024 14:18:29 +0700 Subject: [PATCH 4/4] fix lint --- src/libs/actions/connections/index.ts | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/src/libs/actions/connections/index.ts b/src/libs/actions/connections/index.ts index f381643ec07b..9087b9fb00c8 100644 --- a/src/libs/actions/connections/index.ts +++ b/src/libs/actions/connections/index.ts @@ -46,12 +46,9 @@ function removePolicyConnection(policyID: string, connectionName: PolicyConnecti const successData: OnyxUpdate[] = []; const failureData: OnyxUpdate[] = []; const policy = PolicyUtils.getPolicy(policyID); -const supportedConnections: PolicyConnectionName[] = [ - CONST.POLICY.CONNECTIONS.NAME.QBO, - CONST.POLICY.CONNECTIONS.NAME.XERO, -]; + const supportedConnections: PolicyConnectionName[] = [CONST.POLICY.CONNECTIONS.NAME.QBO, CONST.POLICY.CONNECTIONS.NAME.XERO]; -if (PolicyUtils.isCollectPolicy(policy) && supportedConnections.includes(connectionName)) { + if (PolicyUtils.isCollectPolicy(policy) && supportedConnections.includes(connectionName)) { optimisticData.push({ onyxMethod: Onyx.METHOD.MERGE, key: `${ONYXKEYS.COLLECTION.POLICY}${policyID}`,