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', 0, $data['projectInfo']); $data['KONIEC_BUDOWY'] = V::get('KONIEC_BUDOWY', 0, $data['projectInfo']); $data['days_to_finish'] = 0; // 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; } ?>

Projekt:

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:
2', 'data', $data, __CLASS__, __FUNCTION__, __LINE__); } }