Substituir código pela descrição do campo no Relatorio PDF Pessoal, Como substituir no relatório PDF o campo código pela descrição do campo....
ST
Substituir código pela descrição do campo no Relatorio PDF  
Pessoal,
Como substituir no relatório PDF o campo código pela descrição do campo.

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


NR

Sebastião, é o mesmo caso que seu outro tópico:
https://www.adianti.com.br/forum/pt/view_3622?mostrar-campo-descricao-de-outra-t

Se já houver o relacionamento entre os modelos, basta referenciá-lo:
Ex pessoa e cidade
 
  1. <?php
  2. $pessoa = new Pessoa(1);
  3. echo $pessoa->cidade->descricao;
  4. ?>
ST

Nataniel,

Não estou conseguindo, veja o que pode estar errado no código:

Relatório:

 
  1. <?php
  2. /**
  3. * PerdcompReport Report
  4. * @author <your name here>
  5. */
  6. class PerdcompReport extends TPage
  7. {
  8. protected $form; // form
  9. protected $notebook;
  10. /**
  11. * Class constructor
  12. * Creates the page and the registration form
  13. */
  14. function __construct()
  15. {
  16. parent::__construct();
  17. // creates the form
  18. $this->form = new TQuickForm('form_Perdcomp_report');
  19. $this->form->class = 'tform'; // change CSS class
  20. // $this->form = new BootstrapFormWrapper($this->form);
  21. $this->form->style = 'display: table;width:100%'; // change style
  22. // define the form title
  23. $this->form->setFormTitle('Filtro Relatório Perdcomp');
  24. // create the form fields
  25. // $perdcomp_id = new TEntry('perdcomp_id');
  26. $DataCriacao = new TDate('DataCriacao');
  27. $DataTransmissao = new TDate('DataTransmissao');
  28. $Nr_Perdcomp = new TEntry('Nr_Perdcomp');
  29. $TipoDocumento_id = new ">TDBSeekButton('TipoDocumento_id', 'perdcomp', $this->form->getName(), 'TipoDocumento', 'TipoDocumentoDescricao', 'TipoDocumento_id', 'tipo_documento');
  30. $TipoDocumentoDescricao = new TEntry('tipo_documento');
  31. $TipoCredito_id = new ">TDBSeekButton('TipoCredito_id', 'perdcomp', $this->form->getName(), 'TipoCredito', 'TipoCreditoDescricao', 'TipoCredito_id', 'tipo_credito');
  32. $TipoCreditoDescricao = new TEntry('tipo_credito');
  33. $OrigemDocumento_id = new ">TDBSeekButton('OrigemDocumento_id', 'perdcomp', $this->form->getName(), 'OrigemDocumento', 'OrigemDocumentoDescricao', 'OrigemDocumento_id', 'origem_documento');
  34. $OrigemDocumentoDescricao = new TEntry('origem_documento');
  35. $TipoImposto_id = new ">TDBSeekButton('TipoImposto_id', 'perdcomp', $this->form->getName(), 'TipoImposto', 'TipoImpostoDescricao', 'TipoImposto_id', 'tipo_imposto');
  36. $TipoImpostoDescricao = new TEntry('tipo_imposto');
  37. $TipoSituacao_id = new ">TDBSeekButton('TipoSituacao_id', 'perdcomp', $this->form->getName(), 'TipoSituacao', 'TipoSituacaoDescricao', 'TipoSituacao_id', 'tipo_situacao');
  38. $TipoSituacaoDescricao = new TEntry('tipo_situacao');
  39. $Exercicio = new TEntry('Exercicio');
  40. $output_type = new TRadioGroup('output_type');
  41. $TipoDocumentoDescricao->setEditable(FALSE);
  42. $TipoDocumento_id->setSize('40');
  43. $TipoDocumentoDescricao->setSize('500');
  44. $TipoCreditoDescricao->setEditable(FALSE);
  45. $TipoCredito_id->setSize('40');
  46. $TipoCreditoDescricao->setSize('500');
  47. $OrigemDocumentoDescricao->setEditable(FALSE);
  48. $OrigemDocumento_id->setSize('40');
  49. $OrigemDocumentoDescricao->setSize('500');
  50. $TipoImpostoDescricao->setEditable(FALSE);
  51. $TipoImposto_id->setSize('40');
  52. $TipoImpostoDescricao->setSize('500');
  53. $TipoSituacaoDescricao->setEditable(FALSE);
  54. $TipoSituacao_id->setSize('40');
  55. $TipoSituacaoDescricao->setSize('500');
  56. // add the fields
  57. // $this->form->addQuickField('Código:', $perdcomp_id, 80 );
  58. $this->form->addQuickField('Data Criação:', $DataCriacao, 80 );
  59. $this->form->addQuickField('Data Transmissão:', $DataTransmissao, 80 );
  60. $this->form->addQuickField('Nº Perdcomp:', $Nr_Perdcomp, 500 );
  61. $this->form->addQuickFields('Tipo Documento:', [ $TipoDocumento_id, $TipoDocumentoDescricao ] );
  62. $this->form->addQuickFields('Tipo Crédito:', [ $TipoCredito_id, $TipoCreditoDescricao] );
  63. $this->form->addQuickFields('Origem Documento:', [ $OrigemDocumento_id, $OrigemDocumentoDescricao ] );
  64. $this->form->addQuickFields('Imposto:', [ $TipoImposto_id, $TipoImpostoDescricao] );
  65. $this->form->addQuickFields('Tipo Situação:', [ $TipoSituacao_id, $TipoSituacaoDescricao] );
  66. $this->form->addQuickField('Exercício', $Exercicio, 100 );
  67. $this->form->addQuickField('Output', $output_type, 100 , new TRequiredValidator);
  68. $output_type->addItems(array('html'=>'HTML', 'pdf'=>'PDF'));;
  69. $output_type->setValue('pdf');
  70. $output_type->setLayout('horizontal');
  71. // add the action button
  72. $this->form->addQuickAction(_t('Generate'), new TAction(array($this, 'onGenerate')), 'fa:cog blue');
  73. // vertical box container
  74. $container = new TVBox;
  75. $container->style = 'width: 101%';
  76. // $container->add(new TXMLBreadCrumb('menu.xml', __CLASS__));
  77. $container->add($this->form);
  78. //$container->add(TPanelGroup::pack('Perdcomp', $this->form));
  79. parent::add($container);
  80. }
  81. /**
  82. * Generate the report
  83. */
  84. function onGenerate()
  85. {
  86. try
  87. {
  88. // open a transaction with database 'perdcomp'
  89. TTransaction::open('perdcomp');
  90. // get the form data into an active record
  91. $formdata = $this->form->getData();
  92. $repository = new TRepository('Perdcomp');
  93. $criteria = new TCriteria;
  94. $criteria->add(new TFilter('system_unit_id','=',TSession::getValue('userunitid')));
  95. if ($formdata->perdcomp_id)
  96. {
  97. $criteria->add(new TFilter('perdcomp_id', 'like', "%{$formdata->perdcomp_id}%"));
  98. }
  99. if ($formdata->DataCriacao)
  100. {
  101. $criteria->add(new TFilter('DataCriacao', 'like', "%{$formdata->DataCriacao}%"));
  102. }
  103. if ($formdata->DataTransmissao)
  104. {
  105. $criteria->add(new TFilter('DataTransmissao', 'like', "%{$formdata->DataTransmissao}%"));
  106. }
  107. if ($formdata->Nr_Perdcomp)
  108. {
  109. $criteria->add(new TFilter('Nr_Perdcomp', 'like', "%{$formdata->Nr_Perdcomp}%"));
  110. }
  111. if ($formdata->TipoDocumento_id)
  112. {
  113. $criteria->add(new TFilter('TipoDocumento_id', 'like', "%{$formdata->TipoDocumento_id}%"));
  114. }
  115. if ($formdata->OrigemDocumento_id)
  116. {
  117. $criteria->add(new TFilter('OrigemDocumento_id', 'like', "%{$formdata->OrigemDocumento_id}%"));
  118. }
  119. if ($formdata->TipoCredito_id)
  120. {
  121. $criteria->add(new TFilter('TipoCredito_id', 'like', "%{$formdata->TipoCredito_id}%"));
  122. }
  123. if ($formdata->Exercicio)
  124. {
  125. $criteria->add(new TFilter('Exercicio', 'like', "%{$formdata->Exercicio}%"));
  126. }
  127. if ($formdata->TipoImposto_id)
  128. {
  129. $criteria->add(new TFilter('TipoImposto_id', 'like', "%{$formdata->TipoImposto_id}%"));
  130. }
  131. if ($formdata->PerdcompOriginal)
  132. {
  133. $criteria->add(new TFilter('PerdcompOriginal', 'like', "%{$formdata->PerdcompOriginal}%"));
  134. }
  135. if ($formdata->TipoSituacao_id)
  136. {
  137. $criteria->add(new TFilter('TipoSituacao_id', 'like', "%{$formdata->TipoSituacao_id}%"));
  138. }
  139. $objects = $repository->load($criteria, FALSE);
  140. $format = $formdata->output_type;
  141. if ($objects)
  142. {
  143. $widths = array(50,50,50,100,100,50,50,50,50,50,50,50,50,100,50,100,50,50,50,50,50,50,50,50,50,50,50,100);
  144. switch ($format)
  145. {
  146. case 'html':
  147. $tr = new TTableWriterHTML($widths);
  148. break;
  149. case 'pdf':
  150. $tr = new TTableWriterPDF($widths);
  151. break;
  152. case 'rtf':
  153. if (!class_exists('PHPRtfLite_Autoloader'))
  154. {
  155. PHPRtfLite::registerAutoloader();
  156. }
  157. $tr = new TTableWriterRTF($widths);
  158. break;
  159. }
  160. // create the document styles
  161. $tr->addStyle('title', 'Arial', '10', 'B', '#ffffff', '#A3A3A3');
  162. $tr->addStyle('datap', 'Arial', '10', '', '#000000', '#EEEEEE');
  163. $tr->addStyle('datai', 'Arial', '10', '', '#000000', '#ffffff');
  164. $tr->addStyle('header', 'Arial', '16', '', '#ffffff', '#6B6B6B');
  165. $tr->addStyle('footer', 'Times', '10', 'I', '#000000', '#A3A3A3');
  166. // add a header row
  167. $tr->addRow();
  168. $tr->addCell('Perdcomp', 'center', 'header', 28);
  169. // add titles row
  170. $tr->addRow();
  171. $tr->addCell('Código', 'right', 'title');
  172. $tr->addCell('Data Criação', 'left', 'title');
  173. $tr->addCell('Data Transmissão', 'left', 'title');
  174. $tr->addCell('Sequencial', 'left', 'title');
  175. $tr->addCell('Nº Perdcomp', 'left', 'title');
  176. $tr->addCell('Tipo Documento', 'right', 'title');
  177. $tr->addCell('Origem Documento', 'right', 'title');
  178. $tr->addCell('Tipo Credito', 'right', 'title');
  179. $tr->addCell('Saldo Declarado', 'right', 'title');
  180. $tr->addCell('Exercicio', 'right', 'title');
  181. $tr->addCell('Tipo Iimposto', 'right', 'title');
  182. $tr->addCell('Valorcompensado', 'right', 'title');
  183. // $tr->addCell('Competencia', 'left', 'title');
  184. $tr->addCell('Perdcomp Original', 'left', 'title');
  185. $tr->addCell('Tipo Situacao', 'right', 'title');
  186. $tr->addCell('Cancelamento', 'left', 'title');
  187. $tr->addCell('Credito Original Inicial', 'right', 'title');
  188. $tr->addCell('Credito Original Utilizado Compensações', 'right', 'title');
  189. $tr->addCell('Credito Original Disponível', 'right', 'title');
  190. $tr->addCell('Crédito Original Transmissão', 'right', 'title');
  191. $tr->addCell('Selic Acumulada', 'right', 'title');
  192. $tr->addCell('Crédito Atualizado', 'right', 'title');
  193. $tr->addCell('Débitos Documento', 'right', 'title');
  194. $tr->addCell('Credito Original Utilizado Documento', 'right', 'title');
  195. $tr->addCell('Saldo Crédito Original', 'right', 'title');
  196. // controls the background filling
  197. $colour= FALSE;
  198. // data rows
  199. foreach ($objects as $object)
  200. {
  201. $style = $colour ? 'datap' : 'datai';
  202. $tr->addRow();
  203. $tr->addCell($object->perdcomp_id, 'right', $style);
  204. $tr->addCell($object->DataCriacao, 'left', $style);
  205. $tr->addCell($object->DataTransmissao, 'left', $style);
  206. $tr->addCell($object->Sequencial, 'left', $style);
  207. $tr->addCell($object->Nr_Perdcomp, 'left', $style);
  208. $tr->addCell($object->TipoDocumento_id, 'right', $style);
  209. $tr->addCell($object->OrigemDocumento_id, 'right', $style);
  210. $tr->addCell($object->TipoCredito_id, 'right', $style);
  211. $tr->addCell($object->SaldoDeclarado, 'right', $style);
  212. $tr->addCell($object->Exercicio, 'right', $style);
  213. $tr->addCell($object->TipoImposto_id, 'right', $style);
  214. $tr->addCell($object->ValorCompensado, 'right', $style);
  215. //$tr->addCell($object->Competencia, 'left', $style);
  216. $tr->addCell($object->PerdcompOriginal, 'left', $style);
  217. $tr->addCell($object->TipoServido_id, 'right', $style);
  218. $tr->addCell($object->Cancelamento, 'left', $style);
  219. $tr->addCell($object->CreditoOriginalInicial, 'right', $style);
  220. $tr->addCell($object->CreditoOriginalUtilizadoCompensacoes, 'right', $style);
  221. $tr->addCell($object->CreditoOriginalDisponivel, 'right', $style);
  222. $tr->addCell($object->CreditoOriginalTransmissao, 'right', $style);
  223. $tr->addCell($object->SelicAcumulada, 'right', $style);
  224. $tr->addCell($object->CreditoAtualizado, 'right', $style);
  225. $tr->addCell($object->DebitosDocumento, 'right', $style);
  226. $tr->addCell($object->CreditoOriginalUtilizadoDocumento, 'right', $style);
  227. $tr->addCell($object->SaldoCreditoOriginal, 'right', $style);
  228. $colour = !$colour;
  229. }
  230. // footer row
  231. $tr->addRow();
  232. $tr->addCell(date('Y-m-d h:i:s'), 'center', 'footer', 28);
  233. // stores the file
  234. if (!file_exists("app/output/Perdcomp.{$format}") OR is_writable("app/output/Perdcomp.{$format}"))
  235. {
  236. $tr->save("app/output/Perdcomp.{$format}");
  237. }
  238. else
  239. {
  240. throw new Exception(_t('Permission denied') . ': ' . "app/output/Perdcomp.{$format}");
  241. }
  242. // open the report file
  243. parent::openFile("app/output/Perdcomp.{$format}");
  244. // shows the success message
  245. new TMessage('info', 'Relatório Gerado. Por favor, habilite o popups.');
  246. }
  247. else
  248. {
  249. new TMessage('info', 'Não existe registro para a consulta');
  250. }
  251. // fill the form with the active record data
  252. $this->form->setData($formdata);
  253. // close the transaction
  254. TTransaction::close();
  255. }
  256. catch (Exception $e) // in case of exception
  257. {
  258. // shows the exception error message
  259. new TMessage('error', '<b>Error</b> ' . $e->getMessage());
  260. // undo all pending operations
  261. TTransaction::rollback();
  262. }
  263. }
  264. }
  265. Modelo:
 
  1. <?php
  2. /**
  3. * Perdcomp Active Record
  4. * @author <your-name-here>
  5. */
  6. class Perdcomp extends TRecord
  7. {
  8. const TABLENAME = 'perdcomp';
  9. const PRIMARYKEY= 'perdcomp_id';
  10. const IDPOLICY = 'max'; // {max, serial}
  11. private $origem_documento;
  12. private $tipo_credito;
  13. private $tipo_documento;
  14. private $tipo_imposto;
  15. private $tipo_situacao;
  16. private $nrperdcomp;
  17. private $system_unit;
  18. /**
  19. * Constructor method
  20. */
  21. public function __construct($id = NULL, $callObjectLoad = TRUE)
  22. {
  23. parent::__construct($id, $callObjectLoad);
  24. parent::addAttribute('DataCriacao');
  25. parent::addAttribute('DataTransmissao');
  26. parent::addAttribute('Sequencial');
  27. parent::addAttribute('Nr_Perdcomp');
  28. parent::addAttribute('TipoDocumento_id');
  29. parent::addAttribute('OrigemDocumento_id');
  30. parent::addAttribute('TipoCredito_id');
  31. parent::addAttribute('SaldoDeclarado');
  32. parent::addAttribute('Exercicio');
  33. parent::addAttribute('TipoImposto_id');
  34. parent::addAttribute('ValorCompensado');
  35. parent::addAttribute('Competencia');
  36. parent::addAttribute('PerdcompOriginal');
  37. parent::addAttribute('TipoSituacao_id');
  38. parent::addAttribute('Cancelamento');
  39. parent::addAttribute('CreditoOriginalInicial');
  40. parent::addAttribute('CreditoOriginalUtilizadoCompensacoes');
  41. parent::addAttribute('CreditoOriginalDisponivel');
  42. parent::addAttribute('CreditoOriginalTransmissao');
  43. parent::addAttribute('SelicAcumulada');
  44. parent::addAttribute('CreditoAtualizado');
  45. parent::addAttribute('DebitosDocumento');
  46. parent::addAttribute('CreditoOriginalUtilizadoDocumento');
  47. parent::addAttribute('SaldoCreditoOriginal');
  48. parent::addAttribute('system_unit_id');
  49. parent::addAttribute('system_user_id');
  50. parent::addAttribute('Ged');
  51. }
  52. public function get_tipo_credito()
  53. {
  54. if (empty($this->tipo_credito))
  55. $this->tipo_credito = new TipoCredito($this->TipoCredito_id);
  56. return $this->tipo_credito->TipoCreditoDescricao;
  57. }
  58. public function get_tipo_documento()
  59. {
  60. if (empty($this->tipo_documento))
  61. $this->tipo_documento = new TipoDocumento($this->TipoDocumento_id);
  62. return $this->tipo_documento->TipoDocumentoDescricao;
  63. }
  64. public function get_origem_documento()
  65. {
  66. if (empty($this->origem_documento))
  67. $this->origem_documento = new OrigemDocumento($this->OrigemDocumento_id);
  68. return $this->origem_documento->OrigemDocumentoDescricao;
  69. }
  70. public function get_tipo_imposto()
  71. {
  72. if (empty($this->tipo_imposto))
  73. $this->tipo_imposto = new TipoImposto($this->TipoImposto_id);
  74. return $this->tipo_imposto->TipoImpostoDescricao;
  75. }
  76. public function get_tipo_situacao()
  77. {
  78. if (empty($this->tipo_situacao))
  79. $this->tipo_situacao = new TipoSituacao($this->TipoSituacao_id);
  80. return $this->tipo_situacao->TipoSituacaoDescricao;
  81. }
  82. public function get_nrperdcomp()
  83. {
  84. if (empty($this->nrperdcomp))
  85. $this->nrperdcomp = new Perdcomp($this->perdcomp_id);
  86. return $this->nrperdcomp->Nr_Perdcomp;
  87. }
  88. public function get_system_unit()
  89. {
  90. if (empty($this->system_unit))
  91. $this->system_unit = new SystemUser($this->system_unit_id);
  92. return $this->system_unit;
  93. }
  94. }
  95. </your>
ST

Nataniel,
Graças a suas orientações o problema foi resolvido.

Agora poderia me orientar como formatar datas e valores com casas decimais no relatório PDF.
ST

Nataniel,
Obrigado por sua ajuda, este problema foi resolvido.
Tenho ainda as seguintes dúvidas:
1. como formatar data e valores;
2. como repetir os títulos nas demais páginas do relatório.