Lançado Adianti Framework 7.6!
Clique aqui para saber mais
Exibir todos itens do pedido no PDF Estou implementando esse relatório, não estou conseguindo fazer aparecer todos os itens do pedido. Só exibe um item. ...
A
Exibir todos itens do pedido no PDF  
Estou implementando esse relatório, não estou conseguindo fazer aparecer todos os itens do pedido. Só exibe um item.

  1. <?php
  2. class PDFDesignNFEView extends TPage
  3. {
  4.     private $form// form
  5.     
  6.     /**
  7.      * Class constructor
  8.      */
  9.     function __construct()
  10.     {
  11.         parent::__construct();
  12.         
  13.         // creates the form and a inner table
  14.         $this->form = new TForm('form_pdf_nfe');
  15.         $table = new TTable;
  16.         $this->form->add($table);
  17.         // creates an action button
  18.         $save_button = new TButton('Generate');
  19.         $save_button->setAction(new TAction(array($this'onGenerate')), 'Gerar');
  20.         $save_button->setImage('fa:download blue');
  21.         // add a row for the form action
  22.         $table->addRowSet($save_button);
  23.         // define wich are the form fields
  24.         $this->form->setFields(array($save_button));
  25.         
  26.         // wrap the page content using vertical box
  27.         $vbox = new TVBox;
  28.         $vbox->style 'width: 100%';
  29.         $vbox->add(new TXMLBreadCrumb('menu.xml'__CLASS__));
  30.         $vbox->add($this->form);
  31.         parent::add($vbox);
  32.     }
  33.     /**
  34.      * method onGenerate()
  35.      * Executed whenever the user clicks at the generate button
  36.      */
  37.     function onGenerate()
  38.     {
  39.         try
  40.         {
  41.             // open a transaction with database 'samples'
  42.             TTransaction::open('banco');
  43.             
  44.             $pedidos= new Pedidos(10);
  45.             $cliente= new Cliente($pedidos->COD_CLI);
  46.             $transp= new Transportadora($pedidos->COD_TRA);
  47.       
  48.             $designer = new TPDFDesigner;
  49.             $designer->fromXml('app/reports/nfe.pdf.xml');
  50.             $designer->generate();
  51.             
  52.             $fill TRUE;
  53.             $designer->gotoAnchorXY('details');
  54.             $designer->SetFont('Arial'''10);
  55.             $designer->setFillColorRGB'#F9F9FF' );
  56.             
  57.             $designer->SetFont('Arial''B'8);
  58.             $designer->setFontColorRGB'#4C4491' );
  59.             $designer->writeAtAnchor('tipo_emissao',   $pedidos->TIPO_EMISSAO);
  60.             $designer->writeAtAnchor('for_ie',        '23234234234');
  61.             $designer->writeAtAnchor('for_cnpj',      '001.111.222.0001/00');
  62.             $designer->writeAtAnchor('nome',          utf8_decode($cliente->NOME_CLI));
  63.             $designer->writeAtAnchor('endereco',      utf8_decode($cliente->ENDCOB_CLI));
  64.             $designer->writeAtAnchor('bairro',        $cliente->BAICOB_CLI);
  65.             $designer->writeAtAnchor('municipio',     $cliente->CIDCOB_CLI);
  66.             $designer->writeAtAnchor('fone',          $cliente->CONTATO_CLI);
  67.             $designer->writeAtAnchor('uf',            $cliente->ESTCOB_CLI);
  68.             $designer->writeAtAnchor('ie',            '45645645656');
  69.             $designer->writeAtAnchor('cep',           $cliente->CEPCOB_CLI);
  70.             $designer->writeAtAnchor('cnpjcpf',       $cliente->CNPJ_CLI);
  71.             $designer->writeAtAnchor('dataemissao',   $pedidos->DATA);
  72.             $designer->writeAtAnchor('dataentrada',   '12/12/1912');
  73.             $designer->writeAtAnchor('datasaida',     $pedidos->DATA_ENTREGA);
  74.             $designer->writeAtAnchor('protocolo',     '1234567890');
  75.             $designer->writeAtAnchor('valor_produtos',$pedidos->VLRTOTAL);
  76.             $designer->writeAtAnchor('frete',         $pedidos->VALOR_FRETE);
  77.             $designer->writeAtAnchor('desconto',      $pedidos->DESCONTO);
  78.             $designer->writeAtAnchor('valor_nota',    $pedidos->TOTAL);
  79.             $designer->writeAtAnchor('complementares',utf8_decode($pedidos->OBS));
  80.             $designer->writeAtAnchor('cod_tra',utf8_decode($transp->NOME_TRA));
  81.             $designer->writeAtAnchor('cid_tra',utf8_decode($transp->CID_TRA));
  82.             $designer->writeAtAnchor('cnpj_tra',utf8_decode($transp->CNPJ_TRA));
  83.             $designer->writeAtAnchor('est_tra',utf8_decode($transp->EST_TRA));
  84.             $designer->writeAtAnchor('frete_conta',utf8_decode($pedidos->FRETE_CONTA));
  85.             $designer->writeAtAnchor('end_tra',utf8_decode($transp->END_TRA));
  86.             $designer->writeAtAnchor('placa',utf8_decode($transp->PLACA_TRA));
  87.             
  88.             $pedidos_list= new PedidosItens(10);
  89.             
  90.             $designer->gotoAnchorXY('details');
  91.             $designer->SetFont('Arial'''8);
  92.             $designer->Cell6210$pedidos_list->COD_PRODUTO10'C',$fill);
  93.             $designer->Cell(22210utf8_decode($pedidos_list->NOME_PRODUTO), 10'L',$fill);
  94.             $designer->Cell2610'UN'10'C');
  95.             $designer->Cell5010$pedidos_list->QUANTIDADE10'C');
  96.             $designer->Cell5010$pedidos_list->VLRUNIT10'R',$fill);
  97.             $designer->Cell5010$pedidos_list->DESCONTO10'R');
  98.             $designer->Cell5010$pedidos_list->ACRESCIMO10'R');
  99.             $designer->Cell5110$pedidos_list->VLRTOTAL10'R');          
  100.             
  101.             $file 'app/output/nfe_pdf.pdf';
  102.             
  103.             if (!file_exists($file) OR is_writable($file))
  104.             {
  105.                 $designer->save($file);
  106.                 //parent::openFile($file);
  107.                 
  108.                 $window TWindow::create(_t('Pedido'), 0.80.8);
  109.                 $object = new TElement('object');
  110.                 $object->data  $file;
  111.                 $object->type  'application/pdf';
  112.                 $object->style "width: 100%; height:calc(100% - 10px)";
  113.                 $window->add($object);
  114.                 $window->show();
  115.             }
  116.             else
  117.             {
  118.                 throw new Exception(_t('Permission denied') . ': ' $file);
  119.             }
  120.             
  121.             // close the transaction
  122.             TTransaction::close();
  123.         }
  124.         catch (Exception $e// in case of exception
  125.         {
  126.             new TMessage('error'$e->getMessage());
  127.             TTransaction::rollback();
  128.         }
  129.     }
  130.     
  131. }
  132. ?>

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


