Lançado Adianti Framework 8.1!
Clique aqui para saber mais
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. ...
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.

  1. <?php
  2. class FaturamentoForm extends TPage
  3. {
  4.     protected $form// form
  5.     
  6.     use adianti\base\AdiantiMasterDetailTrait;
  7.     
  8.     /**
  9.      * Form constructor
  10.      * @param $param Request
  11.      */
  12.     public function __construct$param )
  13.     {
  14.         parent::__construct();
  15.         
  16.         $this->form = new BootstrapFormBuilder('list_Faturamento');
  17.         $this->form->setFormTitle('Manutenção do Condições de Pagamentos');
  18.         TSession::setValue('editaitem',false);
  19.                 
  20.         // define format function
  21.         $format_value = function($value) {
  22.             if (is_numeric($value)) {
  23.                 return 'R$ '.number_format($value2',''.');
  24.             }
  25.             return $value;
  26.         };        
  27.        
  28.         // master fields
  29.         $id         = new TEntry('id');
  30.         $id_grupo   = new THidden('empresa_id');
  31.         $prazo_nome = new TEntry('nome'); 
  32.         $validade   = new TDate('validade');
  33.         $desconto   = new TNumeric('desconto''2'',''.' );
  34.         $comissao   = new TNumeric('comissao''2'',''.' );
  35.         $tipocob    = new TDBCombo('tipocobranca_id''infinityme''TipoCobranca''id''nome''nome asc'$criteria);            
  36.         $ativo      = new TCombo('ativo');                                    
  37.         $ativo->addItems( [ 'S' => 'SIM''N' => 'NÃO' ] );
  38.                 
  39.         // detail fields
  40.         $fat_id     = new THidden('item_faturamento_id');
  41.         $emp_cod    = new THidden('item_empresa_id');
  42.         $fat_prazo  = new TEntry('item_prazo');
  43.         $prazo_nome->addValidation('Prazo', new TRequiredValidator());
  44.  
  45.         $id->setEditable(false);
  46.         $id->setSize(100);
  47.         $prazo_nome->setSize('100%');
  48.         $fat_id->setSize(100);
  49.         //$validade->setValue(date('d/m/Y'));
  50.         $validade->setDatabaseMask('yyyy-mm-dd');
  51.         $validade->setMask('dd/mm/yyyy');
  52.         $validade->setSize(190);
  53.         $desconto->setSize('100%');
  54.         $comissao->setSize('100%');
  55.         $fat_prazo->setSize('20%');
  56.         $fat_prazo->setMask('999');
  57.         $ativo->setSize('20%');
  58.         $desconto->setValue(0);
  59.         $comissao->setValue(0);
  60.         
  61.         // Define o grupo da Empresa 
  62.         $id_grupo->getValue(TSession::getValue('idgrupo')); 
  63.         
  64.         // master fields
  65.         $this->form->addFields([new TLabel('Id:')],[$id],[new TLabel('Faturamento:''#ff0000')],[$prazo_nome]);
  66.         $this->form->addFields([new TLabel('Desconto:')],[$desconto],[new TLabel('Comissão:')],[$comissao]);
  67.         $this->form->addFields([new TLabel('Tipo Cobrança:')],[$tipocob],[new TLabel('Data de Validade:')],[$validade]);                
  68.         $this->form->addFields([new TLabel('Ativo:')],[$ativo]);        
  69.         $this->form->addFields([$id_grupo]);
  70.         
  71.         // detail fields
  72.         $this->form->addContent([new TFormSeparator('Prazos''#333333''18''#eeeeee')]);
  73.         $this->form->addFields([new TLabel('Prazo:')],[$fat_prazo]);
  74.         $this->form->addFields([$emp_cod]);
  75.         $this->form->addFields([$fat_id]);         
  76.         
  77.         // add button
  78.         $add_prazo = new TButton('add_prazo');
  79.         $add_prazo->setAction(new TAction(array($this'onAddPrazo')), 'Adicionar');
  80.         $add_prazo->setImage('fa:plus #51c249');
  81.         $this->form->addFields([$add_prazo]);
  82.         
  83.         // detail datagrid
  84.         $this->item_prazo_list = new BootstrapDatagridWrapper(new TQuickGrid);
  85.         $this->item_prazo_list->style 'width:100%';
  86.         $this->item_prazo_list->class .= ' table-bordered';
  87.         $this->item_prazo_list->disableDefaultClick();
  88.         $this->item_prazo_list->addQuickColumn('''edit''left'20);
  89.         $this->item_prazo_list->addQuickColumn('''delete''left'20);
  90.         
  91.         $col_prazo  $this->item_prazo_list->addQuickColumn('Prazos''item_prazo''center'50);        
  92.                
  93.         $this->item_prazo_list->createModel();
  94.                       
  95.         $this->form->addContent([$this->item_prazo_list]);
  96.         
  97.         // create the form actions
  98.         $this->form->addHeaderAction('Salvar', new TAction([$this'onSave']), 'fa:floppy-o')->addStyleClass('btn-primary');
  99.         $this->form->addHeaderAction('Limpar', new TAction([$this'onClear']), 'fa:eraser #dd5a43');
  100.         $this->form->addHeaderAction('Voltar', new TAction(array('FaturamentoList''onReload')), 'fa:table blue' );        
  101.         // vertical box container
  102.         $container = new TVBox;
  103.         $container->style 'width: 100%';
  104.         $container->class 'form-container';
  105.         $container->add(new TXMLBreadCrumb('menu.xml''FaturamentoList'));
  106.         $container->add($this->form);
  107.         
  108.         parent::add($container);
  109.     }
  110.     
  111.     /**
  112.      * Adiciona prazos
  113.      * @param $param Request
  114.      */
  115.     public function onAddPrazo$param )
  116.     {
  117.         try
  118.         {
  119.             TSession::setValue('editaitem',false);
  120.             
  121.             $data $this->form->getData();
  122.  
  123.             $data->item_faturamento_id $data->id;
  124.             
  125.             if(!$data->item_prazo)
  126.             {
  127.                 throw new Exception(AdiantiCoreTranslator::translate('The field ^1 is required''Prazo'));
  128.             }
  129.             
  130.             $prazo TSession::getValue('prazo_items');
  131.             
  132.             $key = !empty($data->item_faturamento_id) ? $data->item_faturamento_id uniqid();
  133.             $fields = []; 
  134.             $fields['item_prazo']      = $data->item_prazo;
  135.             $prazo_items$key ]       = $fields
  136.             TSession::setValue('prazo_items'$prazo_items);
  137.       
  138.             // limpa os campos do item do pedido
  139.             $data->item_prazo '';
  140.             
  141.             $this->form->setData($data);
  142.             $this->onReload$param );
  143.         }
  144.         catch (Exception $e)
  145.         {
  146.             $this->form->setData$this->form->getData());
  147.             new TMessage('error'$e->getMessage());
  148.         }
  149.     }
  150.     /**
  151.      * Recarrega tudo
  152.      * @param $param Request
  153.      */
  154.     public function onReload($params null)
  155.     {
  156.         $this->loaded TRUE;        
  157.         $this->onReloadPrazo($params);
  158.     }
  159.     
  160.     /**
  161.      * Recarrega itens do pedido
  162.      * @param $param Request
  163.      */
  164.     public function onReloadPrazo$param )
  165.     {
  166.         $prazos TSession::getValue('prazo_items'); 
  167.         $this->item_prazo_list->clear();  
  168.         //var_dump($prazos);                                                                  
  169.         if($prazos
  170.         {
  171.                     
  172.             $cont 1
  173.             foreach ($prazos as $key => $prazo
  174.             {
  175.                 $rowPrazo = new StdClass;
  176.                 $action_del = new TAction(array($this'onDeletePrazos')); 
  177.                 $action_del->setParameter('prazo_row_id'$key);   
  178.                 $action_edi = new TAction(array($this'onEditPrazos'));  
  179.                 $action_edi->setParameter('prazo_row_id'$key);  
  180.                 $button_del = new TButton('delete_prazo'.$cont);
  181.                 $button_del->class 'btn btn-default btn-sm';
  182.                 $button_del->setAction($action_del'');
  183.                 $button_del->setImage('fa:trash-o'); 
  184.                 $button_del->setFormName($this->form->getName());
  185.                 $button_edi = new TButton('edit_prazo'.$cont);
  186.                 $button_edi->class 'btn btn-default btn-sm';
  187.                 $button_edi->setAction($action_edi'');
  188.                 $button_edi->setImage('bs:edit');
  189.                 $button_edi->setFormName($this->form->getName());
  190.                 $rowPrazo->edit   $button_edi;
  191.                 $rowPrazo->delete $button_del;
  192.                 
  193.                 $rowPrazo->item_prazo = isset($prazo['item_prazo']) ? $prazo['item_prazo'] : '';
  194.                 //var_dump($rowPrazo);
  195.                 $this->item_prazo_list->addItems($rowPrazo);
  196.                 $cont ++;
  197.             } 
  198.         } 
  199.     } 
  200.     
  201.     /**
  202.      * Edita item do pedido
  203.      * @param $param Request
  204.      */
  205.     public function onEditPrazos$param )
  206.     {
  207.      
  208.         TSession::setValue('editaitem',true);
  209.          
  210.         $data $this->form->getData();
  211.         // read session items
  212.         $prazos TSession::getValue('prazo_items');
  213.         // get the session item
  214.         $prazo $prazos[$param['prazo_row_id']];
  215.         $data->item_prazo          $prazo['item_prazo'];
  216.         $data->item_empresa_id     $prazo['item_empresa_id'];
  217.         $data->item_faturamento_id $param['prazo_row_id'];
  218.         
  219.         // fill product fields
  220.         $this->form->setData$data );
  221.         $this->onReload$param );
  222.     }
  223.     
  224.     /**
  225.      * Exclui item do pedido
  226.      * @param $param Request
  227.      */
  228.     public function onDeletePrazos$param )
  229.     {
  230.         $data $this->form->getData();
  231.         $data->item_prazo '';
  232.         $this->form->setData$data );
  233.         // read session prazos
  234.         $prazos TSession::getValue('prazo_items');
  235.         // delete the prazo from session
  236.         unset($prazos[$param['prazo_row_id']]);
  237.         TSession::setValue('prazo_items'$prazos);
  238.         
  239.         $this->onReload$param );
  240.     }
  241.     /**
  242.      * Limpa formulário
  243.      * @param $param Request
  244.      */
  245.     public function onClear$param )
  246.     {
  247.         $this->form->clear();
  248.         TSession::setValue('prazo_items'null);
  249.         $this->onReload();
  250.     }
  251.     
  252.     /**
  253.      * Salva pedido
  254.      * @param $param Request
  255.      */
  256.     public function onSave($param null)     
  257.     {
  258.         try
  259.         {
  260.             TTransaction::open('infinityme');
  261.     
  262.             $this->form->validate();           
  263.             $data $this->form->getData();
  264.             $data->item_empresa_id     TSession::getValue('idgrupo');
  265.             $data->item_faturamento_id $data->id;
  266.                          
  267.             $object = new Faturamento
  268.             $object->fromArray( (array) $data);
  269.             $object->store(); 
  270.             
  271.             $this->storeItems('FaturamentoPrazos''item_faturamento_id'$object'prazo');
  272.             $object->store();
  273.             $data->item_faturamento_id $object->item_faturamento_id;
  274.             $this->form->setData($data);
  275.             TTransaction::close();
  276.            
  277.             $editaitem TSession::getValue('editaitem');
  278.                       
  279.             new TMessage('info'AdiantiCoreTranslator::translate('Record saved'));
  280.             
  281.             TSession::setValue('editaitem',false);
  282.         }
  283.         catch (Exception $e)
  284.         {
  285.             new TMessage('error'$e->getMessage());
  286.             $this->form->setData$this->form->getData() );
  287.             TTransaction::rollback();
  288.         }
  289.     }
  290.     
  291.     /**
  292.      * Edita formulário
  293.      * @param $param Request
  294.      */
  295.     public function onEdit$param )
  296.     {
  297.         try
  298.         {
  299.             if (isset($param['key']))
  300.             {
  301.                 $key $param['key'];
  302.                 TTransaction::open('infinityme');
  303.                 
  304.                 $object = new Faturamento($key); 
  305.                 $this->loadItems('Faturamento''faturamento_id'$object'prazo');
  306.                 var_dump($object); 
  307.                 $this->form->setData($object); 
  308.                 $this->onReload();
  309.                 TTransaction::close(); 
  310.             }
  311.             else
  312.             {
  313.                 $this->form->clear();
  314.             }
  315.         }
  316.         catch (Exception $e)
  317.         {
  318.             new TMessage('error'$e->getMessage());
  319.             TTransaction::rollback();
  320.         }
  321.     }
  322.     
  323.     /**
  324.      * Exibe a página
  325.      * @param $param Request
  326.      */
  327.     public function show() 
  328.     { 
  329.         if (!$this->loaded AND (!isset($_GET['method']) OR $_GET['method'] !== 'onReload') ) 
  330.         { 
  331.             $this->onReloadfunc_get_arg(0) );
  332.         }
  333.         parent::show();
  334.     }
  335. }
  336. ?>



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


NR

Troque addItems por addItem:
  1. <?php
  2. //$this->item_prazo_list->addItems($rowPrazo);
  3. $this->item_prazo_list->addItem($rowPrazo);
  4. ?>
AM

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