Ver Fonte

added gui schema class for zaliczka_info_view

Piotr Labudda há 9 anos atrás
pai
commit
ce051a30eb
1 ficheiros alterados com 115 adições e 0 exclusões
  1. 115 0
      SE/schema/gui/core/default_db.zaliczka_info_view.php

+ 115 - 0
SE/schema/gui/core/default_db.zaliczka_info_view.php

@@ -0,0 +1,115 @@
+<?php
+
+class Schema__Core__default_db__zaliczka_info_view extends Schema_TableBase {
+
+	public function initTypes() {
+		parent::initTypes();
+	}
+
+  public function getPrimaryKeyField() {
+		return 'ID';
+	}
+
+  public function getRootTableName() { return 'ZALICZKA'; }
+  public function getHistTableName() { return 'ZALICZKA_HIST'; }
+	public function getSqlFieldList() {// TODO: rename
+		return ['ID', 'A_STATUS', 'ID_USER', 'L_APPOITMENT_USER', 'KWOTA', 'UWAGI', 'APPROVED_BY', 'PAYMENT_METHOD', 'NIEROZLICZONA_KWOTA', 'rozliczona_kwota'];
+	}
+	public function getSqlHistFieldList() {// TODO: rename
+		return ['ID', 'A_STATUS', 'L_APPOITMENT_USER', 'KWOTA', 'UWAGI', 'APPROVED_BY', 'PAYMENT_METHOD', 'NIEROZLICZONA_KWOTA', 'A_RECORD_CREATE_AUTHOR', 'A_RECORD_CREATE_DATE', 'A_RECORD_UPDATE_AUTHOR', 'A_RECORD_UPDATE_DATE'];
+		// ID	int(11)			Nie	Brak	AUTO_INCREMENT
+		// A_RECORD_CREATE_DATE	datetime			Tak	NULL
+		// A_RECORD_CREATE_AUTHOR	varchar(20)	latin2_general_ci		Tak	NULL
+		// A_RECORD_UPDATE_DATE	datetime			Tak	NULL
+		// A_RECORD_UPDATE_AUTHOR	varchar(20)	latin2_general_ci		Nie
+		// A_STATUS	enum('WAITING', 'NORMAL', 'MONITOR', 'WARNING', 'O	latin2_general_ci		Tak	WAITING
+		// A_ADM_COMPANY	varchar(100)	latin2_general_ci		Nie
+		// A_CLASSIFIED	varchar(100)	latin2_general_ci		Nie
+		// L_APPOITMENT_USER	varchar(100)	latin2_general_ci		Nie
+		// KWOTA	decimal(16,2)			Nie	0.00
+		// NIEROZLICZONA_KWOTA	decimal(16,2)			Nie	0.00
+		// UWAGI	varchar(255)	latin2_general_ci		Nie
+		// PAYMENT_METHOD	enum('', 'Gotówka', 'Przelew')	latin2_general_ci		Nie
+		// APPROVED_BY
+	}
+
+  public function hasUpdateItem() { return true; }
+  public function updateItem($itemPatch) {
+		$fieldList = $this->getSqlFieldList();// TODO: method or _simpleSchema
+		$rootTableName = $this->getRootTableName();
+		$histTableName = $this->getHistTableName();
+
+		DBG::log(['msg'=>'$itemPatch', '$itemPatch'=>$itemPatch]);
+		$pkField = $this->getPrimaryKeyField();
+		if (!array_key_exists($pkField, $itemPatch)) throw new Exception("Missing primaryKey");
+		$pk = $itemPatch[$pkField];
+		if (!$pk) throw new Exception("Empty primaryKey");
+		$itemTodo = [];
+		foreach ($itemPatch as $fieldName => $value) {
+			if (!in_array($fieldName, $fieldList)) throw new Exception("Field not deinfed '{$fieldName}'");
+			$itemTodo[$fieldName] = $value;
+		}
+		unset($itemTodo[$pkField]);
+		if (empty($itemTodo)) throw new Exception("Empty item to update");
+		$itemTodo['A_RECORD_UPDATE_AUTHOR'] = User::getLogin();
+		$itemTodo['A_RECORD_UPDATE_DATE'] = "NOW()";
+		$affected = DB::getPDO()->update($rootTableName, $pkField, $pk, $itemTodo);
+		if ($affected && $histTableName) {
+			$itemTodo['ID_USERS2'] = $pk;
+			$itemTodo['A_RECORD_CREATE_AUTHOR'] = User::getLogin();
+			$itemTodo['A_RECORD_CREATE_DATE'] = "NOW()";
+			DB::getPDO()->insert($histTableName, $itemTodo);
+		}
+		return $affected;
+	}
+
+	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_INFO_VIEW` AS
+	select t.ID
+			, u.ID as ID_USER
+			, t.L_APPOITMENT_USER
+			, t.A_STATUS
+			, t.KWOTA
+			, t.UWAGI
+			, t.NIEROZLICZONA_KWOTA
+			, t.APPROVED_BY
+			, t.PAYMENT_METHOD
+			, sum(COALESCE(p.kwota, 0)) as rozliczona_kwota
+	from ZALICZKA t
+		join ADMIN_USERS u on(u.ADM_ACCOUNT = t.L_APPOITMENT_USER)
+		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 not in ('DELETED')))
+	where t.A_STATUS not in ('DELETED')
+	group by t.ID
+*/