| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220 |
- <?php
- Lib::loadClass('RouteBase');
- Lib::loadClass('Typespecial');
- Lib::loadClass('TypespecialVariable');
- Lib::loadClass('Request');
- Lib::loadClass('Response');
- Lib::loadClass('ProcesHelper');
- Lib::loadClass('Route_UrlAction');
- Lib::loadClass('UI');
- class Route_UrlAction_UserProNetMediaZaliczka extends RouteBase {// TODO: UrlActionBase @see Route_UrlAction
- public function handleAuth() {
- if (!User::logged()) {
- User::authByRequest();
- }
- }
- public function defaultAction() {
- UI::gora();
- UI::emptyTag('link', ['href'=>'static/zaliczka/main.css', 'rel'=>'stylesheet']);
- if (1 != V::get('_print', '', $_GET)) UI::menu();
- try {
- $data = array();
- $data['id_user'] = V::get('ID_PROJECT', User::getID(), $_REQUEST, 'int');
- $this->zaliczkaFormView($data);
- } catch (Exception $e) {
- UI::alert('danger', "Error #" . $e->getCode() . "|" . $e->getLine() . ": " . $e->getMessage());
- }
- if (1 != V::get('_print', '', $_GET)) UI::dol();
- }
- public function zaliczkaFormView($data) {
- $idUser = V::get('id_user', User::getID(), $data);
- UI::tag('div', ['id'=>"zaliczka-app", 'data-dbg'=>V::get('DBG', '', $_GET), 'data-sync-js-function'=>"syncZaliczkaState", 'data-fetch-data-js-function'=>"zaliczkaFetchData"]);
- UI::emptyTag('br');
- $acl = Core_AclHelper::getAclByNamespace("default_db/ZALICZKA/Zaliczka");//User::getAcl()->getObjectAcl();
- $schema = $this->getSchema();//$acl->getSimpleSchema();
- $zaliczkaData = $this->fetchDataBySchema($schema, $idUser);
- ?>
- <script>
- function zaliczkaFetchData(query, fieldType, resultCallback) {
- console.warn('TODO: zaliczkaFetchData(query, fieldType, resultCallback) query('+query+') fieldType:', fieldType);
- // fieldType: Object {"@baseTypeName": "default_db:IN7_DZIENNIK_KORESP", id: "xsd:integer", title: "xsd:string", kategoriaKosztu: "xsd:string"}
- if ('object' === typeof fieldType) {
- if (!fieldType['@baseTypeName']) {
- // TODO: log error
- console.error("BUG: Missing typeName in fieldType");
- return;
- }
- switch (fieldType['@baseTypeName']) {
- case 'default_db:IN7_DZIENNIK_KORESP': {
- console.warn("TODO: fetch by ajax default_db:IN7_DZIENNIK_KORESP");
- var options = [
- { id: 65432, title: 'testowa koresp 1', kategoriaKosztu: 'KOSZT1' },
- { id: 10008, title: 'testowa koresp 8', kategoriaKosztu: 'KOSZT8' },
- { id: 10009, title: 'testowa koresp 9', kategoriaKosztu: 'KOSZT9' },
- ]
- resultCallback(options);
- } break;
- case 'default_db:IN7_MK_BAZA_DYSTRYBUCJI': {
- console.warn("TODO: fetch by ajax default_db:IN7_MK_BAZA_DYSTRYBUCJI");
- var options = [
- { id: 100, nrBudowy: 'Budowa 100/2016' },
- { id: 101, nrBudowy: 'Budowa 101/2016' },
- { id: 102, nrBudowy: 'Budowa 102/2016' },
- ]
- resultCallback(options);
- } break;
- default: {
- console.log("BUG: Unsupported type namespace '" + fieldType['@baseTypeName'] + "'");
- }
- }
- } else {
- console.log("BUG: Unsupported type '" + fieldType + "'");
- return;
- }
- }
- function syncZaliczkaState(state, updates, stateSyncSyccessCallback, stateSyncErrorCallback) {
- // TODO: if ajax success then stateSyncSyccessCallback(Response.data)
- // TODO: if ajax fail then stateSyncErrorCallback(Response.data)
- console.log('====== TODO: syncZaliczkaState updates:', updates, 'state:', state);
- if (null === updates) {
- var data = {
- nierozliczonaKwota: 300,
- schema: {
- zaliczka: <?= json_encode($schema); ?>
- },
- zaliczka: <?= json_encode($zaliczkaData); ?>
- }
- setTimeout(function() {
- stateSyncSyccessCallback({data: data});// TODO: app state + updates from api Response
- }, 1000);
- } else {
- setTimeout(function() {
- stateSyncSyccessCallback({data: state});// TODO: app state + updates from api Response
- }, 1000);
- }
- }
- </script>
- <?php
- UI::tag('script', ['src'=>'static/zaliczka/main.js' . (V::get('DBG', '', $_GET) ? '?_ts=' . time() : ''), 'type'=>'text/javascript']);
- }
- public function fetchDataBySchema($schema, $idUser, $primaryKey = null) {// if $primaryKey is null then search for last row
- return [// TODO: fetch data from DB
- 'id' => 123,
- 'created' => '2016-11-22', // data wydania zaliczki - data utworzenia rekordu
- 'worker' => [
- 'id' => 666,
- 'name' => 'Kowalski', // 'TODO' => get name from admin_users - imię i nazwisko pracownika pobierającego zaliczkę
- 'login' => 'kowalski'
- ],
- 'kwota' => 555.55, // kwota wypłaconej zaliczki
- 'pozycja' => [
- [ 'id' => 1,
- 'kwota' => 100.22,
- 'korespondencja' => [ 'id' => 65432, 'title' => 'testowa koresp 1', 'kategoriaKosztu' => 'KOSZT1' ],
- 'projekt' => [ 'nrBudowy' => 'Budowa/1' ]
- ],
- [ 'id' => 2,
- 'kwota' => 200.55,
- 'korespondencja' => [ 'id' => 76543, 'title' => 'testowa koresp 2', 'kategoriaKosztu' => 'KOSZT2' ],
- 'projekt' => [ 'nrBudowy' => 'Budowa/2' ]
- ]
- ]
- ];
- }
- public function getSchema() {
- return [// var zaliczkaFlatSchema
- '__baseTypeName' => 'default_db:ZALICZKA',
- 'id' => 'xsd:integer',
- 'created' => 'xsd:date',
- 'worker' => [// 'ref:worker',
- '__baseTypeName' => 'default_db:ADMIN_USERS',
- 'name' => 'xsd:string',
- 'login' => 'xsd:string'
- ],
- 'kwota' => 'xsd:decimal',
- 'pozycja' => [// 'ref:pozycja'
- '__baseTypeName' => 'default_db:ZALICZKA_POZYCJA',
- 'id' => 'xsd:integer',
- 'kwota' => 'xsd:decimal',
- 'korespondencja' => [// 'ref:korespondencja'
- '__baseTypeName' => 'default_db:IN7_DZIENNIK_KORESP',
- 'id' => 'xsd:integer',
- 'title' => 'xsd:string',
- 'kategoriaKosztu' => 'xsd:string'
- ],
- 'projekt' => [// 'ref:projekt'
- '__baseTypeName' => 'default_db:IN7_MK_BAZA_DYSTRYBUCJI',
- 'id' => 'xsd:integer',
- 'nrBudowy' => 'xsd:string'
- ]
- ]
- ];
- }
- }
- /* Akcje
- # dodanie pierwszej zaliczki - 500 zł
- $data = [ worker => [ login => 'Kowalski' ], kwota => 500.00 ]
- insert into `ZALICZKA` (`L_APPOITMENT_USER`, `KWOTA`) values('{$data['worker']['login']}', '{$data['kwota']}');
- -- return id = 123
- # rozliczenie częściowe pierwszej zaliczki np. 500 zł
- $data = [ id => 123, pozycja => [ [ kwota => 200.00, korespondencja => [ ... ], projekt => [ ... ] ] ] ]
- update `ZALICZKA__#REF__POZYCJA` set `A_STATUS` = 'DELETED' where `PRIMARY_KEY` = 123;
- */
- /* -- Struktura
- CREATE TABLE IF NOT EXISTS `ZALICZKA__#REF__POZYCJA` ( `PRIMARY_KEY` int(11), `REMOTE_PRIMARY_KEY` int(11), );
- 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 NULL,
- `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,
- PRIMARY KEY (`ID`)
- KEY `ID_PROJECT` (`ID_PROJECT`)
- ) ENGINE=MyISAM DEFAULT CHARSET=latin2;
- 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;',
- PRIMARY KEY (`ID`),
- KEY `ID_USERS2` (`ID_USERS2`)
- ) ENGINE=MyISAM DEFAULT CHARSET=latin2;
- */
|