<?php  session_start();
if (!isset($_SESSION['id'])) { header("Location: ../index/index.php"); exit(); }
?>
<?php
/**
 * ARQUIVO: processar_ped.php
 */
include '../config.php';
include '../configuracao/conexao.php';

$datem = date('d-m-y-H-i-s');
$enumvai = "ped" . $_SERVER["REMOTE_ADDR"] . "-" . $datem . "-" . time();

// --- 1. AÇÃO DE EXCLUSÃO ---
if (isset($_GET['acao']) && $_GET['acao'] === 'excluir' && isset($_GET['id'])) {
    $id_excluir = intval($_GET['id']);
    $mysqli->begin_transaction();
    try {
		// 1.1 Capturar a origem antes de excluir para poder retornar o status na org_car
        $sql_origem = "SELECT ped_orc_cab_origem FROM ped_cab WHERE codigo = ?";
        $stmt_ori = $mysqli->prepare($sql_origem);
        $stmt_ori->bind_param("i", $id_excluir);
        $stmt_ori->execute();
        $res_ori = $stmt_ori->get_result();
        $dados_ped = $res_ori->fetch_assoc();
        $origem_id = $dados_ped['ped_orc_cab_origem'] ?? null;

        // 1.2 Se houver origem, volta o status para 'P' (Pendente)
        if (!empty($origem_id)) {
            $stmt_update_org = $mysqli->prepare("UPDATE orc_cab SET orc_cab_status = 'P' WHERE codigo = ?");
            $stmt_update_org->bind_param("s", $origem_id);
            $stmt_update_org->execute();
        }
		
        $mysqli->query("DELETE FROM ped_itens WHERE ped_itens_ped_cab = $id_excluir");
        $mysqli->query("DELETE FROM reg_h010_mov WHERE reg_h010_mov_num_doc = $id_excluir AND reg_h010_mov_tipo_doc='PED'");
        $mysqli->query("DELETE FROM ped_cab WHERE codigo = $id_excluir");
		
        $mysqli->commit();
        header("Location: busca_ped.php?msg=excluido");
        exit;
    } catch (Exception $e) {
        $mysqli->rollback();
        die("Erro ao excluir: " . $e->getMessage());
    }
}

