Files
scan-receipts/scripts/generate-sample-pdf.ts
Timo 84b9987c49 Add full application: receipt scanning, auth, billing, and account deletion
Brings the working codebase (Next.js app, auth system, Stripe billing,
Docker/deploy config, tests, docs) into version control on top of the
placeholder initial commit, and adds account self-deletion (Danger Zone
in Settings, password + typed-email confirmation, cascading DB cleanup,
Stripe cancellation) per GDPR right-to-erasure.

Excludes local build caches, node_modules, and internal agent scratch
files; .gitignore hardened to keep those out going forward.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-19 20:59:04 +02:00

83 lines
1.9 KiB
TypeScript

import fs from "fs";
import path from "path";
import os from "os";
import { generateReceiptPdf } from "../src/lib/export/pdfGenerator";
import { ProcessedReceipt } from "../src/lib/schema/receipt";
const sampleReceipt: ProcessedReceipt = {
id: "rec-aral-1",
imageHash: "hash-aral",
originalFileName: "aral-tankstelle.jpg",
fileSizeBytes: 204800,
createdAt: "2026-08-18T10:00:00.000Z",
updatedAt: "2026-08-18T10:00:00.000Z",
status: "ready",
merchant: {
name: "Aral Tankstelle Station",
address: "Musterstraße 12, 10115 Berlin",
taxId: null,
confidence: 0.98,
},
date: {
isoDate: "2026-08-14",
time: "14:22",
confidence: 0.96,
},
documentType: "TANKBELEG",
receiptNumber: "AR-982341",
currency: "EUR",
totalAmount: {
value: 68.45,
confidence: 0.99,
},
netAmount: 57.52,
tipAmount: null,
taxBreakdown: [
{
ratePercent: 19,
taxAmount: 10.93,
netAmount: 57.52,
},
],
lineItems: [
{
description: "Diesel",
quantity: 27.46,
unitPrice: 1.8,
taxRate: 19,
price: 49.43,
},
{
description: "Shop Artikel",
quantity: 1,
unitPrice: null,
taxRate: 19,
price: 11.86,
},
],
suggestedCategory: "Tanken & KFZ",
paymentMethod: "EC_KARTE",
validation: {
isMathValid: true,
isDuplicateSuspected: false,
needsUserReview: false,
reviewField: "none",
reviewReason: null,
userConfirmed: false,
},
} as ProcessedReceipt;
async function run() {
const pdfBytes = await generateReceiptPdf([sampleReceipt], { locale: "de" });
const downloadsDir = path.join(os.homedir(), "Downloads");
const targetFile = path.join(downloadsDir, "Belege_Export_ScanReceipts.pdf");
fs.writeFileSync(targetFile, Buffer.from(pdfBytes));
console.log("SUCCESS: PDF saved to", targetFile);
}
run().catch((err) => {
console.error("ERROR generating PDF:", err);
process.exit(1);
});