Sfoglia il codice sorgente

added grouped views for Zaliczka

Piotr Labudda 9 anni fa
parent
commit
0ba3e04edf

+ 43 - 0
SE/se-lib/Route/UrlAction/UserProNetMediaZaliczka.php

@@ -369,6 +369,49 @@ class Route_UrlAction_UserProNetMediaZaliczka extends RouteBase {// TODO: UrlAct
 				UI::tag('a', ['class'=>"btn btn-primary", 'href'=>"index.php?_route=UrlAction_UserProNetMediaZaliczka&_task=reinstall"], "Dane usunięte - odśwież stronę");
 			}
 
+			{// view grouped info
+				$refTableWorker = ACL::getRefTable('default_db/ZALICZKA/Zaliczka', 'worker');
+				$refTablePozycja = ACL::getRefTable('default_db/ZALICZKA/Zaliczka', 'pozycja');
+				DB::getPDO()->exec("
+					CREATE OR REPLACE VIEW `ZALICZKA_INFO_VIEW` AS
+					select t.ID
+							, t.A_STATUS
+							, t.L_APPOITMENT_USER
+							, t.KWOTA
+							, t.NIEROZLICZONA_KWOTA
+							, sum(COALESCE(p.kwota, 0)) as rozliczona_kwota
+					from ZALICZKA t
+						left join `{$refTablePozycja}` refPoz on(refPoz.PRIMARY_KEY = t.ID and refPoz.A_STATUS != 'DELETED')
+						left join ZALICZKA_POZYCJA p on(p.ID = refPoz.REMOTE_PRIMARY_KEY and (p.A_STATUS is null or p.A_STATUS != 'DELETED'))
+					group by t.ID
+				");
+				DB::getPDO()->exec("
+					CREATE OR REPLACE VIEW `ZALICZKA_USER_SALDO_VIEW` AS
+					select u.ID, u.ADM_ACCOUNT, u.ADM_NAME
+						, (
+							select (v.KWOTA + v.NIEROZLICZONA_KWOTA - v.rozliczona_kwota) as saldo
+							from ZALICZKA_INFO_VIEW v
+							order by v.ID desc
+							limit 1
+						) as saldo
+						, sum(t.KWOTA) as suma_zaliczek
+					from ZALICZKA t
+						join ADMIN_USERS u on(u.ADM_ACCOUNT = t.L_APPOITMENT_USER)
+					where t.A_STATUS != 'DELETED'
+					group by u.ADM_ACCOUNT
+				");
+
+				UI::table([
+					'caption' => "Table `ZALICZKA_INFO_VIEW`",
+					'rows' => DB::getPDO()->fetchAll(" select * from `ZALICZKA_INFO_VIEW` ")
+				]);
+				UI::table([
+					'caption' => "Table `ZALICZKA_USER_SALDO_VIEW`",
+					'rows' => DB::getPDO()->fetchAll(" select * from `ZALICZKA_USER_SALDO_VIEW` ")
+				]);
+			}
+
+
 			UI::endContainer();
 		} catch (Exception $e) {
 			UI::alert('danger', $e->getMessage());

+ 3 - 2
SE/se-lib/Schema/DefaultDb/zaliczka/ZaliczkaStorageAcl.php

@@ -99,7 +99,7 @@ class Schema_DefaultDb_zaliczka_ZaliczkaStorageAcl extends Core_AclSimpleSchemaB
     		select t.KWOTA + t.NIEROZLICZONA_KWOTA - sum(COALESCE(r.KWOTA, 0))
     		from `ZALICZKA` t
     			left join `{$zaliczkaRefPozycja}` ref on(ref.PRIMARY_KEY = t.ID and ref.A_STATUS != 'DELETED')
-    			left join `ZALICZKA_POZYCJA` r on(r.ID = ref.REMOTE_PRIMARY_KEY)
+    			left join `ZALICZKA_POZYCJA` r on(r.ID = ref.REMOTE_PRIMARY_KEY and (r.A_STATUS is null or r.A_STATUS != 'DELETED'))
         where t.ID = {$idActiveZaliczka}
     	");
     }
@@ -386,7 +386,7 @@ class Schema_DefaultDb_zaliczka_ZaliczkaStorageAcl extends Core_AclSimpleSchemaB
 				`A_RECORD_CREATE_AUTHOR` varchar(20)  DEFAULT NULL,
 				`A_RECORD_UPDATE_DATE` datetime  DEFAULT NULL,
 				`A_RECORD_UPDATE_AUTHOR` varchar(20) NOT NULL DEFAULT '',
-				`A_STATUS` enum('WAITING','NORMAL','MONITOR','WARNING','OFF_SOFT','OFF_HARD','DELETED') DEFAULT NULL,
+				`A_STATUS` enum('WAITING','NORMAL','MONITOR','WARNING','OFF_SOFT','OFF_HARD','DELETED') DEFAULT 'WAITING',
 				`A_ADM_COMPANY` varchar(100) NOT NULL DEFAULT '',
 				`A_CLASSIFIED` varchar(100) NOT NULL DEFAULT '',
 				`L_APPOITMENT_USER` varchar(100) NOT NULL DEFAULT '',
@@ -398,6 +398,7 @@ class Schema_DefaultDb_zaliczka_ZaliczkaStorageAcl extends Core_AclSimpleSchemaB
 				PRIMARY KEY (`ID`)
 			) ENGINE=MyISAM DEFAULT CHARSET=latin2;
 		");
+		DB::getPDO()->execSql(" ALTER TABLE `ZALICZKA_POZYCJA` CHANGE `A_STATUS` `A_STATUS` enum('WAITING','NORMAL','MONITOR','WARNING','OFF_SOFT','OFF_HARD','DELETED') NOT NULL DEFAULT 'WAITING' ");
 		DB::getPDO()->execSql("
 			CREATE TABLE IF NOT EXISTS `ZALICZKA_POZYCJA_HIST` (
 				`ID` int(11) NOT NULL AUTO_INCREMENT,