Просмотр исходного кода

updated Zaliczka Wniosek remove, confirm

Piotr Labudda 9 лет назад
Родитель
Сommit
cef833f027

+ 104 - 0
SE/schema/gui/core/default_db.zaliczka_wniosek_info_view.php

@@ -0,0 +1,104 @@
+<?php
+
+class Schema__Core__default_db__zaliczka_wniosek_info_view extends Schema_TableBase {
+
+	public function initTypes() {
+		parent::initTypes();
+	}
+
+  public function getPrimaryKeyField() {
+		return 'ID';
+	}
+
+  public function getRootTableName() { return 'ZALICZKA_WNIOSEK'; }
+  public function getHistTableName() { return 'ZALICZKA_WNIOSEK_HIST'; }
+	public function getSqlFieldList() {// TODO: rename
+		return [
+			'ID',
+			'created',
+			'A_RECORD_CREATE_DATE',
+			'A_RECORD_CREATE_AUTHOR',
+			'A_RECORD_UPDATE_DATE',
+			'A_RECORD_UPDATE_AUTHOR',
+			'L_APPOITMENT_USER',
+			'A_STATUS',
+			'KWOTA',
+			'UWAGI',
+			'APPROVED_BY',
+			'status',
+			'ID_USER', // ADMIN_USERS.ID as ID_USER
+		];
+	}
+	public function getSqlHistFieldList() {// TODO: rename
+		return [
+			'ID',
+			'A_RECORD_CREATE_DATE',
+			'A_RECORD_CREATE_AUTHOR',
+			'A_RECORD_UPDATE_DATE',
+			'A_RECORD_UPDATE_AUTHOR',
+			'L_APPOITMENT_USER',
+			'A_STATUS',
+			'KWOTA',
+			'UWAGI',
+			'APPROVED_BY',
+		];
+	}
+
+	public function hasGetHistItems() { return true; }
+	public function getHistItems($pk) {
+		$fieldList = $this->getSqlHistFieldList();// TODO: method or _simpleSchema
+		$sqlSelect = implode(", ", array_map(
+			function ($fieldName) {
+				return "t.`{$fieldName}`";
+			},
+			$fieldList
+		));
+		$histTableName = $this->getHistTableName();
+		return array_map(function ($row) {
+			$row['_author'] = $row['A_RECORD_UPDATE_AUTHOR'];
+			$row['_created'] = $row['A_RECORD_UPDATE_DATE'];
+
+			if (!$row['_author'] || $row['_author'] == 'N/S;') {
+				$row['_author'] = $row['A_RECORD_CREATE_AUTHOR'];
+			}
+			if (!$row['_created'] || $row['_created'] == 'N/S;') {
+				$row['_created'] = $row['A_RECORD_CREATE_DATE'];
+			}
+			return $row;
+		}, DB::getPDO()->fetchAll("
+			select {$sqlSelect}
+			from `{$histTableName}` as t
+			where t.`ID_USERS2`='{$pk}'
+			order by t.ID DESC
+		"));
+	}
+
+}
+/*
+	CREATE OR REPLACE VIEW `ZALICZKA_WNIOSEK_INFO_VIEW` AS
+	select t.ID
+			, t.A_RECORD_CREATE_DATE as created
+			, t.A_RECORD_CREATE_DATE
+			, t.A_RECORD_CREATE_AUTHOR
+			, t.A_RECORD_UPDATE_DATE
+			, t.A_RECORD_UPDATE_AUTHOR
+			, u.ID as ID_USER
+			, t.L_APPOITMENT_USER
+			, t.A_STATUS
+			, t.KWOTA
+			, t.UWAGI
+			, t.APPROVED_BY
+			, IF('WAITING' = t.A_STATUS, 'Oczekuje zatwierdzenia',
+					IF ('NORMAL' = t.A_STATUS, 'Zatwierdzony',
+						IF ('OFF_HARD' = t.A_STATUS, 'Odrzucony',
+							IF ('DELETED' = t.A_STATUS, 'Anulowany',
+								'nieznany'
+							)
+						)
+					)
+				) as status
+	from ZALICZKA_WNIOSEK t
+		join ADMIN_USERS u on(u.ADM_ACCOUNT = t.L_APPOITMENT_USER)
+	-- where t.A_STATUS not in ('DELETED')
+	group by t.ID
+*/

+ 6 - 2
SE/se-lib/Route/UrlAction/UserProNetMediaZaliczka.php

@@ -572,6 +572,10 @@ class Route_UrlAction_UserProNetMediaZaliczka extends RouteBase {// TODO: UrlAct
 					CREATE OR REPLACE VIEW `ZALICZKA_WNIOSEK_INFO_VIEW` AS
 					select t.ID
 							, t.A_RECORD_CREATE_DATE as created
+							, t.A_RECORD_CREATE_DATE
+							, t.A_RECORD_CREATE_AUTHOR
+							, t.A_RECORD_UPDATE_DATE
+							, t.A_RECORD_UPDATE_AUTHOR
 							, u.ID as ID_USER
 							, t.L_APPOITMENT_USER
 							, t.A_STATUS
@@ -581,7 +585,7 @@ class Route_UrlAction_UserProNetMediaZaliczka extends RouteBase {// TODO: UrlAct
 							, IF('WAITING' = t.A_STATUS, 'Oczekuje zatwierdzenia',
 									IF ('NORMAL' = t.A_STATUS, 'Zatwierdzony',
 										IF ('OFF_HARD' = t.A_STATUS, 'Odrzucony',
-											IF ('OFF_HARD' = t.A_STATUS, 'Anulowany',
+											IF ('DELETED' = t.A_STATUS, 'Anulowany',
 												'nieznany'
 											)
 										)
@@ -589,7 +593,7 @@ class Route_UrlAction_UserProNetMediaZaliczka extends RouteBase {// TODO: UrlAct
 								) as status
 					from ZALICZKA_WNIOSEK t
 						join ADMIN_USERS u on(u.ADM_ACCOUNT = t.L_APPOITMENT_USER)
---					where t.A_STATUS not in ('DELETED')
+					-- where t.A_STATUS not in ('DELETED')
 					group by t.ID
 				");
 

+ 11 - 22
SE/se-lib/Route/UrlAction/UserProNetMediaZaliczkaWniosekConfirm.php

@@ -88,6 +88,7 @@ class Route_UrlAction_UserProNetMediaZaliczkaWniosekConfirm extends RouteBase {
       ]);
       DBG::log(['msg'=>"update Wniosek(affected={$affected})", '$wniosek'=>$wniosek]);
       UI::alert('info', "Wniosek o zaliczkę został odrzucony");
+      echo $this->viewWniosek($props['wniosek']);
     } catch (Exception $e) {
       UI::alert('danger', $e->getMessage());
       DBG::log($e);
@@ -104,45 +105,33 @@ class Route_UrlAction_UserProNetMediaZaliczkaWniosekConfirm extends RouteBase {
       $props = $this->getProps([
         'idZaliczkaWniosek' => V::get('idZaliczkaWniosek', 0, $_GET, 'int')
       ]);
-      $idZaliczkaWniosek = $props['idZaliczkaWniosek'];
-      $wniosekAcl = $props['wniosekAcl'];
-      $wniosek = $props['wniosek'];
 
-      if ('Anulowany' == $wniosek['status']) throw new Exception("Wniosek o numerze {$idZaliczkaWniosek} został wcześniej anulowany");
-      if ('Odrzucony' == $wniosek['status']) throw new Exception("Wniosek o numerze {$idZaliczkaWniosek} został wcześniej odrzucony");
-      if ('Zatwierdzony' == $wniosek['status']) throw new Exception("Wniosek o numerze {$idZaliczkaWniosek} został już wcześniej zatwierdzony");
-      // if ('Oczekuje zatwierdzenia' !== $wniosek['status']) throw new Exception("Wniosek o numerze {$idZaliczkaWniosek} ma nieznany status");
+      if ('Anulowany' == $props['wniosek']['status']) throw new Exception("Wniosek o numerze {$props['idZaliczkaWniosek']} został wcześniej anulowany");
+      if ('Odrzucony' == $props['wniosek']['status']) throw new Exception("Wniosek o numerze {$props['idZaliczkaWniosek']} został wcześniej odrzucony");
+      if ('Zatwierdzony' == $props['wniosek']['status']) throw new Exception("Wniosek o numerze {$props['idZaliczkaWniosek']} został już wcześniej zatwierdzony");
+      // if ('Oczekuje zatwierdzenia' !== $props['wniosek']['status']) throw new Exception("Wniosek o numerze {$props['idZaliczkaWniosek']} ma nieznany status");
 
       echo UI::h('h1', [], "Wniosek o wypłatę zaliczki");
+      DBG::log(['msg'=>'wniosek', 'wniosek'=>$props['wniosek']]);
+      echo $this->viewWniosek($props['wniosek']);
       echo UI::h('div', ['style' => "text-align:center; padding:32px"], [
         UI::h('a', [
-          'href' => Request::getPathUri() . "?_route=UrlAction_UserProNetMediaZaliczkaWniosekConfirm&idZaliczkaWniosek={$idZaliczkaWniosek}&_task=confirm",
+          'href' => Request::getPathUri() . "?_route=UrlAction_UserProNetMediaZaliczkaWniosekConfirm&idZaliczkaWniosek={$props['idZaliczkaWniosek']}&_task=confirm",
           'class' => "btn btn-lg btn-primary",
           'style' => "margin-right:24px"
         ], "Zatwierdź"),
         UI::h('a', [
-          'href' => Request::getPathUri() . "?_route=UrlAction_UserProNetMediaZaliczkaWniosekConfirm&idZaliczkaWniosek={$idZaliczkaWniosek}&_task=reject",
+          'href' => Request::getPathUri() . "?_route=UrlAction_UserProNetMediaZaliczkaWniosekConfirm&idZaliczkaWniosek={$props['idZaliczkaWniosek']}&_task=reject",
           'class' => "btn btn-lg btn-danger",
           'style' => "margin-left:24px"
         ], "Odrzuć"),
       ]);
-      echo UI::h('hr');
-      DBG::log(['msg'=>'$wniosek', '$wniosek'=>$wniosek]);
-      echo $this->viewWniosek($wniosek);
 
       echo UI::h('hr');
-      echo UI::h('h3', [], "Pozostałe wnioski pracownika <code>{$wniosek['workerLogin']}</code>:");
+      echo UI::h('h3', [], "Pozostałe wnioski pracownika <code>{$props['wniosek']['workerLogin']}</code>:");
       Router::getRoute('UrlAction_UserProNetMediaZaliczka')->viewWidgetUserWnioski([
-        'idUser' => $wniosek['workerID']
+        'idUser' => $props['wniosek']['workerID']
       ]);
-
-			// $wniosekAcl->updateItem([
-			// 	'id' => $idZaliczkaWniosek,
-			// 	'status' => "Anulowany"
-			// ]);
-
-      // UI::alert('success', "Wniosek anulowany");
-
     } catch (Exception $e) {
       UI::alert('danger', $e->getMessage());
       DBG::log($e);

+ 71 - 18
SE/se-lib/Route/UrlAction/UserProNetMediaZaliczkaWniosekRemove.php

@@ -20,27 +20,74 @@ class Route_UrlAction_UserProNetMediaZaliczkaWniosekRemove extends RouteBase {
     ];
   }
 
+  public function getProps($args) {
+    $idZaliczkaWniosek = V::get('idZaliczkaWniosek', 0, $_GET, 'int');
+    if ($idZaliczkaWniosek <= 0) throw new Exception("Missing param idZaliczkaWniosek");
+    $wniosekAcl = ACL::getAclByNamespace('default_db/ZALICZKA_WNIOSEK/ZaliczkaWniosek');
+    $wniosek = $wniosekAcl->getItem($idZaliczkaWniosek);
+    if (!$wniosek) throw new Exception("Wniosek o numerze {$idZaliczkaWniosek} nie został odnaleziony w bazie danych");
+    $props = [
+      'idZaliczkaWniosek' => $idZaliczkaWniosek,
+      'wniosekAcl' => $wniosekAcl,
+      'wniosek' => $wniosek,
+    ];
+    return $props;
+  }
+
+  public function cancelAction() {
+    UI::gora();
+    UI::menu();
+		UI::startContainer();
+    try {
+      $props = $this->getProps([
+        'idZaliczkaWniosek' => V::get('idZaliczkaWniosek', 0, $_GET, 'int')
+      ]);
+
+      $affected = $props['wniosekAcl']->updateItem([
+        'id' => $props['idZaliczkaWniosek'],
+        'status' => "Anulowany"
+      ]);
+      DBG::log(['msg'=>"update Wniosek(affected={$affected})", '$wniosek'=>$wniosek]);
+      UI::alert('success', "Wniosek o zaliczkę został anulowany");
+      echo $this->viewWniosek($props['wniosek']);
+    } catch (Exception $e) {
+      UI::alert('danger', $e->getMessage());
+      DBG::log($e);
+    }
+    UI::endContainer();
+		UI::dol();
+  }
+
   public function defaultAction() {
 		UI::gora();
 		UI::menu();
 		UI::startContainer();
     try {
-      $idZaliczkaWniosek = V::get('idZaliczkaWniosek', 0, $_GET, 'int');
-      if ($idZaliczkaWniosek <= 0) throw new Exception("Missing param idZaliczkaWniosek");
-      $wniosekAcl = ACL::getAclByNamespace('default_db/ZALICZKA_WNIOSEK/ZaliczkaWniosek');
-      $wniosek = $wniosekAcl->getItem($idZaliczkaWniosek);
-      if (!$wniosek) throw new Exception("Wniosek o numerze {$idZaliczkaWniosek} nie został odnaleziony w bazie danych");
-
-      if ('Anulowany' == $wniosek['status']) throw new Exception("Wniosek o numerze {$idZaliczkaWniosek} został już anulowany wcześniej");
-      if ('Odrzucony' == $wniosek['status']) throw new Exception("Wniosek o numerze {$idZaliczkaWniosek} został odrzucony");
-      if ('Zatwierdzony' == $wniosek['status']) throw new Exception("Wniosek o numerze {$idZaliczkaWniosek} został zatwierdzony");
-      // if ('Oczekuje zatwierdzenia' !== $wniosek['status']) throw new Exception("Wniosek o numerze {$idZaliczkaWniosek} ma nieznany status");
-			$wniosekAcl->updateItem([
-				'id' => $idZaliczkaWniosek,
-				'status' => "Anulowany"
-			]);
-
-      UI::alert('success', "Wniosek anulowany");
+      $props = $this->getProps([
+        'idZaliczkaWniosek' => V::get('idZaliczkaWniosek', 0, $_GET, 'int')
+      ]);
+      if (!$props['wniosek']) throw new Exception("Wniosek o numerze {$props['idZaliczkaWniosek']} nie został odnaleziony w bazie danych");
+
+      if ('Anulowany' == $props['wniosek']['status']) throw new Exception("Wniosek o numerze {$props['idZaliczkaWniosek']} został już anulowany wcześniej");
+      if ('Odrzucony' == $props['wniosek']['status']) throw new Exception("Wniosek o numerze {$props['idZaliczkaWniosek']} został odrzucony");
+      if ('Zatwierdzony' == $props['wniosek']['status']) throw new Exception("Wniosek o numerze {$props['idZaliczkaWniosek']} został zatwierdzony");
+      // if ('Oczekuje zatwierdzenia' !== $props['wniosek']['status']) throw new Exception("Wniosek o numerze {$props['idZaliczkaWniosek']} ma nieznany status");
+
+      echo UI::h('h1', [], "Wniosek o wypłatę zaliczki");
+      echo $this->viewWniosek($props['wniosek']);
+      echo UI::h('div', ['style' => "text-align:center; padding:32px"], [
+        UI::h('a', [
+          'href' => $this->getLink('cancel') . "&idZaliczkaWniosek={$props['idZaliczkaWniosek']}",
+          'class' => "btn btn-lg btn-danger",
+          'style' => "margin-left:24px"
+        ], "Anuluj wniosek o zaliczkę"),
+      ]);
+
+      echo UI::h('hr');
+      echo UI::h('h3', [], "Pozostałe wnioski pracownika <code>{$props['wniosek']['workerLogin']}</code>:");
+      Router::getRoute('UrlAction_UserProNetMediaZaliczka')->viewWidgetUserWnioski([
+        'idUser' => $props['wniosek']['workerID']
+      ]);
     } catch (Exception $e) {
       UI::alert('danger', $e->getMessage());
       DBG::log($e);
@@ -49,8 +96,14 @@ class Route_UrlAction_UserProNetMediaZaliczkaWniosekRemove extends RouteBase {
 		UI::dol();
   }
 
-  public function reinstallAction() {
-
+  public function viewWniosek($wniosek) {
+    return UI::h('blockquote', [], [
+      UI::h('p', [], "Nr: {$wniosek['id']}"),
+      UI::h('p', [], "Autor: {$wniosek['workerLogin']}"),
+      UI::h('p', [], "Data zgłoszenia: {$wniosek['created']}"),
+      UI::h('p', [], "Kwota: <b>" . UI::price($wniosek['kwota']) . "</b>"),
+      UI::h('p', [], "Uwagi: {$wniosek['uwagi']}"),
+    ]);
   }
 
 }

+ 11 - 14
SE/se-lib/Schema/DefaultDb/zaliczka_wniosek/ZaliczkaWniosekStorageAcl.php

@@ -42,28 +42,23 @@ class Schema_DefaultDb_zaliczka_wniosek_ZaliczkaWniosekStorageAcl extends Core_A
   }
 
   public function addItem($itemTodo) {
-    DBG::log(['msg' => '$itemTodo', 'log' => $itemTodo]);
+    DBG::log(['msg' => 'addItem($itemTodo)', 'log' => $itemTodo]);
     if (empty($itemTodo['kwota'])) throw new Exception("Nie podano kwoty");
     if (empty($itemTodo['workerLogin'])) throw new Exception("Nie podano pracownika");
 
-    $id = DB::getPDO()->insert('ZALICZKA_WNIOSEK', [
+    $sqlItem = [
       'A_RECORD_CREATE_AUTHOR' => User::getLogin(),
-      'A_RECORD_CREATE_DATE' => 'NOW()',
+      'A_RECORD_CREATE_DATE' => "NOW()",
       'L_APPOITMENT_USER' => $itemTodo['workerLogin'],
       'KWOTA' => $itemTodo['kwota'],
-      'UWAGI' => $itemTodo['uwagi']
-    ]);
+      'UWAGI' => $itemTodo['uwagi'],
+    ];
+    $id = DB::getPDO()->insert('ZALICZKA_WNIOSEK', $sqlItem);
     DBG::log(['msg' => '$id', 'log' => $id]);
-    if (!$id) throw new Exception("Wystąpiły błędy podczas dodawania Zaliczki do bazy danych");
+    if (!$id) throw new Exception("Wystąpiły błędy podczas dodawania Wniosku o zaliczkę do bazy danych");
 
-    DB::getPDO()->insert('ZALICZKA_WNIOSEK_HIST', [
-      'ID_USERS2' => $id,
-      'A_RECORD_CREATE_AUTHOR' => User::getLogin(),
-      'A_RECORD_CREATE_DATE' => 'NOW()',
-      'L_APPOITMENT_USER' => $itemTodo['workerLogin'],
-      'KWOTA' => $itemTodo['kwota'],
-      'UWAGI' => $itemTodo['uwagi']
-    ]);
+    $sqlItem['ID_USERS2'] = $id;
+    DB::getPDO()->insert('ZALICZKA_WNIOSEK_HIST', $sqlItem);
     return $id;
   }
 
@@ -84,6 +79,8 @@ class Schema_DefaultDb_zaliczka_wniosek_ZaliczkaWniosekStorageAcl extends Core_A
     if (empty($sqlItemTodo)) throw new Exception("Nothing to change");
 
     unset($sqlItemTodo[$pkField]);
+    $sqlItemTodo['A_RECORD_UPDATE_AUTHOR'] = User::getLogin();
+    $sqlItemTodo['A_RECORD_UPDATE_DATE'] = "NOW()";
     DB::getPDO()->update($this->getRootTableName(), $pkField, $pk, $sqlItemTodo);
     $sqlItemTodo['ID_USERS2'] = $pk;
     DB::getPDO()->insert($this->getRootTableName() . "_HIST", $sqlItemTodo);