'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 = $acl->getSimpleSchemaTree(); $zaliczkaData = $this->fetchDataBySchema($schema, $idUser); ?> 'static/zaliczka/main.js' . (V::get('DBG', '', $_GET) ? '?_ts=' . time() : ''), 'type'=>'text/javascript']); } public function fetchDataAjaxAction() { $reqBody = Request::getRequestBody(); // var_dump($reqBody); die(json_encode([ [ 'id' => 100, 'nrBudowy' => 'Budowa 100/2016' ], [ 'id' => 101, 'nrBudowy' => 'Budowa 101/2016' ], [ 'id' => 102, 'nrBudowy' => 'Budowa 102/2016' ], ])); } 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; */