Lançado Adianti Framework 7.6!
Clique aqui para saber mais
Mestre Detalhe PDF Gostaria de saber porquê todas as vezes que procuramos por mestre detalhe em PDF, sempre indicam o exemplo da Nota Fiscal do Tutor. O que acontece, é que aquele exemplo não trabalha com banco de dados. Dai usar ele como inicio dos trabalhos é inviável. Será qua alguém teria um exemplo real com banco de dados? Obrigado. ...
CM
Mestre Detalhe PDF  
Gostaria de saber porquê todas as vezes que procuramos por mestre detalhe em PDF, sempre indicam o exemplo da Nota Fiscal do Tutor.
O que acontece, é que aquele exemplo não trabalha com banco de dados. Dai usar ele como inicio dos trabalhos é inviável.

Será qua alguém teria um exemplo real com banco de dados?

Obrigado.

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


NM

Hola

Se tens o Studio, pode gerar um exemplo ali, claro talvez tenha que fazer alguns pequenos ajustes para a sua necessidade mas a parte de edição e gravação fica pronta.

Um abraço
CM

Obrigado por suas palavras, mas isso eu também sei.
O problema é que ninguém mostra um exemplo de Mestre-Detalhe com dados vindo do banco.
Conforme eu expliquei.
CM

Estamos falando a mesma língua?
Estou falando de Mestre-Detalhe em PDF
Foi isso que entendeu?
Não é formulário.
MC

Claudio boa tarde
manda email de contato que te passo um exemplo:

CM

Oi Marcelo boa tarde, obrigado.
segue:
cmachado397@gmail.com
CM

Marcelo veja como está meu código para gerar o PDF.
Agradeço imensamente pela ajuda amigo.

  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.      $pdf->generate();
  40.                
  41.      // Itens do Pedido
  42.              
  43.              foreach ($ComprasSub as $pedido_list)
  44.              {
  45.                 if($compra_id == $id_compra)
  46.                 {
  47.                     $pdf->gotoAnchorX('detalhes');
  48.                     $pdf->Ln(18);
  49.                     $pdf->Cell(5012utf8_decode($pedido_list->quantidade), 00'R');
  50.                     $pdf->Cell(2512utf8_decode($pedido_list->unidade), 00'R');
  51.                     $pdf->Cell(10012utf8_decode($pedido_list->descricao), 00'L');
  52.                     $pdf->Cell(17012utf8_decode($pedido_list->kilate_txt), 00'R');
  53.                     $pdf->Cell(5012utf8_decode($pedido_list->tipo_compra_txt), 00'R');
  54.                     $pdf->Cell(11512number_format((double)$pedido_list->valor_unit2',''.'), 00'R');
  55.                     $pdf->Cell(7012number_format((double)$pedido_list->subtotal2',''.'), 00'R');
  56.                     
  57.                     
  58.                     // grid background
  59.                     $fill = !$fill;
  60.                }
  61.             }      
  62.     
  63.      $pdf->Ln(8);
  64.      $pdf->SetX(18); 
  65.      $pdf->Cell(57014utf8_decode(""),'B','R'$fill);
  66.        
  67.      $pdf->Ln(20);
  68.      $pdf->SetX(20);
  69.      $pdf->Cell(56014utf8_decode("Total "number_format((double)$data->valor_total2',''.')),0,'R'$fill);
  70.   
  71.      $pdf->Ln(50);
  72.      $pdf->SetX(18); 
  73.      $pdf->MultiCell(56014utf8_decode("      Eu, "utf8_decode($data->cliente_txt) . ", declaro, para todos os fins, de direito e sob as penas da Lei 12.683 de * 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 Quality Serviços e Comércio de Metais Preciosos 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).
  74.       Respondo sempre e, em quaisquer circunstâncias, pelos termos desta Declaração a qual assino em via única."),0,'J'$fill);
  75.     
  76.      // inicio do rodapé
  77.      $pdf->SetY(-25);
  78.      $pdf->SetFont('Arial'''8);
  79.      $pdf->setFontColorRGB'#000000' );
  80.      $pdf->Cell(59010utf8_decode('Pág. ').$pdf->PageNo().' de {nb}',0,0,'R');
  81.      $pdf->SetY(-25);
  82.      $pdf->Cell(13010utf8_decode('Sistema Gestor OuroRio © 2021 '),0,0,'R');
  83.      $pdf->SetY(-25);
  84.      $pdf->Cell(340,10,utf8_decode("Impresso em ".date("d/m/Y H:i:s"."")),0,1,'R');
  85.      $pdf->SetY(-25);
  86.      $pdf->Cell(420,10,utf8_decode(" Por ".TSession::getValue('username')),0,1,'R'); //nome do usuário 
  87.      // fim do rodapé
  88.     
  89.    
  90.      $file="app/output/Recibo - ".$data->loja_txt.".pdf"
  91.     
  92.      if (!file_exists($file) OR is_writable($file))
  93.      {
  94.      $pdf->save($file);
  95.    
  96.      $window TWindow::create($data->loja_txt0.80.8);
  97.                 $object = new TElement('object');
  98.                 $object->data  $file;
  99.                 $object->type  'application/pdf';
  100.                 $object->style "width: 100%; height:calc(100% - 10px)";
  101.                 $window->add($object);
  102.                 $window->show();
  103.                 
  104.      }
  105.      else
  106.      {
  107.      throw new Exception(_t('Permission denied') . ': ' $file);
  108.      } 
  109.     
  110.      TToast::show('success','RECIBO GERADO COM SUCESSO!''top left''fas fa-check');
  111.     
  112.      TTransaction::close();
  113.      AdiantiCoreApplication::loadPage'ComprasList' );
  114.      exit;
  115.     
  116.      }
  117. ?>
