Преглед на файлове

added UI; fixed project costs in Kosztorysy

Piotr Labudda преди 10 години
родител
ревизия
b54c0b94fe
променени са 2 файла, в които са добавени 197 реда и са изтрити 38 реда
  1. 98 38
      SE/se-lib/Route/UrlAction/ProjektyKosztyWstepnychRobot.php
  2. 99 0
      SE/se-lib/UI.php

+ 98 - 38
SE/se-lib/Route/UrlAction/ProjektyKosztyWstepnychRobot.php

@@ -4,6 +4,7 @@ Lib::loadClass('RouteBase');
 Lib::loadClass('ProjectKosztorysSchema');
 Lib::loadClass('ProjectKosztorysModel');
 Lib::loadClass('ProjectKosztorysCennik');
+Lib::loadClass('UI');
 
 class Route_UrlAction_ProjektyKosztyWstepnychRobot extends RouteBase {// TODO: UrlActionBase @see Route_UrlAction
 
@@ -17,8 +18,8 @@ class Route_UrlAction_ProjektyKosztyWstepnychRobot extends RouteBase {// TODO: U
 
 	public function defaultAction() {
 		// TODO: check if user is allowed to run this action
-		SE_Layout::gora();
-		if (1 != V::get('_print', '', $_GET)) SE_Layout::menu();
+		UI::gora();
+		if (1 != V::get('_print', '', $_GET)) UI::menu();
 		try {
 			$idProject = V::get('ID_PROJECT', 0, $_REQUEST, 'int');
 			$idCompany = V::get('ID_COMPANY', 0, $_REQUEST, 'int');
@@ -26,14 +27,14 @@ class Route_UrlAction_ProjektyKosztyWstepnychRobot extends RouteBase {// TODO: U
 			$this->panel($idProject, $idCompany);
 			$this->kosztorys($idProject, $idCompany);
 		} catch (Exception $e) {
-			SE_Layout::alert('danger', "Error #" . $e->getCode() .  "|" . $e->getLine() .  ": " . $e->getMessage());
+			UI::alert('danger', "Error #" . $e->getCode() .  "|" . $e->getLine() .  ": " . $e->getMessage());
 		}
-		SE_Layout::dol();
+		UI::dol();
 	}
 
 	public function zestawienieSwMikRurAction() {
-		SE_Layout::gora();
-		if (1 != V::get('_print', '', $_GET)) SE_Layout::menu();
+		UI::gora();
+		if (1 != V::get('_print', '', $_GET)) UI::menu();
 		try {
 			$idProject = V::get('ID_PROJECT', 0, $_REQUEST, 'int');
 			$idCompany = V::get('ID_COMPANY', 0, $_REQUEST, 'int');
@@ -41,15 +42,15 @@ class Route_UrlAction_ProjektyKosztyWstepnychRobot extends RouteBase {// TODO: U
 			$this->panel($idProject, $idCompany);
 			$this->zestawienieSwMikRur($idProject, $idCompany);
 		} catch (Exception $e) {
-			SE_Layout::alert('danger', "Error #" . $e->getCode() .  "|" . $e->getLine() .  ": " . $e->getMessage());
+			UI::alert('danger', "Error #" . $e->getCode() .  "|" . $e->getLine() .  ": " . $e->getMessage());
 		}
-		SE_Layout::dol();
+		UI::dol();
 	}
 
 	public function ofertaAdminAction() {
 		// TODO: check if user is allowed to run this action
-		SE_Layout::gora();
-		SE_Layout::menu();
+		UI::gora();
+		UI::menu();
 		try {
 			$idProject = V::get('ID_PROJECT', 0, $_REQUEST, 'int');
 			$idCompany = V::get('ID_COMPANY', 0, $_REQUEST, 'int');
@@ -63,15 +64,15 @@ class Route_UrlAction_ProjektyKosztyWstepnychRobot extends RouteBase {// TODO: U
 				$this->defaultOferta();
 			}
 		} catch (Exception $e) {
-			SE_Layout::alert('danger', "Error #" . $e->getCode() .  "|" . $e->getLine() .  ": " . $e->getMessage());
+			UI::alert('danger', "Error #" . $e->getCode() .  "|" . $e->getLine() .  ": " . $e->getMessage());
 		}
-		SE_Layout::dol();
+		UI::dol();
 	}
 
 	public function ofertaCompanyAction() {
 		// TODO: check if user is allowed to run this action
-		SE_Layout::gora();
-		SE_Layout::menu();
+		UI::gora();
+		UI::menu();
 		try {
 			$idProject = V::get('ID_PROJECT', 0, $_REQUEST, 'int');
 			$idCompany = V::get('ID_COMPANY', 0, $_REQUEST, 'int');// TODO: $idCompany from ADMIN_USERS
@@ -86,30 +87,30 @@ class Route_UrlAction_ProjektyKosztyWstepnychRobot extends RouteBase {// TODO: U
 				$this->defaultOferta();
 			}
 		} catch (Exception $e) {
-			SE_Layout::alert('danger', "Error #" . $e->getCode() .  "|" . $e->getLine() .  ": " . $e->getMessage());
+			UI::alert('danger', "Error #" . $e->getCode() .  "|" . $e->getLine() .  ": " . $e->getMessage());
 		}
-		SE_Layout::dol();
+		UI::dol();
 	}
 
 	public function ofertaDefaultAdminAction() {
 		// TODO: check if user is allowed to run this action
-		SE_Layout::gora();
-		SE_Layout::menu();
+		UI::gora();
+		UI::menu();
 		try {
 			$idProject = 0;
 			$idCompany = V::get('ID_COMPANY', 0, $_REQUEST, 'int');
 			$this->panel($idProject, $idCompany);
 			$this->defaultOferta();
 		} catch (Exception $e) {
-			SE_Layout::alert('danger', "Error #" . $e->getCode() .  "|" . $e->getLine() .  ": " . $e->getMessage());
+			UI::alert('danger', "Error #" . $e->getCode() .  "|" . $e->getLine() .  ": " . $e->getMessage());
 		}
-		SE_Layout::dol();
+		UI::dol();
 	}
 
 	public function ofertaAction() {
 		// TODO: check if user is allowed to run this action
-		SE_Layout::gora();
-		SE_Layout::menu();
+		UI::gora();
+		UI::menu();
 		try {
 			$idProject = V::get('ID_PROJECT', 0, $_REQUEST, 'int');
 			$idCompany = V::get('ID_COMPANY', 0, $_REQUEST, 'int');
@@ -120,9 +121,9 @@ class Route_UrlAction_ProjektyKosztyWstepnychRobot extends RouteBase {// TODO: U
 			$this->panel($idProject, $idCompany);
 			$this->oferta($ofertaArgs);
 		} catch (Exception $e) {
-			SE_Layout::alert('danger', "Error #" . $e->getCode() .  "|" . $e->getLine() .  ": " . $e->getMessage());
+			UI::alert('danger', "Error #" . $e->getCode() .  "|" . $e->getLine() .  ": " . $e->getMessage());
 		}
-		SE_Layout::dol();
+		UI::dol();
 	}
 
 	public function getArgsList() {// TODO: override UrlActionBase::getArgsList action
@@ -726,7 +727,6 @@ SQL_FUN;
 			<div class="col-md-12">
 				<?php if ($idProject > 0) : ?>
 					<a class="btn btn-default" href="index.php?_route=UrlAction_ProjektyKosztyWstepnychRobot&ID_PROJECT=<?php echo $idProject; ?>">Kosztorys</a>
-					<a class="btn btn-default" href="index.php?_route=UrlAction_ProjektyKosztyWstepnychRobot&ID_PROJECT=<?php echo $idProject; ?>&_print=1" target="_blank">Wydruk Kosztorysu</a>
 					<a class="btn btn-default" href="index.php?_route=UrlAction_ProjektyKosztyWstepnychRobot&ID_PROJECT=<?php echo $idProject; ?>&_task=zestawienieSwMikRur&_print=1" target="_blank">zestawienie (światłowód i mikrorurki)</a>
 					<a class="btn btn-default" href="index.php?_route=UrlAction_ProjektyKosztyWstepnychRobot&ID_PROJECT=<?php echo $idProject; ?>&_task=oferta">oferta</a>
 					<a class="btn btn-default" href="index.php?_route=UrlAction_ProjektyKosztyWstepnychRobot&ID_PROJECT=<?php echo $idProject; ?>&_task=ofertaAdmin">oferta (Admin)</a>
@@ -735,6 +735,16 @@ SQL_FUN;
 				<a class="btn btn-default" href="index.php?_route=UrlAction_ProjektyKosztyWstepnychRobot&_task=ofertaDefaultAdmin" target="_blank">oferta domyślna (Admin)</a>
 			</div>
 		</div>
+		<div class="row">
+			<div class="col-md-12">
+<?php
+	switch ($task) {
+	case 'oferta': break;
+	case '': ?><a class="btn btn-link" href="index.php?_route=UrlAction_ProjektyKosztyWstepnychRobot&ID_PROJECT=<?php echo $idProject; ?>&_print=1" target="_blank"><i class="glyphicon glyphicon-print"></i> Wydruk Kosztorysu</a><?php break;
+	}
+?>
+		</div>
+		</div>
 		<br>
 		<?php if ('ofertaAdmin' == $task) : ?>
 			<form action="" method="get" class="form-inline">
@@ -971,6 +981,7 @@ SQL_FUN;
 		if (empty($schema['config']['type'])) throw new Exception("Schema error - brak zdefiniowanych typów");
 		$cennik = ProjectKosztorysCennik::getDefaultCennik($idCompany);
 		//DBG::_(true, true, "cennik", $cennik, __CLASS__, __FUNCTION__, __LINE__);
+		UI::setTitleJsTag("Cennik domyślny dla Kosztorysów");
 		?>
 <div class="container">
 <form action="" method="post">
@@ -1004,6 +1015,48 @@ SQL_FUN;
 </form>
 </div>
 <?php
+// Fix Zasoby [22444] INNE Kosztorys - zasoby
+
+// SELECT *  FROM `CRM_LISTA_ZASOBOW_OFFERS`
+// WHERE `CRM_LISTA_ZASOBOW_ID` IN (22801,22445,22446,22447,22448,22449,22450,22451,22452,22453,22454,22455,22456,22457,22458,22459,22552,22517,22514,22481,22484,22515,22516,22518,22519,22520,22521,22550,22551,22617,22618,22638,22639,22640,22641,22642,22643,22644,22645,22646,22724,22725,22797,22798)
+// ORDER BY `CRM_LISTA_ZASOBOW_OFFERS`.`CRM_LISTA_ZASOBOW_ID` ASC
+// limit 100
+
+// <edittype widgetv2type="ValueMap" name="Typ_kosztu">
+//   <widgetv2config fieldEditable="1" labelOnTop="0">
+//     <value zasobID="22643" key="Montaż zapasu w studni" value="Montaż zapasu w studni"/>
+//     <value zasobID="22638" key="Montaż złączek mikrokanalizacji" value="Montaż złączek mikrokanalizacji"/>
+//     <value zasobID="22645" key="Mufa z montażem" value="Mufa z montażem"/>
+//     <value zasobID="22642" key="Pigtail od puszki do terminala" value="Pigtail od puszki do terminala"/>
+//     <value zasobID="22640" key="Przewiert w budynku z uszczelnieniem" value="Przewiert w budynku z uszczelnieniem"/>
+//     <value zasobID="22639" key="Puszka abonencka z montażem" value="Puszka abonencka z montażem"/>
+//     <value zasobID="22641" key="Spaw poza mufą" value="Spaw poza mufą"/>
+//     <value zasobID="22724" key="Spaw w mufie" value="Spaw w mufie"/>
+//     <value zasobID="22617" key="Spliter 1/16" value="Spliter 1/16"/>
+//     <value zasobID="22618" key="Spliter 1/4" value="Spliter 1/4"/>
+//     <value zasobID="22725" key="Spliter 1/8" value="Spliter 1/8"/>
+//     <value zasobID="22644" key="Wprowadzenie kabli do mufy" value="Wprowadzenie kabli do mufy"/>
+//     <value zasobID="22646" key="Zamek PIOCH do studni" value="Zamek PIOCH do studni"/>
+//     <value zasobID="22515" key="Zapas kabla" value="Zapas kabla"/>
+//     <value zasobID="22514" key="Złącze" value="Złącze "/>
+//   </widgetv2config>
+// </edittype>
+// 22574 ->22515 INNE TYPE Zapas kabla
+// 22620 ->22618 INNE TYPE Spliter 1/4
+// 22621 ->22617 INNE TYPE Spliter 1/16
+// 22647 ->22638 INNE TYPE Montaż złączek mikrokanalizacji
+// 22648 ->22639 INNE TYPE Puszka abonencka z montażem
+// 22649 ->22640 INNE TYPE Przewiert w budynku z uszczelnieniem
+// 22650 ->22641 INNE TYPE Spaw poza mufą
+// 22651 ->22642 INNE TYPE Pigtail od puszki do terminala
+// 22652 ->22643 INNE TYPE Montaż zapasu w studni
+// 22653 ->22644 INNE TYPE Wprowadzenie kabli do mufy
+// 22654 ->22645 INNE TYPE Mufa z montażem
+// 22655 ->22646 INNE TYPE Zamek PIOCH do studni
+// 22881 ->22514 INNE TYPE Złącze
+
+// TODO: ? 22484
+
 	}
 
 	/**
@@ -1017,7 +1070,7 @@ SQL_FUN;
 		$defCennik = ProjectKosztorysCennik::getDefaultCennik($idCompany);
 		// $defCennik = [ $id_zasob => [ 'price' => $price, 'ID', 'id_zasob', 'id_company', 'id_project', 'unit', 'quantity' ] ]
 		$cennik = ProjectKosztorysCennik::getCennik($idProject, $idCompany);
-		$data = $this->getData($idProject, $admin);
+		$data = $this->getData($idProject, $admin = false);
 		foreach ($data['summary'] as $idLayer => $layData) {
 			foreach ($layData['data'] as $typeData) {
 				if (!$typeData['idType']) continue;
@@ -1029,7 +1082,7 @@ SQL_FUN;
 				$projCost['cost_total'] += $cost;
 			}
 		}
-		// TODO: fetch sub costs for sub projects
+		// fetch sub costs for sub projects
 		// $data['by_project'] = array_reduce($data['rawDataByType'], function($result, $row) {
 		// 	$idProj = $row['ID_PROJECT'];
 		// 	$idLayer = $row['idLayer'];
@@ -1220,9 +1273,10 @@ SQL_FUN;
 		//DBG::table("subProjectList", $model->subProjectList, __CLASS__, __FUNCTION__, __LINE__);
 		$schema = ProjectKosztorysSchema::getSchema();
 
-		$projCost = $this->getProjectCostByCennik($idProject, $idCompany);
-		//DBG::_(true, true, "projCost", $projCost, __CLASS__, __FUNCTION__, __LINE__);
-		$viewLayerDataArgs = compact('idProject', 'idCompany', 'admin', 'companyAdmin', 'projCost');
+		$projCosts = $this->getProjectCostByCennik($idProject, $idCompany);
+		//DBG::_(true, true, "projCosts", $projCosts, __CLASS__, __FUNCTION__, __LINE__);
+		$viewLayerDataArgs = compact('idProject', 'idCompany', 'admin', 'companyAdmin', 'projCosts');
+		UI::setTitleJsTag("Kosztorys wstępny robót telekomunikacyjnych [{$idProject}]");
 ?>
 <div class="container">
 	<h1>Kosztorys wstępny robót telekomunikacyjnych</h1>
@@ -1260,6 +1314,7 @@ SQL_FUN;
 		$cennik = ProjectKosztorysCennik::getCennik($idProject, $idCompany);
 
 		$viewLayerDataArgs = compact('idProject', 'idCompany', 'admin', 'companyAdmin');
+		UI::setTitleJsTag("Oferta " . (($idProject)? " [{$idProject}] " : '') . (($idCompany)? " Kontrahent({$idCompany})" : '') . " - Kosztorysy");
 		?>
 <div class="container">
 	<?php if ($admin) : ?>
@@ -1304,11 +1359,16 @@ SQL_FUN;
 		$defCennik = ProjectKosztorysCennik::getDefaultCennik($idCompany);
 		$cennik = ProjectKosztorysCennik::getCennik($idProject, $idCompany);
 		$workCennik = ProjectKosztorysCennik::getWorkCennik($idProject, $idCompany);
-		$additionalCosts = array();
-		$additionalCosts[] = array();
-		$additionalCosts[] = array();
-		$additionalCosts[] = array();
-		$additionalSummaryTypeCost = array();
+		if (!empty($summaryTypeCost)) {
+			$additionalCosts = array();
+			$additionalCosts[] = array();
+			$additionalCosts[] = array();
+			$additionalCosts[] = array();
+			$additionalSummaryTypeCost = array();
+			$additionalSummaryTypeCost[] = 0;
+			$additionalSummaryTypeCost[] = 0;
+			$additionalSummaryTypeCost[] = 0;
+		}
 ?>
 <style type="text/css">
 /* Print Styles */
@@ -1352,7 +1412,7 @@ SQL_FUN;
 									$fixLink .= '&_hash=' . uniqid();
 									$fixProjectLink = '<a target="_blank" href="' . $fixLink . "&f_ID_PROJECT={$idProject}" . '">' . "Popraw" . '</a>' . " (dane dla projektu [{$idProject}])";
 									$fixAllLink = '<a target="_blank" href="' . $fixLink . '">' . "Popraw wszystkie" . '</a>';
-									SE_Layout::alert('danger', "Niezdefiniowany typ: <code>{$typeData['type']}</code> - {$fixProjectLink}, {$fixAllLink}");
+									UI::alert('danger', "Niezdefiniowany typ: <code>{$typeData['type']}</code> - {$fixProjectLink}, {$fixAllLink}");
 								} ?>
 							<?php DBG::_('DBG', '>1', "Error conf", $conf, __CLASS__, __FUNCTION__, __LINE__); ?>
 							<?php DBG::_('DBG', '>1', "Error", $typeData, __CLASS__, __FUNCTION__, __LINE__); ?>
@@ -1526,7 +1586,7 @@ SQL_FUN;
 												$fixLink .= '&_hash=' . uniqid();
 												$fixProjectLink = '<a target="_blank" href="' . $fixLink . "&f_ID_PROJECT={$idProject}" . '">' . "Popraw" . '</a>' . " (dane dla projektu [{$idProject}])";
 												$fixAllLink = '<a target="_blank" href="' . $fixLink . '">' . "Popraw wszystkie" . '</a>';
-												SE_Layout::alert('danger', "Niezdefiniowany typ: <code>{$typeData['type']}</code> - {$fixProjectLink}, {$fixAllLink}");
+												UI::alert('danger', "Niezdefiniowany typ: <code>{$typeData['type']}</code> - {$fixProjectLink}, {$fixAllLink}");
 											} ?>
 										<?php DBG::_('DBG', '>1', "Error conf", $conf, __CLASS__, __FUNCTION__, __LINE__); ?>
 										<?php DBG::_('DBG', '>1', "Error", $typeData, __CLASS__, __FUNCTION__, __LINE__); ?>
@@ -1637,7 +1697,7 @@ SQL_FUN;
 			foreach ($data['rawDataByType'] as $row) {
 				$layer = $conf['layer'][$row['idLayer']];
 				if ($row['idType'] <= 0) {
-					SE_Layout::alert('warning', "Pomijanie nieznanego oznaczenia '{$row['type']}' w ilości {$row['ilosc']} - warstwa '{$layer['label']}' ({$layer['tabela_name']}), projekt nr {$row['ID_PROJECT']}");
+					UI::alert('warning', "Pomijanie nieznanego oznaczenia '{$row['type']}' w ilości {$row['ilosc']} - warstwa '{$layer['label']}' ({$layer['tabela_name']}), projekt nr {$row['ID_PROJECT']}");
 				}
 			}
 		}

+ 99 - 0
SE/se-lib/UI.php

@@ -0,0 +1,99 @@
+<?php
+
+
+class UI {
+
+	public static function getTitle() {
+		$title = 'SE';
+
+		$host = $_SERVER['SERVER_NAME'];
+		if (substr($host, 0, 5) == 'biuro') {
+			$host = substr($host, 6);
+		}
+
+		$title = "{$host}-SE";
+
+		return $title;
+	}
+
+	public static function gora() {
+		UI::startHtml();
+	}
+
+	public static function startHtml() {
+		Lib::loadClass('S');
+		UI::loadTemplate('_layout_gora');
+	}
+
+	public static function dol() {
+		UI::endHtml();
+	}
+
+	public static function endHtml() {
+		$version = (file_exists(APP_PATH_ROOT . '/VERSION'))? file_get_contents(APP_PATH_ROOT . '/VERSION') : null;
+		if ($version) {
+			echo '<div style="border-top:1px solid #ddd;margin-top:10px;padding:0 30px;font-size:xx-small;color:#888;">version: '.$version.'</div>';
+		}
+		echo "\n</body></html>";
+	}
+
+	public static function menu() {
+		if (!User::logged()) return;
+
+		if (User::hasAccess('menu')) {
+			Lib::loadClass('ProcesMenu');
+
+			$procesMenu = ProcesMenu::getInstance();
+			$procesMenu->show();
+
+			if (!V::get('MENU_INIT', '', $_GET)) {
+				Lib::loadClass('UserActivity');
+				//echo UserActivity::showListInContainer();
+			}
+
+		}
+		else {
+			UI::loadTemplate('menuLevel6');
+		}
+	}
+
+	public static function loadTemplate($tmplName, $data = array()) {
+		if (is_array($data) && !empty($data)) {
+			extract($data);
+		}
+		include APP_PATH_LIB . "/tmpl/{$tmplName}.php";
+	}
+
+	public static function hotKeyDBG($str) {
+		if (User::hasAccess('dbg')) {
+			echo '<span class="hidden-dbg">' . htmlspecialchars($str) . '</span>';
+		}
+	}
+
+	public static function showMessagesForTable($tblName) {
+		if (empty($tblName)) return;
+
+		$msgsRoute = Router::getRoute('Msgs');
+		$msgs = $msgsRoute->getActiveMessagesForTable($tblName);
+		if (!empty($msgs)) {
+			self::loadTemplate('msgsForTable', array('msgs' => $msgs));
+		}
+	}
+
+	public static function alert($alertType, $msg) {
+?>
+<div class="alert alert-<?php echo $alertType; ?>">
+	<?php echo $msg; ?>
+</div>
+<?php
+	}
+
+	public static function setTitleJsTag($title) {
+?>
+<script>
+	document.title = '<?php echo $title; ?>';
+</script>
+<?php
+	}
+
+}