AM
Como eu faço para exibir as duas casas decimais no campo Moeda?
Fechado
Eu utilizo o banc de dados sqlite, e dentro do banco, o campo moeda está definido assim: Real em vez de Real(5,2). Eu deixei apenas Real porque eu abrir o exemplo do tutor, e dentro do banco de dados: samples.db tem apenas float em vez de float(5,2). Bem, como o banco de dados sqlite não tem float, então eu coloquei Real.
O problema é o seguinte: no campo moeda, quando eu digito assim: 2,500.00 funciona,aparece assim: 2,500.00. Mas quando eu digito assim 250.00, no formlist datagrid, ou seja, na pesquisa, exibe apenas assim: 250.0
E eu quero que apareça as duas casas decimais .00
Veja abaixo o meu código fonte da tela de cadastro. É um Recibo de Salário.
Como eu aplico a formatação para exibir as duas casas decimais quando o valor terminar com .00 ?
Eu fiz tudo isso seguindo o exemplo do tutor:
www.adianti.com.br/framework_files/tutor/index.php?class=POSFormView
===================================================================================
O problema é o seguinte: no campo moeda, quando eu digito assim: 2,500.00 funciona,aparece assim: 2,500.00. Mas quando eu digito assim 250.00, no formlist datagrid, ou seja, na pesquisa, exibe apenas assim: 250.0
E eu quero que apareça as duas casas decimais .00
Veja abaixo o meu código fonte da tela de cadastro. É um Recibo de Salário.
Como eu aplico a formatação para exibir as duas casas decimais quando o valor terminar com .00 ?
Eu fiz tudo isso seguindo o exemplo do tutor:
www.adianti.com.br/framework_files/tutor/index.php?class=POSFormView
===================================================================================
- <?php
- class SalarioForm extends TPage
- {
- private $form;
- public function __construct()
- {
- parent::__construct();
- $this->form = new TQuickForm('form_salario');
- $this->form->setFormTitle('Cadastro de Recibo de Salário');
- $this->form->class = 'tform';
- $this->form->style = 'width: 800px';
- 1416 = new TEntry('id');
- $nome = new TEntry('nome');
- $empresa = new TEntry('empresa');
- $dia1 = new TEntry('dia1');
- $mes1 = new TEntry('mes1');
- $ano1 = new TEntry('ano1');
- $dia2 = new TEntry('dia2');
- $mes2 = new TEntry('mes2');
- $ano2 = new TEntry('ano2');
- $salario = new TEntry('salario');
- $extras = new TEntry('extras');
- $rendi1 = new TEntry('rendi1');
- $rendi2 = new TEntry('rendi2');
- $rendi3 = new TEntry('rendi3');
- $rendi1vr = new TEntry('rendi1vr');
- $rendi2vr = new TEntry('rendi2vr');
- $rendi3vr = new TEntry('rendi3vr');
- $soma1 = new TEntry('soma1');
- $inss = new TEntry('inss');
- $imposto = new TEntry('imposto');
- $adianta = new TEntry('adianta');
- $dedu1 = new TEntry('dedu1');
- $dedu2 = new TEntry('dedu2');
- $dedu1vr = new TEntry('dedu1vr');
- $dedu2vr = new TEntry('dedu2vr');
- $soma2 = new TEntry('soma2');
- $familia = new TEntry('familia');
- $liquido = new TEntry('liquido');
- $extenso1 = new TEntry('extenso1');
- $extenso2 = new TEntry('extenso2');
- 1416cidade = new TDBCombo('idcidade', 'dbsalario', 'Cidade', 'id', 'idcidade');
- $dia = new TEntry('dia');
- 1416mes = new TDBCombo('idmes', 'dbsalario', 'Mes', 'id', 'idmes');
- $ano = new TEntry('ano');
- // Atualiza o Valor nos campos: Salario e Hora Extras
- $salario->setExitAction(new TAction(array($this, 'onUpdateTotal')));
- $extras->setExitAction(new TAction(array($this, 'onUpdateTotal')));
- $rendi1vr->setExitAction(new TAction(array($this, 'onUpdateTotal')));
- $rendi2vr->setExitAction(new TAction(array($this, 'onUpdateTotal')));
- $rendi3vr->setExitAction(new TAction(array($this, 'onUpdateTotal')));
- $inss->setExitAction(new TAction(array($this, 'onUpdateTotal')));
- $imposto->setExitAction(new TAction(array($this, 'onUpdateTotal')));
- $adianta->setExitAction(new TAction(array($this, 'onUpdateTotal')));
- $dedu1vr->setExitAction(new TAction(array($this, 'onUpdateTotal')));
- $dedu2vr->setExitAction(new TAction(array($this, 'onUpdateTotal')));
- $familia->setExitAction(new TAction(array($this, 'onUpdateTotal')));
- $liquido->setExitAction(new TAction(array($this, 'onUpdateTotal')));
- 1416->setEditable(FALSE);
- $dia1->setMask('99');
- $mes1->setMask('99');
- $ano1->setMask('9999');
- $dia2->setMask('99');
- $mes2->setMask('99');
- $ano2->setMask('9999');
- $dia->setMask('99');
- $ano->setMask('9999');
- $salario->setMask('99,999.99');
- 1416->setSize(50);
- $nome->setSize(650);
- $empresa->setSize(650);
- $dia1->setSize(30);
- $mes1->setSize(30);
- $ano1->setSize(50);
- $dia2->setSize(30);
- $mes2->setSize(30);
- $ano2->setSize(50);
- $salario->setSize(100);
- $salario->setNumericMask(2, '.', ',');
- $extras->setSize(100);
- $extras->setNumericMask(2, '.', ',');
- $rendi1->setSize(100);
- $rendi2->setSize(100);
- $rendi3->setSize(100);
- $rendi1vr->setSize(100);
- $rendi1vr->setNumericMask(2, '.', ',');
- $rendi2vr->setSize(100);
- $rendi2vr->setNumericMask(2, '.', ',');
- $rendi3vr->setSize(100);
- $rendi3vr->setNumericMask(2, '.', ',');
- $soma1->setSize(100);
- $soma1->setNumericMask(2, '.', ',');
- $soma1->setEditable(FALSE);
- $inss->setSize(100);
- $inss->setNumericMask(2, '.', ',');
- $imposto->setSize(100);
- $imposto->setNumericMask(2, '.', ',');
- $adianta->setSize(100);
- $adianta->setNumericMask(2, '.', ',');
- $dedu1->setSize(100);
- $dedu2->setSize(100);
- $dedu1vr->setSize(100);
- $dedu1vr->setNumericMask(2, '.', ',');
- $dedu2vr->setSize(100);
- $dedu2vr->setNumericMask(2, '.', ',');
- $soma2->setSize(100);
- $soma2->setNumericMask(2, '.', ',');
- $soma2->setEditable(FALSE);
- $familia->setSize(100);
- $familia->setNumericMask(2, '.', ',');
- $liquido->setSize(100);
- $liquido->setNumericMask(2, '.', ',');
- $liquido->setEditable(FALSE);
- $extenso1->setSize(430);
- $extenso2->setSize(487);
- 1416cidade->setSize(250);
- $dia->setSize(30);
- 1416mes->setSize(120);
- $ano->setSize(50);
- // Adiciona uma linha em branco no form
- $row = $this->form->addRow();
- $row->addCell( new TLabel(''));
- $this->form->addQuickFields(new TLabel('Código:'), array(1416));
- $this->form->addQuickFields(new TLabel('Nome:'), array($nome));
- $this->form->addQuickFields(new TLabel('Empresa:'), array($empresa));
- $this->form->addQuickFields(new TLabel('Período - Dia: '), array($dia1,
- $label_mes1 = new TLabel('Mes:'), $mes1,
- $label_ano1 = new TLabel('Ano:'), $ano1,
- $label_dia2 = new TLabel('Dia:'), $dia2,
- $label_mes2 = new TLabel('Mes:'), $mes2,
- $label_ano2 = new TLabel('Ano:'), $ano2));
- // Adiciona uma linha em branco no form
- $row = $this->form->addRow();
- $row->addCell( new TLabel(''));
- // Adiciona uma linha cinza com duas coluna e um título
- $row = $this->form->addRow();
- $row->class = 'tformsection';
- $row->addCell( new TLabel('RENDIMENTOS'))->colspan = 2;
- // Adiciona uma linha em branco no form
- $row = $this->form->addRow();
- $row->addCell( new TLabel(''));
- $this->form->addQuickFields(new TLabel('Salário.........:'), array($salario,
- $label_extras = new TLabel('Horas Extras...............:'), $extras));
- $this->form->addQuickFields(new TLabel('Rendimento:'), array($rendi1,
- $label_rendi1vr = new TLabel('Valor do Rendimento:'), $rendi1vr));
- $this->form->addQuickFields(new TLabel('Rendimento:'), array($rendi2,
- $label_rendi2vr = new TLabel('Valor do Rendimento:'), $rendi2vr));
- $this->form->addQuickFields(new TLabel('Rendimento:'), array($rendi3,
- $label_rendi3vr = new TLabel('Valor do Rendimento:'), $rendi3vr,
- $label_soma1 = new TLabel('Soma..............:'), $soma1));
- // Adiciona uma linha em branco no form
- $row = $this->form->addRow();
- $row->addCell( new TLabel(''));
- // Adiciona uma linha cinza com duas coluna e um título
- $row = $this->form->addRow(); // Adiciona uma linha
- $row->class = 'tformsection'; // Aplica na linha a cor cinza
- $row->addCell( new TLabel('DEDUÇÕES'))->colspan = 2; // Divide a linha em 2 colunas e coloca o título.
- // Adiciona uma linha em branco no form
- $row = $this->form->addRow();
- $row->addCell( new TLabel(''));
- $this->form->addQuickFields(new TLabel('Inss..............:'), array($inss,
- $label_imposto = new TLabel('I.R.Fonte......................:'), $imposto,
- $label_adianta = new TLabel('Adiantamento:'), $adianta));
- $this->form->addQuickFields(new TLabel('Dedução:'), array($dedu1,
- $label_dedu1vr = new TLabel('Valor da Dedução.....:'), $dedu1vr));
- $this->form->addQuickFields(new TLabel('Dedução:'), array($dedu2,
- $label_dedu2vr = new TLabel('Valor da Dedução.....:'), $dedu2vr,
- $label_soma2 = new TLabel('Soma:...............'), $soma2));
- // Adiciona uma linha em branco no form
- $row = $this->form->addRow();
- $row->addCell( new TLabel(''));
- // Adiciona uma linha cinza com duas coluna e um título
- $row = $this->form->addRow();
- $row->class = 'tformsection';
- $row->addCell( new TLabel('COMPLEMENTO'))->colspan = 2;
- // Adiciona uma linha em branco no form
- $row = $this->form->addRow();
- $row->addCell( new TLabel(''));
- $this->form->addQuickFields(new TLabel('Salário Familia:'), array($familia,
- $label_liquido = new TLabel('Líquido a Receber:'), $liquido));
- $this->form->addQuickFields(new TLabel('Valor por Extenso:'), array($extenso1));
- $this->form->addQuickFields(new TLabel('Continuação:'), array($extenso2));
- $this->form->addQuickFields(new TLabel('Nome da Cidade: '), array(1416cidade,
- $label_dia = new TLabel('Dia:'), $dia,
- $label_idmes = new TLabel('Mês:'), 1416mes,
- $label_ano = new TLabel('Ano:'), $ano));
- // Adiciona uma linha em branco no form
- $row = $this->form->addRow();
- $row->addCell( new TLabel(''));
- // Botões
- $novo = new TAction( array($this, 'onNovo'));
- $this->form->addQuickAction('Novo', $novo, 'ico_new.png');
- $save = new TAction( array($this, 'onSave'));
- $this->form->addQuickAction('Salvar', $save, 'ico_save.png');
- $delete = new TAction( array($this, 'onDelete'));
- $this->form->addQuickAction('Excluir', $delete, 'ico_delete.png');
- $list = new TAction( array('SalarioList', 'onReload'));
- $this->form->addQuickAction('Listar', $list, 'ico_datagrid.png');
- $tudo = new TAction( array($this, 'onTudo'));
- $this->form->addQuickAction('Excluir Tudo', $tudo, 'ico_delete.png');
- parent::add($this->form);
- }
- function show()
- {
- parent::show();
- }
- public function onNovo()
- {
- try
- {
- TTransaction::open('dbsalario');
- $object = $this->form->getData('Salario');
- $object->store();
- TTransaction::close();
- }
- catch (Exception $e)
- {
- new TMessage('error', $e->getMessage());
- TTransaction::rollback();
- }
- }
- public function onSave()
- {
- try
- {
- TTransaction::open('dbsalario');
- $object = $this->form->getData('salario'); // Obtem os dados do formulário.
- $object->store(); // Grava os Dados
- // Preenche o formulário com os dados do registro ativo.
- $this->form->setData($object);
- TTransaction::close();
- // new TMessage('info', 'Dados salvos com sucesso.');
- }
- catch (Exception $e)
- {
- new TMessage('error', '<b>Error</b> ' . $e->getMessage());
- TTransaction::rollback();
- }
- }
- public function onDelete($param)
- {
- try
- {
- $key=$param['id'];
- TTransaction::open('dbsalario');
- $object = new Salario($key);
- $object->delete();
- TTransaction::close();
- }
- catch (Exception $e)
- {
- new TMessage('error', "O registro não pode ser excluido.");
- TTransaction::rollback();
- }
- }
- // A chamada para o método abaixo está no SalarioList
- public function onEdit( $param )
- {
- try
- {
- TTransaction::open('dbsalario');
- $key = $param['key'];
- $object = new Salario ( $key );
- $this->form->setData( $object );
- TTransaction::close();
- }
- catch (Exception $e)
- {
- new TMessage('error', $e->getMessage());
- TTransaction::rollback();
- }
- }
- function onTudo($param)
- {
- $action = new TAction(array($this, 'Tudo'));
- $action->setParameters($param);
- new TQuestion('Deseja Excluir Todos os Registros Cadastrados até Hoje?', $action);
- }
- public function Tudo( $param )
- {
- try
- {
- TTransaction::open('dbsalario');
- $repository = new TRepository('salario');
- $repository->delete();
- // new TMessage('info', 'Todos os Registros foram Excluidos.');
- TTransaction::close();
- }
- catch (Exception $e)
- {
- new TMessage('error', '<b>Error</b> ' . $e->getMessage());
- TTransaction::rollback();
- }
- }
- public static function onExitProduct($param)
- {
- 1416 = $param['id']; // obter o código
- try
- {
- TTransaction::open('dbsalario');
- $product = new Product($product_id); // lê o registro
- $obj = new StdClass;
- $obj->salario = 0;
- $obj->extras = 0;
- $obj->rendi1vr = 0;
- $obj->rendi2vr = 0;
- $obj->rendi3vr = 0;
- $obj->soma1 = 0;
- $obj->inss = 0;
- $obj->imposto = 0;
- $obj->adianta = 0;
- $obj->dedu1vr = 0;
- $obj->dedu2vr = 0;
- $obj->soma2 = 0;
- $obj->familia = 0;
- $obj->liquido = 0;
- $obj->salario = number_format($product->salario, 2, '.', ',');
- $obj->extras = number_format($product->extras, 2, '.', ',');
- $obj->rendi1vr = number_format($product->rendi1vr, 2, '.', ',');
- $obj->rendi2vr = number_format($product->rendi2vr, 2, '.', ',');
- $obj->rendi3vr = number_format($product->rendi3vr, 2, '.', ',');
- $obj->soma1 = number_format($product->soma1, 2, '.', ',');
- $obj->inss = number_format($product->inss, 2, '.', ',');
- $obj->imposto = number_format($product->imposto, 2, '.', ',');
- $obj->adianta = number_format($product->adianta, 2, '.', ',');
- $obj->dedu1vr = number_format($product->dedu1vr, 2, '.', ',');
- $obj->dedu2vr = number_format($product->dedu2vr, 2, '.', ',');
- $obj->soma2 = number_format($product->soma2, 2, '.', ',');
- $obj->familia = number_format($product->familia, 2, '.', ',');
- $obj->liquido = number_format($product->liquido, 2, '.', ',');
- TTransaction::close();
- TForm::sendData('form_salario', $obj);
- }
- catch (Exception $e)
- {
- // does nothing
- }
- }
- public static function onUpdateTotal($param)
- {
- $salario = (double) str_replace(',', '', $param['salario']);
- $extras = (double) str_replace(',', '', $param['extras']);
- $rendi1vr = (double) str_replace(',', '', $param['rendi1vr']);
- $rendi2vr = (double) str_replace(',', '', $param['rendi2vr']);
- $rendi3vr = (double) str_replace(',', '', $param['rendi3vr']);
- $soma1 = (double) str_replace(',', '', $param['soma1']);
- $inss = (double) str_replace(',', '', $param['inss']);
- $imposto = (double) str_replace(',', '', $param['imposto']);
- $adianta = (double) str_replace(',', '', $param['adianta']);
- $dedu1vr = (double) str_replace(',', '', $param['dedu1vr']);
- $dedu2vr = (double) str_replace(',', '', $param['dedu2vr']);
- $soma2 = (double) str_replace(',', '', $param['soma2']);
- $familia = (double) str_replace(',', '', $param['familia']);
- $liquido = (double) str_replace(',', '', $param['liquido']);
- $obj = new StdClass;
- $obj->soma1 = number_format($salario + $extras + $rendi1vr + $rendi2vr + $rendi3vr, 2, '.', ',');
- $obj->soma2 = number_format( $inss + $imposto + $adianta + $dedu1vr + $dedu2vr, 2, '.', ',');
- $obj->liquido = number_format( ($soma1 + $familia) - $soma2, 2, '.', ',');
- TForm::sendData('form_salario', $obj);
- }
- }
- ?>
$valor 24.9;
echo 'R$: '.number_format($valor,2);
Peguei esse exemplo nesse site
forum.imasters.com.br/topic/118370-formatacao-de-moeda-r-no-php/
Este exemplo que você colocou não me ajudou muito porque os valores continuam exibindo com apenas um dígito nas casas decimais, e isto só acontece quando o valor termina com zero zero. exemplo:
Eu digito isto: 500.00 e salva no banco assim: 500.0
Eu digito isto 30.00 e salva no banco assim: 30.00
Agora quando eu digite assim: 2,500.00 ai funciona, ele salva deste jeito 2,500.00
É muito estranho!
Veja esta postagem que eu fiz:
www.adianti.com.br/forum/pt/view_1424?como-eu-chamo-essa-funcao-para
Alex,
Você está se confundindo. No Brasil, não se utiliza "2,500.00", e sim "2.500,00".
Vou lhe escrever o que eu disse em um e-mail outro dia:
Usuário digita: 500,00 => Grava 500.00 (replace vírgula por ponto)
Usuário digita: 2.500,00 => Grava 2500.00 (replace ponto por nada, vírgula por ponto)
Entendeu?
Pablo, isso que você está me dizendo eu já sei. Eu sei que lá dentro do banco de Dados está assim 500.0 ou assim: 2,500.0
O que eu quero é exibir no datagrid o valor assim: 2.500,00 no padrão brasileiro.
=======================
Eu fiz assim mas deu erro:
Chamada:
// creates the datagrid columns
$id = new TDataGridColumn('id', 'Código', 'left', 7);
$nome = new TDataGridColumn('nome', 'Nome do Empregado', 'left', 250);
$salario = new TDataGridColumn('salario', 'Salário', 'right', 60);
$empresa = new TDataGridColumn('empresa', 'Nome da Empresa', 'left', 250);
// Define a Transformação do Valor Salário em formato brasileiro, ele chama a função lá embaixo.
$salario->setTransformer(array($this, 'formatValor'));
Função:
public function formatValor($salario, $object)
{
if($object->salario)
{
$vlr = number_format($object->salario, 2, ',', '.');
return $vlr;
}
}
======================
Eu uso o Banco sqlite e o campo salario está definido apenas como real, não coloquei lá no banco de dados neste campo nenhum número de valores de dígitos antes e nem depois do ponto.
------------------
Faz assim Pablo, acesse agora meu site: www.sistemapersonalizado.com
Depois clique em: Aplicativos Grátis, depois clique em Recibo de salário, e dê uma olhada o campo salário no Relatório de Impressão, eu retirei o campo salário do datagrid com vergonha , mas eu pretendo colocar quando
souber transformar para exibir o valor no padrão brasileiro.
Veja ai o código de (cadastro Form) se tem algum erro, me disseram que o campo salario não pode ter separador de milhar, ou seja a vírgula. É verdade? Veja ai o código se está ok.
==================================