setProps($data); $this->budgetView($data, $viewParams); } catch (Exception $e) { SE_Layout::alert('danger', "Error #" . $e->getCode() . "|" . $e->getLine() . ": " . $e->getMessage()); } SE_Layout::dol(); } public function setProps($data) { $idProj = V::get('id_project', 0, $data, 'int'); if (!$idProj) return $data;// throw errro? $data['budget'] = 0; $data['projectInfo'] = null; $data['projectLabel'] = ''; $data['costs'] = array(); $rows = DB::getPDO()->fetchAll(" select p.ID , p.M_DIST_DESC , p.M_DIST_DEALNUM , p.M_DIST_COST_PROJECT , p.POCZATEK_UMOWY , p.KONIEC_BUDOWY , p.COST_OSPRZET , p.COST_MATERIALY from IN7_MK_BAZA_DYSTRYBUCJI p where p.A_STATUS not in('DELETED') and p.ID = {$idProj} "); if (empty($rows)) return $data;// throw errro? $data['projectInfo'] = $rows[0]; $data['budget'] = V::get('M_DIST_COST_PROJECT', 0, $data['projectInfo']); $data['projectLabel'] = $data['projectInfo']['M_DIST_DESC']; $data['POCZATEK_UMOWY'] = V::get('POCZATEK_UMOWY', '', $data['projectInfo']); $data['KONIEC_BUDOWY'] = V::get('KONIEC_BUDOWY', '', $data['projectInfo']); $data['days_to_finish'] = null; // pozostało dni - // ilość dni wyliczana z różnicy dat [13513] KONIEC_BUDOWY - [13512] POCZATEK_UMOWY (raczej today) $data['budget'] = V::get('DBG_M_DIST_COST_PROJECT', $data['budget'], $_GET);// TODO: TEST $data['KONIEC_BUDOWY'] = V::get('DBG_KONIEC_BUDOWY', $data['KONIEC_BUDOWY'], $_GET);// TODO: TEST if ($data['KONIEC_BUDOWY']) { $dStart = new DateTime(date('Y-m-d')); $dEnd = new DateTime($data['KONIEC_BUDOWY']); $dDiff = $dStart->diff($dEnd); $data['days_to_finish'] = ('-' == $dDiff->format('%R')) ? -1 * $dDiff->days : $dDiff->days; } $data['COST_OSPRZET'] = V::get('COST_OSPRZET', 0, $data['projectInfo']); $data['COST_MATERIALY'] = V::get('COST_MATERIALY', 0, $data['projectInfo']); // TODO: tylko ZATWIERDZONE, OCZEKUJE_ZATWIERDZENIA i OCZEKUJE_OSTATECZNEGO_ZATWIERDZENIA $data['ordersRaw'] = DB::getPDO()->fetchAll(" select r.ID , r.ORDER_LABEL , r.ORDER_DATE , r.APPROVE_STATUS , sum(o.OFFER_PRICE_PER_UNIT * o.OFFER_QUANTITY) as SUM_NETTO from CRM_LISTA_ZASOBOW_ORDERS r left join CRM_LISTA_ZASOBOW_OFFERS o on( o.ID_ORDER = r.ID and (o.A_STATUS is null or o.A_STATUS not in('DELETED')) ) where (r.A_STATUS is null or r.A_STATUS not in('DELETED')) and r.ID_PROJECT = {$idProj} -- and r.APPROVE_STATUS in('ZATWIERDZONE', 'OCZEKUJE_ZATWIERDZENIA', 'OCZEKUJE_OSTATECZNEGO_ZATWIERDZENIA') group by r.ID "); $toFindKoresp = array();// Order.ID => Order.label { $idx = 0; foreach ($data['ordersRaw'] as $idxOrders => $order) { $idOrder = $order['ID']; $labelOrder = $order['ORDER_LABEL']; $toFindKoresp[$idOrder] = $labelOrder; if (count($data['costs']) < $idxOrders + 1) { $data['costs'][] = array( 'data'=>$order['ORDER_DATE'], 'order_approve_status'=>$order['APPROVE_STATUS'], 'order_cost'=>$order['SUM_NETTO'], 'cost_zamowienia'=>$order['SUM_NETTO'],// TODO: RMME -> mved to `order_cost` 'order_nr'=>$labelOrder, 'nr_zamowienia'=>$labelOrder,// TODO: RMME -> mved to `order_nr` 'nr_fv_do_zamowienia'=>array(), 'cost_zaliczki'=>0, 'cost_pracownicy'=>0, 'cost_wynajem'=>0, 'cost_serwis'=>0, 'cost_materialy'=>0, 'cost_osprzet'=>0, 'cost_dodatkowe'=>0, 'sum'=>0, 'orderRaw'=>$order ); } } if (!empty($toFindKoresp)) {// TODO: find fv nr - from Koresp. (nr_fv_do_zamowienia) - Koresp.ORDER_NR $sqlOrderLabels = array(); foreach ($toFindKoresp as $idOrder => $labelOrder) { $sqlOrderLabels[] = "'{$labelOrder}'"; } $sqlOrderLabels = implode(",", $sqlOrderLabels); // TODO: tylko określone typy z Koresp? // TODO: co jeśli brakuje obcy_nr_koresp(`K_NR_OTRZYM_KORESP`) - ID? $data['fvToOrdersRaw'] = DB::getPDO()->fetchAll(" select k.ID , k.ORDER_NR , k.K_NR_OTRZYM_KORESP as obcy_nr_koresp from IN7_DZIENNIK_KORESP k where k.ORDER_NR in({$sqlOrderLabels}) "); foreach ($data['fvToOrdersRaw'] as $fv) { $labelOrder = $fv['ORDER_NR']; foreach ($data['costs'] as $cost) { if ($isOrder && $labelOrder == $cost['nr_zamowienia']) { $idKoresp = $fv['ID']; $cost['nr_fv_do_zamowienia'][$idKoresp] = $fv['obcy_nr_koresp']; } } } } $budget = $data['budget']; foreach ($data['costs'] as $idx => $cost) { // TODO: fix - `cost_wynajem` pewnie będzie częścią z zamówienia - minus od project COST_OSPRZET // TODO: fix - `cost_materialy` pewnie będzie częścią z zamówienia - minus od project COST_MATERIALY $sum = $cost['cost_zamowienia'] + $cost['cost_zaliczki'] + $cost['cost_pracownicy'] + $cost['cost_wynajem'] + $cost['cost_serwis'] + $cost['cost_materialy'] + $cost['cost_osprzet'] + $cost['cost_dodatkowe'] ; $budget -= $sum; $data['costs'][$idx]['budget_minus_sum'] = $budget; $data['costs'][$idx]['sum'] = $sum; } } return $data; } public function budgetView($data, $viewParams) { $styleZyskStrata = 'color: black'; if ($data['TODO__sum_zysk_strata'] > 0) $styleZyskStrata = 'color:green'; if ($data['TODO__sum_zysk_strata'] < 0) $styleZyskStrata = 'color:red'; $costs = $data['costs']; foreach ($costs as $idx => $cost) { $cost['is_order'] = ($cost['order_cost'] && $cost['order_nr']); if ($cost['is_order']) { $cost['cell_order_color'] = '#aaa'; $cost['cell_order_title'] = ''; switch ($cost['order_approve_status']) { case 'ZATWIERDZONE': $cost['cell_order_color'] = 'black'; break; case 'OCZEKUJE_OSTATECZNEGO_ZATWIERDZENIA': $cost['cell_order_color'] = '#777'; break; case 'OCZEKUJE_ZATWIERDZENIA': $cost['cell_order_color'] = '#777'; break; case 'WERSJA_ROBOCZA': $cost['cell_order_color'] = '#aaa'; break; } switch ($cost['order_approve_status']) { case 'ZATWIERDZONE': $cost['cell_order_title'] = "Zamówienie zatwierdzone"; break; case 'OCZEKUJE_OSTATECZNEGO_ZATWIERDZENIA': $cost['cell_order_title'] = "Zamówienie oczekuje ostatecznego zatwierdzenia"; break; case 'OCZEKUJE_ZATWIERDZENIA': $cost['cell_order_title'] = "Zamówienie oczekuje zatwierdzenia"; break; case 'ODRZUCONE': $cost['cell_order_title'] = "Zamówienie odrzucone"; break; case 'WERSJA_ROBOCZA': $cost['cell_order_title'] = "Wersja robocza"; break; } } $costs[$idx] = $cost; } ?>
| data | data rozpoczęcia umowy | data zakończenia umowy | pozostało dni: | Wartość kosztorysu | ROBOCIZNA | Koszty dodatkowe (reprezentacyjne) | Zamówienia | Zaliczki | Zgody wejścia w teren | Wynajem sprzętu | Koszty projektu | ||||||||||
| Kwota Umowy (netto) | Aneks (netto) | kary, potrącenia (netto) | Osprzęt | Materiały | |||||||||||||||||
| Zysk/Strata | koszty pracowników | koszt firmy podwykonawczej | |||||||||||||||||||
| numer zamówienia (kwota netto) | numer faktury kwota po weryfikacji | zaliczka kwota | rozliczanie zaliczki koszty dzienne | służebności | odszkodowania | Sprzęt własny | sprzęt wynajęty | organizacja ruchu | zajętość pasa drogowego | ||||||||||||
|
nr:
|
$obcyNrFV) : ?>
fv:
|
||||||||||||||||||||