Lançado Adianti Framework 7.6!
Clique aqui para saber mais
Como eu faço para exibir as duas casas decimais no campo Moeda? 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,50...
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
===================================================================================
  1. <?php
  2. class SalarioForm extends TPage
  3. {
  4.     private $form;
  5.     
  6.     public function __construct()
  7.     {
  8.         parent::__construct();
  9.         $this->form = new TQuickForm('form_salario');
  10.         $this->form->setFormTitle('Cadastro de Recibo de Salário');
  11.         $this->form->class 'tform';
  12.         $this->form->style 'width: 800px';
  13.         
  14.         1416      = new TEntry('id');
  15.         $nome    = new TEntry('nome');
  16.         $empresa = new TEntry('empresa');
  17.         $dia1 = new TEntry('dia1');
  18.         $mes1 = new TEntry('mes1');
  19.         $ano1 = new TEntry('ano1');
  20.         $dia2 = new TEntry('dia2');
  21.         $mes2 = new TEntry('mes2');
  22.         $ano2 = new TEntry('ano2');
  23.         $salario  = new TEntry('salario');
  24.         $extras   = new TEntry('extras');
  25.         $rendi1   = new TEntry('rendi1');        
  26.         $rendi2   = new TEntry('rendi2');
  27.         $rendi3   = new TEntry('rendi3');
  28.         $rendi1vr = new TEntry('rendi1vr');        
  29.         $rendi2vr = new TEntry('rendi2vr');
  30.         $rendi3vr = new TEntry('rendi3vr');
  31.         $soma1    = new TEntry('soma1');
  32.         $inss    = new TEntry('inss');
  33.         $imposto = new TEntry('imposto');
  34.         $adianta = new TEntry('adianta');        
  35.         $dedu1   = new TEntry('dedu1');
  36.         $dedu2   = new TEntry('dedu2');
  37.         $dedu1vr = new TEntry('dedu1vr');                
  38.         $dedu2vr = new TEntry('dedu2vr');
  39.         $soma2   = new TEntry('soma2');
  40.         $familia  = new TEntry('familia');        
  41.         $liquido  = new TEntry('liquido');
  42.         $extenso1 = new TEntry('extenso1');
  43.         $extenso2 = new TEntry('extenso2');
  44.         1416cidade     = new TDBCombo('idcidade''dbsalario''Cidade''id''idcidade');
  45.         $dia = new TEntry('dia');         
  46.         1416mes    = new TDBCombo('idmes''dbsalario''Mes''id''idmes');
  47.         $ano = new TEntry('ano');
  48.         
  49.         // Atualiza o Valor nos campos: Salario e Hora Extras
  50.         $salario->setExitAction(new TAction(array($this'onUpdateTotal')));
  51.         $extras->setExitAction(new TAction(array($this'onUpdateTotal')));
  52.         $rendi1vr->setExitAction(new TAction(array($this'onUpdateTotal')));
  53.         $rendi2vr->setExitAction(new TAction(array($this'onUpdateTotal')));
  54.         $rendi3vr->setExitAction(new TAction(array($this'onUpdateTotal')));
  55.         $inss->setExitAction(new TAction(array($this'onUpdateTotal')));
  56.         $imposto->setExitAction(new TAction(array($this'onUpdateTotal')));
  57.         $adianta->setExitAction(new TAction(array($this'onUpdateTotal')));
  58.         $dedu1vr->setExitAction(new TAction(array($this'onUpdateTotal')));
  59.         $dedu2vr->setExitAction(new TAction(array($this'onUpdateTotal')));
  60.         $familia->setExitAction(new TAction(array($this'onUpdateTotal')));
  61.         $liquido->setExitAction(new TAction(array($this'onUpdateTotal')));
  62.                                    
  63.         1416->setEditable(FALSE);
  64.         $dia1->setMask('99');
  65.         $mes1->setMask('99');        
  66.         $ano1->setMask('9999');
  67.         $dia2->setMask('99');
  68.         $mes2->setMask('99');
  69.         $ano2->setMask('9999');        
  70.         $dia->setMask('99');
  71.         $ano->setMask('9999');
  72.         $salario->setMask('99,999.99');
  73.         
  74.         1416->setSize(50);
  75.         $nome->setSize(650);
  76.         $empresa->setSize(650);
  77.         $dia1->setSize(30);
  78.         $mes1->setSize(30);
  79.         $ano1->setSize(50);
  80.         $dia2->setSize(30);
  81.         $mes2->setSize(30);
  82.         $ano2->setSize(50);
  83.         
  84.         $salario->setSize(100);
  85.         $salario->setNumericMask(2'.'',');
  86.         $extras->setSize(100);
  87.         $extras->setNumericMask(2'.'',');        
  88.         $rendi1->setSize(100);
  89.         $rendi2->setSize(100);
  90.         $rendi3->setSize(100);
  91.         $rendi1vr->setSize(100);
  92.         $rendi1vr->setNumericMask(2'.'',');         
  93.         $rendi2vr->setSize(100);
  94.         $rendi2vr->setNumericMask(2'.'',');        
  95.         $rendi3vr->setSize(100);
  96.         $rendi3vr->setNumericMask(2'.'',');         
  97.         $soma1->setSize(100);
  98.         $soma1->setNumericMask(2'.'',');
  99.         $soma1->setEditable(FALSE);
  100.         $inss->setSize(100);
  101.         $inss->setNumericMask(2'.'',');        
  102.         $imposto->setSize(100);
  103.         $imposto->setNumericMask(2'.'',');        
  104.         $adianta->setSize(100);
  105.         $adianta->setNumericMask(2'.'',');        
  106.         $dedu1->setSize(100);
  107.         $dedu2->setSize(100);
  108.         $dedu1vr->setSize(100);
  109.         $dedu1vr->setNumericMask(2'.'',');        
  110.         $dedu2vr->setSize(100);
  111.         $dedu2vr->setNumericMask(2'.'',');        
  112.         $soma2->setSize(100);
  113.         $soma2->setNumericMask(2'.'',');        
  114.         $soma2->setEditable(FALSE);
  115.         $familia->setSize(100);
  116.         $familia->setNumericMask(2'.'',');        
  117.         $liquido->setSize(100);
  118.         $liquido->setNumericMask(2'.'',');        
  119.         $liquido->setEditable(FALSE);        
  120.         $extenso1->setSize(430);
  121.         $extenso2->setSize(487);
  122.         1416cidade->setSize(250);
  123.         $dia->setSize(30);
  124.         1416mes->setSize(120);
  125.         $ano->setSize(50);  
  126.         
  127.         // Adiciona uma linha em branco no form        
  128.         $row $this->form->addRow();
  129.         $row->addCell( new TLabel(''));
  130.         
  131.         $this->form->addQuickFields(new TLabel('Código:'), array(1416));
  132.         $this->form->addQuickFields(new TLabel('Nome:'), array($nome));
  133.         $this->form->addQuickFields(new TLabel('Empresa:'), array($empresa));
  134.         $this->form->addQuickFields(new TLabel('Período - Dia: '), array($dia1,
  135.         $label_mes1 = new TLabel('Mes:'), $mes1,
  136.         $label_ano1 = new TLabel('Ano:'), $ano1,
  137.         $label_dia2 = new TLabel('Dia:'), $dia2,
  138.         $label_mes2 = new TLabel('Mes:'), $mes2,
  139.         $label_ano2 = new TLabel('Ano:'), $ano2));
  140.         
  141.         // Adiciona uma linha em branco no form        
  142.         $row $this->form->addRow();
  143.         $row->addCell( new TLabel(''));
  144.         
  145.         // Adiciona uma linha cinza com duas coluna e um título
  146.         $row $this->form->addRow();
  147.         $row->class 'tformsection';
  148.         $row->addCell( new TLabel('RENDIMENTOS'))->colspan 2;
  149.         
  150.         // Adiciona uma linha em branco no form        
  151.         $row $this->form->addRow();
  152.         $row->addCell( new TLabel(''));
  153.         $this->form->addQuickFields(new TLabel('Salário.........:'), array($salario,
  154.         $label_extras = new TLabel('Horas Extras...............:'), $extras));
  155.         $this->form->addQuickFields(new TLabel('Rendimento:'), array($rendi1,
  156.         $label_rendi1vr = new TLabel('Valor do Rendimento:'), $rendi1vr));
  157.         $this->form->addQuickFields(new TLabel('Rendimento:'), array($rendi2,
  158.         $label_rendi2vr = new TLabel('Valor do Rendimento:'), $rendi2vr));
  159.         $this->form->addQuickFields(new TLabel('Rendimento:'), array($rendi3,
  160.         $label_rendi3vr = new TLabel('Valor do Rendimento:'), $rendi3vr,
  161.         $label_soma1 = new TLabel('Soma..............:'), $soma1));
  162.                  
  163.         // Adiciona uma linha em branco no form        
  164.         $row $this->form->addRow();
  165.         $row->addCell( new TLabel(''));
  166.         // Adiciona uma linha cinza com duas coluna e um título
  167.         $row $this->form->addRow();  // Adiciona uma linha
  168.         $row->class 'tformsection';  // Aplica na linha a cor cinza
  169.         $row->addCell( new TLabel('DEDUÇÕES'))->colspan 2// Divide a linha em 2 colunas e coloca o título.
  170.         // Adiciona uma linha em branco no form        
  171.         $row $this->form->addRow();
  172.         $row->addCell( new TLabel(''));
  173.         
  174.         $this->form->addQuickFields(new TLabel('Inss..............:'), array($inss,
  175.         $label_imposto = new TLabel('I.R.Fonte......................:'), $imposto,
  176.         $label_adianta = new TLabel('Adiantamento:'), $adianta));
  177.         
  178.         $this->form->addQuickFields(new TLabel('Dedução:'), array($dedu1,
  179.         $label_dedu1vr = new TLabel('Valor da Dedução.....:'), $dedu1vr));
  180.         
  181.         $this->form->addQuickFields(new TLabel('Dedução:'), array($dedu2,
  182.         $label_dedu2vr = new TLabel('Valor da Dedução.....:'), $dedu2vr,
  183.         $label_soma2 = new TLabel('Soma:...............'), $soma2));
  184.         // Adiciona uma linha em branco no form        
  185.         $row $this->form->addRow();
  186.         $row->addCell( new TLabel(''));
  187.         
  188.         // Adiciona uma linha cinza com duas coluna e um título                
  189.         $row $this->form->addRow();
  190.         $row->class 'tformsection';
  191.         $row->addCell( new TLabel('COMPLEMENTO'))->colspan 2;
  192.         
  193.         // Adiciona uma linha em branco no form        
  194.         $row $this->form->addRow();
  195.         $row->addCell( new TLabel(''));        
  196.         $this->form->addQuickFields(new TLabel('Salário Familia:'), array($familia,
  197.         $label_liquido = new TLabel('Líquido a Receber:'), $liquido));
  198.         
  199.         $this->form->addQuickFields(new TLabel('Valor por Extenso:'), array($extenso1));
  200.         $this->form->addQuickFields(new TLabel('Continuação:'), array($extenso2));        
  201.         $this->form->addQuickFields(new TLabel('Nome da Cidade: '), array(1416cidade,
  202.         $label_dia = new TLabel('Dia:'), $dia,
  203.         $label_idmes = new TLabel('Mês:'), 1416mes,
  204.         $label_ano = new TLabel('Ano:'), $ano));
  205.         // Adiciona uma linha em branco no form        
  206.         $row $this->form->addRow();
  207.         $row->addCell( new TLabel(''));
  208.         // Botões
  209.         $novo = new TAction( array($this'onNovo'));
  210.         $this->form->addQuickAction('Novo'$novo'ico_new.png');
  211.         $save = new TAction( array($this'onSave'));
  212.         $this->form->addQuickAction('Salvar'$save'ico_save.png');
  213.         
  214.         $delete = new TAction( array($this'onDelete'));
  215.         $this->form->addQuickAction('Excluir'$delete'ico_delete.png');
  216.    
  217.         $list = new TAction( array('SalarioList''onReload'));
  218.         $this->form->addQuickAction('Listar'$list'ico_datagrid.png');
  219.         
  220.         $tudo = new TAction( array($this'onTudo'));
  221.         $this->form->addQuickAction('Excluir Tudo'$tudo'ico_delete.png');
  222.         parent::add($this->form);
  223.     }
  224.     
  225.     function show()
  226.     {
  227.         parent::show();
  228.     }
  229.     
  230.     public function onNovo()
  231.     {
  232.     try
  233.     {
  234.         TTransaction::open('dbsalario');
  235.            $object $this->form->getData('Salario');
  236.            $object->store();
  237.         TTransaction::close();
  238.     }
  239.     catch (Exception $e)
  240.     {
  241.        new TMessage('error'$e->getMessage());
  242.        TTransaction::rollback();
  243.     }
  244.    }
  245.     public function onSave()
  246.     {
  247.         try
  248.         {
  249.             TTransaction::open('dbsalario');
  250.             $object $this->form->getData('salario');  // Obtem os dados do formulário.
  251.             $object->store();                         // Grava os Dados
  252.             // Preenche o formulário com os dados do registro ativo.
  253.             $this->form->setData($object);
  254.             TTransaction::close();
  255.             // new TMessage('info', 'Dados salvos com sucesso.');
  256.         }
  257.         catch (Exception $e)
  258.         {
  259.             new TMessage('error''<b>Error</b> ' $e->getMessage());
  260.             TTransaction::rollback();
  261.         }
  262.     }
  263.     public function onDelete($param)
  264.     {
  265.     try
  266.     {
  267.         $key=$param['id'];
  268.         TTransaction::open('dbsalario');
  269.             $object = new Salario($key);
  270.             $object->delete();
  271.         TTransaction::close();
  272.         }
  273.     catch (Exception $e)
  274.     {
  275.         new TMessage('error'"O registro não pode ser excluido.");
  276.         TTransaction::rollback();
  277.     }
  278.     }
  279. //  A chamada para o método abaixo está no SalarioList
  280.    public function onEdit$param )
  281.    {
  282.       try
  283.       {
  284.            TTransaction::open('dbsalario');
  285.               $key $param['key'];
  286.               $object = new Salario $key );
  287.               $this->form->setData$object );
  288.            TTransaction::close();
  289.       }
  290.        catch (Exception $e)
  291.          {
  292.             new TMessage('error'$e->getMessage());
  293.             TTransaction::rollback();
  294.          }
  295.    }
  296.     function onTudo($param)
  297.     {
  298.         $action = new TAction(array($this'Tudo'));
  299.         $action->setParameters($param);
  300.         new TQuestion('Deseja Excluir Todos os Registros Cadastrados até Hoje?'$action);
  301.     }
  302.     public function Tudo$param )
  303.     {
  304.         try
  305.         {
  306.             TTransaction::open('dbsalario'); 
  307.             $repository = new TRepository('salario'); 
  308.             $repository->delete(); 
  309. //            new TMessage('info', 'Todos os Registros foram Excluidos.'); 
  310.             TTransaction::close(); 
  311.         }
  312.         catch (Exception $e)
  313.         {
  314.             new TMessage('error''<b>Error</b> ' $e->getMessage());
  315.             TTransaction::rollback();
  316.         }
  317.     }
  318.     
  319.     public static function onExitProduct($param)
  320.     {
  321.         1416 $param['id']; // obter o código
  322.         try
  323.         {
  324.             TTransaction::open('dbsalario');
  325.             $product = new Product($product_id); // lê o registro
  326.             $obj = new StdClass;
  327.             
  328.             $obj->salario  0;
  329.             $obj->extras   0;
  330.             $obj->rendi1vr 0;
  331.             $obj->rendi2vr 0;
  332.             $obj->rendi3vr 0;
  333.             $obj->soma1    0;
  334.             $obj->inss     0;
  335.             $obj->imposto  0;
  336.             $obj->adianta  0;
  337.             $obj->dedu1vr  0;
  338.             $obj->dedu2vr  0;
  339.             $obj->soma2    0;
  340.             $obj->familia  0;
  341.             $obj->liquido  0;
  342.                                          
  343.             $obj->salario  number_format($product->salario2'.'',');
  344.             $obj->extras   number_format($product->extras2'.'',');
  345.             $obj->rendi1vr number_format($product->rendi1vr2'.'',');
  346.             $obj->rendi2vr number_format($product->rendi2vr2'.'',');
  347.             $obj->rendi3vr number_format($product->rendi3vr2'.'',');
  348.             $obj->soma1    number_format($product->soma12'.'',');
  349.             
  350.             $obj->inss    number_format($product->inss2'.'',');
  351.             $obj->imposto number_format($product->imposto2'.'',');
  352.             $obj->adianta number_format($product->adianta2'.'',');
  353.             $obj->dedu1vr number_format($product->dedu1vr2'.'',');
  354.             $obj->dedu2vr number_format($product->dedu2vr2'.'',');
  355.             $obj->soma2   number_format($product->soma22'.'',');            
  356.             
  357.             $obj->familia number_format($product->familia2'.'',');
  358.             $obj->liquido number_format($product->liquido2'.'',');             
  359.             TTransaction::close();
  360.             TForm::sendData('form_salario'$obj);
  361.         }
  362.         catch (Exception $e)
  363.         {
  364.             // does nothing
  365.         }
  366.     }
  367.     
  368.     public static function onUpdateTotal($param)
  369.     {
  370.         $salario  = (double) str_replace(','''$param['salario']);
  371.         $extras   = (double) str_replace(','''$param['extras']);
  372.         $rendi1vr = (double) str_replace(','''$param['rendi1vr']);
  373.         $rendi2vr = (double) str_replace(','''$param['rendi2vr']);
  374.         $rendi3vr = (double) str_replace(','''$param['rendi3vr']);                
  375.         $soma1    = (double) str_replace(','''$param['soma1']);
  376.         $inss     = (double) str_replace(','''$param['inss']);
  377.         $imposto  = (double) str_replace(','''$param['imposto']);
  378.         $adianta  = (double) str_replace(','''$param['adianta']);
  379.         $dedu1vr  = (double) str_replace(','''$param['dedu1vr']);
  380.         $dedu2vr  = (double) str_replace(','''$param['dedu2vr']);                
  381.         $soma2    = (double) str_replace(','''$param['soma2']);
  382.         $familia  = (double) str_replace(','''$param['familia']);                
  383.         $liquido  = (double) str_replace(','''$param['liquido']);
  384.         $obj = new StdClass;
  385.         $obj->soma1   number_format($salario $extras $rendi1vr $rendi2vr $rendi3vr2'.'',');
  386.         $obj->soma2   number_format$inss $imposto $adianta $dedu1vr $dedu2vr2'.'',');
  387.         $obj->liquido number_format( ($soma1 $familia) - $soma22'.'',');                
  388.         TForm::sendData('form_salario'$obj);
  389.     }    
  390. }
  391. ?>

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 (5)


