diff --git a/src/CONST.ts b/src/CONST.ts index 6909df5f0ed4..0891f527702e 100755 --- a/src/CONST.ts +++ b/src/CONST.ts @@ -5410,6 +5410,14 @@ const CONST = { description: 'workspace.upgrade.glAndPayrollCodes.description' as const, icon: 'FolderOpen', }, + taxCodes: { + id: 'taxCodes' as const, + alias: 'tax-codes', + name: 'Tax codes', + title: 'workspace.upgrade.taxCodes.title' as const, + description: 'workspace.upgrade.taxCodes.description' as const, + icon: 'Coins', + }, }; }, REPORT_FIELD_TYPES: { diff --git a/src/languages/en.ts b/src/languages/en.ts index bc75915e8c61..56d5a50af043 100755 --- a/src/languages/en.ts +++ b/src/languages/en.ts @@ -3438,6 +3438,11 @@ export default { description: `Add GL & Payroll codes to your categories for easy export of expenses to your accounting and payroll systems.`, onlyAvailableOnPlan: 'GL & Payroll codes are only available on the Control plan, starting at ', }, + taxCodes: { + title: 'Tax codes', + description: `Add tax codes to your taxes for easy export of expenses to your accounting and payroll systems.`, + onlyAvailableOnPlan: 'Tax codes are only available on the Control plan, starting at ', + }, pricing: { amount: '$9 ', perActiveMember: 'per active member per month.', diff --git a/src/languages/es.ts b/src/languages/es.ts index 43231578f94b..df2c062818c1 100644 --- a/src/languages/es.ts +++ b/src/languages/es.ts @@ -3494,6 +3494,11 @@ export default { description: `Añada códigos de libro mayor y nómina a sus categorías para exportar fácilmente los gastos a sus sistemas de contabilidad y nómina.`, onlyAvailableOnPlan: 'Los códigos de libro mayor y nómina solo están disponibles en el plan Control, a partir de ', }, + taxCodes: { + title: 'Código de impuesto', + description: `Añada código de impuesto mayor a sus categorías para exportar fácilmente los gastos a sus sistemas de contabilidad y nómina.`, + onlyAvailableOnPlan: 'Los código de impuesto mayor solo están disponibles en el plan Control, a partir de ', + }, note: { upgradeWorkspace: 'Mejore su espacio de trabajo para acceder a esta función, o', learnMore: 'más información', diff --git a/src/pages/workspace/categories/CategorySettingsPage.tsx b/src/pages/workspace/categories/CategorySettingsPage.tsx index 2732a928b6a4..d1d605759d36 100644 --- a/src/pages/workspace/categories/CategorySettingsPage.tsx +++ b/src/pages/workspace/categories/CategorySettingsPage.tsx @@ -41,7 +41,6 @@ function CategorySettingsPage({route, policyCategories, navigation}: CategorySet const [deleteCategoryConfirmModalVisible, setDeleteCategoryConfirmModalVisible] = useState(false); const backTo = route.params?.backTo; const [policy] = useOnyx(`${ONYXKEYS.COLLECTION.POLICY}${route.params.policyID}`); - const shouldDisablePayrollCode = !isControlPolicy(policy); const policyCategory = policyCategories?.[route.params.categoryName] ?? Object.values(policyCategories ?? {}).find((category) => category.previousCategoryName === route.params.categoryName); @@ -131,7 +130,7 @@ function CategorySettingsPage({route, policyCategories, navigation}: CategorySet @@ -162,7 +161,6 @@ function CategorySettingsPage({route, policyCategories, navigation}: CategorySet Navigation.navigate(ROUTES.WORKSPACE_CATEGORY_PAYROLL_CODE.getRoute(route.params.policyID, policyCategory.name)); }} shouldShowRightIcon - disabled={shouldDisablePayrollCode} /> {!isThereAnyAccountingConnection && ( diff --git a/src/pages/workspace/tags/TagSettingsPage.tsx b/src/pages/workspace/tags/TagSettingsPage.tsx index d73127593d37..2a03c7c8a275 100644 --- a/src/pages/workspace/tags/TagSettingsPage.tsx +++ b/src/pages/workspace/tags/TagSettingsPage.tsx @@ -130,7 +130,7 @@ function TagSettingsPage({route, policyTags, navigation}: TagSettingsPageProps) diff --git a/src/pages/workspace/taxes/WorkspaceEditTaxPage.tsx b/src/pages/workspace/taxes/WorkspaceEditTaxPage.tsx index c6217b999685..bcf20bfff207 100644 --- a/src/pages/workspace/taxes/WorkspaceEditTaxPage.tsx +++ b/src/pages/workspace/taxes/WorkspaceEditTaxPage.tsx @@ -40,7 +40,6 @@ function WorkspaceEditTaxPage({ const [isDeleteModalVisible, setIsDeleteModalVisible] = useState(false); const canEditTaxRate = policy && PolicyUtils.canEditTaxRate(policy, taxID); const hasAccountingConnections = PolicyUtils.hasAccountingConnections(policy); - const canEditTaxCode = PolicyUtils.isControlPolicy(policy); const shouldShowDeleteMenuItem = canEditTaxRate && !hasAccountingConnections; @@ -70,6 +69,7 @@ function WorkspaceEditTaxPage({ if (!currentTaxRate) { return ; } + const taxCodeToShow = PolicyUtils.isControlPolicy(policy) ? taxID : ''; return ( Navigation.navigate(ROUTES.WORKSPACE_TAX_CODE.getRoute(`${policyID}`, taxID))} + onPress={() => { + if (!PolicyUtils.isControlPolicy(policy)) { + Navigation.navigate(ROUTES.WORKSPACE_UPGRADE.getRoute(policyID, CONST.UPGRADE_FEATURE_INTRO_MAPPING.taxCodes.alias)); + return; + } + Navigation.navigate(ROUTES.WORKSPACE_TAX_CODE.getRoute(`${policyID}`, taxID)); + }} /> {shouldShowDeleteMenuItem && ( diff --git a/src/pages/workspace/taxes/WorkspaceTaxCodePage.tsx b/src/pages/workspace/taxes/WorkspaceTaxCodePage.tsx index caedef806695..d32961a9d78b 100644 --- a/src/pages/workspace/taxes/WorkspaceTaxCodePage.tsx +++ b/src/pages/workspace/taxes/WorkspaceTaxCodePage.tsx @@ -51,9 +51,14 @@ function WorkspaceTaxCodePage({route}: WorkspaceTaxCodePageProps) { if (!policy) { return {}; } + const newTaxCode = values.taxCode.trim(); + if (newTaxCode === currentTaxCode) { + return {}; + } + return validateTaxCode(policy, values); }, - [policy], + [currentTaxCode, policy], ); return (