<?php
declare(strict_types=1);

namespace Itdatex\EInvoiceCore;

/**
 * Eine einzelne Rechnungs-Position fuer die Ausgabe.
 *
 * unitCode: UN/ECE Rec 20 Mengeneinheit (Default "C62" = Stueck/Einheit,
 *           HUR = Stunde, KGM = kg, LTR = Liter, ...).
 *
 * vatCategory: EN-16931 BT-151 Codes —
 *   S  = Standard rate
 *   AE = Reverse charge
 *   Z  = Zero rated
 *   E  = Exempt
 *   G  = Export outside EU
 *   K  = Intra-Community supply
 *   O  = Outside scope of tax
 */
final class InvoiceLineDraft
{
    /**
     * @param string|null $taxExemptionReason
     *   Pflicht-Begruendung fuer steuerfreie Faelle (BT-120 / BR-E-09,
     *   BR-AE-09, BR-Z-09, BR-O-09, BR-G-09, BR-K-09). Frei formulierbarer
     *   Text in Landessprache, z.B.
     *   - Kleinunternehmer:  "Steuerbefreit nach § 19 UStG"
     *   - Reverse Charge:    "Steuerschuldnerschaft des Leistungsempfaengers"
     *   - Innergemeinschaftlich: "Innergemeinschaftliche Lieferung gem. § 4 Nr. 1b UStG"
     *   Fuer vatCategory = 'S' (Standard) bleibt das Feld null.
     */
    public function __construct(
        public readonly string $name,
        public readonly float $quantity,
        public readonly float $unitPrice,
        public readonly float $vatRate = 19.0,
        public readonly string $unitCode = 'C62',
        public readonly string $vatCategory = 'S',
        public readonly ?string $description = null,
        public readonly ?string $taxExemptionReason = null,
    ) {}
}
