Selaa lähdekoodia

updated budget for pro-netmedia

Piotr Labudda 9 vuotta sitten
vanhempi
commit
9b4eef83ec
1 muutettua tiedostoa jossa 114 lisäystä ja 18 poistoa
  1. 114 18
      SE/se-lib/Route/UrlAction/ProjektyProNetMediaBudget.php

+ 114 - 18
SE/se-lib/Route/UrlAction/ProjektyProNetMediaBudget.php

@@ -4,7 +4,16 @@ Lib::loadClass('RouteBase');
 Lib::loadClass('TypespecialVariable');
 Lib::loadClass('Request');
 Lib::loadClass('Response');
+Lib::loadClass('UI');
 
+// TODO: Typepsecial do Koresp.ORDER_NR
+// TODO: widoki zamówień wg statusu - ustalić dostępy za pomocą procesów
+/*
+DBG:
+	&DBG_M_DIST_COST_PROJECT=10000
+	&DBG_KONIEC_BUDOWY=2016-08-01
+
+*/
 class Route_UrlAction_ProjektyProNetMediaBudget extends RouteBase {// TODO: UrlActionBase @see Route_UrlAction
 
 	public function handleAuth() {
@@ -31,13 +40,17 @@ dostęp dla zarządu i os. odp.	kwota końcowa
 
 	public function defaultAction() {
 		SE_Layout::gora();
-		if (1 != V::get('_print', '', $_GET)) SE_Layout::menu();
 		try {
+			$viewParams = array();
+			$viewParams['print_mode'] = (1 == V::get('_print', '', $_GET));
+			if (!$viewParams['print_mode']) SE_Layout::menu();
+
 			$data = array();
 			$data['id_project'] = V::get('ID_PROJECT', 0, $_REQUEST, 'int');
 			if (!$data['id_project']) throw new Exception("Error: Brak nr projektu!");
 			$data = $this->setProps($data);
-			$this->budgetView($data);
+
+			$this->budgetView($data, $viewParams);
 		} catch (Exception $e) {
 			SE_Layout::alert('danger', "Error #" . $e->getCode() .  "|" . $e->getLine() .  ": " . $e->getMessage());
 		}
@@ -57,6 +70,10 @@ dostęp dla zarządu i os. odp.	kwota końcowa
 					, 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}
@@ -65,7 +82,19 @@ dostęp dla zarządu i os. odp.	kwota końcowa
 		$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
@@ -81,13 +110,18 @@ dostęp dla zarządu i os. odp.	kwota końcowa
 			group by r.ID
 		");
 
-		// $data['costs'] = array();
+		$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,
@@ -100,8 +134,36 @@ dostęp dla zarządu i os. odp.	kwota końcowa
 					);
 				}
 			}
+			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']
@@ -119,20 +181,42 @@ dostęp dla zarządu i os. odp.	kwota końcowa
 		return $data;
 	}
 