SV

Boa Noite, Amanda, tudo bem?

Imagino que você tenha que fazer um foreach para listar todos os seus produtos contidos no pedido, veja só:

Aqui:

  1. <?php
  2.             $designer->gotoAnchorXY('details');
  3.             $designer->SetFont('Arial'''8);
  4.             $designer->Cell6210$pedidos_list->COD_PRODUTO10'C',$fill);
  5.             $designer->Cell(22210utf8_decode($pedidos_list->NOME_PRODUTO), 10'L',$fill);
  6.             $designer->Cell2610'UN'10'C');
  7.             $designer->Cell5010$pedidos_list->QUANTIDADE10'C');
  8.             $designer->Cell5010$pedidos_list->VLRUNIT10'R',$fill);
  9.             $designer->Cell5010$pedidos_list->DESCONTO10'R');
  10.             $designer->Cell5010$pedidos_list->ACRESCIMO10'R');
  11.             $designer->Cell5110$pedidos_list->VLRTOTAL10'R');          
  12. ?>

Poderia ser assim:
  1. <?php
  2.     foreach ($pedidos_list as  $pedidos)
  3.    {
  4.       $designer->gotoAnchorXY('details');
  5.             $designer->SetFont('Arial'''8);
  6.             $designer->Cell6210$pedidos->COD_PRODUTO10'C',$fill);
  7.             $designer->Cell(22210utf8_decode($pedidos_list->NOME_PRODUTO), 10'L',$fill);
  8.             $designer->Cell2610'UN'10'C');
  9.             $designer->Cell5010$pedidos->QUANTIDADE10'C');
  10.             $designer->Cell5010$pedidos->VLRUNIT10'R',$fill);
  11.             $designer->Cell5010$pedidos->DESCONTO10'R');
  12.             $designer->Cell5010$pedidos->ACRESCIMO10'R');
  13.             $designer->Cell5110$pedidos->VLRTOTAL10'R');        
  14.    }
  15. ?>


