Lançado Adianti Framework 7.6!
Clique aqui para saber mais
Meu Navegador Paralisa quando Efetua Cálculos nesse Script. Já fiz vários aplicativos com cálculos: Notas de Entrega, Recibo de Salário, Termo de Rescisão de Contrato Etc. Fiquei uns 6 meses sem programar, uma contabilidade me pediu para eu desenvolver um simples Recibo de Férias, andei atualizando o Java, não sei se o problema é este, ainda não testei em outro computador. Mas os cálculos funcionam normalmente em outros aplicativos, menos no que...
AM
Meu Navegador Paralisa quando Efetua Cálculos nesse Script.  
Já fiz vários aplicativos com cálculos: Notas de Entrega, Recibo de Salário, Termo de Rescisão de Contrato Etc.
Fiquei uns 6 meses sem programar, uma contabilidade me pediu para eu desenvolver um simples Recibo de Férias, andei atualizando o Java, não sei se o problema é este, ainda não testei em outro computador. Mas os cálculos funcionam normalmente em outros aplicativos, menos no que eu estou tentando fazer agora. O Problema é somente no Formulário de Cadastro. Impressão e consulta eu já sei.
Vou Postar o Script do Model e depois o Form.
- Veja a Foro em anexo, eu abro meu Form, eu consigo digitar no campo nome, passo para o campo salario e digito, do campo salario para o próximo, quando eu teclo Tab, o Navegador para de responder. Qual é o Problema Gente? Aff! eu já tenho um mês nesse inferno tentando e tentando.

MODEL: Ferias.class.php
====================
  1. <?php
  2. class Ferias extends TRecord
  3. {
  4.     const TABLENAME 'Ferias';
  5.     const PRIMARYKEY'id';
  6.     const IDPOLICY =  'max';
  7.     const CACHECONTROL 'TAPCache';     
  8.     
  9.    public function __construct($id NULL)
  10.    {
  11.       parent::__construct($id);
  12.         parent::addAttribute('nome');
  13.         parent::addAttribute('salario');
  14.         parent::addAttribute('pcontass');
  15.         parent::addAttribute('vcontass');
  16.         parent::addAttribute('pferias');
  17.         parent::addAttribute('hextrau');
  18.         parent::addAttribute('hextraf');
  19.         parent::addAttribute('vextra');
  20.         parent::addAttribute('textra');
  21.     }
  22. }
  23. ===============================
  24. FORMULÁRIO DE CADASTROFerias.class.php
  1. <?php
  2. class FeriasForm extends TPage
  3. {
  4.     private $form;
  5.     
  6.     public function __construct()
  7.     {
  8.         parent::__construct();
  9.         // Cria o Form e configura
  10.         $this->form = new TQuickForm('form_ferias');
  11.         $this->form->setFormTitle('Tela de Cadastro');
  12.         $this->form->class 'tform';
  13.         $this->form->style 'width: 930px';
  14.         
  15.         // Definição dos campos do form
  16.         $id      = new TEntry('id');
  17.         $nome    = new TEntry('nome');
  18.         $salario = new TEntry('salario');
  19.         $pcontass = new TEntry('pcontass');
  20.         $vcontass = new TEntry('vcontass');
  21.         $pferias = new TEntry('pferias');
  22.         $hextrau = new TEntry('hextrau');
  23.         $hextraf = new TEntry('hextraf');
  24.         $vextra = new TEntry('vextra');
  25.         $textra = new TEntry('textra');                                                        
  26.         // Formatação para Valores Monetário
  27.         $salario->setNumericMask(2',''.');        
  28.         $pcontass->setNumericMask(2',''.');
  29.         $vcontass->setNumericMask(2',''.');         
  30.         $pferias->setNumericMask(2',''.'); 
  31.         $vextra->setNumericMask(2',''.'); 
  32.         $textra->setNumericMask(2'.'',');        
  33.         // Atualiza os Valores Monetário e INT
  34.         $salario->setExitAction(new TAction(array($this'onUpdateTotal')));
  35.         $pcontass->setExitAction(new TAction(array($this'onUpdateTotal')));
  36.         $vcontass->setExitAction(new TAction(array($this'onUpdateTotal')));
  37.         $pferias->setExitAction(new TAction(array($this'onUpdateTotal')));
  38.         $vextra->setExitAction(new TAction(array($this'onUpdateTotal')));
  39.         $textra->setExitAction(new TAction(array($this'onUpdateTotal')));
  40.         $hextrau->setExitAction(new TAction(array($this'onUpdateTotal')));
  41.         $hextraf->setExitAction(new TAction(array($this'onUpdateTotal')));
  42.         //  Campos Não Editáveis
  43.         $id->setEditable(FALSE);
  44.         $vcontass->setEditable(FALSE);
  45.         $vextra->setEditable(FALSE);
  46.         $textra->setEditable(FALSE);                  
  47.         //  Tamanho dos Campos no formulário
  48.         $id->setSize(50);
  49.         $nome->setSize(525);
  50.         $salario->setSize(85);  
  51.         $pcontass->setSize(85);  
  52.         $vcontass->setSize(85);
  53.         $pferias->setSize(85);
  54.         $hextrau->setSize(85);  
  55.         $hextraf->setSize(85);  
  56.         $vextra->setSize(85);  
  57.         $textra->setSize(85);                 
  58.         // Número de Caracteres permitidos dentro dos campos
  59.         $id->setMaxLength(7);
  60.         $nome->setMaxLength(45);
  61.         
  62.         // Alinhamento de dados numericos (int, e real)
  63.         $id->style="background-color: #ccccff; text-align: right";        
  64.         $salario->style="text-align: right";      // No  Banco de Dados está como REAL assim como os demais abaixo. 
  65.         $pcontass->style="text-align: right";
  66.         $vcontass->style="text-align: right";
  67.         $pferias->style="text-align: right";
  68.         $vextra->style="text-align: right";
  69.         $textra->style="text-align: right";
  70.         $hextrau->style="text-align: right";   //  No Banco de Dados está INT
  71.         $hextraf->style="text-align: right";    //  No Banco de Dados está INT
  72.         
  73. //  ======================================================================================== 
  74.        
  75.         // Adiciona uma linha cinza com duas coluna e um título
  76.         $row $this->form->addRow();
  77.         $row->class 'tformsection';
  78.         $row->addCell( new TLabel('(( F É R I A S ))'))->colspan 2;        
  79.         // Adiciona uma linha em branco no form        
  80.         $row $this->form->addRow();
  81.         $row->addCell( new TLabel(''));
  82.         
  83.         $this->form->addQuickFields(new TLabel('ID:'), array($id,
  84.         $label_nome = new TLabel('Nome:'), $nome));
  85.                 
  86.         // Adiciona uma linha em branco no form        
  87.         $row $this->form->addRow();
  88.         $row->addCell( new TLabel(''));
  89.         
  90.         $this->form->addQuickFields(new TLabel('Salário:'), array($salario,
  91.         $label_pcontass = new TLabel('Percent. da Cont. Assist.:'), $pcontass,
  92.         $label_vcontass = new TLabel('Valor da Cont. Assist.:'), $vcontass,
  93.         $label_pferias = new TLabel('Percentual de Férias:'), $pferias));
  94.         
  95.         $this->form->addQuickFields(new TLabel('Horas Extras:'), array($hextrau,
  96.         $label_hextraf = new TLabel('Horas Extras em Domingos e Feriados:'), $hextraf,
  97.         $label_vextra = new TLabel('Valor uma Hora Extra:'), $vextra,        
  98.         $label_textra = new TLabel('Total Horas Extras:'), $textra));
  99.         
  100.         // Adiciona uma linha em branco no form        
  101.         $row $this->form->addRow();
  102.         $row->addCell( new TLabel(''));                      
  103. //  ======================================================================================== 
  104.         // Botões
  105.         $save = new TAction( array($this'onSave'));
  106.         $this->form->addQuickAction('Salvar'$save'ico_save.png');
  107.         $novo = new TAction( array($this'onNovo'));
  108.         $this->form->addQuickAction('Novo'$novo'ico_new.png');
  109.         
  110.         $ajuda = new TAction( array('Ajuda''onShow'));  
  111.         $this->form->addQuickAction('Ajuda'$ajuda'ico_question.png'); 
  112.                 
  113.         parent::add($this->form);
  114.     }
  115.     
  116.     function onShow() {
  117.     }     
  118.     
  119.     function show()
  120.     {
  121.         parent::show();
  122.     }
  123.     
  124.     public function onNovo()
  125.     {
  126.     try
  127.     {
  128.         TTransaction::open('dbferias');
  129.            $object $this->form->getData('Ferias');
  130.            $object->store();
  131.         TTransaction::close();
  132.     }
  133.     catch (Exception $e)
  134.     {
  135.        new TMessage('error'$e->getMessage());
  136.        TTransaction::rollback();
  137.     }
  138.    }
  139.     public function onSave()
  140.     {
  141.         try
  142.         {
  143.             TTransaction::open('dbferias');
  144.             $object $this->form->getData('Ferias');  // Obtem os dados do formulário.
  145.             $object->store();                         // Grava os Dados
  146.             $this->form->setData($object);
  147.             TTransaction::close();
  148.         }
  149.         catch (Exception $e)
  150.         {
  151.             new TMessage('error''<b>Error</b> ' $e->getMessage());
  152.             TTransaction::rollback();
  153.         }
  154.     }
  155.     public static function onExitProduct($param)
  156.     {
  157.         $id $param['id']; 
  158.         try
  159.         {
  160.             TTransaction::open('dbferias');
  161.             $product = new Product($product_id); 
  162.             $obj = new StdClass;
  163.                       
  164.             $obj->salario  0;
  165.             $obj->pcontass 0;
  166.             $obj->vcontass 0;
  167.             $obj->pferias  0;
  168.             $obj->hextrau  0;
  169.             $obj->hextraf  0;
  170.             $obj->vextra   0;
  171.             $obj->textra   0;
  172.                                        
  173.             $obj->salario  number_format($product->salario2'.'',');
  174.             $obj->pcontass  number_format($product->pcontass2'.'',');
  175.             $obj->vcontass  number_format($product->vcontass2'.'',');
  176.             $obj->pferias  number_format($product->pferias2'.'',');
  177.             $obj->vextra  number_format($product->vextra2'.'',');
  178.             $obj->textra  number_format($product->textra2'.'',');
  179.             
  180.             // Formatação para campos INT
  181.             $obj->hextrau = ($product->hextrau);
  182.             $obj->hextraf = ($product->hextraf);            
  183.                                                
  184.             TTransaction::close();
  185.             TForm::sendData('form_ferias'$obj);
  186.         }
  187.         catch (Exception $e)
  188.         {
  189.             // Não faz nada
  190.         }
  191.     }
  192.     
  193.     static function onUpdateTotal($param)
  194.     {
  195.         $salario str_replace(',','.'str_replace('.',''$param['salario']));
  196.         $pcontass str_replace(',','.'str_replace('.',''$param['pcontass']));     
  197.         $vcontass str_replace(',','.'str_replace('.',''$param['vcontass']));
  198.         $pferias str_replace(',','.'str_replace('.',''$param['pferias']));
  199.         $vextra str_replace(',','.'str_replace('.',''$param['vextra']));
  200.         $textra str_replace(',','.'str_replace('.',''$param['textra']));                                                                                                       
  201.         
  202.         // Cálculos
  203.         $vcontass    = (($salario $pcontass) / 100);
  204.         $vextra      = ($salario 220); 
  205.         $textra      = ((($hextrau $vextra) + (($hextrau $vextra) / 100)) + (($hextraf $vextra) + (($hextraf $vextra)/100)));
  206.         
  207.         $obj = new StdClass;
  208.         // Formatação somente para valores que contêm cálculos
  209.         $obj->vcontass number_format($vcontass2',''.');
  210.         $obj->vextra number_format($vextra2',''.');
  211.         $obj->textra number_format($textra2',''.');
  212.                         
  213.         TForm::sendData('form_ferias'$obj);
  214.     }
  215. }
  216. ?>

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


