Changeset 157 for www/finance/finance.php
- Timestamp:
- Feb 18, 2009, 11:19:12 AM (16 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
www/finance/finance.php
r152 r157 3 3 class Finance extends Module 4 4 { 5 var $kWh; 6 var $Internet; 7 var $Sprava; 8 var $DatumOdecteni; 9 var $InternetUsers; 10 var $SpravaUsers; 11 var $InternetSegmentId = 21; 12 var $MaxSpeed; 13 var $RealMaxSpeed; 14 var $SpeedReserve; 15 var $BaseSpeedElement; 16 var $TotalConsumption; 17 var $UserIdNetwork = 46; 18 var $BaseTariffPrice; 19 var $TopTariffPrice; 20 var $TotalPaid; 21 var $TotalInternetPaid; 22 var $Tarify; 23 24 function RecalculateTariffs($Period = 1) 25 { 26 $ResidualPrice = $this->Internet; 27 $ResidualSpeed = $this->MaxSpeed; 28 29 $Tarify = array(); 30 $DbResult = $this->Database->select('finance_tariffs', '*', 'period='.$Period.' ORDER BY id,speed_factor'); 31 while($Tariff = $DbResult->fetch_array()) 32 { 33 $Tarify[$Tariff['id']] = $Tariff; 34 } 5 35 36 if($Period == 0) $Column = 'now'; else $Column = 'next'; 37 $TotalUserCount = 0; 38 $TotalUnits = 0; 39 $TotalTarifUnits = 0; 40 $TotalTarifSpeedUnits = 0; 41 foreach($Tarify as $Index => $Tarif) 42 { 43 $DbResult = $this->Database->select('users', 'COUNT(*)', 'inet_tarif_'.$Column.'='.$Index.' AND inet=1 AND role=2'); 44 $Row = $DbResult->fetch_array(); 45 $Tarify[$Index]['user_count'] = $Row[0]; 46 switch($Tarif['group_id']) 47 { 48 case 1: 49 $TotalUserCount = $TotalUserCount + $Tarify[$Index]['user_count']; 50 $Tarify[$Index]['total_units'] = $Tarify[$Index]['price_units'] * $Tarify[$Index]['user_count']; 51 $TotalTarifUnits = $TotalTarifUnits + $Tarify[$Index]['total_units']; 52 53 if($Index == 3) // Zarizeni site v tarifu 3 neplati penize, ale ma internet 54 $Tarify[$Index]['total_speed_factor'] = $Tarify[$Index]['speed_factor'] * ($Tarify[$Index]['user_count']+1); 55 else $Tarify[$Index]['total_speed_factor'] = $Tarify[$Index]['speed_factor'] * $Tarify[$Index]['user_count']; 56 $TotalTarifSpeedUnits = $TotalTarifSpeedUnits + $Tarify[$Index]['total_speed_factor']; 57 break; 58 case 2: 59 $ResidualPrice -= $Tarif['price'] * $Tarify[$Index]['user_count']; 60 $ResidualSpeed -= $Tarif['min_speed'] * $Tarify[$Index]['user_count']; 61 $Tarify[$Index]['total_units'] = $Tarify[$Index]['price_units'] * $Tarify[$Index]['user_count']; 62 break; 63 case 3: 64 $Tarify[$Index]['total_units'] = $Tarify[$Index]['price_units'] * $Tarify[$Index]['user_count']; 65 break; 66 } 67 } 68 //$PricePerUnit = $TopTariffPrice / ; // $ResidualPrice / $TotalTarifUnits; 69 $SpeedPerUnit = $ResidualSpeed * 1024 / $TotalTarifSpeedUnits; 70 71 // Recalculate price 72 foreach($Tarify as $Index => $Tarif) 73 { 74 switch($Tarif['group_id']) 75 { 76 case 1: 77 $Tarify[$Index]['price'] = $this->BaseTariffPrice + round($this->TopTariffPrice * $Tarif['price_units'] / 10) * 10; 78 $Tarify[$Index]['min_speed'] = round($Tarif['speed_factor'] * $SpeedPerUnit); 79 $Tarify[$Index]['max_speed'] = round($Tarify[$Index]['speed_factor'] * $this->BaseSpeedElement * 1024); 80 break; 81 case 2: 82 $Tarify[$Index]['min_speed'] = $Tarify[$Index]['min_speed'] * 1024; 83 $Tarify[$Index]['max_speed'] = $Tarify[$Index]['max_speed'] * 1024; 84 break; 85 case 3: 86 $Tarify[$Index]['price'] = $this->BaseTariffPrice + round($this->TopTariffPrice * $Tarif['price_units']); 87 $Tarify[$Index]['min_speed'] = $Tarify[$Index]['min_speed'] * 1024; 88 $Tarify[$Index]['max_speed'] = $Tarify[$Index]['max_speed'] * 1024; 89 break; 90 } 91 $Tarify[$Index]['aggregation'] = '1:'.round($Tarify[$Index]['max_speed'] / $Tarify[$Index]['min_speed']); 92 } 93 $this->Tarify = $Tarify; 94 } 95 96 function LoadMonthParameters($Period = 1) // 0 - now, 1 - next month 97 { 98 $DbResult = $this->Database->query("SELECT * FROM finance_charge WHERE period=".$Period); 99 $Row = $DbResult->fetch_array(); 100 $this->kWh = $Row['kWh']; 101 $this->Internet = $Row['internet']; 102 $this->Sprava = $Row['administration_per_user']; 103 $this->RealMaxSpeed = $Row['internet_speed']; 104 $this->SpeedReserve = $Row['internet_speed_reserve']; 105 $this->BaseSpeedElement = $Row['base_speed_element']; 106 $this->MaxSpeed = $this->RealMaxSpeed - $this->SpeedReserve; 107 $this->TopTariffPrice = $Row['TopTariffPrice']; 108 $this->BaseTariffPrice = $Row['BaseTariffPrice']; 109 110 $DbResult = $this->Database->query("SELECT COUNT(*) FROM users WHERE inet=1 AND role=2"); 111 $Row = $DbResult->fetch_array(); 112 $this->InternetUsers = $Row[0]; 113 114 $DbResult = $this->Database->query("SELECT COUNT(*) FROM users WHERE overheads=1 AND role=2"); 115 $SpravaUsers = $DbResult->fetch_array(); 116 $this->SpravaUsers = $SpravaUsers[0]; 117 $DbResult = $this->Database->query("SELECT SUM(consumption) FROM network_segments"); 118 $TotalConsumption = $DbResult->fetch_array(); 119 $this->TotalConsumption = $TotalConsumption[0]; 120 121 $DbResult = $this->Database->query("SELECT SUM(`monthly`) as `internet`, SUM(`monthly` - `plus`) as `real` FROM users WHERE role=2"); 122 $Row = $DbResult->fetch_array(); 123 $this->TotalInternetPaid = $Row['internet']; 124 $this->TotalPaid = $Row['real']; 125 126 $this->RecalculateTariffs($Period); 127 } 128 129 function W2Kc($Spotreba) 130 { 131 return(round($Spotreba * 0.72 * $this->kWh)); 132 } 133 134 function GetNextDocumentLineNumber($Id) 135 { 136 $DbResult = $this->Database->query('SELECT Shortcut, NextNumber FROM DocumentLine WHERE Id='.$Id); 137 $DbRow = $DbResult->fetch_assoc(); 138 $Result = $DbRow['Shortcut'].$DbRow['NextNumber']; 139 $this->Database->query('UPDATE DocumentLine SET NextNumber = NextNumber + 1 WHERE Id='.$Id); 140 return($Result); 141 } 6 142 } 7 143
Note:
See TracChangeset
for help on using the changeset viewer.