diff --git a/frontend/src/i18n/locales/de.json b/frontend/src/i18n/locales/de.json index 426c3c8a..89256a55 100644 --- a/frontend/src/i18n/locales/de.json +++ b/frontend/src/i18n/locales/de.json @@ -3563,6 +3563,7 @@ "payTitle": "Lieferant als bezahlt markieren", "outstanding": "Offen", "markPaid": "Als bezahlt markieren", + "markUnpaid": "Als unbezahlt markieren", "confirmPaid": "Als bezahlt markieren", "paid": "Bezahlt", "paidToast": "Als bezahlt markiert.", diff --git a/frontend/src/i18n/locales/en.json b/frontend/src/i18n/locales/en.json index 5045fabc..9d5fcae1 100644 --- a/frontend/src/i18n/locales/en.json +++ b/frontend/src/i18n/locales/en.json @@ -3563,6 +3563,7 @@ "payTitle": "Mark supplier paid", "outstanding": "Outstanding", "markPaid": "Mark paid", + "markUnpaid": "Mark unpaid", "confirmPaid": "Mark paid", "paid": "Paid", "paidToast": "Marked as paid.", diff --git a/frontend/src/pages/admin/accounting/AccountingInboxPage.tsx b/frontend/src/pages/admin/accounting/AccountingInboxPage.tsx index 9938e8f2..69b54223 100644 --- a/frontend/src/pages/admin/accounting/AccountingInboxPage.tsx +++ b/frontend/src/pages/admin/accounting/AccountingInboxPage.tsx @@ -9,7 +9,7 @@ import React, { useRef, useState, useEffect } from 'react'; import { useQuery, useMutation, useQueryClient } from '@tanstack/react-query'; import { useTranslation } from 'react-i18next'; import { toast } from 'react-toastify'; -import { Camera, Upload, Inbox, X, CheckCircle2, Circle, Eye } from 'lucide-react'; +import { Camera, Upload, Inbox, X, Circle, Eye, RotateCcw } from 'lucide-react'; import { Button, Card, CardContent, Input, LocalizedDateInput, Loading } from '../../../components/common'; import { DecimalInput } from '../../../components/common/DecimalInput'; import { CustomerAccountPicker, type SelectedCustomer } from '../../../components/admin/CustomerAccountPicker'; @@ -68,7 +68,9 @@ const DocumentPreview: React.FC<{ doc: InboundDocument; maxHeight?: string; init : imgUrl ? document page :
{t('accounting.inbox.previewLoading', 'Loading preview…')}
} - {isPdf && pageCount > 1 && ( + {/* Always show the pager for PDFs (disabled at the ends) so the control + is consistent even on single-page invoices. */} + {isPdf && (
{t('accounting.inbox.pageOf', 'Page {{n}} / {{total}}', { n: page, total: pageCount })} @@ -338,8 +340,17 @@ export const AccountingInboxPage: React.FC = () => {
{items.map((doc) => (
- {/* Click a new invoice → categorize; an already-sorted one → view. */} - {doc.status !== 'declined' && doc.status !== 'duplicate' && ( doc.supplierPaid - ? + // Paid is shown by the front badge — here we only offer the + // revert action, so there aren't two "Paid" chips. + ? : )} {doc.status === 'unsorted' && }