CM

Com a ajuda que foi de grande Valia do amigo Marcelo Carvalho, consegui resolver e entender como funciona o Mestre-Detalhe em PDF.
Muito obrigado por sua ajuda. Segue como ficou o código para futuras dúvidas.

  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.      $pdf->generate();
  40.                
  41.      // Itens do Pedido
  42.              $tot 0;  // acrescentei aqui
  43.              
  44.              
  45.              foreach ($ComprasSub as $pedido_list)
  46.                  {
  47.                  if($pedido_list->compra_id == $data->id_compra)  // alterei aqui para testar
  48.                  {
  49.                     $pdf->gotoAnchorX('detalhes');
  50.                     $pdf->Ln(20);
  51.                     $pdf->Cell(5012utf8_decode($pedido_list->quantidade), 00'R');
  52.                     $pdf->Cell(2512utf8_decode($pedido_list->unidade), 00'R');
  53.                     $pdf->Cell(10012utf8_decode($pedido_list->descricao), 00'L');
  54.                     $pdf->Cell(17012utf8_decode($pedido_list->kilate_txt), 00'R');
  55.                     $pdf->Cell(5012utf8_decode($pedido_list->tipo_compra_txt), 00'R');
  56.                     $pdf->Cell(11512number_format((double)$pedido_list->valor_unit2',''.'), 00'R');
  57.                     $pdf->Cell(7012number_format((double)$pedido_list->subtotal2',''.'), 00'R');
  58.                     
  59.                     $tot $tot $pedido_list->subtotal;  // acrescentei aqui
  60.                     
  61.                     // grid background
  62.                     $fill = !$fill;
  63.                }
  64.             }      
  65.     
  66.      $pdf->Ln(4);
  67.      $pdf->SetX(18); 
  68.      $pdf->Cell(57014utf8_decode(""),'B','R'$fill);
  69.        
  70.      $pdf->Ln(20);
  71.      $pdf->SetX(50);
  72.      $pdf->Cell(53014utf8_decode("Total R$ "number_format((double)$tot2',''.')),0,0,'R');   // acrescentei aqui
  73.      
  74.      $pdf->Ln(50);
  75.      $pdf->SetX(18); 
  76.      $pdf->MultiCell(56014utf8_decode("      Eu, "utf8_decode($data->cliente_txt) . ", declaro, para todos os fins, de direito e sob as penas da Lei 12.683 de * 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 Quality Serviços e Comércio de Metais Preciosos 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).
  77.       Respondo sempre e, em quaisquer circunstâncias, pelos termos desta Declaração a qual assino em via única."),0,'J'$fill);
  78.      
  79.      $pdf->Ln(200);
  80.      $pdf->SetX(20);
  81.      $pdf->Cell(56014,DateTime::createFromFormat('Y-m-d'$data->data_compra)->format'd' ). ' de ' .DateTime::createFromFormat('Y-m-d'$data->data_compra)->format'M' ). ' de ' .DateTime::createFromFormat('Y-m-d'$data->data_compra)->format'Y' ),0,0,'L');  
  82.      
  83.    
  84.     // inicio do rodapé
  85.      $pdf->SetY(-25);
  86.      $pdf->SetFont('Arial'''8);
  87.      $pdf->setFontColorRGB'#000000' );
  88.      $pdf->Cell(59010utf8_decode('Pág. ').$pdf->PageNo().' de {nb}',0,0,'R');
  89.      $pdf->SetY(-25);
  90.      $pdf->Cell(14010utf8_decode('Sistema Gestor OuroRio © 2021 '),0,0,'R');
  91.      $pdf->SetY(-25);
  92.      $pdf->Cell(340,10,utf8_decode("Impresso em ".date("d/m/Y H:i:s"."")),0,1,'R');
  93.      $pdf->SetY(-25);
  94.      $pdf->Cell(420,10,utf8_decode(" Por ".TSession::getValue('username')),0,1,'R'); //nome do usuário 
  95.      // fim do rodapé
  96.     
  97.    
  98.      $file="app/output/Recibo - ".$data->loja_txt.".pdf"
  99.     
  100.      if (!file_exists($file) OR is_writable($file))
  101.      {
  102.      $pdf->save($file);
  103.    
  104.      $window TWindow::create($data->loja_txt0.80.8);
  105.                 $object = new TElement('object');
  106.                 $object->data  $file;
  107.                 $object->type  'application/pdf';
  108.                 $object->style "width: 100%; height:calc(100% - 10px)";
  109.                 $window->add($object);
  110.                 $window->show();
  111.                 
  112.      }
  113.      else
  114.      {
  115.      throw new Exception(_t('Permission denied') . ': ' $file);
  116.      } 
  117.     
  118.      TToast::show('success','RECIBO GERADO COM SUCESSO!''top left''fas fa-check');
  119.     
  120.      TTransaction::close();
  121.      AdiantiCoreApplication::loadPage'ComprasList' );
  122.      exit;
  123.     
  124.      }
  125. ?>
MC

Muitas vezes colhi ajuda nesse grupo, é muito importante para apoio.
Sou principiante no Adianti, mais confesso, a ferramenta é extremamente eficiente.
A equipe muito competente, haja visto que fiz um treinamento com eles, na sede em Lajeado-RS.
E o grupo disponibiliza nesse fórum, muitos compartilhamentos de soluções para nossas duvidas.

NÃO SOMOS CONCORRENTES, SOMOS PARCEIROS.