diff --git a/src/components/auftraege/rechnung-dialog.css b/src/components/auftraege/rechnung-dialog.css index 47277f4..92a639f 100644 --- a/src/components/auftraege/rechnung-dialog.css +++ b/src/components/auftraege/rechnung-dialog.css @@ -47,3 +47,13 @@ /* Fuß des Dialogs */ .rd-foot { display: flex; flex: 1; flex-wrap: wrap; justify-content: flex-end; gap: 8px; } @media (max-width: 860px) { .rd-foot .btn { flex: 1 1 auto; } } + +/* Rechnungstabelle (InvoiceTable): Spalten Projekt und Art. Zwei Klassen vor dem Elementnamen, damit diese Rasterflächen + die Regel .fin-invoices tr aus global.css überstimmen (dieses Stylesheet steht davor im Bundle). */ +.fin-block .fin-inv-project { overflow-wrap: anywhere; } +.fin-block .fin-inv-art { white-space: nowrap; } +@container (max-width: 860px) { + .fin-block .fin-invoices tr { grid-template-areas: "number status" "customer customer" "projekt art" "created due" "total remaining" "actions actions"; } + .fin-block .fin-inv-project { grid-area: projekt; } + .fin-block .fin-inv-art { grid-area: art; } +} diff --git a/src/components/finance/InvoiceTable.jsx b/src/components/finance/InvoiceTable.jsx index 3d84c7f..a9a0931 100644 --- a/src/components/finance/InvoiceTable.jsx +++ b/src/components/finance/InvoiceTable.jsx @@ -1,10 +1,11 @@ import { useCallback, useEffect, useMemo, useRef, useState } from 'react' import { Badge, Button, Card, EmptyState, Stat } from '../ui' -import InvoiceCreateModal from './InvoiceCreateModal' +import RechnungDialog from '../auftraege/RechnungDialog' import Pager from './Pager' import { deleteInvoice, getInvoices, resendInvoice, sendInvoice, voidInvoice } from '../../lib/financeApi' import { pageOf } from '../../lib/financeFormat' import { noticeProps } from '../../lib/financeUi' +import { artLabel, projektSpalte } from '../../lib/projektkontoView' import { ADDRESS_INCOMPLETE_TEXT, DEFAULT_INVOICE_FILTER, @@ -37,6 +38,8 @@ const CALLS = { send: sendInvoice, resend: resendInvoice, void: voidInvoice, del * wird jede Zeile ein Raster: Nummer und Status / Kunde / Datum, Fällig / Betrag, Offen / Aktionen. „Senden“ eines Entwurfs * fragt vorher nach. In der Kundenansicht ist „Senden“ gesperrt, solange dem Kunden die Anschrift fehlt und der * Entwurf über 250 € liegt (§ 14 Abs. 4 Nr. 1 UStG); `onShowOverview` führt dann im Dialog zur Übersicht. + * Die Tabelle zeigt zusätzlich die Spalten Projekt und Art; „Rechnung schreiben“ öffnet den Dialog `RechnungDialog` + * (Projektwahl, Arten, Vorschau). * * „Offen“ zeigt offene und überfällige Rechnungen (zwei Abrufe, zusammengeführt, neueste zuerst). Ändert sich * `refreshToken` (die Seite lädt nach Zuordnen, Bankabruf usw. alles neu), lädt auch die Liste neu. @@ -204,6 +207,8 @@ export default function InvoiceTable({ altersgruppen = null, customerId = null,