Lançado Adianti Framework 7.6!
Clique aqui para saber mais
Confirmar Gravar, abrir PDF e retornar a listagem. Boa tarde. Tenho o código abaixo para Confirmar a gravação do Registro. Gostaria de saber como faço para se escolher Gravar, abrir um PDF e retornar a listagem? Esse código quando clico no botão para confirmar ele está limpando o formulário. Obrigado ...
CM
Confirmar Gravar, abrir PDF e retornar a listagem.  
Boa tarde.
Tenho o código abaixo para Confirmar a gravação do Registro.
Gostaria de saber como faço para se escolher Gravar, abrir um PDF e retornar a listagem?

Esse código quando clico no botão para confirmar ele está limpando o formulário.
Obrigado

  1. <?php
  2. function onConfirma($param)
  3.     {
  4.     $action = new TAction(array($this'ConfirmarCompra'));
  5.     $action->setParameters($param);
  6.     new TQuestion('Confirma a Compra ?'$action);
  7.     } 
  8.     
  9.     public static function ConfirmarCompra$param )
  10.     {
  11.     try
  12.     {
  13.     TTransaction::open('ourorio');
  14.     $repository = new TRepository('Compras');
  15.     //$repository->delete();
  16.         
  17.     new TMessage('info''Compra Registrada com Sucesso!.');
  18.     TTransaction::close();
  19.     }
  20.     catch (Exception $e)
  21.     {
  22.     new TMessage('error''Error ' $e->getMessage());
  23.     TTransaction::rollback();
  24.     }
  25.     }
  26.  
  27. ?>

Pacotão Dominando o Adianti Framework 7
O material mais completo de treinamento do Framework.
Curso em vídeo aulas + Livro completo + Códigos fontes do projeto ERPHouse.
Conteúdo Atualizado! Versão 7.4


Dominando o Adianti 7 Quero me inscrever agora!

Comentários (11)


NR

Pra redirecionar para a listagem, a TMessage aceita um TAction como terceiro parâmetro, executado após o clique no botão.
  1. <?php
  2. new TMessage('info''Compra Registrada com Sucesso!.', new TAction('classe','metodo'));
  3. ?>

Sobre o pdf, pode usar a função TPage::openFile('arquivo.pdf');
CM

Bom dia Nataniel. Obrigado por responder.

Quanto a voltar para a Lista eu já sei como fazer;
Usar a função TPage::openFile('arquivo.pdf'); não faço a mínima idéia de como usar., nem conhecia.

Esse código que postei quando clico no botão para confirmar ele está limpando o formulário.
Obrigado
NR

Transforme a função onConfirma em estática, dessa forma não haverá remontagem da tela
CM

Na verdade mudar para estática não executava nada.
Alterei as 2 funções para:

public function onConfirma($param)
public function ConfirmarCompra( $param )

E assim funciona sem limpar a tela. Agora só falta abrir o PDF e finalizo.
Se puder ajudar nisso, agradeço. Ele abre mas não exibe nada.
Obrigado
CM

Achei que havia funcionado, mas não está, continua limpando o form.
CM

Alguém pra ajudar?
NR

Confirme que seu ambiente está configurado para mostrar os erros da aplicação. Por exemplo, ao mudar uma função para estática, você não pode usar "$this" dentro dela. Isso gera um erro e provavelmente por isso que o código não executa.
  1. <?php
  2. //$action = new TAction(array($this, 'ConfirmarCompra'));
  3. $action = new TAction(array(__CLASS__'ConfirmarCompra'));
  4. ?>

Quanto ao pdf, você quer abrir um pdf já existente? Onde está esse arquivo? Você precisa passar o caminho relativo do arquivo para a função openFile.
CM

A confirmação funcionou perfeitamente Naniel. O erro estava nessa linha mesmo.

Ficou assim:

  1. <?php 
  2. public static function onConfirma($param)
  3.     {
  4.     $action = new TAction(array(__CLASS__'ConfirmarCompra'));
  5.     $action->setParameters($param);
  6.     new TQuestion('Confirma os Dados da Compra ?'$action);
  7.     } 
  8.     
  9.     public static function ConfirmarCompra$param )
  10.     {
  11.     try
  12.     {
  13.     TTransaction::open('ourorio');
  14.     $repository = new TRepository('Compras');
  15.     //$repository->delete();
  16.         
  17.     new TMessage('info''Compra Registrada com Sucesso!');
  18.     TPage::openFile('app/output/Recibo.pdf'); 
  19.     
  20.     TTransaction::close();
  21.     }
  22.     catch (Exception $e)
  23.     {
  24.     new TMessage('error''Error ' $e->getMessage());
  25.     TTransaction::rollback();
  26.     }
  27.     } 
  28. ?>
CM

Quanto ao PDF eu tenho uma função que gera o PDF através de u botão.
O nome é unico Recibo.pdf

Nesse caso, precisava que ao confirmar a compra ele gerasse o arquivo PDF baseado nesse registro.