No Tutor tem uns modelos bem legais, segue o link:
www.adianti.com.br/framework_files/tutor/index.php?class=HomeView&am

Depois nos diga se deu certo.

Abraços

Samuel de Vincenzo
NR

Antes de fazer o foreach que o Samuel comentou, você precisa obter os itens do pedido:
  1. <?php
  2. //$pedidos_list= new PedidosItens(10); // você fez isso, mas esse código só vai carregar o item de id = 10
  3. $pedidos_list PedidosItens::where('pedido_id','=',10)->load();// esse código vai carregar todos os itens com pedido_id = 10
  4. ?>
A

Boa tarde,
Fiz as alterações e funcionou, mas esta exibindo um item em cima do outro.

  1. <?php
  2. $fill TRUE;
  3.             $designer->gotoAnchorXY('details');
  4.             $designer->SetFont('Arial'''10);
  5.             $designer->setFillColorRGB'#F9F9FF' );
  6.             
  7.             $pedidos_list PedidosItens::where('CODIGO_PEDIDO','=',7)->load();
  8.             if ($pedidos_list)
  9.             {
  10.                 foreach ($pedidos_list as  $pedidos)
  11.                 {
  12.                     $designer->gotoAnchorXY('details');
  13.                     $designer->SetFont('Arial'''8);
  14.                     $designer->Cell6210$pedidos->COD_PRODUTO10'C',$fill);
  15.                     $designer->Cell(22210utf8_decode($pedidos->NOME_PRODUTO), 10'L',$fill);
  16.                     $designer->Cell2610'UN'10'C',$fill);
  17.                     $designer->Cell5010$pedidos->QUANTIDADE10'C',$fill);
  18.                     $designer->Cell5010$pedidos->VLRUNIT10'R',$fill);
  19.                     $designer->Cell5010$pedidos->DESCONTO10'R',$fill);
  20.                     $designer->Cell5010$pedidos->ACRESCIMO10'R',$fill);
  21.                     $designer->Cell5110$pedidos->VLRTOTAL10'R',$fill);
  22.                     $designer->Ln(12);
  23.                     
  24.                     // grid background
  25.                         $fill = !$fill;
  26.                 }          
  27.             }
  28. ?>
SV

Oi Amanda, Bom dia!

Desculpa a demora da resposta

Já tento usar :

$designer->Ln(10);

Poste o seu código completo.

Abraços

Samuel
A

Boa tarde Samuel,

