RM
Tfieldlist só aparece a primeira linha quando é gerado o PDF
Estou com um problema onde quando eu imprimo um documento que puxa o TfieldList, ele só gera no PDF a primeira linha. Ou seja ele não mostra as linhas clonadas que contém informações diferentes da primeira.
Segue o código:
$db_project_itens_fk_id_id = new THidden('db_project_itens_fk_id_id[]');
$db_project_itens_fk_id___row__id = new THidden('db_project_itens_fk_id___row__id[]');
$db_project_itens_fk_id___row__data = new THidden('db_project_itens_fk_id___row__data[]');
$db_project_itens_fk_id_natureza = new TDBCombo('db_project_itens_fk_id_natureza[]', 'db_bancoprojetos', 'DbNatureza', 'id', '{nome}','nome asc' );
$db_project_itens_fk_id_item = new TDBCombo('db_project_itens_fk_id_item[]', 'db_bancoprojetos', 'DbItens', 'id', '{nome}','nome asc' );
$db_project_itens_fk_id_descricao = new TEntry('db_project_itens_fk_id_descricao[]');
$db_project_itens_fk_id_unidade = new TDBCombo('db_project_itens_fk_id_unidade[]', 'db_bancoprojetos', 'DbUnidade', 'id', '{nome}','nome asc' );
$db_project_itens_fk_id_quantidade = new TNumeric('db_project_itens_fk_id_quantidade[]', '2', ',', '.', true, true );
$db_project_itens_fk_id_valor_unitario = new TNumeric('db_project_itens_fk_id_valor_unitario[]', '2', ',', '.', true, true );
$db_project_itens_fk_id_valor_total = new TNumeric('db_project_itens_fk_id_valor_total[]', '2', ',', '.', true, true );
$this->itensprojeto = new TFieldList();
$fk_anexos_arquivo = new TFile('fk_anexos_arquivo');
$this->itensprojeto->addField(null, $db_project_itens_fk_id_id, []);
$this->itensprojeto->addField(null, $db_project_itens_fk_id___row__id, ['uniqid' => true]);
$this->itensprojeto->addField(null, $db_project_itens_fk_id___row__data, []);
$this->itensprojeto->addField(new TLabel("Natureza", null, '14px', null), $db_project_itens_fk_id_natureza, ['width' => '14%']);
$this->itensprojeto->addField(new TLabel("Item", null, '14px', null), $db_project_itens_fk_id_item, ['width' => '14%']);
$this->itensprojeto->addField(new TLabel("Descricao", null, '14px', null), $db_project_itens_fk_id_descricao, ['width' => '14%']);
$this->itensprojeto->addField(new TLabel("Unidade", null, '14px', null), $db_project_itens_fk_id_unidade, ['width' => '14%']);
$this->itensprojeto->addField(new TLabel("Quantidade", null, '14px', null), $db_project_itens_fk_id_quantidade, ['width' => '14%']);
$this->itensprojeto->addField(new TLabel("Valor unitario", null, '14px', null), $db_project_itens_fk_id_valor_unitario, ['width' => '14%']);
$this->itensprojeto->addField(new TLabel("Valor total", null, '14px', null), $db_project_itens_fk_id_valor_total, ['width' => '14%','sum' => true]);
$this->itensprojeto->width = '100%';
$this->itensprojeto->setFieldPrefix('db_project_itens_fk_id');
$this->itensprojeto->name = 'itensprojeto';
$this->form->addField($db_project_itens_fk_id_id);
$this->form->addField($db_project_itens_fk_id___row__id);
$this->form->addField($db_project_itens_fk_id___row__data);
$this->form->addField($db_project_itens_fk_id_natureza);
$this->form->addField($db_project_itens_fk_id_item);
$this->form->addField($db_project_itens_fk_id_descricao);
$this->form->addField($db_project_itens_fk_id_unidade);
$this->form->addField($db_project_itens_fk_id_quantidade);
$this->form->addField($db_project_itens_fk_id_valor_unitario);
$this->form->addField($db_project_itens_fk_id_valor_total);
$this->itensprojeto->setRemoveAction(null, 'fas:times #dd5a43', "Excluír");
$db_project_itens_fk_id_valor_total->setExitAction(new TAction([$this,'soma']));
Código do Documento PDF:
public function __construct( $param )
{
}
public static function onGenerate($param)
{
try
{
TTransaction::open(self::$database);
$class = self::$activeRecord;
$object = new $class($param['key']);
$html = new AdiantiHTMLDocumentParser(self::$htmlFile);
$html->setMaster($object);
$objectsDbProjectItens_id = DbProjectItens::where('id', '=', $param['key'])->load();
$html->setDetail('DbProjectItens.id', $objectsDbProjectItens_id);
//<onBeforeProcess>
//</onBeforeProcess>
$html->process();
$document = 'tmp/'.uniqid().'.pdf';
$html->saveAsPDF($document, 'A4', 'portrait');
TTransaction::close();
if(empty($param['returnFile']))
{
parent::openFile($document);
new TMessage('info', _t('Document successfully generated'));
}
else
{
return $document;
}
}
catch (Exception $e)
{
// shows the exception error message
new TMessage('error', $e->getMessage());
// undo all pending operations
TTransaction::rollback();
}
}
Segue o código:
$db_project_itens_fk_id_id = new THidden('db_project_itens_fk_id_id[]');
$db_project_itens_fk_id___row__id = new THidden('db_project_itens_fk_id___row__id[]');
$db_project_itens_fk_id___row__data = new THidden('db_project_itens_fk_id___row__data[]');
$db_project_itens_fk_id_natureza = new TDBCombo('db_project_itens_fk_id_natureza[]', 'db_bancoprojetos', 'DbNatureza', 'id', '{nome}','nome asc' );
$db_project_itens_fk_id_item = new TDBCombo('db_project_itens_fk_id_item[]', 'db_bancoprojetos', 'DbItens', 'id', '{nome}','nome asc' );
$db_project_itens_fk_id_descricao = new TEntry('db_project_itens_fk_id_descricao[]');
$db_project_itens_fk_id_unidade = new TDBCombo('db_project_itens_fk_id_unidade[]', 'db_bancoprojetos', 'DbUnidade', 'id', '{nome}','nome asc' );
$db_project_itens_fk_id_quantidade = new TNumeric('db_project_itens_fk_id_quantidade[]', '2', ',', '.', true, true );
$db_project_itens_fk_id_valor_unitario = new TNumeric('db_project_itens_fk_id_valor_unitario[]', '2', ',', '.', true, true );
$db_project_itens_fk_id_valor_total = new TNumeric('db_project_itens_fk_id_valor_total[]', '2', ',', '.', true, true );
$this->itensprojeto = new TFieldList();
$fk_anexos_arquivo = new TFile('fk_anexos_arquivo');
$this->itensprojeto->addField(null, $db_project_itens_fk_id_id, []);
$this->itensprojeto->addField(null, $db_project_itens_fk_id___row__id, ['uniqid' => true]);
$this->itensprojeto->addField(null, $db_project_itens_fk_id___row__data, []);
$this->itensprojeto->addField(new TLabel("Natureza", null, '14px', null), $db_project_itens_fk_id_natureza, ['width' => '14%']);
$this->itensprojeto->addField(new TLabel("Item", null, '14px', null), $db_project_itens_fk_id_item, ['width' => '14%']);
$this->itensprojeto->addField(new TLabel("Descricao", null, '14px', null), $db_project_itens_fk_id_descricao, ['width' => '14%']);
$this->itensprojeto->addField(new TLabel("Unidade", null, '14px', null), $db_project_itens_fk_id_unidade, ['width' => '14%']);
$this->itensprojeto->addField(new TLabel("Quantidade", null, '14px', null), $db_project_itens_fk_id_quantidade, ['width' => '14%']);
$this->itensprojeto->addField(new TLabel("Valor unitario", null, '14px', null), $db_project_itens_fk_id_valor_unitario, ['width' => '14%']);
$this->itensprojeto->addField(new TLabel("Valor total", null, '14px', null), $db_project_itens_fk_id_valor_total, ['width' => '14%','sum' => true]);
$this->itensprojeto->width = '100%';
$this->itensprojeto->setFieldPrefix('db_project_itens_fk_id');
$this->itensprojeto->name = 'itensprojeto';
$this->form->addField($db_project_itens_fk_id_id);
$this->form->addField($db_project_itens_fk_id___row__id);
$this->form->addField($db_project_itens_fk_id___row__data);
$this->form->addField($db_project_itens_fk_id_natureza);
$this->form->addField($db_project_itens_fk_id_item);
$this->form->addField($db_project_itens_fk_id_descricao);
$this->form->addField($db_project_itens_fk_id_unidade);
$this->form->addField($db_project_itens_fk_id_quantidade);
$this->form->addField($db_project_itens_fk_id_valor_unitario);
$this->form->addField($db_project_itens_fk_id_valor_total);
$this->itensprojeto->setRemoveAction(null, 'fas:times #dd5a43', "Excluír");
$db_project_itens_fk_id_valor_total->setExitAction(new TAction([$this,'soma']));
Código do Documento PDF:
public function __construct( $param )
{
}
public static function onGenerate($param)
{
try
{
TTransaction::open(self::$database);
$class = self::$activeRecord;
$object = new $class($param['key']);
$html = new AdiantiHTMLDocumentParser(self::$htmlFile);
$html->setMaster($object);
$objectsDbProjectItens_id = DbProjectItens::where('id', '=', $param['key'])->load();
$html->setDetail('DbProjectItens.id', $objectsDbProjectItens_id);
//<onBeforeProcess>
//</onBeforeProcess>
$html->process();
$document = 'tmp/'.uniqid().'.pdf';
$html->saveAsPDF($document, 'A4', 'portrait');
TTransaction::close();
if(empty($param['returnFile']))
{
parent::openFile($document);
new TMessage('info', _t('Document successfully generated'));
}
else
{
return $document;
}
}
catch (Exception $e)
{
// shows the exception error message
new TMessage('error', $e->getMessage());
// undo all pending operations
TTransaction::rollback();
}
}
Acho que o filtro dos detalhes deve ser outra coluna(que tem chave estrangeira com o mestre) e não "id":