[ '@namespace' => 'default_db/ZALICZKA/Zaliczka',// Api_WfsNs::getBaseWfsUri() . '/default_db/Zaliczka' '@primaryKey' => 'id', 'id' => [ '@type' => 'xsd:integer', '@alias' => 'ID' ], 'created' => [ '@type' => 'xsd:date', '@alias' => 'A_RECORD_CREATE_DATE' ], 'worker' => [ '@ref' => 'default_objects/AccessOwner' ],// 'alias_ref:default_objects:AccessOwner' 'kwota' => [ '@type' => 'xsd:decimal', '@totalDigits' => 16, '@fractionDigits' => 2, '@alias' => 'KWOTA' ], 'uwagi' => [ '@type' => 'xsd:string', '@alias' => 'UWAGI' ], 'nierozliczona_kwota' => [ '@type' => 'xsd:decimal', '@totalDigits' => 16, '@fractionDigits' => 2, '@alias' => 'NIEROZLICZONA_KWOTA' ], 'korespondencja' => [ '@ref' => 'default_db/IN7_DZIENNIK_KORESP/ZaliczkaKoresp' ], 'pozycja' => [ '@ref' => 'default_db/ZALICZKA_POZYCJA/ZaliczkaPozycja', '@maxOccurs' => 'unbounded' ], 'A_STATUS' => [ '@type' => 'xsd:string' ], 'L_APPOITMENT_USER' => [ '@type' => 'xsd:string' ], 'approvedBy' => [ '@type' => 'xsd:string', '@alias' => 'APPROVED_BY' ], ], ]; public function getTotal($params = array()) { if (!isset($params['#refFrom'])) { throw new Exception("Missing param #refFrom/primaryKey (id user)"); } $idUser = V::get('primaryKey', 0, $params['#refFrom'], 'int'); return DB::getPDO()->fetchValue(" select count(*) as cnt from ZALICZKA z join ADMIN_USERS u on(z.L_APPOITMENT_USER = u.ADM_ACCOUNT and u.ID = {$idUser}) "); } public function getItems($params = array()) { // '#refFrom' => [ // 'namespace' => 'default_db__x3A__ADMIN_USERS/Worker', // 'primaryKey' => $idUser // ] if (!isset($params['#refFrom'])) { throw new Exception("Missing param #refFrom/primaryKey (id user)"); } $idUser = V::get('primaryKey', 0, $params['#refFrom'], 'int'); return array_map( function ($row) use ($params) { return $this->buildFromSqlRow($row, $params); }, DB::getPDO()->fetchAll(" select z.* from ZALICZKA z join ADMIN_USERS u on(z.L_APPOITMENT_USER = u.ADM_ACCOUNT and u.ID = {$idUser}) order by z.ID DESC ") ); } public function addItem($itemTodo) { DBG::log(['msg' => '$itemTodo', 'log' => $itemTodo]); if (!is_array($itemTodo) || empty($itemTodo['worker'])) throw new Exception("Missing worker"); if (empty($itemTodo['worker']['id'])) throw new Exception("Missing worker id"); if (empty($itemTodo['kwota'])) throw new Exception("Nie podano kwoty"); $itemTodo['kwota'] = floatval($itemTodo['kwota']); if ($itemTodo['kwota'] <= 0) throw new Exception("Podano błędną kwotę"); $idUser = intval($itemTodo['worker']['id']); if ($idUser <= 0) throw new Exception("Wrong worker id"); // TODO: use default_objects/AccessOwner -> getItem($idUser) $userLogin = DB::getPDO()->fetchValue(" select u.ADM_ACCOUNT from `ADMIN_USERS` u where u.ID = {$idUser} "); if (empty($userLogin)) throw new Exception("User not exists ID={$idUser}"); DBG::log(['msg' => '$userLogin', 'log' => $userLogin]); $idTransaction = Core_AclHelper::startTransaction('ZALICZKA', $idUser, $userLogin); $zaliczkaRefWorker = ACL::getRefTable('default_db/ZALICZKA/Zaliczka', 'worker'); $idActiveZaliczka = DB::getPDO()->fetchValue(" select MAX(t.ID) from `ZALICZKA` t -- join `ADMIN_USERS` u on(t.L_APPOITMENT_USER = u.ADM_ACCOUNT) left join `{$zaliczkaRefWorker}` ref on(ref.PRIMARY_KEY = t.ID and ref.A_STATUS != 'DELETED') left join `ADMIN_USERS` r on(r.ID = ref.REMOTE_PRIMARY_KEY) where r.ID = {$idUser} and t.A_STATUS in('WAITING', 'NORMAL') -- TODO cache use #INSTANCE table "); DBG::log(['msg' => '$idActiveZaliczka', 'log' => $idActiveZaliczka]); $userSaldo = 0; if ($idActiveZaliczka > 0) { $zaliczkaRefPozycja = ACL::getRefTable('default_db/ZALICZKA/Zaliczka', 'pozycja'); $userSaldo = DB::getPDO()->fetchValue(" 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 and (r.A_STATUS is null or r.A_STATUS != 'DELETED')) where t.ID = {$idActiveZaliczka} "); } DBG::log(['msg' => '$userSaldo', 'log' => $userSaldo]); $usrLogin = User::getLogin(); $sqlUwagi = DB::getPDO()->quote(V::get('uwagi', '', $itemTodo), PDO::PARAM_STR); $sqlApprovedBy = DB::getPDO()->quote(V::get('approvedBy', '', $itemTodo), PDO::PARAM_STR); $execRet = DB::getPDO()->execSql(" insert into `ZALICZKA` (A_RECORD_CREATE_AUTHOR, A_RECORD_CREATE_DATE , L_APPOITMENT_USER, NIEROZLICZONA_KWOTA , KWOTA, UWAGI, APPROVED_BY) select '{$usrLogin}' as A_RECORD_CREATE_AUTHOR, NOW() as A_RECORD_CREATE_DATE , u.ADM_ACCOUNT, '{$userSaldo}' , '{$itemTodo['kwota']}', {$sqlUwagi}, {$sqlApprovedBy} from ADMIN_USERS u where u.ID = {$idUser} "); DBG::log(['msg' => '$execRet', 'log' => $execRet]); $id = DB::getPDO()->lastInsertId(); DBG::log(['msg' => '$id', 'log' => $id]); if (!$id) throw new Exception("Wystąpiły błędy podczas dodawania Zaliczki do bazy danych"); DB::getPDO()->execSql(" insert into `ZALICZKA__#INSTANCE` (PRIMARY_KEY, INSTANCE_NAME) values({$id}, 'ZaliczkaAktywna') ON DUPLICATE KEY UPDATE INSTANCE_NAME = 'ZaliczkaAktywna' "); foreach (DB::getPDO()->fetchAll(" select z.ID as ID_ZALICZKA, i.* from `ZALICZKA` z left join `ZALICZKA__#INSTANCE` i on(i.PRIMARY_KEY = z.ID) where z.ID != {$id} and z.L_APPOITMENT_USER = '{$userLogin}' ") as $instance) { DBG::log(['msg' => 'old $instance', 'log' => $instance]); // FIX Instance name foreach (DB::getPDO()->fetchAll(" select z.ID as ID_ZALICZKA , IF(i.PRIMARY_KEY IS NOT NULL, 1, 0) as has_instance , i.* from `ZALICZKA` z left join `ZALICZKA__#INSTANCE` i on(i.PRIMARY_KEY = z.ID) where z.ID != {$id} and z.L_APPOITMENT_USER = '{$userLogin}' ") as $instance) { DBG::log(['msg' => 'fix instance name $instance', 'log' => $instance]); if (!$instance['has_instance']) { DB::getPDO()->insert('ZALICZKA__#INSTANCE_HIST', [ 'PRIMARY_KEY' => $instance['ID_ZALICZKA'], 'INSTANCE_NAME' => 'ZaliczkaArchiwalna' ]); DB::getPDO()->insert('ZALICZKA__#INSTANCE', [ 'PRIMARY_KEY' => $instance['ID_ZALICZKA'], 'INSTANCE_NAME' => 'ZaliczkaArchiwalna' ]); } else if ('ZaliczkaAktywna' == $instance['INSTANCE_NAME']) { DB::getPDO()->insert('ZALICZKA__#INSTANCE_HIST', [ 'PRIMARY_KEY' => $instance['ID_ZALICZKA'], 'INSTANCE_NAME' => 'ZaliczkaArchiwalna' ]); DB::getPDO()->execSql(" update `ZALICZKA__#INSTANCE` set INSTANCE_NAME = 'ZaliczkaArchiwalna' , A_RECORD_UPDATE_DATE = NOW() where PRIMARY_KEY = {$instance['ID_ZALICZKA']} "); } } } $this->insertRef('worker', $id, $idUser);// TODO: add to hist table $childTableKwota = $this->getChildHistTable('kwota'); DB::getPDO()->insert($childTableKwota, [ 'VALUE' => $itemTodo['kwota'], 'A_TRANSACTION_ID' => $idTransaction ]); DB::getPDO()->execSql(" update ZALICZKA set A_STATUS = 'OFF_HARD' where L_APPOITMENT_USER = '{$userLogin}' and ID < {$id} "); // TODO: legacy fill table ZALICZKA_HIST // $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()->execSql(" insert into `ZALICZKA_HIST` (ID_USERS2, L_APPOITMENT_USER, NIEROZLICZONA_KWOTA, KWOTA , A_RECORD_CREATE_AUTHOR, A_RECORD_CREATE_DATE) select z.ID as ID_USERS2, z.L_APPOITMENT_USER, z.NIEROZLICZONA_KWOTA, z.KWOTA , z.A_RECORD_CREATE_AUTHOR, z.A_RECORD_CREATE_DATE from ZALICZKA z where z.ID = {$id} "); return $id; } public function updateItem($itemPatch) { DBG::log(['msg' => '$itemPatch', $itemPatch]); $pkField = $this->getPrimaryKeyField(); if (!array_key_exists($pkField, $itemPatch)) throw new Exception("Missing primary key"); $pk = (int)$itemPatch[$pkField]; if ($pk <= 0) throw new Exception("Wrong primary key format"); $oldItem = $this->getItem($pk, [ 'cols' => [ 'id', 'kwota', // 'nierozliczona_kwota', 'korespondencja', 'pozycja', // 'worker', ] ]); DBG::log(['msg' => '$oldItem', $oldItem]); // pozycja $pozAcl = ACL::getAclByNamespace('default_db/ZALICZKA_POZYCJA/ZaliczkaPozycja'); $pozPkField = $pozAcl->getPrimaryKeyField(); if (empty($oldItem['pozycja'])) { DBG::log("empty \$oldItem['pozycja']"); if (!empty($itemPatch['pozycja'])) { foreach ($itemPatch['pozycja'] as $pozTodo) { if ($pozTodo[ $pozPkField ] !== -1) throw new Exception("BUG ZaliczkaPozycja id not equal -1"); unset($pozTodo[ $pozPkField ]); $pkPoz = $pozAcl->addItem($pozTodo); DBG::log(['msg'=> '$pkPoz', $pkPoz]); $this->insertRef('pozycja', $pk, $pkPoz); } } } else { DBG::log("not empty \$oldItem['pozycja'] " . ((!empty($itemPatch['pozycja'])) ? "not empty" : "empty") . " patch pozycja"); $pozToAdd = array(); $pozToUpdate = array(); $pozToRemove = array(); if (!empty($itemPatch['pozycja'])) { foreach ($itemPatch['pozycja'] as $pozTodo) { if ($pozTodo[ $pozPkField ] == -1) { unset($pozTodo[ $pozPkField ]); $pozToAdd[] = $pozTodo; } else { $pozToUpdate[ $pozTodo[ $pozPkField ] ] = $pozTodo; } } } foreach ($oldItem['pozycja'] as $pozOld) { if ($pozOld[ $pozPkField ] > 0 && !array_key_exists($pozOld[ $pozPkField ], $pozToUpdate)) { $pozToRemove[] = $pozOld[ $pozPkField ]; } } DBG::log(['msg'=> '$pozToAdd', $pozToAdd]); DBG::log(['msg'=> '$pozToUpdate', $pozToUpdate]); DBG::log(['msg'=> '$pozToRemove', $pozToRemove]); foreach ($pozToAdd as $pozTodo) { $pkPoz = $pozAcl->addItem($pozTodo); DBG::log(['msg'=> '$pkPoz', $pkPoz]); $this->insertRef('pozycja', $pk, $pkPoz); } foreach ($pozToRemove as $idPoz) { // $rmPozItem = []; // $rmPozItem[$pozPkField] = $idPoz; // $rmPozItem['A_STATUS'] = 'DELETED'; // $pozAcl->updateItem($rmPozItem);// TODO: update instance and A_STATUS (cache) $this->removeRef('pozycja', $pk, $idPoz); } foreach ($pozToUpdate as $pozTodo) { $pozAcl->updateItem($pozTodo); } } // korespondencja if (empty($oldItem['korespondencja'])) { DBG::log("empty \$oldItem['korespondencja']"); if (!empty($itemPatch['korespondencja'])) { if (empty($itemPatch['korespondencja'][0]['id'])) throw new Exception("BUG: Missing Koresp id"); $pkKoresp = $itemPatch['korespondencja'][0]['id']; $this->insertRef('korespondencja', $pk, $pkKoresp); } } else { DBG::log("not empty \$oldItem['korespondencja'] " . ((!empty($itemPatch['korespondencja'])) ? "not empty" : "empty") . " patch koresp"); // if (id != id) => update : clearRefs, insertRef if (empty($oldItem['korespondencja'][0]['id'])) throw new Exception("BUG: Missing Koresp id in current object"); if (!empty($itemPatch['korespondencja'])) { if (empty($itemPatch['korespondencja'][0]['id'])) throw new Exception("BUG: Missing Koresp id"); $pkOldKoresp = $oldItem['korespondencja'][0]['id']; $pkKoresp = $itemPatch['korespondencja'][0]['id']; DBG::log("\$pkOldKoresp({$pkOldKoresp}), \$pkKoresp({$pkKoresp})"); if ($pkOldKoresp != $pkKoresp) { $this->cleanRefs('korespondencja', $pk); $this->insertRef('korespondencja', $pk, $pkKoresp); } } else { DBG::log("cleanRefs \$pk({$pk})"); $this->cleanRefs('korespondencja', $pk); } } /* { "updates": { "@instance": "ZaliczkaAktywna", "id": "8", "created": "2017-01-27 11:10:59", "worker": [{ "id": "1", "login": "magdalena.cichosz", "name": "Magdalena Cichosz" }], "kwota": "0.01", "nierozliczona_kwota": "300.02", "pozycja": [{ "id": -1, "nr_faktury": "fv 2017/1/1", "kwota": 100, "vat": 23, "kwota_netto": 0, "kategoria_kosztu": "BUDOWA: Usługi obce" }], "korespondencja": { "id": "6013", "title": "faktura Vat (MULTI-TAB) [6013]", "kategoriaKosztu": "do uzgodnienia", "projekt": { "id": "64", "nrBudowy": "20/2016" } } } } */ $patch = []; // $itemPatch['kwota'] = str_replace(',', '.', $itemPatch['kwota']); // if ($itemPatch['kwota'] != $oldItem['kwota']) $patch['kwota'] = $itemPatch['kwota']; // TODO: diff $itemPatch['pozycja'] != $oldItem['pozycja'] if (!empty($patch)) { // if (array_key_exists('kwota', $patch)) { // DB::getPDO()->update('ZALICZKA', 'ID', $pk, [ 'kwota' => $patch['kwota'] ]); // } } } public function getItem($primaryKey, $params = []) { $zaliczkaRaw = DB::getPDO()->fetchAll(" select t.* from `ZALICZKA` t where t.ID = {$primaryKey} "); $zaliczkaRaw = (!empty($zaliczkaRaw)) ? reset($zaliczkaRaw) : null; // DBG::nicePrint($zaliczkaRaw, '$zaliczkaRaw'); if (!$zaliczkaRaw) return null; return $this->buildFromSqlRow($zaliczkaRaw, $params); } public function reinstall() { // TODO: mv to Core_AclSimpleSchemaBase and reainstall by _simpleSchema - read current data from `information_schema` DB::getPDO()->execSql(" CREATE TABLE IF NOT EXISTS `ZALICZKA` ( `ID` int(11) NOT NULL AUTO_INCREMENT, `A_RECORD_CREATE_DATE` datetime DEFAULT NULL, `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 'WAITING', `A_ADM_COMPANY` varchar(100) NOT NULL DEFAULT '', `A_CLASSIFIED` varchar(100) NOT NULL DEFAULT '', `L_APPOITMENT_USER` varchar(100) NOT NULL DEFAULT '', `KWOTA` decimal(16,2) NOT NULL DEFAULT 0, `NIEROZLICZONA_KWOTA` decimal(16,2) NOT NULL DEFAULT 0, `UWAGI` varchar(255) NOT NULL DEFAULT '', `PAYMENT_METHOD` enum('', 'wypłacono gotówka', 'wypłacono przelew karta', 'wypłacono przelew konto') NOT NULL DEFAULT '', `DOKUMENTY` enum('', 'TAK', 'NIE') NOT NULL DEFAULT '', `APPROVED_BY` varchar(255) NOT NULL DEFAULT '', PRIMARY KEY (`ID`) ) ENGINE=MyISAM DEFAULT CHARSET=latin2; "); DB::getPDO()->execSql(" CREATE TABLE IF NOT EXISTS `ZALICZKA_HIST` ( `ID` int(11) NOT NULL AUTO_INCREMENT, `ID_USERS2` int(11) NOT NULL, `A_RECORD_CREATE_DATE` varchar(20) NOT NULL DEFAULT 'N/S;', `A_RECORD_CREATE_AUTHOR` varchar(20) NOT NULL DEFAULT 'N/S;', `A_RECORD_UPDATE_DATE` varchar(20) NOT NULL DEFAULT 'N/S;', `A_RECORD_UPDATE_AUTHOR` varchar(20) NOT NULL DEFAULT 'N/S;', `A_STATUS` varchar(20) NOT NULL DEFAULT 'N/S;', `A_ADM_COMPANY` varchar(100) NOT NULL DEFAULT 'N/S;', `A_CLASSIFIED` varchar(100) NOT NULL DEFAULT 'N/S;', `L_APPOITMENT_USER` varchar(100) NOT NULL DEFAULT 'N/S;', `KWOTA` varchar(16) NOT NULL DEFAULT 'N/S;', `NIEROZLICZONA_KWOTA` varchar(16) NOT NULL DEFAULT 'N/S;', `UWAGI` varchar(255) NOT NULL DEFAULT 'N/S;', `PAYMENT_METHOD` varchar(255) NOT NULL DEFAULT 'N/S;', `DOKUMENTY` varchar(255) NOT NULL DEFAULT 'N/S;', `APPROVED_BY` varchar(255) NOT NULL DEFAULT 'N/S;', PRIMARY KEY (`ID`), KEY `ID_USERS2` (`ID_USERS2`) ) ENGINE=MyISAM DEFAULT CHARSET=latin2; "); DB::getPDO()->execSql(" CREATE TABLE IF NOT EXISTS `ZALICZKA_POZYCJA` ( `ID` int(11) NOT NULL AUTO_INCREMENT, `A_RECORD_CREATE_DATE` datetime DEFAULT NULL, `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 'WAITING', `A_ADM_COMPANY` varchar(100) NOT NULL DEFAULT '', `A_CLASSIFIED` varchar(100) NOT NULL DEFAULT '', `L_APPOITMENT_USER` varchar(100) NOT NULL DEFAULT '', `nr_faktury` varchar(255) NOT NULL DEFAULT '', `kwota` decimal(16,2) NOT NULL DEFAULT 0, `vat` int(11) NOT NULL DEFAULT 23, `kwota_netto` decimal(16,2) NOT NULL DEFAULT 0, `kategoria_kosztu` varchar(255) NOT NULL DEFAULT '', 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, `ID_USERS2` int(11) NOT NULL, `A_RECORD_CREATE_DATE` varchar(20) NOT NULL DEFAULT 'N/S;', `A_RECORD_CREATE_AUTHOR` varchar(20) NOT NULL DEFAULT 'N/S;', `A_RECORD_UPDATE_DATE` varchar(20) NOT NULL DEFAULT 'N/S;', `A_RECORD_UPDATE_AUTHOR` varchar(20) NOT NULL DEFAULT 'N/S;', `A_STATUS` varchar(20) NOT NULL DEFAULT 'N/S;', `A_ADM_COMPANY` varchar(100) NOT NULL DEFAULT 'N/S;', `A_CLASSIFIED` varchar(100) NOT NULL DEFAULT 'N/S;', `L_APPOITMENT_USER` varchar(100) NOT NULL DEFAULT 'N/S;', `nr_faktury` varchar(255) NOT NULL DEFAULT 'N/S;', `kwota` varchar(16) NOT NULL DEFAULT 'N/S;', `vat` varchar(5) NOT NULL DEFAULT 'N/S;', `kwota_netto` varchar(16) NOT NULL DEFAULT 'N/S;', `kategoria_kosztu` varchar(255) NOT NULL DEFAULT 'N/S;', PRIMARY KEY (`ID`), KEY `ID_USERS2` (`ID_USERS2`) ) ENGINE=MyISAM DEFAULT CHARSET=latin2; "); echo UI::h('div', [ 'class' => "container", 'style' => "background:#ffe5b6; margin-top:6px" ], "
Upgrade schema
"); UI::startContainer([ 'style' => "max-height:200px; overflow-y:scroll; border:1px solid #ffe5b6" ]); try { DB::getPDO()->execSql(" ALTER TABLE `ZALICZKA_POZYCJA` ADD `nr_faktury` varchar(255) NOT NULL DEFAULT '' "); } catch (Exception $e) { UI::alert('warning', $e->getMessage()); } try { DB::getPDO()->execSql(" ALTER TABLE `ZALICZKA_POZYCJA` ADD `vat` int(11) NOT NULL DEFAULT 23 "); } catch (Exception $e) { UI::alert('warning', $e->getMessage()); } try { DB::getPDO()->execSql(" ALTER TABLE `ZALICZKA_POZYCJA` ADD `kwota_netto` decimal(16,2) NOT NULL DEFAULT 0 "); } catch (Exception $e) { UI::alert('warning', $e->getMessage()); } try { DB::getPDO()->execSql(" ALTER TABLE `ZALICZKA_POZYCJA` ADD `kategoria_kosztu` varchar(255) NOT NULL DEFAULT '' "); } catch (Exception $e) { UI::alert('warning', $e->getMessage()); } try { DB::getPDO()->execSql(" ALTER TABLE `ZALICZKA_POZYCJA_HIST` ADD `nr_faktury` varchar(255) NOT NULL DEFAULT 'N/S;' "); } catch (Exception $e) { UI::alert('warning', $e->getMessage()); } try { DB::getPDO()->execSql(" ALTER TABLE `ZALICZKA_POZYCJA_HIST` ADD `vat` varchar(5) NOT NULL DEFAULT 'N/S;' "); } catch (Exception $e) { UI::alert('warning', $e->getMessage()); } try { DB::getPDO()->execSql(" ALTER TABLE `ZALICZKA_POZYCJA_HIST` ADD `kwota_netto` varchar(16) NOT NULL DEFAULT 'N/S;' "); } catch (Exception $e) { UI::alert('warning', $e->getMessage()); } try { DB::getPDO()->execSql(" ALTER TABLE `ZALICZKA_POZYCJA_HIST` ADD `kategoria_kosztu` varchar(255) NOT NULL DEFAULT 'N/S;' "); } catch (Exception $e) { UI::alert('warning', $e->getMessage()); } UI::endContainer(); UI::startContainer([ 'style' => "max-height:200px; overflow-y:scroll; border:1px solid #ffe5b6" ]); try { DB::getPDO()->execSql(" ALTER TABLE `ZALICZKA` ADD `UWAGI` varchar(255) NOT NULL DEFAULT '' "); } catch (Exception $e) { UI::alert('warning', $e->getMessage()); } try { DB::getPDO()->execSql(" ALTER TABLE `ZALICZKA_HIST` ADD `UWAGI` varchar(255) NOT NULL DEFAULT 'N/S;' "); } catch (Exception $e) { UI::alert('warning', $e->getMessage()); } try { DB::getPDO()->execSql(" ALTER TABLE `ZALICZKA` ADD `PAYMENT_METHOD` enum('', 'wypłacono gotówka', 'wypłacono przelew karta', 'wypłacono przelew konto') NOT NULL DEFAULT '' "); } catch (Exception $e) { UI::alert('warning', $e->getMessage()); } try { DB::getPDO()->execSql(" ALTER TABLE `ZALICZKA_HIST` ADD `PAYMENT_METHOD` varchar(255) NOT NULL DEFAULT 'N/S;' "); } catch (Exception $e) { UI::alert('warning', $e->getMessage()); } try { DB::getPDO()->execSql(" ALTER TABLE `ZALICZKA` ADD `APPROVED_BY` varchar(255) NOT NULL DEFAULT '' "); } catch (Exception $e) { DBG::log($e); } try { DB::getPDO()->execSql(" ALTER TABLE `ZALICZKA_HIST` ADD `APPROVED_BY` varchar(255) NOT NULL DEFAULT 'N/S;' "); } catch (Exception $e) { DBG::log($e); } try { DB::getPDO()->execSql(" ALTER TABLE `ZALICZKA` ADD `DOKUMENTY` enum('', 'TAK', 'NIE') NOT NULL DEFAULT '' "); } catch (Exception $e) { UI::alert('warning', $e->getMessage()); } try { DB::getPDO()->execSql(" ALTER TABLE `ZALICZKA_HIST` ADD `DOKUMENTY` varchar(255) NOT NULL DEFAULT 'N/S;' "); } catch (Exception $e) { UI::alert('warning', $e->getMessage()); } UI::endContainer(); ACL::getRefTable('default_db/ZALICZKA/Zaliczka', 'worker'); ACL::getRefTable('default_db/ZALICZKA/Zaliczka', 'pozycja'); ACL::getRefTable('default_db/ZALICZKA/Zaliczka', 'korespondencja'); // ACL::getRefTable('default_db/ZALICZKA_POZYCJA/ZaliczkaPozycja', 'projekt'); // ACL::getRefTable('default_db/ZALICZKA_POZYCJA/ZaliczkaPozycja', 'korespondencja'); Core_AclHelper::getInstanceTable('ZALICZKA');// `ZALICZKA__#INSTANCE` // TODO: ZaliczkaOczekujaca A_STATUS = WAITING -- dodane przez pracownika // TODO: ZaliczkaAktywna A_STATUS = NORMAL -- zakceptowane / wyplacone przez ... // TODO: pole na dane wypłacającego zaliczkę // TODO: dopiero teraz wyliczyć saldo / nierozliczona_kwota? Saldo pokazywać zawsze, aktualizować po akceptacji (Oczekujaca --> Aktywna) // TODO: ZaliczkaArchiwalna A_STATUS = OFF_HARD -- poprzednie zaliczki // TODO: ZaliczkaUsunieta A_STATUS = DELETED -- usunieta przez workera lub anulowana przez osobę uprawnioną Core_AclHelper::getTransactionTable('ZALICZKA');// `ZALICZKA__#TRANSACTION` Core_AclHelper::getTransactionTable('ZALICZKA_POZYCJA');// `ZALICZKA_POZYCJA__#TRANSACTION` echo UI::h('div', [ 'class' => "container", 'style' => "background:#ffe5b6; margin-top:6px" ], "create ChildHistTable
"); UI::startContainer([ 'style' => "max-height:200px; overflow-y:scroll; border:1px solid #ffe5b6" ]); foreach ($this->_simpleSchema['root'] as $childName => $schema) { if ('@' == substr($childName, 0, 1)) continue; $this->getChildHistTable($childName); DBG::nicePrint($schema, '$childName('.$childName.')');// TODO: DBG } UI::endContainer(); } }