ProjektyProNetMediaFinalApproveZam.php 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151
  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_ProjektyProNetMediaFinalApproveZam 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->finalApproveFormView($data);
  22. } catch (Exception $e) {
  23. UI::alert('danger', "Error #" . $e->getCode() . "|" . $e->getLine() . ": " . $e->getMessage());
  24. }
  25. UI::dol();
  26. }
  27. public function finalApproveOrderAction() {
  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'] = 'ZATWIERDZONE';
  36. $sqlObj['APPROVED_BY'] = User::getFullName();
  37. $affected = DB::getDB()->UPDATE_OBJ('CRM_LISTA_ZASOBOW_ORDERS', (object)$sqlObj);
  38. UI::startContainer();
  39. if ($affected >= 0) {
  40. UI::alert('success', "Zmieniono status zamówienia na ZATWIERDZONE");
  41. } else {
  42. UI::alert('danger', "Wystąpiły błędy podczas zmieniania statusu zamówienia");
  43. }
  44. echo UI::h('div', ['style'=>"text-align:center"], [
  45. UI::h('a', ['href'=>"index.php?_route=UrlAction_ProjektyProNetMediaZamZlec&ID_PROJECT={$data['id_project']}", 'class'=>"btn btn-primary"], "Wróć")
  46. ]);
  47. UI::endContainer();
  48. } catch (Exception $e) {
  49. UI::alert('danger', "Error #" . $e->getCode() . "|" . $e->getLine() . ": " . $e->getMessage());
  50. }
  51. UI::dol();
  52. }
  53. public function rejectOrderAction() {
  54. UI::gora();
  55. try {
  56. $data = array();
  57. $data['id_order'] = V::get('id_order', 0, $_REQUEST, 'int');
  58. $data = $this->setProps($data);
  59. $sqlObj = array();
  60. $sqlObj['ID'] = $data['id_order'];
  61. $sqlObj['APPROVE_STATUS'] = 'ODRZUCONE';
  62. $sqlObj['APPROVED_BY'] = User::getFullName();
  63. $affected = DB::getDB()->UPDATE_OBJ('CRM_LISTA_ZASOBOW_ORDERS', (object)$sqlObj);
  64. UI::startContainer();
  65. if ($affected >= 0) {
  66. UI::alert('success', "Zmieniono status zamówienia na ODRZUCONE");
  67. } else {
  68. UI::alert('danger', "Wystąpiły błędy podczas zmieniania statusu zamówienia");
  69. }
  70. echo UI::h('div', ['style'=>"text-align:center"], [
  71. UI::h('a', ['href'=>"index.php?_route=UrlAction_ProjektyProNetMediaZamZlec&ID_PROJECT={$data['id_project']}", 'class'=>"btn btn-primary"], "Wróć")
  72. ]);
  73. UI::endContainer();
  74. } catch (Exception $e) {
  75. UI::alert('danger', "Error #" . $e->getCode() . "|" . $e->getLine() . ": " . $e->getMessage());
  76. }
  77. UI::dol();
  78. }
  79. public function setProps($data) {
  80. $idOrder = V::get('id_order', 0, $data, 'int');
  81. if (!$idOrder) throw new Exception("Error: Brak nr zamówienia!");
  82. $data['id_order'] = $idOrder;
  83. $data['zamowienie_label'] = '';
  84. $data['orderRaw'] = DB::getPDO()->fetchAll("
  85. select r.ID
  86. , r.ORDER_LABEL
  87. , r.ORDER_TYPE
  88. , r.ID_PROJECT
  89. , sum(o.OFFER_PRICE_PER_UNIT * o.OFFER_QUANTITY) as SUM_NETTO
  90. , p.M_DIST_DESC
  91. from CRM_LISTA_ZASOBOW_ORDERS r
  92. join IN7_MK_BAZA_DYSTRYBUCJI p on(p.ID = r.ID_PROJECT)
  93. left join CRM_LISTA_ZASOBOW_OFFERS o on(
  94. o.ID_ORDER = r.ID
  95. and (o.A_STATUS is null or o.A_STATUS not in('DELETED'))
  96. )
  97. where (r.A_STATUS is null or r.A_STATUS not in('DELETED'))
  98. and r.ID = {$idOrder}
  99. ");
  100. if (empty($data['orderRaw'])) throw new Exception("Error: Brak danych dla zamówienia {$idOrder}!");
  101. $data['orderRaw'] = $data['orderRaw'][0];
  102. $data['zamowienie_label'] = $data['orderRaw']['ORDER_LABEL'];
  103. $data['zamowienie_suma'] = number_format($data['orderRaw']['SUM_NETTO'], 2, ',', ' ');
  104. $data['id_project'] = $data['orderRaw']['ID_PROJECT'];
  105. $data['project_label'] = $data['orderRaw']['M_DIST_DESC'];
  106. $data['ORDER_TYPE'] = $data['orderRaw']['ORDER_TYPE'];
  107. return $data;
  108. }
  109. public function finalApproveFormView($data) {
  110. UI::startContainer();
  111. echo UI::h('h1', [], [
  112. ('zlecenie' == $data['ORDER_TYPE']) ? "Zlecenie" : "Zamówienie",
  113. ': ',
  114. $data['zamowienie_label'],
  115. '<br>',
  116. UI::h('small', [], "Dotyczy projektu: {$data['project_label']}")
  117. ]);
  118. echo UI::alert('info', "Suma netto zamówienia: <b>{$data['zamowienie_suma']}</b>");
  119. echo UI::h('form', ['style'=>"text-align:center"], [
  120. UI::h('input', ['type'=>"hidden", 'name'=>"_route", 'value'=>"UrlAction_ProjektyProNetMediaFinalApproveZam"]),
  121. UI::h('input', ['type'=>"hidden", 'name'=>"_task", 'value'=>""]),
  122. UI::h('input', ['type'=>"hidden", 'name'=>"id_order", 'value'=>$data['id_order']]),
  123. UI::h('button', ['onClick'=>"return finalApproveOrder(this);", 'class'=>"btn btn-lg btn-primary"], "Zatwierdzam"),
  124. UI::h('button', ['onClick'=>"return rejectOrder(this);", 'class'=>"btn btn-lg btn-danger", 'style'=>"margin-left:30px"], "Nie zatwierdzam"),
  125. ]);
  126. echo UI::h('hr');
  127. Router::getRoute('UrlAction_ProjektyProNetMediaZamZlec')->previewOrder($data['id_order']);
  128. UI::endContainer();
  129. echo UI::h('script', [], "
  130. function finalApproveOrder(fld) {
  131. var frm = fld.form;
  132. frm['_task'].value='finalApproveOrder';
  133. }
  134. function rejectOrder(fld) {
  135. var frm = fld.form;
  136. frm['_task'].value='rejectOrder';
  137. }
  138. ");
  139. }
  140. }