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

Curso Dominando o Adianti Framework

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


Dominando o Adianti Framework Quero me inscrever agora!

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

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, $object, FALSE, FALSE)
  4. ?>
AC

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