Máscaras em PDF Boa noite pessoal. Alguém sabe como criar máscaras em código para PDF no Adianti Studio? Tenho alguns campos que sem a máscara ficam sem nexo. Tipo esses: ...
CM
Máscaras em PDF  
Boa noite pessoal.
Alguém sabe como criar máscaras em código para PDF no Adianti Studio?

Tenho alguns campos que sem a máscara ficam sem nexo.

Tipo esses:
 
  1. <?php
  2. $pdf->replace('{cpf}',utf8_decode($data->cliente_cpf), 0, 0, 'L');
  3. $pdf->replace('{identidade}',utf8_decode($data->cliente_identidade), 0, 0, 'L');
  4. $pdf->replace('{telefone}',utf8_decode($data->cliente_telefone), 0, 0, 'L');
  5. $pdf->replace('{nascimento}',DateTime::createFromFormat('Y-m-d', $data->cliente_nascimento)->format( 'd/m/Y' ));
  6. ?>

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


NR

Como referência, veja a função "formatMask" da classe TEntry
HL

Cláudio, boa tarde!

Segue um exemplo de uma classe que criei apenas para a formatação de máscaras.

 
  1. <?php
  2. class HFormatar extends TPage
  3. {
  4. public static function onCGC($cgc){
  5. $cgc = preg_replace("/\D/", '', $cgc);
  6. if(strlen($cgc) == 11){
  7. $cgc = preg_replace("/(\d{3})(\d{3})(\d{3})(\d{2})/", "\$1.\$2.\$3-\$4", $cgc);
  8. return $cgc;
  9. }else{
  10. if(strlen($cgc) == 14){
  11. $cgc = preg_replace("/(\d{2})(\d{3})(\d{3})(\d{4})(\d{2})/", "\$1.\$2.\$3/\$4-\$5", $cgc);
  12. return $cgc;
  13. }
  14. }
  15. }
  16. public static function onCEP($cep){
  17. $cep = preg_replace("/^(\d{5})(\d{3})$/", "\\1-\\2", $cep);
  18. return $cep;
  19. }
  20. public static function onCelular($celular){
  21. if(strlen($celular) == 11){
  22. $celular = preg_replace("/(\d{2})(\d{1})(\d{4})(\d{4})/", "(\$1) \$2 \$3-\$4", $celular);
  23. }else{
  24. if(strlen($celular) == 10){
  25. $celular = preg_replace("/(\d{2})(\d{4})(\d{4})/", "(\$1) \$2-\$3", $celular);
  26. }
  27. }
  28. return $celular;
  29. }
  30. public static function onDataHora($datahora){
  31. if(!empty($datahora)){
  32. $data = new DateTime($datahora);
  33. $datahora = $data->format('d/m/Y H:i:s');
  34. return $datahora;
  35. }
  36. }
  37. public static function onCompetencia($data)
  38. {
  39. if ($data)
  40. {
  41. $ano = substr($data,0,4);
  42. $mes = substr($data,5,2);
  43. $dia = substr($data,8,2);
  44. return '{$mes}/{$ano}';
  45. }
  46. }
  47. }
  48. ?>


Para utilizar no seu código, só passar:
 
  1. <?php
  2. $cpf = 11111111111;
  3. $cpf = HFormatar::onCGC($cpf);
  4. echo $cpf;
  5. ?>
CM

Nataniel a função FormatMsk eu já uso em vários formulários, o problema está em usar ela na geração de um PDF para tais campos.

Helton, muito interessante sua classe. Já vou guardar e usar.

Consigo usar ela no PDF?

Obrigado a todos.
HL

Claudio, de acordo com o que o Nataniel informou, você pode copiar o código de formatação do FormatMask para a classe HFormatar e usar em qualquer parte do seu código, inclusive em PDF.
CM

Helton como eu havia dito. Já uso nos forms, já tentei usar a mesma função no PDF mas sempre ocorre erro.
HL

Disponibiliza parte do teu código para que possamos analisar melhor.
CM

