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

// Identificador único de transação (Auditoria)
$datem = date('d/m/y/H/i/s');
$enumvai = "CAIXA".$_SERVER["REMOTE_ADDR"]."-".$datem."-".time();

// Dados do formulário
$data_lcto     = $_POST['data'];
$valor         = (float)$_POST['valor_final']; 
$origem        = $_POST['reg_i250_cta_cre']; 
$destino       = $_POST['reg_i250_cta_deb'];
$historico_base = $_POST['reg_i250_hist'];
$documento     = $_POST['titulo_ref'] ?? '';
$cod_part      = $_POST['cod_participante'] ?? ''; 
$nome_part     = $_POST['nome_participante'] ?? ''; 

$num_tit       = (int)$_POST['num_tit_c140'];
$num_parc      = (int)$_POST['num_parc_c141'];

$historico_full = $historico_base . " - PART: " . $nome_part;

$mysqli->begin_transaction();

try {
    // 1. INSERIR NA REG_I200
    // O reg_i200_num_lcto continua a ser um identificador temporal para o SPED
    $num_lcto_contabil = time(); 
    
    $sql_i200 = "INSERT INTO reg_i200 (ativo, enumsistema, data, reg_i200_num_lcto, reg_i200_dt_lcto, reg_i200_vl_lcto, reg_i200_ind_lcto) 
                 VALUES ('S', ?, CURDATE(), ?, ?, ?, 'N')";
    $stmt1 = $mysqli->prepare($sql_i200);
    $stmt1->bind_param("sisd", $enumvai, $num_lcto_contabil, $data_lcto, $valor); 
    $stmt1->execute();

    // CAPTURA O ID (CODIGO) GERADO ACIMA
    $id_i200_vinculo = $mysqli->insert_id;

    // 2. INSERIR NA REG_I250 (DÉBITO) - Ligação direta via campo 'codigo_i200'
    // Nota: Certifique-se de que a coluna reg_i250_id_i200 (ou similar) existe na sua tabela reg_i250
    $sql_i250_d = "INSERT INTO reg_i250 (ativo, enumsistema, data, reg_i250_cod_cta, reg_i250_vl_dc, reg_i250_ind_dc, reg_i250_hist, reg_i250_num_arq, reg_i250_cod_part, reg_i250_descr_part, 	reg_i250_reg_i200) 
                   VALUES ('S', ?, CURDATE(), ?, ?, 'D', ?, ?, ?, ?, ?)";
    $stmt2 = $mysqli->prepare($sql_i250_d);
    // Tipos: s(enum), s(cta), d(valor), s(hist), s(doc), s(cod), s(nome), i(id_vinculo)
    $stmt2->bind_param("ssdssssi", $enumvai, $destino, $valor, $historico_full, $documento, $cod_part, $nome_part, $id_i200_vinculo);
    $stmt2->execute();

    // 3. INSERIR NA REG_I250 (CRÉDITO)
    $sql_i250_c = "INSERT INTO reg_i250 (ativo, enumsistema, data, reg_i250_cod_cta, reg_i250_vl_dc, reg_i250_ind_dc, reg_i250_hist, reg_i250_num_arq, reg_i250_cod_part, reg_i250_descr_part, 	reg_i250_reg_i200) 
                   VALUES ('S', ?, CURDATE(), ?, ?, 'C', ?, ?, ?, ?, ?)";
    $stmt3 = $mysqli->prepare($sql_i250_c);
    $stmt3->bind_param("ssdssssi", $enumvai, $origem, $valor, $historico_full, $documento, $cod_part, $nome_part, $id_i200_vinculo);
    $stmt3->execute();

    // 4. ATUALIZAR STATUS DA PARCELA (C141)
    $sql_status_parc = "UPDATE reg_c141 SET reg_c141_status = 'F' WHERE reg_c141_c140_origem = ? AND reg_c141_num_parc = ? AND ativo = 's'";
    $stmt4 = $mysqli->prepare($sql_status_parc);
    $stmt4->bind_param("ii", $num_tit, $num_parc);
    $stmt4->execute();

    // 5. ATUALIZAR STATUS DO TÍTULO (C140)
    $sql_check_c140 = "UPDATE reg_c140 SET reg_c140_status = 'F' 
                       WHERE codigo = ? 
                       AND NOT EXISTS (SELECT 1 FROM reg_c141 WHERE reg_c141_c140_origem = ? AND reg_c141_status = 'A' AND ativo = 's')";
    $stmt5 = $mysqli->prepare($sql_check_c140);
    $stmt5->bind_param("ii", $num_tit, $num_tit);
    $stmt5->execute();

    $mysqli->commit();
    echo "<script>alert('Sucesso! Lançamento vinculado ao ID: $id_i200_vinculo'); window.location.href = 'index.php';</script>";

} catch (Exception $e) {
    $mysqli->rollback();
    echo "Erro ao processar vínculo: " . $e->getMessage();
}
?>