D7net
Home
Console
Upload
information
Create File
Create Folder
About
Tools
:
/
var
/
www
/
html
/
novonote
/
adm
/
app
/
gre
/
Models
/
Orcamento
/
Filename :
ModCadastrarOrcamento.php
back
Copy
<?php namespace App\gre\Models\Orcamento; if (!defined('URL')) { header("Location: /"); exit(); } class ModCadastrarOrcamento { private $Resultado; private $Dados; private $DadosCabecalho; private $DadosItem; private $DadosVeri; private $ValorFrete; private $ValorCiclo; private $DadosTab; private $DadosVeric; private $DadosId; private $substituicao = array( '%' => '', ' ' => '', '_' => '', '-' => '', '/' => '', '.' => '', ',' => '.', '(' => '', ')' => '' ); function getResultado() { return $this->Resultado; } public function cadOrcamento(array $Dados) { $this->Dados = filter_input_array(INPUT_POST, FILTER_DEFAULT); foreach ($this->Dados as $key => $value) { if (strpos($key, 'mo_') === 0) { unset($this->Dados[$key]); } } unset($this->Dados['acao']); unset($this->Dados['urladm']); unset($this->Dados['cab_cep1']); unset($this->Dados['distancia']); $this->retiraMasc(); // var_dump($this->Dados); // die; if (empty($this->Dados['adic1'])) { $this->Dados['adic1']= 0;} if (empty($this->Dados['adic2'])) { $this->Dados['adic2']= 0; } if (empty($this->Dados['adic3'])) { $this->Dados['adic3']= 0; } if (empty($this->Dados['franquia'])) { $this->Dados['franquia']= 0; } $this->Dados['gre_sit_id'] = 1; $texto = $this->Dados['condicoes'] ?? ''; $textoLimpo = ltrim($texto); $this->Dados['empr_id'] = $_SESSION['id_user']; date_default_timezone_set ("America/Sao_Paulo"); $this->Dados['created'] = date("Y-m-d H:i:s"); $this->Dados['usu_created'] = $_SESSION['usuario_id']; $this->Dados['gre_sit_id'] = 1; $this->DadosItem = $this->Dados; foreach ($this->DadosItem as $key => $value) { if (strpos($key, 'cab_') === 0) { unset($this->DadosItem[$key]); } } $this->DadosCabecalho = array_filter( $this->Dados, function ($key) { return strpos($key, 'cab_') === 0; }, ARRAY_FILTER_USE_KEY ); $this->DadosCabecalho = array_combine( array_map(function ($key) { return preg_replace('/^cab_/', '', $key); }, array_keys($this->DadosCabecalho)), array_values($this->DadosCabecalho) ); $this->BuscaNum(); $this->verDuploCab(); // var_dump($this->Resultado); // var_dump($this->Dados); // var_dump($_SESSION['form']); //die; if($this->Resultado) { $this->PegaNum(); if($this->Resultado) { date_default_timezone_set ("America/Sao_Paulo"); $this->DadosCabecalho['created'] = date("Y-m-d H:i:s"); $this->DadosItem['created'] = $this->DadosCabecalho['created']; $this->DadosCabecalho['usu_created'] = $this->Dados['usu_created']; $this->DadosCabecalho['numero'] = $this->Dados['numero']; $this->DadosCabecalho['gre_sit_id'] = 1; $this->DadosItem['numero'] = $this->Dados['numero']; // $this->DadosCabecalho['gre_tipo_id'] = $this->Dados['gre_tipo_id']; $this->DadosCabecalho['empr_id'] = $this->Dados['empr_id']; // var_dump($this->DadosItem); unset($this->DadosCabecalho['nome_cliente']); unset($this->DadosCabecalho['contato']); unset($this->DadosCabecalho['celular']); unset($this->DadosCabecalho['email']); // var_dump($this->DadosCabecalho); // var_dump($this->Dados); // die; $cadOrcamento= new \App\adms\Models\helper\AdmsCreate; $cadOrcamento->exeCreate("gre_cab_propostas", $this->DadosCabecalho); $texto = $this->Dados['condicoes'] ?? ''; $textoLimpo = ltrim($texto); if ($cadOrcamento->getResultado()) { $_SESSION['form'] = [ 'gre_prazo_id' => $this->DadosCabecalho['gre_prazo_id'] ?? '', 'cliente_id' => $this->DadosCabecalho['cliente_id'] ?? '', 'valor_frete' => $this->DadosCabecalho['valor_frete'] ?? '', 'nome_cliente' => $this->Dados['nome_cliente'] ?? '', 'contato' => $this->Dados['contato'] ?? '', 'celular' => $this->Dados['celular'] ?? '', 'email' => $this->Dados['email'] ?? '', 'condicoes' => $textoLimpo, 'data_validade' => !empty($this->DadosCabecalho['data_validade']) ? $this->DadosCabecalho['data_validade'] : '' ]; $this->atualizaNum(); } } } //var_dump( $_SESSION['form']); $this->verificaItem(); if($this->Resultado) { $cadItemProp = new \App\adms\Models\helper\AdmsCreate; $this->DadosItem['numero'] = $this->DadosId['numero']; $_SESSION['numero'] = $this->DadosItem['numero']; unset($this->DadosItem['valor_office']); unset($this->DadosItem['valor_antivirus']); unset($this->DadosItem['nome_cliente']); unset($this->DadosItem['contato']); unset($this->DadosItem['celular']); unset($this->DadosItem['email']); //echo('itens.<br>'); //var_dump($this->DadosItem); //die; $cadItemProp->exeCreate("gre_item_propostas", $this->DadosItem); if ($cadItemProp->getResultado()) { $this->buscarFreteProposta(); $_SESSION['msg'] = "<div class='alert alert-success alert-dismissible fade show' role='alert'> Orcamento cadastrado com sucesso! <button type='button' class='btn-close' data-bs-dismiss='alert' aria-label='Close'> </button> </div>"; $this->Resultado = true; } else { $_SESSION['msg'] = "<div class='alert alert-danger alert-dismissible fade show' role='alert'> Erro: Orcamento não foi cadastrado! <button type='button' class='btn-close' data-bs-dismiss='alert' aria-label='Close'> </button> </div>"; $this->Resultado = false; } } } public function buscarFreteProposta() { // 1. Buscar valor do frete e prazos da proposta $verFrete = new \App\adms\Models\helper\AdmsRead(); $verFrete->fullRead( "SELECT valor_frete, prazo1, prazo2, prazo3 FROM gre_cab_propostas WHERE numero = :num LIMIT :limit", "num={$this->DadosId['numero']}&limit=1" ); $resultadoFrete = $verFrete->getResultado(); $valorFrete = $resultadoFrete[0]['valor_frete'] ?? 0; $prazo1 = $resultadoFrete[0]['prazo1'] ?? 1; $prazo2 = $resultadoFrete[0]['prazo2'] ?? 1; $prazo3 = $resultadoFrete[0]['prazo3'] ?? 1; // 2. Buscar itens da proposta com os três ciclos $verCiclo = new \App\adms\Models\helper\AdmsRead(); $verCiclo->fullRead( "SELECT id AS id_item_proposta, valorciclo1, valorciclo2, valorciclo3 FROM gre_item_propostas WHERE numero = :num", "num={$this->DadosId['numero']}" ); $itens = $verCiclo->getResultado(); // 3. Calcular total de cada ciclo separadamente $totalCiclo1 = $totalCiclo2 = $totalCiclo3 = 0; foreach ($itens as $item) { $totalCiclo1 += $item['valorciclo1']; $totalCiclo2 += $item['valorciclo2']; $totalCiclo3 += $item['valorciclo3']; } // 4. Distribuir frete proporcionalmente por ciclo e atualizar cada item $update = new \App\adms\Models\helper\AdmsUpdate(); foreach ($itens as $item) { $frete1 = ($totalCiclo1 > 0) ? round(($valorFrete * ($item['valorciclo1'] / $totalCiclo1)) / $prazo1, 2) : 0; $frete2 = ($totalCiclo2 > 0) ? round(($valorFrete * ($item['valorciclo2'] / $totalCiclo2)) / $prazo2, 2) : 0; $frete3 = ($totalCiclo3 > 0) ? round(($valorFrete * ($item['valorciclo3'] / $totalCiclo3)) / $prazo3, 2) : 0; $dadosUpdate = [ 'valor_frete_mes1' => $frete1, 'valor_frete_mes2' => $frete2, 'valor_frete_mes3' => $frete3 ]; $termos = "WHERE id = :id"; $parseString = "id={$item['id_item_proposta']}"; $update->exeUpdate('gre_item_propostas', $dadosUpdate, $termos, $parseString); } $this->Resultado = true; } public function verDuploCab() { $verDuplo = new \App\adms\Models\helper\AdmsRead(); $verDuplo->fullRead("SELECT c.nome nome_cliente, c.contato, c.email, p.* FROM gre_cab_propostas p inner join gre_clientes c on p.cliente_id = c.id WHERE p.numero =". $this->DadosId['numero']." limit 1"); $this->Resultado = $verDuplo->getResultado(); // var_dump($this->DadosId['numero']); // var_dump($this->Resultado); // die; // var_dump($this->Dados); if(!empty($this->Resultado)) { $this->DadosVeric = $this->Resultado[0]; // var_dump($this->DadosVeric); $this->DadosItem['created'] = $this->Resultado[0]['created']; // var_dump($_SESSION['form']); if(isset($_SESSION['form'])) { if ( // $this->DadosVeric['nome_cliente'] == $_SESSION['form']['nome_cliente'] and $this->DadosVeric['contato'] == $_SESSION['form']['contato'] and $this->DadosVeric['email'] == $_SESSION['form']['email']) { $this->Resultado = false; }else{ $this->Resultado = true; } } }else{ $this->Resultado = true; // }else{$this->Resultado = true;} // var_dump( $this->Resultado); // var_dump( $this->Dados); } } private function atualizaNum(){ $this->DadosId['numero'] = $this->DadosCabecalho['numero']; $altNum = new \App\adms\Models\helper\AdmsUpdate(); $altNum->exeUpdate("gre_parametros", $this->DadosId, "WHERE id = 1"); } public function buscaNum(){ $pegaNum = new \App\adms\Models\helper\AdmsRead(); $pegaNum->fullRead("SELECT numero FROM gre_parametros LIMIT :limit", "limit=1"); $this->Resultado = $pegaNum->getResultado(); $this->DadosId['numero'] = $this->Resultado[0]['numero']; // var_dump($this->DadosId['numero']); // die; } public function verificaItem(){ $verDuplo = new \App\adms\Models\helper\AdmsRead(); $verDuplo->fullRead("SELECT * FROM gre_item_propostas WHERE numero =:num and gre_cat_id = :cat_id and gre_marca_id = :marca_id and gre_prod_id = :prod_id and preco1 = :preco1 and preco2 = :preco2 and preco3 = :preco3 and adic1 = :adic1 and adic2 = :adic2 and adic3 = :adic3 and empr_id = :empr_id", "num=". $this->DadosId['numero']. "&cat_id=".$this->DadosItem['gre_cat_id']. "&marca_id=".$this->DadosItem['gre_marca_id']. "&prod_id=".$this->DadosItem['gre_prod_id']. "&preco1=".$this->DadosItem['preco1']. "&preco2=".$this->DadosItem['preco2']. "&preco3=".$this->DadosItem['preco3']. "&adic1=".$this->DadosItem['adic1']. "&adic2=".$this->DadosItem['adic2']. "&adic3=".$this->DadosItem['adic3']. "&empr_id=".$this->DadosItem['empr_id'] ); $this->Resultado = $verDuplo->getResultado(); //var_dump($this->Resultado); //die; if(empty($this->Resultado)) { $this->Resultado = true; }else{ $this->Resultado = false; $_SESSION['msg'] = "<div class='alert alert-danger alert-dismissible fade show' role='alert'> Erro: Produto já incluído ou em Branco! <button type='button' class='btn-close' data-bs-dismiss='alert' aria-label='Close'> </button> </div>"; } } public function pegaNum() { $pegaNum = new \App\adms\Models\helper\AdmsRead(); $pegaNum->fullRead("SELECT numero +1 numero FROM gre_parametros LIMIT :limit", "limit=1"); $this->Resultado = $pegaNum->getResultado(); $this->Dados['numero'] =$this->Resultado[0]['numero']; $verCab = new \App\adms\Models\helper\AdmsRead(); $verCab->fullRead("SELECT count(*) itens FROM gre_cab_propostas where numero = :num", "num=".$this->Dados['numero']); $this->Resultado = $verCab->getResultado(); if( $this->Resultado[0]['itens'] == 0 ) {$this->Resultado = true; }else{$this->Resultado = false;} } private function retiraMasc() { if(isset( $this->Dados['preco1'] )) { $this->Dados['preco1'] = strtr( $this->Dados['preco1'] , $this->substituicao); } if(isset( $this->Dados['preco2'] )) { $this->Dados['preco2'] = strtr( $this->Dados['preco2'] , $this->substituicao); } if(isset( $this->Dados['preco3'] )) { $this->Dados['preco3'] = strtr( $this->Dados['preco3'] , $this->substituicao); } if(isset( $this->Dados['adic1'] )) { $this->Dados['adic1'] = strtr( $this->Dados['adic1'] , $this->substituicao); } if(isset( $this->Dados['adic2'] )) { $this->Dados['adic2'] = strtr( $this->Dados['adic2'] , $this->substituicao); } if(isset( $this->Dados['adic3'] )) { $this->Dados['adic2'] = strtr( $this->Dados['adic3'] , $this->substituicao); } if(isset( $this->Dados['cab_valor_frete'] )) { $this->Dados['cab_valor_frete'] = strtr( $this->Dados['cab_valor_frete'] , $this->substituicao); } if(isset( $this->Dados['valor_seguro'] )) { $this->Dados['valor_seguro'] = strtr( $this->Dados['valor_seguro'] , $this->substituicao); } if(isset( $this->Dados['custo_medio'] )) { $this->Dados['custo_medio'] = strtr( $this->Dados['custo_medio'] , $this->substituicao); } if(isset( $this->Dados['perc_depreciacao'] )) { $this->Dados['perc_depreciacao'] = strtr( $this->Dados['perc_depreciacao'] , $this->substituicao); } if(isset( $this->Dados['perc_manutencao'] )) { $this->Dados['perc_manutencao'] = strtr( $this->Dados['perc_manutencao'] , $this->substituicao); } if(isset( $this->Dados['perc_margem'] )) { $this->Dados['perc_margem'] = strtr( $this->Dados['perc_margem'] , $this->substituicao); } if(isset( $this->Dados['qtde'] )) { $this->Dados['qtde'] = strtr( $this->Dados['qtde'] , $this->substituicao); } if(isset( $this->Dados['celular'] )) { $this->Dados['celular'] = strtr( $this->Dados['celular'] , $this->substituicao); } if(isset( $this->Dados['cepdestino'] )) { $this->Dados['cepdestino'] = strtr( $this->Dados['cepdestino'] , $this->substituicao); } } public function listarCadastrar() { if(isset($_SESSION['numero'])) { $listar = new \App\adms\Models\helper\AdmsRead(); $listar->fullRead("SELECT cab.nome_cliente, cat.nome nome_categoria, concat(item.prazo1,'/',item.prazo2,'/',item.prazo3) prazo, item.preco1, item.id id_item, item.nome_marca, item.nome_modelo, item.nome_produto FROM gre_item_propostas item inner join gre_categorias cat on item.gre_cat_id = cat.id inner join gre_cab_propostas cab on cab.numero = item.numero WHERE item.numero=". $_SESSION['numero']. ' and cab.empr_id='. $_SESSION['id_user']. 'order by item.id'); $registro['dadosTab'] = $listar->getResultado(); }else{ $registro['dadosTab'] = ""; } $listar = new \App\adms\Models\helper\AdmsRead(); $listar->fullRead("SELECT id id_pessoa, nome nome_pessoa FROM gre_tipo_pessoa"); $registro['pessoa'] = $listar->getResultado(); $listar->fullRead("SELECT id id_prazo, prazo nome_prazo FROM gre_prazos"); $registro['prazo'] = $listar->getResultado(); $listar->fullRead("SELECT id id_cat, nome nome_cat, perc_depreciacao perc_depr , perc_margem, perc_manutencao, office, antivirus FROM gre_categorias"); $registro['cat'] = $listar->getResultado(); $listar->fullRead("SELECT id id_modelo, categoria_id id_cat, marca_id id_marca, nome nome_modelo FROM gre_modelos"); $registro['modelo'] = $listar->getResultado(); $listar->fullRead("SELECT id id_marca, categoria_id id_cat, nome nome_marca FROM gre_marcas"); $registro['marca'] = $listar->getResultado(); $listar->fullRead("SELECT id id_param, perc_impostos, perc_frete, valor_office, qtde_licenca_office, valor_antivirus, qtde_licenca_antivirus FROM gre_parametros where empr_id = {$_SESSION['id_user']}"); $registro['param'] = $listar->getResultado(); $listar->fullRead("SELECT id id_prod, categoria_id id_cat, marca_id id_marca, modelo_id id_modelo, nome nome_prod, custo_medio FROM gre_produtos"); $registro['prod'] = $listar->getResultado(); $listar->fullRead("SELECT id id_cliente, gre_tipo_id tipo_id, nome nome_cliente, lpad(cep,8,0) cep_cliente, email email_cliente, contato contato_cliente, celular celular_cliente FROM gre_clientes where empr_id ={$_SESSION['id_user']} and gre_sit_id = 1"); $registro['cliente'] = $listar->getResultado(); $this->Resultado = ['cliente' => $registro['cliente'], 'pessoa' => $registro['pessoa'], 'cat' => $registro['cat'], 'marca' => $registro['marca'], 'modelo' => $registro['modelo'], 'prod' => $registro['prod'], 'param' => $registro['param'], 'prazo' => $registro['prazo'], 'dadosTab' => $registro['dadosTab']]; return $this->Resultado; } }