Ir para conteúdo

POWERED BY:

violin101

PHP - Passar valor para o INPUT vindo do AJAX em formato moeda

Recommended Posts

Caros amigos, saudações.

 

Tem como passar para o Formulário um Campo vindo via AJAX no formato moeda ?

 

Tenho uma rotina onde o usuário escolhe através de uma Lista na modal de Produtos e o sistema informa o formulário os seguintes campos:
código | descrição | espécie | estoque atual.

 

o estoque atual preciso passar nesse formato, para validação de quantidade: 15.00 ou 15,00.

ou seja:

converter de: 15 

para: 15.00 com casas decimais

tem como fazer isso ?

 

Grato,

 

Cesar

Compartilhar este post


Link para o post
Compartilhar em outros sites

Existem funções nativas tanto em PHP quanto em JavaScript que podem ajudar na formatação de números para moeda.
Vou listar algumas das funções mais úteis para esse propósito em ambas as linguagens.

PHP

// 1. number_format()
$numero = 1234.56;
echo number_format($numero, 2, ',', '.'); // Saída: 1.234,56

// 2. money_format() (Obsoleta a partir do PHP 7.4)
// Nota: Esta função foi removida no PHP 8.0
setlocale(LC_MONETARY, 'pt_BR');
$numero = 1234.56;
echo money_format('%.2n', $numero); // Saída: R$ 1.234,56

// 3. NumberFormatter (intl extension)
$formatter = new NumberFormatter('pt_BR', NumberFormatter::CURRENCY);
echo $formatter->formatCurrency(1234.56, 'BRL'); // Saída: R$ 1.234,56

// 4. str_replace() (para substituir ponto por vírgula)
$numero = 1234.56;
echo str_replace('.', ',', number_format($numero, 2)); // Saída: 1234,56

JS

// 1. toFixed()
let numero = 1234.56;
console.log(numero.toFixed(2)); // Saída: "1234.56"

// 2. toLocaleString()
let numero = 1234.56;
console.log(numero.toLocaleString('pt-BR', { style: 'currency', currency: 'BRL' }));
// Saída: "R$ 1.234,56"

// 3. Intl.NumberFormat
let formatter = new Intl.NumberFormat('pt-BR', {
    style: 'currency',
    currency: 'BRL',
});
console.log(formatter.format(1234.56)); // Saída: "R$ 1.234,56"

// 4. replace() (para substituir ponto por vírgula)
let numero = 1234.56;
console.log(numero.toFixed(2).replace('.', ',')); // Saída: "1234,56"

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amigo Williams, saudações.

Obrigado pela a dica acima.

 

Estou com o seguinte problema.

Quando salvo as entrada de produtos no MySql, salvo a quantidade neste formato: 123.45  <== usando ponto

O problema é quando vou fazer o consumo, preciso fazer uma validação para não digitar acima do estoque real, ou seja, 123.45.

 

o erro que estou encontrando é:
estoque real: 123.45

consumo.....: 2.00   <== aqui dá erro, pois o sistema entende que 2 é maior que 123.45

 

o JS me traz as informações correta do BD é somente nessa validação que não estou entendendo este erro.

 

Observação: para nesse caso preciso salvar a quantidade no formato BRASILEIRO, pois alguns produtos utiliza quantidade após a virgula ou ponto.

 

o form está assim:


<div class="col-md-2">
     <div class="form-group">
           <label for="">Estoque Atual</label>
            <input type="text" class="form-control" id="estoque_atual" name="estoque_atual"
                   style="font-size:15px; font-weight:bold; width:100%; text-align:center;"
                    disabled > 
      </div>
</div> 

