|
|
@@ -127,6 +127,7 @@ class ProjectKosztorysCennik {
|
|
|
|
|
|
public static function updatePriceProjectCennik($idType, $idProject, $price, $jednostka) {
|
|
|
$item = self::getItemProjectCennik($idType, $idProject, $jednostka);
|
|
|
+ DBG::log($item, 'array', "item to update price '{$price}' for (\$idType: {$idType}, \$idProject: {$idProject}, \$jednostka: {$jednostka})");
|
|
|
$usrLogin = User::getLogin();
|
|
|
$sqlObj = array();
|
|
|
$sqlObj['CRM_LISTA_ZASOBOW_ID'] = $idType;
|
|
|
@@ -201,46 +202,54 @@ class ProjectKosztorysCennik {
|
|
|
}
|
|
|
public static function getPrice($idType, $idProject = 0, $idCompany = 0, $jednostka = '') {
|
|
|
$cennikRaw = self::_getPrices($idType);
|
|
|
+ if (empty($cennikRaw)) return 0;
|
|
|
DBG::_('DBG', '>1', 'prices cennikRaw', $cennikRaw, __CLASS__, __FUNCTION__, __LINE__);
|
|
|
$price = 0;
|
|
|
- foreach ($cennikRaw as $item) {// fetch price from Oferta Admin
|
|
|
- if (!$item['id_project'] && !$item['id_company']) {
|
|
|
- if (empty($jednostka) || (!empty($jednostka) && $jednostka == $item['unit'])) {
|
|
|
- $price = round($item['price'], 2);
|
|
|
- }
|
|
|
+ $filteredCennik = $cennikRaw;
|
|
|
+ DBG::log($filteredCennik, 'array', "getPrice({$idType}, {$idProject}, {$idCompany}, {$jednostka}) all prices rows");
|
|
|
+
|
|
|
+ $filteredCennik = array_filter($filteredCennik, function ($item) use ($jednostka) {
|
|
|
+ return (empty($jednostka) || (!empty($jednostka) && $jednostka === $item['unit']));
|
|
|
+ });
|
|
|
+ DBG::log($filteredCennik, 'array', "getPrice({$idType}, {$idProject}, {$idCompany}, {$jednostka}) prices filtered by unit");
|
|
|
+ if (empty($filteredCennik)) return 0;
|
|
|
+
|
|
|
+ $adminCennik = array_filter($filteredCennik, function ($item) {
|
|
|
+ return (!$item['id_project'] && !$item['id_company']);
|
|
|
+ });
|
|
|
+ DBG::log($adminCennik, 'array', "getPrice({$idType}, {$idProject}, {$idCompany}, {$jednostka}) filtered admin prices");
|
|
|
+ if (!empty($adminCennik)) {
|
|
|
+ foreach ($adminCennik as $item) {
|
|
|
+ $price = round($item['price'], 2);
|
|
|
}
|
|
|
}
|
|
|
- DBG::_('DBG', '>1', 'default cennik: price', $price, __CLASS__, __FUNCTION__, __LINE__);
|
|
|
- if ($idCompany > 0) {// fetch price from Oferta Admin for given Company
|
|
|
- foreach ($cennikRaw as $item) {
|
|
|
- if (!$item['id_project'] && $idCompany == $item['id_company']) {
|
|
|
- if (empty($jednostka) || (!empty($jednostka) && $jednostka == $item['unit'])) {
|
|
|
- $price = round($item['price'], 2);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- DBG::_('DBG', '>1', 'default company cennik: price', $price, __CLASS__, __FUNCTION__, __LINE__);
|
|
|
+
|
|
|
+ if ($idProject === 0 && $idCompany === 0) {
|
|
|
+ return $price; // shold be in $adminCennik
|
|
|
}
|
|
|
- if ($idProject > 0 && $idCompany = 0) {// fetch price from Project Kosztorys
|
|
|
- foreach ($cennikRaw as $item) {
|
|
|
- if ($idProject == $item['id_project'] && !$item['id_company']) {
|
|
|
- if (empty($jednostka) || (!empty($jednostka) && $jednostka == $item['unit'])) {
|
|
|
- $price = round($item['price'], 2);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- DBG::_('DBG', '>1', 'project cennik: price', $price, __CLASS__, __FUNCTION__, __LINE__);
|
|
|
+ else if ($idProject > 0 && $idCompany === 0) {
|
|
|
+ $filteredCennik = array_filter($filteredCennik, function ($item) {
|
|
|
+ return ($item['id_project'] > 0 && !$item['id_company']);
|
|
|
+ });
|
|
|
+ DBG::log($filteredCennik, 'array', "getPrice({$idType}, {$idProject}, {$idCompany}, {$jednostka}) prices filtered by proj > 0 && com == 0");
|
|
|
}
|
|
|
- if ($idProject > 0 && $idCompany > 0) {// fetch price from Project Oferta for given Company
|
|
|
- foreach ($cennikRaw as $item) {
|
|
|
- if ($idProject == $item['id_project'] && $idCompany == $item['id_company']) {
|
|
|
- if (empty($jednostka) || (!empty($jednostka) && $jednostka == $item['unit'])) {
|
|
|
- $price = round($item['price'], 2);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- DBG::_('DBG', '>1', 'project company cennik: price', $price, __CLASS__, __FUNCTION__, __LINE__);
|
|
|
+ else if ($idProject === 0 && $idCompany > 0) {
|
|
|
+ $filteredCennik = array_filter($filteredCennik, function ($item) {
|
|
|
+ return (!$item['id_project'] && $item['id_company'] > 0);
|
|
|
+ });
|
|
|
+ DBG::log($filteredCennik, 'array', "getPrice({$idType}, {$idProject}, {$idCompany}, {$jednostka}) prices filtered by proj == 0 && com > 0");
|
|
|
+ }
|
|
|
+ else if ($idProject > 0 && $idCompany > 0) {
|
|
|
+ $filteredCennik = array_filter($filteredCennik, function ($item) {
|
|
|
+ return ($item['id_project'] > 0 && $item['id_company'] > 0);
|
|
|
+ });
|
|
|
+ DBG::log($filteredCennik, 'array', "getPrice({$idType}, {$idProject}, {$idCompany}, {$jednostka}) prices filtered by proj > 0 && com > 0");
|
|
|
+ }
|
|
|
+ if (empty($filteredCennik)) return $price;
|
|
|
+ foreach ($filteredCennik as $item) {
|
|
|
+ $price = round($item['price'], 2);
|
|
|
}
|
|
|
+ DBG::log("getPrice({$idType}, {$idProject}, {$idCompany}, {$jednostka}) returns '{$price}'");
|
|
|
return $price;
|
|
|
}
|
|
|
public static function _getPrices($idType, $idProject = 0, $idCompany = 0) {
|