-	public function budgetView($data) {
+	public function budgetView($data, $viewParams) {
 		?>
 <div class="container">
-	<h1>Projekt: <?php echo $data['projectLabel']; ?></h1>
+	<div class="row">
+		<div class="col-md-6">
+			<?php if (!$viewParams['print_mode']) : ?>
+				<a class="btn btn-primary"
+					 href="index.php?_route=UrlAction_ProjektyProNetMediaBudget&ID_PROJECT=<?php echo $data['id_project']; ?>&_print=1"
+					 target="_blank">drukuj</a>
+			<?php endif; ?>
+		</div>
+		<div class="col-md-6" style="text-align:right">
+			<?php echo date("Y-m-d"); ?>
+		</div>
+	</div>
+	<h3>Projekt: <?php echo $data['projectLabel']; ?></h3>
+	<blockquote style="font-size:1em">
+		Data rozpoczęcia umowy: <?php echo $data['POCZATEK_UMOWY']; ?>
+		<br>Data zakończenia umowy: <?php echo $data['KONIEC_BUDOWY']; ?>
+		<!-- <br>Kwota Umowy (netto): <?php echo $data['M_DIST_COST_PROJECT']; ?> ? == $data['budget'] -->
+		<br>Pozostało dni: <?php echo $data['days_to_finish']; ?>
+	</blockquote>
 	<table class="table table-bordered">
 		<thead>
 			<tr>
-				<th>Kwota planowana<br><?php echo number_format($data['budget'], 2, ',', ' '); ?></th>
+				<th title="Kwota Umowy (netto)">Kwota planowana<br><?php echo UI::price($data['budget']); ?></th>
 				<th>Zamówienie</th>
 				<th>zaliczki</th>
 				<th>ilość pracowników / koszty pracownicze: powiązanie z raportami X współczynnik</th>
-				<th>koszty sprzętu/ wynajmowany na budowie: rozdział na różne rodzaj sprzętu: koparka itp.</th>
+				<th>koszty sprzętu / wynajmowany na budowie: rozdział na różne rodzaj sprzętu: koparka itp.
+					<br><?php echo UI::price($data['COST_OSPRZET']); ?>
+				</th>
 				<th>koszty własne: naprawy sprzętu</th>
-				<th>koszty materiałów</th>
+				<th>koszty materiałów
+					<br><?php echo UI::price($data['COST_MATERIALY']); ?>
+				</th>
 				<th>osprzet</th>
 				<th>dodatkowe koszty związane z nadwyżkami - rozbieżności odnośnie ustaleń</th>
 			</tr>
@@ -140,22 +224,34 @@ dostęp dla zarządu i os. odp.	kwota końcowa
 		<tbody>
 			<?php foreach ($data['costs'] as $cost) : ?>
 				<tr>
-					<td><?php echo $cost['budget_minus_sum']; ?></td>
-					<td><?php echo $cost['cost_zamowienia']; ?></td>
-					<td><?php echo $cost['cost_zaliczki']; ?></td>
-					<td><?php echo $cost['cost_pracownicy']; ?></td>
-					<td><?php echo $cost['cost_wynajem']; ?></td>
-					<td><?php echo $cost['cost_serwis']; ?></td>
-					<td><?php echo $cost['cost_materialy']; ?></td>
-					<td><?php echo $cost['cost_osprzet']; ?></td>
-					<td><?php echo $cost['cost_dodatkowe']; ?></td>
+					<td><?php echo UI::price($cost['budget_minus_sum']); ?></td>
+					<td style="color:<?php echo ($cost['cost_zamowienia']) ? 'black' : 'silver'; ?>">
+						<?php echo UI::price($cost['cost_zamowienia']); ?>
+						<div style="white-space:nowrap; color:silver">nr: <?php echo $cost['nr_zamowienia']; ?></div>
+						<?php if (!empty($cost['nr_fv_do_zamowienia'])) : ?>
+							<?php foreach ($cost['nr_fv_do_zamowienia'] as $idKoresp => $obcyNrFV) : ?>
+								<?php // TODO: link do edycji koresp by $idKoresp ?>
+								<div style="white-space:nowrap; color:silver">fv: <?php echo ($obcyNrFV) ? $obcyNrFV : " nr {$idKoresp}"; ?></div>
+							<?php endforeach; ?>
+						<?php endif; ?>
+					</td>
+					<td style="color:<?php echo ($cost['cost_zaliczki']) ? 'black' : 'silver'; ?>"><?php echo UI::price($cost['cost_zaliczki']); ?></td>
+					<td style="color:<?php echo ($cost['cost_pracownicy']) ? 'black' : 'silver'; ?>"><?php echo UI::price($cost['cost_pracownicy']); ?></td>
+					<td style="color:<?php echo ($cost['cost_wynajem']) ? 'black' : 'silver'; ?>"><?php echo UI::price($cost['cost_wynajem']); ?></td>
+					<td style="color:<?php echo ($cost['cost_serwis']) ? 'black' : 'silver'; ?>"><?php echo UI::price($cost['cost_serwis']); ?></td>
+					<td style="color:<?php echo ($cost['cost_materialy']) ? 'black' : 'silver'; ?>"><?php echo UI::price($cost['cost_materialy']); ?></td>
+					<td style="color:<?php echo ($cost['cost_osprzet']) ? 'black' : 'silver'; ?>"><?php echo UI::price($cost['cost_osprzet']); ?></td>
+					<td style="color:<?php echo ($cost['cost_dodatkowe']) ? 'black' : 'silver'; ?>"><?php echo UI::price($cost['cost_dodatkowe']); ?></td>
 				</tr>
 			<?php endforeach; ?>
 		</tbody>
 	</table>
 </div>
+<?php if ($viewParams['print_mode']) : ?>
+<script>window.print();</script>
+<?php endif; ?>
 		<?php
-		//DBG::_(true, true, 'data', $data, __CLASS__, __FUNCTION__, __LINE__);
+		DBG::_('DBG', '>2', 'data', $data, __CLASS__, __FUNCTION__, __LINE__);
 	}
 
 }