D7net
Home
Console
Upload
information
Create File
Create Folder
About
Tools
:
/
var
/
www
/
html
/
crsys
/
adm
/
vendor
/
api
/
Filename :
gravaAutorizacaoRev.php
back
Copy
<?php ini_set('display_errors', 1); ini_set('display_startup_errors', 1); error_reporting(E_ALL); header('Content-Type: application/json'); require_once "ConectaPdo.php"; /* =============================== PHPMailer ================================ */ require_once $_SERVER['DOCUMENT_ROOT'].'/crsys/adm/vendor/phpmailer/phpmailer/src/Exception.php'; require_once $_SERVER['DOCUMENT_ROOT'].'/crsys/adm/vendor/phpmailer/phpmailer/src/PHPMailer.php'; require_once $_SERVER['DOCUMENT_ROOT'].'/crsys/adm/vendor/phpmailer/phpmailer/src/SMTP.php'; use PHPMailer\PHPMailer\PHPMailer; use PHPMailer\PHPMailer\Exception; try { $pdo->beginTransaction(); /* =============================== RECEBE POST ================================ */ $empr_id = $_POST['empr_id'] ?? null; $orca_id = $_POST['orca_id'] ?? null; $num_revisao = $_POST['num_revisao'] ?? null; $usu_id = $_POST['usu_id'] ?? null; $usu_nome = $_POST['usu_nome'] ?? null; $url = $_POST['url'] ?? null; $vlr_original = (float)($_POST['vlr_original'] ?? 0); $vlr_atual = (float)($_POST['vlr_atual'] ?? 0); $vlr_solicitado = (float)($_POST['vlr_solicitado'] ?? 0); // $nomeOpcao = $_POST['nomeOpcao'] ?? ''; // $opcao = $_POST['opcao'] ?? ''; $item_id = $_POST['item_id'] ?? null; // $motivo = $_POST['motivo'] ?? null; if ($empr_id === null || $orca_id === null || $num_revisao === null) { throw new Exception('Parâmetros obrigatórios não informados'); } /* =============================== VERIFICA SE JÁ EXISTE ================================ */ $sqlExiste = " SELECT id FROM gre_pedido_autorizacao WHERE empr_id = :empr_id AND orca_id = :orca_id AND num_revisao = :num_revisao AND autorizado IS NULL AND tipo_autorizacao = :tipo_autorizacao and status_id = 0 LIMIT 1 "; $stmtExiste = $pdo->prepare($sqlExiste); $stmtExiste->execute([ ':empr_id' => $empr_id, ':orca_id' => $orca_id, ':num_revisao' => $num_revisao, ':tipo_autorizacao' => 'ITEM' ]); if ($stmtExiste->fetch()) { throw new Exception('Já existe solicitação pendente para este orçamento'); } /* =============================== BUSCA ORÇAMENTO ================================ */ $sqlCab = " SELECT * FROM gre_cab_orcamento WHERE empr_id = :empr_id AND orca_id = :orca_id AND num_revisao = :num_revisao LIMIT 1 "; $stmtCab = $pdo->prepare($sqlCab); $stmtCab->execute([ ':empr_id' => $empr_id, ':orca_id' => $orca_id, ':num_revisao' => $num_revisao ]); $cab = $stmtCab->fetch(PDO::FETCH_ASSOC); if (!$cab) { throw new Exception('Orçamento não encontrado'); } /* =============================== DADOS ================================ */ date_default_timezone_set('America/Sao_Paulo'); $data_solicitacao = date('Y-m-d H:i:s'); $chave = md5( $empr_id . $orca_id . $num_revisao . uniqid() ); $vlr_total = (float)$cab['vlr_total']; $perc = ($vlr_total > 0) ? round(($vlr_solicitado * 100) / $vlr_total, 2) : 0; /* =============================== INSERT AUTORIZAÇÃO ================================ */ $sqlInsert = " INSERT INTO gre_pedido_autorizacao ( empr_id, orca_id, num_revisao, nome_cliente, vend_id, obra, vlr_total, vlr_desc_atual, vlr_solicitado, usu_id, usu_nome, data_solicitacao, chave ) VALUES ( :empr_id, :orca_id, :num_revisao, :nome_cliente, :vend_id, :obra, :vlr_total, :vlr_desc_atual, :vlr_solicitado, :usu_id, :usu_nome, :data_solicitacao, :chave ) "; $stmtInsert = $pdo->prepare($sqlInsert); $stmtInsert->execute([ ':empr_id' => $empr_id, ':orca_id' => $orca_id, ':num_revisao' => $num_revisao, ':nome_cliente' => $cab['nome_cliente'], ':vend_id' => $cab['vend'], ':obra' => $cab['obra'], ':vlr_total' => $vlr_original, ':vlr_desc_atual' => $vlr_atual, ':vlr_solicitado' => $vlr_solicitado, ':usu_id' => $usu_id, ':usu_nome' => $usu_nome, ':data_solicitacao' => $data_solicitacao, ':chave' => $chave ]); $idInserido = $pdo->lastInsertId(); /* =============================== CONTEÚDO DO E-MAIL ================================ */ $conteudo = utf8_decode("Amauri Jr,<br><br>"); $conteudo .= utf8_decode("Vendedor {$usu_nome} solicitou autorização de Revisão.<br><br>"); $conteudo .= utf8_decode("Orçamento: {$orca_id} / Revisão: {$num_revisao}<br>"); $conteudo .= utf8_decode("Obra: {$cab['obra']}<br>"); $conteudo .= utf8_decode("Cliente: {$cab['nome_cliente']}<br><br>"); $conteudo .= utf8_decode("<b>Valor da Revisão: R$ ") . number_format($vlr_solicitado, 2, ',', '.'). " </b><br><br>"; /* =============================== ENVIO DO E-MAIL ================================ */ $stmtEmail = $pdo->query(" SELECT * FROM adms_confs_emails WHERE id = 1 "); $dadosEmail = $stmtEmail->fetch(PDO::FETCH_ASSOC); if (!$dadosEmail) { throw new Exception('Configuração de e-mail não encontrada'); } $mail = new PHPMailer(true); $mail->isSMTP(); $mail->Host = $dadosEmail['host']; $mail->SMTPAuth = true; $mail->Username = $dadosEmail['usuario']; $mail->Password = $dadosEmail['senha']; $mail->SMTPSecure = $dadosEmail['smtpsecure']; $mail->Port = $dadosEmail['porta']; $mail->setFrom( 'noreply@crsys.com.br', 'Departamento Comercial' ); $mail->addAddress( 'crmarques@uol.com.br', 'Carlos Marques' ); $mail->isHTML(true); $mail->Subject = utf8_decode( "PEDIDO DE AUTORIZAÇÃO Nº {$orca_id}/{$num_revisao}" ); $mail->Body = $conteudo; $mail->send(); /* =============================== UPDATE STATUS DO ORÇAMENTO ================================ */ $sqlDife = " SELECT sum(vlr_dife_item) vlr_dife_item FROM gre_item_orcamento WHERE empr_id = :empr_id AND orca_id = :orca_id AND num_revisao = :num_revisao "; $stmtDife = $pdo->prepare($sqlDife); $stmtDife->execute([ ':empr_id' => $empr_id, ':orca_id' => $orca_id, ':num_revisao' => $num_revisao ]); $dife= $stmtDife->fetch(PDO::FETCH_ASSOC); $sqlUpdate = " UPDATE gre_cab_orcamento SET status_id = 22, vlr_dife_revisao = :vlr_dife_revisao WHERE empr_id = :empr_id and orca_id = :orca_id AND num_revisao = :num_revisao "; $stmtUpdate = $pdo->prepare($sqlUpdate); $stmtUpdate->execute([ ':empr_id' => $empr_id, ':orca_id' => $orca_id, ':vlr_dife_revisao' => $dife['vlr_dife_item'], ':num_revisao' => $num_revisao ]); $pdo->commit(); echo json_encode([ 'status' => 'success', 'msg' => 'Solicitação enviada e orçamento atualizado', 'chave' => $chave ]); } catch (Throwable $e) { if ($pdo->inTransaction()) { $pdo->rollBack(); } echo json_encode([ 'status' => 'error', 'msg' => $e->getMessage() ]); }