<!--A modal carrega os Dados do MySql para selecionar o produto. -->
<div class="modal fade" id="modal_prod">
  <div class="modal-dialog modal-xl">
    <div class="modal-content">

      <div class="modal-header" style="font-size:18px; color:#ffffff; background:#307192;">
         <h4 class="modal-title"><strong>Lista do(s) Produto(s) por Departamento(s)</strong></h4>
      </div>

      <div class="modal-body">
        <table id="tab_prod" class="table table-bordered table-hover">
          <thead>
            <tr>
              <th style="text-align:center;">Cód. Interno</th>
              <th style="text-align:center;">Descrição</th>
              <th style="text-align:center;">ESP</th>
              <th style="text-align:center;">QTDE</th>
              <th style="text-align:center;">Ação</th>
            </tr>
          </thead>
          <tbody>
          
          <?php foreach ($lanca as $lnc) {
            //Variável criada para carregar informação dos Dados para o Botão
            $datalnc = $lnc->idProdutos."*".$lnc->cod_interno."*".$lnc->descricao."*".$lnc->prd_unid."*".$lnc->estoque_atual;                   
            echo '<tr>';
              echo '<td width="20" height="10" style="text-align:center;">'.$lnc->idProdutos.'</td>';
              echo '<td width="250" height="10" style="text-align:left;">'.$lnc->descricao.'</td>';
              echo '<td width="20" height="10" style="text-align:center;">'.$lnc->prd_unid.'</td>';
              echo '<td width="20" height="10" style="text-align:center;">'.number_format($lnc->estoque_atual, 2, ",", ".").'</td>'; 

                echo '<td width="20" style="text-align:center;">            
                        <button type="button" class="btn btn-success btn-prod" 
                          style="margin-right: 2%; padding: 2px 3px;" title="Selecionar Produto"
                          value="'. $datalnc.'" >
                          <span class="fa fa-check"></span>
                        </button></td>';
                            
            echo '</tr>';
                  
            }//Fim do Foreach  ?>
          
          </tbody>
        </table>
      </div>

      <div class="modal-footer justify-content-center" style="background:#BBAAAA;">
        <button type="button" class="btn btn-danger pull-center" data-dismiss="modal">Voltar</button>
      </div>

    </div><!-- /.modal-content -->
  </div><!-- /.modal-dialog -->
</div>

 

 

o JAVASCRIPT, trago assim:


          /*---Função para Capturar o Produto selecionado na Modal---*/
          $(document).on("click",".btn-prod",function(){
            prds = $(this).val();
            infoprd = prds.split("*");
              $("#idProdutos").val(infoprd[0]);
              $("#cod_interno").val(infoprd[1]);
              $("#descricao").val(infoprd[2]);
              $("#prd_unid").val(infoprd[3]);            
              $("#estoque_atual").val(infoprd[4]);  //Campo com os dados do ESTOQUE, ou seja, quantidade: 123.45
              $("#modal_prod").modal("hide");

              //Função para Atualizar o Status do Botão
              statusLimparAgregar()
          });

 

Grato,

 

Cesar

Compartilhar este post


Link para o post
Compartilhar em outros sites

Caros amigos, saudações.

 

Após algumas pesquisas e orientação do grupo, consegui fazer a validação de QtdeDigitada X QtdeEstoque,.

 

Observação: não sei se é a forma mais correta, mas atendeu o que preciso.

 

