Como eu faço para exibir as duas casas decimais no campo Moeda? Eu utilizo o banc de dados sqlite, e dentro do banco, o campo moeda está definido assim: Real em vez de Real(5,2). Eu deixei apenas Real porque eu abrir o exemplo do tutor, e dentro do banco de dados: samples.db tem apenas float em vez de float(5,2). Bem, como o banco de dados sqlite não tem float, então eu coloquei Real. O problema é o seguinte: no campo moeda, quando eu digito assim: 2,50...
AM
Como eu faço para exibir as duas casas decimais no campo Moeda?  
Fechado
Eu utilizo o banc de dados sqlite, e dentro do banco, o campo moeda está definido assim: Real em vez de Real(5,2). Eu deixei apenas Real porque eu abrir o exemplo do tutor, e dentro do banco de dados: samples.db tem apenas float em vez de float(5,2). Bem, como o banco de dados sqlite não tem float, então eu coloquei Real.

O problema é o seguinte: no campo moeda, quando eu digito assim: 2,500.00 funciona,aparece assim: 2,500.00. Mas quando eu digito assim 250.00, no formlist datagrid, ou seja, na pesquisa, exibe apenas assim: 250.0
E eu quero que apareça as duas casas decimais .00

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

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


FC

$valor 24.9;
echo 'R$: '.number_format($valor,2);

Peguei esse exemplo nesse site

forum.imasters.com.br/topic/118370-formatacao-de-moeda-r-no-php/
AM

Este exemplo que você colocou não me ajudou muito porque os valores continuam exibindo com apenas um dígito nas casas decimais, e isto só acontece quando o valor termina com zero zero. exemplo:
Eu digito isto: 500.00 e salva no banco assim: 500.0
Eu digito isto 30.00 e salva no banco assim: 30.00
Agora quando eu digite assim: 2,500.00 ai funciona, ele salva deste jeito 2,500.00
É muito estranho!

Veja esta postagem que eu fiz:
www.adianti.com.br/forum/pt/view_1424?como-eu-chamo-essa-funcao-para
PD

Alex,

Você está se confundindo. No Brasil, não se utiliza "2,500.00", e sim "2.500,00".
Vou lhe escrever o que eu disse em um e-mail outro dia:

Usuário digita: 500,00 => Grava 500.00 (replace vírgula por ponto)
Usuário digita: 2.500,00 => Grava 2500.00 (replace ponto por nada, vírgula por ponto)

Entendeu?

AM

Pablo, isso que você está me dizendo eu já sei. Eu sei que lá dentro do banco de Dados está assim 500.0 ou assim: 2,500.0
O que eu quero é exibir no datagrid o valor assim: 2.500,00 no padrão brasileiro.
=======================
Eu fiz assim mas deu erro:

Chamada:

// creates the datagrid columns
$id = new TDataGridColumn('id', 'Código', 'left', 7);
$nome = new TDataGridColumn('nome', 'Nome do Empregado', 'left', 250);
$salario = new TDataGridColumn('salario', 'Salário', 'right', 60);
$empresa = new TDataGridColumn('empresa', 'Nome da Empresa', 'left', 250);

// Define a Transformação do Valor Salário em formato brasileiro, ele chama a função lá embaixo.
$salario->setTransformer(array($this, 'formatValor'));

Função:

public function formatValor($salario, $object)

{
if($object->salario)

{
$vlr = number_format($object->salario, 2, ',', '.');
return $vlr;
}
}
======================
Eu uso o Banco sqlite e o campo salario está definido apenas como real, não coloquei lá no banco de dados neste campo nenhum número de valores de dígitos antes e nem depois do ponto.

------------------
Faz assim Pablo, acesse agora meu site: www.sistemapersonalizado.com
Depois clique em: Aplicativos Grátis, depois clique em Recibo de salário, e dê uma olhada o campo salário no Relatório de Impressão, eu retirei o campo salário do datagrid com vergonha , mas eu pretendo colocar quando
souber transformar para exibir o valor no padrão brasileiro.
AM

Veja ai o código de (cadastro Form) se tem algum erro, me disseram que o campo salario não pode ter separador de milhar, ou seja a vírgula. É verdade? Veja ai o código se está ok.

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

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