D7net
Home
Console
Upload
information
Create File
Create Folder
About
Tools
:
/
var
/
www
/
html
/
crsys
/
adm
/
vendor
/
api
/
Filename :
lerOrcamento.php
back
Copy
<?php include_once "ConectaPdo.php"; date_default_timezone_set("America/Sao_Paulo"); // ========================= // 🔥 FUNÇÃO DE LOG // ========================= /* function writeLog($msg) { $file = __DIR__ . "/debug_lerOrcamento_log.txt"; $time = date("Y-m-d H:i:s"); file_put_contents($file, "[$time] $msg\n", FILE_APPEND); } // ========================= // 🔥 LOG INICIAL // ========================= writeLog("================================"); writeLog("INÍCIO REQUEST"); // 🔥 LOG RAW GET writeLog("GET RECEBIDO: " . print_r($_GET, true)); */ // ========================= // 🔥 RECEBE PARAMETROS // ========================= $tipo_usu = $_GET['tipo_usu'] ?? ''; $id_usu = $_GET['id_usu'] ?? ''; $orca_id = $_GET['orca_id'] ?? ''; $num_rev = $_GET['num_rev'] ?? ''; $tipo = $_GET['tipo'] ?? ''; $empr_id = $_GET['empr_id'] ?? ''; $material = $_GET['material'] ?? ''; // 🔥 LOG VARIÁVEIS TRATADAS /* writeLog("PARAMETROS TRATADOS:"); writeLog("tipo_usu=$tipo_usu | id_usu=$id_usu | orca_id=$orca_id | num_rev=$num_rev | tipo=$tipo | empr_id=$empr_id | material=$material"); */ // =============================== // CONSULTA ÚLTIMA REVISÃO // =============================== $stmt4 = $pdo->prepare(" SELECT g.orca_id, g.num_revisao, g.data_ult_rev FROM gre_cab_orcamento g WHERE g.empr_id = :empr_id and g.orca_id = :orca_id AND g.data_ult_rev = ( SELECT MAX(data_ult_rev) FROM gre_cab_orcamento WHERE orca_id = g.orca_id and empr_id = g.empr_id and num_revisao = g.num_revisao ) LIMIT 1 "); $stmt4->execute([ ':empr_id' => $empr_id, ':orca_id' => $orca_id ]); $ultRevisao = $stmt4->fetchAll(); //writeLog("ULTIMA REVISAO: " . print_r($ultRevisao, true)); // =============================== // CONSULTA PRINCIPAL // =============================== $queryBase = "SELECT c.*, max_orc.max_rev, max_stat.max_status_id, case when c.vlr_base_total > 0 then ROUND(((c.vlr_semdesc / c.vlr_base_total) - 1) * 100 + 100, 2) else 100 end AS ajuste, CASE WHEN LENGTH(c.telefone_obra) < 11 THEN MASK(LPAD(c.telefone_obra,10,'0'), '(##) ####-####') ELSE MASK(LPAD(c.telefone_obra,11,'0'), '(##) #####-####') END AS telefone_obra, MASK(LPAD(c.tel_vend,11,'0'), '(##) #####-####') AS cel, MASK(LPAD(c.tel_vend,11,'0'), '(##) #####-####') AS tel_vend, MASK(LPAD(c.cep_obra,8,'0'), '#####-###') AS cep, DATE_FORMAT(c.data, '%d/%m/%Y') AS data, DATE_FORMAT(c.data_ult_rev, '%d/%m/%Y') AS data_ult_rev, c.endereco_obra AS rua, c.numero_obra, c.municipio_obra AS municipio, c.uf_obra AS uf, (select sum(i.m2) from gre_item_orcamento i where i.orca_id = c.orca_id and i.num_revisao = c.num_revisao and i.empr_id = c.empr_id) m2, stat.nome AS nome_stat, cr.cor AS cor_cr FROM gre_cab_orcamento c INNER JOIN gre_status stat ON stat.id = c.status_id INNER JOIN adms_cors cr ON cr.id = stat.cor_id LEFT JOIN gre_arquitetos a ON a.id = c.arquiteto_id LEFT JOIN ( SELECT orca_id, empr_id, MAX(num_revisao) AS max_rev FROM gre_cab_orcamento GROUP BY orca_id, empr_id ) AS max_orc ON max_orc.orca_id = c.orca_id AND max_orc.empr_id = c.empr_id LEFT JOIN ( SELECT orca_id, empr_id, MAX(status_id) AS max_status_id FROM gre_cab_orcamento WHERE status_id < 88 GROUP BY orca_id, empr_id ) AS max_stat ON max_stat.orca_id = c.orca_id AND max_stat.empr_id = c.empr_id WHERE c.orca_id = :orca_id_main AND c.num_revisao = :num_rev_main AND c.empr_id = :empr_id_main and c.status_id < 88"; $params = [ ':orca_id_main' => $orca_id, ':num_rev_main' => $num_rev, ':empr_id_main' => $empr_id, ]; // 🔥 FILTRO POR TIPO USUÁRIO if ($tipo_usu === 'V') { $queryBase .= " AND c.vend = :id_usu"; $params[':id_usu'] = $id_usu; } elseif ($tipo_usu === 'O') { $queryBase .= " AND c.orcamentista_id = :id_usu"; $params[':id_usu'] = $id_usu; } // 🔥 LOG QUERY /* writeLog("QUERY PRINCIPAL:"); writeLog($queryBase); writeLog("PARAMS:"); writeLog(print_r($params, true)); */ $stmt = $pdo->prepare($queryBase); $stmt->execute($params); $dados = $stmt->fetchAll(); //writeLog("RESULTADO DADOS: " . print_r($dados, true)); if (empty($dados)) { // writeLog("ERRO: NENHUM ORÇAMENTO ENCONTRADO"); echo json_encode(["erro" => "Nenhum orçamento encontrado"]); exit; } // =============================== // CONSULTA ITENS // =============================== $stmt2 = $pdo->prepare(" SELECT i.*, i.vlr_total AS valorTotal, a.nome AS nome_ambiente FROM gre_item_orcamento i LEFT JOIN gre_ambientes a ON a.id = i.ambiente_id WHERE i.orca_id = :orca_id AND i.num_revisao = :num_rev AND i.empr_id = :empr_id and i.status_id = 0 ORDER BY i.id "); $stmt2->execute([ ':orca_id' => $orca_id, ':num_rev' => $num_rev, ':empr_id' => $empr_id ]); $revisoes = $stmt2->fetchAll(); //writeLog("ITENS: " . print_r($revisoes, true)); // =============================== // CONSULTA OBRAS // =============================== $vend_id = $dados[0]['vend']; $stmt3 = $pdo->prepare(" SELECT id AS codigo, nome FROM gre_obras WHERE vend_id = :vend_id AND empr_id = :empr_id "); $stmt3->execute([ ':vend_id' => $vend_id, ':empr_id' => $empr_id ]); $obras = $stmt3->fetchAll(); //writeLog("OBRAS: " . print_r($obras, true)); // =============================== // RETORNO // =============================== //writeLog("FINALIZADO COM SUCESSO"); echo json_encode([ "ult_revisao" => $ultRevisao, "dados" => $dados, "revisoes" => $revisoes, "obras" => $obras ]);