D7net
Home
Console
Upload
information
Create File
Create Folder
About
Tools
:
/
var
/
www
/
html
/
crsys_ant
/
adm
/
vendor_Ant
/
api
/
Filename :
gravaAjustarTudo.php
back
Copy
<?php header('Content-Type: application/json'); include_once "ConectaPdo.php"; // Função para limpar máscara monetária function limparMascara($valor) { $valor = preg_replace('/R\$\s*/u', '', $valor); $valor = preg_replace('/\s+/u', '', $valor); $valor = str_replace('.', '', $valor); $valor = str_replace(',', '.', $valor); return $valor; } // Captura JSON enviado via POST $input = file_get_contents("php://input"); $data = json_decode($input, true); $itens = $data['itens']; $orca_id = $data['orca_id'] ?? null; $num_revisao = $data['num_revisao'] ?? null; $usuario_id = $data['usu_id'] ?? null; $empr_id = $data['empr_id'] ?? null; $perc = $data['perc'] ?? null; unset($data['usu_id']); // Grava em um arquivo txt (apendando para não sobrescrever) //file_put_contents('debug_data_ajustaTudo.txt', date('Y-m-d H:i:s') . " - " . print_r($data, true) . "\n", FILE_APPEND); if ($orca_id === null || $num_revisao === null || $empr_id === null) { echo json_encode([ 'status' => 'error', 'mensagem' => 'orcamento_id, num_revisao ou empr_id não fornecidos.' ]); exit; } // Captura parâmetros do JSON date_default_timezone_set("America/Sao_Paulo"); try { // Atualiza gre_item_orcamento $sqlItem = " UPDATE gre_item_orcamento SET vlr_total = :vlr_total, ajuste = :perc, modified = :modified, usu_modified = :usu_modified WHERE id = :item_id "; $stmtItem = $pdo->prepare($sqlItem); $atualizados = 0; $somaVlrTotal = 0.0; foreach ($itens as $item) { if (empty($item['item_id']) || !isset($item['vlr_total'])) { continue; } $vlrSemMascara = (float) limparMascara($item['vlr_total']); $somaVlrTotal += $vlrSemMascara; $stmtItem->execute([ 'vlr_total' => $vlrSemMascara, 'modified' => date("Y-m-d H:i:s"), 'usu_modified' => $usuario_id, 'perc' => $perc, 'item_id' => $item['item_id'] ]); $atualizados += $stmtItem->rowCount(); } // Atualiza gre_cab_orcamento $sqlCab = " SELECT vlr_frete, vlr_desc 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) { echo json_encode([ 'status' => 'error', 'mensagem' => 'Registro do cab_orcamento não encontrado.' ]); exit; } $vlr_frete = (float) $cab['vlr_frete']; $vlr_desc = (float) $cab['vlr_desc']; $vlr_total_cab = $somaVlrTotal + $vlr_frete - $vlr_desc; $sqlUpdateCab = " UPDATE gre_cab_orcamento SET vlr_semdesc = :vlr_semdes, vlr_total = :vlr_total, modified = :modified, usu_modified = :usu_modified WHERE empr_id = :empr_id AND orca_id = :orca_id AND num_revisao = :num_revisao "; $stmtUpdateCab = $pdo->prepare($sqlUpdateCab); $stmtUpdateCab->execute([ 'vlr_semdes' => $somaVlrTotal, 'vlr_total' => $vlr_total_cab, 'modified' => date("Y-m-d H:i:s"), 'usu_modified' => $usuario_id, 'empr_id' => $empr_id, 'orca_id' => $orca_id, 'num_revisao' => $num_revisao ]); echo json_encode([ 'status' => 'success', 'mensagem' => 'Itens e cabeçalho do orçamento atualizados com sucesso.', 'orca_id' => $orca_id, 'num_revisao' => $num_revisao, 'itens_atualizados' => $atualizados, 'soma_vlr_total' => $somaVlrTotal, 'vlr_total_cab' => $vlr_total_cab ]); } catch (PDOException $e) { echo json_encode([ 'status' => 'error', 'mensagem' => 'Erro ao atualizar itens/cab_orcamento: ' . $e->getMessage() ]); }