اذهب إلى المحتوى

السؤال

نشر (معدل)

السلام عليكم بش مهندسين لو تكرمتم معي زر التعديل عند التعديل على فاتوره المبيعات عند التعديل يضاف الرصيد قيمه الفاتوره المعدله الى الرصيد السابق ولا يتعدل الفارق في الرصيد للفاتوره

<?php

// الاتصال بقاعدة البيانات
$servername = "localhost";
$username = "root";
$password = "root";
$dbname = "00";

$conn = new mysqli($servername, $username, $password, $dbname);

// التحقق من الاتصال
if ($conn->connect_error) {
    die("فشل الاتصال بقاعدة البيانات: " . $conn->connect_error);
}

// الحصول على بيانات الفاتورة من طلب POST
$sales_number = $_POST["sales_number"];
$customer = $_POST["customer"];
$account_name = $_POST["account_name"];
$sales_date = $_POST["sales_date"];
$item_names = $_POST["item_name"];
$item_quantities = $_POST["item_quantity"];
$item_unit_prices = $_POST["item_unit_price"];
$totals = $_POST["total"];
$total = $_POST["total"];

// تحديث الفاتورة في قاعدة البيانات
$sql = "UPDATE sales SET customer='$customer', account_name='$account_name', sales_date='$sales_date', total='$total' WHERE sales_number='$sales_number'";
$conn->query($sql);

// تحديث العناصر في الفاتورة
for ($i = 0; $i < count($item_names); $i++) {
    $item_name = $item_names[$i];
    $item_quantity = $item_quantities[$i];
    $item_unit_price = $item_unit_prices[$i];
    $total = $totals[$i];

    $sql = "UPDATE sales SET item_name='$item_name', item_quantity='$item_quantity', item_unit_price='$item_unit_price', total='$total' WHERE sales_number='$sales_number'";
    $conn->query($sql);
    
}


$name = $account_name;
$sql = "UPDATE account SET debit = debit + $total WHERE name = '$name'";
$conn->query($sql);


// التحقق من وجود العناصر المحدثة
if (isset($_POST['item_name']) && isset($_POST['item_quantity'])) {
    $item_names = $_POST['item_name'];
    $item_quantities = $_POST['item_quantity'];

    // حلقة لتحديث الكمية لكل صنف
    foreach ($item_names as $index => $item_name) {
        $item_quantity = $item_quantities[$index];

        // استعلام لتحديث الكمية في المخزن
        $sql = "UPDATE inventory SET quantity = quantity - $item_quantity WHERE name = '$item_name'";
        $conn->query($sql);
    }
}
// تحديث القيد المحاسبي المرتبط بالفاتورة
// تحديث القيد المحاسبي المرتبط بالفاتورة
$sql = "UPDATE journal_entries SET credit = 0, debit = $total WHERE name = '$customer' AND debit > 0";
$conn->query($sql);

$sql2 = "UPDATE journal_entries SET credit = $total, debit = 0 WHERE name = 'حساب المبيعات' AND credit > 0";
$conn->query($sql2);

echo "تم تحديث القيد المحاسبي بنجاح.";


// إغلاق الاتصال بقاعدة البيانات
$conn->close();

// إعادة توجيه المستخدم إلى الصفحة الرئيسية
header("Location: index.php");

?>
تم التعديل في بواسطة Mustafa Suleiman
تعديل عنوان السؤال

Recommended Posts

  • 0
نشر

أنت تقوم بتحديث الرصيد في جدول account باستخدام الاستعلام التالي:

UPDATE account SET debit = debit + $total WHERE name = '$name';

وذلك الاستعلام سيضيف قيمة الفاتورة المعدلة إلى الرصيد السابق، فلو كانت الفاتورة الأصلية بقيمة 100 دولار، والفاتورة المعدلة بقيمة 200 دولار، فسيؤدي الاستعلام إلى تحديث الرصيد إلى 300 دولار.

لذا،  تحتاج إلى تحديث الرصيد باستخدام الفارق بين قيمة الفاتورة الأصلية وقيمة الفاتورة المعدلة، باستخدام الاستعلام التالي:

UPDATE account SET debit = debit + ($total - $old_total) WHERE name = '$name';

حيث $total هي قيمة الفاتورة المعدلة، و$old_total هي قيمة الفاتورة الأصلية، ففي حال الفاتورة الأصلية بقيمة 100 دولار، والفاتورة المعدلة بقيمة 200 دولار، فسيعمل الاستعلام على تحديث الرصيد إلى 100 دولار.

أي نقوم بتحديث الكود كالتالي:

// التحقق من وجود العناصر المحدثة
if (isset($_POST['item_name']) && isset($_POST['item_quantity'])) {
  $item_names = $_POST['item_name'];
  $item_quantities = $_POST['item_quantity'];
  // حلقة لتحديث الكمية لكل صنف
  foreach ($item_names as $index => $item_name) {
    $item_quantity = $item_quantities[$index];
    // استعلام لتحديث الكمية في المخزن
    $sql = "UPDATE inventory SET quantity = quantity - $item_quantity WHERE name = '$item_name'";
    $conn->query($sql);
  }
}

// الحصول على قيمة الفاتورة الأصلية
$sql = "SELECT total FROM sales WHERE sales_number = '$sales_number'";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
  $row = $result->fetch_assoc();
  $old_total = $row['total'];
} else {
  $old_total = 0;
}

// تحديث الرصيد
$name = $account_name;
$sql = "UPDATE account SET debit = debit + ($total - $old_total) WHERE name = '$name'";
$conn->query($sql);

