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 (