<?php
declare(strict_types=1);
header('Content-Type: application/json');
require_once "../configuracao/conexao.php"; 

$id = (int)($_GET['id'] ?? 0);
$status = strtoupper($_GET['status'] ?? ''); 

if ($id > 0 && $status === 'P') {
    try {
        $mysqli->begin_transaction();

        // 1. Busca a nota e valida (usando os nomes reais das colunas)
        $res = $mysqli->query("SELECT codigo, nf_cab_c_v, nf_cab_status FROM nf_cab WHERE codigo = $id");
        $cab = $res->fetch_assoc();

        if (!$cab) throw new Exception("Nota não encontrada.");
        if ($cab['nf_cab_status'] !== 'P') throw new Exception("Nota não está pendente.");

        $tipoMov = $cab['nf_cab_c_v']; // 'E' ou 'S'

        // 2. Atualiza Status para 'F'
        $mysqli->query("UPDATE nf_cab SET nf_cab_status = 'F' WHERE codigo = $id");

        // 3. Movimenta Estoque (H010)
        $itens = $mysqli->query("SELECT nf_itens_cod_item, nf_itens_qtd_item FROM nf_itens WHERE nf_itens_nf_cab = $id");
        
        $stmtMov = $mysqli->prepare("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) VALUES ('S', CURDATE(), 'NFE', ?, ?, ?, ?, ?, ?)");

        while ($item = $itens->fetch_assoc()) {
            $qtd = (float)$item['nf_itens_qtd_item'];
            $cod = $item['nf_itens_cod_item'];

            // Lógica: Se 'S' (Saída) -> Origem: EST / Destino: NFE
            // Se 'E' (Entrada) -> Origem: NFE / Destino: EST
            if ($tipoMov === 'S') {
                $origem = 'EST'; $destino = 'NFE'; $sentido = 'S';
            } else {
                $origem = 'NFE'; $destino = 'NFE'; $sentido = 'E';
            }

            // Usamos o 'codigo' da nota como número de documento, já que nf_cab_num não existe
            $stmtMov->bind_param("idssss", $cab['codigo'], $qtd, $cod, $origem, $destino, $sentido);
            $stmtMov->execute();
        }

        $mysqli->commit();
        echo json_encode(['status' => 'sucesso', 'message' => 'Estoque processado com sucesso!']);

    } catch (Exception $e) {
        $mysqli->rollback();
        echo json_encode(['status' => 'erro', 'message' => $e->getMessage()]);
    }
}
?>