Ficou assim:

          /*---Função para Capturar o Produto selecionado na Modal---*/
          $(document).on("click",".btn-prod",function(){
            prds = $(this).val();
            infoprd = prds.split("*");
              $("#idProdutos").val(infoprd[0]);
              $("#cod_interno").val(infoprd[1]);
              $("#descricao").val(infoprd[2]);
              $("#prd_unid").val(infoprd[3]);            
              $("#estoque_atual").val(infoprd[4]);  
              $("#modal_prod").modal("hide");

              //Função para Atualizar o Status do Botão
              statusLimparAgregar()
          });
 
          $("#btn-agregar").on("click",function(){   
            var qtde = document.getElementById("qtde").value;     

            //Verifica Duplicidade de Código
            if (verificar(infoprd[0])) {
              //Chama a Modal com Alerta.
              $("#modal_mensagem").modal();
            }else if(verificarEstoque(infoprd[4])){           
              //Chama a Modal com Alerta.
              $("#modal_qtdemaior").modal();
            }else{                           
               if(qtde == ""){
                //Chama a Modal com Alerta.
                $("#modal_quantidade").modal();
               } else {
                 html = "<tr>";
                 html += "<td width='10%' height='10' style='text-align:center;'><input type='hidden' name='id_prds[]' value='"+infoprd[0]+"'>"+infoprd[0]+"</td>";
                 html += "<td width='32%' height='10'><input type='hidden' name='descricao[]' value='"+infoprd[2]+"'>"+infoprd[2]+"</td>";
                 html += "<td width='10%' height='10' style='text-align:center;'>"+
                         "<input type='hidden' name='esp[]' value='"+infoprd[3]+"'>"+infoprd[3]+
                         "<input type='hidden' name='estoq[]' value='"+infoprd[4]+"'></td>";
                 html += "<td width='12%' height='10' style='text-align:center;'><input type='hidden' name='qtde[]' value='"+qtde+"'>"+qtde+"</td>";                
                 html += "<td width='10%' height='10' style='text-align:center;'>"+
                          "<button type='button' class='btn btn-danger btn-remove-produto' style='margin-right: 1%; padding: 1px 2px;' title='Remover Item da Lista'>"+
                          "<span class='fa fa-trash'></span></button></td>";                       
                 html += "</tr>";

                $("#tbventas tbody").append(html);

                //Função para Somar os Itens do Lançamento
                somar();     

                $("#btn-agregar").val(null);
                $("#descricao").val(null);
                $("#cod_interno").val(null);    
                $("#prd_unid").val(null);            
                $("#estoque_atual").val(null);
                $("#qtde").val(null);

                //Desabilita Buttons
                document.getElementById("btn-limp").disabled = true;                                     
                document.getElementById("btn-agregar").disabled = true;     

              }//Fim do IF-qtde      

            }//Fim do IF-verificar
              
          });//Fim da Função btn-agregar      
          
      });


      /* Remover ITEM da Lista de Produtos */
      $(document).on("click",".btn-remove-produto", function(){
          $(this).closest("tr").remove();   

          //Função para Somar os Itens do Lançamento
          somar();  

          //Função para Atualizar o Status do Botão  
          statusButton();  

      });  


      //Função para Impedir Duplicidade de Produtos
      function verificar(idProdutos){
          var existe = 0;
          $('input[name^="id_prds"]').each(function() {
              if ($(this).val() == idProdutos) {
                  existe = 1;
              }
          });
          return existe;
      }      


      //Função para Impedir Quantidade maior que do Estoque
      function verificarEstoque(){

        //Variável para retonar o resultado
        var exists = 0;

        //Variáveis recebe o valor do Formulário
        var qts = document.getElementById('qtde').value;
        var stq = document.getElementById('estoque_atual').value;

        // Substitui vírgula por ponto, remove caracteres não numéricos e converte para float
        valorQtde = parseFloat(qts.replace(/[^\d,-]/g, '').replace(',', '.'));        
        valorEstq = parseFloat(stq.replace(/[^\d,-]/g, '').replace(',', '.'));

        if(valorQtde > valorEstq){
          exists = 1;
          //Limpa Inputs e Button
          $("#btn-agregar").val(null);
          $("#descricao").val(null);
          $("#cod_interno").val(null);    
          $("#prd_unid").val(null);            
          $("#estoque_atual").val(null);
          $("#qtde").val(null);
        }
        return exists;
      }      



 

Compartilhar este post


Link para o post
Compartilhar em outros sites
3 horas atrás, violin101 disse:

Amigo Williams, saudações.

Obrigado pela a dica acima.

 

Estou com o seguinte problema.

