D7net
Home
Console
Upload
information
Create File
Create Folder
About
Tools
:
/
var
/
www
/
html
/
crsys
/
adm
/
vendor
/
api
/
Filename :
lerGeraOS.php
back
Copy
<?php include_once "ConectaPdo.php"; $num_contrato = $_GET['num_contrato'] ?? ''; $empr_id = $_GET['empr_id'] ?? ''; $usu_id = $_GET['usu_id'] ?? ''; $obra_id = $_GET['obra_id'] ?? ''; //echo $obra_id; try { // =============================== // BLOQUEIO CURTO: leitura e update de ult_os $pdo->beginTransaction(); // Bloqueia a linha $sqlLock = "SELECT ult_os FROM gre_parametros WHERE id = 1 AND empr_id = :empr_id FOR UPDATE"; $stmtLock = $pdo->prepare($sqlLock); $stmtLock->execute([':empr_id' => $empr_id]); $param = $stmtLock->fetch(PDO::FETCH_ASSOC); if (!$param) { throw new Exception("Parâmetro não encontrado para empr_id = $empr_id"); } // Incrementa ult_os $novoUltOS = $param['ult_os'] + 1; // Atualiza gre_parametros $sqlUpdate = "UPDATE gre_parametros SET ult_os = :novoUltOS WHERE id = 1 AND empr_id = :empr_id"; $stmtUpdate = $pdo->prepare($sqlUpdate); $stmtUpdate->execute([ ':novoUltOS' => $novoUltOS, ':empr_id' => $empr_id ]); // Commit libera o lock $pdo->commit(); // =============================== // CONSULTA PRINCIPAL $sql = "insert into gre_cab_os (id, empr_id, num_contrato, orca_id, num_revisao, obra_id, nome_cliente,contato, fone, email, vendedor_id, medidor_id, data_contrato, dias_entrega, created, usu_created,status_id) (select :num_os, empr_id, num_contrato, orca_id, num_revisao, obra_id, obra, contato_obra, telefone_obra, email_obra, vend, medidor_id, date_format(data_contrato, '%Y-%m-%d'), dias_entrega, now(), :usu_id, :status_id from gre_cab_orcamento where empr_id = :empr_id and num_contrato = :num_contrato)"; $params = [ ':empr_id' => $empr_id, ':num_contrato' => $num_contrato, ':num_os' => $novoUltOS, ':usu_id' => $usu_id, ':status_id' => 12 ]; $stmt = $pdo->prepare($sql); $stmt->execute($params); // =============================== // Retorna dados + novo ult_os echo json_encode([ "novoUltOS" => $novoUltOS ], JSON_UNESCAPED_UNICODE); } catch (PDOException $e) { if ($pdo->inTransaction()) $pdo->rollBack(); echo json_encode([ "erro" => "Falha na consulta: " . $e->getMessage() ]); } catch (Exception $e) { if ($pdo->inTransaction()) $pdo->rollBack(); echo json_encode([ "erro" => $e->getMessage() ]); }