Lançado Adianti Framework 7.6!
Clique aqui para saber mais
Mascara valor monetário Bom dia, já procurei em diversos links do fórum aqui, porém não encontrei algo que dê certo ainda, meu problema é o seguinte, quero colocar a mascara de valor monetário, porém ao salvar no banco de dados oracle sempre dá invalid number, acho que precisaria colocar algo dentro do onSave, mas ainda não encontrei o que... Se puderem me ajudar ficarei grato....
F
Mascara valor monetário  
Bom dia, já procurei em diversos links do fórum aqui, porém não encontrei algo que dê certo ainda, meu problema é o seguinte, quero colocar a mascara de valor monetário, porém ao salvar no banco de dados oracle sempre dá invalid number, acho que precisaria colocar algo dentro do onSave, mas ainda não encontrei o que...

Se puderem me ajudar ficarei grato.

Pacotão Dominando o Adianti Framework 7
O material mais completo de treinamento do Framework.
Curso em vídeo aulas + Livro completo + Códigos fontes do projeto ERPHouse.
Conteúdo Atualizado! Versão 7.4


Dominando o Adianti 7 Quero me inscrever agora!

Comentários (8)


IF

  1. <?php
  2. $valor->setNumericMask(2,',','.'true);
  3. ?>
F

Obrigado por responder Ivan, eu tentei isso, ele realmente funciona, porém na hora de salvar aparece o erro (ORA-01722: invalid number).
No bd o formato é NUMBER(12,4).
IF

Não trabalho com o Oracle, mas acho que se no Bom dia! está setado 4 casas decimais, vc deve enviar 4 casas decimais.
Tenta isso ou no onSave, crie uma função pra sempre enviar esses dados com 4 casas decimais, talvez isso die certo.
?php
$valor->setNumericMask(4,',','.', true);
?>
IF

eita corretor do diabo rsrs não foi "bom dia" que eu quis dizer, foi "BD"
AC

Cara, verifique o formato que chega lá no seu onSave para esse campo e ajuste com a função PHP str_replace(...) para o formato que o ORACLE recebe.
Pesquise também a forma de entrada desse tipo de dado usando especificamente o PDO, pois, é justamente nele quem você deve focar nesse caso.
Eu achei aqui uma recomendação para formatar o valor no formato que você precisa e fazer uma conversão tipo: $valor = (float) $valor_string_decimal_formatado.

Espero ter ajudado.
F

Obrigado por tentar ajudar pessoal, mas ainda não consegui. Vou mostrar como tem que ser e como está chegando.
Eu pegando o valor no input dessa forma:
  1. <?php $moe_item_moe_vl_venda->setNumericMask(2',''.',true); ?>

quando clico para salvar no formulário na função AddMoneyItemMoney, ele está sendo salvo dessa maneira ==> 1234.56 porém no banco somente aceita se fosse 1234,56 com virgula, ai minha duvida é se eu tenho que colocar um replace ou number_format na função AddMoneyItemMoney ou no onSave, e como colocar...
Se puderem me dar uma luz ficarei muito agradecido. rs
JS

Felipe,

Já tentou colocar o replace antes do store do objeto no OnSave ?

no método OnSave

....

$object->valorMoney = str_replace('.' , ',' , $object->valorMoney);
$object->store();
BS

Cara, você não acha que é muito complicado? Acredito que haja coisas mais interessantes que você pode fazer na Internet, e negociar é uma delas. Acredito que isso pode ajudá-lo a ganhar mais dinheiro do que isso, então recomendo que você verifique esta página https://olymptrade.broker/pt-br/olymp-trade-login/ , leia todas as informações necessárias sobre negociação e comece a ganhar dinheiro.