Quando salvo as entrada de produtos no MySql, salvo a quantidade neste formato: 123.45  <== usando ponto

O problema é quando vou fazer o consumo, preciso fazer uma validação para não digitar acima do estoque real, ou seja, 123.45.

 

o erro que estou encontrando é:
estoque real: 123.45

consumo.....: 2.00   <== aqui dá erro, pois o sistema entende que 2 é maior que 123.45

 

o JS me traz as informações correta do BD é somente nessa validação que não estou entendendo este erro.

 

Observação: para nesse caso preciso salvar a quantidade no formato BRASILEIRO, pois alguns produtos utiliza quantidade após a virgula ou ponto.

 

o form está assim:



<div class="col-md-2">
     <div class="form-group">
           <label for="">Estoque Atual</label>
            <input type="text" class="form-control" id="estoque_atual" name="estoque_atual"
                   style="font-size:15px; font-weight:bold; width:100%; text-align:center;"
                    disabled > 
      </div>
</div> 

<!--A modal carrega os Dados do MySql para selecionar o produto. -->
<div class="modal fade" id="modal_prod">
  <div class="modal-dialog modal-xl">
    <div class="modal-content">

      <div class="modal-header" style="font-size:18px; color:#ffffff; background:#307192;">
         <h4 class="modal-title"><strong>Lista do(s) Produto(s) por Departamento(s)</strong></h4>
      </div>

      <div class="modal-body">
        <table id="tab_prod" class="table table-bordered table-hover">
          <thead>
            <tr>
              <th style="text-align:center;">Cód. Interno</th>
              <th style="text-align:center;">Descrição</th>
              <th style="text-align:center;">ESP</th>
              <th style="text-align:center;">QTDE</th>
              <th style="text-align:center;">Ação</th>
            </tr>
          </thead>
          <tbody>
          
          <?php foreach ($lanca as $lnc) {
            //Variável criada para carregar informação dos Dados para o Botão
            $datalnc = $lnc->idProdutos."*".$lnc->cod_interno."*".$lnc->descricao."*".$lnc->prd_unid."*".$lnc->estoque_atual;                   
            echo '<tr>';
              echo '<td width="20" height="10" style="text-align:center;">'.$lnc->idProdutos.'</td>';
              echo '<td width="250" height="10" style="text-align:left;">'.$lnc->descricao.'</td>';
              echo '<td width="20" height="10" style="text-align:center;">'.$lnc->prd_unid.'</td>';
              echo '<td width="20" height="10" style="text-align:center;">'.number_format($lnc->estoque_atual, 2, ",", ".").'</td>'; 

                echo '<td width="20" style="text-align:center;">            
                        <button type="button" class="btn btn-success btn-prod" 
                          style="margin-right: 2%; padding: 2px 3px;" title="Selecionar Produto"
                          value="'. $datalnc.'" >
                          <span class="fa fa-check"></span>
                        </button></td>';
                            
            echo '</tr>';
                  
            }//Fim do Foreach  ?>
          
          </tbody>
        </table>
      </div>

      <div class="modal-footer justify-content-center" style="background:#BBAAAA;">
        <button type="button" class="btn btn-danger pull-center" data-dismiss="modal">Voltar</button>
      </div>

    </div><!-- /.modal-content -->
  </div><!-- /.modal-dialog -->
</div>

 

 

o JAVASCRIPT, trago assim:



          /*---Função para Capturar o Produto selecionado na Modal---*/
          $(document).on("click",".btn-prod",function(){
            prds = $(this).val();
            infoprd = prds.split("*");
              $("#idProdutos").val(infoprd[0]);
              $("#cod_interno").val(infoprd[1]);
              $("#descricao").val(infoprd[2]);
              $("#prd_unid").val(infoprd[3]);            
              $("#estoque_atual").val(infoprd[4]);  //Campo com os dados do ESTOQUE, ou seja, quantidade: 123.45
              $("#modal_prod").modal("hide");

              //Função para Atualizar o Status do Botão
              statusLimparAgregar()
          });

 

