violin101
Members-
Total de itens
290 -
Registro em
-
Última visita
Tudo que violin101 postou
-
PHP+Codeigniter - Importar Dados de uma Tabela para outra - MySql
violin101 postou um tópico no fórum PHP
Caros amigos, saudações. Por favor, peço desculpa em recorrer a ajuda dos amigos referente uma dúvida. Tenho um Sistema que estou escrevendo em PHP + Codeigniter e a minha dúvida em Codeigniter é: Obs.: as tabela são em MySql => como faço para IMPORTAR o dado de uma Tabela para outra, as tabela são: ___________________Tabela de Pedido =========== para ==========> Tabela de Entrada de Lançamentos itens: codigoProduto | quantidade | valorUnitario === importar===> itens: codigoProduto | quantidade | valorUnitario Estou tentando de várias formas, mas não estou conseguindo. Por favor, alguém pode me dar uma ajuda, explicação ou orientação. Grato, Cesar -
PHP+Codeigniter - Importar Dados de uma Tabela para outra - MySql
violin101 respondeu ao tópico de violin101 em PHP
Caros amigos, saudações. Amigo Williams, entendi sua explicação e concordo. Vou te explicar para o amigo não achar que estou copiar de copiar. Na verdade no meu sistema deixei um Módulo somente para Cotação, onde esse módulo atende as necessidades de uma Pequena Empresa até a uma Prefeitura se for o caso. Quando o Almoxarifado/Logística fizer uma Lista de produtos com estoque baixo, ou seja, solicitação/pedido de compra, preferi separa as Tabelas e assim o Setor de Almoxarifado quanto fez a solicitação, terá um registro do que solicitou. Caso o Compras realizar a aquisição de algum produto ERRADO, o Almoxarifado terá como cobrar. ==>Exemplo de compra que gera confusão: Material de Limpeza. o Almoxarifado pediu para comprar: Saco de Lixo P8 - espessura igual a 0,08mm mas o Compras por algum motivo comprou: Saco de Lixo P6 - espessura igual a 0,06mm ==>Obs.: para algum setor pode até atender, mas para outros é fraco. Entendi sua lógica acima, evita muita codificação e altera chaves de pedido para cotação. Mas já trabalhei com ambas pessoas tanto de Estoque quanto de Compras, que promovia confusão em relação a pedido e compras. Grato, Cesar -
PHP+Codeigniter - Importar Dados de uma Tabela para outra - MySql
violin101 respondeu ao tópico de violin101 em PHP
Caros amigos, saudações. Com ajuda do amigo Albano membro do forum e com algumas pesquisas, foi solucionado a minha dúvida referente a Importação de Dados. Abaixo deixo os Código, para quem precisar e tiver a mesma dúvida que eu tive. Pasta CONTROLLER: function importaItens(){ //Recebe os dados via POST do formulário $idSgst = $this->input->post('idPedidos'); //ID idPedidoitens $idCtas = $this->input->post('idEntrada'); //ID idEntrada $idNmbr = $this->input->post('cotaNumero'); //Numero Entrada //Função Chama o Importar $this->importar($idSgst,$idCtas,$idNmbr); } //Salvar os Itens da Entrada protected function importar($idSgst,$idCtas,$idNmbr){ $itensImport = $this->pasta_model->get_SeuBD($idSgst); $data = []; foreach($itensImport as $item ){ $data[] = array( 'codProd' => $item->idProduto, 'cotaQtde' => $item->quantidade, 'cotaNumero' => $idNumero, 'entrada_idEntradas' => $idCtas, ); } //Quebra em 100 $chunks = array_chunk($data, 100); //Para cada grupo de até 100 registros foreach ($chunks as $chunk) { //Faça um insert na tabela $this->db->insert_batch('entradasItens', $chunk); } if ($itensImport) { $this->session->set_flashdata('success', '<h4>Entrada de Produtos nº.'.str_pad($idSugst,'5','0', STR_PAD_LEFT).' - Importado com Sucesso!</h4>'); redirect(base_url() . 'caminho/pasta/sua_view/'.$idPasta); } else { $this->data['custom_error'] = '<div class="form_error"><p>Ocorreu um erro.</p></div>'; } } Pasta MODELS: //Faz uma Busca por ID de cada ITEM para Importar public function get_SeuBD($idSgst){ $this->db->where("Campo_que_deseja_buscar",$idSgst); $resultado = $this->db->get("sua_tabela"); return $resultado->result(); } //Salva os Itens Importados public function importes($data){ $this->db->insert("sua_tabela_para_importar",$data); } Atenciosamente, Cesar -
Caros amigos, saudações. Estou com uma pequena dúvida que não estou conseguindo resolver. Tenho 2 Tabelas, a 1ª.principal e a 2ª.secundária. Exemplo: Dados da 1ª Tabela - Peças e Equipamentos Dados da 2ª Tabela - Veículos. Seria isso: 0010 - Pneu Aro 20 [x] 001 - Corsa [_] 002 - Fusca [_] 003 - Palio Comentário:________________ 0100 - Óleo para Motor [x] 002 - Fusca [_] 003 - Palio Comentário:________________ 1030 - Lubrificante [_] 001 - Corsa [x] 003 - Palio Comentário:________________ O meu problema está sendo quando preciso SALVAR/ATERAR o campo COMENTÁRIO, pois trata-se da 1ª.tabela. Gostaria salvar o COMENTÁRIO sem interferir nas seleção da 2ª. tabela. Grato, Cesar
-
Caros amigos, saudações. Gostaria de tirar uma dúvida com os amigos. Quando programava em DOS. utilizava algumas teclas de atalho para: SALVAR / EDITAR / EXCLUIR / IMPRIMIR. Por exemplo: Salvar ----> ALT+S Editar ----> ALT+E Excluir --> ALT+X Imprimir -> ALT+I no PHP tem como colocar esses ATALHOS nos button, para o usuário trabalhar com esses atalhos e como seria ? grato, Cesar
-
Caros amigos, saudações. Estou com uma dúvida de validação de INPUT com função moeda. Tenho um input onde o usuário digita um valor qualquer, por exemplo: 1.234,56 o problema é quando precisa atualizar o valor. Quando o usuário atualizar o input fica assim: 1.234, como faço para atualizar as casas decimais, conforme o valor for sendo alterado ? o input está assim: <div class="col-md-2"> <label for="">Valor Unitário</label> <input type="text" class="form-control" id="estoqprod" name="estoqprod" style="font-size:15px; font-weight:bold; width:100%; text-align:center;" placeholder="0,00" OnKeyUp="calcProd();" onkeypress="return(FormataMoeda(this,'.',',',event))" > </div> a função para formatar o input para moeda está assim: obs.: a Função CalcProd está executando corretamente function calcProd(){ //Obter valor digitado do produto var estoq_prod = document.getElementById("estoqprod").value; //Remover ponto e trocar a virgula por ponto while (estoq_prod.indexOf(".") >= 0) { estoq_prod = estoq_prod.replace(".", ""); } estoq_prod = estoq_prod.replace(",","."); //Obter valor digitado do produto var prod_qtde = document.getElementById("qtde").value; //Remover ponto e trocar a virgula por ponto while (prod_qtde.indexOf(".") >= 0) { prod_qtde = prod_qtde.replace(".", ""); } prod_qtde = prod_qtde.replace(",","."); //Calcula o Valor do Desconto if (prod_qtde > 0 && estoq_prod > 0) { calc_total_produto = parseFloat(prod_qtde) - parseFloat(estoq_prod); var numero = calc_total_produto.toFixed(2).split('.'); //Calculo para não deixar GRAVAR valores negativos if (calc_total_produto < 0 ) { numero[0] = numero[0].split(/(?=(?:...)*$)/).join('.') * -1; document.getElementById("qtdeTotal").value = numero.join(','); } else { numero[0] = numero[0].split(/(?=(?:...)*$)/).join('.'); document.getElementById("qtdeTotal").value = numero.join(','); } } else { if (estoq_prod > 0) { document.getElementById("qtdeTotal").value = document.getElementById("estoqprod").value; } else { document.getElementById("qtdeTotal").value = "0,00"; } } } /*---Função para Formatar Campo para Moeda [R$]---*/ function FormataMoeda(objTextBox, SeparadorMilesimo, SeparadorDecimal, e){ var sep = 0; var key = ''; var i = j = 0; var len = len2 = 0; var strCheck = '0123456789'; var aux = aux2 = ''; var whichCode = (window.Event) ? e.which : e.keyCode; if (whichCode == 13) return true; key = String.fromCharCode(whichCode); // Valor para o código da Chave if (strCheck.indexOf(key) == -1) return false; // Chave inválida len = objTextBox.value.length; for(i = 0; i < len; i++) if ((objTextBox.value.charAt(i) != '0') && (objTextBox.value.charAt(i) != SeparadorDecimal)) break; aux = ''; for(; i < len; i++) if (strCheck.indexOf(objTextBox.value.charAt(i))!=-1) aux += objTextBox.value.charAt(i); aux += key; len = aux.length; if (len == 0) objTextBox.value = ''; if (len == 1) objTextBox.value = '0'+ SeparadorDecimal + '0' + aux; if (len == 2) objTextBox.value = '0'+ SeparadorDecimal + aux; if (len > 2) { aux2 = ''; for (j = 0, i = len - 3; i >= 0; i--) { if (j == 3) { aux2 += SeparadorMilesimo; j = 0; } aux2 += aux.charAt(i); j++; } objTextBox.value = ''; len2 = aux2.length; for (i = len2 - 1; i >= 0; i--) objTextBox.value += aux2.charAt(i); objTextBox.value += SeparadorDecimal + aux.substr(len - 2, len); } return false; } Grato, Cesar
-
Caros amigos, saudações. Estou com um problema de cálculo que não estou conseguindo resolver. Tenho uma rotina em Javascript que faz o seguinte cálculo qtde x vrUnit = total. qtde x vrUnit = total 1,23 x 1,00 = 1,23 << até aqui tudo bem. o problema seria fazer o arredondamento para cima para impedir de fazer este cálculo: 0,01 x 0,01 = 0,0001 para digitar o valor estou utilizando esta função: /*Esta função quando o usuário digitar o valor aparece * 1,23 */ function formataDigitacao(i) { //Adiciona os dados para a másrcara var decimais = 2; var separador_milhar = '.'; var separador_decimal = ','; var decimais_ele = Math.pow(10, decimais); var thousand_separator = '$1'+separador_milhar; var v = i.value.replace(/\D/g,''); v = (v/decimais_ele).toFixed(decimais) + ''; var splits = v.split("."); var p_parte = splits[0].toString().replace(/(\d)(?=(\d{3})+(?!\d))/g, thousand_separator); (typeof splits[1] === "undefined") ? i.value = p_parte : i.value = p_parte+separador_decimal+splits[1]; } /*Esta função faz a multiplicação entre Valor Unitário X Quantidade *faz a multiplicação correta */ function calcProd(){ //Obter valor digitado do produto var prod_qtde = document.getElementById("qtde").value; //Remover ponto e trocar a virgula por ponto while (prod_qtde.indexOf(".") >= 0) { prod_qtde = prod_qtde.replace(".", ""); } prod_qtde = prod_qtde.replace(",","."); //Obter valor digitado do produto var valor_unit = document.getElementById("vlrunit").value; //Remover ponto e trocar a virgula por ponto while (valor_unit.indexOf(".") >= 0) { valor_unit = valor_unit.replace(".", ""); } valor_unit = valor_unit.replace(",","."); //Calcula o Valor do Desconto if (valor_unit > 0 && prod_qtde > 0) { calc_total_produto = (parseFloat(valor_unit) * parseFloat(prod_qtde)); var numero = calc_total_produto.toFixed(2).split('.'); //<<== aqui faço o arredondamento das casas decimais de 1,234 p/ 1,23 numero[0] = numero[0].split(/(?=(?:...)*$)/).join('.'); document.getElementById("vlrtotal").value = numero.join(','); } else { if (valor_unit > 0) { document.getElementById("vlrtotal").value = document.getElementById("vlrunit").value; } else { document.getElementById("vlrtotal").value = "0,00"; } } } Grato, Cesar
-
Caros amigos, saudações. Gostaria de poder tirar uma dúvida com os amigos. Como faço uma função para Comparar a Data Digitada pelo o Usuário com a Data Atual ? Data Digitada: 01/09/2024 Exemplo: 25/09/2024 é menor que DATA Atual ====> mensagem: informe uma data válida. 25/09/2024 é igual DATA Atual ===> o sistema libera os INPUT's. Como faço uma comparação com a Data Atual, para não Deixar Gravar Data retroativa a data Atual. Grato, Cesar
-
JAVASCRIPT - Comparar Data Digitada com Data Atual
violin101 respondeu ao tópico de violin101 em Javascript
Caro amigo, Wanderval. Saudações. Após realizar a alteração no meu sistema conforme sua orientação, está apresentando um erro que não entendo. Quando o usuário selecione uma Data Válida, o Sistema acusa campo vazio e não grava, abaixo posto o código caso o amigo, possa me ajudar. <div class="card-body"> <div class="row"> <div class="col-md-3"> <div class="form-group"> <label for="cotaDtainicio">Data de Abertura<span class="required">*</span></label> <div class="controls"> <input type="date" id="cotaDtainicio" name="cotaDtainicio" class="form-control" style="width:100%;" value="" /> </div> </div> </div> </div> </div> <script type="text/javascript"> // Função para definir a data mínima como a data atual function definirDataMinima() { const hoje = new Date(); const ano = hoje.getFullYear(); const mes = String(hoje.getMonth() + 1).padStart(2, '0'); // Janeiro é 0, então +1 const dia = String(hoje.getDate()).padStart(2, '0'); // Definir a data mínima no campo de input no formato YYYY-MM-DD const dataAtual = `${ano}-${mes}-${dia}`; document.getElementById("cotaDtainicio").setAttribute("min", dataAtual); } function verificarData() { const dataDigitada = document.getElementById("cotaDtainicio").value; if (!dataDigitada) { $("#modal_msgdata").modal(); } else { //continua digitando } } // Função para bloquear a digitação no campo de data function bloquearDigitacao(event) { event.preventDefault(); } // Chamar a função para definir a data mínima assim que a página carrega window.onload = function() { definirDataMinima(); //Impedir que o usuário digite diretamente no campo de data const cotaDtainicio = document.getElementById("cotaDtainicio"); cotaDtainicio.addEventListener('keydown', bloquearDigitacao); }; </script> O que ocorre que o sistema acusa vazio o campo ? Grato, Cesar -
JAVASCRIPT - Comparar Data Digitada com Data Atual
violin101 respondeu ao tópico de violin101 em Javascript
caro amigo, Wanderval. obrigado por sua orientação, vou testar no meu sistema. APENAS UMA DÚVIDA REFERENTE O 2º. EXEMPLO. Observações: 1) o INPUT onde o usuário informa a DATA é inupt [ date ]. 2) se o usuário digitar uma data anterior a Data atual, como faço para mostrar que a Data não pode ser anterior a data atual ? O Exemplo que o amigo fez, ainda permite o usuário informa uma data anterior, mesmo após ter selecionado. -
JAVASCRIPT - Comparar Data Digitada com Data Atual
violin101 respondeu ao tópico de violin101 em Javascript
Caros amigos, saudações. Por favor, alguém pode me dar uma ajuda ? Grato, Cesar -
Caros amigos, saudações. Primeiramente agradeço ao auxílio e ajuda que os amigos têm me dado. Minha dúvida: - para emissão de nota fiscal eletrônica precisa de um CERTIFICADO e SENHA. Como ou onde consigo esses dois itens, para fazer teste de emissão de nota fiscal ? Grato, Cesar
-
Caros Amigos, saudações. Por favor, me perdoa em postar uma dúvida. Preciso criar uma Rotina onde o usuário possa buscar na Base de Dados de Produtos, tanto por Código e Descrição, ou seja: - caso o usuário digita o Código, mostra os dados do Produto. - caso o usuário digita a Descrição, mostra os dados do Produto Fiz uma Rotina, onde o usuário digita a DESCRIÇÃO com a função AUTOCOMPLETE. <=== está funcionando certinho. Minha dúvida é como faço para DIGITAR o Código e mostrar os dados também. o meu AutoComplete na MODEL está assim. public function autoCompleteProduto($q){ $this->db->select('*' ) ->from('produtos') ->where('produtos.statusProd',1) ->like('descricao', $q) ->limit(5) ->order_by('descricao', 'ASC'); $query = $this->db->get(); if ($query->num_rows() > 0) { foreach ($query->result_array() as $row) { $row_set[] = ['label' => str_pad($row['idProdutos'], '5', '0', STR_PAD_LEFT).' - '.$row['descricao'], 'id' => $row['idProdutos'], 'descricao' => $row['descricao'], 'cod_interno' => $row['cod_interno'], 'prd_unid' => $row['prd_unid'], 'estoque_atual' => $row['estoque_atual'] ]; } echo json_encode($row_set); } } no CONTROLLER está assim: public function autoCompleteProduto() { $this->load->model('estoque/lancamentos_model'); if (isset($_GET['term'])) { $q = strtolower($_GET['term']); $this->lancamentos_model->autoCompleteProduto($q); } } na VIEW está assim: <div class="col-md-10"> <label for="idProdutos">Produto:</label> <input type="hidden" name="idProdutos" id="idProdutos"> <input type="text" class="form-control" id="descricao" name="descricao" style="font-size:15px; font-weight:bold;" placeholder="Pesquisar por descrição do produto" disabled> </div> VIEW + JAVASCRIPT //Função para trazer os Dados pelo o AutoComplete. function resolveAutocomplete() { $("#descricao").autocomplete({ source: "<?php echo base_url(); ?>estoque/lancamentos/autoCompleteProduto/", minLength: 2, select: function (event, ui) { $("#idProdutos").val(ui.item.id); $("#cod_interno").val(ui.item.cod_interno); $("#descricao").val(ui.item.descricao); $("#prd_unid").val(ui.item.prd_unid); $("#estoque_atual").val(ui.item.estoque_atual); $("#qtde").focus(); } }); } // inicia o autocomplete resolveAutocomplete(); Grato, Cesar
-
Caros amigos, saudações. Estou com uma dúvida de validação de INPUT com função moeda. Tenho um input onde o usuário digita um valor qualquer, por exemplo: 1.234,56 o problema é quando precisa atualizar o valor. Quando o usuário atualizar o input fica assim: 1.234, como faço para atualizar as casas decimais, conforme o valor for sendo alterado ? o input está assim: <div class="col-md-2"> <label for="">Valor Unitário</label> <input type="text" class="form-control" id="estoqprod" name="estoqprod" style="font-size:15px; font-weight:bold; width:100%; text-align:center;" placeholder="0,00" OnKeyUp="calcProd();" onkeypress="return(FormataMoeda(this,'.',',',event))" > </div> a função para formatar o input para moeda está assim: obs.: a Função CalcProd está executando corretamente function calcProd(){ //Obter valor digitado do produto var estoq_prod = document.getElementById("estoqprod").value; //Remover ponto e trocar a virgula por ponto while (estoq_prod.indexOf(".") >= 0) { estoq_prod = estoq_prod.replace(".", ""); } estoq_prod = estoq_prod.replace(",","."); //Obter valor digitado do produto var prod_qtde = document.getElementById("qtde").value; //Remover ponto e trocar a virgula por ponto while (prod_qtde.indexOf(".") >= 0) { prod_qtde = prod_qtde.replace(".", ""); } prod_qtde = prod_qtde.replace(",","."); //Calcula o Valor do Desconto if (prod_qtde > 0 && estoq_prod > 0) { calc_total_produto = parseFloat(prod_qtde) - parseFloat(estoq_prod); var numero = calc_total_produto.toFixed(2).split('.'); //Calculo para não deixar GRAVAR valores negativos if (calc_total_produto < 0 ) { numero[0] = numero[0].split(/(?=(?:...)*$)/).join('.') * -1; document.getElementById("qtdeTotal").value = numero.join(','); } else { numero[0] = numero[0].split(/(?=(?:...)*$)/).join('.'); document.getElementById("qtdeTotal").value = numero.join(','); } } else { if (estoq_prod > 0) { document.getElementById("qtdeTotal").value = document.getElementById("estoqprod").value; } else { document.getElementById("qtdeTotal").value = "0,00"; } } } /*---Função para Formatar Campo para Moeda [R$]---*/ function FormataMoeda(objTextBox, SeparadorMilesimo, SeparadorDecimal, e){ var sep = 0; var key = ''; var i = j = 0; var len = len2 = 0; var strCheck = '0123456789'; var aux = aux2 = ''; var whichCode = (window.Event) ? e.which : e.keyCode; if (whichCode == 13) return true; key = String.fromCharCode(whichCode); // Valor para o código da Chave if (strCheck.indexOf(key) == -1) return false; // Chave inválida len = objTextBox.value.length; for(i = 0; i < len; i++) if ((objTextBox.value.charAt(i) != '0') && (objTextBox.value.charAt(i) != SeparadorDecimal)) break; aux = ''; for(; i < len; i++) if (strCheck.indexOf(objTextBox.value.charAt(i))!=-1) aux += objTextBox.value.charAt(i); aux += key; len = aux.length; if (len == 0) objTextBox.value = ''; if (len == 1) objTextBox.value = '0'+ SeparadorDecimal + '0' + aux; if (len == 2) objTextBox.value = '0'+ SeparadorDecimal + aux; if (len > 2) { aux2 = ''; for (j = 0, i = len - 3; i >= 0; i--) { if (j == 3) { aux2 += SeparadorMilesimo; j = 0; } aux2 += aux.charAt(i); j++; } objTextBox.value = ''; len2 = aux2.length; for (i = len2 - 1; i >= 0; i--) objTextBox.value += aux2.charAt(i); objTextBox.value += SeparadorDecimal + aux.substr(len - 2, len); } return false; } Grato, Cesar
-
Amigos, saudações. Consegui resolver o meu problema, não sei se é a forma mais correta, mas de uma certa forma solucionou o problema. O código ficou assim: Formulário - INPUT <div class="col-md-2"> <label for="">Contagem Estoque </label> <input type="text" class="form-control" id="qtde" name="qtde" style="font-size:15px; font-weight:bold; width:100%; text-align:center;" placeholder="0,00" onblur="calcProd()" onkeyup="formata(this);" > </div> O Javascript function formata(i) { //Adiciona os dados para a másrcara var decimais = 2; var separador_milhar = '.'; var separador_decimal = ','; var decimais_ele = Math.pow(10, decimais); var thousand_separator = '$1'+separador_milhar; var v = i.value.replace(/\D/g,''); v = (v/decimais_ele).toFixed(decimais) + ''; var splits = v.split("."); var p_parte = splits[0].toString().replace(/(\d)(?=(\d{3})+(?!\d))/g, thousand_separator); (typeof splits[1] === "undefined") ? i.value = p_parte : i.value = p_parte+separador_decimal+splits[1]; } function id(valor_campo){ return document.getElementById(valor_campo); } function getValor(valor_campo){ var valor = document.getElementById(valor_campo).value.replace( ',', '.'); return parseFloat( valor ) * 100; } function calcProd() { var total = getValor('qtde') - getValor('estoqprod'); var vlrtotals = total / 100 ; var vlrtotal = vlrtotals.toLocaleString('pt-br', {minimumFractionDigits: 2}); id('qtdeTotal').value = vlrtotal; }
-
Caros amigos, saudações. Desculpa postar minha dúvida, fiz várias pesquisa mas não tive sucesso. Como faço para capturar o ID do SELECT selecionado e passar para base_url ? Exemplo: após selecionar o ID passar para <?php echo base_url();?>estoque/ajuste/adicionar/ <== passar o ID aqui. <div class="col-md-6"> <label for="tipoDepart" class="control-label">Departamento:</label> <select name="tipoDepart" id="tipoDepart" style="width:100%;" class="form-control"> <option value="">Selecione um Departamento</option> <?php foreach ($dprts as $dp) { echo '<option value="'.$dp->idDepartamento.'">'.$dp->departamento.'</option>'; } ?> </select> </div> <div class="col-md-6"> <div class="card card-entrad"> <div class="card-header"> <label class="card-tlentr">Entrada - Estoque</label> </div> <div class="card-body"> <div style="text-align:center;"> <a href="<?php echo base_url();?>estoque/ajuste/adicionar/" <== COMO PASSO O ID SELECIONADO AQUI, PARA ABRIR A PÁGINA COM O ID DO DPTO ? class="btn btn-cinza">Adicionar</a> </div> </div> </div> </div> Observação: preciso capturar e passar o ID para gerar TABELA referente a cada departamento. Grato, Cesar
-
Saudações, amigo Albano. Muito obrigado.
-
PHP - Passar valor para o INPUT vindo do AJAX em formato moeda
violin101 postou um tópico no fórum PHP
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 -
PHP - Passar valor para o INPUT vindo do AJAX em formato moeda
violin101 respondeu ao tópico de violin101 em PHP
Amigo Williams, saudações. Nesse caso o melhor é salvar e configurar o BD como decimal ou valor moeda ? Grato, Cesar -
PHP - Passar valor para o INPUT vindo do AJAX em formato moeda
violin101 respondeu ao tópico de violin101 em PHP
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; } -
PHP - Passar valor para o INPUT vindo do AJAX em formato moeda
violin101 respondeu ao tópico de violin101 em PHP
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 -
PHP - Passar valor para o INPUT vindo do AJAX em formato moeda
violin101 postou um tópico no fórum PHP
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. tem como fazer isso ? Grato, Cesar -
JavaScript - Orientação em passar parametro para Controller
violin101 respondeu ao tópico de violin101 em Javascript
Caros amigos, alguém por favor, pode me dar uma dica ? grato, Cesar -
JavaScript - Orientação em passar parametro para Controller
violin101 postou um tópico no fórum Javascript
Caros amigos, saudações. Estou com uma dúvida e não estou conseguindo resolver. Tenho um SELECT onde eu pego o ID e NOME_CAMPO, até aqui tudo bem. Para evitar erros de saída de produtos por estoque, preciso passar o ID do Centro de Custo, para gerar a Tabela de produtos em estou por cada centro de Custo. Exemplo: Centro de Custo 1 - tem: produto A | produto B | produto C Centro de Custo 2 - tem: produto D | produto E Como consigo pegar via JAVASCRIPT o código do Centro de Custo selecionado e passar para a Controller, para chamar a MODAL ? meu código está assim: VIEW <div class="col-md-6"> <label for="deptsOrigem">Dpto Origem:</label> <div class="input-group mb-3"> <input type="hidden" name="idCentrocusto" id="idCentrocusto"> <input type="text" class="form-control" id="nameCentrocusto" name="nameCentrocusto" style="font-size:15px; font-weight:bold;" placeholder="Pesquisar por Centro de Custo" disabled> <span class="input-group-btn"> <button class="btn btn-primary" type="button" id="btnOrgn" name="btnOrgn" data-toggle="modal" data-target="#modal_deptsOrigem" > <span class="fa fa-search"></span> Buscar </button> </span> </div> </div> <div class="modal fade" id="modal_deptsOrigem"> <div class="modal-dialog modal-lg"> <div class="modal-content"> <div class="modal-header" style="font-size:18px; color:#ffffff; background:#307192;"> <h4 class="modal-title"><strong>Lista do(s) Centro de Custo(s)</strong></h4> </div> <div class="modal-body"> <table id="deptsLista" class="table table-bordered table-hover"> <thead> <tr> <th style="text-align:center;">Código</th> <th style="text-align:center;">Centro de Custo(s)</th> <th style="text-align:center;">Ação</th> </tr> </thead> <tbody id="itensDeptos"> <!---Monta Tabela VIA Ajax---> </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 está assim: //Função para Chamar o Centro de Custo que o usuário deseja. listaDeptos(); var table = $('#deptsLista').dataTable({ "searching": true, "ordering": true, "info": true, "autoWidth": false, "pageLength": 5, "lengthMenu": [ 5, 10, 25, 50 ], "responsive": true, }); // list all employee in datatable function listaDeptos(){ $.ajax({ type : 'ajax', url : '<?=base_url()?>estoque/consumo/deptsList/', async : false, dataType : 'json', success : function(data){ var html = ''; var i; for(i=0; i<data.length; i++){ var datadpts = data[i].idDepartamento+"*"+data[i].departamento; html += '<tr>'+ '<td width="15%" style="text-align:center; font-size:16px;">'+data[i].idDepartamento+'</td>'+ '<td width="50%" style="text-align:left; font-size:16px;">'+data[i].departamento+'</td>'+ '<td width="10%" style="text-align:center;">'+ '<button type="button" class="btn btn-success btn_orgns" style="margin-right: 1%; padding: 2px 5px;" title="Selecionar Departamento" value="'+datadpts+'"><span class="fa fa-check"></span></button>'+ '</td>'+ '</tr>'; } //Fim - For $('#itensDeptos').html(html); } //Fim - success }); //Fim - ajax } //Fim - function /*---Função para Capturar o Departamento selecionado---*/ $(document).on("click",".btn_orgns",function(){ dpts = $(this).val(); infodpts = dpts.split("*"); $("#idCentrocusto").val(infodpts[0]); $("#nameCentrocusto").val(infodpts[1]); $("#modal_deptsOrigem").modal("hide"); //Função para Atualizar o Status do Botão statusPesqProd(); }); //Função para Gerar a Lista de Produtos por Centro de Custo via AJAX. listaProduts(); var table = $('#prdsLista').dataTable({ "searching": true, "ordering": true, "info": true, "autoWidth": false, "pageLength": 5, "lengthMenu": [ 5, 10, 25, 50 ], "responsive": true, }); // list all employee in datatable function listaProduts(){ $.ajax({ type : 'ajax', url : '<?=base_url()?>estoque/consumo/produtsList/', //< como passo aqui o ID do Centro de Custo Selecionado para Gerar a Lista de Produtos async : false, dataType : 'json', success : function(data){ var html = ''; var i; for(i=0; i<data.length; i++){ var prds = data[i].idProdutos+"*"+data[i].cod_interno+"*"+data[i].descricao+"*"+data[i].prd_unid+"*"+data[i].estoque_atual; html += '<tr>'+ '<td width="15%" style="text-align:center; font-size:16px;">'+data[i].cod_interno+'</td>'+ '<td width="50%" style="text-align:left; font-size:16px;">'+data[i].descricao+'</td>'+ '<td width="15%" style="text-align:center; font-size:16px;">'+data[i].prd_unid+'</td>'+ '<td width="15%" style="text-align:center; font-size:16px;">'+data[i].estoque_atual+'</td>'+ '<td width="12%" style="text-align:center;">'+ '<button type="button" class="btn btn-success btn-prod" style="margin-right: 1%; padding: 2px 5px;" title="Selecionar Produto" value="'+prds+'"><span class="fa fa-check"></span></button>'+ '</td>'+ '</tr>'; } //Fim - For $('#itensProds').html(html); } //Fim - success }); //Fim - ajax } //Fim - function a CONTROLLER está assim: //Função para Criar Lista - Produtos Data Tables com AJAX function produtsList(){ $data = $this->consumo_model->prodsList(); echo json_encode($data); } Grato, Cesar -
Caros amigos, saudações. Estou com uma dúvida: Como consigo fazer uma rotina no sistema onde possa fazer de forma automática trazer o resultado de entrada de produtos a cada 3 meses, por exemplo: Produtos --- Entrada --- Meses Prod_A -------- 100 ------ 01/2024 Prod_A -------- 120 ------ 03/2024 Prod_A -------- 105 ------ 04/2024 ========================= Prod_B -------- 105 ------ 02/2024 Prod_B -------- 120 ------ 03/2024 Prod_B -------- 130 ------ 04/2024 ========================= ETC Como consigo mostrar para o usuário esse movimento de entrada a cada 3 meses ? Grato, Cesar