// --- 2. AÇÃO DE SALVAR / ATUALIZAR ---
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    $mysqli->begin_transaction();
    try {
        $id          = intval($_POST['codigo'] ?? 0);
        $part        = $_POST['ped_cab_cod_part'] ?? '';
        $nome        = $_POST['ped_cab_nome'] ?? '';
        $data_emi    = $_POST['ped_cab_dt_emi'] ?? date('Y-m-d');
        $status      = $_POST['ped_cab_status'] ?? 'A';
        $cod_ve      = $_POST['ped_cab_cod_veiculo'] ?? '';
        $desc_ve     = $_POST['ped_cab_desc_veiculo'] ?? '';
        $ped_cab_c_v = $_POST['ped_cab_c_v'] ?? ''; 

        $itens_para_salvar = [];
        $soma_total_geral  = 0;

        if (isset($_POST['item_cod'])) {
            foreach ($_POST['item_cod'] as $k => $cod_item) {
                if (empty($cod_item)) continue;
                
                $qtd   = floatval($_POST['item_qtd'][$k]); 
                $valor = floatval($_POST['item_vl'][$k]);
                $desc  = floatval($_POST['item_desc'][$k]);
                $total_item = ($qtd * $valor) - $desc;
                $soma_total_geral += $total_item;

                $itens_para_salvar[] = [
                    'cod'   => $cod_item,
                    'descr' => $_POST['item_descr'][$k],
                    'qtd'   => $qtd,
                    'vl'    => $valor,
                    'desc'  => $desc,
                    'tot'   => $total_item,
                    'marca' => $_POST['ped_itens_marca_item'][$k],
                    'unid'  => $_POST['item_unid'][$k],
                    'tipo'  => $_POST['ped_itens_tipo_item'][$k]
                ];
            }
        }

        // --- GRAVAÇÃO DO CABEÇALHO ---
        if ($id > 0) {
            $sql_cab = "UPDATE ped_cab SET ped_cab_cod_part=?, ped_cab_nome=?, ped_cab_dt_emi=?, ped_cab_tot_ped=?, ped_cab_status=?, ped_cab_cod_veiculo=?, ped_cab_desc_veiculo=?, ped_cab_c_v=?, enumsistema=? WHERE codigo=?";
            $stmt = $mysqli->prepare($sql_cab);
            $stmt->bind_param("sssssisssi", $part, $nome, $data_emi, $soma_total_geral, $status, $cod_ve, $desc_ve, $ped_cab_c_v, $enumvai, $id);
            $stmt->execute();
            
            $mysqli->query("DELETE FROM ped_itens WHERE ped_itens_ped_cab = $id");
            $mysqli->query("DELETE FROM reg_h010_mov WHERE reg_h010_mov_num_doc = $id AND reg_h010_mov_tipo_doc = 'PED'");
            $id_vincular = $id;
        } else {
            $sql_cab = "INSERT INTO ped_cab (ativo, data, ped_cab_cod_part, ped_cab_nome, ped_cab_dt_emi, ped_cab_tot_ped, ped_cab_status, ped_cab_cod_veiculo, ped_cab_desc_veiculo, ped_cab_c_v, enumsistema) VALUES ('S', NOW(), ?, ?, ?, ?, ?, ?, ?, ?, ?)";
            $stmt = $mysqli->prepare($sql_cab);
            // 9 campos para 9 interrogações
            $stmt->bind_param("sssssssss", $part, $nome, $data_emi, $soma_total_geral, $status, $cod_ve, $desc_ve, $ped_cab_c_v, $enumvai);
            $stmt->execute();
            $id_vincular = $mysqli->insert_id; 
        }

        // --- PREPARAÇÃO DAS QUERIES DE ITENS E MOVIMENTAÇÃO ---
        $sql_item = "INSERT INTO ped_itens (ativo, data, ped_itens_ped_cab, ped_itens_cod_item, ped_itens_descr_item, ped_itens_qtd_item, ped_itens_vl_item, ped_itens_desc_item_vl, ped_itens_tot_item, ped_itens_marca_item, ped_itens_unid, ped_itens_tipo_item, enumsistema) VALUES ('S', NOW(), ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
        $stmt_item = $mysqli->prepare($sql_item);

        $sql_h010 = "INSERT INTO reg_h010_mov (ativo, data, reg_h010_mov_tipo_doc, reg_h010_mov_num_doc, reg_h010_mov_qtd_doc, reg_h010_mov_cod_item, reg_h010_mov_origem_doc, reg_h010_mov_dest_doc, reg_h010_mov_item, enumsistema) VALUES ('S', NOW(), 'PED', ?, ?, ?, ?, ?, ?, ?)";
        $stmt_h010 = $mysqli->prepare($sql_h010);

        foreach ($itens_para_salvar as $it) {
            // 1. Grava o Item
            $stmt_item->bind_param("issddddssss", 
                $id_vincular, $it['cod'], $it['descr'], $it['qtd'], $it['vl'], $it['desc'], $it['tot'], $it['marca'], $it['unid'], $it['tipo'], $enumvai
            );
            $stmt_item->execute();

            // 2. Lógica de Estoque
            if ($ped_cab_c_v == 'S') {
                $origem = 'EST'; $destino = 'PED'; $mov_tipo = 'S';
            } else {
                $origem = 'PED'; $destino = 'EST'; $mov_tipo = 'E';
            }

            // 3. Grava Movimentação
            $stmt_h010->bind_param("idsssss", $id_vincular, $it['qtd'], $it['cod'], $origem, $destino, $mov_tipo, $enumvai);
            $stmt_h010->execute();
        }

        $mysqli->commit();
        echo $id_vincular; 
        exit;

    } catch (Exception $e) {
        $mysqli->rollback();
        die("Erro Crítico: " . $e->getMessage());
    }
}
?>