| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312 |
- <?php
- Lib::loadClass('RouteBase');
- Lib::loadClass('ProjectKosztorysSchema');
- Lib::loadClass('ProjectKosztorysModel');
- Lib::loadClass('ProjectKosztorysCennik');
- Lib::loadClass('UI');
- Lib::loadClass('Response');
- Lib::loadClass('Route_ProjektyKosztorysBase');
- class Route_UrlAction_ProjektyZamowieniaKosztorys extends Route_ProjektyKosztorysBase {
- public $_model = array();
- public $_ID_ZASOB_ZAMOWIENIE = 24121;
- public function defaultAction() {
- // TODO: check if user is allowed to run this action
- UI::gora();
- if (1 != V::get('_print', '', $_GET)) UI::menu();
- try {
- $idProject = V::get('ID_PROJECT', 0, $_REQUEST, 'int');
- if (!$idProject) throw new Exception("Wrong param in 'ID_PROJECT' - expected integer!");
- $this->panel($idProject);
- $this->execPostTasks();
- $this->zamowienia($idProject);
- } catch (Exception $e) {
- UI::alert('danger', "Error #" . $e->getCode() . "|" . $e->getLine() . ": " . $e->getMessage());
- }
- UI::dol();
- }
- public function zamowienia($idProject) {
- $idProject = (int)$idProject;
- if ($idProject <= 0) throw new Exception("Error Processing Request - wrong param id project");
- $idOrder = V::get('ID_ORDER', 0, $_REQUEST, 'int');
- $sqlTableZlecenia = "IN7_DZIENNIK_KORESP";
- // $sqlTableZlecenia = (DBG::isActive()) ? "IN7_DZIENNIK_KORESP__TEST_ZLECENIA" : "IN7_DZIENNIK_KORESP";
- // if (DBG::isActive()) {
- // UI::startContainer();
- // UI::alert('warning', "<b>Uwaga:</b> Zlecenie z testowej tabeli Koresp (IN7_DZIENNIK_KORESP__TEST_ZLECENIA)");
- // UI::endContainer();
- /*
- DROP TABLE IF EXISTS IN7_DZIENNIK_KORESP__TEST_ZLECENIA;
- CREATE TABLE IN7_DZIENNIK_KORESP__TEST_ZLECENIA
- select k.ID
- , k.ID_PROJECT
- , k.A_STATUS
- , k.K_DATA_OTRZYM_KORESP
- , k.K_DATA_OTRZYMANEJ_KORESP
- , k.K_OD_KOGO
- , k.OD_KOGO_ADRES
- , k.K_ZAWARTOS
- , k.CRM_LISTA_ZASOBOW_ID
- , k.K_TYP_KORESP
- from IN7_DZIENNIK_KORESP k
- where k.CRM_LISTA_ZASOBOW_ID = 24121
- and k.K_TYP_KORESP in('OUT','WEW') ;
- ALTER TABLE `IN7_DZIENNIK_KORESP__TEST_ZLECENIA` ADD PRIMARY KEY ( `ID` ) ;
- */
- // }
- $ordersRaw = DB::getPDO()->fetchAllByKey("
- select k.ID
- , k.ID_PROJECT
- , k.A_STATUS
- , k.K_DATA_OTRZYM_KORESP
- , k.K_DATA_OTRZYMANEJ_KORESP
- , k.K_OD_KOGO
- , k.OD_KOGO_ADRES
- , k.K_ZAWARTOS
- from {$sqlTableZlecenia} k
- where k.CRM_LISTA_ZASOBOW_ID = {$this->_ID_ZASOB_ZAMOWIENIE}
- and k.ID_PROJECT = {$idProject}
- and k.K_TYP_KORESP in('OUT','WEW')
- ", $key = 'ID');
- $orders = array();
- foreach ($ordersRaw as $r) {
- $item = array();
- $chkd = ($r['ID'] == $idOrder) ? ' checked="checked"' : '';
- $item['ID'] = '<label style="white-space:nowrap"><input style="margin:0" type="radio" onClick="this.form.submit()" name="ID_ORDER" value="'.$r['ID'].'" '.$chkd.'> '.$r['ID'].'</label>';
- $item['Projekt'] = $r['ID_PROJECT'];
- $item['Status'] = $r['A_STATUS'];
- $item['K_DATA_OTRZYM_KORESP'] = $r['K_DATA_OTRZYM_KORESP'];
- $item['K_DATA_OTRZYMANEJ_KORESP'] = $r['K_DATA_OTRZYMANEJ_KORESP'];
- $item['K_OD_KOGO'] = $r['K_OD_KOGO'];
- $item['OD_KOGO_ADRES'] = $r['OD_KOGO_ADRES'];
- $item['K_ZAWARTOS'] = $r['K_ZAWARTOS'];
- $orders[] = $item;
- }
- $order = ($idOrder > 0 && array_key_exists($idOrder, $ordersRaw)) ? $ordersRaw[$idOrder] : null;
- UI::startContainer();
- if (1 != V::get('_print', '', $_GET)) {
- UI::startTag('form', ['action'=>'', 'method'=>'get']);
- UI::tag('input', ['type'=>'hidden', 'name'=>'_route', 'value'=>'UrlAction_ProjektyZamowieniaKosztorys']);
- UI::tag('input', ['type'=>'hidden', 'name'=>'ID_PROJECT', 'value'=>$idProject]);
- if (empty($orders)) UI::alert('info', "Brak zamówień w korespondencji dotyczących projektu {$idProject}");
- else UI::table(['caption'=>"Wybierz zamówienie/zlecenie", 'rows'=>$orders]);
- UI::endTag('form');
- UI::tag('hr');
- if (null != $order) {
- $printLink = Request::getPathUri() . "index.php?_route=UrlAction_ProjektyZamowieniaKosztorys";
- $printLink .= "&ID_PROJECT={$idProject}";
- $printLink .= "&ID_ORDER={$order['ID']}";
- $printLink .= "&_print=1";
- UI::startTag('div', ['style'=>'text-align:right']);
- UI::tag('a', ['_target'=>'blank', 'href'=>$printLink], '<i class="glyphicon glyphicon-print"></i>'. "Drukuj");
- UI::endTag('div');
- }
- }
- DBG::log($order, 'array', '$order');
- if (null !== $order) {
- $schema = ProjectKosztorysSchema::getSchema();// OK only 'config'
- $model = $this->getModel($idProject);
- $data = $this->getKosztorysData($idProject, $korespType = 'ZLECENIE', $idKoresp = $order['ID'], $admin = 0, $fetchAllRows = true);
- {
- $model = $this->getModel($idProject);
- //DBG::table("subProjectList", $model->subProjectList, __CLASS__, __FUNCTION__, __LINE__);
- $schema = ProjectKosztorysSchema::getSchema();
- // $projCosts = $this->getProjectCostByCennik($idProject, $idCompany);
- //DBG::_(true, true, "projCosts", $projCosts, __CLASS__, __FUNCTION__, __LINE__);
- UI::startTag('h1', ['style'=>'margin-bottom:1em']);
- echo "Zamówienie nr {$order['ID']}";
- UI::tag('small', ['style'=>"display:block"], $order['K_ZAWARTOS']);
- UI::endTag('h1');
- UI::setTitleJsTag("Zamówienie nr {$order['ID']} (Kosztorys projektu [{$idProject}])");
- echo UI::h('table', [ 'style' => "width:100%; margin-bottom: 12px" ], [
- UI::h('tr', [], [
- UI::h('th', [ 'style' => "padding-bottom: 8px; text-align:center" ], "ZLECENIE WEWNĘTRZNE PRAC BUDOWLANYCH BIALL-NET"),
- UI::h('th', [], ""),
- UI::h('th', [ 'style' => "padding-bottom: 8px; text-align:center" ], "PROTOKÓŁ ODBIORU PRAC BUDOWLANYCH BIALL-NET"),
- ]),
- UI::h('tr', [], [
- UI::h('td', [ 'style' => "width:44%; padding: 3px 6px; border: 1px solid #ddd; vertical-align:top" ], [
- UI::h('div', [], "NR KRESPONDENCJI: {$order['ID']}"),
- UI::h('div', [], "ADRES ZLECENIA: "),
- UI::h('div', [], "DATA ZLECENIA: "),
- UI::h('div', [], "WYKONAWCA/Y ZLECENIA: {$order['K_OD_KOGO']}"),
- UI::h('div', [], "ROZPOCZĘCIE PRAC: "),
- UI::h('div', [], "ZAKOŃCZENIE PRAC: "),
- UI::h('div', [], "PRACE ZLECA: {$order['ID']}"),
- UI::h('div', [], "PRACE PRZYJMUJE: "),
- ]),
- UI::h('td', [ 'style' => "width:10%" ], [
- ]),
- UI::h('td', [ 'style' => "width:44%; padding: 3px 6px; border: 1px solid #ddd; vertical-align:top" ], [
- UI::h('div', [], "NR KRESPONDENCJI: "),
- UI::h('div', [], "DATA ODBIORU: "),
- UI::h('div', [], "WYKONAWCA/Y ZLECENIA: "),
- UI::h('div', [], "ROZPOCZĘCIE PRAC: "),
- UI::h('div', [], "ZAKOŃCZENIE PRAC: "),
- UI::h('div', [], "PRACE PRZEKAZUJE: "),
- UI::h('div', [], "PRACE ODBIERA: "),
- UI::h('div', [], "UWAGI: <br><br>"),
- ]),
- ]),
- ]);
- $conf = $schema['config'];
- // [summary] => array(1) {
- // [22478] => array(2) {
- // [label] => string(14) "Rury osłonowe"
- // [data] => array(1) {
- // [48415] => array(6) {
- // [ID_PROJECT] => string(4) "6906"
- // [ilosc] => string(2) "10"
- // [type] => string(13) "1xHDPE 40/3,7"
- // [idType] => int(48415)
- // [idLayer] => int(22478)
- // [jednostka] => string(4) "METR"
- echo UI::h('div', [], array_map(function ($summary, $idLayer) use ($conf, $data, $order) {
- $rows = $data['summary'][$idLayer]['data'];
- $layer = $conf['layer'][$idLayer];
- $cols = [
- // 'primaryKey' => "Nr",// string(4) "6906" // grouped data by ID_ZASOB, so primaryKey is not correct
- 'ID_PROJECT' => "Nr projektu",// string(4) "6906"
- 'ilosc' => "ilosc",// string(2) "10"
- 'type' => "typ",// string(13) "1xHDPE 40/3,7"
- // 'idType' => "idType",// int(48415)
- // 'idLayer' => "idLayer",// int(22478)
- 'jednostka' => "jednostka",// string(4) "METR"
- ];
- $addCols = [];
- if ('Rozdzielcza_Kabel_Swiatlowodowy_wsg84' === $layer['tabela_name']) { // TODO: to config - additional columns
- $addCols['Suma_ZapasA'] = "Suma_ZapasA";
- $addCols['Suma_ZapasB'] = "Suma_ZapasB";
- }
- // $tableName = $layer['tabela_name'];
- // $cols = [];
- // if ('Rozdzielcza_rura_oslonowa_magistralna' === $tableName) {
- // $cols = [
- // 'ID' => "Nr",
- // 'ID_PROJECT' => "Nr projektu",
- // 'Dlugosc' => "Długość",
- // 'PROJECT_INFO_FULL' => "Nazwa",
- // ];
- // }
- // if ('Rozdzielcza_koszty_dodatkowe_wsg84' === $tableName) {
- // $cols = [
- // 'ID' => "Nr",
- // 'ID_PROJECT' => "Nr projektu",
- // 'Przeznaczenie' => "Przeznaczenie",
- // 'ilosc' => "Ilość",
- // 'ilosc' => "Ilość",
- // ];
- // }
- $allCols = array_merge($cols, $addCols);
- return UI::h('div', [], [
- UI::h('table', [ 'class' => "table table-bordered table-condensed", 'style' => "width:auto" ], [
- UI::h('thead', [], [
- UI::h('tr', [], [
- UI::h('td', [ 'colspan' => count($allCols), 'style' => "padding:0 6px; font-size:1.2em; line-height:2em" ], " — {$summary['label']}"),
- ]),
- UI::h('tr', [], array_map(function ($label, $fieldName) {
- return UI::h('th', [ 'style' => "padding:1px 3px" ], $label);
- }, $allCols, array_keys($allCols)))
- ]),
- UI::h('tbody', [], array_map(function ($row) use ($allCols) {
- return UI::h('tr', [], array_map(function ($label, $fieldName) use ($row) {
- return UI::h('td', [ 'style' => "padding:1px 3px" ], $row[$fieldName]);
- }, $allCols, array_keys($allCols)));
- }, $rows)),
- ])
- ]);
- }, $data['summary'], array_keys($data['summary'])));
- echo UI::h('div', [ 'style' => "border: 1px solid #ddd; padding: 3px 6px 120px 6px" ], "UWAGI - PRACE DODATKOWE:");
- }
- // if (DBG::isActive()) DBG::nicePrint($data, '$data');
- // if (DBG::isActive()) DBG::nicePrint($schema, '$schema');
- // if (DBG::isActive()) DBG::nicePrint($model, '$model');
- }
- // if (DBG::isActive()) UI::tag('hr');
- // if (DBG::isActive()) $this->checkDBData();
- UI::endContainer();
- }
- public function checkDBData() {
- $schema = ProjectKosztorysSchema::getSchema();// OK only 'config'
- foreach ($schema['config']['layer'] as $idLayer => $layer) {
- // <div class="panel panel-default">
- // <div class="panel-heading">Panel heading without title</div>
- // <div class="panel-body">
- // Panel content
- // </div>
- // </div>
- UI::startTag('div', ['class'=>'panel panel-default']);
- UI::startTag('div', ['class'=>'panel-heading']);
- echo "Warstwa: {$layer['label']}";
- UI::endTag('div');// .panel-heading
- UI::startTag('div', ['class'=>'panel-body']);
- try {
- $rowsByIdOrder = DB::getPDO()->fetchAllByKey("
- select g.ID_KORESP_ZLECENIE, g.cnt
- -- , k.ID
- , k.A_STATUS
- , k.K_DATA_OTRZYM_KORESP
- , k.K_DATA_OTRZYMANEJ_KORESP
- , k.K_OD_KOGO
- , k.OD_KOGO_ADRES
- , k.K_ZAWARTOS
- , k.CRM_LISTA_ZASOBOW_ID
- , k.ID_PROJECT
- , k.K_TYP_KORESP
- from (
- select t.ID_KORESP_ZLECENIE, count(1) as cnt
- from {$layer['tabela_name']} t
- where t.ID_KORESP_ZLECENIE is not null and t.ID_KORESP_ZLECENIE > 0
- group by t.ID_KORESP_ZLECENIE
- ) g
- left join IN7_DZIENNIK_KORESP k on(k.ID = g.ID_KORESP_ZLECENIE)
- ", $key = 'ID_KORESP_ZLECENIE');
- } catch (Exception $e) {
- DBG::log($e);
- if ("SQLSTATE[42S22]: Column not found: 1054 Unknown column 't.ID_KORESP_ZLECENIE' in 'field list'" == $e->getMessage()) {
- UI::alert('danger', "Brak komórki `ID_KORESP_ZLECENIE` w tabeli `{$layer['tabela_name']}`");
- } else UI::alert('danger', $e->getMessage());
- }
- if (empty($rowsByIdOrder)) UI::tag('span', ['class'=>'text-warning'], "Brak wypełnionego pola ID_KORESP_ZLECENIE w tej warstwie");
- else {
- $rowsByIdOrder = array_map(function($r) {
- $item = [];
- $item['id'] = $r['ID_KORESP_ZLECENIE'];
- $item['ile'] = $r['cnt'];
- $item['K_OD_KOGO'] = $r['K_OD_KOGO'];
- $item['OD_KOGO_ADRES'] = $r['OD_KOGO_ADRES'];
- $item['K_ZAWARTOS'] = $r['K_ZAWARTOS'];
- $item['Zasób?'] = (int)$r['CRM_LISTA_ZASOBOW_ID'];
- $item['id Proj.'] = (int)$r['ID_PROJECT'];
- $item['typ'] = $r['K_TYP_KORESP'];
- $item['daty'] = "{$r['K_DATA_OTRZYM_KORESP']}<br>{$r['K_DATA_OTRZYMANEJ_KORESP']}";
- if ($item['Zasób?'] <= 0) $item['Zasób?'] .= '<br><span class="label label-danger" title="Brak numeru zasobu - powinien być 24121">Brak</span>';
- else if (24121 != $item['Zasób?']) $item['Zasób?'] .= '<br><span class="label label-danger" title="Błędny numer zasobu - powinien być 24121">Błąd</span>';
- if ($item['id Proj.'] <= 0) $item['id Proj.'] .= '<br><span class="label label-danger" title="Brak id projektu">Brak</span>';
- if ('OUT' != $item['typ']) $item['typ'] .= '<br><span class="label label-danger" title="Błędny typ korespondencji - powinien być OUT">Błąd</span>';
- return $item;
- }, $rowsByIdOrder);
- UI::table(['caption'=>"Pole ID_KORESP_ZLECENIE", 'rows'=>$rowsByIdOrder]);
- }
- UI::endTag('div');// .panel-body
- UI::endTag('div');
- }
- }
- }
|