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.
- <?php
- class PDFDesignNFEView extends TPage
- {
- private $form; // form
- /**
- * Class constructor
- */
- function __construct()
- {
- parent::__construct();
- // creates the form and a inner table
- $this->form = new TForm('form_pdf_nfe');
- $table = new TTable;
- $this->form->add($table);
- // creates an action button
- $save_button = new TButton('Generate');
- $save_button->setAction(new TAction(array($this, 'onGenerate')), 'Gerar');
- $save_button->setImage('fa:download blue');
- // add a row for the form action
- $table->addRowSet($save_button);
- // define wich are the form fields
- $this->form->setFields(array($save_button));
- // wrap the page content using vertical box
- $vbox = new TVBox;
- $vbox->style = 'width: 100%';
- $vbox->add(new TXMLBreadCrumb('menu.xml', __CLASS__));
- $vbox->add($this->form);
- parent::add($vbox);
- }
- /**
- * method onGenerate()
- * Executed whenever the user clicks at the generate button
- */
- function onGenerate()
- {
- try
- {
- // open a transaction with database 'samples'
- TTransaction::open('banco');
- $pedidos= new Pedidos(10);
- $cliente= new Cliente($pedidos->COD_CLI);
- $transp= new Transportadora($pedidos->COD_TRA);
- $designer = new TPDFDesigner;
- $designer->fromXml('app/reports/nfe.pdf.xml');
- $designer->generate();
- $fill = TRUE;
- $designer->gotoAnchorXY('details');
- $designer->SetFont('Arial', '', 10);
- $designer->setFillColorRGB( '#F9F9FF' );
- $designer->SetFont('Arial', 'B', 8);
- $designer->setFontColorRGB( '#4C4491' );
- $designer->writeAtAnchor('tipo_emissao', $pedidos->TIPO_EMISSAO);
- $designer->writeAtAnchor('for_ie', '23234234234');
- $designer->writeAtAnchor('for_cnpj', '001.111.222.0001/00');
- $designer->writeAtAnchor('nome', utf8_decode($cliente->NOME_CLI));
- $designer->writeAtAnchor('endereco', utf8_decode($cliente->ENDCOB_CLI));
- $designer->writeAtAnchor('bairro', $cliente->BAICOB_CLI);
- $designer->writeAtAnchor('municipio', $cliente->CIDCOB_CLI);
- $designer->writeAtAnchor('fone', $cliente->CONTATO_CLI);
- $designer->writeAtAnchor('uf', $cliente->ESTCOB_CLI);
- $designer->writeAtAnchor('ie', '45645645656');
- $designer->writeAtAnchor('cep', $cliente->CEPCOB_CLI);
- $designer->writeAtAnchor('cnpjcpf', $cliente->CNPJ_CLI);
- $designer->writeAtAnchor('dataemissao', $pedidos->DATA);
- $designer->writeAtAnchor('dataentrada', '12/12/1912');
- $designer->writeAtAnchor('datasaida', $pedidos->DATA_ENTREGA);
- $designer->writeAtAnchor('protocolo', '1234567890');
- $designer->writeAtAnchor('valor_produtos',$pedidos->VLRTOTAL);
- $designer->writeAtAnchor('frete', $pedidos->VALOR_FRETE);
- $designer->writeAtAnchor('desconto', $pedidos->DESCONTO);
- $designer->writeAtAnchor('valor_nota', $pedidos->TOTAL);
- $designer->writeAtAnchor('complementares',utf8_decode($pedidos->OBS));
- $designer->writeAtAnchor('cod_tra',utf8_decode($transp->NOME_TRA));
- $designer->writeAtAnchor('cid_tra',utf8_decode($transp->CID_TRA));
- $designer->writeAtAnchor('cnpj_tra',utf8_decode($transp->CNPJ_TRA));
- $designer->writeAtAnchor('est_tra',utf8_decode($transp->EST_TRA));
- $designer->writeAtAnchor('frete_conta',utf8_decode($pedidos->FRETE_CONTA));
- $designer->writeAtAnchor('end_tra',utf8_decode($transp->END_TRA));
- $designer->writeAtAnchor('placa',utf8_decode($transp->PLACA_TRA));
- $pedidos_list= new PedidosItens(10);
- $designer->gotoAnchorXY('details');
- $designer->SetFont('Arial', '', 8);
- $designer->Cell( 62, 10, $pedidos_list->COD_PRODUTO, 1, 0, 'C',$fill);
- $designer->Cell(222, 10, utf8_decode($pedidos_list->NOME_PRODUTO), 1, 0, 'L',$fill);
- $designer->Cell( 26, 10, 'UN', 1, 0, 'C');
- $designer->Cell( 50, 10, $pedidos_list->QUANTIDADE, 1, 0, 'C');
- $designer->Cell( 50, 10, $pedidos_list->VLRUNIT, 1, 0, 'R',$fill);
- $designer->Cell( 50, 10, $pedidos_list->DESCONTO, 1, 0, 'R');
- $designer->Cell( 50, 10, $pedidos_list->ACRESCIMO, 1, 0, 'R');
- $designer->Cell( 51, 10, $pedidos_list->VLRTOTAL, 1, 0, 'R');
- $file = 'app/output/nfe_pdf.pdf';
- if (!file_exists($file) OR is_writable($file))
- {
- $designer->save($file);
- //parent::openFile($file);
- $window = TWindow::create(_t('Pedido'), 0.8, 0.8);
- $object = new TElement('object');
- $object->data = $file;
- $object->type = 'application/pdf';
- $object->style = "width: 100%; height:calc(100% - 10px)";
- $window->add($object);
- $window->show();
- }
- else
- {
- throw new Exception(_t('Permission denied') . ': ' . $file);
- }
- // close the transaction
- TTransaction::close();
- }
- catch (Exception $e) // in case of exception
- {
- new TMessage('error', $e->getMessage());
- TTransaction::rollback();
- }
- }
- }
- ?>
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:
Poderia ser assim:
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
Antes de fazer o foreach que o Samuel comentou, você precisa obter os itens do pedido:
Boa tarde,
Fiz as alterações e funcionou, mas esta exibindo um item em cima do outro.
Oi Amanda, Bom dia!
Desculpa a demora da resposta
Já tento usar :
$designer->Ln(10);
Poste o seu código completo.
Abraços
Samuel
Boa tarde Samuel,
Já tentei sim, e continua exibindo um item em cima do outro, esta ai o código
No começo do foreach você está definindo o X e Y sempre na mesma posição:
Nesse caso teria que definir somente o X, pois o Y vai variar de acordo com a quantidade de itens
Fiz a alteração, coloquei só o X, e continua exibindo um item em cima do outro.
Consegui achar o erro !! Agora funcionou certinho!
Muito obrigada Nataniel e Samuel pela ajuda!
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