<?php
require_once 'includes/config.php';
require_once 'includes/functions.php';

if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
    redirect('create_invoice.php');
}

// التحقق من تسجيل الدخول
if (!isLoggedIn()) {
    redirect('login.php');
}

// جلب بيانات الفاتورة
$invoice_number = $_POST['invoice_number'];
$invoice_date = $_POST['invoice_date'];
$customer_name = !empty($_POST['customer_name']) ? trim($_POST['customer_name']) : null;
$customer_phone = !empty($_POST['customer_phone']) ? trim($_POST['customer_phone']) : null;
$notes = !empty($_POST['notes']) ? trim($_POST['notes']) : null;
$items_data = json_decode($_POST['items_data'], true);

// التحقق من البيانات المطلوبة
if (empty($invoice_number) || empty($invoice_date) || empty($items_data)) {
    $_SESSION['error'] = 'الرجاء إدخال جميع البيانات المطلوبة';
    redirect('create_invoice.php');
}

// إضافة العميل إذا كان جديداً
$customer_id = null;
if (!empty($customer_name)) {
    $db->query("INSERT INTO customers (name, phone) VALUES (?, ?)", [$customer_name, $customer_phone]);
    $customer_id = $db->lastInsertId();
}

// حساب المبلغ الإجمالي
$total_amount = 0;
foreach ($items_data as $item) {
    $total_amount += $item['price'] * $item['quantity'];
}

// حفظ الفاتورة
$db->query("
    INSERT INTO invoices (invoice_number, customer_id, user_id, date, total_amount, notes)
    VALUES (?, ?, ?, ?, ?, ?)
", [
    $invoice_number,
    $customer_id,
    $_SESSION['user_id'],
    $invoice_date,
    $total_amount,
    $notes
]);

$invoice_id = $db->lastInsertId();

// حفظ عناصر الفاتورة
foreach ($items_data as $item) {
    $db->query("
        INSERT INTO invoice_items (invoice_id, product_id, product_name, price, quantity, total, warranty_end)
        VALUES (?, ?, ?, ?, ?, ?, ?)
    ", [
        $invoice_id,
        !empty($item['product_id']) ? $item['product_id'] : null,
        $item['name'],
        $item['price'],
        $item['quantity'],
        $item['price'] * $item['quantity'],
        !empty($item['warranty_end']) ? $item['warranty_end'] : null
    ]);

    // تحديث المخزون إذا كان المنتج موجوداً
    if (!empty($item['product_id'])) {
        $db->query("UPDATE products SET stock = stock - ? WHERE id = ?", [
            $item['quantity'],
            $item['product_id']
        ]);
    }
}

$_SESSION['success'] = 'تم حفظ الفاتورة بنجاح! رقم الفاتورة: ' . $invoice_number;
redirect('view_invoice.php?id=' . $invoice_id);