import { Description, FieldGroup, Fieldset, Legend } from "@repo/rdx-ui/components"; import { Input, Label, Separator } from "@repo/shadcn-ui/components"; import { CalculatorIcon } from "lucide-react"; import { useState } from "react"; import { useFormContext } from "react-hook-form"; import { useTranslation } from "../../i18n"; import { CustomerInvoiceFormData } from "../../schemas"; export const InvoiceTotals = () => { const { t } = useTranslation(); const { control } = useFormContext(); //const invoiceFormData = useWatch({ control }); const [invoice, setInvoice] = useState({ items: [], subtotal_amount: 0, discount_percentage: 0, discount_amount: 0, taxable_amount: 0, taxes_amount: 0, total_amount: 0, }); const updateDiscount = (value: number) => { const subtotal = invoice.items.reduce( (sum: number, item: any) => sum + item.subtotal_amount, 0 ); const discountAmount = (subtotal * value) / 100; const taxableAmount = subtotal - discountAmount; const taxesAmount = taxableAmount * 0.21; // Mock calculation const totalAmount = taxableAmount + taxesAmount; setInvoice({ ...invoice, subtotal_amount: subtotal, discount_percentage: value, discount_amount: discountAmount, taxable_amount: taxableAmount, taxes_amount: taxesAmount, total_amount: totalAmount, }); }; const formatCurrency = (amount: number) => { return new Intl.NumberFormat("es-ES", { style: "currency", currency: "EUR", minimumFractionDigits: 2, maximumFractionDigits: 2, }).format(amount); }; return (
{t("form_groups.totals.title")} {t("form_groups.totals.description")}
{formatCurrency(invoice.subtotal_amount)}
updateDiscount(Number.parseFloat(e.target.value) || 0)} className='w-20 text-right' /> %
-{formatCurrency(invoice.discount_amount)}
{formatCurrency(invoice.taxable_amount)}
{formatCurrency(invoice.taxes_amount)}
{formatCurrency(invoice.total_amount)}
); };