Boa noite Helton, desculpe a demora.

 
  1. <?php
  2. public function OnPDF($param)
  3. {
  4. // open a transaction with database 'samples'
  5. TTransaction::open('ourorio');
  6. // load all customers
  7. $repository = new TRepository('ComprasSub');
  8. $criteria = new TCriteria;
  9. $ComprasSub = $repository->load($criteria);
  10. setlocale(LC_TIME, 'portuguese');
  11. date_default_timezone_set('America/Sao_Paulo');
  12. $data_atual = strftime("%A, %d de %B de %Y", strtotime(date("Y-m-d")));
  13. $data = $this->form->getData('ComprasSub');
  14. $this->form->validate();
  15. $pdf = new TPDFDesigner;
  16. $pdf->fromXml('app/reports/recibo_compra_cliente.pdf.xml');
  17. // cabeçalho
  18. $pdf->replace('{id_compra}',$data->id_compra);
  19. $pdf->replace('{data_compra}',DateTime::createFromFormat('Y-m-d', $data->data_compra)->format( 'd/m/Y' ));
  20. $pdf->replace('{cliente_txt}',utf8_decode($data->cliente_txt));
  21. $pdf->replace('{endereco_tipo}',utf8_decode($data->cliente_endereco_tipo), 0, 0, 'L');
  22. $pdf->replace('{endereco_numero}',utf8_decode($data->cliente_endereco_numero), 0, 0, 'L');
  23. $pdf->replace('{endereco}',utf8_decode($data->cliente_endereco), 0, 0, 'L');
  24. $pdf->replace('{bairro}',utf8_decode($data->cliente_bairro), 0, 0, 'L');
  25. $pdf->replace('{cpf}',utf8_decode($data->cliente_cpf), 0, 0, 'L');
  26. $pdf->replace('{identidade}',utf8_decode($data->cliente_identidade), 0, 0, 'L');
  27. $pdf->replace('{telefone}',utf8_decode($data->cliente_telefone), 0, 0, 'L');
  28. $pdf->replace('{nascimento}',DateTime::createFromFormat('Y-m-d', $data->cliente_nascimento)->format( 'd/m/Y' ));
  29. $pdf->replace('{cidade}',utf8_decode($data->cliente_cidade), 0, 0, 'L');
  30. $pdf->replace('{estado}',utf8_decode($data->cliente_estado), 0, 0, 'L');
  31. $pdf->replace('{email}',utf8_decode($data->cliente_email), 0, 0, 'L');
  32. $pdf->replace('{vendedor_txt}',utf8_decode($data->vendedor_txt));
  33. $pdf->replace('{loja_txt}',utf8_decode($data->loja_txt));
  34. $pdf->replace('{loja_id}',utf8_decode($data->loja_id));
  35. $pdf->generate();
  36. $fill = TRUE;
  37. // Itens do Pedido
  38. $tot = 0; // acrescentei aqui
  39. foreach ($ComprasSub as $pedido_list)
  40. {
  41. if($pedido_list->compra_id == $data->id_compra) // alterei aqui para testar
  42. {
  43. $pdf->gotoAnchorX('detalhes');
  44. $pdf->Ln(20);
  45. $pdf->Cell(50, 12, number_format((double)$pedido_list->quantidade, 2, ',', '.'), 0, 0, 'R');
  46. $pdf->Cell(25, 12, utf8_decode($pedido_list->unidade), 0, 0, 'R');
  47. $pdf->Cell(100, 12, utf8_decode($pedido_list->descricao), 0, 0, 'L');
  48. $pdf->Cell(180, 12, utf8_decode($pedido_list->kilate_txt), 0, 0, 'R');
  49. $pdf->Cell(80, 12, utf8_decode($pedido_list->tipo_compra_txt), 0, 0, 'L');
  50. $pdf->Cell(75, 12, number_format((double)$pedido_list->valor_unit, 2, ',', '.'), 0, 0, 'R');
  51. $pdf->Cell(70, 12, number_format((double)$pedido_list->subtotal, 2, ',', '.'), 0, 0, 'R');
  52. $tot = $tot + $pedido_list->subtotal; // acrescentei aqui
  53. // grid background
  54. $fill = !$fill;
  55. }
  56. }
  57. $pdf->Ln(4);
  58. $pdf->SetX(18);
  59. $pdf->Cell(570, 14, utf8_decode(""),'B','R', $fill);
  60. $pdf->Ln(20);
  61. $pdf->SetX(50);
  62. $pdf->Cell(530, 14, utf8_decode("Total R$ ". number_format((double)$tot, 2, ',', '.')),0,0,'R'); // acrescentei aqui
  63. $pdf->Ln(50);
  64. $pdf->SetX(18);
  65. $pdf->MultiCell(560, 14, utf8_decode(" Eu, ".$data->cliente_txt. ", declaro, para todos os fins, de direito e sob as penas da Lei 12.683 de 9 de julho de 2012 e artigos 155, 156 e 157 todos do Código Penal Brasileiro, em todas as esferas, em juízo ou fora dele, ser o(a) legítimo(a) Proprietário(a) do(s) objeto(s) e/ou ouro velho que, no presente ato vendo a OuroRio Quiosques & Comércio de Metais Ltda, declarando ainda que não transfiro em caráter absoluto nenhuma de minhas responsabilidades a referida empresa quanto a procedência, descrição e autenticidade do(s) objeto(s) e/ou ouro velho o(s) qual(is) foi(ram) por mim legalmente adquirido(s) e está(ão) livre(s) e desembaraçada(s) de quaisquer ônus ou pendência(s).
  66. Respondo sempre e, em quaisquer circunstâncias, pelos termos desta Declaração a qual assino em via única."),0,'J', $fill);
  67. $pdf->Ln(200);
  68. $pdf->SetX(20);
  69. $pdf->Cell(560, 14,$data_atual);
  70. // inicio do rodapé
  71. $pdf->SetY(-25);
  72. $pdf->SetFont('Arial', '', 8);
  73. $pdf->setFontColorRGB( '#000000' );
  74. $pdf->Cell(590, 10, utf8_decode('Pág. ').$pdf->PageNo().' de {nb}',0,0,'R');
  75. $pdf->SetY(-25);
  76. $pdf->Cell(140, 10, utf8_decode('Sistema Gestor OuroRio © '.date("Y"."")),0,0,'R');
  77. $pdf->SetY(-25);
  78. $pdf->Cell(340,10,utf8_decode("Impresso em ".date("d/m/Y H:i:s"."")),0,1,'R');
  79. $pdf->SetY(-25);
  80. $pdf->Cell(460,10,utf8_decode(" Por ".TSession::getValue('username')),0,1,'R'); //nome do usuário
  81. // fim do rodapé
  82. $file="app/output/Recibo - ".$data->loja_txt.".pdf";
  83. if (!file_exists($file) OR is_writable($file))
  84. {
  85. $pdf->save($file);
  86. //Abrir PDF em Janela Modal dentro do Sistema
  87. $window = TWindow::create($data->loja_txt, 0.8, 0.8);
  88. $object = new TElement('object');
  89. $object->data = $file;
  90. $object->type = 'application/pdf';
  91. $object->style = "width: 100%; height:calc(100% - 10px)";
  92. $window->add($object);
  93. $window->show();
  94. }
  95. else
  96. {
  97. throw new Exception(_t('Permission denied') . ': ' . $file);
  98. }
  99. TForm::sendData('form_Compras',$data);
  100. TToast::show('success','RECIBO GERADO COM SUCESSO!', 'top left', 'fas fa-check');
  101. TTransaction::close();
  102. AdiantiCoreApplication::loadPage( 'ComprasListLoja' );
  103. exit;
  104. }
  105. ?>
HL

Claudio, no exemplo que te dei, tu pode fazer dessa forma ai.

 
  1. <?php
  2. $data->cliente_cpf = HFormatar::onCGC($data->cliente_cpf);
  3. $pdf->replace('{cpf}',utf8_decode($data->cliente_cpf), 0, 0, 'L');
  4. ?>
CM

Beleza Helton.
Vou fazer amanhã e te aviso se deu certo.
Obrigado pela força irmão