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']); $data['ordersRaw'] = DB::getPDO()->fetchAll(" select r.ID , r.ORDER_LABEL , 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} 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( 'cost_zamowienia'=>$order['SUM_NETTO'], 'nr_zamowienia'=>$labelOrder, '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) { ?>

Projekt:

Data rozpoczęcia umowy:
Data zakończenia umowy:
Pozostało dni:
Kwota planowana
Zamówienie zaliczki ilość pracowników / koszty pracownicze: powiązanie z raportami X współczynnik koszty sprzętu / wynajmowany na budowie: rozdział na różne rodzaj sprzętu: koparka itp.
koszty własne: naprawy sprzętu koszty materiałów
osprzet dodatkowe koszty związane z nadwyżkami - rozbieżności odnośnie ustaleń
nr:
$obcyNrFV) : ?>
fv:
2', 'data', $data, __CLASS__, __FUNCTION__, __LINE__); } }