Segue o código que gera o PDF:

  1. <?php 
  2.   public function OnPDF($param)
  3.     {
  4.     
  5.      // open a transaction with database 'samples'
  6.       TTransaction::open('ourorio');
  7.             
  8.      // load all customers
  9.      $repository = new TRepository('ComprasSub');
  10.      $criteria   = new TCriteria;
  11.      $ComprasSub $repository->load($criteria);
  12.      
  13.      $data $this->form->getData('ComprasSub');
  14.      $this->form->validate();
  15.   
  16.     $pdf = new TPDFDesigner;
  17.     $pdf->fromXml('app/reports/recibo_compra_cliente.pdf.xml');
  18.     
  19.     $pdf->replace('{id_compra}',$data->id_compra);
  20.     $pdf->replace('{data_compra}',DateTime::createFromFormat('Y-m-d'$data->data_compra)->format'd/m/Y' ));
  21.     $pdf->replace('{cliente_txt}',utf8_decode($data->cliente_txt));
  22.     $pdf->replace('{endereco_tipo}',utf8_decode($data->cliente_endereco_tipo), 00'L');
  23.     $pdf->replace('{endereco_numero}',utf8_decode($data->cliente_endereco_numero), 00'L');
  24.     $pdf->replace('{endereco}',utf8_decode($data->cliente_endereco), 00'L');
  25.     $pdf->replace('{bairro}',utf8_decode($data->cliente_bairro), 00'L');
  26.   
  27.     $pdf->replace('{cpf}',utf8_decode($data->cliente_cpf), 00'L');
  28.     $pdf->replace('{identidade}',utf8_decode($data->cliente_identidade), 00'L');
  29.     $pdf->replace('{telefone}',utf8_decode($data->cliente_telefone), 00'L');
  30.     $pdf->replace('{nascimento}',DateTime::createFromFormat('Y-m-d'$data->cliente_nascimento)->format'd/m/Y' ));
  31.     $pdf->replace('{cidade}',utf8_decode($data->cliente_cidade), 00'L');
  32.     $pdf->replace('{estado}',utf8_decode($data->cliente_estado), 00'L');
  33.     $pdf->replace('{email}',utf8_decode($data->cliente_email), 00'L');
  34.    
  35.     $pdf->replace('{vendedor_txt}',utf8_decode($data->vendedor_txt));
  36.     $pdf->replace('{loja_txt}',utf8_decode($data->loja_txt));
  37.     $pdf->replace('{loja_id}',utf8_decode($data->loja_id));
  38.     
  39.    
  40.             
  41.     $pdf->generate();
  42.     
  43.     // Itens do Pedido
  44.         
  45.        //$pedidos_list = ComprasSub::where('compra_id','=',$id_compra)->load();
  46.        
  47.             //if ($pedidos_list)
  48.             //{
  49.                 foreach ($ComprasSub as $pedido_list)
  50.                 {
  51.                     $pdf->gotoAnchorX('details');
  52.                     $pdf->Ln(18);
  53.                     $pdf->Cell(5012utf8_decode($pedido_list->quantidade), 00'R');
  54.                     $pdf->Cell(2512utf8_decode($pedido_list->unidade), 00'R');
  55.                     $pdf->Cell(10012utf8_decode($pedido_list->descricao), 00'L');
  56.                     $pdf->Cell(17012utf8_decode($pedido_list->kilate_txt), 00'R');
  57.                     $pdf->Cell(5012utf8_decode($pedido_list->tipo_compra_txt), 00'R');
  58.                     $pdf->Cell(11512number_format((double)$pedido_list->valor_unit2',''.'), 00'R');
  59.                     $pdf->Cell(7012number_format((double)$pedido_list->subtotal2',''.'), 00'R');
  60.                     
  61.                     // grid background
  62.                     $fill = !$fill;
  63.                }
  64.             //}      
  65.                                
  66.     // inicio do rodapé
  67.     $pdf->SetY(-25);
  68.     $pdf->SetFont('Arial'''8);
  69.     $pdf->setFontColorRGB'#000000' );
  70.     $pdf->Cell(59010utf8_decode('Pág. ').$pdf->PageNo().' de {nb}',0,0,'R');
  71.     $pdf->SetY(-25);
  72.     $pdf->Cell(13010utf8_decode('Sistema Gestor OuroRio © 2021 '),0,0,'R');
  73.     $pdf->SetY(-25);
  74.     $pdf->Cell(340,10,utf8_decode("Impresso em ".date("d/m/Y H:i:s"."")),0,1,'R');
  75.     $pdf->SetY(-25);
  76.     $pdf->Cell(420,10,utf8_decode(" Por ".TSession::getValue('username')),0,1,'R'); //nome do usuário 
  77.     // fim do rodapé
  78.     
  79.    
  80.     
  81.     $file 'app/output/Recibo.pdf';
  82.     if (!file_exists($file) OR is_writable($file))
  83.     {
  84.     $pdf->save($file);
  85.     //parent::openFile($file);
  86.     
  87.     $window TWindow::create('Ouro Rio'0.80.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.     }
  96.     else
  97.     {
  98.     throw new Exception(_t('Permission denied') . ': ' $file);
  99.     } 
  100.     
  101.     TToast::show('success','RECIBO GERADO COM SUCESSO!''top left''fas fa-check');
  102.     
  103.     TTransaction::close();
  104.     AdiantiCoreApplication::loadPage'ComprasList' );
  105.     exit;
  106.     
  107.     }
  108. ?>


Eu ainda estou apanhando pra fazer o detalhe do PDF aparecer somente o item do Master, porquê estão aparecendo todos os itens do detalhe, mas isso é um outro problema.
Mas se puder ajudar.. Rsrs.



CM

Boa noite pessoal.
Só falta essa parte: Gravar e abrir o PDF
Quem puder ajudar, agradeço antecipadamente.
CM

Bom dia.
Alguém pra ajudar?
Obrigado