FC

$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/
AM

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
PD

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?

AM

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.
AM

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.

==================================

  1. <?php
  2. class SalarioForm extends TPage
  3. {
  4.     private $form;
  5.     
  6.     public function __construct()
  7.     {
  8.         parent::__construct();
  9.          //      Pablo,sempre que eu retiro a linha abaixo, o enter não funciona. Mas não vamos falar disso agora.
  10.         //       Executa um script que substitui o Tab pelo Enter.
  11.         parent::include_js('app/lib/include/application.js');
  12.         
  13.         // Set focus no campo especificado
  14.         TScript::create('setTimeout(function() { $("input[name=\\'nome\\']").focus() }, 500);');
  15.         // Cria o Form e configura
  16.         $this->form = new TQuickForm('form_salario');
  17.         $this->form->setFormTitle('Cadastro de Recibo de Salário');
  18.         $this->form->class 'tform';
  19.         $this->form->style 'width: 800px';
  20.         
  21.         // Definição dos campos do form
  22.         $id      = new TEntry('id');
  23.         $nome    = new TEntry('nome');
  24.         $empresa = new TEntry('empresa');
  25.         
  26.         $dia1 = new TEntry('dia1');
  27.         $mes1 = new TEntry('mes1');
  28.         $ano1 = new TEntry('ano1');
  29.         $dia2 = new TEntry('dia2');
  30.         $mes2 = new TEntry('mes2');
  31.         $ano2 = new TEntry('ano2');
  32.                         
  33.         $salario  = new TEntry('salario');
  34.         $extras   = new TEntry('extras');
  35.         $rendi1   = new TEntry('rendi1');        
  36.         $rendi2   = new TEntry('rendi2');
  37.         $rendi3   = new TEntry('rendi3');
  38.         $rendi1vr = new TEntry('rendi1vr');        
  39.         $rendi2vr = new TEntry('rendi2vr');
  40.         $rendi3vr = new TEntry('rendi3vr');
  41.         $soma1    = new TEntry('soma1');
  42.         
  43.         $inss    = new TEntry('inss');
  44.         $imposto = new TEntry('imposto');
  45.         $adianta = new TEntry('adianta');        
  46.         $dedu1   = new TEntry('dedu1');
  47.         $dedu2   = new TEntry('dedu2');
  48.         $dedu1vr = new TEntry('dedu1vr');                
  49.         $dedu2vr = new TEntry('dedu2vr');
  50.         $soma2   = new TEntry('soma2');
  51.         
  52.         $familia  = new TEntry('familia');        
  53.         $liquido  = new TEntry('liquido');
  54.         $extenso1 = new TEntry('extenso1');
  55.         $extenso2 = new TEntry('extenso2');
  56.         $idcidade     = new TDBCombo('idcidade''dbsalario''Cidade''id''idcidade');
  57.         $dia = new TEntry('dia');
  58.         
  59.         // ===================================================================================
  60.         // idmes: é o campo desta tabela que vai ficar associado com o campo idmes de outra tabela.
  61.         // dbsalario: é o banco de dados onde estão todas as tabelas.
  62.         // Mes: é o nome da classe definida em Model, referente à tabela mes que está no banco de dados dbsalario.
  63.         // id: é o campo chave da tabela Mes.
  64.         // idmes: é outro campo da tabela Mes que está associado com o campo idmes da tabela salario.       
  65.         $idmes    = new TDBCombo('idmes''dbsalario''Mes''id''idmes');
  66.         // ===================================================================================
  67.         
  68.         $ano = new TEntry('ano');
  69. // =====================================================================         
  70.         // Atualiza os Valores
  71.         $salario->setExitAction(new TAction(array($this'onUpdateTotal')));
  72.         $extras->setExitAction(new TAction(array($this'onUpdateTotal')));
  73.         $rendi1vr->setExitAction(new TAction(array($this'onUpdateTotal')));
  74.         $rendi2vr->setExitAction(new TAction(array($this'onUpdateTotal')));
  75.         $rendi3vr->setExitAction(new TAction(array($this'onUpdateTotal')));
  76.         $inss->setExitAction(new TAction(array($this'onUpdateTotal')));
  77.         $imposto->setExitAction(new TAction(array($this'onUpdateTotal')));
  78.         $adianta->setExitAction(new TAction(array($this'onUpdateTotal')));
  79.         $dedu1vr->setExitAction(new TAction(array($this'onUpdateTotal')));
  80.         $dedu2vr->setExitAction(new TAction(array($this'onUpdateTotal')));
  81.         $familia->setExitAction(new TAction(array($this'onUpdateTotal')));
  82.         $liquido->setExitAction(new TAction(array($this'onUpdateTotal')));
  83.          //  Campos Não Editáveis
  84.         $id->setEditable(FALSE);
  85.         $soma1->setEditable(FALSE);
  86.         $soma2->setEditable(FALSE);         
  87.         $liquido->setEditable(FALSE);
  88.  
  89.          //  Máscaras     
  90.         $dia1->setMask('99');
  91.         $mes1->setMask('99');        
  92.         $ano1->setMask('9999');
  93.         $dia2->setMask('99');
  94.         $mes2->setMask('99');
  95.         $ano2->setMask('9999');        
  96.         $dia->setMask('99');
  97.         $ano->setMask('9999');
  98.         // Formatação para Valores Monetário
  99.         $salario->setNumericMask(2'.'',');
  100.         $extras->setNumericMask(2'.'',');
  101.         $rendi1vr->setNumericMask(2'.'',');         
  102.         $rendi2vr->setNumericMask(2'.'','); 
  103.         $rendi3vr->setNumericMask(2'.'','); 
  104.         $soma1->setNumericMask(2'.'',');        
  105.         $inss->setNumericMask(2'.'',');         
  106.         $imposto->setNumericMask(2'.'',');
  107.         $adianta->setNumericMask(2'.'',');          
  108.         $dedu1vr->setNumericMask(2'.'',');  
  109.         $dedu2vr->setNumericMask(2'.'',');         
  110.         $soma2->setNumericMask(2'.'',');
  111.         $familia->setNumericMask(2'.'',');         
  112.         $liquido->setNumericMask(2'.'','); 
  113. // ===================================================================== 
  114.         //  Tamanho dos Campos no formulário        
  115.         $id->setSize(50);
  116.         $nome->setSize(650);
  117.         $empresa->setSize(650);
  118.                 
  119.         $dia1->setSize(30);
  120.         $mes1->setSize(30);
  121.         $ano1->setSize(50);
  122.         $dia2->setSize(30);
  123.         $mes2->setSize(30);
  124.         $ano2->setSize(50);
  125.         $salario->setSize(100);
  126.         $extras->setSize(100);
  127.         $rendi1->setSize(100);
  128.         $rendi2->setSize(100);
  129.         $rendi3->setSize(100);
  130.         $rendi1vr->setSize(100);
  131.         $rendi2vr->setSize(100);
  132.         $rendi3vr->setSize(100);
  133.         $soma1->setSize(100);
  134.         
  135.         $inss->setSize(100);
  136.         $imposto->setSize(100);
  137.         $adianta->setSize(100);
  138.         $dedu1->setSize(100);
  139.         $dedu2->setSize(100);
  140.         $dedu1vr->setSize(100);
  141.         $dedu2vr->setSize(100);
  142.         $soma2->setSize(100);
  143.         $familia->setSize(100);
  144.         $liquido->setSize(100);
  145.         $extenso1->setSize(430);
  146.         $extenso2->setSize(487);
  147.         $idcidade->setSize(250);
  148.         $dia->setSize(30);
  149.         $idmes->setSize(120);
  150.         $ano->setSize(50);  
  151. // ===================================================================== 
  152.         
  153.         // Número de Caracteres permitidos dentro dos campos
  154.                 
  155.         $id->setMaxLength(7);
  156.         $nome->setMaxLength(60);       
  157.         $empresa->setMaxLength(60);
  158.         $dia1->setMaxLength(2);        
  159.         $mes1->setMaxLength(2);
  160.         $ano1->setMaxLength(4);       
  161.         $dia2->setMaxLength(2);
  162.         $mes2->setMaxLength(2);        
  163.         $ano2->setMaxLength(4);
  164.         $rendi1->setMaxLength(12);        
  165.         $rendi2->setMaxLength(12);
  166.         $rendi3->setMaxLength(12);       
  167.         $dedu1->setMaxLength(12);       
  168.         $dedu2->setMaxLength(12);
  169.         $extenso1->setMaxLength(40);
  170.         $extenso2->setMaxLength(50);
  171.         $dia->setMaxLength(2);        
  172.         $ano->setMaxLength(4); 
  173.         
  174.         // Adiciona uma linha em branco no form        
  175.         $row $this->form->addRow();
  176.         $row->addCell( new TLabel(''));
  177.         
  178.         $this->form->addQuickFields(new TLabel('Código:'), array($id));
  179.         $this->form->addQuickFields(new TLabel('Nome:'), array($nome));
  180.         $this->form->addQuickFields(new TLabel('Empresa:'), array($empresa));
  181.         $this->form->addQuickFields(new TLabel('Período - Dia: '), array($dia1,
  182.         $label_mes1 = new TLabel('Mes:'), $mes1,
  183.         $label_ano1 = new TLabel('Ano:'), $ano1,
  184.         $label_dia2 = new TLabel('Dia:'), $dia2,
  185.         $label_mes2 = new TLabel('Mes:'), $mes2,
  186.         $label_ano2 = new TLabel('Ano:'), $ano2));
  187.         
  188.         // Adiciona uma linha em branco no form        
  189.         $row $this->form->addRow();
  190.         $row->addCell( new TLabel(''));
  191.         
  192.         // Adiciona uma linha cinza com duas coluna e um título
  193.         $row $this->form->addRow();
  194.         $row->class 'tformsection';
  195.         $row->addCell( new TLabel('RENDIMENTOS'))->colspan 2;
  196.         
  197.         // Adiciona uma linha em branco no form        
  198.         $row $this->form->addRow();
  199.         $row->addCell( new TLabel(''));
  200.         $this->form->addQuickFields(new TLabel('Salário.........:'), array($salario,
  201.         $label_extras = new TLabel('Horas Extras...........:'), $extras));
  202.         $this->form->addQuickFields(new TLabel('Rendimento:'), array($rendi1,
  203.         $label_rendi1vr = new TLabel('Valor do Rendimento:'), $rendi1vr));
  204.         $this->form->addQuickFields(new TLabel('Rendimento:'), array($rendi2,
  205.         $label_rendi2vr = new TLabel('Valor do Rendimento:'), $rendi2vr));
  206.         $this->form->addQuickFields(new TLabel('Rendimento:'), array($rendi3,
  207.         $label_rendi3vr = new TLabel('Valor do Rendimento:'), $rendi3vr,
  208.         $label_soma1 = new TLabel('Soma..............:'), $soma1));
  209.                  
  210.         // Adiciona uma linha em branco no form        
  211.         $row $this->form->addRow();
  212.         $row->addCell( new TLabel(''));
  213.         // Adiciona uma linha cinza com duas coluna e um título
  214.         $row $this->form->addRow();  // Adiciona uma linha
  215.         $row->class 'tformsection';  // Aplica na linha a cor cinza
  216.         $row->addCell( new TLabel('DEDUÇÕES'))->colspan 2// Divide a linha em 2 colunas e coloca o título.
  217.         // Adiciona uma linha em branco no form        
  218.         $row $this->form->addRow();
  219.         $row->addCell( new TLabel(''));
  220.         
  221.         $this->form->addQuickFields(new TLabel('Inss..............:'), array($inss,
  222.         $label_imposto = new TLabel('I.R.Fonte.................:'), $imposto,
  223.         $label_adianta = new TLabel('Adiantamento..:'), $adianta));
  224.         
  225.         $this->form->addQuickFields(new TLabel('Dedução:'), array($dedu1,
  226.         $label_dedu1vr = new TLabel('Valor da Dedução.....:'), $dedu1vr));
  227.         
  228.         $this->form->addQuickFields(new TLabel('Dedução:'), array($dedu2,
  229.         $label_dedu2vr = new TLabel('Valor da Dedução.....:'), $dedu2vr,
  230.         $label_soma2 = new TLabel('Soma:..............'), $soma2));
  231.         // Adiciona uma linha em branco no form        
  232.         $row $this->form->addRow();
  233.         $row->addCell( new TLabel(''));
  234.         
  235.         // Adiciona uma linha cinza com duas coluna e um título                
  236.         $row $this->form->addRow();
  237.         $row->class 'tformsection';
  238.         $row->addCell( new TLabel('COMPLEMENTO'))->colspan 2;
  239.         
  240.         // Adiciona uma linha em branco no form        
  241.         $row $this->form->addRow();
  242.         $row->addCell( new TLabel(''));        
  243.         $this->form->addQuickFields(new TLabel('Salário Familia:'), array($familia,
  244.         $label_liquido = new TLabel('Líquido a Receber....:'), $liquido));
  245.         
  246.         $this->form->addQuickFields(new TLabel('Valor por Extenso:'), array($extenso1));
  247.         $this->form->addQuickFields(new TLabel('Continuação:'), array($extenso2));        
  248.         $this->form->addQuickFields(new TLabel('Nome da Cidade: '), array($idcidade,
  249.         $label_dia = new TLabel('Dia:'), $dia,
  250.         $label_idmes = new TLabel('Mês:'), $idmes,
  251.         $label_ano = new TLabel('Ano:'), $ano));
  252.         // Adiciona uma linha em branco no form        
  253.         $row $this->form->addRow();
  254.         $row->addCell( new TLabel(''));
  255.         
  256.         // Adiciona Legendas nos campos
  257.         $salario->setTip('Na impressão, todos os valores monetários serão impressos no Padrão Brasileiro: 9.999,99)');
  258.         $idcidade->setTip('Para cadastrar mais cidades ou excluir, vá até o menu (Cadastro), depois: (Dados dos Campos).');
  259.         $idmes->setTip('Para cadastrar mais meses ou excluir, vá até o menu (Cadastro), depois: (Dados dos Campos).');        
  260.         $salario->placeholder '9,999.99';
  261.         $ano->setTip('Após digitar este campo, clique no botão Salvar e depois Novo se for inserir outro registro.');         
  262.         //  Define um valor inicial para os campos.
  263.         $salario->setValue('0.00');
  264.         $extras->setValue('0.00');
  265.         $rendi1vr->setValue('0.00');
  266.         $rendi2vr->setValue('0.00');
  267.         $rendi3vr->setValue('0.00');
  268.         $inss->setValue('0.00');
  269.         $imposto->setValue('0.00');
  270.         $adianta->setValue('0.00');
  271.         $dedu1vr->setValue('0.00');
  272.         $dedu2vr->setValue('0.00');
  273.         $familia->setValue('0.00');
  274.         $soma1->setValue('0.00');
  275.         $soma2->setValue('0.00');
  276.         $liquido->setValue('0.00');
  277.         // Botões
  278.         $save = new TAction( array($this'onSave'));
  279.         $this->form->addQuickAction('Salvar'$save'ico_save.png');
  280.         $novo = new TAction( array($this'onNovo'));
  281.         $this->form->addQuickAction('Novo'$novo'ico_new.png');
  282.         
  283.         $delete = new TAction( array($this'onDelete'));
  284.         $this->form->addQuickAction('Excluir'$delete'ico_delete.png');
  285.    
  286.         $list = new TAction( array('SalarioList''onReload'));
  287.         $this->form->addQuickAction('Listar'$list'ico_datagrid.png');
  288.         
  289.         // Na linha abaixo, se desejar retirar a pergunta se desejar excluir tudo,
  290.         // basta substituir onTudo por Tudo
  291.         $tudo = new TAction( array($this'onTudo'));  
  292.         $this->form->addQuickAction('Excluir Tudo'$tudo'ico_delete.png');
  293.         parent::add($this->form);
  294.     }
  295.     
  296.     function show()
  297.     {
  298.         parent::show();
  299.     }
  300.     
  301.     public function onNovo()
  302.     {
  303.     try
  304.     {
  305.         TTransaction::open('dbsalario');
  306.            $object $this->form->getData('Salario');
  307.            $object->store();
  308.         TTransaction::close();
  309.     }
  310.     catch (Exception $e)
  311.     {
  312.        new TMessage('error'$e->getMessage());
  313.        TTransaction::rollback();
  314.     }
  315.    }
  316.     public function onSave()
  317.     {
  318.         try
  319.         {
  320.             TTransaction::open('dbsalario');
  321.             $object $this->form->getData('Salario');  // Obtem os dados do formulário.
  322.             $object->store();                         // Grava os Dados
  323.             
  324.             // Preenche o formulário com os dados do registro ativo.
  325.             $this->form->setData($object);
  326.             
  327.             TTransaction::close();
  328.             // new TMessage('info', 'Dados salvos com sucesso.');
  329.         }
  330.         catch (Exception $e)
  331.         {
  332.             new TMessage('error''<b>Error</b> ' $e->getMessage());
  333.             TTransaction::rollback();
  334.         }
  335.     }
  336.     public function onDelete($param)
  337.     {
  338.     try
  339.     {
  340.         $key=$param['id'];
  341.         TTransaction::open('dbsalario');
  342.             $object = new Salario($key);
  343.             $object->delete();
  344.         TTransaction::close();
  345.         }
  346.     catch (Exception $e)
  347.     {
  348.         new TMessage('error'"O registro não pode ser excluido.");
  349.         TTransaction::rollback();
  350.     }
  351.     }
  352. //  A chamada para o método abaixo está no SalarioList
  353.    public function onEdit$param )
  354.    {
  355.       try
  356.       {
  357.            TTransaction::open('dbsalario');
  358.               $key $param['key'];
  359.               $object = new Salario $key );
  360.               $this->form->setData$object );
  361.            TTransaction::close();
  362.       }
  363.        catch (Exception $e)
  364.          {
  365.             new TMessage('error'$e->getMessage());
  366.             TTransaction::rollback();
  367.          }
  368.    }
  369.     function onTudo($param)
  370.     {
  371.         $action = new TAction(array($this'Tudo'));
  372.         $action->setParameters($param);
  373.         new TQuestion('Deseja Excluir Todos os Registros Cadastrados até Hoje?'$action);
  374.     }
  375.     public function Tudo$param )
  376.     {
  377.         try
  378.         {
  379.             TTransaction::open('dbsalario'); 
  380.             $repository = new TRepository('Salario'); 
  381.             $repository->delete(); 
  382.             
  383. //            new TMessage('info', 'Todos os Registros foram Excluidos.'); 
  384.             TTransaction::close(); 
  385.         }
  386.         catch (Exception $e)
  387.         {
  388.             new TMessage('error''<b>Error</b> ' $e->getMessage());
  389.             TTransaction::rollback();
  390.         }
  391.     }
  392.     
  393.     public static function onExitProduct($param)
  394.     {
  395.         $id $param['id']; // obter o código
  396.         try
  397.         {
  398.             TTransaction::open('dbsalario');
  399.             $product = new Product($product_id); // lê o registro
  400.             $obj = new StdClass;
  401.                       
  402.             $obj->salario  0;
  403.             $obj->extras   0;
  404.             $obj->rendi1vr 0;
  405.             $obj->rendi2vr 0;
  406.             $obj->rendi3vr 0;
  407.             $obj->soma1    0;
  408.             $obj->inss     0;
  409.             $obj->imposto  0;
  410.             $obj->adianta  0;
  411.             $obj->dedu1vr  0;
  412.             $obj->dedu2vr  0;
  413.             $obj->soma2    0;
  414.             $obj->familia  0;
  415.             $obj->liquido  0;
  416.                                        
  417.             $obj->salario  number_format($product->salario2'.'',');
  418.             $obj->extras   number_format($product->extras2'.'',');
  419.             $obj->rendi1vr number_format($product->rendi1vr2'.'',');
  420.             $obj->rendi2vr number_format($product->rendi2vr2'.'',');
  421.             $obj->rendi3vr number_format($product->rendi3vr2'.'',');
  422.             $obj->soma1    number_format($product->soma12'.'',');
  423.             
  424.             $obj->inss    number_format($product->inss2'.'',');
  425.             $obj->imposto number_format($product->imposto2'.'',');
  426.             $obj->adianta number_format($product->adianta2'.'',');
  427.             $obj->dedu1vr number_format($product->dedu1vr2'.'',');
  428.             $obj->dedu2vr number_format($product->dedu2vr2'.'',');
  429.             $obj->soma2   number_format($product->soma22'.'',');            
  430.             
  431.             $obj->familia number_format($product->familia2'.'',');
  432.             $obj->liquido number_format($product->liquido2'.'',');             
  433.             TTransaction::close();
  434.             TForm::sendData('form_salario'$obj);
  435.         }
  436.         catch (Exception $e)
  437.         {
  438.             // does nothing
  439.         }
  440.     }
  441.     
  442.     public static function onUpdateTotal($param)
  443.     {
  444.         $salario  = (double) str_replace(','''$param['salario']);
  445.         $extras   = (double) str_replace(','''$param['extras']);
  446.         $rendi1vr = (double) str_replace(','''$param['rendi1vr']);
  447.         $rendi2vr = (double) str_replace(','''$param['rendi2vr']);
  448.         $rendi3vr = (double) str_replace(','''$param['rendi3vr']);                
  449.         $soma1    = (double) str_replace(','''$param['soma1']);
  450.         $inss     = (double) str_replace(','''$param['inss']);
  451.         $imposto  = (double) str_replace(','''$param['imposto']);
  452.         $adianta  = (double) str_replace(','''$param['adianta']);
  453.         $dedu1vr  = (double) str_replace(','''$param['dedu1vr']);
  454.         $dedu2vr  = (double) str_replace(','''$param['dedu2vr']);                
  455.         $soma2    = (double) str_replace(','''$param['soma2']);
  456.         $familia  = (double) str_replace(','''$param['familia']);                
  457.         $liquido  = (double) str_replace(','''$param['liquido']);
  458.         $obj = new StdClass;
  459.         $obj->soma1   number_format($salario $extras $rendi1vr $rendi2vr $rendi3vr2'.'',');
  460.         $obj->soma2   number_format$inss $imposto $adianta $dedu1vr $dedu2vr2'.'',');
  461.         $obj->liquido number_format( ($soma1 $familia) - $soma22'.'',');                
  462.         TForm::sendData('form_salario'$obj);
  463.     } 
  464. }
  465. ?>