Skip to content

Commit 29910ea

Browse files
authored
Merge pull request Expensify#84853 from truph01/feat/82794
feat: Release 3 - add reject report level
2 parents ef87510 + 129a490 commit 29910ea

35 files changed

Lines changed: 1093 additions & 149 deletions

cspell.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -619,6 +619,7 @@
619619
"reimbursible",
620620
"Reimbursments",
621621
"REJECTEDTRANSACTION",
622+
"REJECTEDTOSUBMITTER",
622623
"remotedesktop",
623624
"remotesync",
624625
"removeHiddenElems",

src/CONST/index.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1720,6 +1720,7 @@ const CONST = {
17201720
WAITING_FOR_PAYMENT: 'waitingForPayment',
17211721
WAITING_TO_EXPORT: 'waitingToExport',
17221722
SUBMITTING_TO_SELF: 'submittingToSelf',
1723+
REJECTED_REPORT: 'rejectedReport',
17231724
},
17241725
ICONS: {
17251726
HOURGLASS: 'hourglass',

src/ONYXKEYS.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -915,6 +915,8 @@ const ONYXKEYS = {
915915
MONEY_REQUEST_HOLD_FORM_DRAFT: 'moneyHoldReasonFormDraft',
916916
MONEY_REQUEST_REJECT_FORM: 'moneyRejectReasonForm',
917917
MONEY_REQUEST_REJECT_FORM_DRAFT: 'moneyRejectReasonFormDraft',
918+
REPORT_REJECT_FORM: 'reportRejectForm',
919+
REPORT_REJECT_FORM_DRAFT: 'reportRejectFormDraft',
918920
MONEY_REQUEST_COMPANY_INFO_FORM: 'moneyRequestCompanyInfoForm',
919921
MONEY_REQUEST_COMPANY_INFO_FORM_DRAFT: 'moneyRequestCompanyInfoFormDraft',
920922
MONEY_REQUEST_TIME_FORM: 'moneyRequestTimeForm',
@@ -1116,6 +1118,7 @@ type OnyxFormValuesMapping = {
11161118
[ONYXKEYS.FORMS.MONEY_REQUEST_SUBRATE_FORM]: FormTypes.MoneyRequestSubrateForm;
11171119
[ONYXKEYS.FORMS.MONEY_REQUEST_HOLD_FORM]: FormTypes.MoneyRequestHoldReasonForm;
11181120
[ONYXKEYS.FORMS.MONEY_REQUEST_REJECT_FORM]: FormTypes.MoneyRequestRejectReasonForm;
1121+
[ONYXKEYS.FORMS.REPORT_REJECT_FORM]: FormTypes.ReportRejectForm;
11191122
[ONYXKEYS.FORMS.MONEY_REQUEST_COMPANY_INFO_FORM]: FormTypes.MoneyRequestCompanyInfoForm;
11201123
[ONYXKEYS.FORMS.NEW_CONTACT_METHOD_FORM]: FormTypes.NewContactMethodForm;
11211124
[ONYXKEYS.FORMS.WAYPOINT_FORM]: FormTypes.WaypointForm;

src/ROUTES.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3966,6 +3966,10 @@ const ROUTES = {
39663966
route: 'reject/reason/:transactionID',
39673967
getRoute: (transactionID: string, reportID: string, backTo?: string) => `reject/reason/${transactionID}?reportID=${reportID}&backTo=${backTo}` as const,
39683968
},
3969+
REJECT_EXPENSE_REPORT: {
3970+
route: 'reports/reject/:reportID',
3971+
getRoute: (reportID: string) => `reports/reject/${reportID}` as const,
3972+
},
39693973
SCHEDULE_CALL_BOOK: {
39703974
route: 'r/:reportID/schedule-call/book',
39713975
getRoute: (reportID: string) => `r/${reportID}/schedule-call/book` as const,

src/SCREENS.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -330,6 +330,7 @@ const SCREENS = {
330330
CREATE: 'Money_Request_Create',
331331
HOLD: 'Money_Request_Hold_Reason',
332332
REJECT: 'Money_Request_Reject_Reason',
333+
REPORT_REJECT: 'Money_Request_Report_Reject',
333334
STEP_CONFIRMATION: 'Money_Request_Step_Confirmation',
334335
STEP_CONFIRMATION_VERIFY_ACCOUNT: 'Money_Request_Step_Confirmation_Verify_Account',
335336
START: 'Money_Request_Start',

src/components/Form/FormProvider.tsx

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -112,6 +112,9 @@ type FormProviderProps<TFormID extends OnyxFormKey = OnyxFormKey> = FormProps<TF
112112
*/
113113
keyboardSubmitBehavior?: ValueOf<typeof CONST.KEYBOARD_SUBMIT_BEHAVIOR>;
114114

115+
/** Callback fired synchronously when the user presses submit, before validation runs */
116+
onBeforeSubmit?: () => void;
117+
115118
/** Reference to the outer element */
116119
ref?: ForwardedRef<FormRef>;
117120
};
@@ -132,6 +135,7 @@ function FormProvider({
132135
shouldPreventDefaultFocusOnPressSubmit = false,
133136
shouldHideFixErrorsAlert = false,
134137
keyboardSubmitBehavior = CONST.KEYBOARD_SUBMIT_BEHAVIOR.DISMISS_THEN_SUBMIT,
138+
onBeforeSubmit,
135139
ref,
136140
...rest
137141
}: FormProviderProps) {
@@ -270,6 +274,8 @@ function FormProvider({
270274
return;
271275
}
272276

277+
onBeforeSubmit?.();
278+
273279
// Prepare values before submitting
274280
const trimmedStringValues = shouldTrimValues ? prepareValues(inputValues) : inputValues;
275281

@@ -300,7 +306,19 @@ function FormProvider({
300306
} else {
301307
onSubmit(trimmedStringValues);
302308
}
303-
}, [enabledWhenOffline, formState?.isLoading, inputValues, isLoading, network?.isOffline, onSubmit, onValidate, shouldTrimValues, hasServerError, keyboardSubmitBehavior]),
309+
}, [
310+
enabledWhenOffline,
311+
formState?.isLoading,
312+
inputValues,
313+
isLoading,
314+
network?.isOffline,
315+
onSubmit,
316+
onValidate,
317+
shouldTrimValues,
318+
hasServerError,
319+
keyboardSubmitBehavior,
320+
onBeforeSubmit,
321+
]),
304322
1000,
305323
{leading: true, trailing: false},
306324
);

src/components/MoneyReportHeader.tsx

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2154,15 +2154,10 @@ function MoneyReportHeader({reportID: reportIDProp, shouldDisplayBackButton = fa
21542154
return;
21552155
}
21562156

2157-
if (dismissedRejectUseExplanation) {
2158-
if (requestParentReportAction) {
2159-
rejectMoneyRequestReason(requestParentReportAction);
2160-
}
2161-
} else {
2162-
setRejectModalAction(CONST.REPORT.TRANSACTION_SECONDARY_ACTIONS.REJECT);
2157+
if (moneyRequestReport?.reportID) {
2158+
Navigation.navigate(ROUTES.REJECT_EXPENSE_REPORT.getRoute(moneyRequestReport.reportID));
21632159
}
21642160
},
2165-
shouldShow: transactions.length === 1,
21662161
},
21672162
[CONST.REPORT.SECONDARY_ACTIONS.ADD_EXPENSE]: {
21682163
text: translate('iou.addExpense'),

src/components/Search/SearchList/ListItem/ExpenseReportListItem.tsx

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -200,6 +200,20 @@ function ExpenseReportListItem<TItem extends ListItem>({
200200
const hasAnyVisibleViolations = reportItem?.hasVisibleViolations || hasSyncedMissingAttendeesViolation;
201201

202202
const getDescription = useMemo(() => {
203+
if (reportItem?.isRejectedReport) {
204+
return (
205+
<View style={[styles.flexRow, styles.alignItemsCenter, styles.mt2]}>
206+
<Icon
207+
src={expensifyIcons.DotIndicator}
208+
fill={theme.danger}
209+
additionalStyles={[styles.mr1]}
210+
width={12}
211+
height={12}
212+
/>
213+
<Text style={[styles.textMicro, styles.textDanger]}>{translate('iou.rejectReport.rejectedReportMessage')}</Text>
214+
</View>
215+
);
216+
}
203217
if (!hasAnyVisibleViolations || !shouldShowViolationDescription) {
204218
return;
205219
}
@@ -216,6 +230,7 @@ function ExpenseReportListItem<TItem extends ListItem>({
216230
</View>
217231
);
218232
}, [
233+
reportItem?.isRejectedReport,
219234
hasAnyVisibleViolations,
220235
shouldShowViolationDescription,
221236
styles.flexRow,

src/components/Search/SearchList/ListItem/types.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -185,6 +185,9 @@ type TransactionGroupListItemType = ListItem & {
185185

186186
/** Whether the report has visible violations for user */
187187
hasVisibleViolations?: boolean;
188+
189+
/** Whether the report was rejected (REJECTED or REJECTEDTOSUBMITTER) */
190+
isRejectedReport?: boolean;
188191
};
189192

190193
type ExpenseReportListItemType = TransactionReportGroupListItemType;

src/languages/de.ts

Lines changed: 49 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1557,6 +1557,18 @@ const translations: TranslationDeepObject<typeof en> = {
15571557
markedAsResolved: 'hat den Ablehnungsgrund als gelöst markiert',
15581558
},
15591559
},
1560+
rejectReport: {
1561+
title: 'Bericht ablehnen',
1562+
description: 'Erläutern Sie, warum Sie diesen Bericht nicht genehmigen werden:',
1563+
rejectReason: 'Ablehnungsgrund',
1564+
selectTarget: 'Wählen Sie das Mitglied aus, an das dieser Bericht zur Überprüfung zurückgewiesen werden soll:',
1565+
lastApprover: 'Letzte*r Genehmigende*r',
1566+
submitter: 'Einreicher',
1567+
rejectedReportMessage: 'Dieser Bericht wurde abgelehnt.',
1568+
rejectedNextStep: 'Dieser Bericht wurde abgelehnt. Wir warten darauf, dass Sie die Probleme beheben und ihn manuell erneut einreichen.',
1569+
selectMemberError: 'Wählen Sie ein Mitglied aus, an das dieser Bericht zurückgewiesen werden soll.',
1570+
couldNotReject: 'Der Bericht konnte nicht abgelehnt werden. Bitte versuchen Sie es erneut.',
1571+
},
15601572
moveExpenses: 'Zum Bericht verschieben',
15611573
moveExpensesError: 'Sie können Pauschalspesen nicht in Berichte anderer Arbeitsbereiche verschieben, da die Pauschalsätze je nach Arbeitsbereich unterschiedlich sein können.',
15621574
changeApprover: {
@@ -1681,107 +1693,117 @@ const translations: TranslationDeepObject<typeof en> = {
16811693
[CONST.NEXT_STEP.MESSAGE_KEY.WAITING_TO_ADD_TRANSACTIONS]: ({actor, actorType}: NextStepParams) => {
16821694
switch (actorType) {
16831695
case CONST.NEXT_STEP.ACTOR_TYPE.CURRENT_USER:
1684-
return `Warten darauf, dass <strong>du</strong> Ausgaben hinzufügst.`;
1696+
return `Warte darauf, dass <strong>Sie</strong> Spesen hinzufügen.`;
16851697
case CONST.NEXT_STEP.ACTOR_TYPE.OTHER_USER:
1686-
return `Warten auf <strong>${actor}</strong>, um Ausgaben hinzuzufügen.`;
1698+
return `Warten darauf, dass <strong>${actor}</strong> Ausgaben hinzufügt.`;
16871699
case CONST.NEXT_STEP.ACTOR_TYPE.UNSPECIFIED_ADMIN:
1688-
return `Warten auf eine*n Admin, der Ausgaben hinzufügt.`;
1700+
return `Warten auf eine:n Admin, der Ausgaben hinzufügt.`;
16891701
}
16901702
},
16911703
[CONST.NEXT_STEP.MESSAGE_KEY.WAITING_TO_SUBMIT]: ({actor, actorType}: NextStepParams) => {
16921704
switch (actorType) {
16931705
case CONST.NEXT_STEP.ACTOR_TYPE.CURRENT_USER:
1694-
return `Warte darauf, dass <strong>du</strong> Spesen einreichst.`;
1706+
return `Wartet darauf, dass <strong>Sie</strong> Spesen einreichen.`;
16951707
case CONST.NEXT_STEP.ACTOR_TYPE.OTHER_USER:
1696-
return `Warten darauf, dass <strong>${actor}</strong> Spesen einreicht.`;
1708+
return `Warten darauf, dass <strong>${actor}</strong> Ausgaben einreicht.`;
16971709
case CONST.NEXT_STEP.ACTOR_TYPE.UNSPECIFIED_ADMIN:
16981710
return `Warten darauf, dass ein Admin Spesen einreicht.`;
16991711
}
17001712
},
1701-
[CONST.NEXT_STEP.MESSAGE_KEY.NO_FURTHER_ACTION]: (_: NextStepParams) => `Keine weiteren Schritte erforderlich!`,
1713+
[CONST.NEXT_STEP.MESSAGE_KEY.NO_FURTHER_ACTION]: (_: NextStepParams) => `Kein weiterer Handlungsbedarf!`,
17021714
[CONST.NEXT_STEP.MESSAGE_KEY.WAITING_FOR_SUBMITTER_ACCOUNT]: ({actor, actorType}: NextStepParams) => {
17031715
switch (actorType) {
17041716
case CONST.NEXT_STEP.ACTOR_TYPE.CURRENT_USER:
1705-
return `Warten darauf, dass <strong>du</strong> ein Bankkonto hinzufügst.`;
1717+
return `Warten darauf, dass <strong>Sie</strong> ein Bankkonto hinzufügen.`;
17061718
case CONST.NEXT_STEP.ACTOR_TYPE.OTHER_USER:
1707-
return `Warten auf <strong>${actor}</strong>, um ein Bankkonto hinzuzufügen.`;
1719+
return `Warten darauf, dass <strong>${actor}</strong> ein Bankkonto hinzufügt.`;
17081720
case CONST.NEXT_STEP.ACTOR_TYPE.UNSPECIFIED_ADMIN:
1709-
return `Warten auf eine:n Admin, um ein Bankkonto hinzuzufügen.`;
1721+
return `Warten Sie darauf, dass ein Admin ein Bankkonto hinzufügt.`;
17101722
}
17111723
},
17121724
[CONST.NEXT_STEP.MESSAGE_KEY.WAITING_FOR_AUTOMATIC_SUBMIT]: ({actor, actorType, eta, etaType}: NextStepParams) => {
17131725
let formattedETA = '';
17141726
if (eta) {
1715-
formattedETA = etaType === CONST.NEXT_STEP.ETA_TYPE.DATE_TIME ? ` am ${eta}. eines jeden Monats` : ` ${eta}`;
1727+
formattedETA = etaType === CONST.NEXT_STEP.ETA_TYPE.DATE_TIME ? `am ${eta} eines jeden Monats` : ` ${eta}`;
17161728
}
17171729
switch (actorType) {
17181730
case CONST.NEXT_STEP.ACTOR_TYPE.CURRENT_USER:
1719-
return `Warte, bis <strong>deine</strong> Ausgaben automatisch eingereicht werden${formattedETA}.`;
1731+
return `Warten darauf, dass <strong>Ihre</strong> Ausgaben automatisch eingereicht werden${formattedETA}.`;
17201732
case CONST.NEXT_STEP.ACTOR_TYPE.OTHER_USER:
1721-
return `Warten, bis die Ausgaben von <strong>${actor}</strong> automatisch eingereicht werden${formattedETA}.`;
1733+
return `Es wird darauf gewartet, dass die Ausgaben von <strong>${actor}</strong> automatisch eingereicht werden${formattedETA}.`;
17221734
case CONST.NEXT_STEP.ACTOR_TYPE.UNSPECIFIED_ADMIN:
1723-
return `Warten, bis die Spesen eines Admins automatisch eingereicht werden${formattedETA}.`;
1735+
return `Es wird darauf gewartet, dass die Ausgaben eines Admins automatisch eingereicht werden${formattedETA}.`;
17241736
}
17251737
},
17261738
[CONST.NEXT_STEP.MESSAGE_KEY.WAITING_TO_FIX_ISSUES]: ({actor, actorType}: NextStepParams) => {
17271739
switch (actorType) {
17281740
case CONST.NEXT_STEP.ACTOR_TYPE.CURRENT_USER:
1729-
return `Warten auf <strong>dich</strong>, um die Probleme zu beheben.`;
1741+
return `Warten auf <strong>Sie</strong>, um die Probleme zu beheben.`;
17301742
case CONST.NEXT_STEP.ACTOR_TYPE.OTHER_USER:
1731-
return `Warte darauf, dass <strong>${actor}</strong> die Probleme behebt.`;
1743+
return `Warten darauf, dass <strong>${actor}</strong> die Probleme behebt.`;
17321744
case CONST.NEXT_STEP.ACTOR_TYPE.UNSPECIFIED_ADMIN:
17331745
return `Warten auf eine*n Admin, um die Probleme zu beheben.`;
17341746
}
17351747
},
17361748
[CONST.NEXT_STEP.MESSAGE_KEY.WAITING_TO_APPROVE]: ({actor, actorType}: NextStepParams) => {
17371749
switch (actorType) {
17381750
case CONST.NEXT_STEP.ACTOR_TYPE.CURRENT_USER:
1739-
return `Warte darauf, dass <strong>du</strong> Spesen genehmigst.`;
1751+
return `Es wird darauf gewartet, dass <strong>Sie</strong> Spesen genehmigen.`;
17401752
case CONST.NEXT_STEP.ACTOR_TYPE.OTHER_USER:
17411753
return `Warten auf die Genehmigung der Ausgaben durch <strong>${actor}</strong>.`;
17421754
case CONST.NEXT_STEP.ACTOR_TYPE.UNSPECIFIED_ADMIN:
1743-
return `Warte darauf, dass eine Admin-Person Spesen genehmigt.`;
1755+
return `Warten auf Genehmigung der Ausgaben durch eine Adminperson.`;
17441756
}
17451757
},
17461758
[CONST.NEXT_STEP.MESSAGE_KEY.WAITING_TO_EXPORT]: ({actor, actorType}: NextStepParams) => {
17471759
switch (actorType) {
17481760
case CONST.NEXT_STEP.ACTOR_TYPE.CURRENT_USER:
1749-
return `Warte darauf, dass <strong>du</strong> diesen Bericht exportierst.`;
1761+
return `Warte darauf, dass <strong>Sie</strong> diesen Bericht exportieren.`;
17501762
case CONST.NEXT_STEP.ACTOR_TYPE.OTHER_USER:
1751-
return `Warten auf <strong>${actor}</strong>, um diesen Bericht zu exportieren.`;
1763+
return `Warten darauf, dass <strong>${actor}</strong> diesen Bericht exportiert.`;
17521764
case CONST.NEXT_STEP.ACTOR_TYPE.UNSPECIFIED_ADMIN:
1753-
return `Warten auf eine*n Admin, um diesen Bericht zu exportieren.`;
1765+
return `Warten auf eine Administratorin oder einen Administrator, um diesen Bericht zu exportieren.`;
17541766
}
17551767
},
17561768
[CONST.NEXT_STEP.MESSAGE_KEY.WAITING_TO_PAY]: ({actor, actorType}: NextStepParams) => {
17571769
switch (actorType) {
17581770
case CONST.NEXT_STEP.ACTOR_TYPE.CURRENT_USER:
1759-
return `Warte auf <strong>dich</strong>, um Spesen zu bezahlen.`;
1771+
return `Wartet darauf, dass <strong>Sie</strong> Spesen bezahlen.`;
17601772
case CONST.NEXT_STEP.ACTOR_TYPE.OTHER_USER:
17611773
return `Warten auf <strong>${actor}</strong>, um Auslagen zu bezahlen.`;
17621774
case CONST.NEXT_STEP.ACTOR_TYPE.UNSPECIFIED_ADMIN:
1763-
return `Warten darauf, dass ein Admin Spesen bezahlt.`;
1775+
return `Warten darauf, dass eine Adminperson Spesen bezahlt.`;
17641776
}
17651777
},
17661778
[CONST.NEXT_STEP.MESSAGE_KEY.WAITING_FOR_POLICY_BANK_ACCOUNT]: ({actor, actorType}: NextStepParams) => {
17671779
switch (actorType) {
17681780
case CONST.NEXT_STEP.ACTOR_TYPE.CURRENT_USER:
1769-
return `Warten darauf, dass <strong>du</strong> die Einrichtung eines Geschäftskontos abschließt.`;
1781+
return `Warten darauf, dass <strong>Sie</strong> die Einrichtung eines Geschäftskontos abschließen.`;
17701782
case CONST.NEXT_STEP.ACTOR_TYPE.OTHER_USER:
17711783
return `Warten darauf, dass <strong>${actor}</strong> die Einrichtung eines Geschäftskontos abschließt.`;
17721784
case CONST.NEXT_STEP.ACTOR_TYPE.UNSPECIFIED_ADMIN:
1773-
return `Warten, bis ein Admin die Einrichtung eines Geschäftskontos abgeschlossen hat.`;
1785+
return `Warten auf eine Administration, um das Einrichten eines geschäftlichen Bankkontos abzuschließen.`;
17741786
}
17751787
},
17761788
[CONST.NEXT_STEP.MESSAGE_KEY.WAITING_FOR_PAYMENT]: ({eta, etaType}: NextStepParams) => {
17771789
let formattedETA = '';
17781790
if (eta) {
1779-
formattedETA = etaType === CONST.NEXT_STEP.ETA_TYPE.DATE_TIME ? ` bis ${eta}` : ` ${eta}`;
1791+
formattedETA = etaType === CONST.NEXT_STEP.ETA_TYPE.DATE_TIME ? `bis ${eta}` : ` ${eta}`;
17801792
}
1781-
return `Warte, bis die Zahlung abgeschlossen ist${formattedETA}.`;
1793+
return `Warten, bis die Zahlung abgeschlossen ist${formattedETA}.`;
17821794
},
17831795
[CONST.NEXT_STEP.MESSAGE_KEY.SUBMITTING_TO_SELF]: (_: NextStepParams) =>
1784-
`Ups! Sie scheinen diesen Bericht an <strong>sich selbst</strong> einzureichen. Die Genehmigung eigener Berichte ist in Ihrem Arbeitsbereich <strong>verboten</strong>. Bitte reichen Sie diesen Bericht bei einer anderen Person ein oder wenden Sie sich an Ihre Admin, um die empfangende Person zu ändern.`,
1796+
`Ups! Sie scheinen diesen Bericht bei <strong>sich selbst</strong> einzureichen. Die Genehmigung eigener Berichte ist in Ihrem Workspace <strong>verboten</strong>. Bitte reichen Sie diesen Bericht bei jemand anderem ein oder kontaktieren Sie Ihre Admin, um die Person zu ändern, an die Sie Berichte einreichen.`,
1797+
[CONST.NEXT_STEP.MESSAGE_KEY.REJECTED_REPORT]: ({actor, actorType}: NextStepParams) => {
1798+
switch (actorType) {
1799+
case CONST.NEXT_STEP.ACTOR_TYPE.CURRENT_USER:
1800+
return `Dieser Bericht wurde abgelehnt. Es wird darauf gewartet, dass <strong>Sie</strong> die Probleme beheben und ihn manuell erneut einreichen.`;
1801+
case CONST.NEXT_STEP.ACTOR_TYPE.OTHER_USER:
1802+
return `Dieser Bericht wurde abgelehnt. Es wird darauf gewartet, dass <strong>${actor}</strong> die Probleme behebt und den Bericht manuell erneut einreicht.`;
1803+
case CONST.NEXT_STEP.ACTOR_TYPE.UNSPECIFIED_ADMIN:
1804+
return `Dieser Bericht wurde abgelehnt. Es wird darauf gewartet, dass ein Admin die Probleme behebt und ihn manuell erneut einreicht.`;
1805+
}
1806+
},
17851807
},
17861808
eta: {
17871809
[CONST.NEXT_STEP.ETA_KEY.SHORTLY]: 'in Kürze',

0 commit comments

Comments
 (0)