<?php
require_once __DIR__ . '/../app/init.php';
require_once __DIR__ . '/../app/Services/AccountingService.php';
require_once __DIR__ . '/../app/audit.php';
require_once __DIR__ . '/../app/cash_tx_lock.php';

$pdo = db();
$svc = new AccountingService($pdo);
require_login();

$id = (int)($_GET['id'] ?? 0);
if ($id <= 0) die('Invalid id');

$cid = (int)$_SESSION['company_id'];

$txStmt = $pdo->prepare("SELECT * FROM cash_transactions WHERE id=? AND company_id=? LIMIT 1");
$txStmt->execute([$id, $cid]);
$tx = $txStmt->fetch(PDO::FETCH_ASSOC);

if (cash_tx_is_locked_from_cash_page($pdo, $cid, $id)) {
  $label = cash_tx_linked_source_label($pdo, $cid, $id) ?: 'صفحة أخرى';
  die('لا يمكن إلغاء ترحيل هذه الحركة من صفحة الوارد والمنصرف لأنها مرتبطة بـ ' . $label);
}

try{
  $svc->unpostCashTx($cid, $id);
  if ($tx) {
    audit_log($pdo, [
      'company_id' => $cid,
      'user_id' => (int)($_SESSION['user_id'] ?? 0),
      'module' => 'journal',
      'action' => 'UNPOST',
      'entity_type' => 'cash_transaction',
      'entity_id' => (string)$id,
      'description' => audit_cash_description($pdo, $cid, 'إلغاء ترحيل حركة مالية', $tx),
    ]);
  }
  flash_set('تم إلغاء ترحيل الحركة بنجاح', 'warning');
  header("Location: " . url('/cash/index.php'));
  exit;
}catch(Throwable $e){
  echo "حدث خطأ: " . h($e->getMessage());
}
