ProjektyProNetMediaRequestApproveZam.php 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  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_ProjektyProNetMediaRequestApproveZam 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. if (V::get('_change', '', $_POST)) {
  22. $this->changeStatusToWaitingApproval($data);
  23. } else {
  24. $this->previewOrder($data);
  25. }
  26. } catch (Exception $e) {
  27. UI::alert('danger', "Error #" . $e->getCode() . "|" . $e->getLine() . ": " . $e->getMessage());
  28. }
  29. UI::dol();
  30. }
  31. public function setProps($data) {
  32. $idOrder = V::get('id_order', 0, $data, 'int');
  33. if (!$idOrder) throw new Exception("Error: Brak nr zamówienia!");
  34. $data['id_order'] = $idOrder;
  35. $data['zamowienie_label'] = '';
  36. $data['orderRaw'] = DB::getPDO()->fetchAll("
  37. select r.ID
  38. , r.ORDER_LABEL
  39. , r.ORDER_TYPE
  40. , r.ID_PROJECT
  41. , sum(o.OFFER_PRICE_PER_UNIT * o.OFFER_QUANTITY) as SUM_NETTO
  42. , p.M_DIST_DESC
  43. from CRM_LISTA_ZASOBOW_ORDERS r
  44. join IN7_MK_BAZA_DYSTRYBUCJI p on(p.ID = r.ID_PROJECT)
  45. left join CRM_LISTA_ZASOBOW_OFFERS o on(
  46. o.ID_ORDER = r.ID
  47. and (o.A_STATUS is null or o.A_STATUS not in('DELETED'))
  48. )
  49. where (r.A_STATUS is null or r.A_STATUS not in('DELETED'))
  50. and r.ID = {$idOrder}
  51. ");
  52. if (empty($data['orderRaw'])) throw new Exception("Error: Brak danych dla zamówienia {$idOrder}!");
  53. $data['orderRaw'] = $data['orderRaw'][0];
  54. $data['zamowienie_label'] = $data['orderRaw']['ORDER_LABEL'];
  55. $data['zamowienie_suma'] = number_format($data['orderRaw']['SUM_NETTO'], 2, ',', ' ');
  56. $data['id_project'] = $data['orderRaw']['ID_PROJECT'];
  57. $data['project_label'] = $data['orderRaw']['M_DIST_DESC'];
  58. $data['ORDER_TYPE'] = $data['orderRaw']['ORDER_TYPE'];
  59. return $data;
  60. }
  61. public function previewOrder($data) {
  62. UI::startContainer();
  63. echo UI::h('h1', [], [
  64. ('zlecenie' == $data['ORDER_TYPE']) ? "Zlecenie" : "Zamówienie",
  65. ': ' . $data['zamowienie_label'],
  66. '<br>',
  67. UI::h('small', [], "Dotyczy projektu: {$data['project_label']}")
  68. ]);
  69. UI::alert('info', "Suma netto zamówienia: <b>{$data['zamowienie_suma']}</b>");
  70. echo UI::h('form', ['style'=>"text-align:center", 'method'=>"post"], [
  71. UI::h('input', ['type'=>"hidden", 'name'=>"_route", 'value'=>"UrlAction_ProjektyProNetMediaRequestApproveZam"]),
  72. UI::h('input', ['type'=>"hidden", 'name'=>"ID_ORDER", 'value'=>$data['id_order']]),
  73. UI::h('input', ['type'=>"hidden", 'name'=>"_change", 'value'=>"1"]),
  74. UI::h('input', ['type'=>"submit", 'class'=>"btn btn-lg btn-primary", 'value'=>"Zmień status"]),
  75. UI::h('span', ['style'=>"font-size:1.6em"], "na <code>OCZEKUJE_ZATWIERDZENIA</code>"),
  76. ]);
  77. echo UI::h('hr');
  78. Router::getRoute('UrlAction_ProjektyProNetMediaZamZlec')->previewOrder($data['id_order']);
  79. UI::endContainer();
  80. }
  81. public function changeStatusToWaitingApproval($data) {
  82. $idOrder = V::get('id_order', 0, $data, 'int');
  83. if (!$idOrder) throw new Exception("Error: Brak nr zamówienia!");
  84. $sqlObj = array();
  85. $sqlObj['ID'] = $idOrder;
  86. $sqlObj['APPROVE_STATUS'] = 'OCZEKUJE_ZATWIERDZENIA';
  87. $affected = DB::getDB()->UPDATE_OBJ('CRM_LISTA_ZASOBOW_ORDERS', (object)$sqlObj);
  88. UI::startContainer();
  89. if ($affected >= 0) {
  90. UI::alert('success', "Zmieniono status zamówienia na OCZEKUJE_ZATWIERDZENIA");
  91. } else {
  92. UI::alert('danger', "Wystąpiły błędy podczas zmieniania statusu zamówienia");
  93. }
  94. echo UI::h('div', ['style'=>"text-align:center"], [
  95. UI::h('a', ['href'=>"index.php?_route=UrlAction_ProjektyProNetMediaZamZlec&ID_PROJECT={$data['id_project']}", 'class'=>"btn btn-primary"], "Wróć")
  96. ]);
  97. UI::endContainer();
  98. }
  99. }