ProjektyProNetMediaRequestApproveZam.php 3.9 KB

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