<?php
declare(strict_types=1);
header('Content-Type: application/json');

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

if ($id > 0 && $status === 'P') {
    try {
        $conn = new mysqli("localhost", "root", "", "dados");
        $conn->begin_transaction();

        // 1. Busca os dados da nota para localização precisa do faturamento
        $res = $conn->query("SELECT nf_cab_num, nf_cab_cod_part, nf_cab_c_v FROM nf_cab WHERE codigo = $id");
        $cab = $res->fetch_assoc();
        
        $numNota = $cab['nf_cab_num'];
        $codPart = $cab['nf_cab_cod_part'];
        $tipoMov = $cab['nf_cab_c_v'];

        // 2. ATUALIZA STATUS DA NOTA PARA FECHADO ('f')
        $conn->query("UPDATE nf_cab SET nf_cab_status = 'f' WHERE codigo = $id");

        // 3. ATUALIZA STATUS NO FATURAMENTO (reg_c140)
        // Filtros: Número igual, Participante igual e Tipo de Título 'NF'
        $stmtC140 = $conn->prepare("UPDATE reg_c140 SET reg_c140_status = 'f' 
                                    WHERE reg_c140_num_tit = ? 
                                    AND reg_c140_cod_part = ? 
                                    AND reg_c140_ind_tit = 'NF'");
        $stmtC140->bind_param("ss", $numNota, $codPart);
        $stmtC140->execute();

        // 4. Movimentação de Estoque (Lógica de itens)
        $itens = $conn->query("SELECT nf_itens_cod_item, nf_itens_qtd_item FROM nf_itens WHERE nf_itens_nf_cab = $id");
        
        $stmtMov = $conn->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) VALUES ('S', CURDATE(), 'NFE', ?, ?, ?)");

        while ($item = $itens->fetch_assoc()) {
            $qtd = (float)str_replace(',', '.', $item['nf_itens_qtd_item']);
            if ($tipoMov === 'S') { $qtd *= -1; }

            $codItem = $item['nf_itens_cod_item'];
            $stmtMov->bind_param("sds", $numNota, $qtd, $codItem);
            $stmtMov->execute();
        }

        $conn->commit();
        echo json_encode(['status' => 'sucesso', 'message' => 'Nota e Faturamento (C140) fechados com sucesso!']);

    } catch (Exception $e) {
        if (isset($conn)) $conn->rollback();
        echo json_encode(['status' => 'erro', 'message' => 'Erro: ' . $e->getMessage()]);
    }
}