D7net
Home
Console
Upload
information
Create File
Create Folder
About
Tools
:
/
var
/
www
/
html
/
crsys
/
adm
/
vendor
/
api
/
Filename :
gravaCabecalho_2.php
back
Copy
<?php header('Content-Type: application/json'); include_once "ConectaPdo.php"; function limparMascara($campo, $valor) { $camposMoeda = ['vlr_semdesc', 'vlr_frete', 'vlr_desc', 'vlr_total','rt']; $camposNumericos = ['telefone_obra', 'tel_vend', 'cep_obra']; if (in_array($campo, $camposMoeda)) { $valor = str_replace(['R$', ' ', "\xc2\xa0"], '', $valor); if (strpos($valor, ',') !== false) { $pos = strrpos($valor, ','); $valor = substr_replace($valor, '.', $pos, 1); } $valor = str_replace('.', '', substr($valor, 0, strrpos($valor, '.') ?: 0)) . substr($valor, strrpos($valor, '.') ?: 0); return $valor; } if (in_array($campo, $camposNumericos)) { return preg_replace('/\D/', '', $valor); } return $valor; } $duplica = isset($_POST['duplica']) ? filter_var($_POST['duplica'], FILTER_VALIDATE_BOOLEAN) : false; $novoorcamento = isset($_POST['novoorcamento']) ? filter_var($_POST['novoorcamento'], FILTER_VALIDATE_BOOLEAN) : false; $regravar = isset($_POST['regravar']) ? filter_var($_POST['regravar'], FILTER_VALIDATE_BOOLEAN) : false; $novarevisao = isset($_POST['novarevisao']) ? filter_var($_POST['novarevisao'], FILTER_VALIDATE_BOOLEAN) : false; $revisaoAnt = isset($_POST['revisaoant']) ? (int) $_POST['revisaoant'] : 0; foreach ($_POST as $k => $v) { file_put_contents( 'debug_post Bruto.txt', "$k => " . var_export($v, true) . "\n", FILE_APPEND ); } unset($_POST['novoorcamento']); unset($_POST['novarevisao']); unset($_POST['regravar']); unset($_POST['revisaoant']); unset($_POST['duplica']); unset($_POST['data']); unset($_POST['data_ult_rev']); $camposMoeda = ['vlr_semdesc', 'vlr_frete', 'vlr_desc', 'vlr_total', 'rt']; $camposNumericos = ['telefone_obra', 'tel_vend', 'cep_obra']; $dados = []; foreach ($_POST as $key => $value) { $value = trim($value); if (in_array($key, $camposMoeda) || in_array($key, $camposNumericos)) { $value = limparMascara($key, $value); } $dados[$key] = ($value === '') ? null : $value; } date_default_timezone_set("America/Sao_Paulo"); $dados['created'] = date("Y-m-d H:i:s"); $data_orc = date("Y-m-d"); // Captura orca_id e num_revisao $orca_id = isset($dados['orca_id']) && trim($dados['orca_id']) !== '' ? intval($dados['orca_id']) : 0; $num_revisao = isset($dados['num_revisao']) ? $dados['num_revisao'] : 0; try { // file_put_contents( // 'debug_flags.txt', // 'regravar => ' . var_export($regravar, true) . PHP_EOL . // 'novoorcamento => ' . var_export($novoorcamento, true) . PHP_EOL . // 'novarevisao => ' . var_export($novarevisao, true) . PHP_EOL, // FILE_APPEND // ); if(!$novoorcamento) { // UPDATE $dados['modified'] = date("Y-m-d H:i:s"); $updateCampos = []; $params = []; foreach ($dados as $col => $val) { if (in_array($col, ['orca_id', 'num_revisao'])) continue; $updateCampos[] = "$col = :$col"; $params[$col] = $val; } $params['orca_id'] = $orca_id; $params['num_revisao'] = $num_revisao; // DEBUG UPDATE // file_put_contents('debug_post_UpdateCabecalho.txt', // "UPDATE PARAMS:\n" . print_r($params, true) . "\n\n", // FILE_APPEND // ); $sql = "UPDATE gre_cab_orcamento SET " . implode(', ', $updateCampos) . " WHERE orca_id = :orca_id AND num_revisao = :num_revisao"; $stmt = $pdo->prepare($sql); $stmt->execute($params); echo json_encode([ 'status' => 'success', 'mensagem' => 'Cabeçalho atualizado com sucesso.', 'id_orcamento' => $orca_id, 'num_revisao' => $num_revisao ]); } else { $dados['status_id'] = 0; if (!$novarevisao && $novoorcamento) { $stmt = $pdo->prepare("SELECT MAX(orca_id) + 1 AS max_id FROM gre_cab_orcamento WHERE empr_id = :empr_id"); $stmt->execute(['empr_id' => $dados['empr_id']]); $result = $stmt->fetch(PDO::FETCH_ASSOC); $maxOrcaId = $result['max_id'] ?? 1; $dados['orca_id'] = $maxOrcaId; } if ($novarevisao) { // ----------------------------- // LOG: início do cálculo base_total // ----------------------------- // $logArquivo = __DIR__ . '/debug_base_total.txt'; // $log = "\n==============================\n"; // $log .= "EXECUTANDO SOMA base_total\n"; // $log .= "Data/Hora: " . date('Y-m-d H:i:s') . "\n"; // $log .= "Parâmetros recebidos:\n"; // $log .= " empr_id = " . ($dados['empr_id'] ?? 'NULL') . "\n"; // $log .= " orca_id = " . ($dados['orca_id'] ?? 'NULL') . "\n"; // $log .= " revisao_anterior = " . ($revisaoAnt ?? 'NULL') . "\n"; // ----------------------------- // SQL // ----------------------------- $stmt = $pdo->prepare(" SELECT SUM(base_total) AS base_total FROM gre_item_orcamento WHERE empr_id = :empr_id AND orca_id = :orca_id AND num_revisao = :revisao_anterior "); $stmt->execute([ 'empr_id' => $dados['empr_id'], 'orca_id' => $dados['orca_id'], 'revisao_anterior' => $revisaoAnt ]); // ----------------------------- // RESULTADO // ----------------------------- $result = $stmt->fetch(PDO::FETCH_ASSOC); $base_total = (float) ($result['base_total'] ?? 0); // $log .= "Resultado SQL:\n"; // $log .= print_r($result, true); // $log .= "base_total calculado = {$base_total}\n"; // $log .= "==============================\n"; // file_put_contents($logArquivo, $log, FILE_APPEND); // usa o valor no sistema $dados['vlr_base_total'] = $base_total; $dados['vlr_frete'] = 0; $dados['vlr_desc'] = 0; $dados['vlr_total'] = $dados['vlr_semdesc']; } $colunas = array_keys($dados); $placeholders = array_map(function($c) { return ":" . $c; }, $colunas); // file_put_contents('debug_InsertCabecalho.txt', // "INSERT PARAMS:\n" . print_r($dados, true) . "\n\n", // FILE_APPEND // ); $sql = "INSERT INTO gre_cab_orcamento (" . implode(',', $colunas) . ") VALUES (" . implode(',', $placeholders) . ")"; $stmt = $pdo->prepare($sql); $stmt->execute($dados); $orca_id = $pdo->lastInsertId(); if($novarevisao || $duplica){ if($novarevisao) { $data_rev_orc = date("Y-m-d"); $dados['data_ult_rev'] = date("Y-m-d"); } $sql = "INSERT INTO gre_item_orcamento ( empr_id, item, orca_id, num_revisao, larg, prof, alt_fron_esq, larg_fron_esq, alt_fron_dir, larg_fron_dir, alt_fron_fun, larg_fron_fun, alt_fron_fren, larg_fron_fren, alt_saia_esq, larg_saia_esq, alt_saia_dir, larg_saia_dir, alt_saia_fun, larg_saia_fun, alt_saia_fren, larg_saia_fren, tpo_duplo, em_curva, polir_duplo, acabDir, acabEsq, acabFren, acabFun, fronDir, fronEsq, fronFren, fronFun, saiaDir, saiaEsq, saiaFren, saiaFun, acab_topo_frontao, esqua, acabamento, servico, qtde_serv, material_id, material, benef_id, vlr_unit_acab, vlr_unit_mat, vlr_unit_prod, vlr_unit_serv, ambiente_id, descricao, id_tabela, descricao_tabela, qtde_pecas, unid_prod, base_mo, base_mat, vlr_total_mo, vlr_total_mat, vlr_total_col, vlr_total_acab_fron, vlr_total_serv, vlr_total_acab, vlr_total, base_total, m2, ml, produto, obra_id, obra, ajuste, fornecedor_id, data_pedido, data_medicao, data_desenho, data_aprovacao, data_os, data_entrega, data_inicio, data_fim, colocadorId, num_os, observacao, created, usu_created, modified, usu_modified, num_pedido, percentual, larg_aa, prof_aa, data_ult_rev ) SELECT empr_id, item, orca_id, :novo_num_revisao, larg, prof, alt_fron_esq, larg_fron_esq, alt_fron_dir, larg_fron_dir, alt_fron_fun, larg_fron_fun, alt_fron_fren, larg_fron_fren, alt_saia_esq, larg_saia_esq, alt_saia_dir, larg_saia_dir, alt_saia_fun, larg_saia_fun, alt_saia_fren, larg_saia_fren, tpo_duplo, em_curva, polir_duplo, acabDir, acabEsq, acabFren, acabFun, fronDir, fronEsq, fronFren, fronFun, saiaDir, saiaEsq, saiaFren, saiaFun, acab_topo_frontao, esqua, acabamento, servico, qtde_serv, material_id, material, benef_id, vlr_unit_acab, vlr_unit_mat, vlr_unit_prod, vlr_unit_serv, ambiente_id, descricao, id_tabela, descricao_tabela, qtde_pecas, unid_prod, base_mo, base_mat, vlr_total_mo, vlr_total_mat, vlr_total_col, vlr_total_acab_fron, vlr_total_serv, vlr_total_acab, vlr_total, base_total, m2, ml, produto, obra_id, obra, ajuste, fornecedor_id, data_pedido, data_medicao, data_desenho, data_aprovacao, data_os, data_entrega, data_inicio, data_fim, colocadorId, num_os, observacao, NOW(), usu_created, NOW(), usu_modified, num_pedido, percentual, larg_aa, prof_aa, NOW() FROM gre_item_orcamento WHERE orca_id = :orca_id AND num_revisao = :revisao_anterior order by id;"; $stmt = $pdo->prepare($sql); $stmt->execute([ 'orca_id' => $orca_id, 'revisao_anterior' => $revisaoAnt, 'novo_num_revisao' => $dados['num_revisao'] ]); } echo json_encode([ 'status' => 'success', 'mensagem' => 'Cabeçalho gravado com sucesso.', 'id_orcamento' => $dados['orca_id'], 'num_revisao' => $revisaoAnt ]); } } catch (PDOException $e) { // // DEBUG ERROR // file_put_contents('debug_post_gravacabecalho.txt', // "ERRO PDO:\n" . $e->getMessage() . "\n\n", // FILE_APPEND // ); echo json_encode([ 'status' => 'error', 'mensagem' => 'Erro ao gravar/atualizar: '. $e->getMessage() ]); } ?>