﻿﻿??????????????
﻿﻿??????????????
<?php
include('session.php');
include 'connection.php';


// Database connection parameters
$user = 'xceljsr_db';
$password = 'xcel@123#$';
$database = 'anilpzp6_account';
$servername = 'localhost';

// Connect to the database
$mysqli = new mysqli($servername, $user, $password, $database);

// Check connection
if ($mysqli->connect_error) {
    die('Connect Error (' . $mysqli->connect_errno . ') ' . $mysqli->connect_error);
}

if (!isset($_GET['idk'])) {
    die("Invoice ID not provided");
}

$invoice_id = $_GET['idk'];

// Fetch invoice details
$sql = "SELECT * FROM invoice WHERE invoice = ?";
$stmt = $mysqli->prepare($sql);
$stmt->bind_param("s", $invoice_id);
$stmt->execute();
$result = $stmt->get_result();
$invoice_data = $result->fetch_assoc();

if (!$invoice_data) {
    die("Invoice not found");
}

// Fetch invoice particulars
$sql_particulars = "SELECT * FROM invoice_particulars WHERE invoice = ?";
$stmt_particulars = $mysqli->prepare($sql_particulars);
$stmt_particulars->bind_param("s", $invoice_id);
$stmt_particulars->execute();
$particulars_result = $stmt_particulars->get_result();
$particulars = [];
while ($row = $particulars_result->fetch_assoc()) {
    $particulars[] = $row;
}

// Handle form submission
if (isset($_POST['update'])) {
    // Start transaction
    $mysqli->begin_transaction();
    
    try {
        // First, get the original addedby value BEFORE any updates
        $stmt_original = $mysqli->prepare("SELECT addedby FROM invoice WHERE invoice = ?");
        $stmt_original->bind_param("s", $invoice_id);
        $stmt_original->execute();
        $original_result = $stmt_original->get_result();
        $original_data = $original_result->fetch_assoc();
        $original_addedby = $original_data['addedby'];
        
        // Use original addedby, fallback to current session if empty
        $addedby_value = !empty($original_addedby) ? $original_addedby : $_SESSION['uid'];
        
        // Update invoice data
        $stmt = $mysqli->prepare("UPDATE invoice SET 
            gstin = ?, office = ?, address = ?, edate = ?, 
            origin = ?, destination = ?, custname = ?, custmobile = ?, 
            custadd = ?, custgst = ?, convcharge = ?, 
            igst = ?, cgst = ?, sgst = ?, gst_mode = ? 
            WHERE invoice = ?");
            
        $stmt->bind_param("ssssssssssssssss", 
            $_POST['gstin'], $_POST['office'], $_POST['address'], 
            $_POST['edate'], $_POST['origin'], $_POST['destination'], 
            $_POST['custname'], $_POST['custmobile'], $_POST['custadd'], $_POST['custgst'], 
            $_POST['convcharge'], $_POST['igst'], $_POST['cgst'], 
            $_POST['sgst'], $_POST['gst_mode'], $invoice_id);
            
        $stmt->execute();

        // Delete existing particulars
        $stmt = $mysqli->prepare("DELETE FROM invoice_particulars WHERE invoice = ?");
        $stmt->bind_param("s", $invoice_id);
        $stmt->execute();

        // Insert updated particulars
        if (isset($_POST['gcno']) && is_array($_POST['gcno'])) {
            foreach ($_POST['gcno'] as $i => $current_gcno) {
                if (!empty($current_gcno)) {
                    $stmt = $mysqli->prepare("INSERT INTO invoice_particulars 
                        (gcno, particulars, weight, rate, amount, invoice, addedby) 
                        VALUES (?, ?, ?, ?, ?, ?, ?)");
                        
                    $stmt->bind_param("sssssss", 
                        $_POST['gcno'][$i],
                        $_POST['particulars'][$i],
                        $_POST['weight'][$i],
                        $_POST['rate'][$i],
                        $_POST['amount'][$i],
                        $invoice_id,
                        $addedby_value  // Use the original creator's ID
                    );
                    $stmt->execute();
                }
            }
        }

        // Commit transaction
        $mysqli->commit();
        echo '<script>alert("Invoice Updated Successfully..."); window.location.href="invoice.php";</script>';
        exit;
    } catch (Exception $e) {
        // Rollback on error
        $mysqli->rollback();
        echo "Error updating invoice: " . $e->getMessage();
    }
}

// Include the invoice form template but with pre-filled data
include('invoice-form.php');
?>