From eaac664cb24b6110b834607f221f79e4d6966699 Mon Sep 17 00:00:00 2001 From: "Benjamin Limpich (via MelvinBot)" Date: Tue, 14 Jul 2026 16:28:09 +0000 Subject: [PATCH 1/3] Show Consolidated Travel Billing copy when deleting a workspace blocked by CTB Co-authored-by: Benjamin Limpich --- src/languages/de.ts | 1 + src/languages/en.ts | 1 + src/languages/es.ts | 1 + src/languages/fr.ts | 1 + src/languages/it.ts | 1 + src/languages/ja.ts | 1 + src/languages/nl.ts | 1 + src/languages/pl.ts | 1 + src/languages/pt-BR.ts | 1 + src/languages/zh-hans.ts | 1 + .../deleteWorkspace/DeleteWorkspaceFlow.tsx | 13 +++++++++---- 11 files changed, 19 insertions(+), 4 deletions(-) diff --git a/src/languages/de.ts b/src/languages/de.ts index 6b8c6f2eadb6..12d74fbe5d67 100644 --- a/src/languages/de.ts +++ b/src/languages/de.ts @@ -4478,6 +4478,7 @@ ${amount} für ${merchant} – ${date}`, deleteConfirmation: 'Möchten Sie diesen Workspace wirklich löschen?', deleteWithCardsConfirmation: 'Möchtest du diesen Workspace wirklich löschen? Dadurch werden alle Kartenfeeds und zugewiesenen Karten entfernt.', deleteOpenExpensifyCardsError: 'Ihre Firma hat noch Expensify Karten. Bitte wenden Sie sich an Concierge, um sie zu entfernen.', + deleteTravelInvoicingError: 'Ihre Firma hat noch die Konsolidierte Reiseabrechnung aktiviert.', outstandingBalanceWarning: 'Sie haben einen offenen Saldo, der beglichen werden muss, bevor Sie Ihren letzten Workspace löschen können. Bitte gehen Sie zu Ihren Abonnementeinstellungen, um die Zahlung abzuschließen.', settleBalance: 'Zu Abo wechseln', diff --git a/src/languages/en.ts b/src/languages/en.ts index 216a3d60c119..63fc5eeb1fe7 100644 --- a/src/languages/en.ts +++ b/src/languages/en.ts @@ -4586,6 +4586,7 @@ const translations = { deleteConfirmation: 'Are you sure you want to delete this workspace?', deleteWithCardsConfirmation: 'Are you sure you want to delete this workspace? This will remove all card feeds and assigned cards.', deleteOpenExpensifyCardsError: 'Your company still has Expensify Cards. Please reach out to Concierge to remove them.', + deleteTravelInvoicingError: 'Your company still has Consolidated Travel Billing enabled.', outstandingBalanceWarning: 'You have an outstanding balance that must be settled before deleting your last workspace. Please go to your subscription settings to resolve the payment.', settleBalance: 'Go to subscription', diff --git a/src/languages/es.ts b/src/languages/es.ts index 9bf1359733ee..1dc02e64936e 100644 --- a/src/languages/es.ts +++ b/src/languages/es.ts @@ -4357,6 +4357,7 @@ ${amount} para ${merchant} - ${date}`, deleteConfirmation: '¿Estás seguro de que quieres eliminar este espacio de trabajo?', deleteWithCardsConfirmation: '¿Estás seguro de que quieres eliminar este espacio de trabajo? Se eliminarán todos los datos de las tarjetas y las tarjetas asignadas.', deleteOpenExpensifyCardsError: 'Tu empresa todavía tiene Tarjetas Expensify. Por favor, contacta con Concierge para eliminarlas.', + deleteTravelInvoicingError: 'Tu empresa todavía tiene habilitada la Facturación consolidada de viajes.', outstandingBalanceWarning: 'Tienes un saldo pendiente que debe liquidarse antes de eliminar tu último espacio de trabajo. Por favor, ve a la configuración de tu suscripción para resolver el pago.', settleBalance: 'Ir a Suscripción', diff --git a/src/languages/fr.ts b/src/languages/fr.ts index 2f9ae12fa815..5c3bf99acd84 100644 --- a/src/languages/fr.ts +++ b/src/languages/fr.ts @@ -4488,6 +4488,7 @@ ${amount} pour ${merchant} - ${date}`, deleteConfirmation: 'Voulez-vous vraiment supprimer cet espace de travail ?', deleteWithCardsConfirmation: 'Voulez-vous vraiment supprimer cet espace de travail ? Cela supprimera tous les flux de cartes et les cartes assignées.', deleteOpenExpensifyCardsError: 'Votre entreprise a encore des Cartes Expensify. Veuillez contacter Concierge pour les supprimer.', + deleteTravelInvoicingError: 'Votre entreprise a encore la Facturation de voyages consolidée activée.', outstandingBalanceWarning: 'Vous avez un solde impayé qui doit être réglé avant de supprimer votre dernier espace de travail. Veuillez accéder à vos paramètres d’abonnement pour résoudre le paiement.', settleBalance: 'Aller à l’abonnement', diff --git a/src/languages/it.ts b/src/languages/it.ts index 6e49ff0d79c0..4373c7e2fe53 100644 --- a/src/languages/it.ts +++ b/src/languages/it.ts @@ -4463,6 +4463,7 @@ ${amount} per ${merchant} - ${date}`, deleteConfirmation: 'Sei sicuro di voler eliminare questo spazio di lavoro?', deleteWithCardsConfirmation: 'Sei sicuro di voler eliminare questo spazio di lavoro? Questa azione rimuoverà tutti i feed delle carte e le carte assegnate.', deleteOpenExpensifyCardsError: 'La tua azienda ha ancora delle Carte Expensify. Per favore, contatta Concierge per rimuoverle.', + deleteTravelInvoicingError: 'La tua azienda ha ancora la Fatturazione viaggio consolidata abilitata.', outstandingBalanceWarning: 'Hai un saldo in sospeso che deve essere saldato prima di eliminare il tuo ultimo workspace. Vai alle impostazioni dell’abbonamento per risolvere il pagamento.', settleBalance: 'Vai all’abbonamento', diff --git a/src/languages/ja.ts b/src/languages/ja.ts index 2bde735c0fe4..df02cd884719 100644 --- a/src/languages/ja.ts +++ b/src/languages/ja.ts @@ -4427,6 +4427,7 @@ ${integrationName === CONST.ONBOARDING_ACCOUNTING_MAPPING.other ? 'あなたの' deleteConfirmation: 'このワークスペースを削除してもよろしいですか?', deleteWithCardsConfirmation: 'このワークスペースを削除してもよろしいですか? すべてのカードフィードと割り当て済みカードが削除されます。', deleteOpenExpensifyCardsError: '御社にはまだ Expensify カードが残っています。削除するには、Concierge までお問い合わせください。', + deleteTravelInvoicingError: '御社ではまだ出張費の一括請求が有効になっています。', outstandingBalanceWarning: '最後のワークスペースを削除する前に精算する必要がある未払残高があります。支払いを解決するには、サブスクリプション設定に移動してください。', settleBalance: 'サブスクリプションに移動', unavailable: '利用できないワークスペース', diff --git a/src/languages/nl.ts b/src/languages/nl.ts index 3bf61f9c238e..edef2f0c3d07 100644 --- a/src/languages/nl.ts +++ b/src/languages/nl.ts @@ -4458,6 +4458,7 @@ ${amount} voor ${merchant} - ${date}`, deleteConfirmation: 'Weet je zeker dat je deze werkruimte wilt verwijderen?', deleteWithCardsConfirmation: 'Weet je zeker dat je deze werkruimte wilt verwijderen? Hiermee worden alle kaartfeeds en toegewezen kaarten verwijderd.', deleteOpenExpensifyCardsError: 'Je bedrijf heeft nog Expensify Kaarten. Neem contact op met Concierge om ze te verwijderen.', + deleteTravelInvoicingError: 'Je bedrijf heeft nog Geconsolideerde reisfacturatie ingeschakeld.', outstandingBalanceWarning: 'Je hebt een openstaand saldo dat moet worden vereffend voordat je je laatste werkruimte kunt verwijderen. Ga naar je abonnementsinstellingen om de betaling af te ronden.', settleBalance: 'Ga naar abonnement', diff --git a/src/languages/pl.ts b/src/languages/pl.ts index b4c34c53be25..0d0101679647 100644 --- a/src/languages/pl.ts +++ b/src/languages/pl.ts @@ -4444,6 +4444,7 @@ ${amount} dla ${merchant} - ${date}`, deleteConfirmation: 'Czy na pewno chcesz usunąć tę przestrzeń roboczą?', deleteWithCardsConfirmation: 'Na pewno chcesz usunąć tę przestrzeń roboczą? Spowoduje to usunięcie wszystkich źródeł kart i przypisanych kart.', deleteOpenExpensifyCardsError: 'Twoja firma wciąż ma Karty Expensify. Prosimy, skontaktuj się z Concierge, aby je usunąć.', + deleteTravelInvoicingError: 'Twoja firma nadal ma włączone Zbiorcze rozliczanie podróży.', outstandingBalanceWarning: 'Masz zaległe saldo, które musi zostać uregulowane przed usunięciem ostatniego miejsca pracy. Przejdź do ustawień subskrypcji, aby uregulować płatność.', settleBalance: 'Przejdź do subskrypcji', diff --git a/src/languages/pt-BR.ts b/src/languages/pt-BR.ts index 429816f1f138..ef4e5b8d0d1f 100644 --- a/src/languages/pt-BR.ts +++ b/src/languages/pt-BR.ts @@ -4448,6 +4448,7 @@ ${amount} para ${merchant} - ${date}`, deleteConfirmation: 'Tem certeza de que deseja excluir este workspace?', deleteWithCardsConfirmation: 'Tem certeza de que deseja excluir este workspace? Isso removerá todos os feeds de cartão e cartões atribuídos.', deleteOpenExpensifyCardsError: 'Sua empresa ainda tem Cartões Expensify. Por favor, fale com o Concierge para removê-los.', + deleteTravelInvoicingError: 'Sua empresa ainda tem o Faturamento de Viagens Consolidado ativado.', outstandingBalanceWarning: 'Você tem um saldo pendente que precisa ser quitado antes de excluir seu último espaço de trabalho. Acesse as configurações de assinatura para resolver o pagamento.', settleBalance: 'Ir para a assinatura', diff --git a/src/languages/zh-hans.ts b/src/languages/zh-hans.ts index 286066528d33..bc8887b1c944 100644 --- a/src/languages/zh-hans.ts +++ b/src/languages/zh-hans.ts @@ -4336,6 +4336,7 @@ ${amount},商户:${merchant} - 日期:${date}`, deleteConfirmation: '确定要删除此工作区吗?', deleteWithCardsConfirmation: '确定要删除此工作区吗?这将移除所有卡片数据源和已分配的卡片。', deleteOpenExpensifyCardsError: '您的公司仍在使用 Expensify 卡。请联系 Concierge以停用它们。', + deleteTravelInvoicingError: '您的公司仍启用了合并差旅账单。', outstandingBalanceWarning: '您有一笔未结清的余额,必须在删除最后一个工作区之前结清。请前往订阅设置以解决付款问题。', settleBalance: '前往订阅', unavailable: '工作区不可用', diff --git a/src/pages/workspace/deleteWorkspace/DeleteWorkspaceFlow.tsx b/src/pages/workspace/deleteWorkspace/DeleteWorkspaceFlow.tsx index e07c603f9c35..bf4ec4baf773 100644 --- a/src/pages/workspace/deleteWorkspace/DeleteWorkspaceFlow.tsx +++ b/src/pages/workspace/deleteWorkspace/DeleteWorkspaceFlow.tsx @@ -13,12 +13,13 @@ import useThemeStyles from '@hooks/useThemeStyles'; import useTransactionViolationOfWorkspace from '@hooks/useTransactionViolationOfWorkspace'; import {calculateBillNewDot, deleteWorkspace, dismissWorkspaceError} from '@libs/actions/Policy/Policy'; -import {filterInactiveCards} from '@libs/CardUtils'; +import {filterInactiveCards, getCardSettings} from '@libs/CardUtils'; import {getLatestErrorMessage} from '@libs/ErrorUtils'; import createDynamicRoute from '@libs/Navigation/helpers/dynamicRoutesUtils/createDynamicRoute'; import Navigation from '@libs/Navigation/Navigation'; import {isPendingDeletePolicy, shouldBlockWorkspaceDeletionForInvoicifyUser} from '@libs/PolicyUtils'; import {isSubscriptionTypeOfInvoicing} from '@libs/SubscriptionUtils'; +import {getIsTravelInvoicingEnabled, getTravelInvoicingCardSettingsKey} from '@libs/TravelInvoicingUtils'; import CONST from '@src/CONST'; import ONYXKEYS from '@src/ONYXKEYS'; @@ -83,6 +84,7 @@ function DeleteWorkspaceFlow({policyID, onDismiss, onDeleteComplete}: DeleteWork const [cardsList, cardsListResult] = useOnyx(`${ONYXKEYS.COLLECTION.WORKSPACE_CARDS_LIST}${workspaceAccountID}_${CONST.EXPENSIFY_CARD.BANK}`, { selector: filterInactiveCards, }); + const [travelCardSettings] = useOnyx(getTravelInvoicingCardSettingsKey(workspaceAccountID)); const {reportsToArchive, transactionViolations, reportsResult, transactionsResult, transactionViolationsResult} = useTransactionViolationOfWorkspace(policyID); const [accountIDToLogin] = useOnyx(ONYXKEYS.PERSONAL_DETAILS_LIST, {selector: accountIDToLoginSelector(reportsToArchive)}); @@ -104,6 +106,7 @@ function DeleteWorkspaceFlow({policyID, onDismiss, onDeleteComplete}: DeleteWork // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing ((policy?.areExpensifyCardsEnabled || policy?.areCompanyCardsEnabled) && policy?.policyAccountID); const hasExpensifyCardsEnabledOnWorkspace = !!policy?.areExpensifyCardsEnabled && !!policy?.policyAccountID; + const hasTravelInvoicingEnabledOnWorkspace = getIsTravelInvoicingEnabled(getCardSettings(travelCardSettings, CONST.TRAVEL.PROGRAM_TRAVEL_US)); const hasDeleteWorkspaceExpensifyCardsError = !!hasExpensifyCardsEnabledOnWorkspace && !isEmptyObject(cardsList) && !!isOffline; const policyLatestErrorMessage = getLatestErrorMessage(policy); @@ -133,7 +136,8 @@ function DeleteWorkspaceFlow({policyID, onDismiss, onDeleteComplete}: DeleteWork prompt: ( { closeModal(); dismissDeleteWorkspaceFlow(); @@ -148,7 +152,7 @@ function DeleteWorkspaceFlow({policyID, onDismiss, onDeleteComplete}: DeleteWork }).then(() => { dismissDeleteWorkspaceFlow(); }); - }, [closeModal, dismissDeleteWorkspaceFlow, isFocused, showConfirmModal, styles.flexRow, styles.renderHTML, translate]); + }, [closeModal, dismissDeleteWorkspaceFlow, hasExpensifyCardsEnabledOnWorkspace, isFocused, showConfirmModal, styles.flexRow, styles.renderHTML, translate]); const showGenericDeleteWorkspaceErrorModal = useCallback( (errorMessage: string) => { @@ -260,7 +264,7 @@ function DeleteWorkspaceFlow({policyID, onDismiss, onDeleteComplete}: DeleteWork closeModal(); - if (policyLatestErrorMessage && hasExpensifyCardsEnabledOnWorkspace) { + if (policyLatestErrorMessage && (hasExpensifyCardsEnabledOnWorkspace || hasTravelInvoicingEnabledOnWorkspace)) { showDeleteWorkspaceErrorModal(); return; } @@ -278,6 +282,7 @@ function DeleteWorkspaceFlow({policyID, onDismiss, onDeleteComplete}: DeleteWork prevIsPendingDelete, policyLatestErrorMessage, hasExpensifyCardsEnabledOnWorkspace, + hasTravelInvoicingEnabledOnWorkspace, closeModal, onDeleteComplete, onDismiss, From f7f13eb66663d46523ff0d86d1b7757ca508d3b0 Mon Sep 17 00:00:00 2001 From: "Benjamin Limpich (via MelvinBot)" Date: Tue, 14 Jul 2026 17:07:15 +0000 Subject: [PATCH 2/3] Apply Polyglot Parrot translation updates for deleteTravelInvoicingError Co-authored-by: Benjamin Limpich --- src/languages/de.ts | 2 +- src/languages/es.ts | 2 +- src/languages/fr.ts | 2 +- src/languages/it.ts | 2 +- src/languages/ja.ts | 2 +- src/languages/nl.ts | 2 +- src/languages/pl.ts | 2 +- src/languages/zh-hans.ts | 2 +- 8 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/languages/de.ts b/src/languages/de.ts index 12d74fbe5d67..fff51333812c 100644 --- a/src/languages/de.ts +++ b/src/languages/de.ts @@ -4478,7 +4478,7 @@ ${amount} für ${merchant} – ${date}`, deleteConfirmation: 'Möchten Sie diesen Workspace wirklich löschen?', deleteWithCardsConfirmation: 'Möchtest du diesen Workspace wirklich löschen? Dadurch werden alle Kartenfeeds und zugewiesenen Karten entfernt.', deleteOpenExpensifyCardsError: 'Ihre Firma hat noch Expensify Karten. Bitte wenden Sie sich an Concierge, um sie zu entfernen.', - deleteTravelInvoicingError: 'Ihre Firma hat noch die Konsolidierte Reiseabrechnung aktiviert.', + deleteTravelInvoicingError: 'Ihr Unternehmen hat die Konsolidierte Reiseabrechnung noch aktiviert.', outstandingBalanceWarning: 'Sie haben einen offenen Saldo, der beglichen werden muss, bevor Sie Ihren letzten Workspace löschen können. Bitte gehen Sie zu Ihren Abonnementeinstellungen, um die Zahlung abzuschließen.', settleBalance: 'Zu Abo wechseln', diff --git a/src/languages/es.ts b/src/languages/es.ts index 1dc02e64936e..a9ec2e306676 100644 --- a/src/languages/es.ts +++ b/src/languages/es.ts @@ -4357,7 +4357,7 @@ ${amount} para ${merchant} - ${date}`, deleteConfirmation: '¿Estás seguro de que quieres eliminar este espacio de trabajo?', deleteWithCardsConfirmation: '¿Estás seguro de que quieres eliminar este espacio de trabajo? Se eliminarán todos los datos de las tarjetas y las tarjetas asignadas.', deleteOpenExpensifyCardsError: 'Tu empresa todavía tiene Tarjetas Expensify. Por favor, contacta con Concierge para eliminarlas.', - deleteTravelInvoicingError: 'Tu empresa todavía tiene habilitada la Facturación consolidada de viajes.', + deleteTravelInvoicingError: 'Tu empresa todavía tiene habilitada la Facturación Consolidada de Viajes.', outstandingBalanceWarning: 'Tienes un saldo pendiente que debe liquidarse antes de eliminar tu último espacio de trabajo. Por favor, ve a la configuración de tu suscripción para resolver el pago.', settleBalance: 'Ir a Suscripción', diff --git a/src/languages/fr.ts b/src/languages/fr.ts index 5c3bf99acd84..434af314bec8 100644 --- a/src/languages/fr.ts +++ b/src/languages/fr.ts @@ -4488,7 +4488,7 @@ ${amount} pour ${merchant} - ${date}`, deleteConfirmation: 'Voulez-vous vraiment supprimer cet espace de travail ?', deleteWithCardsConfirmation: 'Voulez-vous vraiment supprimer cet espace de travail ? Cela supprimera tous les flux de cartes et les cartes assignées.', deleteOpenExpensifyCardsError: 'Votre entreprise a encore des Cartes Expensify. Veuillez contacter Concierge pour les supprimer.', - deleteTravelInvoicingError: 'Votre entreprise a encore la Facturation de voyages consolidée activée.', + deleteTravelInvoicingError: 'Votre entreprise a toujours la facturation de voyages consolidée activée.', outstandingBalanceWarning: 'Vous avez un solde impayé qui doit être réglé avant de supprimer votre dernier espace de travail. Veuillez accéder à vos paramètres d’abonnement pour résoudre le paiement.', settleBalance: 'Aller à l’abonnement', diff --git a/src/languages/it.ts b/src/languages/it.ts index 4373c7e2fe53..a6187102ef20 100644 --- a/src/languages/it.ts +++ b/src/languages/it.ts @@ -4463,7 +4463,7 @@ ${amount} per ${merchant} - ${date}`, deleteConfirmation: 'Sei sicuro di voler eliminare questo spazio di lavoro?', deleteWithCardsConfirmation: 'Sei sicuro di voler eliminare questo spazio di lavoro? Questa azione rimuoverà tutti i feed delle carte e le carte assegnate.', deleteOpenExpensifyCardsError: 'La tua azienda ha ancora delle Carte Expensify. Per favore, contatta Concierge per rimuoverle.', - deleteTravelInvoicingError: 'La tua azienda ha ancora la Fatturazione viaggio consolidata abilitata.', + deleteTravelInvoicingError: 'La tua azienda ha ancora la Fatturazione Viaggi Consolidata attivata.', outstandingBalanceWarning: 'Hai un saldo in sospeso che deve essere saldato prima di eliminare il tuo ultimo workspace. Vai alle impostazioni dell’abbonamento per risolvere il pagamento.', settleBalance: 'Vai all’abbonamento', diff --git a/src/languages/ja.ts b/src/languages/ja.ts index df02cd884719..c63e7d375f53 100644 --- a/src/languages/ja.ts +++ b/src/languages/ja.ts @@ -4427,7 +4427,7 @@ ${integrationName === CONST.ONBOARDING_ACCOUNTING_MAPPING.other ? 'あなたの' deleteConfirmation: 'このワークスペースを削除してもよろしいですか?', deleteWithCardsConfirmation: 'このワークスペースを削除してもよろしいですか? すべてのカードフィードと割り当て済みカードが削除されます。', deleteOpenExpensifyCardsError: '御社にはまだ Expensify カードが残っています。削除するには、Concierge までお問い合わせください。', - deleteTravelInvoicingError: '御社ではまだ出張費の一括請求が有効になっています。', + deleteTravelInvoicingError: 'お客様の会社では、統合トラベル請求がまだ有効になっています。', outstandingBalanceWarning: '最後のワークスペースを削除する前に精算する必要がある未払残高があります。支払いを解決するには、サブスクリプション設定に移動してください。', settleBalance: 'サブスクリプションに移動', unavailable: '利用できないワークスペース', diff --git a/src/languages/nl.ts b/src/languages/nl.ts index edef2f0c3d07..8f6d2f0af721 100644 --- a/src/languages/nl.ts +++ b/src/languages/nl.ts @@ -4458,7 +4458,7 @@ ${amount} voor ${merchant} - ${date}`, deleteConfirmation: 'Weet je zeker dat je deze werkruimte wilt verwijderen?', deleteWithCardsConfirmation: 'Weet je zeker dat je deze werkruimte wilt verwijderen? Hiermee worden alle kaartfeeds en toegewezen kaarten verwijderd.', deleteOpenExpensifyCardsError: 'Je bedrijf heeft nog Expensify Kaarten. Neem contact op met Concierge om ze te verwijderen.', - deleteTravelInvoicingError: 'Je bedrijf heeft nog Geconsolideerde reisfacturatie ingeschakeld.', + deleteTravelInvoicingError: 'Je bedrijf heeft nog steeds Geconsolideerde Reisfacturering ingeschakeld.', outstandingBalanceWarning: 'Je hebt een openstaand saldo dat moet worden vereffend voordat je je laatste werkruimte kunt verwijderen. Ga naar je abonnementsinstellingen om de betaling af te ronden.', settleBalance: 'Ga naar abonnement', diff --git a/src/languages/pl.ts b/src/languages/pl.ts index 0d0101679647..32d0572a8403 100644 --- a/src/languages/pl.ts +++ b/src/languages/pl.ts @@ -4444,7 +4444,7 @@ ${amount} dla ${merchant} - ${date}`, deleteConfirmation: 'Czy na pewno chcesz usunąć tę przestrzeń roboczą?', deleteWithCardsConfirmation: 'Na pewno chcesz usunąć tę przestrzeń roboczą? Spowoduje to usunięcie wszystkich źródeł kart i przypisanych kart.', deleteOpenExpensifyCardsError: 'Twoja firma wciąż ma Karty Expensify. Prosimy, skontaktuj się z Concierge, aby je usunąć.', - deleteTravelInvoicingError: 'Twoja firma nadal ma włączone Zbiorcze rozliczanie podróży.', + deleteTravelInvoicingError: 'Twoja firma nadal ma włączone Skonsolidowane Rozliczanie Podróży.', outstandingBalanceWarning: 'Masz zaległe saldo, które musi zostać uregulowane przed usunięciem ostatniego miejsca pracy. Przejdź do ustawień subskrypcji, aby uregulować płatność.', settleBalance: 'Przejdź do subskrypcji', diff --git a/src/languages/zh-hans.ts b/src/languages/zh-hans.ts index bc8887b1c944..43e4239bce70 100644 --- a/src/languages/zh-hans.ts +++ b/src/languages/zh-hans.ts @@ -4336,7 +4336,7 @@ ${amount},商户:${merchant} - 日期:${date}`, deleteConfirmation: '确定要删除此工作区吗?', deleteWithCardsConfirmation: '确定要删除此工作区吗?这将移除所有卡片数据源和已分配的卡片。', deleteOpenExpensifyCardsError: '您的公司仍在使用 Expensify 卡。请联系 Concierge以停用它们。', - deleteTravelInvoicingError: '您的公司仍启用了合并差旅账单。', + deleteTravelInvoicingError: '您的公司仍然启用了合并差旅账单。', outstandingBalanceWarning: '您有一笔未结清的余额,必须在删除最后一个工作区之前结清。请前往订阅设置以解决付款问题。', settleBalance: '前往订阅', unavailable: '工作区不可用', From 3349a007c698ed05d5a4ae7a92a2dd2490947adb Mon Sep 17 00:00:00 2001 From: "{\"message\":\"Not Found\",\"documentation_url\":\"https://docs.github.com/rest/issues/comments#get-an-issue-comment\",\"status\":\"404\"} (via MelvinBot)" Date: Tue, 14 Jul 2026 18:43:12 +0000 Subject: [PATCH 3/3] Gate delete flow on travel card settings loading state Co-authored-by: {"message":"Not Found","documentation_url":"https://docs.github.com/rest/issues/comments#get-an-issue-comment","status":"404"} <{"message":"Not Found","documentation_url":"https://docs.github.com/rest/issues/comments#get-an-issue-comment","status":"404"}@users.noreply.github.com> --- src/pages/workspace/deleteWorkspace/DeleteWorkspaceFlow.tsx | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/pages/workspace/deleteWorkspace/DeleteWorkspaceFlow.tsx b/src/pages/workspace/deleteWorkspace/DeleteWorkspaceFlow.tsx index bf4ec4baf773..d4d5af562d65 100644 --- a/src/pages/workspace/deleteWorkspace/DeleteWorkspaceFlow.tsx +++ b/src/pages/workspace/deleteWorkspace/DeleteWorkspaceFlow.tsx @@ -84,7 +84,7 @@ function DeleteWorkspaceFlow({policyID, onDismiss, onDeleteComplete}: DeleteWork const [cardsList, cardsListResult] = useOnyx(`${ONYXKEYS.COLLECTION.WORKSPACE_CARDS_LIST}${workspaceAccountID}_${CONST.EXPENSIFY_CARD.BANK}`, { selector: filterInactiveCards, }); - const [travelCardSettings] = useOnyx(getTravelInvoicingCardSettingsKey(workspaceAccountID)); + const [travelCardSettings, travelCardSettingsResult] = useOnyx(getTravelInvoicingCardSettingsKey(workspaceAccountID)); const {reportsToArchive, transactionViolations, reportsResult, transactionsResult, transactionViolationsResult} = useTransactionViolationOfWorkspace(policyID); const [accountIDToLogin] = useOnyx(ONYXKEYS.PERSONAL_DETAILS_LIST, {selector: accountIDToLoginSelector(reportsToArchive)}); @@ -95,6 +95,7 @@ function DeleteWorkspaceFlow({policyID, onDismiss, onDeleteComplete}: DeleteWork privateSubscriptionResult, cardFeedsResult, cardsListResult, + travelCardSettingsResult, reportsResult, transactionsResult, transactionViolationsResult,