ProjektyProNetMediaRequestApproveZam.php 3.8 KB

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