Já tentei sim, e continua exibindo um item em cima do outro, esta ai o código
  1. <?php
  2. /**
  3.  * PDF Designed Customer report
  4.  *
  5.  * @version    1.0
  6.  * @package    samples
  7.  * @subpackage tutor
  8.  * @author     Pablo Dall'Oglio
  9.  * @copyright  Copyright (c) 2006 Adianti Solutions Ltd. (http://www.adianti.com.br)
  10.  * @license    http://www.adianti.com.br/framework-license
  11.  */
  12. class PDFDesignNFEView extends TPage
  13. {
  14.     private $form// form
  15.     
  16.     /**
  17.      * Class constructor
  18.      */
  19.     function __construct()
  20.     {
  21.         parent::__construct();
  22.         
  23.         // creates the form and a inner table
  24.         $this->form = new TForm('form_pdf_nfe');
  25.         $table = new TTable;
  26.         $this->form->add($table);
  27.         // creates an action button
  28.         $save_button = new TButton('Generate');
  29.         $save_button->setAction(new TAction(array($this'onGenerate')), 'Gerar');
  30.         $save_button->setImage('fa:download blue');
  31.         // add a row for the form action
  32.         $table->addRowSet($save_button);
  33.         // define wich are the form fields
  34.         $this->form->setFields(array($save_button));
  35.         
  36.         // wrap the page content using vertical box
  37.         $vbox = new TVBox;
  38.         $vbox->style 'width: 100%';
  39.         $vbox->add(new TXMLBreadCrumb('menu.xml'__CLASS__));
  40.         $vbox->add($this->form);
  41.         parent::add($vbox);
  42.     }
  43.     /**
  44.      * method onGenerate()
  45.      * Executed whenever the user clicks at the generate button
  46.      */
  47.     function onGenerate()
  48.     {
  49.         try
  50.         {
  51.             // open a transaction with database 'samples'
  52.             TTransaction::open('banco');
  53.             
  54.             $pedidos= new Pedidos(7);
  55.             $cliente= new Cliente($pedidos->COD_CLI);
  56.             $transp= new Transportadora($pedidos->COD_TRA);
  57.       
  58.             $designer = new TPDFDesigner;
  59.             $designer->fromXml('app/reports/nfe.pdf.xml');
  60.             $designer->generate();
  61.                         
  62.             $designer->SetFont('Arial''B'8);
  63.             $designer->setFontColorRGB'#4C4491' );
  64.             $designer->writeAtAnchor('tipo_emissao',   $pedidos->TIPO_EMISSAO);
  65.             $designer->writeAtAnchor('for_ie',        '23234234234');
  66.             $designer->writeAtAnchor('for_cnpj',      '001.111.222.0001/00');
  67.             $designer->writeAtAnchor('nome',          utf8_decode($cliente->NOME_CLI));
  68.             $designer->writeAtAnchor('endereco',      utf8_decode($cliente->ENDCOB_CLI));
  69.             $designer->writeAtAnchor('bairro',        $cliente->BAICOB_CLI);
  70.             $designer->writeAtAnchor('municipio',     $cliente->CIDCOB_CLI);
  71.             $designer->writeAtAnchor('fone',          $cliente->CONTATO_CLI);
  72.             $designer->writeAtAnchor('uf',            $cliente->ESTCOB_CLI);
  73.             $designer->writeAtAnchor('ie',            '45645645656');
  74.             $designer->writeAtAnchor('cep',           $cliente->CEPCOB_CLI);
  75.             $designer->writeAtAnchor('cnpjcpf',       $cliente->CNPJ_CLI);
  76.             $designer->writeAtAnchor('dataemissao',   $pedidos->DATA);
  77.             $designer->writeAtAnchor('dataentrada',   '12/12/1912');
  78.             $designer->writeAtAnchor('datasaida',     $pedidos->DATA_ENTREGA);
  79.             $designer->writeAtAnchor('protocolo',     '1234567890');
  80.             $designer->writeAtAnchor('valor_produtos',$pedidos->VLRTOTAL);
  81.             $designer->writeAtAnchor('frete',         $pedidos->VALOR_FRETE);
  82.             $designer->writeAtAnchor('desconto',      $pedidos->DESCONTO);
  83.             $designer->writeAtAnchor('valor_nota',    $pedidos->TOTAL);
  84.             $designer->writeAtAnchor('complementares',utf8_decode($pedidos->OBS));
  85.             $designer->writeAtAnchor('cod_tra',utf8_decode($transp->NOME_TRA));
  86.             $designer->writeAtAnchor('cid_tra',utf8_decode($transp->CID_TRA));
  87.             $designer->writeAtAnchor('cnpj_tra',utf8_decode($transp->CNPJ_TRA));
  88.             $designer->writeAtAnchor('est_tra',utf8_decode($transp->EST_TRA));
  89.             $designer->writeAtAnchor('uf_placa_tra',utf8_decode($transp->UF_PLACA_TRA));
  90.             $designer->writeAtAnchor('frete_conta',utf8_decode($pedidos->FRETE_CONTA));
  91.             $designer->writeAtAnchor('end_tra',utf8_decode($transp->END_TRA));
  92.             $designer->writeAtAnchor('placa',utf8_decode($transp->PLACA_TRA));
  93.             
  94.             $fill TRUE;
  95.             $designer->gotoAnchorXY('details');
  96.             $designer->SetFont('Arial'''10);
  97.             $designer->setFillColorRGB'#F9F9FF' );
  98.             
  99.             $pedidos_list PedidosItens::where('CODIGO_PEDIDO','=',7)->load();
  100.             if ($pedidos_list)
  101.             {
  102.                 foreach ($pedidos_list as  $pedidos)
  103.                 {
  104.                                       
  105.                     $designer->gotoAnchorXY('details');
  106.                     $designer->SetFont('Arial'''8);
  107.                     $designer->Cell6210$pedidos->COD_PRODUTO10'C',$fill);
  108.                     $designer->Cell(22210utf8_decode($pedidos->NOME_PRODUTO), 10'L',$fill);
  109.                     $designer->Cell2610'UN'10'C',$fill);
  110.                     $designer->Cell5010$pedidos->QUANTIDADE10'C',$fill);
  111.                     $designer->Cell5010$pedidos->VLRUNIT10'R',$fill);
  112.                     $designer->Cell5010$pedidos->DESCONTO10'R',$fill);
  113.                     $designer->Cell5010$pedidos->ACRESCIMO10'R',$fill);
  114.                     $designer->Cell5110$pedidos->VLRTOTAL10'R',$fill);
  115.                     $designer->Ln(10);
  116.                     // grid background
  117.                     $fill = !$fill;
  118.                 }          
  119.             }
  120.             
  121.             $file 'app/output/nfe_pdf.pdf';
  122.             
  123.             if (!file_exists($file) OR is_writable($file))
  124.             {
  125.                 $designer->save($file);
  126.                 //parent::openFile($file);
  127.                 
  128.                 $window TWindow::create(_t('Pedido'), 0.80.8);
  129.                 $object = new TElement('object');
  130.                 $object->data  $file;
  131.                 $object->type  'application/pdf';
  132.                 $object->style "width: 100%; height:calc(100% - 10px)";
  133.                 $window->add($object);
  134.                 $window->show();
  135.             }
  136.             else
  137.             {
  138.                 throw new Exception(_t('Permission denied') . ': ' $file);
  139.             }
  140.             
  141.             // close the transaction
  142.             TTransaction::close();
  143.         }
  144.         catch (Exception $e// in case of exception
  145.         {
  146.             new TMessage('error'$e->getMessage());
  147.             TTransaction::rollback();
  148.         }
  149.     }
  150.     
  151. }
  152. ?>
