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



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