<?php
/**
 * ARQUIVO: processar_nf.php
 * Atualizado com o nome correto: nf_itens_nat_oper
 */
include '../config.php';
include '../configuracao/conexao.php';
$datem = date('d/m/y/h/m/s');
$enumvai="NF".$_SERVER["REMOTE_ADDR"]."-".$datem.time();
$V = "nf";

// --- 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 {
        $mysqli->query("DELETE FROM nf_itens WHERE nf_itens_nf_cab = $id_excluir");
        $mysqli->query("DELETE FROM reg_h010_mov WHERE reg_h010_mov_num_doc = $id_excluir AND reg_h010_mov_tipo_doc='NFE'");
        $mysqli->query("DELETE FROM nf_cab WHERE codigo = $id_excluir");
        $mysqli->commit();
        header("Location: busca_nf.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['nf_cab_cod_part'] ?? '';
        $nome       = $_POST['nf_cab_nome'] ?? '';
        $data_emi   = $_POST['nf_cab_dt_emi'] ?? date('Y-m-d');
        $status     = $_POST['nf_cab_status'] ?? 'A';
        $cod_ve     = $_POST['nf_cab_cod_veiculo'] ?? '';
        $desc_ve    = $_POST['nf_cab_desc_veiculo'] ?? '';
        $nf_cab_c_v = $_POST['nf_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['item_marca'][$k],
				'unid'     => $_POST['item_unid'][$k],
				'tipo'     => $_POST['item_tipo'][$k],
				'nat_oper' => $_POST['nfe_itens_nat_oper'][$k], // Captura do select do index.php
				'cfop'      => $_POST['tax_cfop_item'][$k] ?? '',
				'cfop'      => $_POST['tax_cfop_item'][$k] ?? '',
				'bicms'     => $_POST['tax_base_icms'][$k] ?? 0,
				'aicms'     => $_POST['tax_aliq_icms'][$k] ?? 0,
				'vicms'     => $_POST['tax_valor_icms'][$k] ?? 0,
				'bicmsst'   => $_POST['tax_base_st'][$k] ?? 0,
				'aicmsst'   => $_POST['tax_aliq_st'][$k] ?? 0,
				'vicmsst'   => $_POST['tax_valor_st'][$k] ?? 0,
				'bpis'      => $_POST['tax_base_pis'][$k] ?? 0,
				'apis'      => $_POST['tax_aliq_pis'][$k] ?? 0,
				'vpis'      => $_POST['tax_valor_pis'][$k] ?? 0,
				'bcofins'   => $_POST['tax_base_cofins'][$k] ?? 0,
				'acofins'   => $_POST['tax_aliq_cofins'][$k] ?? 0,
				'vcofins'   => $_POST['tax_valor_cofins'][$k] ?? 0,
				'frete'     => $_POST['tax_frete'][$k] ?? 0,
				'seguro'    => $_POST['tax_seguro'][$k] ?? 0,
				'outras'    => $_POST['tax_outros'][$k] ?? 0,
				'vipi'      => $_POST['tax_valor_ipi'][$k] ?? 0
                ];
            }
        }

        // --- GRAVAÇÃO DO CABEÇALHO ---
        if ($id > 0) {
            $sql_cab = "UPDATE nf_cab SET nf_cab_cod_part=?, nf_cab_nome=?, nf_cab_dt_emi=?, nf_cab_tot_nf=?, nf_cab_status=?, nf_cab_cod_veiculo=?, nf_cab_desc_veiculo=?, nf_cab_c_v=? ,enumsistema =? WHERE codigo=?";
            $stmt = $mysqli->prepare($sql_cab);
            $stmt->bind_param("sssssissss", $part, $nome, $data_emi, $soma_total_geral, $status, $cod_ve, $desc_ve, $nf_cab_c_v, $enumvai,$id);
            $stmt->execute();
            
            $mysqli->query("DELETE FROM nf_itens WHERE nf_itens_nf_cab = $id");
            $mysqli->query("DELETE FROM reg_h010_mov WHERE reg_h010_mov_num_doc = $id AND reg_h010_mov_tipo_doc = 'NFE'");
            $id_vincular = $id;
        } else {
            $sql_cab = "INSERT INTO nf_cab (ativo, data, nf_cab_cod_part, nf_cab_nome, nf_cab_dt_emi, nf_cab_tot_nf, nf_cab_status, nf_cab_cod_veiculo, nf_cab_desc_veiculo, nf_cab_c_v,enumsistema) VALUES ('S', NOW(), ?, ?, ?, ?, ?, ?, ?, ?,?)";
            $stmt = $mysqli->prepare($sql_cab);
            $stmt->bind_param("sssssssss", $part, $nome, $data_emi, $soma_total_geral, $status, $cod_ve, $desc_ve, $nf_cab_c_v,$enumvai);
            $stmt->execute();
            $id_vincular = $mysqli->insert_id; 
        }

        // --- GRAVAÇÃO DOS ITENS COM O CAMPO nf_itens_nat_oper ---
        $sql_item = "INSERT INTO nf_itens (
    ativo, data, nf_itens_nf_cab, nf_itens_cod_item, nf_itens_descr_item, 
    nf_itens_qtd_item, nf_itens_vl_item, nf_itens_desc_item_vl, nf_itens_tot_item, 
    nf_itens_marca_item, nf_itens_unid, nf_itens_tipo_item, nf_itens_nat_oper, 
    nf_itens_cfop, nf_itens_bicms, nf_itens_aicms, nf_itens_vicms, 
    nf_itens_bicmsst, nf_itens_aicmsst, nf_itens_vicmsst, nf_itens_bpis, 
    nf_itens_apis, nf_itens_vpis, nf_itens_bcofins, nf_itens_acofins, 
    nf_itens_vcofins, nf_itens_frete, nf_itens_seguro, nf_itens_outras, 
    nf_itens_vipi, 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(), 'NFE', ?, ?, ?, ?, ?, ?,?)";
        $stmt_h010 = $mysqli->prepare($sql_h010);

        foreach ($itens_para_salvar as $it) {
            // 1. Grava o Item (11 campos + 2 gerados automaticamente: ativo, data)
            // Tipagem: i (int), s (string), s (string), d (double), d, d, d, s, s, s, s
 <?php
/**
 * ARQUIVO: processar_nf.php
 * Atualizado com o nome correto: nf_itens_nat_oper
 */
include '../config.php';
include '../configuracao/conexao.php';
$datem = date('d/m/y/h/m/s');
$enumvai="NF".$_SERVER["REMOTE_ADDR"]."-".$datem.time();
$V = "nf";

// --- 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 {
        $mysqli->query("DELETE FROM nf_itens WHERE nf_itens_nf_cab = $id_excluir");
        $mysqli->query("DELETE FROM reg_h010_mov WHERE reg_h010_mov_num_doc = $id_excluir AND reg_h010_mov_tipo_doc='NFE'");
        $mysqli->query("DELETE FROM nf_cab WHERE codigo = $id_excluir");
        $mysqli->commit();
        header("Location: busca_nf.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['nf_cab_cod_part'] ?? '';
        $nome       = $_POST['nf_cab_nome'] ?? '';
        $data_emi   = $_POST['nf_cab_dt_emi'] ?? date('Y-m-d');
        $status     = $_POST['nf_cab_status'] ?? 'A';
        $cod_ve     = $_POST['nf_cab_cod_veiculo'] ?? '';
        $desc_ve    = $_POST['nf_cab_desc_veiculo'] ?? '';
        $nf_cab_c_v = $_POST['nf_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['item_marca'][$k],
				'unid'     => $_POST['item_unid'][$k],
				'tipo'     => $_POST['item_tipo'][$k],
				'nat_oper' => $_POST['nfe_itens_nat_oper'][$k], // Captura do select do index.php
				'cfop'      => $_POST['tax_cfop_item'][$k] ?? '',
				'cfop'      => $_POST['tax_cfop_item'][$k] ?? '',
				'bicms'     => $_POST['tax_base_icms'][$k] ?? 0,
				'aicms'     => $_POST['tax_aliq_icms'][$k] ?? 0,
				'vicms'     => $_POST['tax_valor_icms'][$k] ?? 0,
				'bicmsst'   => $_POST['tax_base_st'][$k] ?? 0,
				'aicmsst'   => $_POST['tax_aliq_st'][$k] ?? 0,
				'vicmsst'   => $_POST['tax_valor_st'][$k] ?? 0,
				'bpis'      => $_POST['tax_base_pis'][$k] ?? 0,
				'apis'      => $_POST['tax_aliq_pis'][$k] ?? 0,
				'vpis'      => $_POST['tax_valor_pis'][$k] ?? 0,
				'bcofins'   => $_POST['tax_base_cofins'][$k] ?? 0,
				'acofins'   => $_POST['tax_aliq_cofins'][$k] ?? 0,
				'vcofins'   => $_POST['tax_valor_cofins'][$k] ?? 0,
				'frete'     => $_POST['tax_frete'][$k] ?? 0,
				'seguro'    => $_POST['tax_seguro'][$k] ?? 0,
				'outras'    => $_POST['tax_outros'][$k] ?? 0,
				'vipi'      => $_POST['tax_valor_ipi'][$k] ?? 0
                ];
            }
        }

        // --- GRAVAÇÃO DO CABEÇALHO ---
        if ($id > 0) {
            $sql_cab = "UPDATE nf_cab SET nf_cab_cod_part=?, nf_cab_nome=?, nf_cab_dt_emi=?, nf_cab_tot_nf=?, nf_cab_status=?, nf_cab_cod_veiculo=?, nf_cab_desc_veiculo=?, nf_cab_c_v=? ,enumsistema =? WHERE codigo=?";
            $stmt = $mysqli->prepare($sql_cab);
            $stmt->bind_param("sssssissss", $part, $nome, $data_emi, $soma_total_geral, $status, $cod_ve, $desc_ve, $nf_cab_c_v, $enumvai,$id);
            $stmt->execute();
            
            $mysqli->query("DELETE FROM nf_itens WHERE nf_itens_nf_cab = $id");
            $mysqli->query("DELETE FROM reg_h010_mov WHERE reg_h010_mov_num_doc = $id AND reg_h010_mov_tipo_doc = 'NFE'");
            $id_vincular = $id;
        } else {
            $sql_cab = "INSERT INTO nf_cab (ativo, data, nf_cab_cod_part, nf_cab_nome, nf_cab_dt_emi, nf_cab_tot_nf, nf_cab_status, nf_cab_cod_veiculo, nf_cab_desc_veiculo, nf_cab_c_v,enumsistema) VALUES ('S', NOW(), ?, ?, ?, ?, ?, ?, ?, ?,?)";
            $stmt = $mysqli->prepare($sql_cab);
            $stmt->bind_param("sssssssss", $part, $nome, $data_emi, $soma_total_geral, $status, $cod_ve, $desc_ve, $nf_cab_c_v,$enumvai);
            $stmt->execute();
            $id_vincular = $mysqli->insert_id; 
        }

        // --- GRAVAÇÃO DOS ITENS COM O CAMPO nf_itens_nat_oper ---
        $sql_item = "INSERT INTO nf_itens (
    ativo, data, nf_itens_nf_cab, nf_itens_cod_item, nf_itens_descr_item, 
    nf_itens_qtd_item, nf_itens_vl_item, nf_itens_desc_item_vl, nf_itens_tot_item, 
    nf_itens_marca_item, nf_itens_unid, nf_itens_tipo_item, nf_itens_nat_oper, 
    nf_itens_cfop, nf_itens_bicms, nf_itens_aicms, nf_itens_vicms, 
    nf_itens_bicmsst, nf_itens_aicmsst, nf_itens_vicmsst, nf_itens_bpis, 
    nf_itens_apis, nf_itens_vpis, nf_itens_bcofins, nf_itens_acofins, 
    nf_itens_vcofins, nf_itens_frete, nf_itens_seguro, nf_itens_outras, 
    nf_itens_vipi, 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(), 'NFE', ?, ?, ?, ?, ?, ?,?)";
        $stmt_h010 = $mysqli->prepare($sql_h010);

        foreach ($itens_para_salvar as $it) {
            // 1. Grava o Item (11 campos + 2 gerados automaticamente: ativo, data)
            // Tipagem: i (int), s (string), s (string), d (double), d, d, d, s, s, s, s
           $stmt_item->bind_param("issddddssssssddddddddddddddds", 
        $id_vincular, 
        $it['cod'], 
        $it['descr'], 
        $it['qtd'], 
        $it['vl'], 
        $it['desc'], 
        $it['tot'], 
        $it['marca'], 
        $it['unid'], 
        $it['tipo'], 
        $it['nat_oper'],
        $it['cfop'],     // nf_itens_cfop
        $it['bicms'],    // nf_itens_bicms
        $it['aicms'],    // nf_itens_aicms
        $it['vicms'],    // nf_itens_vicms
        $it['bicmsst'],  // nf_itens_bicmsst
        $it['aicmsst'],  // nf_itens_aicmsst
        $it['vicmsst'],  // nf_itens_vicmsst
        $it['bpis'],     // nf_itens_bpis
        $it['apis'],     // nf_itens_apis
        $it['vpis'],     // nf_itens_vpis
        $it['bcofins'],  // nf_itens_bcofins
        $it['acofins'],  // nf_itens_acofins
        $it['vcofins'],  // nf_itens_vcofins
        $it['frete'],    // nf_itens_frete
        $it['seguro'],   // nf_itens_seguro
        $it['outras'],   // nf_itens_outras
        $it['vipi'],     // nf_itens_vipi
        $enumvai         // enumsistema
            );
            $stmt_item->execute();

            // 2. Lógica de Estoque (H010)
            if ($nf_cab_c_v == 'S') {
                $origem = 'EST'; $destino = 'NFE'; $mov_tipo = 'S';
            } else {
                $origem = 'NFE'; $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 "<script>alert('Nota Fiscal $id_vincular processada com sucesso!'); window.location.href='index.php';</script>";

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