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.

Curso Dominando o Adianti Framework

O material mais completo de treinamento do Framework.
Curso em vídeo aulas + Livro completo + Códigos fontes do projeto ERPHouse.
Conteúdo Atualizado!


Dominando o Adianti Framework 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.