NR

No começo do foreach você está definindo o X e Y sempre na mesma posição:
  1. <?php
  2. $designer->gotoAnchorXY('details');
  3. ?>

Nesse caso teria que definir somente o X, pois o Y vai variar de acordo com a quantidade de itens
  1. <?php
  2. $designer->gotoAnchorX('details');
  3. ?>
A

Fiz a alteração, coloquei só o X, e continua exibindo um item em cima do outro.
  1. <?php
  2. $fill TRUE;
  3.             $designer->gotoAnchorXY('details');
  4.             $designer->SetFont('Arial'''10);
  5.             $designer->setFillColorRGB'#F9F9FF' );
  6.             
  7.             $pedidos_list PedidosItens::where('CODIGO_PEDIDO','=',7)->load();
  8.             if ($pedidos_list)
  9.             {
  10.                 foreach ($pedidos_list as  $pedidos)
  11.                 {
  12.                                       
  13.                     $designer->gotoAnchorX('details');
  14.                     $designer->SetFont('Arial'''8);
  15.                     $designer->Cell6210$pedidos->COD_PRODUTO10'C',$fill);
  16.                     $designer->Cell(22210utf8_decode($pedidos->NOME_PRODUTO), 10'L',$fill);
  17.                     $designer->Cell2610'UN'10'C',$fill);
  18.                     $designer->Cell5010$pedidos->QUANTIDADE10'C',$fill);
  19.                     $designer->Cell5010$pedidos->VLRUNIT10'R',$fill);
  20.                     $designer->Cell5010$pedidos->DESCONTO10'R',$fill);
  21.                     $designer->Cell5010$pedidos->ACRESCIMO10'R',$fill);
  22.                     $designer->Cell5110$pedidos->VLRTOTAL10'R',$fill);
  23.                     $designer->Ln(10);
  24.                     
  25.                     // grid background
  26.                     $fill = !$fill;
  27.                 }          
  28.             }
  29. ?>
A

Consegui achar o erro !! Agora funcionou certinho!

Muito obrigada Nataniel e Samuel pela ajuda!
SV

Olá Amanda, Boa Noite!

Eu que agradeço por compartilhar conosco suas dúvidas.

A propósito nos conte como você conseguiu resolver, assim fica registrado e conseguimos ajudar outras pessoas que podem ter a mesma dúvida. =)


Conte conosco sempre!

Abraços

Samuel de Vincenzo