Pegar valor da função "enableTotal" Olá pessoal, boa tarde. é possivel fazer um getValue() na funçao: Ou seja, fazer $col_valor->getValue() por exemplo. ...
EB
Pegar valor da função "enableTotal"  
Olá pessoal, boa tarde.
é possivel fazer um getValue() na funçao:

 
  1. <?php
  2. ...
  3. $col_valor->enableTotal('sum', 'R$', 2, ',', '.');
  4. ...
  5. ?>


Ou seja, fazer $col_valor->getValue() por exemplo.

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

Acho que não tem como. Você vai ter que recalcular esse valor de acordo com os itens que montam a grid.
EB

Entendi @Nataniel, a questão é que na 7.2 nao vem o onReload no mestre detalhe.
Já olhei no AdiantiMasterDetailTrait.php e nao vi o onReload pra eu copiar e usar lá.

Sabe como eu proceder?

Obrigado
NR

A função onReloadAlgumaCoisa geralmente fica dentro do próprio control do formulário. Se não tiver essa função, talvez você esteja usando outro modelo de mestre x detalhe.
EB

Estou usando esse modelo usando o Adianti Studio em:

Formularios -> Formulario mestre/detalhe;

Criou esse código abaixo e não tem o onReload:
 
  1. <?php
  2. use Adianti\Widget\Datagrid\TDataGridColumn;
  3. /**
  4. * PagamentoNfForm Master/Detail
  5. * @author <your name here>
  6. */
  7. class PagamentoNfForm extends TWindow
  8. {
  9. protected $form; // form
  10. protected $detail_list;
  11. /**
  12. * Page constructor
  13. */
  14. public function __construct()
  15. {
  16. parent::__construct();
  17. $this->labelTotal = new TLabel('');
  18. // creates the form
  19. $this->form = new BootstrapFormBuilder('form_PagamentoNf');
  20. $this->form->setFormTitle('PagamentoNf');
  21. // master fields
  22. $pnf_id = new TEntry('pnf_id');
  23. $id_conta_pagar = new TEntry('id_conta_pagar');
  24. $valor = new TNumeric('valor','2',',','.');
  25. $valor_pago = new TNumeric('valor_pago','2',',','.');
  26. $valor_saldo = new TNumeric('valor_saldo','2',',','.');
  27. $valor->setNumericMask(2,',', '.', true);
  28. $valor_pago->setNumericMask(2,',', '.', true);
  29. $valor_saldo->setNumericMask(2,',', '.', true);
  30. // detail fields
  31. $detail_uniqid = new THidden('detail_uniqid');
  32. $detail_dpn_id = new THidden('detail_dpn_id');
  33. $detail_id_conta_pagar_nf = new TEntry('detail_id_conta_pagar_nf');
  34. $detail_data_pgto = new TDate('detail_data_pgto');
  35. $detail_forma_pgto_id = new TDBCombo('detail_forma_pgto_id','patrimonial', 'TipoPagamento', 'tpag_id', 'tpag_nome', 'tpag_nome');
  36. $detail_valor_pgto = new TEntry('detail_valor_pgto');
  37. if (!empty($pnf_id))
  38. {
  39. $pnf_id->setEditable(FALSE);
  40. }
  41. $id_conta_pagar->setValue(TSession::getValue('chave'));
  42. $valor->setvalue(TSession::getValue('valor'));
  43. // master fields
  44. $row = $this->form->addFields(
  45. [new TLabel('Id'), $pnf_id],
  46. [new TLabel('Conta'), $id_conta_pagar],
  47. [new TLabel('Valor'),$valor],
  48. [new TLabel('Valor Pago'),$valor_pago],
  49. [new TLabel('Valor Saldo'),$valor_saldo]
  50. );
  51. $row->layout = ['col-sm-2','col-sm-2','col-sm-2','col-sm-2','col-sm-2'];
  52. // detail fields
  53. $this->form->addContent( ['<h4>Details</h4><hr>'] );
  54. $this->form->addFields( [$detail_uniqid] );
  55. $this->form->addFields( [$detail_dpn_id] );
  56. $add = TButton::create('add', [$this, 'onDetailAdd'], 'Register', 'fa:plus-circle green');
  57. $add->getAction()->setParameter('static','1');
  58. $row2 = $this->form->addFields(
  59. [new TLabel('Conta'), $detail_id_conta_pagar_nf],
  60. [new TLabel('Forma Pagamento'), $detail_forma_pgto_id],
  61. [new TLabel('Data'), $detail_data_pgto],
  62. [new TLabel('Vlr. Pgto'), $detail_valor_pgto],
  63. [],
  64. [$add] );
  65. $row2->layout = ['col-sm-2','col-sm-2','col-sm-2','col-sm-2','col-sm-2','col-sm-2'];
  66. $this->detail_list = new BootstrapDatagridWrapper(new TDataGrid);
  67. $this->detail_list->setId('DetPgtoNf_list');
  68. $this->detail_list->generateHiddenFields();
  69. $this->detail_list->style = "min-width: 700px; width:100%;margin-bottom: 10px";
  70. // items
  71. $col_uniq = new TDataGridColumn('uniqid', 'Uniqid', 'center');
  72. $col_dpn_id = new TDataGridColumn('dpn_id', 'Id', 'center');
  73. $col_id_conta_pagar_nf = new TDataGridColumn('id_conta_pagar_nf', 'Conta', 'left', 100);
  74. $col_forma_pagamento_id = new TDataGridColumn('forma_pgto_id', 'Forma Pagamento', 'left',100);
  75. $col_forma_pgto_nome = new TDataGridColumn('forma_pgto_id', 'Forma Pagamento', 'left',100);
  76. $col_vlr_pgto = new TDataGridColumn('valor_pgto', 'Vlr Pgto', 'left', 100 );
  77. $col_data_pgto = new TDataGridColumn('data_pgto', 'Data Pgto', 'left', 50 );
  78. $this->detail_list->addColumn($col_uniq );
  79. $this->detail_list->addColumn($col_dpn_id );
  80. $this->detail_list->addColumn($col_id_conta_pagar_nf );
  81. $this->detail_list->addColumn($col_forma_pagamento_id);
  82. $this->detail_list->addColumn($col_forma_pgto_nome);
  83. $this->detail_list->addColumn($col_data_pgto );
  84. $this->detail_list->addColumn($col_vlr_pgto );
  85. $col_forma_pgto_nome->setTransformer(function($value) {
  86. return TipoPagamento::findInTransaction('patrimonial', $value)->tpag_nome;
  87. });
  88. $col_vlr_pgto->enableTotal('sum', 'R$', 2, ',', '.');
  89. $col_uniq->setVisibility(false);
  90. $col_forma_pagamento_id->setVisibility(false);
  91. $format_value = function($value) {
  92. if (is_numeric($value)) {
  93. return 'R$ '.number_format($value, 2, ',', '.');
  94. }
  95. return $value;
  96. };
  97. $col_vlr_pgto->setTransformer( $format_value );
  98. // detail actions
  99. $action1 = new TDataGridAction([$this, 'onDetailEdit'] );
  100. $action1->setFields( ['uniqid', '*'] );
  101. $action2 = new TDataGridAction([$this, 'onDetailDelete']);
  102. $action2->setField('uniqid');
  103. // add the actions to the datagrid
  104. $this->detail_list->addAction($action1, _t('Edit'), 'fa:edit blue');
  105. $this->detail_list->addAction($action2, _t('Delete'), 'far:trash-alt red');
  106. $this->detail_list->createModel();
  107. $panel = new TPanelGroup;
  108. $panel->add($this->detail_list);
  109. $panel->getBody()->style = 'overflow-x:auto';
  110. $this->form->addContent( [$panel] );
  111. $this->form->addAction( 'Save', new TAction([$this, 'onSave'], ['static'=>'1']), 'fa:save green');
  112. $this->form->addAction( 'Clear', new TAction([$this, 'onClear']), 'fa:eraser red');
  113. // create the page container
  114. $container = new TVBox;
  115. $container->style = 'width: 100%';
  116. // $container->add(new TXMLBreadCrumb('menu.xml', __CLASS__));
  117. $container->add($this->form);
  118. $container->add($this->labelTotal);
  119. parent::add($container);
  120. }
  121. /**
  122. * Clear form
  123. * @param $param URL parameters
  124. */
  125. public function onClear($param)
  126. {
  127. $this->form->clear(TRUE);
  128. }
  129. /**
  130. * Add detail item
  131. * @param $param URL parameters
  132. */
  133. public function onDetailAdd( $param )
  134. {
  135. try
  136. {
  137. $this->form->validate();
  138. $data = $this->form->getData();
  139. /** validation sample
  140. if (empty($data->fieldX))
  141. {
  142. throw new Exception('The field fieldX is required');
  143. }
  144. **/
  145. $uniqid = !empty($data->detail_uniqid) ? $data->detail_uniqid : uniqid();
  146. $grid_data = [];
  147. $grid_data['uniqid'] = $uniqid;
  148. $grid_data['dpn_id'] = $data->detail_dpn_id;
  149. $grid_data['id_conta_pagar_nf'] = $data->id_conta_pagar;
  150. $grid_data['data_pgto'] = $data->detail_data_pgto;
  151. $grid_data['forma_pgto_id'] = $data->detail_forma_pgto_id;
  152. $grid_data['valor_pgto'] = $data->detail_valor_pgto;
  153. // insert row dynamically
  154. $row = $this->detail_list->addItem( (object) $grid_data );
  155. $row->id = $uniqid;
  156. TDataGrid::replaceRowById('DetPgtoNf_list', $uniqid, $row);
  157. // clear detail form fields
  158. $data->detail_uniqid = '';
  159. $data->detail_dpn_id = '';
  160. $data->detail_id_conta_pagar_nf = '';
  161. $data->detail_data_pgto = '';
  162. $data->detail_forma_pgto_id = '';
  163. $data->detail_valor_pgto = '';
  164. // send data, do not fire change/exit events
  165. TForm::sendData( 'form_PagamentoNf', $data, false, false );
  166. }
  167. catch (Exception $e)
  168. {
  169. $this->form->setData( $this->form->getData());
  170. new TMessage('error', $e->getMessage());
  171. }
  172. }
  173. /**
  174. * Edit detail item
  175. * @param $param URL parameters
  176. */
  177. public static function onDetailEdit( $param )
  178. {
  179. $data = new stdClass;
  180. $data->detail_uniqid = $param['uniqid'];
  181. $data->detail_dpn_id = $param['dpn_id'];
  182. $data->detail_id_conta_pagar_nf = $param['id_conta_pagar'];
  183. $data->detail_data_pgto = $param['data_pgto'];
  184. $data->detail_forma_pgto_id = $param['forma_pgto_id'];
  185. $data->detail_valor_pgto = $param['valor_pgto'];
  186. // send data, do not fire change/exit events
  187. TForm::sendData( 'form_PagamentoNf', $data, false, false );
  188. }
  189. /**
  190. * Delete detail item
  191. * @param $param URL parameters
  192. */
  193. public static function onDetailDelete( $param )
  194. {
  195. // clear detail form fields
  196. $data = new stdClass;
  197. $data->detail_uniqid = '';
  198. $data->detail_dpn_id = '';
  199. $data->detail_id_conta_pagar_nf = '';
  200. $data->detail_data_pgto = '';
  201. $data->detail_forma_pgto_id = '';
  202. $data->detail_valor_pgto = '';
  203. // send data, do not fire change/exit events
  204. TForm::sendData( 'form_PagamentoNf', $data, false, false );
  205. // remove row
  206. TDataGrid::removeRowById('DetPgtoNf_list', $param['uniqid']);
  207. }
  208. /**
  209. * Load Master/Detail data from database to form
  210. */
  211. public function onEdit($param)
  212. {
  213. try
  214. {
  215. TTransaction::open('patrimonial');
  216. if (isset($param['key']))
  217. {
  218. $key = $param['key'];
  219. $object = new PagamentoNf($key);
  220. $items = DetPgtoNf::where('pagamento_nf_id', '=', $key)->load();
  221. foreach( $items as $item )
  222. {
  223. $item->uniqid = uniqid();
  224. $row = $this->detail_list->addItem( $item );
  225. $row->id = $item->uniqid;
  226. }
  227. $this->form->setData($object);
  228. TTransaction::close();
  229. }
  230. else
  231. {
  232. $this->form->clear(TRUE);
  233. }
  234. }
  235. catch (Exception $e) // in case of exception
  236. {
  237. new TMessage('error', $e->getMessage());
  238. TTransaction::rollback();
  239. }
  240. }
  241. /**
  242. * Save the Master/Detail data from form to database
  243. */
  244. public function onSave($param)
  245. {
  246. try
  247. {
  248. // open a transaction with database
  249. TTransaction::open('patrimonial');
  250. $data = $this->form->getData();
  251. $this->form->validate();
  252. $master = new PagamentoNf;
  253. $master->fromArray( (array) $data);
  254. $master->store();
  255. DetPgtoNf::where('pagamento_nf_id', '=', $master->pnf_id)->delete();
  256. if( $param['DetPgtoNf_list_id_conta_pagar_nf'] )
  257. {
  258. foreach( $param['DetPgtoNf_list_id_conta_pagar_nf'] as $key => $item_id )
  259. {
  260. $detail = new DetPgtoNf;
  261. $detail->id_conta_pagar_nf = $param['DetPgtoNf_list_id_conta_pagar'][$key];
  262. $detail->data_pgto = $param['DetPgtoNf_list_data_pgto'][$key];
  263. $detail->forma_pgto_id = $param['DetPgtoNf_list_forma_pgto_id'][$key];
  264. $detail->valor_pgto = $param['DetPgtoNf_list_valor_pgto'][$key];
  265. $detail->pagamento_nf_id = $master->pnf_id;
  266. $detail->store();
  267. }
  268. }
  269. TTransaction::close(); // close the transaction
  270. TForm::sendData('form_PagamentoNf', (object) ['id' => $master->pnf_id]);
  271. new TMessage('info', AdiantiCoreTranslator::translate('Record saved'));
  272. }
  273. catch (Exception $e) // in case of exception
  274. {
  275. new TMessage('error', $e->getMessage());
  276. $this->form->setData( $this->form->getData() ); // keep form data
  277. TTransaction::rollback();
  278. }
  279. }
  280. }
  281. ?>
</your>