عذراً، ليس لديك صلاحية الوصول لهذه الصفحة.'; require_once __DIR__ . '/includes/footer.php'; exit; } $success = ''; $error = ''; // Handle Actions if ($_SERVER['REQUEST_METHOD'] === 'POST') { $action = $_POST['action'] ?? ''; if ($action === 'lend') { $store_id = $_POST['store_id']; $item_id = $_POST['item_id']; $quantity = $_POST['quantity']; $borrower = $_POST['borrower_name']; $phone = $_POST['borrower_phone']; $date = $_POST['expected_return_date']; try { $pdo = db(); $pdo->beginTransaction(); // Check stock $check = $pdo->prepare("SELECT id, quantity FROM stock_quantities WHERE store_id = ? AND item_id = ? FOR UPDATE"); $check->execute([$store_id, $item_id]); $stock = $check->fetch(); if (!$stock || $stock['quantity'] < $quantity) { throw new Exception("الكمية غير متوفرة للإعارة"); } // Deduct Stock $pdo->prepare("UPDATE stock_quantities SET quantity = quantity - ? WHERE id = ?")->execute([$quantity, $stock['id']]); // Create Transaction $stmt = $pdo->prepare("INSERT INTO stock_transactions (transaction_type, store_id, item_id, quantity, user_id, reference) VALUES ('lend', ?, ?, ?, ?, ?)"); $stmt->execute([$store_id, $item_id, $quantity, $_SESSION['user_id'], "إعارة: $borrower"]); $trans_id = $pdo->lastInsertId(); // Create Lending Record $stmt = $pdo->prepare("INSERT INTO stock_lending (transaction_id, borrower_name, borrower_phone, expected_return_date, status) VALUES (?, ?, ?, ?, 'active')"); $stmt->execute([$trans_id, $borrower, $phone, $date]); $pdo->commit(); $success = 'تم تسجيل الإعارة بنجاح'; } catch (Exception $e) { $pdo->rollBack(); $error = $e->getMessage(); } } elseif ($action === 'return') { $lending_id = $_POST['lending_id']; try { $pdo = db(); $pdo->beginTransaction(); // Get Lending Info $lend = $pdo->query("SELECT l.*, t.store_id, t.item_id, t.quantity FROM stock_lending l JOIN stock_transactions t ON l.transaction_id = t.id WHERE l.id = $lending_id")->fetch(); if ($lend && $lend['status'] === 'active') { // Add Stock Back $check = $pdo->prepare("SELECT id FROM stock_quantities WHERE store_id = ? AND item_id = ?"); $check->execute([$lend['store_id'], $lend['item_id']]); $s_id = $check->fetchColumn(); if ($s_id) { $pdo->prepare("UPDATE stock_quantities SET quantity = quantity + ? WHERE id = ?")->execute([$lend['quantity'], $s_id]); } else { $pdo->prepare("INSERT INTO stock_quantities (store_id, item_id, quantity) VALUES (?, ?, ?)")->execute([$lend['store_id'], $lend['item_id'], $lend['quantity']]); } // Create Return Transaction $stmt = $pdo->prepare("INSERT INTO stock_transactions (transaction_type, store_id, item_id, quantity, user_id, reference) VALUES ('return', ?, ?, ?, ?, ?)"); $stmt->execute([$lend['store_id'], $lend['item_id'], $lend['quantity'], $_SESSION['user_id'], "إرجاع إعارة: " . $lend['borrower_name']]); $ret_id = $pdo->lastInsertId(); // Update Lending Record $pdo->prepare("UPDATE stock_lending SET status = 'returned', return_transaction_id = ? WHERE id = ?")->execute([$ret_id, $lending_id]); $pdo->commit(); $success = 'تم إرجاع المواد بنجاح'; } } catch (Exception $e) { $pdo->rollBack(); $error = $e->getMessage(); } } } // Fetch Active Loans $loans = db()->query(" SELECT l.*, i.name as item_name, s.name as store_name, t.quantity, t.created_at as lend_date FROM stock_lending l JOIN stock_transactions t ON l.transaction_id = t.id JOIN stock_items i ON t.item_id = i.id JOIN stock_stores s ON t.store_id = s.id WHERE l.status = 'active' ORDER BY l.expected_return_date ASC ")->fetchAll(); $stores = db()->query("SELECT * FROM stock_stores ORDER BY name ASC")->fetchAll(); $items = db()->query("SELECT * FROM stock_items ORDER BY name ASC")->fetchAll(); ?>

إعارة المواد

الإعارات النشطة
المستعير المادة الكمية تاريخ الإعارة تاريخ الإرجاع المتوقع الحالة الإجراءات
لا توجد إعارات نشطة حالياً

نشط