Added support for Streamdeck Pedal and updated UI to better fit the Packed UI style
This commit is contained in:
81
pirp/public/journal_api.php
Normal file
81
pirp/public/journal_api.php
Normal file
@@ -0,0 +1,81 @@
|
||||
<?php
|
||||
require_once __DIR__ . '/../src/config.php';
|
||||
require_once __DIR__ . '/../src/auth.php';
|
||||
require_once __DIR__ . '/../src/db.php';
|
||||
require_once __DIR__ . '/../src/journal_functions.php';
|
||||
require_login();
|
||||
|
||||
header('Content-Type: application/json');
|
||||
|
||||
$action = $_POST['action'] ?? $_GET['action'] ?? '';
|
||||
|
||||
try {
|
||||
switch ($action) {
|
||||
case 'save_entry':
|
||||
$id = !empty($_POST['id']) ? (int)$_POST['id'] : null;
|
||||
$data = [
|
||||
'year_id' => (int)$_POST['year_id'],
|
||||
'entry_date' => $_POST['entry_date'] ?? '',
|
||||
'description' => $_POST['description'] ?? '',
|
||||
'attachment_note' => $_POST['attachment_note'] ?? '',
|
||||
'amount' => $_POST['amount'] ?? 0,
|
||||
'supplier_id' => !empty($_POST['supplier_id']) ? (int)$_POST['supplier_id'] : null,
|
||||
'sort_order' => (int)($_POST['sort_order'] ?? 0),
|
||||
];
|
||||
|
||||
if (!$data['entry_date'] || !$data['description']) {
|
||||
echo json_encode(['ok' => false, 'error' => 'Datum und Text sind Pflichtfelder.']);
|
||||
exit;
|
||||
}
|
||||
|
||||
$accounts = [];
|
||||
$acct_types = $_POST['acct_type'] ?? [];
|
||||
$acct_sides = $_POST['acct_side'] ?? [];
|
||||
$acct_amounts = $_POST['acct_amount'] ?? [];
|
||||
$acct_rev_ids = $_POST['acct_rev_id'] ?? [];
|
||||
$acct_exp_ids = $_POST['acct_exp_id'] ?? [];
|
||||
$acct_notes = $_POST['acct_note'] ?? [];
|
||||
|
||||
for ($i = 0; $i < count($acct_types); $i++) {
|
||||
if (empty($acct_types[$i]) || (float)($acct_amounts[$i] ?? 0) == 0) continue;
|
||||
$accounts[] = [
|
||||
'account_type' => $acct_types[$i],
|
||||
'side' => $acct_sides[$i] ?? 'soll',
|
||||
'amount' => (float)($acct_amounts[$i] ?? 0),
|
||||
'revenue_category_id' => !empty($acct_rev_ids[$i]) ? (int)$acct_rev_ids[$i] : null,
|
||||
'expense_category_id' => !empty($acct_exp_ids[$i]) ? (int)$acct_exp_ids[$i] : null,
|
||||
'note' => $acct_notes[$i] ?? '',
|
||||
];
|
||||
}
|
||||
|
||||
if (empty($accounts)) {
|
||||
echo json_encode(['ok' => false, 'error' => 'Mindestens eine Kontenbuchung erforderlich.']);
|
||||
exit;
|
||||
}
|
||||
|
||||
$saved_id = save_journal_entry($id, $data, $accounts);
|
||||
echo json_encode(['ok' => true, 'id' => $saved_id]);
|
||||
break;
|
||||
|
||||
case 'delete_entry':
|
||||
$del_id = (int)($_POST['id'] ?? 0);
|
||||
if ($del_id) {
|
||||
delete_journal_entry($del_id);
|
||||
echo json_encode(['ok' => true]);
|
||||
} else {
|
||||
echo json_encode(['ok' => false, 'error' => 'Keine ID.']);
|
||||
}
|
||||
break;
|
||||
|
||||
case 'get_entry':
|
||||
$get_id = (int)($_GET['id'] ?? 0);
|
||||
$entry = get_journal_entry($get_id);
|
||||
echo json_encode(['ok' => true, 'entry' => $entry]);
|
||||
break;
|
||||
|
||||
default:
|
||||
echo json_encode(['ok' => false, 'error' => 'Unbekannte Aktion.']);
|
||||
}
|
||||
} catch (\Exception $e) {
|
||||
echo json_encode(['ok' => false, 'error' => $e->getMessage()]);
|
||||
}
|
||||
Reference in New Issue
Block a user