D7net
Home
Console
Upload
information
Create File
Create Folder
About
Tools
:
/
var
/
www
/
html
/
crsys_ant
/
adm
/
vendor_Ant
/
api
/
Filename :
gravaPedido.php
back
Copy
<?php header('Content-Type: application/json'); ini_set('display_errors', 0); ini_set('log_errors', 1); error_reporting(E_ALL); include_once "ConectaPdo.php"; $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $arquivoDebug = $_SERVER['DOCUMENT_ROOT'] . '/debug_vencimento.txt'; function limparMascara($campo, $valor) { $camposMoeda = ['perc_entrada','valor_entrada','valor_parcela','vlr_total', 'ult_contra_entrega']; if (in_array($campo, $camposMoeda)) { $valor = str_replace(['R$', ' ', "\xc2\xa0"], '', $valor); $valor = str_replace('.', '', $valor); $valor = str_replace(',', '.', $valor); return (float)$valor; } } $raw = file_get_contents("php://input"); $POST = json_decode($raw, true); if (!is_array($POST)) { echo json_encode(['status'=>'error','mensagem'=>'JSON inválido']); exit; } $camposMoeda = ['perc_entrada','valor_entrada','valor_parcela','vlr_total', 'ult_contra_entrega']; $remove = ['max_rev','max_status','max_status_id','ajuste','nome_stat','cor_cr','cel','cep','rua','municipio','uf']; foreach ($remove as $r) unset($POST[$r]); $dados = []; foreach ($POST as $key => $value) { $value = trim((string)$value); if (in_array($key, $camposMoeda)) { $value = limparMascara($key, $value); } $dados[$key] = ($value === '') ? null : $value; } //var_dump($dados); //die; date_default_timezone_set("America/Sao_Paulo"); $dados['modified'] = date("Y-m-d H:i:s"); $dados['status_id'] = 1; $orca_id = intval($dados['orca_id'] ?? 0); $num_revisao = intval($dados['num_revisao'] ?? 0); if ($orca_id <= 0) { echo json_encode(['status'=>'error','mensagem'=>'ID inválido']); exit; } try { $dados['num_ped'] = $novoNumPed ?? 1; $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; $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); $sqlStatus = " UPDATE gre_cab_orcamento SET status_id = 88 WHERE orca_id = :orca_id AND num_revisao <> :num_revisao "; $pdo->prepare($sqlStatus)->execute([ ':orca_id' => $orca_id, ':num_revisao' => $num_revisao ]); $pdo->prepare("DELETE FROM gre_parcelas WHERE orca_id = :o AND num_revisao = :r") ->execute([':o' => $orca_id, ':r' => $num_revisao]); // =============================== // PARCELA DE ENTRADA // =============================== $tipoPgto = intval($dados['tipo_pgto_parcela'] ?? 0); $valorEntrada = floatval($dados['valor_entrada'] ?? 0); $percEntrada = floatval($dados['perc_entrada'] ?? 0); $data_parcela = $dados['data_parcela'] ?? null; $totalParcelas = intval($dados['num_parcelas'] ?? 0); $totalParcelas = $totalParcelas + 1; $tipoEntrada = intval($dados['tipo_pgto_entrada'] ?? 0); if ($valorEntrada > 0) { $pdo->prepare( "INSERT INTO gre_parcelas (orca_id,num_revisao,num_parcela,qtde_parcela,tipo_pagto_id,vencimento,valor_parcela, perc_cronograma) VALUES (:orca_id,:num_revisao,1,:qtdeParcela,:tipo_pagto_id,:vencimento,:valor_parcela,:perc_entrada)" )->execute([ ':orca_id' => $orca_id, ':num_revisao' => $num_revisao, ':vencimento' => $data_parcela, ':tipo_pagto_id' => $tipoEntrada, ':qtdeParcela' => $totalParcelas, ':valor_parcela' => $valorEntrada, ':perc_entrada' => $percEntrada ]); } // =============================== // PARCELAS NORMAIS // =============================== $qtdeParcelas = intval($dados['num_parcelas'] ?? 0); $valorTotal = floatval($dados['vlr_total'] ?? 0); $valorNS = floatval($dados['vlr_ns'] ?? 0); $num_parcela = floatval($dados['num_parcela'] ?? 0); if ($valorEntrada > 0) { $num_parcela = $num_parcela + 1; } $valorTotal = $valorTotal - $valorNS; $ult_contra_entrega = intval($dados['ult_contra_entrega'] ?? 0); if ($qtdeParcelas > 0 && $data_parcela) { $saldoParcelado = max($valorTotal - $valorEntrada, 0); $valorParcelaBase = floor(($saldoParcelado / $qtdeParcelas) * 100) / 100; $diferenca = round($saldoParcelado - ($valorParcelaBase * $qtdeParcelas), 2); $vencimento = new DateTime($data_parcela); for ($i = 1; $i <= $qtdeParcelas; $i++) { $parc_atual = ($valorEntrada > 0) ? $i + 1 : $i; $vencimento->modify('+1 month'); if ($i == 1) { $valor = $valorParcelaBase + $diferenca; } else { $valor = $valorParcelaBase; } $pdo->prepare( "INSERT INTO gre_parcelas (orca_id,num_revisao,num_parcela,qtde_parcela,tipo_pagto_id,vencimento,valor_parcela) VALUES (:o,:r,:p,:t,:tipo,:venc,:valor)" )->execute([ ':o' => $orca_id, ':r' => $num_revisao, ':p' => $parc_atual, ':t' => ($valorEntrada > 0) ? $qtdeParcelas + 1 : $qtdeParcelas, ':tipo' => $tipoPgto, ':venc' => $vencimento->format('Y-m-d'), ':valor' => $valor ]); } } echo json_encode([ 'status' => 'success', 'mensagem' => 'Pedido atualizado com sucesso.', 'id_orcamento' => $orca_id, 'num_revisao' => $num_revisao ]); } catch (Exception $e) { echo json_encode([ 'status' => 'error', 'mensagem' => 'Erro: ' . $e->getMessage() ]); }