|
|
@@ -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']}");
|
|
|
}
|
|
|
}
|
|
|
}
|