|
@@ -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
|
|
|
|
|
+*/
|