Drop the Netto row for Kleinunternehmer invoices
Validate e-invoices / mustang (push) Successful in 24s

Netto = Gesamt is structural under §19 UStG (no tax component ever
existed), not the coincidental 0%-this-one-sale case vatExempt orders
are in — showing it right under the §19 notice just duplicated Gesamt.
At the user's own request after reviewing a real invoice.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
Marco
2026-07-24 15:18:36 +00:00
parent 439165c98d
commit ceaa437724
4 changed files with 41 additions and 23 deletions
+22 -13
View File
@@ -425,19 +425,28 @@ export function InvoiceDocument({ order, seller }: { order: InvoiceOrder; seller
by hand. Shown on every invoice, not just B2B/non-exempt
ones — on a vatExempt order Netto and Gesamt happen to be
the same figure (0% tax), but the row stays for layout
consistency across every invoice this shop issues. Placed
last (after the MwSt annotation, not before it) — see
that annotation's own comment above for why the order
matters here. Styled with the same small/muted
vatNoteLabel/vatNoteValue as that annotation, not the
larger summaryLabel/summaryValue the build-up rows above
Gesamt use — Netto is supplementary detail *below* the
hero Gesamt figure, same visual tier as the tax
breakdown, not another primary line competing with it. */}
<View style={styles.nettoRow}>
<Text style={styles.vatNoteLabel}>Netto</Text>
<Text style={styles.vatNoteValue}>{formatPrice(rateGroups.reduce((sum, g) => sum + g.net, 0))}</Text>
</View>
consistency across every invoice this shop issues. The one
exception is `kleinunternehmer` (built 2026-07-24, at the
user's own request): there Netto = Gesamt for a
structural reason, not a coincidental one (§19 UStG means
there was never a tax component to subtract in the first
place), and the row would just look like a second,
redundant total sitting directly under the §19 notice
above rather than genuinely new information. Placed last
(after the MwSt annotation, not before it) — see that
annotation's own comment above for why the order matters
here. Styled with the same small/muted vatNoteLabel/
vatNoteValue as that annotation, not the larger
summaryLabel/summaryValue the build-up rows above Gesamt
use — Netto is supplementary detail *below* the hero
Gesamt figure, same visual tier as the tax breakdown, not
another primary line competing with it. */}
{!order.kleinunternehmer && (
<View style={styles.nettoRow}>
<Text style={styles.vatNoteLabel}>Netto</Text>
<Text style={styles.vatNoteValue}>{formatPrice(rateGroups.reduce((sum, g) => sum + g.net, 0))}</Text>
</View>
)}
</View>
{paid && (
<View style={styles.paidBadgeRow}>