ProjektyProNetMediaApproveZam.php 6.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192
  1. <?php
  2. Lib::loadClass('RouteBase');
  3. Lib::loadClass('TypespecialVariable');
  4. Lib::loadClass('Request');
  5. Lib::loadClass('Response');
  6. Lib::loadClass('UI');
  7. class Route_UrlAction_ProjektyProNetMediaApproveZam extends RouteBase {// TODO: UrlActionBase @see Route_UrlAction
  8. public function handleAuth() {
  9. if (!User::logged()) {
  10. User::authByRequest();
  11. }
  12. }
  13. public function defaultAction() {
  14. UI::gora();
  15. if (1 != V::get('_print', '', $_GET)) UI::menu();
  16. try {
  17. $data = array();
  18. $data['id_order'] = V::get('ID_ORDER', 0, $_REQUEST, 'int');
  19. if (!$data['id_order']) throw new Exception("Error: Brak nr zamówienia!");
  20. $data = $this->setProps($data);
  21. $this->approveFormView($data);
  22. } catch (Exception $e) {
  23. UI::alert('danger', "Error #" . $e->getCode() . "|" . $e->getLine() . ": " . $e->getMessage());
  24. }
  25. UI::dol();
  26. }
  27. public function approveOrderAction() {
  28. UI::gora();
  29. try {
  30. $data = array();
  31. $data['id_order'] = V::get('id_order', 0, $_REQUEST, 'int');
  32. $data = $this->setProps($data);
  33. $sqlObj = array();
  34. $sqlObj['ID'] = $data['id_order'];
  35. $sqlObj['APPROVE_STATUS'] = 'OCZEKUJE_OSTATECZNEGO_ZATWIERDZENIA';
  36. $sqlObj['APPROVED_BY'] = User::getFullName();
  37. $affected = DB::getDB()->UPDATE_OBJ('CRM_LISTA_ZASOBOW_ORDERS', (object)$sqlObj);
  38. echo '<div class="container">';
  39. if ($affected >= 0) {
  40. UI::alert('success', "Przekazano do ostatecznego zatwierdzenia");
  41. // TODO: show link to final approve if has access?
  42. } else {
  43. UI::alert('danger', "Wystąpiły błędy podczas zmieniania statusu zamówienia");
  44. }
  45. ?>
  46. <div style="text-align:center">
  47. <a href="index.php?_route=UrlAction_ProjektyProNetMediaZamZlec&ID_PROJECT=<?php echo $data['id_project']; ?>" class="btn btn-primary">Wróć</a>
  48. </div>
  49. <?php
  50. echo '</div>';
  51. } catch (Exception $e) {
  52. UI::alert('danger', "Error #" . $e->getCode() . "|" . $e->getLine() . ": " . $e->getMessage());
  53. }
  54. UI::dol();
  55. }
  56. public function rejectOrderAction() {
  57. UI::gora();
  58. try {
  59. $data = array();
  60. $data['id_order'] = V::get('id_order', 0, $_REQUEST, 'int');
  61. $data = $this->setProps($data);
  62. $sqlObj = array();
  63. $sqlObj['ID'] = $data['id_order'];
  64. $sqlObj['APPROVE_STATUS'] = 'ODRZUCONE';
  65. $sqlObj['APPROVED_BY'] = User::getFullName();
  66. $affected = DB::getDB()->UPDATE_OBJ('CRM_LISTA_ZASOBOW_ORDERS', (object)$sqlObj);
  67. echo '<div class="container">';
  68. if ($affected >= 0) {
  69. UI::alert('success', "Zmieniono status zamówienia na ODRZUCONE");
  70. } else {
  71. UI::alert('danger', "Wystąpiły błędy podczas zmieniania statusu zamówienia");
  72. }
  73. ?>
  74. <div style="text-align:center">
  75. <a href="index.php?_route=UrlAction_ProjektyProNetMediaZamZlec&ID_PROJECT=<?php echo $data['id_project']; ?>" class="btn btn-primary">Wróć</a>
  76. </div>
  77. <?php
  78. echo '</div>';
  79. } catch (Exception $e) {
  80. UI::alert('danger', "Error #" . $e->getCode() . "|" . $e->getLine() . ": " . $e->getMessage());
  81. }
  82. UI::dol();
  83. }
  84. public function setProps($data) {
  85. $idOrder = V::get('id_order', 0, $data, 'int');
  86. if (!$idOrder) throw new Exception("Error: Brak nr zamówienia!");
  87. $data['id_order'] = $idOrder;
  88. $data['zamowienie_label'] = '';
  89. $data['orderRaw'] = DB::getPDO()->fetchAll("
  90. select r.ID
  91. , r.ORDER_LABEL
  92. , r.ORDER_TYPE
  93. , r.ID_PROJECT
  94. , sum(o.OFFER_PRICE_PER_UNIT * o.OFFER_QUANTITY) as SUM_NETTO
  95. , p.M_DIST_DESC
  96. , r.A_RECORD_CREATE_AUTHOR
  97. , r.A_RECORD_CREATE_DATE
  98. from CRM_LISTA_ZASOBOW_ORDERS r
  99. join IN7_MK_BAZA_DYSTRYBUCJI p on(p.ID = r.ID_PROJECT)
  100. left join CRM_LISTA_ZASOBOW_OFFERS o on(
  101. o.ID_ORDER = r.ID
  102. and (o.A_STATUS is null or o.A_STATUS not in('DELETED'))
  103. )
  104. where (r.A_STATUS is null or r.A_STATUS not in('DELETED'))
  105. and r.ID = {$idOrder}
  106. ");
  107. if (empty($data['orderRaw'])) throw new Exception("Error: Brak danych dla zamówienia {$idOrder}!");
  108. $data['orderRaw'] = $data['orderRaw'][0];
  109. $data['zamowienie_label'] = $data['orderRaw']['ORDER_LABEL'];
  110. $data['zamowienie_suma'] = number_format($data['orderRaw']['SUM_NETTO'], 2, ',', ' ');
  111. $data['id_project'] = $data['orderRaw']['ID_PROJECT'];
  112. $data['project_label'] = $data['orderRaw']['M_DIST_DESC'];
  113. $data['ORDER_TYPE'] = $data['orderRaw']['ORDER_TYPE'];
  114. return $data;
  115. }
  116. public function approveFormView($data) {
  117. UI::startContainer();
  118. echo UI::h('h1', [], [
  119. ('zlecenie' == $data['ORDER_TYPE']) ? "Zlecenie" : "Zamówienie",
  120. " " . $data['zamowienie_label'],
  121. '<br>' . "<small>Dotyczy projektu: {$data['project_label']}</small>"
  122. ]);
  123. echo UI::h('div', ['class'=>"alert alert-info"], "Suma netto zamówienia: <b>{$data['zamowienie_suma']}</b>");
  124. echo UI::h('form', ['style'=>"text-align:center"], [
  125. UI::h('h3', [], "Przekazanie do ostatecznego zatwierdzenia"),
  126. UI::h('input', ['type'=>"hidden", 'name'=>"_route", 'value'=>"UrlAction_ProjektyProNetMediaApproveZam"]),
  127. UI::h('input', ['type'=>"hidden", 'name'=>"_task", 'value'=>""]),
  128. UI::h('input', ['type'=>"hidden", 'name'=>"id_order", 'value'=>$data['id_order']]),
  129. UI::h('button', ['onClick'=>"return approveOrder(this);", 'class'=>"btn btn-lg btn-primary"], "Zatwierdzam"),
  130. UI::h('button', ['onClick'=>"return rejectOrder(this);", 'class'=>"btn btn-lg btn-danger", 'style'=>"margin-left:30px"], "Nie zatwierdzam"),
  131. UI::h('a', [
  132. 'href' => $this->getLink('msgs') . "&id_order={$data['id_order']}",
  133. 'class'=>"btn btn-lg btn-warning",
  134. 'style'=>"margin-left:30px"
  135. ], "Do wyjaśnienia"),
  136. ]);
  137. echo UI::h('hr');
  138. Router::getRoute('UrlAction_ProjektyProNetMediaZamZlec')->previewOrder($data['id_order']);
  139. UI::endContainer();
  140. echo UI::h('script', [], "
  141. function approveOrder(fld) {
  142. var frm = fld.form;
  143. frm['_task'].value='approveOrder';
  144. }
  145. function rejectOrder(fld) {
  146. var frm = fld.form;
  147. frm['_task'].value='rejectOrder';
  148. }
  149. ");
  150. }
  151. public function msgsAction() {
  152. UI::gora();
  153. UI::menu();
  154. try {
  155. $data = $this->setProps([
  156. 'id_order' => V::get('id_order', 0, $_GET, 'int')
  157. ]);
  158. UI::startContainer();
  159. echo UI::h('h1', [], [
  160. ('zlecenie' == $data['ORDER_TYPE']) ? "Zlecenie" : "Zamówienie",
  161. " " . $data['zamowienie_label'],
  162. '<br>' . "<small>Dotyczy projektu: {$data['project_label']}</small>"
  163. ]);
  164. $author = V::get('A_RECORD_CREATE_AUTHOR', '', $data['orderRaw']);
  165. if ($author) echo UI::h('h4', [], "Autor: {$author}");
  166. $idTable = DB::getPDO()->fetchValue("
  167. select z.ID
  168. from CRM_LISTA_ZASOBOW z
  169. where z.`DESC` = 'CRM_LISTA_ZASOBOW_ORDERS'
  170. and z.`TYPE` = 'TABELA'
  171. ");
  172. Router::getRoute('TableMsgs')->tableRowMsgs($idTable, $data['id_order']);
  173. } catch (Exception $e) {
  174. UI::alert('danger', $e->getMessage());
  175. }
  176. UI::dol();
  177. }
  178. }