| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188 |
- <?php
- Lib::loadClass('RouteBase');
- Lib::loadClass('TypespecialVariable');
- Lib::loadClass('Request');
- Lib::loadClass('Response');
- Lib::loadClass('UI');
- class Route_UrlAction_ProjektyProNetMediaApproveZam extends RouteBase {// TODO: UrlActionBase @see Route_UrlAction
- public function handleAuth() {
- if (!User::logged()) {
- User::authByRequest();
- }
- }
- public function defaultAction() {
- UI::gora();
- if (1 != V::get('_print', '', $_GET)) UI::menu();
- try {
- $data = array();
- $data['id_order'] = V::get('ID_ORDER', 0, $_REQUEST, 'int');
- if (!$data['id_order']) throw new Exception("Error: Brak nr zamówienia!");
- $data = $this->setProps($data);
- $this->approveFormView($data);
- } catch (Exception $e) {
- UI::alert('danger', "Error #" . $e->getCode() . "|" . $e->getLine() . ": " . $e->getMessage());
- }
- UI::dol();
- }
- public function approveOrderAction() {
- UI::gora();
- try {
- $data = array();
- $data['id_order'] = V::get('id_order', 0, $_REQUEST, 'int');
- $data = $this->setProps($data);
- $sqlObj = array();
- $sqlObj['ID'] = $data['id_order'];
- $sqlObj['APPROVE_STATUS'] = 'OCZEKUJE_OSTATECZNEGO_ZATWIERDZENIA';
- $sqlObj['APPROVED_BY'] = User::getFullName();
- $affected = DB::getDB()->UPDATE_OBJ('CRM_LISTA_ZASOBOW_ORDERS', (object)$sqlObj);
- UI::startContainer();
- if ($affected >= 0) {
- UI::alert('success', "Przekazano do ostatecznego zatwierdzenia");
- // TODO: show link to final approve if has access?
- } else {
- UI::alert('danger', "Wystąpiły błędy podczas zmieniania statusu zamówienia");
- }
- echo UI::h('div', ['style'=>"text-align:center"], [
- UI::h('a', ['href'=>"index.php?_route=UrlAction_ProjektyProNetMediaZamZlec&ID_PROJECT={$data['id_project']}", 'class'=>"btn btn-primary"], "Wróć")
- ]);
- UI::endContainer();
- } catch (Exception $e) {
- UI::alert('danger', "Error #" . $e->getCode() . "|" . $e->getLine() . ": " . $e->getMessage());
- }
- UI::dol();
- }
- public function rejectOrderAction() {
- UI::gora();
- try {
- $data = array();
- $data['id_order'] = V::get('id_order', 0, $_REQUEST, 'int');
- $data = $this->setProps($data);
- $sqlObj = array();
- $sqlObj['ID'] = $data['id_order'];
- $sqlObj['APPROVE_STATUS'] = 'ODRZUCONE';
- $sqlObj['APPROVED_BY'] = User::getFullName();
- $affected = DB::getDB()->UPDATE_OBJ('CRM_LISTA_ZASOBOW_ORDERS', (object)$sqlObj);
- UI::startContainer();
- if ($affected >= 0) {
- UI::alert('success', "Zmieniono status zamówienia na ODRZUCONE");
- } else {
- UI::alert('danger', "Wystąpiły błędy podczas zmieniania statusu zamówienia");
- }
- echo UI::h('div', ['style'=>"text-align:center"], [
- UI::h('a', ['href'=>"index.php?_route=UrlAction_ProjektyProNetMediaZamZlec&ID_PROJECT={$data['id_project']}", 'class'=>"btn btn-primary"], "Wróć")
- ]);
- UI::endContainer();
- } catch (Exception $e) {
- UI::alert('danger', "Error #" . $e->getCode() . "|" . $e->getLine() . ": " . $e->getMessage());
- }
- UI::dol();
- }
- public function setProps($data) {
- $idOrder = V::get('id_order', 0, $data, 'int');
- if (!$idOrder) throw new Exception("Error: Brak nr zamówienia!");
- $data['id_order'] = $idOrder;
- $data['zamowienie_label'] = '';
- $data['orderRaw'] = DB::getPDO()->fetchAll("
- select r.ID
- , r.ORDER_LABEL
- , r.ORDER_TYPE
- , r.ID_PROJECT
- , sum(o.OFFER_PRICE_PER_UNIT * o.OFFER_QUANTITY) as SUM_NETTO
- , p.M_DIST_DESC
- , r.A_RECORD_CREATE_AUTHOR
- , r.A_RECORD_CREATE_DATE
- from CRM_LISTA_ZASOBOW_ORDERS r
- join IN7_MK_BAZA_DYSTRYBUCJI p on(p.ID = r.ID_PROJECT)
- left join CRM_LISTA_ZASOBOW_OFFERS o on(
- o.ID_ORDER = r.ID
- and (o.A_STATUS is null or o.A_STATUS not in('DELETED'))
- )
- where (r.A_STATUS is null or r.A_STATUS not in('DELETED'))
- and r.ID = {$idOrder}
- ");
- if (empty($data['orderRaw'])) throw new Exception("Error: Brak danych dla zamówienia {$idOrder}!");
- $data['orderRaw'] = $data['orderRaw'][0];
- $data['zamowienie_label'] = $data['orderRaw']['ORDER_LABEL'];
- $data['zamowienie_suma'] = number_format($data['orderRaw']['SUM_NETTO'], 2, ',', ' ');
- $data['id_project'] = $data['orderRaw']['ID_PROJECT'];
- $data['project_label'] = $data['orderRaw']['M_DIST_DESC'];
- $data['ORDER_TYPE'] = $data['orderRaw']['ORDER_TYPE'];
- return $data;
- }
- public function approveFormView($data) {
- UI::startContainer();
- echo UI::h('h1', [], [
- ('zlecenie' == $data['ORDER_TYPE']) ? "Zlecenie" : "Zamówienie",
- " " . $data['zamowienie_label'],
- '<br>' . "<small>Dotyczy projektu: {$data['project_label']}</small>"
- ]);
- echo UI::h('div', ['class'=>"alert alert-info"], "Suma netto zamówienia: <b>{$data['zamowienie_suma']}</b>");
- echo UI::h('form', ['style'=>"text-align:center"], [
- UI::h('h3', [], "Przekazanie do ostatecznego zatwierdzenia"),
- UI::h('input', ['type'=>"hidden", 'name'=>"_route", 'value'=>"UrlAction_ProjektyProNetMediaApproveZam"]),
- UI::h('input', ['type'=>"hidden", 'name'=>"_task", 'value'=>""]),
- UI::h('input', ['type'=>"hidden", 'name'=>"id_order", 'value'=>$data['id_order']]),
- UI::h('button', ['onClick'=>"return approveOrder(this);", 'class'=>"btn btn-lg btn-primary"], "Zatwierdzam"),
- UI::h('button', ['onClick'=>"return rejectOrder(this);", 'class'=>"btn btn-lg btn-danger", 'style'=>"margin-left:30px"], "Nie zatwierdzam"),
- UI::h('a', [
- 'href' => $this->getLink('msgs') . "&id_order={$data['id_order']}",
- 'class'=>"btn btn-lg btn-warning",
- 'style'=>"margin-left:30px"
- ], "Do wyjaśnienia"),
- ]);
- echo UI::h('hr');
- Router::getRoute('UrlAction_ProjektyProNetMediaZamZlec')->previewOrder($data['id_order']);
- UI::endContainer();
- echo UI::h('script', [], "
- function approveOrder(fld) {
- var frm = fld.form;
- frm['_task'].value='approveOrder';
- }
- function rejectOrder(fld) {
- var frm = fld.form;
- frm['_task'].value='rejectOrder';
- }
- ");
- }
- public function msgsAction() {
- UI::gora();
- UI::menu();
- try {
- $data = $this->setProps([
- 'id_order' => V::get('id_order', 0, $_GET, 'int')
- ]);
- UI::startContainer();
- echo UI::h('h1', [], [
- ('zlecenie' == $data['ORDER_TYPE']) ? "Zlecenie" : "Zamówienie",
- " " . $data['zamowienie_label'],
- '<br>' . "<small>Dotyczy projektu: {$data['project_label']}</small>"
- ]);
- $author = V::get('A_RECORD_CREATE_AUTHOR', '', $data['orderRaw']);
- if ($author) echo UI::h('h4', [], "Autor: {$author}");
- $idTable = DB::getPDO()->fetchValue("
- select z.ID
- from CRM_LISTA_ZASOBOW z
- where z.`DESC` = 'CRM_LISTA_ZASOBOW_ORDERS'
- and z.`TYPE` = 'TABELA'
- ");
- Router::getRoute('TableMsgs')->tableRowMsgs($idTable, $data['id_order']);
- } catch (Exception $e) {
- UI::alert('danger', $e->getMessage());
- }
- UI::dol();
- }
- }
|