"use client";
import { useActionState } from "react";
import { kundenrechnungSpeichern, proxmoxRechnungSpeichern } from "@/server/actions/rechnungen";
import type { AktionsErgebnis } from "@/server/actions/kunden";
const LEER: AktionsErgebnis = {};
function isoDatum(wert: string | null | undefined) {
return wert ? wert.slice(0, 10) : "";
}
function Meldung({ ergebnis }: { ergebnis: AktionsErgebnis }) {
if (ergebnis.fehler) return
{ergebnis.fehler}
;
if (ergebnis.erfolg) return {ergebnis.erfolg}
;
return null;
}
export interface ProxmoxWerte {
nummer: string | null;
datum: string | null;
faelligAm: string | null;
nettoBetrag: number | null;
ustSatz: number;
rabatt: number | null;
zahlungsart: string | null;
bezahlt: boolean;
bezahltAm: string | null;
anhangId: string | null;
anhangName: string | null;
}
/** Proxmox-Rechnung (Einkauf). Gleiche Rechnungsnummer heißt: Position an derselben Rechnung. */
export function ProxmoxRechnungFormular({
laufzeitId,
hostId,
werte,
}: {
laufzeitId: string;
hostId: string;
werte: ProxmoxWerte;
}) {
const [ergebnis, aktion, laeuft] = useActionState(proxmoxRechnungSpeichern, LEER);
return (
);
}
export interface KundenWerte {
erstellt: boolean;
nummer: string | null;
datum: string | null;
nettoBetrag: number | null;
ustSatz: number;
bezahlt: boolean;
bezahltAm: string | null;
anhangId: string | null;
anhangName: string | null;
}
/** Kundenrechnung (Verkauf). */
export function KundenrechnungFormular({
laufzeitId,
hostId,
werte,
kundeVorhanden,
}: {
laufzeitId: string;
hostId: string;
werte: KundenWerte;
kundeVorhanden: boolean;
}) {
const [ergebnis, aktion, laeuft] = useActionState(kundenrechnungSpeichern, LEER);
if (!kundeVorhanden) {
return (
Dieser Host ist keinem Kunden zugewiesen. Ohne Kunde lässt sich keine Kundenrechnung erfassen.
);
}
return (
);
}