ProjektyProNetMediaApproveZam.php 5.4 KB

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