|
|
@@ -2,6 +2,7 @@
|
|
|
|
|
|
Lib::loadClass('Core_AclSimpleSchemaBase');// extends Core_AclBase
|
|
|
Lib::loadClass('Core_AclHelper');
|
|
|
+Lib::loadClass('DBG');
|
|
|
|
|
|
class Schema_DefaultDb_zaliczka_ZaliczkaStorageAcl extends Core_AclSimpleSchemaBase {
|
|
|
|
|
|
@@ -14,6 +15,7 @@ class Schema_DefaultDb_zaliczka_ZaliczkaStorageAcl extends Core_AclSimpleSchemaB
|
|
|
'worker' => [ '@ref' => 'default_objects/AccessOwner' ],// 'alias_ref:default_objects:AccessOwner'
|
|
|
'kwota' => [ '@type' => 'xsd:decimal', '@totalDigits' => 16, '@fractionDigits' => 2, '@alias' => 'KWOTA' ],
|
|
|
'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' ]
|
|
|
],
|
|
|
];
|
|
|
@@ -48,12 +50,14 @@ class Schema_DefaultDb_zaliczka_ZaliczkaStorageAcl extends Core_AclSimpleSchemaB
|
|
|
}
|
|
|
|
|
|
public function addItem($itemTodo) {
|
|
|
- // TODO: btn "Dodaj Zaliczkę" $acl->addItem($item); // @require only 'worker' => [ 'id', 'login', 'name' ]
|
|
|
- $DBG = V::get('DBG', '', $_GET);
|
|
|
- if($DBG){DBG::nicePrint($itemTodo, '$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");
|
|
|
|
|
|
@@ -64,7 +68,7 @@ class Schema_DefaultDb_zaliczka_ZaliczkaStorageAcl extends Core_AclSimpleSchemaB
|
|
|
where u.ID = {$idUser}
|
|
|
");
|
|
|
if (empty($userLogin)) throw new Exception("User not exists ID={$idUser}");
|
|
|
- if($DBG){DBG::nicePrint($userLogin, '$userLogin');}
|
|
|
+ DBG::log(['msg' => '$userLogin', 'log' => $userLogin]);
|
|
|
|
|
|
$idTransaction = Core_AclHelper::startTransaction('ZALICZKA', $idUser, $userLogin);
|
|
|
|
|
|
@@ -78,16 +82,7 @@ class Schema_DefaultDb_zaliczka_ZaliczkaStorageAcl extends Core_AclSimpleSchemaB
|
|
|
where r.ID = {$idUser}
|
|
|
and t.A_STATUS in('WAITING', 'NORMAL') -- TODO cache use #INSTANCE table
|
|
|
");
|
|
|
- if($DBG){DBG::nicePrint("
|
|
|
- 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
|
|
|
- ", 'sql');}
|
|
|
- if($DBG){DBG::nicePrint($idActiveZaliczka, '$idActiveZaliczka');}
|
|
|
+ DBG::log(['msg' => '$idActiveZaliczka', 'log' => $idActiveZaliczka]);
|
|
|
|
|
|
$userSaldo = 0;
|
|
|
if ($idActiveZaliczka > 0) {
|
|
|
@@ -100,20 +95,20 @@ class Schema_DefaultDb_zaliczka_ZaliczkaStorageAcl extends Core_AclSimpleSchemaB
|
|
|
where t.ID = {$idActiveZaliczka}
|
|
|
");
|
|
|
}
|
|
|
- if($DBG){DBG::nicePrint($userSaldo, '$userSaldo');}
|
|
|
+ DBG::log(['msg' => '$userSaldo', 'log' => $userSaldo]);
|
|
|
|
|
|
$usrLogin = User::getLogin();
|
|
|
$execRet = DB::getPDO()->execSql("
|
|
|
insert into `ZALICZKA` (A_RECORD_CREATE_AUTHOR, A_RECORD_CREATE_DATE
|
|
|
- , L_APPOITMENT_USER, NIEROZLICZONA_KWOTA)
|
|
|
+ , L_APPOITMENT_USER, NIEROZLICZONA_KWOTA, KWOTA)
|
|
|
select '{$usrLogin}' as A_RECORD_CREATE_AUTHOR, NOW() as A_RECORD_CREATE_DATE
|
|
|
- , u.ADM_ACCOUNT, '{$userSaldo}'
|
|
|
+ , u.ADM_ACCOUNT, '{$userSaldo}', '{$itemTodo['kwota']}'
|
|
|
from ADMIN_USERS u
|
|
|
where u.ID = {$idUser}
|
|
|
");
|
|
|
- if($DBG){DBG::nicePrint($execRet, '$execRet');}
|
|
|
+ DBG::log(['msg' => '$execRet', 'log' => $execRet]);
|
|
|
$id = DB::getPDO()->lastInsertId();
|
|
|
- if($DBG){DBG::nicePrint($id, '$id');}
|
|
|
+ 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("
|
|
|
@@ -128,7 +123,7 @@ class Schema_DefaultDb_zaliczka_ZaliczkaStorageAcl extends Core_AclSimpleSchemaB
|
|
|
where z.ID != {$id}
|
|
|
and z.L_APPOITMENT_USER = '{$userLogin}'
|
|
|
") as $instance) {
|
|
|
- if($DBG){DBG::nicePrint($instance, '$instance');}
|
|
|
+ DBG::log(['msg' => 'old $instance', 'log' => $instance]);
|
|
|
|
|
|
// FIX Instance name
|
|
|
foreach (DB::getPDO()->fetchAll("
|
|
|
@@ -140,21 +135,21 @@ class Schema_DefaultDb_zaliczka_ZaliczkaStorageAcl extends Core_AclSimpleSchemaB
|
|
|
where z.ID != {$id}
|
|
|
and z.L_APPOITMENT_USER = '{$userLogin}'
|
|
|
") as $instance) {
|
|
|
- if($DBG){DBG::nicePrint($instance, '$instance');}
|
|
|
+ DBG::log(['msg' => 'fix instance name $instance', 'log' => $instance]);
|
|
|
if (!$instance['has_instance']) {
|
|
|
- DB::getPDO()->execSql("
|
|
|
- insert into `ZALICZKA__#INSTANCE_HIST` (PRIMARY_KEY, INSTANCE_NAME)
|
|
|
- values ({$instance['ID_ZALICZKA']}, 'ZaliczkaArchiwalna')
|
|
|
- ");
|
|
|
- DB::getPDO()->execSql("
|
|
|
- insert into `ZALICZKA__#INSTANCE` (PRIMARY_KEY, INSTANCE_NAME)
|
|
|
- values ({$instance['ID_ZALICZKA']}, 'ZaliczkaArchiwalna')
|
|
|
- ");
|
|
|
+ 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()->execSql("
|
|
|
- insert into `ZALICZKA__#INSTANCE_HIST` (PRIMARY_KEY, INSTANCE_NAME)
|
|
|
- values ({$instance['ID_ZALICZKA']}, 'ZaliczkaArchiwalna')
|
|
|
- ");
|
|
|
+ DB::getPDO()->insert('ZALICZKA__#INSTANCE_HIST', [
|
|
|
+ 'PRIMARY_KEY' => $instance['ID_ZALICZKA'],
|
|
|
+ 'INSTANCE_NAME' => 'ZaliczkaArchiwalna'
|
|
|
+ ]);
|
|
|
DB::getPDO()->execSql("
|
|
|
update `ZALICZKA__#INSTANCE`
|
|
|
set INSTANCE_NAME = 'ZaliczkaArchiwalna'
|
|
|
@@ -165,7 +160,13 @@ class Schema_DefaultDb_zaliczka_ZaliczkaStorageAcl extends Core_AclSimpleSchemaB
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- $this->insertRef('worker', $id, $idUser);
|
|
|
+ $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
|
|
|
@@ -176,8 +177,8 @@ class Schema_DefaultDb_zaliczka_ZaliczkaStorageAcl extends Core_AclSimpleSchemaB
|
|
|
|
|
|
// TODO: legacy fill table ZALICZKA_HIST
|
|
|
DB::getPDO()->execSql("
|
|
|
- insert into `ZALICZKA_HIST` (ID_USERS2, L_APPOITMENT_USER, NIEROZLICZONA_KWOTA)
|
|
|
- select z.ID as ID_USERS2, z.L_APPOITMENT_USER, z.NIEROZLICZONA_KWOTA
|
|
|
+ insert into `ZALICZKA_HIST` (ID_USERS2, L_APPOITMENT_USER, NIEROZLICZONA_KWOTA, KWOTA)
|
|
|
+ select z.ID as ID_USERS2, z.L_APPOITMENT_USER, z.NIEROZLICZONA_KWOTA, z.KWOTA
|
|
|
from ZALICZKA z
|
|
|
where z.ID = {$id}
|
|
|
");
|
|
|
@@ -268,7 +269,11 @@ class Schema_DefaultDb_zaliczka_ZaliczkaStorageAcl extends Core_AclSimpleSchemaB
|
|
|
`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,
|
|
|
+ `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;
|
|
|
");
|
|
|
@@ -284,16 +289,49 @@ class Schema_DefaultDb_zaliczka_ZaliczkaStorageAcl extends Core_AclSimpleSchemaB
|
|
|
`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;',
|
|
|
+ `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" ], "<p style=\"margin:0; padding:6px\">Upgrade schema</p>");
|
|
|
+ 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();
|
|
|
+
|
|
|
ACL::getRefTable('default_db/ZALICZKA/Zaliczka', 'worker');
|
|
|
ACL::getRefTable('default_db/ZALICZKA/Zaliczka', 'pozycja');
|
|
|
- ACL::getRefTable('default_db/ZALICZKA_POZYCJA/ZaliczkaPozycja', 'projekt');
|
|
|
- ACL::getRefTable('default_db/ZALICZKA_POZYCJA/ZaliczkaPozycja', 'korespondencja');
|
|
|
+ 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
|
|
|
@@ -306,11 +344,14 @@ class Schema_DefaultDb_zaliczka_ZaliczkaStorageAcl extends Core_AclSimpleSchemaB
|
|
|
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" ], "<p style=\"margin:0; padding:6px\">create ChildHistTable</p>");
|
|
|
+ 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;
|
|
|
- Core_AclHelper::getChildHistTable('ZALICZKA', $childName, $schema);
|
|
|
+ $this->getChildHistTable($childName);
|
|
|
DBG::nicePrint($schema, '$childName('.$childName.')');// TODO: DBG
|
|
|
}
|
|
|
+ UI::endContainer();
|
|
|
}
|
|
|
|
|
|
}
|