RC
Como aplicar uma máscara em campo do TMultiField ?
Fechado
Bom tarde.
Gostaria de uma ajuda de vocês pessoal.
Quando eu for editar um formulário eu preciso carregar os dados de um TMultiField aplicando a seguinte máscara nos campos
Segue o código fonte do onEdit:
Código da função Uteis::numeroBrasil:
Quando vou executar seguindo esse meu exemplo ai é apresentado a seguinte mensagem de erro:
Gostaria de uma ajuda de vocês pessoal.
Quando eu for editar um formulário eu preciso carregar os dados de um TMultiField aplicando a seguinte máscara nos campos
Quantidade
e Valor Unitário
- <?php
- number_format($num, $decimal, ',', '.');
- ?>
Segue o código fonte do onEdit:
- <?php
- function onEdit($param) {
- try {
- if (isset($param['key'])) {
- $key = $param['key'];
- TTransaction::open('permission');
- //Contém os dados do Formulário
- $object = new Entrada($key);
- $object->dataentrada = TDate::date2br($object->dataentrada);
- $object->datanotafiscal = TDate::date2br($object->datanotafiscal);
- //Contém os dados do TMultiField
- $object->produtos = $object->getProdutos();
- //Tentei fazer assim
- $object->qtde = Uteis::numeroBrasil($object->produtos->qtde);
- $object->valorunitario = Uteis::numeroBrasil($object->valorunitario);
- $this->form->setData($object);
- TTransaction::close();
- } else {
- $this->form->clear();
- }
- } catch (Exception $e) {
- new TMessage('error', '<b>Error</b> ' . $e->getMessage());
- TTransaction::rollback();
- }
- }
- ?>
Código da função Uteis::numeroBrasil:
- <?php
- /**
- * method numeroIngles()
- * recebe um numero, pode ser float, do tipo do ingles
- * e o transforma num numero do tipo brasileiro (ex. 1.524,36)
- * @param $num string com os numeros
- * @returns string com o valor formatado
- */
- public static function numeroBrasil($num, $decimal = 2)
- {
- if($num)
- {
- return number_format($num, $decimal, ',', '.');
- }
- }
- ?>
Quando vou executar seguindo esse meu exemplo ai é apresentado a seguinte mensagem de erro:
Notice: Trying to get property of non-object in C:\Program Files\wamp\www\almoxarifado\app\control\estoque\EntradaFormView.class.php on line 215
Eu tentei criar os métodos get_quantidade e get_valor_unitario no model correspondente aos dados do TMultiField:
E depois alterei os dois atributos do multifield para referenciar esses métodos:
Mas só dá certo até eu editar ou adicionar um novo registro no multifield!
Assim que eu edito ou adiciono um novo registro no multifield todos as colunas da tabela do banco que contém a qtde e o valor unitário são apagadas.
Muito estranho.
Alguém pode me socorrer com esse problema, por favor!
Depois de incansáveis tentativas, eis que cheguei no resultado que desejava.
Vou postar aqui a solução que encontrei para quem um dia precisar fazer o mesmo
O onEdit ficou assim:
E no model Entrada eu alterei o método getProdutos para o seguinte:
A classe Uteis é uma colaboração do Ricardo Câmara. Eu peguei neste link: www.adianti.com.br/forum/pt/view_1582?erro-na-soma-ao-formatar-valor