"use client";
import { format } from "date-fns";
import { it } from "date-fns/locale";
import Image from "next/image";
import toast from "react-hot-toast";
import { Button } from "~/components/ui/button";
import { Card } from "~/components/ui/card";
import { PaymentMethodToString, type PaymentType } from "~/i18n/stripe";
import { formatCurrency } from "~/lib/utils";
import type { OrdiniOrdineId } from "~/schemas/public/Ordini";
import { api } from "~/utils/api";
export function ReceiptGenerator({
data,
raw,
}: {
data: PurchaseData;
raw: boolean;
}) {
const { mutate: generatePdf } =
api.pagamenti.getRicevutaCortesiaPdf.useMutation({
onMutate: () => {
toast.loading("Generazione PDF in corso...", {
id: "generate-pdf",
});
},
onSuccess: (res) => {
toast.success("PDF generato con successo!", {
id: "generate-pdf",
});
const blob = new Blob([res as unknown as ArrayBuffer], {
type: "application/pdf",
});
const url = window.URL.createObjectURL(blob);
const link = document.createElement("a");
link.href = url;
link.download = `ricevuta-cortesia-${format(data.date, "yyyy-MM-dd")}.pdf`;
document.body.appendChild(link);
link.click();
link.remove();
window.URL.revokeObjectURL(url);
},
onError: (error) => {
toast.error(`Errore durante la generazione del PDF: ${error.message}`, {
id: "generate-pdf",
});
},
});
if (raw) {
return
{companyAddress}
ID Ordine
{data.ordineId}
Data
{format(data.date, "PPP", { locale: it, })}
{format(data.date, "p", { locale: it, })}
{data.clienteNome}
{data.clienteIndirizzo}
| Descrizione | Sconto applicato | Importo |
|---|---|---|
| {data.packName} | {data.sconto > 0 && `${data.sconto}%`} | {formatCurrency(data.amount_cent / 100)} |
{PaymentMethodToString(data.paymentMethod)}
Pagato
{note}
{footer}