source: www/finance/include.php@ 13

Last change on this file since 13 was 6, checked in by george, 18 years ago

Upraveno: Aktualizace výpočtů tarifů ve financích.

  • Property svn:executable set to *
File size: 4.1 KB
Line 
1<?php
2NactiMesicniParametry();
3
4function RecalculateTariffs($Period = 1)
5{
6 global $Tarify, $MaxSpeed, $Internet, $SpeedElement, $BaseSpeedElement, $Database;
7
8 $ResidualPrice = $Internet;
9 $ResidualSpeed = $MaxSpeed;
10
11 $Tarify = array();
12 $DbResult = $Database->select('finance_tariffs', '*', 'period='.$Period.' ORDER BY speed_factor');
13 while($Tariff = $DbResult->fetch_array())
14 {
15 $Tarify[$Tariff['id']] = $Tariff;
16 }
17
18 if($Period == 0) $Column = 'now'; else $Column = 'next';
19 $TotalUserCount = 0;
20 $TotalUnits = 0;
21 $TotalTarifUnits = 0;
22 $TotalTarifSpeedUnits = 0;
23 foreach($Tarify as $Index => $Tarif)
24 {
25 $DbResult = $Database->select('users', 'COUNT(*)', 'inet_tarif_'.$Column.'='.$Index.' AND inet=1 AND role=0');
26 $Row = $DbResult->fetch_array();
27 $Tarify[$Index]['user_count'] = $Row[0];
28 switch($Tarif['group_id'])
29 {
30 case 1:
31 $TotalUserCount = $TotalUserCount + $Tarify[$Index]['user_count'];
32 $Tarify[$Index]['total_units'] = $Tarify[$Index]['price_units'] * $Tarify[$Index]['user_count'];
33 $TotalTarifUnits = $TotalTarifUnits + $Tarify[$Index]['total_units'];
34
35 if($Index == 3) // Zarizeni site v tarifu 3 neplati penize, ale ma internet
36 $Tarify[$Index]['total_speed_factor'] = $Tarify[$Index]['speed_factor'] * ($Tarify[$Index]['user_count']+1);
37 else $Tarify[$Index]['total_speed_factor'] = $Tarify[$Index]['speed_factor'] * $Tarify[$Index]['user_count'];
38 $TotalTarifSpeedUnits = $TotalTarifSpeedUnits + $Tarify[$Index]['total_speed_factor'];
39 break;
40 case 2:
41 $ResidualPrice -= $Tarif['price'] * $Tarify[$Index]['user_count'];
42 $ResidualSpeed -= $Tarif['min_speed'] * $Tarify[$Index]['user_count'];
43 $Tarify[$Index]['total_units'] = $Tarify[$Index]['price_units'] * $Tarify[$Index]['user_count'];
44 break;
45 case 3:
46 $Tarify[$Index]['total_units'] = $Tarify[$Index]['price_units'] * $Tarify[$Index]['user_count'];
47 break;
48 }
49 }
50 $PricePerUnit = $ResidualPrice / $TotalTarifUnits;
51 $SpeedPerUnit = $ResidualSpeed * 1024 / $TotalTarifSpeedUnits;
52
53 // Recalculate price
54 foreach($Tarify as $Index => $Tarif)
55 {
56 switch($Tarif['group_id'])
57 {
58 case 1:
59 $Tarify[$Index]['price'] = round($Tarif['price_units'] * $PricePerUnit);
60 $Tarify[$Index]['min_speed'] = round($Tarif['speed_factor'] * $SpeedPerUnit);
61 $Tarify[$Index]['max_speed'] = round($Tarify[$Index]['speed_factor'] * $BaseSpeedElement * 1024);
62 break;
63 case 2:
64 $Tarify[$Index]['min_speed'] = $Tarify[$Index]['min_speed'] * 1024;
65 $Tarify[$Index]['max_speed'] = $Tarify[$Index]['max_speed'] * 1024;
66 break;
67 case 3:
68 $Tarify[$Index]['min_speed'] = $Tarify[$Index]['min_speed'] * 1024;
69 $Tarify[$Index]['max_speed'] = $Tarify[$Index]['max_speed'] * 1024;
70 break;
71 }
72 $Tarify[$Index]['aggregation'] = '1:'.round($Tarify[$Index]['max_speed'] / $Tarify[$Index]['min_speed']);
73 }
74}
75
76function NactiMesicniParametry($Period = 1) // 0 - now, 1 - next month
77{
78 global $kWh, $Internet, $Sprava, $DatumOdecteni, $InternetUsers, $SpravaUsers, $InternetSegmentId,
79 $MaxSpeed, $RealMaxSpeed, $SpeedReserve, $BaseSpeedElement, $Database;
80
81 $DbResult = $Database->query("SELECT * FROM finance_charge WHERE period=".$Period);
82 $Row = $DbResult->fetch_array();
83 $kWh = $Row['kWh'];
84 $Internet = $Row['internet'];
85 $Sprava = $Row['administration_per_user'];
86 $RealMaxSpeed = $Row['internet_speed'];
87 $SpeedReserve = $Row['internet_speed_reserve'];
88 $BaseSpeedElement = $Row['base_speed_element'];
89 $MaxSpeed = $RealMaxSpeed - $SpeedReserve;
90
91 $DbResult = $Database->query("SELECT COUNT(*) FROM users WHERE inet=1 AND role=0");
92 $Row = $DbResult->fetch_array();
93 $InternetUsers = $Row[0];
94
95 $DbResult = $Database->query("SELECT COUNT(*) FROM users WHERE overheads=1 AND role=0");
96 $SpravaUsers = $DbResult->fetch_array();
97 $SpravaUsers = $SpravaUsers[0];
98 $InternetSegmentId = 21;
99
100
101 RecalculateTariffs($Period);
102}
103
104function W2Kc($Spotreba)
105{
106 global $kWh;
107 return(round($Spotreba*0.72*$kWh));
108}
109
110?>
Note: See TracBrowser for help on using the repository browser.