AM

Eu descobrir que o problema está no cálculo lá em baixo. Lá no final eu coloquei assim e funcionou.
Eu apenas dei espaço em branco nesta linha: + (($hextraf * $vextra) / 100)));
Acho que mexi em algo mais , mas não me lembro.

static function onUpdateTotal($param)
{
$salario = str_replace(',','.', str_replace('.','', $param['salario']));
$pcontass = str_replace(',','.', str_replace('.','', $param['pcontass']));
$vcontass = str_replace(',','.', str_replace('.','', $param['vcontass']));
$pferias = str_replace(',','.', str_replace('.','', $param['pferias']));
$vextra = str_replace(',','.', str_replace('.','', $param['vextra']));
$textra = str_replace(',','.', str_replace('.','', $param['textra']));

// As duas Linhas abaixo INT também deve ser atualizada.
$hextrau = str_replace(',','.', str_replace('.','', $param['hextrau']));
$hextraf = str_replace(',','.', str_replace('.','', $param['hextraf']));

// Cálculos
$vcontass = (($salario * $pcontass) / 100);
$vextra = ($salario / 220);
$textra = ((($hextrau * $vextra) + (($hextrau * $vextra) / 100)) + (($hextraf * $vextra) + (($hextraf * $vextra) / 100)));

$obj = new StdClass;

// Formatação somente para valores que contêm cálculos
$obj->vcontass = number_format($vcontass, 2, ',', '.');
$obj->vextra = number_format($vextra, 2, ',', '.');
$obj->textra = number_format($textra, 2, ',', '.');

TForm::sendData('form_ferias', $obj);
}

}
?>
AM

EU CONTINUO COM O MESMO PROBLEMA. AGORA SÓ ESTÁ FUNCIONANDO COM APENAS 3 CÁLCULOS,
LIBERANDO ESTES TRÊS CÁLCULOS ABAIXO, FUNCIONA TRANQUILO.

$vcontass = (($salario * $pcontass) / 100);
$vextra = ($salario / 220);
$textra = ((($hextrau * $vextra) + (($hextrau * $vextra) / 100)) + (($hextraf * $vextra) + (($hextraf * $vextra) / 100)));

MAS QUANDO EU ATIVO OS CÁLCULOS ABAIXO, NÃO FUNCIONA, OU SEJA, O NAVEGADOR TRAVA.

$vtrienio = (($fferias * $ptrienio) / 100);
$acampo2 = ($salario / 3);
$dcampo5 = (($liquido1 * $pferias) / 100);
$tadicional = ($acampo1 + $acampo2 + $acampo3 + $acampo4 + $acampo7 + $acampo8 + $acampo9 + $acampo10);
$tdesconto = ($dcampo3 + $dcampo4 + $dcampo5 + $dcampo6 + $dcampo7 + $dcampo8 + $dcampo9 + $dcampo10);
$liquido1 = (($acampo1 + $acampo2 + $acampo3 + $acampo4 + $acampo7 + $acampo8 + $acampo9 + $acampo10)-($dcampo3 + $dcampo4 + $dcampo5 + $dcampo6 + $dcampo7 + $dcampo8 + $dcampo9 + $dcampo10));

EU VOU POSTAR A TELA DE CADASTRO DO APLICATIVO EM ANEXO.
VOU POSTAR AQUI O MODEL E O FORM

