AM
Evento onAddPrazos não adicona os prazos no grid
Olá a todos,
Criei um formulário de Prazos Mestre/Detalhe baseado nas especificações do exemplo de Pedidos, acontece que os Prazos detalhe não são adicionados no grid detalhe, aparece apenas uma linha em branco, já fiz debug com var_dump e não consegui encontrar o erro, se alguém puder ajudar agradeço desde já.
Segue código.
Criei um formulário de Prazos Mestre/Detalhe baseado nas especificações do exemplo de Pedidos, acontece que os Prazos detalhe não são adicionados no grid detalhe, aparece apenas uma linha em branco, já fiz debug com var_dump e não consegui encontrar o erro, se alguém puder ajudar agradeço desde já.
Segue código.
- <?php
- class FaturamentoForm extends TPage
- {
- protected $form; // form
- use adianti\base\AdiantiMasterDetailTrait;
- /**
- * Form constructor
- * @param $param Request
- */
- public function __construct( $param )
- {
- parent::__construct();
- $this->form = new BootstrapFormBuilder('list_Faturamento');
- $this->form->setFormTitle('Manutenção do Condições de Pagamentos');
- TSession::setValue('editaitem',false);
- // define format function
- $format_value = function($value) {
- if (is_numeric($value)) {
- return 'R$ '.number_format($value, 2, ',', '.');
- }
- return $value;
- };
- // master fields
- $id = new TEntry('id');
- $id_grupo = new THidden('empresa_id');
- $prazo_nome = new TEntry('nome');
- $validade = new TDate('validade');
- $desconto = new TNumeric('desconto', '2', ',', '.' );
- $comissao = new TNumeric('comissao', '2', ',', '.' );
- $tipocob = new TDBCombo('tipocobranca_id', 'infinityme', 'TipoCobranca', 'id', 'nome', 'nome asc', $criteria);
- $ativo = new TCombo('ativo');
- $ativo->addItems( [ 'S' => 'SIM', 'N' => 'NÃO' ] );
- // detail fields
- $fat_id = new THidden('item_faturamento_id');
- $emp_cod = new THidden('item_empresa_id');
- $fat_prazo = new TEntry('item_prazo');
- $prazo_nome->addValidation('Prazo', new TRequiredValidator());
- $id->setEditable(false);
- $id->setSize(100);
- $prazo_nome->setSize('100%');
- $fat_id->setSize(100);
- //$validade->setValue(date('d/m/Y'));
- $validade->setDatabaseMask('yyyy-mm-dd');
- $validade->setMask('dd/mm/yyyy');
- $validade->setSize(190);
- $desconto->setSize('100%');
- $comissao->setSize('100%');
- $fat_prazo->setSize('20%');
- $fat_prazo->setMask('999');
- $ativo->setSize('20%');
- $desconto->setValue(0);
- $comissao->setValue(0);
- // Define o grupo da Empresa
- $id_grupo->getValue(TSession::getValue('idgrupo'));
- // master fields
- $this->form->addFields([new TLabel('Id:')],[$id],[new TLabel('Faturamento:', '#ff0000')],[$prazo_nome]);
- $this->form->addFields([new TLabel('Desconto:')],[$desconto],[new TLabel('Comissão:')],[$comissao]);
- $this->form->addFields([new TLabel('Tipo Cobrança:')],[$tipocob],[new TLabel('Data de Validade:')],[$validade]);
- $this->form->addFields([new TLabel('Ativo:')],[$ativo]);
- $this->form->addFields([$id_grupo]);
- // detail fields
- $this->form->addContent([new TFormSeparator('Prazos', '#333333', '18', '#eeeeee')]);
- $this->form->addFields([new TLabel('Prazo:')],[$fat_prazo]);
- $this->form->addFields([$emp_cod]);
- $this->form->addFields([$fat_id]);
- // add button
- $add_prazo = new TButton('add_prazo');
- $add_prazo->setAction(new TAction(array($this, 'onAddPrazo')), 'Adicionar');
- $add_prazo->setImage('fa:plus #51c249');
- $this->form->addFields([$add_prazo]);
- // detail datagrid
- $this->item_prazo_list = new BootstrapDatagridWrapper(new TQuickGrid);
- $this->item_prazo_list->style = 'width:100%';
- $this->item_prazo_list->class .= ' table-bordered';
- $this->item_prazo_list->disableDefaultClick();
- $this->item_prazo_list->addQuickColumn('', 'edit', 'left', 20);
- $this->item_prazo_list->addQuickColumn('', 'delete', 'left', 20);
- $col_prazo = $this->item_prazo_list->addQuickColumn('Prazos', 'item_prazo', 'center', 50);
- $this->item_prazo_list->createModel();
- $this->form->addContent([$this->item_prazo_list]);
- // create the form actions
- $this->form->addHeaderAction('Salvar', new TAction([$this, 'onSave']), 'fa:floppy-o')->addStyleClass('btn-primary');
- $this->form->addHeaderAction('Limpar', new TAction([$this, 'onClear']), 'fa:eraser #dd5a43');
- $this->form->addHeaderAction('Voltar', new TAction(array('FaturamentoList', 'onReload')), 'fa:table blue' );
- // vertical box container
- $container = new TVBox;
- $container->style = 'width: 100%';
- $container->class = 'form-container';
- $container->add(new TXMLBreadCrumb('menu.xml', 'FaturamentoList'));
- $container->add($this->form);
- parent::add($container);
- }
- /**
- * Adiciona prazos
- * @param $param Request
- */
- public function onAddPrazo( $param )
- {
- try
- {
- TSession::setValue('editaitem',false);
- $data = $this->form->getData();
- $data->item_faturamento_id = $data->id;
- if(!$data->item_prazo)
- {
- throw new Exception(AdiantiCoreTranslator::translate('The field ^1 is required', 'Prazo'));
- }
- $prazo = TSession::getValue('prazo_items');
- $key = !empty($data->item_faturamento_id) ? $data->item_faturamento_id : uniqid();
- $fields = [];
- $fields['item_prazo'] = $data->item_prazo;
- $prazo_items[ $key ] = $fields;
- TSession::setValue('prazo_items', $prazo_items);
- // limpa os campos do item do pedido
- $data->item_prazo = '';
- $this->form->setData($data);
- $this->onReload( $param );
- }
- catch (Exception $e)
- {
- $this->form->setData( $this->form->getData());
- new TMessage('error', $e->getMessage());
- }
- }
- /**
- * Recarrega tudo
- * @param $param Request
- */
- public function onReload($params = null)
- {
- $this->loaded = TRUE;
- $this->onReloadPrazo($params);
- }
- /**
- * Recarrega itens do pedido
- * @param $param Request
- */
- public function onReloadPrazo( $param )
- {
- $prazos = TSession::getValue('prazo_items');
- $this->item_prazo_list->clear();
- //var_dump($prazos);
- if($prazos)
- {
- $cont = 1;
- foreach ($prazos as $key => $prazo)
- {
- $rowPrazo = new StdClass;
- $action_del = new TAction(array($this, 'onDeletePrazos'));
- $action_del->setParameter('prazo_row_id', $key);
- $action_edi = new TAction(array($this, 'onEditPrazos'));
- $action_edi->setParameter('prazo_row_id', $key);
- $button_del = new TButton('delete_prazo'.$cont);
- $button_del->class = 'btn btn-default btn-sm';
- $button_del->setAction($action_del, '');
- $button_del->setImage('fa:trash-o');
- $button_del->setFormName($this->form->getName());
- $button_edi = new TButton('edit_prazo'.$cont);
- $button_edi->class = 'btn btn-default btn-sm';
- $button_edi->setAction($action_edi, '');
- $button_edi->setImage('bs:edit');
- $button_edi->setFormName($this->form->getName());
- $rowPrazo->edit = $button_edi;
- $rowPrazo->delete = $button_del;
- $rowPrazo->item_prazo = isset($prazo['item_prazo']) ? $prazo['item_prazo'] : '';
- //var_dump($rowPrazo);
- $this->item_prazo_list->addItems($rowPrazo);
- $cont ++;
- }
- }
- }
- /**
- * Edita item do pedido
- * @param $param Request
- */
- public function onEditPrazos( $param )
- {
- TSession::setValue('editaitem',true);
- $data = $this->form->getData();
- // read session items
- $prazos = TSession::getValue('prazo_items');
- // get the session item
- $prazo = $prazos[$param['prazo_row_id']];
- $data->item_prazo = $prazo['item_prazo'];
- $data->item_empresa_id = $prazo['item_empresa_id'];
- $data->item_faturamento_id = $param['prazo_row_id'];
- // fill product fields
- $this->form->setData( $data );
- $this->onReload( $param );
- }
- /**
- * Exclui item do pedido
- * @param $param Request
- */
- public function onDeletePrazos( $param )
- {
- $data = $this->form->getData();
- $data->item_prazo = '';
- $this->form->setData( $data );
- // read session prazos
- $prazos = TSession::getValue('prazo_items');
- // delete the prazo from session
- unset($prazos[$param['prazo_row_id']]);
- TSession::setValue('prazo_items', $prazos);
- $this->onReload( $param );
- }
- /**
- * Limpa formulário
- * @param $param Request
- */
- public function onClear( $param )
- {
- $this->form->clear();
- TSession::setValue('prazo_items', null);
- $this->onReload();
- }
- /**
- * Salva pedido
- * @param $param Request
- */
- public function onSave($param = null)
- {
- try
- {
- TTransaction::open('infinityme');
- $this->form->validate();
- $data = $this->form->getData();
- $data->item_empresa_id = TSession::getValue('idgrupo');
- $data->item_faturamento_id = $data->id;
- $object = new Faturamento;
- $object->fromArray( (array) $data);
- $object->store();
- $this->storeItems('FaturamentoPrazos', 'item_faturamento_id', $object, 'prazo');
- $object->store();
- $data->item_faturamento_id = $object->item_faturamento_id;
- $this->form->setData($data);
- TTransaction::close();
- $editaitem = TSession::getValue('editaitem');
- new TMessage('info', AdiantiCoreTranslator::translate('Record saved'));
- TSession::setValue('editaitem',false);
- }
- catch (Exception $e)
- {
- new TMessage('error', $e->getMessage());
- $this->form->setData( $this->form->getData() );
- TTransaction::rollback();
- }
- }
- /**
- * Edita formulário
- * @param $param Request
- */
- public function onEdit( $param )
- {
- try
- {
- if (isset($param['key']))
- {
- $key = $param['key'];
- TTransaction::open('infinityme');
- $object = new Faturamento($key);
- $this->loadItems('Faturamento', 'faturamento_id', $object, 'prazo');
- var_dump($object);
- $this->form->setData($object);
- $this->onReload();
- TTransaction::close();
- }
- else
- {
- $this->form->clear();
- }
- }
- catch (Exception $e)
- {
- new TMessage('error', $e->getMessage());
- TTransaction::rollback();
- }
- }
- /**
- * Exibe a página
- * @param $param Request
- */
- public function show()
- {
- if (!$this->loaded AND (!isset($_GET['method']) OR $_GET['method'] !== 'onReload') )
- {
- $this->onReload( func_get_arg(0) );
- }
- parent::show();
- }
- }
- ?>
Troque addItems por addItem:
Show Nataniel, nada melhor que um olhar externo pra encontrar error bobos, cara eu já tava queimando os neuronios com var_dump e nada.
Deu certo! Vlew, obrigado