Grato,

 

Cesar


Explicando:

O erro ocorre porque você está comparando strings em vez de números, e na comparação de strings, "2.00" é considerado maior que "123.45" (porque a comparação é feita caractere por caractere, e "2" vem depois de "1" alfabeticamente).


Para resolver este problema, precisa garantir que está trabalhando com números em vez de strings, e que esta usando o formato correto para comparação. Vou sugerir uma solução que mantém o formato brasileiro para exibição, mas usa o formato com ponto para cálculos internos.

// Função para formatar número para o formato brasileiro
function formatarNumero(numero) {
    return numero.toLocaleString('pt-BR', { minimumFractionDigits: 2, maximumFractionDigits: 2 });
}

// Função para converter string no formato brasileiro para número
function converterParaNumero(str) {
    return parseFloat(str.replace('.', '').replace(',', '.'));
}

// Modifique a função existente
$(document).on("click", ".btn-prod", function() {
    prds = $(this).val();
    infoprd = prds.split("*");
    $("#idProdutos").val(infoprd[0]);
    $("#cod_interno").val(infoprd[1]);
    $("#descricao").val(infoprd[2]);
    $("#prd_unid").val(infoprd[3]);
    
    // Armazena o valor numérico em um atributo data-
    var estoqueNumerico = parseFloat(infoprd[4]);
    $("#estoque_atual").val(formatarNumero(estoqueNumerico))
                       .data('valor-numerico', estoqueNumerico);
    
    $("#modal_prod").modal("hide");

    statusLimparAgregar();
});

// Função para validar o consumo
function validarConsumo() {
    var estoqueAtual = $("#estoque_atual").data('valor-numerico');
    var consumo = converterParaNumero($("#campo_consumo").val());

    if (consumo > estoqueAtual) {
        alert("O consumo não pode ser maior que o estoque atual.");
        return false;
    }
    return true;
}

// Adicione este evento ao campo de consumo
$("#campo_consumo").on('blur', function() {
    $(this).val(formatarNumero(converterParaNumero($(this).val())));
});

// Use esta função no submit do formulário
$("form").on('submit', function(e) {
    if (!validarConsumo()) {
        e.preventDefault(); // Impede o envio do formulário se a validação falhar
    }
});

Explicação das modificações:

  1. formatarNumero(): Formata um número para o estilo brasileiro (123,45).
  2. converterParaNumero(): Converte uma string no formato brasileiro para um número.
  3. Na função de click do produto, armazenamos o valor numérico do estoque em um atributo data- e exibir o valor formatado no campo.
  4. validarConsumo(): Compara o consumo com o estoque atual, ambos como números.
  5. Adicionado um evento blur ao campo de consumo para formatá-lo automaticamente.
  6. Adicionado uma validação no submit do formulário.

Com essas modificações, você pode:

  1. Exibir os números no formato brasileiro (123,45).
  2. Armazenar internamente os valores como números para comparações corretas.
  3. Validar se o consumo é maior que o estoque atual.