// تحديث القيد المحاسبي المرتبط بالفاتورة
// تحديث القيد المحاسبي المرتبط بالفاتورة
$sql = "UPDATE journal_entries SET credit = 0, debit = $total WHERE name = '$customer' AND debit > 0";
$conn->query($sql);
$sql2 = "UPDATE journal_entries SET credit = $total, debit = 0 WHERE name = 'حساب المبيعات' AND credit > 0";
$conn->query($sql2);
echo "تم تحديث القيد المحاسبي بنجاح.";

// إغلاق الاتصال بقاعدة البيانات
$conn->close();
// إعادة توجيه المستخدم إلى الصفحة الرئيسية
header("Location: index.php");

 

  • 0
نشر

<!DOCTYPE html>
<html dir="rtl">
<head>
    <title>تعديل الفاتورة</title>
    <link rel="stylesheet" type="text/css" href="styles/stylessal.css">
      <script>
        function calculateTotal() {
            var quantities = document.getElementsByName('item_quantity[]');
            var prices = document.getElementsByName('item_unit_price[]');
            var totals = document.getElementsByName('total[]');
            var grandTotal = document.getElementsByName('grand_total')[0];

            var total = 0;

            for (var i = 0; i < quantities.length; i++) {
                var quantity = parseFloat(quantities[i].value);
                var price = parseFloat(prices[i].value);

                var itemTotal = quantity * price;
                totals[i].value = itemTotal.toFixed(2);

                total += itemTotal;
            }

            grandTotal.value = total.toFixed(2);
        }
    </script>
</head>
<body>
<?php
// الاتصال بقاعدة البيانات
$servername = "localhost";
$username = "root";
$password = "root";
$dbname = "00";

$conn = new mysqli($servername, $username, $password, $dbname);

// التحقق من الاتصال
if ($conn->connect_error) {
    die("فشل الاتصال بقاعدة البيانات: " . $conn->connect_error);
}

if ($_SERVER["REQUEST_METHOD"] == "GET" && isset($_GET["sales_number"])) {
    $sales_number = $_GET["sales_number"];
    $sql = "SELECT * FROM sales WHERE sales_number = '$sales_number'";
    $result = $conn->query($sql);

    // تحقق من وجود صفوف البيانات
    if ($result->num_rows > 0) {
        $total = 0; // المتغير لتخزين المجموع
        // نموذج التعديل
   // استرداد البيانات الأولية من النتيجة
$row = $result->fetch_assoc();
  echo "<h1>تعديل الفاتورة رقم: " . $sales_number . "</h1>";
        echo "<form method='post' action='save_edit_invoicesal.php'>";

echo "<h1>تعديل الفاتورة رقم: " . $sales_number . "</h1>";
echo "<form method='post' action=''>";
echo "<label for='sales_number'>رقم الفاتورة</label>";
echo "<input type='text' name='sales_number' class='form-control' value='" . $sales_number . "' required>";
echo "<div class='form-group'>";
echo "<label for='customer'>العميل:</label>";
echo "<select name='customer' class='form-control' style='font-size: 16px; height: 40px;' required>";
echo "<option value='" . $row["customer"] . "'>" . $row["customer"] . "</option>";
echo "</select>";
echo "</div>";
echo "<div class='form-group'>";
echo "<label for='account_name'>من حساب</label>";
echo "<select name='account_name' class='form-control'  style='font-size: 16px; height: 40px;' required>";
echo "<option value='" . $row["account_name"] . "'>" . $row["account_name"] . "</option>";
echo "</select>";
echo "</div>";
echo "<div class='form-group'>";
echo "<label for='sales_date'>التاريخ</label>";
echo "<input type='sales_date' name='sales_date' class='form-control' value='" . $row["sales_date"] . "' required>";
echo "</div>";

        echo "<div class='form-group'>";
        echo "<label for='items'>العناصر</label>";
        echo "<table class='table table-bordered'>";
        echo "<thead>";
        echo "<tr>";
        echo "<th>الاسم</th>";
        echo "<th>الكمية</th>";
        echo "<th>السعر</th>";
        echo "<th>القيمة</th>";
        echo "</tr>";
        echo "</thead>";
        echo "<tbody>";

        // عرض صفوف العناصر
        while ($row) {
            echo "<tr>";
            echo "<td><input type='text' name='item_name[]' class='form-control' value='" . $row["item_name"] . "' oninput='calculateTotal()'></td>";
            echo "<td><input type='number' name='item_quantity[]' class='form-control' value='" . $row["item_quantity"] . "' oninput='calculateTotal()'></td>";
            echo "<td><input type='number' name='item_unit_price[]' class='form-control' value='" . $row["item_unit_price"] . "' oninput='calculateTotal()'></td>";
            echo "<td><input type='number' name='total[]' class='form-control' value='" . $row["total"] . "' readonly></td>";
            echo "</tr>";
            $total += $row["total"];
            $row = $result->fetch_assoc(); // استرداد الصف التالي
        }

        echo "</tbody>";
        echo "</table>";
        echo "</div>";
        echo "<div class='form-group'>";
        echo "<label for='total'>المجموع</label>";
        echo "<input type='number' name='grand_total' class='form-control' value='" . $total . "' readonly>";
        echo "</div>";
        echo "<input type='submit' value='تحديث' class='btn btn-primary'>";
        echo "</form>";


        echo "</form>";
    } else {
        echo "لا يوجد فاتورة بهذا الرقم.";
    }
}

$conn->close();
?>
</body>
</html>

 

هل عليا تغير القيمه الاجمالي الى الاجمالي القديم

في هذا الكود

الله يحفظك بش مهندس

 

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...