Advertisement
Guest User

Untitled

a guest
Jul 18th, 2018
119
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 13.34 KB | None | 0 0
  1. <?php
  2.  
  3. class PosEsterilizacaoForm extends TPage
  4. {
  5. protected $form;
  6. protected $formFields;
  7. protected $detail_list;
  8. protected $criteria_cartao;
  9.  
  10. public function __construct()
  11. {
  12. parent::__construct();
  13.  
  14. // creates the form
  15. $this->form = new TForm('form_PosEsterilizacao');
  16. $this->form->class = 'tform'; // CSS class
  17. $this->form->style = 'width:100%;'; // style
  18. parent::include_css('app/resources/custom-frame.css');
  19. $table_master = new TTable;
  20. $table_master->width = '100%';
  21.  
  22. $table_master->addRowSet( new TLabel('Pós Esterilização'), '', '')->class = 'tformtitle';
  23.  
  24. $this->criteria_cartao = new TCriteria;
  25. $this->criteria_cartao->add(new TFilter('produto_id','in',"NOESC:(select id from produtos where gruposId=65)"));
  26.  
  27. // add a table inside form
  28. $table_general = new TTable;
  29. $table_detail = new TTable;
  30. $table_composicao = new TTable;
  31. $table_botoes = new TTable;
  32. $table_informacoes = new TTable;
  33. $table_informacoes->width='100%';
  34. $table_composicao->width='100%';
  35. $table_general-> width = '100%';
  36. $table_detail-> width = '100%';
  37.  
  38. $frame_general = new TFrame;
  39. $frame_general->setLegend('Pós Esterilização');
  40. $frame_general->style = 'background:whiteSmoke';
  41. $frame_general->add($table_general);
  42. $frame_general->add($table_botoes);
  43.  
  44. $table_master->addRow()->addCell( $frame_general );
  45. $row = $table_master->addRow();
  46. $row->addCell( $table_detail );
  47.  
  48. $this->form->add($table_master);
  49.  
  50.  
  51. // master fields
  52. $id = new TEntry('id');
  53. $montagens_ids = new TMultiSearch('montagens_ids');
  54. $data_entrada = new TDateTime('data_entrada');
  55. $data_saida = new TDateTime('data_saida');
  56.  
  57. $montagens_ids->setEditable(false);
  58.  
  59. $data_saida->setMask('dd/mm/yyyy hh:ii');
  60. $data_saida->setDatabaseMask('yyyy-mm-dd hh:ii');
  61. $data_saida->setEditable(false);
  62.  
  63. $data_entrada->setMask('dd/mm/yyyy hh:ii');
  64. $data_entrada->setDatabaseMask('yyyy-mm-dd hh:ii');
  65. $data_entrada->setEditable(false);
  66.  
  67. if (!empty($id))
  68. {
  69. $id->setEditable(FALSE);
  70. }
  71.  
  72.  
  73. // create an action button (save)
  74. $save_button=new TButton('save');
  75. $save_button->setAction(new TAction(array($this, 'onSave')), _t('Save'));
  76. $save_button->setImage('fa:save blue');
  77.  
  78. $finalizar=new TButton('finalizar');
  79. $finalizar->setAction(new TAction(array($this, 'onFinalizar')), 'Finalizar Processo');
  80. $finalizar->setImage('fa:check green');
  81. $finalizar->setEditable(false);
  82.  
  83.  
  84. // master
  85. $table_general->addRowSet( new TLabel('Esterilização:'), $id );
  86. $table_general->addRowSet( new TLabel('Ordens de Montagens:'), $montagens_ids );
  87. $table_general->addRowSet( new TLabel('Data Entrada:'), $data_entrada );
  88. $table_general->addRowSet( new TLabel('Data Saída'), $data_saida );
  89.  
  90.  
  91. $table_botoes->addRowSet(array($save_button));
  92.  
  93. $this->detail_list = new BootstrapDatagridWrapper(new TQuickGrid);
  94. $this->detail_list->style='margin-left:10px;';
  95. $this->detail_list->setHeight( 300 );
  96. $this->detail_list->makeScrollable();
  97. $this->detail_list->disableDefaultClick();
  98. // items
  99. $this->detail_list->addQuickColumn('Referência', 'referencia', 'left', 80);
  100. $this->detail_list->addQuickColumn('Produto', 'produto_id', 'left');
  101. $this->detail_list->addQuickColumn('Tipo Unidade', 'tipo_unidade_id', 'left');
  102. $this->detail_list->addQuickColumn('Quantidade', 'quantidade', 'left');
  103. $this->detail_list->addQuickColumn('Nº Lote', 'numero_lote', 'left');
  104. $this->detail_list->addQuickColumn('Cartão', 'cartao_id', 'left');
  105. $this->detail_list->createModel();
  106.  
  107.  
  108.  
  109. $row = $table_detail->addRow();
  110. $row->addCell($this->detail_list);
  111.  
  112.  
  113. // create an new button (edit with no parameters)
  114. $voltar=new TButton('voltar');
  115. $voltar->setAction(new TAction(array('PosEsterilizacaoList', 'onReload')), 'Voltar');
  116. $voltar->setImage('ico_back.png');
  117.  
  118. // define form fields
  119. $this->formFields = array($id,$montagens_ids,$data_entrada,$data_saida,$save_button,$voltar,$finalizar);
  120. $this->form->setFields( $this->formFields );
  121.  
  122. $table_master->addRowSet( array($save_button,$finalizar,$voltar), '', '')->class = 'tformaction'; // CSS class
  123.  
  124. // create the page container
  125. $container = new TVBox;
  126. $container->style = 'width: 100%';
  127. $container->add(new TXMLBreadCrumb('menu.xml', 'PosEsterilizacaoList'));
  128. $container->add($this->form);
  129.  
  130. parent::add($container);
  131. }
  132.  
  133. public static function onChangeCartao($param)
  134. {
  135. $items = TSession::getValue(__CLASS__.'_items');
  136. $parts = explode('_',$param['_field_name']);
  137. $key = $parts[1];
  138. $items[ $key ]['cartao_id'] = $param['_field_value'];
  139. TSession::setValue(__CLASS__.'_items', $items);
  140. }
  141.  
  142. public static function onFinalizar($param)
  143. {
  144. if($param['id']!=null)
  145. {
  146. $action = new TAction(array('PosEsterilizacaoForm', 'Finalizar'));
  147. $action->setParameters($param);
  148. new TQuestion('Você realmente quer finalizar essa produção? Os cartões serão <b>deduzidos</b> do estoque!', $action);
  149. }
  150. }
  151.  
  152. public static function Finalizar($param)
  153. {
  154. try
  155. {
  156. TTransaction::open('sample');
  157. $master = new Esterilizacao($param['id']);
  158. $string=null;
  159. $ficha_consumo=null;
  160. $items = TSession::getValue(__CLASS__.'_items');
  161. if( $items )
  162. {
  163. foreach( $items as $item )
  164. {
  165. $lote = new Lote($item['id']);
  166. $lote->montagem_item->montagem->ficha_consumo .= Montagem::reduz($item['cartao_id'],$item['quantidade']);
  167. $lote->store();
  168. }
  169. }
  170. $esterilizacao_montagens = $master->getMontagens();
  171. foreach($esterilizacao_montagens as $esterilizacao_montagem)
  172. {
  173. $montagem = new Montagem($esterilizacao_montagem->montagem_id);
  174. $montagem->situacao_id = 6;
  175. $montagem->store();
  176. }
  177. $master->store();
  178.  
  179. TTransaction::close();
  180. Utils::setMensagem('info','Processo de Montagem concluído com sucesso');
  181. AdiantiCoreApplication::loadPage('MontagemList','onReload');
  182. }catch(Exception $e)
  183. {
  184. new TMessage('error',$e->getMessage());
  185. }
  186.  
  187. }
  188.  
  189. public function onClear($param)
  190. {
  191. TSession::setValue(__CLASS__.'situacao', 1);
  192. TSession::setValue(__CLASS__.'_items', array());
  193. $this->form->clear(TRUE);
  194.  
  195.  
  196. $this->onReload( $param );
  197. }
  198.  
  199. public function onReload($param)
  200. {
  201. // read session items
  202. $items = TSession::getValue(__CLASS__.'_items');
  203.  
  204. $this->detail_list->clear(); // clear detail list
  205. $data = $this->form->getData();
  206. $itens_editaveis=0;
  207. $produzido_editavel=0;
  208.  
  209.  
  210. //variaveis
  211. $totalPedido=0;
  212. $totalProduzido=0;
  213.  
  214. if ($items)
  215. {
  216. $cont = 1;
  217. foreach ($items as $list_item_key => $list_item)
  218. {
  219. $item_name = 'prod_' . $cont++;
  220. $item = new StdClass;
  221.  
  222.  
  223. // items
  224. $item->id = $list_item['id'];
  225.  
  226. $id = $list_item['produto_id'];
  227.  
  228. TTransaction::open('sample');
  229. $produto = new Produto($id);
  230. $tarraxa = new Insumo($list_item['tarraxa_id']);
  231. $berco = new Insumo($list_item['berco_id']);
  232.  
  233. $item->produto_id = $produto->descricao;
  234. $item->tarraxa_id = $tarraxa->produto->descricao;
  235. $item->berco_id = $berco->produto->descricao;
  236. $item->tipo_unidade_id = $produto->tipo_unidade->descricao;
  237. $item->referencia = $produto->referencia;
  238. $item->quantidade = $list_item['quantidade'];
  239. $item->numero_lote = $list_item['numero_lote'];
  240.  
  241. TTransaction::close();
  242.  
  243. //CRIAÇÃO DO TDBCOMBO
  244. $item->cartao_id = new TDBCombo('inline_'.$item->id,'sample','Insumo','id',' {produto->descricao} - Lote: {numero_lote} / Disponível: {quantidade_disponivel}','numero_lote',$this->criteria_cartao);
  245. $item->cartao_id->setSize(300);
  246. $item->cartao_id->setValue($list_item['cartao_id']);
  247. $item->cartao_id->setChangeAction(new TAction(array($this,'onChangeCartao')));
  248. $this->form->addField($item->cartao_id);
  249.  
  250. $row = $this->detail_list->addItem( $item );
  251. }
  252. $this->form->setFields( $this->formFields );
  253. }
  254.  
  255. if(TSession::getValue(__CLASS__.'mensagem')!=null)
  256. {
  257. new TMessage('info',TSession::getValue(__CLASS__.'mensagem'));
  258. TSession::setValue(__CLASS__.'mensagem',null);
  259. }
  260. $obj = new stdClass;
  261. $obj->total_pedido = $totalPedido;
  262. $obj->total_produzido = $totalProduzido;
  263. TForm::sendData('form_Montagem',$obj);
  264.  
  265. $this->loaded = TRUE;
  266. }
  267.  
  268.  
  269. public function onEdit($param)
  270. {
  271. try
  272. {
  273. TTransaction::open('sample');
  274.  
  275. if (isset($param['key']))
  276. {
  277. $key = $param['key'];
  278.  
  279. $object = new Esterilizacao($key);
  280.  
  281. $montagens_ids = null;
  282. $itens_combo = [];
  283. $montagens = $object->getMontagens();
  284. foreach($montagens as $montagem)
  285. {
  286. $montagens_ids = ($montagens_ids==null)?'':',';
  287. $montagens_ids = $montagem->montagem_id;
  288. $itens_combo[$montagem->montagem_id] = $montagem->montagem_id;
  289. }
  290. $object->montagens_ids = $itens_combo;
  291.  
  292. $items = Lote::where('montagem_item_id', 'in', "NOESC:(Select id from montagem_itens where montagem_id in (".$montagens_ids."))")->load();
  293. $session_items = array();
  294. foreach( $items as $item )
  295. {
  296. $item_key = $item->id;
  297. $session_items[$item_key] = $item->toArray();
  298. $session_items[$item_key]['id'] = $item->id;
  299. $session_items[$item_key]['produto_id'] = $item->produto_id;
  300. $session_items[$item_key]['quantidade'] = $item->quantidade;
  301. $session_items[$item_key]['numero_lote'] = $item->numero_lote;
  302. $session_items[$item_key]['tarraxa_id'] = $item->montagem_item->tarraxa_id;
  303. $session_items[$item_key]['berco_id'] = $item->montagem_item->berco_id;
  304. $session_items[$item_key]['cartao_id'] = $item->cartao_id;
  305. $session_items[$item_key]['tipo_unidade_id'] = $item->produto->tipo_unidade_id;
  306. }
  307. TSession::setValue(__CLASS__.'_items', $session_items);
  308.  
  309. $this->form->setData($object);
  310. $this->onReload( $param );
  311. TTransaction::close();
  312. }
  313. else
  314. {
  315. $this->form->clear(TRUE);
  316. TSession::setValue(__CLASS__.'_items', null);
  317. $this->onReload( $param );
  318. }
  319. }
  320. catch (Exception $e) // in case of exception
  321. {
  322. new TMessage('error', $e->getMessage());
  323. TTransaction::rollback();
  324. }
  325. }
  326.  
  327. /**
  328. * Save the Master/Detail data from form/session to database
  329. */
  330. public function onSave()
  331. {
  332. try
  333. {
  334. // open a transaction with database
  335. TTransaction::open('sample');
  336.  
  337. $data = $this->form->getData();
  338. $master = new Esterilizacao;
  339. $master->fromArray( (array) $data);
  340. $this->form->validate(); // form validation
  341.  
  342. $master->store(); // save master object
  343.  
  344. // get session items
  345. $items = TSession::getValue(__CLASS__.'_items');
  346. if( $items )
  347. {
  348. foreach( $items as $item )
  349. {
  350. $detail = Lote::find($item['id']);
  351. $detail->cartao_id = $item['cartao_id'];
  352. $detail->store();
  353. }
  354. }
  355. TTransaction::close(); // close the transaction
  356.  
  357. // reload form and session items
  358. $this->onEdit(array('key'=>$master->id));
  359. new TMessage('info', TAdiantiCoreTranslator::translate('Record saved'));
  360.  
  361. }
  362. catch (Exception $e) // in case of exception
  363. {
  364. new TMessage('error', $e->getMessage());
  365. $this->form->setData( $this->form->getData() ); // keep form data
  366. TTransaction::rollback();
  367. }
  368. }
  369.  
  370. /**
  371. * Show the page
  372. */
  373. public function show()
  374. {
  375. // check if the datagrid is already loaded
  376. if (!$this->loaded AND (!isset($_GET['method']) OR $_GET['method'] !== 'onReload') )
  377. {
  378. $this->onReload( func_get_arg(0) );
  379. }
  380. parent::show();
  381. }
  382. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement