Added support for Streamdeck Pedal and updated UI to better fit the Packed UI style
This commit is contained in:
60
pirp/public/invoices_csv.php
Normal file
60
pirp/public/invoices_csv.php
Normal file
@@ -0,0 +1,60 @@
|
||||
<?php
|
||||
require_once __DIR__ . '/../src/config.php';
|
||||
require_once __DIR__ . '/../src/auth.php';
|
||||
require_once __DIR__ . '/../src/db.php';
|
||||
require_login();
|
||||
|
||||
$pdo = get_db();
|
||||
|
||||
$filter_number = trim($_GET['number'] ?? '');
|
||||
$filter_customer = trim($_GET['customer'] ?? '');
|
||||
$filter_from = trim($_GET['from'] ?? '');
|
||||
$filter_to = trim($_GET['to'] ?? '');
|
||||
|
||||
$sql = "SELECT i.*, c.name AS customer_name
|
||||
FROM invoices i
|
||||
JOIN customers c ON c.id = i.customer_id
|
||||
WHERE 1=1";
|
||||
$params = [];
|
||||
|
||||
if ($filter_number !== '') {
|
||||
$sql .= " AND i.invoice_number ILIKE :num";
|
||||
$params[':num'] = '%' . $filter_number . '%';
|
||||
}
|
||||
if ($filter_customer !== '') {
|
||||
$sql .= " AND c.name ILIKE :cust";
|
||||
$params[':cust'] = '%' . $filter_customer . '%';
|
||||
}
|
||||
if ($filter_from !== '') {
|
||||
$sql .= " AND i.invoice_date >= :from";
|
||||
$params[':from'] = $filter_from;
|
||||
}
|
||||
if ($filter_to !== '') {
|
||||
$sql .= " AND i.invoice_date <= :to";
|
||||
$params[':to'] = $filter_to;
|
||||
}
|
||||
|
||||
$sql .= " ORDER BY i.invoice_date ASC, i.id ASC";
|
||||
$stmt = $pdo->prepare($sql);
|
||||
$stmt->execute($params);
|
||||
$rows = $stmt->fetchAll(PDO::FETCH_ASSOC);
|
||||
|
||||
header('Content-Type: text/csv; charset=utf-8');
|
||||
header('Content-Disposition: attachment; filename="invoices_export_' . date('Y-m-d') . '.csv"');
|
||||
|
||||
$out = fopen('php://output', 'w');
|
||||
fputcsv($out, ['Datum', 'Rechnungsnummer', 'Kunde', 'Netto', 'USt', 'Brutto', 'Status'], ';');
|
||||
|
||||
foreach ($rows as $r) {
|
||||
fputcsv($out, [
|
||||
date('d.m.Y', strtotime($r['invoice_date'])),
|
||||
$r['invoice_number'],
|
||||
$r['customer_name'],
|
||||
number_format($r['total_net'], 2, ',', ''),
|
||||
number_format($r['total_vat'], 2, ',', ''),
|
||||
number_format($r['total_gross'], 2, ',', ''),
|
||||
$r['paid'] ? 'bezahlt' : 'offen',
|
||||
], ';');
|
||||
}
|
||||
fclose($out);
|
||||
exit;
|
||||
Reference in New Issue
Block a user