Parcourir la source

mv superedit-DEALS_SALES.php to Route_DealsSales

Piotr Labudda il y a 10 ans
Parent
commit
af44441dcf
1 fichiers modifiés avec 492 ajouts et 0 suppressions
  1. 492 0
      SE/se-lib/Route/DealsSales.php

+ 492 - 0
SE/se-lib/Route/DealsSales.php

@@ -0,0 +1,492 @@
+<?php
+
+Lib::loadClass('RouteBase');
+
+class Route_DealsSales extends RouteBase {
+
+
+	public function handleAuth() {
+		if (!User::logged()) {
+			throw new HttpException('Unauthorized', 401);
+		}
+	}
+
+	public function defaultAction() {
+		SE_Layout::gora();
+		SE_Layout::menu();
+
+		?>
+TODO: ...
+<?php
+		$this->legacy_DEALS_SALES();
+
+		SE_Layout::dol();
+	}
+
+	public function legacy_DEALS_SALES() {
+
+	$id_telboxes  = V::get('id_telboxes', '', $_REQUEST);
+	$id_companies = V::get('id_companies', '', $_REQUEST, 'int');
+	$task = V::get('_task', '', $_REQUEST);
+	switch ($task) {
+		case 'TYPESPECIAL': {
+			$DBG = ('1' == V::get('DBG', '', $_REQUEST));
+			header("Content-type: application/json");
+
+			$fld = V::get('fld', '', $_GET);
+			switch ($fld) {
+				case 'id_telboxes': {
+						Lib::loadClass('TypespecialVariable');
+						$typeSpecialTelboxes = TypespecialVariable::getInstance(-1, '__TELBOXES_NAME');
+
+						$query = V::get('q', '', $_REQUEST);
+						$rawRows = null;
+						$rows = $typeSpecialTelboxes->getValuesWithExports($query);
+						if($DBG){echo'<pre style="max-height:200px;overflow:auto;border:1px solid red;text-align:left;">rows('.$query.') (' . __CLASS__ . '::' . __FUNCTION__ . ':' . __LINE__ . '): ';print_r($rows);echo'</pre>';}
+						foreach ($rows as $kID => $vItem) {
+							$itemJson = new stdClass();
+							$itemJson->id = $vItem->id;
+							$itemJson->name = $vItem->param_out;
+							if (!empty($vItem->exports)) {
+								$itemJson->exports = $vItem->exports;
+							}
+							$jsonData[] = $itemJson;
+						}
+						echo json_encode($jsonData);
+					}
+					break;
+				case 'id_companies': {
+						Lib::loadClass('TypespecialVariable');
+						$typeSpecialCompanies = TypespecialVariable::getInstance(-1, '__COMPANIES');
+
+						$query = V::get('q', '', $_REQUEST);
+						$rawRows = null;
+						$rows = $typeSpecialCompanies->getValuesWithExports($query);
+						if($DBG){echo'<pre style="max-height:200px;overflow:auto;border:1px solid red;text-align:left;">rows('.$query.') (' . __CLASS__ . '::' . __FUNCTION__ . ':' . __LINE__ . '): ';print_r($rows);echo'</pre>';}
+						foreach ($rows as $kID => $vItem) {
+							$itemJson = new stdClass();
+							$itemJson->id = $vItem->id;
+							$itemJson->name = $vItem->param_out;
+							if (!empty($vItem->exports)) {
+								$itemJson->exports = $vItem->exports;
+							}
+							$jsonData[] = $itemJson;
+						}
+						echo json_encode($jsonData);
+					}
+					break;
+			}
+			exit;
+		}
+	}
+
+	SE_Layout::menu();
+
+	Lib::loadClass('TypespecialVariable');
+	$typeSpecialTelboxes  = TypespecialVariable::getInstance(-1, '__TELBOXES_NAME');
+	$typeSpecialCompanies = null;// TypespecialVariable::getInstance(-1, '__COMPANIES');
+
+	$obroty = array();
+	if (!empty($id_telboxes) || $id_companies > 0) {
+		$db = DB::getDB();
+		$sqlWhere = array();
+		//if (!empty($id_telboxes))  $sqlWhere[] = " d.`T_TELBOX_NEIGHBOUR_IN`='{$id_telboxes}' ";
+		if (!empty($id_telboxes))  $sqlWhere[] = " o.`T_TELBOX_NEIGHBOUR_IN`='{$id_telboxes}' ";
+		//if ($id_companies > 0) $sqlWhere[] = " d.`ID_BILLING_USERS`='{$id_companies}' ";
+		$sqlWhere = (!empty($sqlWhere))? implode(" or ", $sqlWhere) : '';
+		$sql = "select o.`ID`
+				-- , d.`T_TELBOX_NEIGHBOUR_IN`
+				, o.`T_TELBOX_NEIGHBOUR_IN`
+				, o.`ID_DEALS_TABLE`
+				, o.`SALES_DATE`
+				, o.`SALES_VALUE`
+			from `DEALS_SALES` as o
+				-- join `DEALS_TABLE` as d on (d.`ID`=o.`ID_DEALS_TABLE`)
+			where
+				{$sqlWhere}
+		";
+		if(V::get('DBG','',$_GET)){echo'<pre style="max-height:200px;overflow:auto;border:1px solid red;text-align:left;"> (' . __CLASS__ . '::' . __FUNCTION__ . ':' . __LINE__ . '): ';print_r($sql);echo'</pre>';}
+		$res = $db->query($sql);
+		while ($r = $db->fetch($res)) {
+			$year  = substr($r->SALES_DATE, 0, 4);
+			$month = substr($r->SALES_DATE, 5, 2);
+			$obroty[$r->ID_DEALS_TABLE][$year][$month] = $r->SALES_VALUE;
+		}
+	}
+
+	$monthsOut = array();
+	for ($i = 0; $i < 12; $i++) $monthsOut[] = sprintf("%02d", $i + 1);
+
+	?>
+
+	<div class="container-fluid">
+
+	<form action="" method="GET" class="form-inline">
+	<table>
+<!--
+	<summary>Wybierz lokal i/lub firmę w celu przeglądania obrotów </summary>
+-->
+	<thead>
+		<tr>
+			<th style="text-align:left">Lokal</th>
+			<th style="text-align:left">
+				<?php if ($typeSpecialCompanies) : ?>
+					Firma
+				<?php endif; ?>
+			</th>
+		</tr>
+	</thead>
+	<tbody>
+		<tr>
+			<td>
+				<?php if ($typeSpecialTelboxes) : ?>
+					<?php
+						$fName = 'id_telboxes';
+						$fldParams = array();
+						$fldParams['allowCreate'] = false;
+						$fldParams['ajaxDataUrlBase'] = "index.php?FUNCTION_INIT=" . __FUNCTION__ . "&HEADER_NOT_INIT=YES&_task=TYPESPECIAL&fld={$fName}";
+						//$fldParams['ajaxDataUrlBase'] .= "&DBG_TS=3";
+						echo $typeSpecialTelboxes->showFormItem($tblID = -1, $fName, $selValue = $id_telboxes, $fldParams);
+					?>
+				<?php endif; ?>
+			</td>
+			<td>
+				<?php if ($typeSpecialCompanies) : ?>
+						<?php
+							$fName = 'id_companies';
+							$fldParams = array();
+							$fldParams['allowCreate'] = false;
+							$fldParams['ajaxDataUrlBase'] = "index.php?FUNCTION_INIT=" . __FUNCTION__ . "&HEADER_NOT_INIT=YES&_task=TYPESPECIAL&fld={$fName}";
+							//$fldParams['ajaxDataUrlBase'] .= "&DBG_TS=3";
+							echo $typeSpecialCompanies->showFormItem($tblID = -1, $fName, $selValue = $id_companies, $fldParams);
+						?>
+				<?php endif; ?>
+			</td>
+		</tr>
+		<tr>
+			<td clspan="2">
+				<button class="btn">wybierz</button>
+			</td>
+		</tr>
+	</tbody>
+	</table>
+	</form>
+
+	<?php if (empty($obroty)) : ?>
+		
+	<?php else : ?>
+		<table class="table table-bordered table-hover">
+			<thead>
+				<th></th>
+				<?php foreach ($monthsOut as $vMonth) : ?>
+					<th><?php echo $vMonth; ?></th>
+				<?php endforeach; ?>
+				<th>suma</th>
+			</thead>
+		<?php foreach ($obroty as $kComId => $vSalesByYear) : ?>
+			<?php krsort($vSalesByYear); foreach ($vSalesByYear as $kYearId => $vSalesByMonth) : ?>
+				<tr>
+					<th><?php echo $kYearId; ?></th>
+					<?php $sumaYear = 0; foreach ($monthsOut as $vMonth) : ?>
+						<td>
+							<?php if (isset($vSalesByMonth[$vMonth])) : ?>
+								<?php $sumaYear += $vSalesByMonth[$vMonth]; ?>
+								<nobr><?php echo number_format($vSalesByMonth[$vMonth], 2, ',', ' '); ?></nobr>
+							<?php else : ?>
+								...
+							<?php endif; ?>
+						</td>
+					<?php endforeach; ?>
+					<td><nobr><?php echo number_format($sumaYear, 2, ',', ' '); ?></nobr></td>
+				</tr>
+			<?php endforeach; ?>
+		<?php endforeach; ?>
+		</table>
+
+		<script src="stuff/RGraph/libraries/RGraph.common.core.js"></script>
+		<script src="stuff/RGraph/libraries/RGraph.common.dynamic.js"></script>
+		<script src="stuff/RGraph/libraries/RGraph.common.key.js"></script>
+		<script src="stuff/RGraph/libraries/RGraph.drawing.rect.js"></script>
+		<script src="stuff/RGraph/libraries/RGraph.common.tooltips.js"></script>
+		<script src="stuff/RGraph/libraries/RGraph.bar.js"></script>
+		<script src="stuff/RGraph/libraries/RGraph.line.js"></script>
+
+<!--
+
+<?php
+	$wykresWidth = 940;
+	$jsonLabels = array();
+	$jsonColors = array();
+	$jsonData = array();
+	$jsonTooltips = array();
+
+	$jsonColors = array('Gradient(#fe783e:#EC561B:#F59F7D)', 'Gradient(#99f:#27afe9:#058DC7:#058DC7)', 'Gradient(#94f776:#50B332:#B1E59F)', 'Gradient(#CC76F7:#8832B3:#CE9FE5)', 'Gradient(#768CF7:#3247B3:#9FABE5)', 'Gradient(#F77681:#B3323C:#E59FA5)');
+	$vSalesByYear = reset($obroty);// only first company
+	krsort($vSalesByYear);
+	foreach ($vSalesByYear as $kYearId => $vSalesByMonth) {
+		$jsonYearData = array();
+		foreach ($monthsOut as $vMonth) {
+			if (isset($vSalesByMonth[$vMonth])) {
+				$jsonYearData["{$kYearId}-{$vMonth}"] = (float)str_replace('.', ',', $vSalesByMonth[$vMonth]);
+			} else {
+				$jsonYearData["{$kYearId}-{$vMonth}"] = 0;
+			}
+		}
+		$jsonYearData = array_reverse($jsonYearData);
+		//$jsonData[] = array_values($jsonYearData);
+		foreach ($jsonYearData as $kLabel => $vValue) {
+			$jsonLabels[] = $kLabel;
+			$jsonData[]   = $vValue;
+			$jsonTooltips[] = "Obrót " . number_format($vValue, 2, ',', ' ') . " w {$kLabel}";
+		}
+	}
+
+	$wykresMinItemWidth = 30;
+	$wykresTestWidth = count(array_keys($vSalesByYear)) * 12 * $wykresMinItemWidth;
+	if ($wykresTestWidth > $wykresWidth - 60 - 20) {
+		$wykresWidth = $wykresTestWidth + 60 + 20;
+	}
+?>
+	<div style="width:100%; margin:10px 0; border:1px solid gray; overflow:auto">
+		<canvas id="wykres1" width="<?php echo $wykresWidth; ?>" height="300">[No canvas support]</canvas>
+	</div>
+		<script>
+jQuery(document).ready(function(){
+//			.Set('hmargin', 0)
+		var bar = new RGraph.Bar('wykres1', <?php echo json_encode($jsonData); ?>)
+			.Set('labels', <?php echo json_encode($jsonLabels); ?>)
+			.Set('colors', <?php echo json_encode($jsonColors); ?>)
+			.Set('strokestyle', 'white')
+			.Set('linewidth', 1)
+			.Set('shadow', true)
+			.Set('shadow.color', '#ccc')
+			.Set('shadow.offsetx', 0)
+			.Set('shadow.offsety', 0)
+			.Set('shadow.blur', 10)
+//			.Set('gutter.right', 20)
+			.Set('gutter.bottom', 60)
+			.Set('gutter.left', 60)
+			.Set('text.angle', 90)
+			.Set('tooltips', RGraph.ISOLD ? null : <?php echo json_encode($jsonTooltips); ?>)
+			.Set('tooltips.event', 'mousemove')
+			.Set('labels.above', true)
+			.Draw();
+});
+		</script>
+
+
+<?php
+	$wykresWidth = 940;
+	$jsonLabels = array();
+	$jsonColors = array();
+	$jsonData = array();
+	$jsonTooltips = array();
+
+	$jsonColors = array('Gradient(#fe783e:#EC561B:#F59F7D)', 'Gradient(#99f:#27afe9:#058DC7:#058DC7)', 'Gradient(#94f776:#50B332:#B1E59F)', 'Gradient(#CC76F7:#8832B3:#CE9FE5)', 'Gradient(#768CF7:#3247B3:#9FABE5)', 'Gradient(#F77681:#B3323C:#E59FA5)');
+	$vSalesByYear = reset($obroty);// only first company
+	krsort($vSalesByYear);
+	foreach ($monthsOut as $vMonth) {
+		$jsonYearData = array();
+		foreach ($vSalesByYear as $kYearId => $vSalesByMonth) {
+			if (isset($vSalesByMonth[$vMonth])) {
+				$jsonYearData["{$kYearId}-{$vMonth}"] = (float)str_replace('.', ',', $vSalesByMonth[$vMonth]);
+			} else {
+				$jsonYearData["{$kYearId}-{$vMonth}"] = 0;
+			}
+		}
+
+		//$jsonYearData = array_reverse($jsonYearData);
+		//$jsonData[] = array_values($jsonYearData);
+		foreach ($jsonYearData as $kLabel => $vValue) {
+			$jsonLabels[] = $kLabel;
+			$jsonData[]   = $vValue;
+			$jsonTooltips[] = "Obrót " . number_format($vValue, 2, ',', ' ') . " w {$kLabel}";
+		}
+	}
+
+	$wykresMinItemWidth = 30;
+	$wykresTestWidth = count(array_keys($vSalesByYear)) * 12 * $wykresMinItemWidth;
+	if ($wykresTestWidth > $wykresWidth - 60 - 20) {
+		$wykresWidth = $wykresTestWidth + 60 + 20;
+	}
+?>
+	<div style="width:100%; margin:10px 0; border:1px solid gray; overflow:auto">
+		<canvas id="wykres2" width="<?php echo $wykresWidth; ?>" height="300">[No canvas support]</canvas>
+	</div>
+		<script>
+jQuery(document).ready(function(){
+//			.Set('hmargin', 15)
+		var bar = new RGraph.Bar('wykres2', <?php echo json_encode($jsonData); ?>)
+			.Set('labels', <?php echo json_encode($jsonLabels); ?>)
+			.Set('colors', <?php echo json_encode($jsonColors); ?>)
+			.Set('strokestyle', 'white')
+			.Set('linewidth', 1)
+			.Set('shadow', true)
+			.Set('shadow.color', '#ccc')
+			.Set('shadow.offsetx', 0)
+			.Set('shadow.offsety', 0)
+			.Set('shadow.blur', 10)
+//			.Set('gutter.right', 20)
+			.Set('gutter.bottom', 60)
+			.Set('gutter.left', 60)
+			.Set('text.angle', 90)
+			.Set('tooltips', RGraph.ISOLD ? null : <?php echo json_encode($jsonTooltips); ?>)
+			.Set('tooltips.event', 'mousemove')
+			.Set('labels.above', true)
+			.Draw();
+});
+		</script>
+-->
+
+<?php
+	$wykresWidth = 940;
+	$jsonLabels = array();
+	$jsonColors = array();
+	$jsonData = array();
+	$jsonTooltips = array();
+
+	$jsonColors = array('Gradient(#fe783e:#EC561B:#F59F7D)', 'Gradient(#99f:#27afe9:#058DC7:#058DC7)', 'Gradient(#94f776:#50B332:#B1E59F)', 'Gradient(#CC76F7:#8832B3:#CE9FE5)', 'Gradient(#768CF7:#3247B3:#9FABE5)', 'Gradient(#F77681:#B3323C:#E59FA5)');
+	$vSalesByYear = reset($obroty);// only first company
+	ksort($vSalesByYear);
+	foreach ($vSalesByYear as $kYearId => $vSalesByMonth) {
+		$jsonYearData = array();
+		foreach ($monthsOut as $vMonth) {
+			if (isset($vSalesByMonth[$vMonth])) {
+				$jsonYearData["{$kYearId}-{$vMonth}"] = (float)str_replace('.', ',', $vSalesByMonth[$vMonth]);
+			} else {
+				$jsonYearData["{$kYearId}-{$vMonth}"] = 0;
+			}
+		}
+		//$jsonYearData = array_reverse($jsonYearData);
+		//$jsonData[] = array_values($jsonYearData);
+		foreach ($jsonYearData as $kLabel => $vValue) {
+			$jsonLabels[] = $kLabel;
+		//	$jsonData[]   = $vValue;
+			$jsonTooltips[] = "Obrót " . number_format($vValue, 2, ',', ' ') . " w {$kLabel}";
+		}
+		$jsonData[] = array_values($jsonYearData);
+	}
+
+	$wykresMinItemWidth = 20;
+	$wykresTestWidth = count(array_keys($vSalesByYear)) * 12 * $wykresMinItemWidth;
+	if ($wykresTestWidth > $wykresWidth - 60 - 20) {
+		$wykresWidth = $wykresTestWidth + 60 + 20;
+	}
+	$jsonLabels = array_keys($vSalesByYear);
+	$jsonColorsAll = array();
+	for ($i = 0, $mi = 0, $mc = count($jsonColors); $i < 12; $i++) {
+		$jsonColorsAll[] = $jsonColors[$mi];
+		if (++$mi >= $mc) {
+			$mi = 0;
+		}
+	}
+	$jsonColors = $jsonColorsAll;
+?>
+	<div style="width:100%; margin:10px 0; border:1px solid gray; overflow:auto">
+		<canvas id="wykres3" width="<?php echo $wykresWidth; ?>" height="300">[No canvas support]</canvas>
+	</div>
+		<script>
+jQuery(document).ready(function(){
+//			.Set('hmargin', 0)
+		var bar = new RGraph.Bar('wykres3', <?php echo json_encode($jsonData); ?>)
+			.Set('labels', <?php echo json_encode($jsonLabels); ?>)
+			.Set('colors', <?php echo json_encode($jsonColors); ?>)
+			.Set('strokestyle', 'white')
+			.Set('linewidth', 1)
+			.Set('shadow', true)
+			.Set('shadow.color', '#ccc')
+			.Set('shadow.offsetx', 0)
+			.Set('shadow.offsety', 0)
+			.Set('shadow.blur', 10)
+//			.Set('gutter.right', 20)
+			.Set('gutter.bottom', 30)
+			.Set('gutter.left', 60)
+//			.Set('text.angle', 90)
+			.Set('tooltips', RGraph.ISOLD ? null : <?php echo json_encode($jsonTooltips); ?>)
+			.Set('tooltips.event', 'mousemove')
+			.Set('labels.above', true)
+			.Set('hmargin', 20)
+			.Draw();
+});
+		</script>
+
+
+<?php
+	$wykresWidth = 940;
+	$jsonLabels = array();
+	$jsonColors = array();
+	$jsonData = array();
+	$jsonTooltips = array();
+
+	$jsonColors = array('Gradient(#fe783e:#EC561B:#F59F7D)', 'Gradient(#99f:#27afe9:#058DC7:#058DC7)', 'Gradient(#94f776:#50B332:#B1E59F)', 'Gradient(#CC76F7:#8832B3:#CE9FE5)', 'Gradient(#768CF7:#3247B3:#9FABE5)', 'Gradient(#F77681:#B3323C:#E59FA5)');
+	$vSalesByYear = reset($obroty);// only first company
+	ksort($vSalesByYear);
+	foreach ($monthsOut as $vMonth) {
+		$jsonYearData = array();
+		foreach ($vSalesByYear as $kYearId => $vSalesByMonth) {
+			if (isset($vSalesByMonth[$vMonth])) {
+				$jsonYearData["{$kYearId}-{$vMonth}"] = (float)str_replace('.', ',', $vSalesByMonth[$vMonth]);
+			} else {
+				$jsonYearData["{$kYearId}-{$vMonth}"] = 0;
+			}
+		}
+
+		//$jsonYearData = array_reverse($jsonYearData);
+		//$jsonData[] = array_values($jsonYearData);
+		foreach ($jsonYearData as $kLabel => $vValue) {
+			$jsonLabels[] = $kLabel;
+			$jsonTooltips[] = "Obrót " . number_format($vValue, 2, ',', ' ') . " w {$kLabel}";
+		}
+		$jsonData[] = array_values($jsonYearData);
+	}
+
+	$wykresMinItemWidth = 20;
+	$wykresTestWidth = count(array_keys($vSalesByYear)) * 12 * $wykresMinItemWidth;
+	if ($wykresTestWidth > $wykresWidth - 60 - 20) {
+		$wykresWidth = $wykresTestWidth + 60 + 20;
+	}
+	$jsonLabels = array('styczeń','luty','marzec','kwiecień','maj','czerwiec','lipiec','sierpień','wrzesień','październik','listopad','grudzień');
+	$jsonColorsAll = array();
+	for ($i = 0, $mi = 0, $mc = count($jsonColors); $i < count($jsonData); $i++) {
+		$jsonColorsAll[] = $jsonColors[$mi];
+		if (++$mi >= $mc) {
+			$mi = 0;
+		}
+	}
+	$jsonColors = $jsonColorsAll;
+?>
+	<div style="width:100%; margin:10px 0; border:1px solid gray; overflow:auto">
+		<canvas id="wykres4" width="<?php echo $wykresWidth; ?>" height="300">[No canvas support]</canvas>
+	</div>
+		<script>
+jQuery(document).ready(function(){
+//			.Set('hmargin', 15)
+		var bar = new RGraph.Bar('wykres4', <?php echo json_encode($jsonData); ?>)
+			.Set('labels', <?php echo json_encode($jsonLabels); ?>)
+			.Set('colors', <?php echo json_encode($jsonColors); ?>)
+			.Set('strokestyle', 'white')
+			.Set('linewidth', 1)
+			.Set('shadow', true)
+			.Set('shadow.color', '#ccc')
+			.Set('shadow.offsetx', 0)
+			.Set('shadow.offsety', 0)
+			.Set('shadow.blur', 10)
+//			.Set('gutter.right', 20)
+			.Set('gutter.bottom', 30)
+			.Set('gutter.left', 60)
+//			.Set('text.angle', 90)
+			.Set('tooltips', RGraph.ISOLD ? null : <?php echo json_encode($jsonTooltips); ?>)
+			.Set('tooltips.event', 'mousemove')
+			.Set('labels.above', true)
+			.Set('hmargin', 20)
+			.Draw();
+});
+		</script>
+
+	<?php endif; ?>
+
+	</div>
+	<?php
+	}
+
+}