feat(payments): Block Zahlungsvorgang im Bestell-Editor, Storno-Felder bei automatischem Storno
- Bestell-Editor rechts: Zahlungsvorgang (Status, Grund, Transaktions-ID, Referenz, Betraege, Zeiten, Verlauf aus PG payment_log), anbieterneutral ueber payment_transactions (Payments\Overview, Log::forOrder) - markCancelled() fuellt Stornodatum, Stornostatus, Stornogrund und Storno-Nachricht der Bestellung (nur leere Felder) - neuer Stornogrund 'Zahlung beim Anbieter nicht abgeschlossen' (install.sql) - reconcile: 404-Grund lesbar mit Alter des Vorgangs
This commit is contained in:
@@ -56,6 +56,34 @@ final class Log
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Verlauf einer Bestellung fuer den Bestell-Editor, aelteste zuerst.
|
||||
* Payload bleibt draussen (Roh-JSON gehoert nicht in die Maske).
|
||||
*
|
||||
* @return list<array{zeit:string,action:string,status:?string,http_status:?string,detail:?string,reference:?string}>
|
||||
*/
|
||||
public static function forOrder(int $orderId, int $limit = 40): array
|
||||
{
|
||||
$c = self::conn();
|
||||
if (!$c || $orderId <= 0) {
|
||||
return [];
|
||||
}
|
||||
$host = (string) ($_SERVER['SERVER_NAME'] ?? \gethostname());
|
||||
$res = @\pg_query_params(
|
||||
$c,
|
||||
"SELECT to_char(zeitpunkt, 'DD.MM.YYYY HH24:MI:SS') AS zeit, action, status, http_status, detail, reference
|
||||
FROM payment_log
|
||||
WHERE order_id = $1 AND host = $2
|
||||
ORDER BY id
|
||||
LIMIT $3",
|
||||
[$orderId, $host, $limit]
|
||||
);
|
||||
if (!$res) {
|
||||
return [];
|
||||
}
|
||||
return \pg_fetch_all($res) ?: [];
|
||||
}
|
||||
|
||||
/** @return resource|\PgSql\Connection|false */
|
||||
private static function conn()
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user