MODEL
======
  1. <?php
  2. class Ferias extends TRecord
  3. {
  4.     const TABLENAME 'Ferias';
  5.     const PRIMARYKEY'id';
  6.     const IDPOLICY =  'max';
  7.     const CACHECONTROL 'TAPCache';      
  8.    public function __construct($id NULL)
  9.    {
  10.       parent::__construct($id);
  11.         parent::addAttribute('nome');
  12.         parent::addAttribute('cod1');
  13.         parent::addAttribute('depto');
  14.         parent::addAttribute('ctps');
  15.         parent::addAttribute('admissao');
  16.         parent::addAttribute('funcao');
  17.         parent::addAttribute('empresa');
  18.         parent::addAttribute('cod2');
  19.         parent::addAttribute('cnpj');
  20.         parent::addAttribute('data1');
  21.         parent::addAttribute('data2');
  22.         parent::addAttribute('duracao');
  23.         parent::addAttribute('faltas');
  24.         parent::addAttribute('aquisitivo');
  25.         parent::addAttribute('gozado');
  26.         parent::addAttribute('data3');
  27.         parent::addAttribute('data4');
  28.         parent::addAttribute('salario');
  29.         parent::addAttribute('pcontass');
  30.         parent::addAttribute('vcontass');
  31.         parent::addAttribute('pferias');
  32.         parent::addAttribute('hextrau');
  33.         parent::addAttribute('hextraf');
  34.         parent::addAttribute('vextra');
  35.         parent::addAttribute('textra');
  36.         parent::addAttribute('fferias');
  37.         parent::addAttribute('ptrienio');
  38.         parent::addAttribute('vtrienio');
  39.         parent::addAttribute('ti1');
  40.         parent::addAttribute('ti2');
  41.         parent::addAttribute('ti3');
  42.         parent::addAttribute('campo1');
  43.         parent::addAttribute('acampo1');
  44.         parent::addAttribute('dcampo1');
  45.         parent::addAttribute('campo2');
  46.         parent::addAttribute('acampo2');
  47.         parent::addAttribute('dcampo2');
  48.         parent::addAttribute('campo3');
  49.         parent::addAttribute('acampo3');
  50.         parent::addAttribute('dcampo3');
  51.         parent::addAttribute('campo4');
  52.         parent::addAttribute('acampo4');
  53.         parent::addAttribute('dcampo4');
  54.         parent::addAttribute('campo5');
  55.         parent::addAttribute('acampo5');
  56.         parent::addAttribute('dcampo5');
  57.         parent::addAttribute('campo6');
  58.         parent::addAttribute('acampo6');
  59.         parent::addAttribute('dcampo6');
  60.         parent::addAttribute('campo7');
  61.         parent::addAttribute('acampo7');
  62.         parent::addAttribute('dcampo7');
  63.         parent::addAttribute('campo8');
  64.         parent::addAttribute('acampo8');
  65.         parent::addAttribute('dcampo8');
  66.         parent::addAttribute('campo9');
  67.         parent::addAttribute('acampo9');
  68.         parent::addAttribute('dcampo9');
  69.         parent::addAttribute('campo10');
  70.         parent::addAttribute('acampo10');
  71.         parent::addAttribute('dcampo10');
  72.         parent::addAttribute('tadicional');
  73.         parent::addAttribute('tdesconto');
  74.         parent::addAttribute('liquido1');
  75.         parent::addAttribute('liquido2');
  76.         parent::addAttribute('dtpgto');
  77.         parent::addAttribute('ref');
  78.         parent::addAttribute('base');
  79.         parent::addAttribute('aliq');
  80.         parent::addAttribute('valor');
  81.         parent::addAttribute('obs');
  82.     }
  83. }
  84. ====================================================================
  85. FORM
  86. =====
  1. <?php
  2. class FeriasForm extends TPage
  3. {
  4.     private $form;
  5.     
  6.     public function __construct()
  7.     {
  8.         parent::__construct();
  9.         // Cria o Form e configura
  10.         $this->form = new TQuickForm('form_ferias');
  11.         $this->form->setFormTitle('Tela de Cadastro');
  12.         $this->form->class 'tform';
  13.         $this->form->style 'width: 930px';
  14.         
  15.         // Definição dos campos do form
  16.         $id      = new TEntry('id');
  17.         $nome    = new TEntry('nome');
  18.         
  19.         $cod1                           = new TEntry('cod1');
  20.         $depto                          = new TEntry('depto');
  21.         $ctps                           = new TEntry('ctps');
  22.         $admissao                       = new TEntry('admissao');        
  23.         $funcao                         = new TEntry('funcao');
  24.         $empresa                        = new TEntry('empresa');
  25.         $cod2                           = new TEntry('cod2');
  26.         $cnpj                           = new TEntry('cnpj');
  27.         
  28.         $data1                          = new TEntry('data1');
  29.         $data2                          = new TEntry('data2');
  30.         
  31.         $duracao                        = new TEntry('duracao');
  32.         $faltas                         = new TEntry('faltas');
  33.         $aquisitivo                     = new TEntry('aquisitivo');
  34.         $gozado                         = new TEntry('gozado');
  35.         $data3                          = new TEntry('data3');
  36.         $data4                          = new TEntry('data4');
  37.         
  38.         $salario = new TEntry('salario');
  39.         $pcontass = new TEntry('pcontass');
  40.         $vcontass = new TEntry('vcontass');
  41.         $pferias = new TEntry('pferias');
  42.         $hextrau = new TEntry('hextrau');
  43.         $hextraf = new TEntry('hextraf');
  44.         $vextra = new TEntry('vextra');
  45.         $textra = new TEntry('textra');
  46.         
  47.         $fferias                         = new TEntry('fferias');
  48.         $ptrienio                      = new TEntry('ptrienio');
  49.         $vtrienio                      = new TEntry('vtrienio');
  50.         
  51.         $ti1                            = new TEntry('ti1');
  52.         $ti2                            = new TEntry('ti2');
  53.         $ti3                            = new TEntry('ti3');
  54.         
  55.         $campo1                         = new TEntry('campo1');
  56.         $acampo1                       = new TEntry('acampo1');
  57.         $dcampo1                       = new TEntry('dcampo1');
  58.         $campo2                         = new TEntry('campo2');
  59.         $acampo2                       = new TEntry('acampo2');
  60.         $dcampo2                       = new TEntry('dcampo2');
  61.         $campo3                         = new TEntry('campo3');
  62.         $acampo3                       = new TEntry('acampo3');
  63.         $dcampo3                       = new TEntry('dcampo3');
  64.         $campo4                         = new TEntry('campo4');
  65.         $acampo4                       = new TEntry('acampo4');
  66.         $dcampo4                       = new TEntry('dcampo4');
  67.         $campo5                         = new TEntry('campo5');
  68.         $acampo5                       = new TEntry('acampo5');
  69.         $dcampo5                       = new TEntry('dcampo5');
  70.         $campo6                         = new TEntry('campo6');
  71.         $acampo6                       = new TEntry('acampo6');
  72.         $dcampo6                       = new TEntry('dcampo6');
  73.         $campo7                         = new TEntry('campo7');
  74.         $acampo7                       = new TEntry('acampo7');
  75.         $dcampo7                       = new TEntry('dcampo7');
  76.         $campo8                         = new TEntry('campo8');
  77.         $acampo8                       = new TEntry('acampo8');
  78.         $dcampo8                       = new TEntry('dcampo8');
  79.         $campo9                         = new TEntry('campo9');
  80.         $acampo9                       = new TEntry('acampo9');
  81.         $dcampo9                       = new TEntry('dcampo9');
  82.         $campo10                        = new TEntry('campo10');
  83.         $acampo10                      = new TEntry('acampo10');
  84.         $dcampo10                      = new TEntry('dcampo10');
  85.         
  86.         $tadicional                    = new TEntry('tadicional');
  87.         $tdesconto                     = new TEntry('tdesconto');
  88.         $liquido1                       = new TEntry('liquido1');
  89.         $liquido2                       = new TEntry('liquido2');
  90.         $dtpgto                        = new TEntry('dtpgto');
  91.         
  92.         $ref                            = new TEntry('ref');
  93.         $base                           = new TEntry('base');
  94.         $aliq                           = new TEntry('aliq');
  95.         $valor                          = new TEntry('valor');
  96.         $obs                            = new TText('obs');
  97.                                                                 
  98.         // Formatação para Valores Monetário,   27 campos de valores
  99.         $salario->setNumericMask(2',''.');
  100.         $pcontass->setNumericMask(2',''.');        
  101.         $vcontass->setNumericMask(2',''.');
  102.         $pferias->setNumericMask(2',''.');
  103.                 
  104.         $vextra->setNumericMask(2',''.');
  105.         $textra->setNumericMask(2',''.');
  106.         $hextrau->setNumericMask(2',''.');
  107.         $hextraf->setNumericMask(2',''.');        
  108.         
  109.         $fferias->setNumericMask(2',''.');
  110.         $ptrienio->setNumericMask(2',''.');        
  111.         $vtrienio->setNumericMask(2',''.');
  112.         $acampo1->setNumericMask(2',''.');
  113.         $acampo2->setNumericMask(2',''.');
  114.         $acampo3->setNumericMask(2',''.');
  115.         $dcampo3->setNumericMask(2',''.');
  116.         $acampo4->setNumericMask(2',''.');
  117.         $dcampo4->setNumericMask(2',''.');
  118.         $dcampo5->setNumericMask(2',''.');
  119.         $dcampo6->setNumericMask(2',''.');
  120.         $acampo7->setNumericMask(2',''.');
  121.         $dcampo7->setNumericMask(2',''.');
  122.         $acampo8->setNumericMask(2',''.');
  123.         $dcampo8->setNumericMask(2',''.');
  124.         $acampo9->setNumericMask(2',''.');
  125.         $dcampo9->setNumericMask(2',''.');
  126.         $acampo10->setNumericMask(2',''.');
  127.         $dcampo10->setNumericMask(2',''.');
  128.         $tadicional->setNumericMask(2',''.');
  129.         $tdesconto->setNumericMask(2',''.');
  130.         $liquido1->setNumericMask(2',''.');
  131.         $base->setNumericMask(2',''.');
  132.         $valor->setNumericMask(2',''.');
  133.         $aliq->setNumericMask(2',''.');
  134.                                                                                                                                                                                                                                 
  135. $ti1->style 'background-color: #ffff00';
  136. $ti2->style 'background-color: #ffff00'
  137. $ti3->style 'background-color: #ffff00'
  138.        
  139.         // Atualiza os Valores real e int, campos que têm cálculos e sem cálculos
  140.         
  141.         $salario->setExitAction(new TAction(array($this'onUpdateTotal')));
  142.         $pcontass->setExitAction(new TAction(array($this'onUpdateTotal')));        
  143.         $vcontass->setExitAction(new TAction(array($this'onUpdateTotal')));
  144.         $pferias->setExitAction(new TAction(array($this'onUpdateTotal')));
  145.                         
  146.         $hextrau->setExitAction(new TAction(array($this'onUpdateTotal'))); 
  147.         $hextraf->setExitAction(new TAction(array($this'onUpdateTotal'))); 
  148.         $vextra->setExitAction(new TAction(array($this'onUpdateTotal'))); 
  149.         $textra->setExitAction(new TAction(array($this'onUpdateTotal')));
  150.           
  151.         $fferias->setExitAction(new TAction(array($this'onUpdateTotal'))); 
  152.         $vtrienio->setExitAction(new TAction(array($this'onUpdateTotal'))); 
  153.         $acampo1->setExitAction(new TAction(array($this'onUpdateTotal'))); 
  154.         $acampo2->setExitAction(new TAction(array($this'onUpdateTotal'))); 
  155.         $acampo3->setExitAction(new TAction(array($this'onUpdateTotal'))); 
  156.         $dcampo3->setExitAction(new TAction(array($this'onUpdateTotal'))); 
  157.         $acampo4->setExitAction(new TAction(array($this'onUpdateTotal'))); 
  158.         $dcampo4->setExitAction(new TAction(array($this'onUpdateTotal'))); 
  159.         $dcampo5->setExitAction(new TAction(array($this'onUpdateTotal'))); 
  160.         $dcampo6->setExitAction(new TAction(array($this'onUpdateTotal'))); 
  161.         $acampo7->setExitAction(new TAction(array($this'onUpdateTotal'))); 
  162.         $dcampo7->setExitAction(new TAction(array($this'onUpdateTotal'))); 
  163.         $acampo8->setExitAction(new TAction(array($this'onUpdateTotal'))); 
  164.         $dcampo8->setExitAction(new TAction(array($this'onUpdateTotal'))); 
  165.         $acampo9->setExitAction(new TAction(array($this'onUpdateTotal'))); 
  166.         $dcampo9->setExitAction(new TAction(array($this'onUpdateTotal'))); 
  167.         $acampo10->setExitAction(new TAction(array($this'onUpdateTotal'))); 
  168.         $dcampo10->setExitAction(new TAction(array($this'onUpdateTotal'))); 
  169.         $tadicional->setExitAction(new TAction(array($this'onUpdateTotal'))); 
  170.         $tdesconto->setExitAction(new TAction(array($this'onUpdateTotal'))); 
  171.         $liquido1->setExitAction(new TAction(array($this'onUpdateTotal'))); 
  172.         $base->setExitAction(new TAction(array($this'onUpdateTotal'))); 
  173.         $valor->setExitAction(new TAction(array($this'onUpdateTotal')));
  174.         $aliq->setExitAction(new TAction(array($this'onUpdateTotal')));                                                                                                                                                                                                                           
  175.         //  Campos Não Editáveis
  176.         $id->setEditable(FALSE);
  177.         $vcontass->setEditable(FALSE);
  178.         $vextra->setEditable(FALSE);
  179.         $textra->setEditable(FALSE);
  180.         $campo1->setEditable(FALSE);
  181.         $campo3->setEditable(FALSE); 
  182.         $campo5->setEditable(FALSE); 
  183.         $tadicional->setEditable(FALSE); 
  184.         $tdesconto->setEditable(FALSE); 
  185.         $liquido1->setEditable(FALSE); 
  186.         $base->setEditable(FALSE); 
  187.         $aliq->setEditable(FALSE);
  188.         $valor->setEditable(FALSE);
  189.         $dcampo1->setEditable(FALSE);
  190.         $dcampo3->setEditable(FALSE);
  191.         $dcampo5->setEditable(FALSE);
  192.  
  193.          //  Máscaras     
  194.         $cnpj->setMask('99.999.999/9999-99');
  195.         $cod1->setMask('999999');
  196.         $depto->setMask('9999'); 
  197.         $cod2->setMask('99999');
  198.         $duracao->setMask('99'); 
  199.         $faltas->setMask('99');
  200.         $admissao->setMask('99/99/9999');        
  201.         $data1->setMask('99/99/9999');
  202.         $data2->setMask('99/99/9999');
  203.         $data3->setMask('99/99/9999');
  204.         $data4->setMask('99/99/9999');
  205.         $dtpgto->setMask('99/99/9999');
  206.         $hextrau->setMask('99'); 
  207.         $hextraf->setMask('99');   
  208.         // Define o tamanho dos campos
  209.         $id->setSize(50);
  210.         $nome->setSize(525);
  211.         
  212.         $cod1->setSize(65);
  213.         $depto->setSize(50);
  214.         $ctps->setSize(130);
  215.         $admissao->setSize(90);        
  216.         $funcao->setSize(450);
  217.         $empresa->setSize(390);
  218.         $cod2->setSize(55);
  219.         $cnpj->setSize(130);
  220.         $data1->setSize(85);
  221.         $data2->setSize(85);
  222.         
  223.         $duracao->setSize(35);
  224.         $faltas->setSize(35);
  225.         $aquisitivo->setSize(200);  
  226.         $gozado->setSize(200);  
  227.         $data3->setSize(85);  
  228.         $data4->setSize(85);
  229.         $salario->setSize(85);  
  230.         $pcontass->setSize(85);  
  231.         $vcontass->setSize(85);
  232.         $pferias->setSize(85);
  233.         $hextrau->setSize(85);  
  234.         $hextraf->setSize(85);  
  235.         $vextra->setSize(85);  
  236.         $textra->setSize(85);
  237.            
  238.         $fferias->setSize(85);  
  239.         $ptrienio->setSize(85);  
  240.         $vtrienio->setSize(85);
  241.         
  242.         $ti1->setSize(400);
  243.         $ti2->setSize(200);
  244.         $ti3->setSize(200);
  245.                   
  246.         $campo1->setSize(400);
  247.         $acampo1->setSize(200);  
  248.         $dcampo1->setSize(200);  
  249.         $campo2->setSize(400);  
  250.         $acampo2->setSize(200);  
  251.         $dcampo2->setSize(200);  
  252.         $campo3->setSize(400);  
  253.         $acampo3->setSize(200);  
  254.         $dcampo3->setSize(200);  
  255.         $campo4->setSize(400);  
  256.         $acampo4->setSize(200);  
  257.         $dcampo4->setSize(200);  
  258.         $campo5->setSize(400);  
  259.         $acampo5->setSize(200);  
  260.         $dcampo5->setSize(200);  
  261.         $campo6->setSize(400);  
  262.         $acampo6->setSize(200);  
  263.         $dcampo6->setSize(200);  
  264.         $campo7->setSize(400);  
  265.         $acampo7->setSize(200);  
  266.         $dcampo7->setSize(200);  
  267.         $campo8->setSize(400);  
  268.         $acampo8->setSize(200);  
  269.         $dcampo8->setSize(200);  
  270.         $campo9->setSize(400);  
  271.         $acampo9->setSize(200);  
  272.         $dcampo9->setSize(200);  
  273.         $campo10->setSize(400);  
  274.         $acampo10->setSize(200);  
  275.         $dcampo10->setSize(200);  
  276.         $tadicional->setSize(85);  
  277.         $tdesconto->setSize(85);  
  278.         $liquido1->setSize(85);  
  279.         $liquido2->setSize(570);  
  280.         $dtpgto->setSize(85);  
  281.         $ref->setSize(100);  
  282.         $base->setSize(85);  
  283.         $aliq->setSize(100);  
  284.         $valor->setSize(85);
  285.         $obs->setSize(650100);                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
  286.         // Número de Caracteres permitidos dentro dos campos
  287.         // Não funciona em componentes TCombo, TText e em campos com Valores Monetário.
  288.         $id->setMaxLength(7);
  289.         $nome->setMaxLength(45);
  290.         $cod1->setMaxLength(06);
  291.         $depto->setMaxLength(4);        
  292.         $ctps->setMaxLength(16);
  293.         $admissao->setMaxLength(10);
  294.         $funcao->setMaxLength(40);
  295.         $empresa->setMaxLength(45);
  296.         $cod2->setMaxLength(5);        
  297.         $cnpj->setMaxLength(18);   // 99.999.999/9999-99    (O numero 18 já inclui as máscaras).
  298.         $data1->setMaxLength(10);  // Esse numero já inclui as máscaras.
  299.         $data2->setMaxLength(10);
  300.         $duracao->setMaxLength(2);
  301.         $faltas->setMaxLength(2);                
  302.         $aquisitivo->setMaxLength(23);
  303.         $gozado->setMaxLength(23);
  304.         $data3->setMaxLength(10);
  305.         $data4->setMaxLength(10);
  306.         
  307.         $campo1->setMaxLength(40);
  308.         $campo2->setMaxLength(40);
  309.         $campo3->setMaxLength(40);
  310.         $campo4->setMaxLength(40);
  311.         $campo5->setMaxLength(40);
  312.         $campo6->setMaxLength(40);
  313.         $campo7->setMaxLength(40);
  314.         $campo8->setMaxLength(40);
  315.         $campo9->setMaxLength(40);
  316.         $campo10->setMaxLength(40);
  317.         $liquido2->setMaxLength(82);
  318.         $dtpgto->setMaxLength(10);
  319.         $ref->setMaxLength(07);
  320.         
  321.         // Alinhamento de dados numerocos (int, numero e valores) nos Campos
  322.         $id->style="background-color: #ccccff; text-align: right";
  323.         $cod1->style="text-align: right";
  324.         $depto->style="text-align: right";
  325.         $cod2->style="text-align: right";
  326.         $duracao->style="text-align: right";
  327.         $faltas->style="text-align: right";
  328.         $salario->style="text-align: right";
  329.         $pcontass->style="text-align: right";
  330.         $vcontass->style="text-align: right";
  331.         $pferias->style="text-align: right";
  332.         $hextrau->style="text-align: right";
  333.         $hextraf->style="text-align: right";
  334.         $vextra->style="text-align: right";
  335.         $textra->style="text-align: right";
  336.         $fferias->style="text-align: right";
  337.         $ptrienio->style="text-align: right";
  338.         $vtrienio->style="text-align: right";
  339.         $acampo1->style="text-align: right";
  340.         $acampo2->style="text-align: right";
  341.         $acampo3->style="text-align: right"
  342.         $dcampo3->style="text-align: right";
  343.         $acampo4->style="text-align: right";
  344.         $dcampo4->style="text-align: right";
  345.         $dcampo5->style="text-align: right";
  346.         $dcampo6->style="text-align: right";
  347.         $acampo7->style="text-align: right";
  348.         $dcampo7->style="text-align: right";
  349.         $acampo8->style="text-align: right";
  350.         $dcampo8->style="text-align: right"
  351.         $acampo9->style="text-align: right";
  352.         $dcampo9->style="text-align: right";
  353.         $acampo10->style="text-align: right";
  354.         $dcampo10->style="text-align: right";
  355.         $tadicional->style="text-align: right";
  356.         $tdesconto->style="text-align: right";
  357.         $liquido1->style="text-align: right";
  358.         $base->style="text-align: right";
  359.         $aliq->style="text-align: right"
  360.         
  361. //  ======================================================================================== 
  362.        
  363.         // Adiciona uma linha cinza com duas coluna e um título
  364.         $row $this->form->addRow();
  365.         $row->class 'tformsection';
  366.         $row->addCell( new TLabel('(( F É R I A S ))'))->colspan 2;        
  367.         // Adiciona uma linha em branco no form        
  368.         $row $this->form->addRow();
  369.         $row->addCell( new TLabel(''));
  370.         $this->form->addQuickFields(new TLabel('ID:'), array($id,
  371.         $label_empresa = new TLabel('Empresa:'), $empresa,         
  372.         $label_cod2 = new TLabel('Código:'), $cod2,        
  373.         $label_cnpj = new TLabel('CNPJ:'), $cnpj));
  374.         
  375.         $this->form->addQuickFields(new TLabel('Funcionário:'), array($nome,
  376.         $label_cod1 = new TLabel('Código:'), $cod1,
  377.         $label_depto = new TLabel('Depto:'), $depto));
  378.         
  379.         $this->form->addQuickFields(new TLabel('CTPS:'), array($ctps,
  380.         $label_admissao = new TLabel('Admissão:'), $admissao,
  381.         $label_funcao = new TLabel('Função:'), $funcao));
  382.         
  383.         // Adiciona uma linha em branco no form        
  384.         $row $this->form->addRow();
  385.         $row->addCell( new TLabel(''));        
  386.         
  387.         // Adiciona uma linha cinza com duas coluna e um título
  388.         $row $this->form->addRow();
  389.         $row->class 'tformsection';
  390.         $row->addCell( new TLabel('(( SOLICITAÇÃO DE ABONO ))'))->colspan 2;        
  391.         $row $this->form->addRow();
  392.         $row->class 'tformsection';
  393.         $row->addCell( new TLabel('Até 15 (quinze) dias antes do término do período aquisitivo o empregado solicita a concessão de abono.'))->colspan 2;        
  394.         
  395.         // Adiciona uma linha em branco no form        
  396.         $row $this->form->addRow();
  397.         $row->addCell( new TLabel(''));
  398.         
  399.         $this->form->addQuickFields(new TLabel('Data:'), array($data1,
  400.         $label_data2 = new TLabel('Data:'), $data2));
  401.         
  402.         // Adiciona uma linha em branco no form        
  403.         $row $this->form->addRow();
  404.         $row->addCell( new TLabel(''));        
  405.         
  406.         // Adiciona uma linha cinza com duas coluna e um título
  407.         $row $this->form->addRow();
  408.         $row->class 'tformsection';
  409.         $row->addCell( new TLabel('(( NOTIFICAÇÃO DE FÉRIAS ))'))->colspan 2;        
  410.         $row $this->form->addRow();
  411.         $row->class 'tformsection';
  412.         $row->addCell( new TLabel('Até 30 (trinta) dias antes do início de gozo a empresa acima comunica a concessão das férias abaixo:'))->colspan 2;        
  413.         
  414.         // Adiciona uma linha em branco no form        
  415.         $row $this->form->addRow();
  416.         $row->addCell( new TLabel(''));
  417.         
  418.         $this->form->addQuickFields(new TLabel('Duração:'), array($duracao,
  419.         $label_faltas = new TLabel('Faltas:'), $faltas,
  420.         $label_aquisitivo = new TLabel('Período Aquisitivo:'), $aquisitivo,        
  421.         $label_gozado = new TLabel('Período a ser Gozado:'), $gozado));
  422.         
  423.         $this->form->addQuickFields(new TLabel('Data:'), array($data3,
  424.         $label_data4 = new TLabel('Data:'), $data4));
  425.         
  426.         // Adiciona uma linha em branco no form        
  427.         $row $this->form->addRow();
  428.         $row->addCell( new TLabel(''));        
  429.         
  430.         // Adiciona uma linha cinza com duas coluna e um título
  431.         $row $this->form->addRow();
  432.         $row->class 'tformsection';
  433.         $row->addCell( new TLabel('(( INFORMAÇÕES NECESSÁRIAS - ISSO NÃO SERÁ IMPRESSO ))'))->colspan 2;        
  434.         // Adiciona uma linha em branco no form        
  435.         $row $this->form->addRow();
  436.         $row->addCell( new TLabel(''));
  437.         $this->form->addQuickFields(new TLabel('Salário:'), array($salario,
  438.         $label_pcontass = new TLabel('Percent. da Cont. Assist.:'), $pcontass,
  439.         $label_vcontass = new TLabel('Valor da Cont. Assist.:'), $vcontass,
  440.         $label_pferias = new TLabel('Percentual de Férias:'), $pferias));
  441.         $this->form->addQuickFields(new TLabel('Horas Extras:'), array($hextrau,
  442.         $label_hextraf = new TLabel('H.E. Domingos/Feriados:'), $hextraf,
  443.         $label_vextra = new TLabel('Valor Hora Extra:'), $vextra,        
  444.         $label_textra = new TLabel('Total Horas Extras:'), $textra));
  445.         $this->form->addQuickFields(new TLabel('Férias:'), array($fferias,
  446.         $label_ptrienio = new TLabel('Percentual do Triênio:'), $ptrienio,
  447.         $label_vtrienio = new TLabel('Valor Triênio:'), $vtrienio));                          
  448.         // Adiciona uma linha em branco no form        
  449.         $row $this->form->addRow();
  450.         $row->addCell( new TLabel(''));
  451.         // Adiciona uma linha cinza com duas coluna e um título
  452.         $row $this->form->addRow();
  453.         $row->class 'tformsection';
  454.         $row->addCell( new TLabel('(( RECIBO DE FÉRIAS ))'))->colspan 2;
  455.         
  456.         // Adiciona uma linha cinza com duas coluna e um título
  457.         $row $this->form->addRow();
  458.         $row->class 'tformsection';
  459.         $row->addCell( new TLabel('Vá sempre clicando no botão Salvar. O seu Navegador pode deixar de responder se você tecla Tab ou Enter muito rápido entre os campos.'))->colspan 2;        
  460.         $this->form->addQuickFields(new TLabel(''), array($ti1$ti2$ti3)); 
  461.         $this->form->addQuickFields(new TLabel('Linha 01:'), array($campo1$acampo1$dcampo1));
  462.         $this->form->addQuickFields(new TLabel('Linha 02:'), array($campo2$acampo2$dcampo2));
  463.         $this->form->addQuickFields(new TLabel('Linha 03:'), array($campo3$acampo3$dcampo3));
  464.         $this->form->addQuickFields(new TLabel('Linha 04:'), array($campo4$acampo4$dcampo4));
  465.         $this->form->addQuickFields(new TLabel('Linha 05:'), array($campo5$acampo5$dcampo5));
  466.         $this->form->addQuickFields(new TLabel('Linha 06:'), array($campo6$acampo6$dcampo6));
  467.         $this->form->addQuickFields(new TLabel('Linha 07:'), array($campo7$acampo7$dcampo7));
  468.         $this->form->addQuickFields(new TLabel('Linha 08:'), array($campo8$acampo8$dcampo8));
  469.         $this->form->addQuickFields(new TLabel('Linha 09:'), array($campo9$acampo9$dcampo9));
  470.         $this->form->addQuickFields(new TLabel('Linha 10:'), array($campo10$acampo10$dcampo10));
  471.         // Adiciona uma linha em branco no form        
  472.         $row $this->form->addRow();
  473.         $row->addCell( new TLabel(''));
  474.         $this->form->addQuickFields(new TLabel('Total Adic.:'), array($tadicional,
  475.         $label_tdesconto = new TLabel('Total Desconto:'), $tdesconto,
  476.         $label_liquido1 = new TLabel('Valor Liquido:'), $liquido1));
  477.         
  478.         $this->form->addQuickFields(new TLabel('Data Pgtº:'), array($dtpgto,
  479.         $label_liquido2 = new TLabel('Valor por Extenso:'), $liquido2));                 
  480.         
  481.         // Adiciona uma linha em branco no form        
  482.         $row $this->form->addRow();
  483.         $row->addCell( new TLabel(''));        
  484.         
  485.         // Adiciona uma linha cinza com duas coluna e um título
  486.         $row $this->form->addRow();
  487.         $row->class 'tformsection';
  488.         $row->addCell( new TLabel('(( Detalhamento do Cálculo do INSS ))'))->colspan 2;        
  489.         // Adiciona uma linha em branco no form        
  490.         $row $this->form->addRow();
  491.         $row->addCell( new TLabel(''));
  492.         
  493.         $this->form->addQuickFields(new TLabel('Ref.:'), array($ref,
  494.         $label_base = new TLabel('Base:'), $base,
  495.         $label_aliq = new TLabel('Aliq:'), $aliq,        
  496.         $label_valor = new TLabel('Valor:'), $valor));        
  497.         // Adiciona uma linha em branco no form        
  498.         $row $this->form->addRow();
  499.         $row->addCell( new TLabel(''));                
  500.        
  501.         $this->form->addQuickFields(new TLabel('Obs.:'), array($obs));         
  502.         // Adiciona uma linha em branco no form        
  503.         $row $this->form->addRow();
  504.         $row->addCell( new TLabel(''));
  505.         
  506.         // Exibe uma legenda cinza dentro do campo.
  507.         // Obs. O placeholder não funciona em campos TCombo.
  508.         $cnpj->placeholder '     .      .      /     -   ';
  509.         $data1->placeholder '   /    /';
  510.         $data2->placeholder '   /    /';
  511.         $data3->placeholder '   /    /';
  512.         $data4->placeholder '   /    /';
  513.                          
  514.         $ti1->placeholder '&nbsp;&nbsp;&nbsp;Descrição';
  515.         $ti2->placeholder '&nbsp;Adicional';
  516.         $ti3->placeholder '&nbsp;Desconto';
  517. //  ======================================================================================== 
  518. /*
  519.         // Adiciona Legendas nos campos
  520.         $estado->setTip('Tecle Barra de Espaço neste campo para abrir a Janela de opções ou use o Ponteiro do Mouse.'); 
  521.         $mes->setTip('Tecle Barra de Espaço neste campo para abrir a Janela de opções ou use o Ponteiro do Mouse.'); 
  522.         $semestre->setTip('Tecle Barra de Espaço neste campo para abrir a Janela de opções ou use o Ponteiro do Mouse.'); 
  523.         $insc->setTip('Digite apenas os números.'); 
  524.         $cnpj->setTip('Digite apenas os números.'); 
  525.         $obs->setTip('Após preencher todos os campos do formulário de cadastro, clique lá em cima no Botão Salvar, depois clique no Botão Novo se for cadastrar outra empresa.');                                                 
  526.         $pagina->setTip('Após preencher este campo, tecle Tab ou Enter para passar para o próximo campo.'); 
  527.         $usou->setTip('Após preencher este campo, tecle Tab ou Enter para executar o cálculo do campo seguinte, depois clique no próximo campo editável (Quant.)');                                                         
  528.         $unit1->setTip('Digite apenas os Números. Após preencher este campo, tecle Tab ou Enter para que o próximo campo seja calculado.');
  529.         $unit24->setTip('Após preencher este campo com o valor. Tecle devagar 2 vezes, Tab ou Enter para exibir o cálculo nos próximos campos.');
  530.         $cidade2->setTip('Digite aqui o nome da cidade onde a Empresa se localiza.');
  531. */
  532.         //  Define um valor inicial para os campos. 
  533.         $campo1->setValue('Férias');
  534.         $campo2->setValue('Triênio 3,5%');        
  535.         $campo3->setValue('1/3 Férias');
  536.         $campo4->setValue('Contribuição Assistencial');        
  537.         $campo5->setValue('INSS Férias');
  538.         $salario->setValue('937,00');
  539.         $pcontass->setValue('2,00');
  540.         $fferias->setValue('1.036,00');                 
  541.         // Botões
  542.         $save = new TAction( array($this'onSave'));
  543.         $this->form->addQuickAction('Salvar'$save'ico_save.png');
  544.         $novo = new TAction( array($this'onNovo'));
  545.         $this->form->addQuickAction('Novo'$novo'ico_new.png');
  546.         
  547. //        $delete = new TAction( array($this, 'onDelete'));
  548. //        $this->form->addQuickAction('Excluir só este', $delete, 'ico_delete.png');
  549.    
  550. //        $list = new TAction(array('FeriasList', 'onReload'));
  551. //        $this->form->addQuickAction('Consulta', $list, 'ico_find.png');
  552. /*        
  553.         // Na linha abaixo, se desejar retirar a pergunta se desejar excluir tudo,
  554.         // basta substituir onTudo por Tudo
  555.         $tudo = new TAction( array($this, 'onTudo'));  
  556.         $this->form->addQuickAction('Excluir Todos', $tudo, 'ico_delete.png');
  557.         $limp = new TAction( array('FeriasForm', 'onShow'));
  558.         $this->form->addQuickAction('Limpar Campos', $limp, 'ico_ok.png');         
  559.         
  560.         $reg = new TAction( array($this, 'onReg'));  
  561.         $this->form->addQuickAction('Registros', $reg, 'ico_datagrid.png');
  562. */        
  563. //        $imp = new TAction( array('ImpFormulario1', 'onShow'));  
  564. //        $this->form->addQuickAction('Imprimir', $imp, 'ico_print.png');
  565. //        $mod = new TAction( array($this, 'onModelo'));  
  566. //        $this->form->addQuickAction('Modelo', $mod, 'tdate.png');         
  567.         // Para isso abaixo funcionar, tem que colocar a função onShow lá na Ajuda.class.php
  568.         $ajuda = new TAction( array('Ajuda''onShow'));  
  569.         $this->form->addQuickAction('Ajuda'$ajuda'ico_question.png');                 
  570.         parent::add($this->form);
  571.     }
  572. /*
  573.     public function onReg($param) {
  574.             TTransaction::open('dbferias');    
  575.                $repository = new TRepository('Ferias');
  576.                $criteria = new TCriteria;
  577.                $criteria->resetProperties();  // redefinir os critérios para a contagem de registro
  578.                $count= $repository->count($criteria);           
  579.                new TMessage('info','Número de Registros Cadastrados: '.$count);
  580.             TTransaction::close();        
  581.     }
  582.     
  583. function onModelo()
  584.     {
  585.         $dados = new StdClass;
  586.         $dados->nome = 'JOSÉ HENRIQUE BARRA LIMEIRA';
  587.         $dados->empresa = 'JAILTON SOUZA SOARES';
  588.         $dados->cod1 = '000002';
  589.         $dados->depto = '0002';
  590.         $dados->ctps = '04071450 / 00030';
  591.         $dados->admissao = '10/07/2012';
  592.         $dados->funcao = 'VENDEDOR DE COMERCIO VAREJISTA';
  593.         $dados->cod2 = '00059';
  594.         $dados->cnpj = '08.033.215/0001-10';
  595.         $dados->data1 = '10/07/2012'; 
  596.         $dados->data2 = '10/07/2012';
  597.          
  598.         $dados->duracao = '30'; 
  599.         $dados->faltas = '04'; 
  600.         $dados->aquisitivo = '10/07/2015 a 09/07/2016'; 
  601.         $dados->gozado = '01/02/2017 a 02/03/2017';
  602.         $dados->data3 = '02/01/2017';
  603.         $dados->data4 = '02/01/2017';
  604.         $dados->salario = '937,00';
  605.         $dados->pcontass = '2,00'; 
  606.         $dados->vcontass = '18,74'; 
  607.         $dados->pferias = '8,00'; 
  608.         $dados->hextrau = '04'; 
  609.         $dados->hextraf = '02';
  610.         $dados->vextra = '4,25'; 
  611.         $dados->textra = '26,79'; 
  612.         $dados->fferias = '1.036,00'; 
  613.         $dados->ptrienio = '3,50'; 
  614.         $dados->vtrienio = '36,26';
  615.         $dados->acampo1 = 'Férias';
  616.         $dados->acampo2 = '312,33';
  617.         $dados->campo3 = 'Triênio 3,5%'; 
  618.         $dados->acampo3 = '36,26'; 
  619.         $dados->campo4 = 'Hora Extra'; 
  620.         $dados->acampo4 = '26,79'; 
  621.         $dados->campo5 = 'INSS Férias'; 
  622.         $dados->dcampo5 = '114,37';
  623.         $dados->campo6 = 'Contrinuição Assistencial';
  624.         $dados->dcampo6 = '18,74'; 
  625.         $dados->tadicional = '1.429,68'; 
  626.         $dados->tdesconto = '133,11'; 
  627.         $dados->liquido1 = '1.296,57'; 
  628.         $dados->liquido2 = 'Um Mil, Duzentos e Noventa e Seis Reais e Ciquenta e Sete Centavos'; 
  629.         $dados->dtpgto = '30/01/2017'; 
  630.         $dados->ref = '02/2017';
  631.         $dados->base = '1.429,00'; 
  632.         $dados->aliq = '8,00'; 
  633.         $dados->valor = '114,37'; 
  634.         TForm::sendData('form_ferias', $dados);
  635.     }
  636. */
  637.     
  638.     function onShow() {
  639.     }     
  640.     
  641.     function show()
  642.     {
  643.         parent::show();
  644.     }
  645.     
  646.     public function onNovo()
  647.     {
  648.     try
  649.     {
  650.         TTransaction::open('dbferias');
  651.            $object $this->form->getData('Ferias');
  652.            $object->store();
  653.         TTransaction::close();
  654.     }
  655.     catch (Exception $e)
  656.     {
  657.        new TMessage('error'$e->getMessage());
  658.        TTransaction::rollback();
  659.     }
  660.    }        
  661.     public function onSave()
  662.     {
  663.         try
  664.         {
  665.             TTransaction::open('dbferias');
  666.             $object $this->form->getData('Ferias');  // Obtem os dados do formulário.
  667.             $object->store();                         // Grava os Dados
  668.             
  669.             // Preenche o formulário com os dados do registro ativo.
  670.             $this->form->setData($object);
  671.             
  672.             TTransaction::close();
  673.             // new TMessage('info', 'Dados salvos com sucesso.');
  674.         }
  675.         catch (Exception $e)
  676.         {
  677.             new TMessage('error''<b>Error</b> ' $e->getMessage());
  678.             TTransaction::rollback();
  679.         }
  680.     }
  681.     
  682.     public function onDelete($param)
  683.     {
  684.     try
  685.     {
  686.         $key=$param['id'];
  687.         TTransaction::open('dbferias');
  688.             $object = new Ferias($key);
  689.             $object->delete();
  690.         TTransaction::close();
  691.         }
  692.     catch (Exception $e)
  693.     {
  694.         new TMessage('error'"O registro não pode ser excluido.");
  695.         TTransaction::rollback();
  696.     }
  697.     }    
  698.     
  699. //  A chamada para o método abaixo está no FeriasList
  700. /*
  701.    public function onEdit( $param )
  702.    {
  703.       try
  704.       {
  705.            TTransaction::open('dbferias');
  706.               $key = $param['key'];
  707.               $object = new Ferias ( $key );
  708.               $this->form->setData( $object );
  709.            TTransaction::close();
  710.       }
  711.        catch (Exception $e)
  712.          {
  713.             new TMessage('error', $e->getMessage());
  714.             TTransaction::rollback();
  715.          }
  716.    }
  717.     function onTudo($param)
  718.     {
  719.         $action = new TAction(array($this, 'Tudo'));
  720.         $action->setParameters($param);
  721.         new TQuestion('Deseja Excluir Todos os Registros Cadastrados até Hoje?', $action);
  722.     }
  723.     public function Tudo( $param )
  724.     {
  725.         try
  726.         {
  727.             TTransaction::open('dbferias'); 
  728.             $repository = new TRepository('Ferias'); 
  729.             $repository->delete(); 
  730. //          new TMessage('info', 'Todos os Registros foram Excluidos.'); 
  731.             TTransaction::close(); 
  732.         }
  733.         catch (Exception $e)
  734.         {
  735.             new TMessage('error', '<b>Error</b> ' . $e->getMessage());
  736.             TTransaction::rollback();
  737.         }
  738.     }
  739. */
  740.     public static function onExitProduct($param)
  741.     {
  742.         $id $param['id']; // obter o código
  743.         try
  744.         {
  745.             TTransaction::open('dbferias');
  746.             $product = new Product($product_id); // lê o registro
  747.             $obj = new StdClass;
  748.                       
  749.             $obj->salario 0;
  750.             $obj->pcontass 0;            
  751.             $obj->vcontass 0;
  752.             $obj->pferias 0;            
  753.             $obj->vextra 0;
  754.             
  755.             $obj->textra 0;
  756.             $obj->hextrau 0;
  757.             $obj->hextraf 0;
  758.               
  759.             $obj->fferias 0;
  760.             $obj->vtrienio 0;
  761.             $obj->ptrienio 0;            
  762.             $obj->acampo1 0;
  763.             $obj->acampo2 0;
  764.             $obj->acampo3 0;
  765.             $obj->dcampo3 0;
  766.             $obj->acampo4 0;
  767.             $obj->dcampo4 0;
  768.             $obj->dcampo5 0;
  769.             $obj->dcampo6 0;
  770.             $obj->acampo7 0;
  771.             $obj->dcampo7 0;
  772.             $obj->acampo8 0;
  773.             $obj->dcampo8 0;
  774.             $obj->acampo9 0;
  775.             $obj->dcampo9 0;
  776.             $obj->acampo10 0;
  777.             $obj->dcampo10 0;
  778.             $obj->tadicional 0;
  779.             $obj->tdesconto 0;
  780.             $obj->liquido1 0;
  781.             $obj->base 0;
  782.             $obj->valor 0;
  783.             $obj->aliq 0;
  784.                                        
  785.             $obj->salario  number_format($product->salario2'.'',');
  786.             $obj->vcontass  number_format($product->vcontass2'.'',');
  787.             $obj->pcontass  number_format($product->pcontass2'.'',');
  788.             $obj->pferias  number_format($product->pferias2'.'',');
  789.             $obj->vextra  number_format($product->vextra2'.'',');
  790.             $obj->textra  number_format($product->textra2'.'',');
  791.             
  792.             $obj->fferias  number_format($product->fferias2'.'',');
  793.             $obj->vtrienio  number_format($product->vtrienio2'.'',');
  794.             $obj->ptrienio  number_format($product->ptrienio2'.'',');            
  795.             $obj->acampo1  number_format($product->acampo12'.'',');
  796.             $obj->acampo2  number_format($product->acampo22'.'',');
  797.             $obj->acampo3  number_format($product->acampo32'.'',');
  798.             $obj->dcampo3  number_format($product->dcampo32'.'',');
  799.             $obj->acampo4  number_format($product->acampo42'.'',');
  800.             $obj->dcampo4  number_format($product->dcampo42'.'',');
  801.             $obj->dcampo5  number_format($product->dcampo52'.'',');
  802.             $obj->dcampo6  number_format($product->dcampo62'.'',');
  803.             $obj->acampo7  number_format($product->acampo72'.'',');
  804.             $obj->dcampo7  number_format($product->dcampo72'.'',');
  805.             $obj->acampo8  number_format($product->acampo82'.'',');
  806.             $obj->dcampo8  number_format($product->dcampo82'.'',');
  807.             $obj->acampo9  number_format($product->acampo92'.'',');
  808.             $obj->dcampo9  number_format($product->dcampo92'.'',');
  809.             $obj->acampo10  number_format($product->acampo102'.'',');
  810.             $obj->dcampo10  number_format($product->dcampo102'.'',');
  811.             $obj->tadicional  number_format($product->tadicional2'.'',');
  812.             $obj->tdesconto  number_format($product->tdesconto2'.'',');
  813.             $obj->liquido1  number_format($product->liquido12'.'',');
  814.             $obj->base  number_format($product->base2'.'',');
  815.             $obj->valor  number_format($product->valor2'.'','); 
  816.             $obj->aliq  number_format($product->aliq2'.'',');
  817.             // Formatação para campos INT
  818.             $obj->hextrau = ($product->hextrau);
  819.             $obj->hextraf = ($product->hextraf);           
  820.                                                
  821.             TTransaction::close();
  822.             TForm::sendData('form_ferias'$obj);
  823.         }
  824.         catch (Exception $e)
  825.         {
  826.             // Não faz nada
  827.         }
  828.     }
  829.     
  830.     static function onUpdateTotal($param)
  831.     {
  832.         $salario str_replace(',','.'str_replace('.',''$param['salario']));
  833.         $pcontass str_replace(',','.'str_replace('.',''$param['pcontass']));     
  834.         $vcontass str_replace(',','.'str_replace('.',''$param['vcontass']));
  835.         $pferias str_replace(',','.'str_replace('.',''$param['pferias']));
  836.         $vextra str_replace(',','.'str_replace('.',''$param['vextra']));
  837.         $textra str_replace(',','.'str_replace('.',''$param['textra']));
  838.         $hextrau str_replace(',','.'str_replace('.',''$param['hextrau'])); 
  839.         $hextraf str_replace(',','.'str_replace('.',''$param['hextraf']));         
  840.         $fferias str_replace(',','.'str_replace('.',''$param['fferias']));
  841.         $ptrienio str_replace(',','.'str_replace('.',''$param['ptrienio']));      
  842.         $vtrienio str_replace(',','.'str_replace('.',''$param['vtrienio']));
  843.         $acampo1 str_replace(',','.'str_replace('.',''$param['acampo1']));
  844.         $dcampo1 str_replace(',','.'str_replace('.',''$param['dcampo1']));        
  845.         $acampo2 str_replace(',','.'str_replace('.',''$param['acampo2']));
  846.         $dcampo2 str_replace(',','.'str_replace('.',''$param['dcampo2']));        
  847.         $acampo3 str_replace(',','.'str_replace('.',''$param['acampo3']));
  848.         $dcampo3 str_replace(',','.'str_replace('.',''$param['dcampo3']));
  849.         $acampo4 str_replace(',','.'str_replace('.',''$param['acampo4']));
  850.         $dcampo4 str_replace(',','.'str_replace('.',''$param['dcampo4']));
  851.         $acampo5 str_replace(',','.'str_replace('.',''$param['acampo5']));        
  852.         $dcampo5 str_replace(',','.'str_replace('.',''$param['dcampo5']));
  853.         $acampo6 str_replace(',','.'str_replace('.',''$param['acampo6']));        
  854.         $dcampo6 str_replace(',','.'str_replace('.',''$param['dcampo6']));
  855.         $acampo7 str_replace(',','.'str_replace('.',''$param['acampo7']));
  856.         $dcampo7 str_replace(',','.'str_replace('.',''$param['dcampo7']));
  857.         $acampo8 str_replace(',','.'str_replace('.',''$param['acampo8']));
  858.         $dcampo8 str_replace(',','.'str_replace('.',''$param['dcampo8']));
  859.         $acampo9 str_replace(',','.'str_replace('.',''$param['acampo9']));
  860.         $dcampo9 str_replace(',','.'str_replace('.',''$param['dcampo9']));
  861.         $acampo10 str_replace(',','.'str_replace('.',''$param['acampo10']));
  862.         $dcampo10 str_replace(',','.'str_replace('.',''$param['dcampo10']));
  863.         $tadicional str_replace(',','.'str_replace('.',''$param['tadicional']));
  864.         $tdesconto str_replace(',','.'str_replace('.',''$param['tdesconto']));
  865.         $liquido1 str_replace(',','.'str_replace('.',''$param['liquido1']));
  866.         $base str_replace(',','.'str_replace('.',''$param['base']));
  867.         $valor str_replace(',','.'str_replace('.',''$param['valor']));
  868.         $aliq str_replace(',','.'str_replace('.',''$param['aliq']));
  869.         
  870.         // Cálculos
  871.         
  872.         // As 3 linhas abaixo, funciona
  873.         $vcontass    = (($salario $pcontass) / 100);
  874.         $vextra      = ($salario 220);
  875.         $textra      = ((($hextrau $vextra) + (($hextrau $vextra) / 100)) + (($hextraf $vextra) + (($hextraf $vextra) / 100)));
  876.         // Já as Linhas de cálculos abaixo, não funciona.
  877.         $fferias      = ($salario 220);
  878.         $vtrienio    = (($fferias $ptrienio) / 100);
  879.         $acampo2     = ($salario 3);
  880.         $dcampo5     = (($liquido1 $pferias) / 100);
  881.         $tadicional  = ($acampo1 $acampo2 $acampo3 $acampo4 $acampo7 $acampo8 $acampo9 $acampo10);
  882.         $tdesconto   = ($dcampo3 $dcampo4 $dcampo5 $dcampo6 $dcampo7 $dcampo8 $dcampo9 $dcampo10);
  883.         $liquido1    = (($acampo1 $acampo2 $acampo3 $acampo4 $acampo7 $acampo8 $acampo9 $acampo10)-($dcampo3 $dcampo4 $dcampo5 $dcampo6 $dcampo7 $dcampo8 $dcampo9 $dcampo10));
  884.         $obj = new StdClass;
  885.         // Formatação somente para valores que contêm cálculos
  886.         $obj->vcontass number_format($vcontass2',''.');
  887.         $obj->vextra number_format($vextra2',''.');
  888.         $obj->textra number_format($textra2',''.');
  889.         
  890.         $obj->fferias number_format($fferias2',''.');
  891.         $obj->vtrienio number_format($vtrienio2',''.');
  892.         $obj->acampo2 number_format($acampo22',''.');
  893.         $obj->dcampo5 number_format($dcampo52',''.');
  894.         $obj->tadicional number_format($tadicional2',''.');
  895.         $obj->tdesconto number_format($tdesconto2',''.');
  896.         $obj->liquido1 number_format($liquido12',''.');
  897.             
  898.         TForm::sendData('form_ferias'$obj);
  899.     }
  900. }
  901. ?>

NR

Alex, a função sendData possui um quarto parâmetro($fireEvents = true) que serve para informar se os campos preenchidos por ela devem executar os eventos de saída(onChange, onExit). Como você definiu umExitAction em vários campos que chamam a mesma função, pode estar havendo um deadlock. Faça o teste alterando esse parâmetro para false.
  1. <?php
  2. //public static function sendData($form_name, $object, $aggregate = FALSE, $fireEvents = TRUE)  - padrão
  3. public static function sendData($form_name$objectFALSEFALSE)
  4. ?>
AC

Qual a ideia por trás de atualizar o java? Fiquei curioso.