Просмотр исходного кода

Wykresy do widoku statystyk sprzedaży (closes #87)

Piotr Labudda 11 лет назад
Родитель
Сommit
b0dfae5214
1 измененных файлов с 162 добавлено и 0 удалено
  1. 162 0
      SE/superedit-USERS2_MARKETING_STATS_CURRENT_COST_VIEW.php

+ 162 - 0
SE/superedit-USERS2_MARKETING_STATS_CURRENT_COST_VIEW.php

@@ -0,0 +1,162 @@
+<?php
+
+function USERS2_MARKETING_STATS_CURRENT_COST_VIEW() {
+	$db = DB::getDB();
+	$sql = "
+		select s.`PAY_RANGE_LIMIT`, s.`NET`, s.`NET_plus_TEL_or_TV`
+		from `USERS2_MARKETING_STATS_CURRENT_COST_VIEW` as s
+	";
+	$res = $db->query($sql);
+	while ($r = $db->fetch($res)) {
+		$stats[] = $r;
+	}
+
+	$zasobInfo = null;
+	$sql = "
+		select z.`DESC`, z.`DESC_PL`, z.`OPIS`
+		from `CRM_LISTA_ZASOBOW` z
+		where z.`DESC`='index.php?MENU_INIT=USERS2_MARKETING_STATS_CURRENT_COST_VIEW'
+	";
+	$res = $db->query($sql);
+	while ($r = $db->fetch($res)) {
+		$zasobInfo = $r;
+	}
+
+	SE_Layout::menu();
+	?>
+<div class="container">
+		<?php if ($zasobInfo) : ?>
+			<h1><?php echo $zasobInfo->DESC_PL; ?>
+				<br><small><?php echo $zasobInfo->OPIS; ?></small>
+			</h1>
+		<?php endif; ?>
+		<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.hbar.js"></script>
+		<script src="stuff/RGraph/libraries/RGraph.line.js"></script>
+
+<?php
+	$wykresWidth = 940;
+	$wykresHeight = 300;
+	$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)');
+	$lastPayRangeLimit = 0;
+	foreach ($stats as $vSalesByRangeLimit) {
+		$payRangeLimit = $vSalesByRangeLimit->PAY_RANGE_LIMIT;
+		$jsonPriceDataByRangeLimit = array();
+
+		$vValue = $vSalesByRangeLimit->NET;
+		$jsonPriceDataByRangeLimit["NET-{$lastPayRangeLimit}-{$payRangeLimit}"] = (int)$vValue;
+		$kLabel = 'NET';
+		$jsonTooltips[] = "Ilość klientów płącących za {$kLabel} w przedziale od {$lastPayRangeLimit}zł do {$payRangeLimit}zł: {$vValue}";
+
+		$vValue = $vSalesByRangeLimit->NET_plus_TEL_or_TV;
+		$jsonPriceDataByRangeLimit["NET-PLUS-{$lastPayRangeLimit}-{$payRangeLimit}"] = (int)$vValue;
+		$kLabel = 'NET plus TEL lub TV';
+		$jsonTooltips[] = "Ilość klientów płącących za {$kLabel} w przedziale od {$lastPayRangeLimit}zł do {$payRangeLimit}zł: {$vValue}";
+
+		$jsonData[] = array_values($jsonPriceDataByRangeLimit);
+		$jsonLabels[] = "od {$lastPayRangeLimit}zł do {$payRangeLimit}zł";
+		$lastPayRangeLimit = $payRangeLimit;
+	}
+
+	$wykresMinItemHeight = 14;
+	$wykresTestHeight = count($stats) * 3 * $wykresMinItemHeight;
+	if ($wykresTestHeight > $wykresHeight - 60 - 20) {
+		$wykresHeight = $wykresTestHeight + 60 + 20;
+	}
+	$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"> -->
+	<div style="margin:10px 0;">
+		<canvas id="wykres-stats" width="<?php echo $wykresWidth; ?>" height="<?php echo $wykresHeight; ?>">[No canvas support]</canvas>
+	</div>
+		<script>
+jQuery(document).ready(function(){
+//			.Set('hmargin', 0)
+		var bar = new RGraph.HBar('wykres-stats', <?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', 160)
+//			.Set('text.angle', 90)
+			.Set('tooltips', RGraph.ISOLD ? null : <?php echo json_encode($jsonTooltips); ?>)
+			.Set('tooltips.event', 'click')
+			.Set('labels.above', true)
+//			.Set('hmargin', 10)
+			.Set('vmargin', 10)
+//			.Set('background.grid.dotted', true)
+			.Set('background.grid.autofit', true)
+			.Set('background.grid.autofit.numhlines', <?php echo count($stats); ?>)
+			.Draw();
+});
+		</script>
+
+	<table class="table table-bordered" style="width:auto">
+		<tr>
+			<th>przedział cenowy</th>
+			<th>ilość klientów pacących za NET</th>
+			<th>ilość klientów pacących za NET plus TEL lub TV</th>
+		</tr>
+		<?php $lastRangeLimit = 0; foreach ($stats as $vStat) : ?>
+			<tr>
+				<td>od <?php echo $lastRangeLimit; ?>zł do <?php echo $vStat->PAY_RANGE_LIMIT; ?>zł </td>
+				<td><?php echo $vStat->NET; ?></td>
+				<td><?php echo $vStat->NET_plus_TEL_or_TV; ?></td>
+			</tr>
+			<?php $lastRangeLimit = $vStat->PAY_RANGE_LIMIT; ?>
+		<?php endforeach; ?>
+	</table>
+</div>
+	<?php
+
+	//echo '<pre>';print_r($stats);echo'</pre>';// TODO: RMME
+
+	$sqlCreateView = "
+		CREATE VIEW `USERS2_MARKETING_STATS_CURRENT_COST_VIEW` AS
+			select `USERS2_MARKETING_STATS_CURRENT_COST_TEMP_VIEW`.`PAY` AS `PAY_RANGE_LIMIT`
+				, sum(if((`USERS2_MARKETING_STATS_CURRENT_COST_TEMP_VIEW`.`SERVICES` = 'I'),1,0)) AS `NET`
+				, sum(if((`USERS2_MARKETING_STATS_CURRENT_COST_TEMP_VIEW`.`SERVICES` = 'ITV'),1,0)) AS `NET_plus_TEL_or_TV`
+			from `USERS2_MARKETING_STATS_CURRENT_COST_TEMP_VIEW`
+			group by `USERS2_MARKETING_STATS_CURRENT_COST_TEMP_VIEW`.`PAY`
+			order by `USERS2_MARKETING_STATS_CURRENT_COST_TEMP_VIEW`.`PAY`
+	";
+	$sqlCreateTempView = "
+		CREATE VIEW `USERS2_MARKETING_STATS_CURRENT_COST_TEMP_VIEW` AS
+			select `USERS2_MARKETING`.`M_REWIR` AS `M_REWIR`
+				, 'I' AS `SERVICES`
+				, (ceiling((`USERS2_MARKETING`.`I_PAY` / 10)) * 10) AS `PAY`
+			from `USERS2_MARKETING`
+			where ((substr(`USERS2_MARKETING`.`M_REWIR`,1,(locate('.',`USERS2_MARKETING`.`M_REWIR`) - 1)) in ('PRZYWIDZ','KOLBUDY','TRABKI_WIELKIE')) and (coalesce(`USERS2_MARKETING`.`I_PAY`,0) > 0))
+		union all
+			select `USERS2_MARKETING`.`M_REWIR` AS `M_REWIR`
+				, 'ITV' AS `SERVICES`
+				, (ceiling((((`USERS2_MARKETING`.`I_PAY` + coalesce(`USERS2_MARKETING`.`T_PAY`,0)) + coalesce(`USERS2_MARKETING`.`TV_PAY`,0)) / 10)) * 10) AS `PAY`
+			from `USERS2_MARKETING`
+			where ((substr(`USERS2_MARKETING`.`M_REWIR`,1,(locate('.',`USERS2_MARKETING`.`M_REWIR`) - 1)) in ('PRZYWIDZ','KOLBUDY','TRABKI_WIELKIE')) and (coalesce(`USERS2_MARKETING`.`I_PAY`,0) > 0) and ((coalesce(`USERS2_MARKETING`.`T_PAY`,0) > 0) or (coalesce(`USERS2_MARKETING`.`TV_PAY`,0) > 0)))
+	";
+}