Lembre-se de ajustar os IDs dos campos (#campo_consumo, por exemplo) para corresponder aos seus IDs reais no HTML.

Além disso, no PHP, quando for salvar os dados no banco de dados, você precisará converter o valor de volta para o formato com ponto:
 

$consumo = str_replace(',', '.', $_POST['campo_consumo']);

Isso garantirá que o valor seja salvo corretamente no MySQL.

Esta abordagem deve resolver o problema de comparação, mantendo a exibição no formato brasileiro e permitindo cálculos e comparações precisas.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora

  • Conteúdo Similar

    • Por luiz monteiro
      Olá, tudo bem?
       
      Estou melhorando meu conhecimento em php e mysql e, me deparei com o seguinte. A tabela da base de dados tem um campo do tipo varchar(8) o qual armazena números. Eu não posso alterar o tipo desse campo. O que preciso é fazer um select para retornar o números que contenham zeros a direita ou a esquerda.
      O que tentei até agora
       
      Ex1
      $busca = $conexao->prepare("select campo form tabela where (campo = :campo) ");
      $busca->bindParam('campo', $_REQUEST['campo_form']);
       
      Se a direita da string $_REQUEST['campo_form'] termina ou inicia com zero ou zeros, a busca retorna vazio.
      Inseri dados numéricos, da seguinte maneira para testar: 01234567;  12345670: 12345678: 12340000... entre outros nessa coluna. Todos os valores que não terminam ou não iniciam com zero ou zeros, o select funciona.
       
       
      Ex2
      $busca = $conexao->prepare("select campo form tabela where (campo = 0340000) ");
      Esse número está cadastrado, mas não retorna.
       
      Ex3
      $busca = $conexao->prepare("select campo form tabela where (campo = '02340001' ) ");
      Esse número está cadastrado, mas não retorna.
       
       
      Ex4
      $busca = $conexao->prepare("select campo form tabela where (campo like 2340000) ");
      Esse número está cadastrado, mas não retorna.
       
      Ex5
      $busca = $conexao->prepare("select campo form tabela where (campo like '12340000') ");
      Esse número está cadastrado, mas não retorna.
       
      Ex6
      $busca = $conexao->prepare("select campo form tabela where (campo like '"12340000"' ) ");
      Esse número está cadastrado, mas não retorna.
       
       
      Ex7
      $busca = $conexao->prepare("select campo form tabela where (campo like :campo) ");
      $busca->bindParam('campo', $_REQUEST['campo_form'])
      Não retorna dados.
       
      O  $_REQUEST['campo_form'] é envio via AJAX de um formulário. 
      Usei o gettype para verificar o post, e ele retorna string.
      Fiz uma busca com número 12345678 para verificar o que o select retorna, e também retrona como string.
       
      Esse tipo de varchar foi usado porque os números que serão gravados nesse campo,  terão zeros a direita ou na esquerda. Os tipos number do mysql não gravam zeros, então estou usando esse. O problema é a busca.
      Agradeço desde já.
       
       
    • Por daemon
      Boa tarde,
       
      Eu tenho uma rotina que faz uma leitura do arquivo .xml de vários sites.

      Eu consigo pegar o tópico e a descrição, e mostrar a imagem que esta na pagina do link.
      Para isso utilizo esta função:
      function getPreviewImage($url) { // Obter o conteúdo da página $html = file_get_contents($url); // Criar um novo objeto DOMDocument $doc = new DOMDocument(); @$doc->loadHTML($html); // Procurar pela tag meta og:image $tags = $doc->getElementsByTagName('meta'); foreach ($tags as $tag) { if ($tag->getAttribute('property') == 'og:image') { return $tag->getAttribute('content'); } } // Se não encontrar og:image, procurar pela primeira imagem na página $tags = $doc->getElementsByTagName('img'); if ($tags->length > 0) { return $tags->item(0)->getAttribute('src'); } // Se não encontrar nenhuma imagem, retornar null return null; } // Uso: $url = "https://example.com/article"; $imageUrl = getPreviewImage($url); if ($imageUrl) { echo "<img src='$imageUrl' alt='Preview'>"; } else { echo "Nenhuma imagem encontrada"; }  
      Mas estou com um problema, esta funcão funciona quando coloco em uma pagina de teste.php. Preciso mostrar em uma página inicial diversas fotos de todos os links. (No caso acima só funciona 1).
    • Por violin101
      Caros amigos, saudações.
       
      Por favor, me permita tirar uma dúvida com os amigos.

      Tenho um Formulário onde o Usuário digita todos os Dados necessários.

      Minha dúvida:
      --> como faço após o usuário digitar os dados e salvar, o Sistema chamar uma Modal ou mensagem perguntando se deseja imprimir agora ?

      Grato,
       
      Cesar
    • Por Carcleo
      Tenho uma abela de usuarios e uma tabela de administradores e clientes.
      Gostaria de uma ajuda para implementar um cadastro
       
      users -> name, login, passord (pronta) admins -> user_id, registratiom, etc.. client -> user_id, registratiom, etc...
      Queria ajuda para extender de user as classes Admin e Client
      Olhem como estáAdmin
      <?php namespace App\Models; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; class Admin extends User {     use HasFactory;            protected $fillable = [         'name',         'email',         'password',         'registration'     ];      private string $registration;     public function create(         string $name,          string $email,          string $password,         string $registration     )     {         //parent::create(['name'=>$name, 'email'=>$email, 'password'=>$password]);         parent::$name = $name;         parent::$email = $email;         parent::$password = $password;         $this->registration = $registration;     } } User
      <?php namespace App\Models; // use Illuminate\Contracts\Auth\MustVerifyEmail; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Foundation\Auth\User as Authenticatable; use Illuminate\Notifications\Notifiable; use Illuminate\Database\Eloquent\Relations\BelongsToMany; class User extends Authenticatable {     /** @use HasFactory<\Database\Factories\UserFactory> */     use HasFactory, Notifiable;     static string $name;     static string $email;     static string $password;     /**      * The attributes that are mass assignable.      *      * @var list<string>      */     protected $fillable = [         'name',         'email',         'password',     ];          /**      * The attributes that should be hidden for serialization.      *      * @var list<string>      */     protected $hidden = [         'remember_token',     ];     /**      * Get the attributes that should be cast.      *      * @return array<string, string>      */     protected function casts(): array     {         return [             'email_verified_at' => 'datetime',             'password' => 'hashed',         ];     }          public function roles() : BelongsToMany {         return $this->belongsToMany(Role::class);     }       public function hasHole(Array $roleName): bool     {                 foreach ($this->roles as $role) {             if ($role->name === $roleName) {                 return true;             }         }         return false;     }         public function hasHoles(Array $rolesName): bool     {                 foreach ($this->roles as $role) {             foreach ($rolesName as $rolee) {             if ($role->name === $rolee) {                 return true;             }          }         }         return false;     }         public function hasAbility(string $ability): bool     {         foreach ($this->roles as $role) {             if ($role->abilities->contains('name', $ability)) {                 return true;             }         }         return false;     }     } Como gravar um Admin na tabela admins sendo que ele é um User por extensão?
      Tentei assim mas é claro que está errado...
      public function store(Request $request, Admin $adminModel) {         $dados = $request->validate([             "name" => "required",             "email" => "required|email",             "password" => "required",             "registration" => "required"         ]);         $dados["password"] =  Hash::make($dados["password"]);                  $admin = Admin::where("registration",  $dados["registration"])->first();                  if ($admin)              return                    redirect()->route("admin.new")                             ->withErrors([                                 'fail' => 'Administrador já cadastrados<br>, favor verificar!'                   ]);                            $newAdmin = $adminModel->create(                                    $dados['name'],                                    $dados['email'],                                    $dados['password'],                                    $dados['registration']                                 );         dd($newAdmin);         $adminModel->save();         //$adminModel::create($admin);                  return redirect()->route("admin.new")->with("success",'Cadastrado com sucesso');     }  
    • Por violin101
      Caros amigos, saudações.
       
      Gostaria de tirar uma dúvida com os amigos, referente a PDV.
       
      Estou escrevendo um Sistema com Ponto de Vendas, a minha dúvida é o seguinte, referente ao procedimento mais correto.

      Conforme o caixa vai efetuando a venda, o Sistema de PDV já realiza:
      a baixa direto dos produtos no estoque
      ou
      somente após concretizar a venda o sistema baixa os produtos do estoque ?
       
      Grato,
       
      Cesar
       
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.