Changeset 50
- Timestamp:
- Feb 24, 2008, 2:07:52 PM (17 years ago)
- Location:
- www
- Files:
-
- 2 added
- 7 edited
Legend:
- Unmodified
- Added
- Removed
-
www/database.php
r30 r50 1 <? 1 <?php 2 2 3 3 // Extended database class … … 7 7 { 8 8 var $Prefix = ''; 9 var $LastQuery = ''; 9 10 10 11 function select($Table, $What = '*', $Condition = 1) 11 12 { 12 $ Query = "SELECT ".$What." FROM `".$this->Prefix.$Table."` WHERE ".$Condition;13 return($this->query($ Query));13 $this->LastQuery = "SELECT ".$What." FROM `".$this->Prefix.$Table."` WHERE ".$Condition; 14 return($this->query($this->LastQuery)); 14 15 } 15 16 16 17 function delete($Table, $Condition) 17 18 { 18 $this->query("DELETE FROM `".$this->Prefix.$Table."` WHERE ".$Condition); 19 $this->LastQuery = "DELETE FROM `".$this->Prefix.$Table."` WHERE ".$Condition; 20 $this->query($this->LastQuery); 19 21 } 20 22 … … 26 28 { 27 29 $Value = strtr($Value, '"', '\"'); 28 $Name .= ', '.$Key;30 $Name .= ',`'.$Key.'`'; 29 31 if($Value == 'NOW()') $Values .= ",".$Value; 30 32 else $Values .= ",'".$Value."'"; … … 32 34 $Name = substr($Name, 1); 33 35 $Values = substr($Values, 1); 34 $this->query('INSERT INTO `'.$this->Prefix.$Table.'` ('.$Name.') VALUES('.$Values.')'); 36 $this->LastQuery = 'INSERT INTO `'.$this->Prefix.$Table.'` ('.$Name.') VALUES('.$Values.')'; 37 $this->query($this->LastQuery); 35 38 } 36 39 … … 45 48 } 46 49 $Values = substr($Values, 2); 47 $this->query('UPDATE `'.$this->Prefix.$Table.'` SET '.$Values.' WHERE ('.$Condition.')'); 50 $this->LastQuery = 'UPDATE `'.$this->Prefix.$Table.'` SET '.$Values.' WHERE ('.$Condition.')'; 51 $this->query($this->LastQuery); 48 52 } 49 53 … … 62 66 $Values = substr($Values, 1); 63 67 //echo('REPLACE INTO `'.$this->Prefix.$Table.'` ('.$Name.') VALUES ('.$Values.')<br>'); 64 $this->query('REPLACE INTO `'.$this->Prefix.$Table.'` ('.$Name.') VALUES('.$Values.')'); 68 $this->LastQuery = 'REPLACE INTO `'.$this->Prefix.$Table.'` ('.$Name.') VALUES('.$Values.')'; 69 $this->query($this->LastQuery); 65 70 //echo($this->error().'<br>'); 66 71 } … … 68 73 function charset($Charset) 69 74 { 70 $this->query('SET CHARACTER SET '.$Charset); 75 $this->LastQuery = 'SET CHARACTER SET '.$Charset; 76 $this->query($this->LastQuery); 71 77 } 72 78 -
www/finance/clenove.php
r34 r50 2 2 include('../style.php'); 3 3 include('include.php'); 4 include('bills.php'); 4 5 RecalculateTariffs(1); 5 6 … … 17 18 18 19 // Tabulka operaci 19 echo('Výpis operací pro člena '.$Row2['fullname'].':<br>');20 echo('<table style="font-size: smaller;" border="1" cellspacing="0" cellpadding="3"><tr><th>Datum</th><th>Změna</th><th> Komentář</th></tr>');20 echo('Výpis operací pro účastníka '.$Row2['fullname'].':<br>'); 21 echo('<table style="font-size: smaller;" border="1" cellspacing="0" cellpadding="3"><tr><th>Datum</th><th>Změna</th><th>Doklad</th><th>Komentář</th></tr>'); 21 22 $DbResult = $Database->query("SELECT * FROM finance_operations WHERE user=".$_GET['id'].' ORDER BY date DESC'); 22 23 while($Row = $DbResult->fetch_array()) 23 24 { 24 if($Row['money']>0) $Row['money'] = '+'.$Row['money']; 25 echo('<tr><td align="right">'.HumanDate($Row['date']).'</td><td>'.$Row['money'].'</td><td>'.$Row['comment'].' </td></tr>'); 25 if($Row['money'] > 0) $Row['money'] = '+'.$Row['money']; 26 if($Row['bill_id'] > 0) $Invoice = '<a href="?show=bill&id='.$Row['bill_id'].'">PDF</a>'; else $Invoice = ' '; 27 echo('<tr><td align="right">'.HumanDate($Row['date']).'</td><td>'.$Row['money'].'</td><td>'.$Invoice.'</td><td>'.$Row['comment'].' </td></tr>'); 26 28 } 27 echo('<tr><td> </td><td>-'.$Row2['network_device'].'</td><td>Proměnná cena za zařízení</td></tr></table>'); 29 //echo('<tr><td> </td><td>-'.$Row2['network_device'].'</td><td>Proměnná cena za zařízení</td></tr> 30 echo('</table>'); 28 31 echo('<h3><strong>Stav účtu: </strong>'.$Row2['cash'].' Kč</h3><br>'); 29 32 echo('</td><td valign="top">'); 30 33 31 echo('Variabilní symbol pro platby: <strong>'.$Row2['id'].'</strong><br><br>'); 34 if($Row2['role'] == 2) 35 { 36 echo('Variabilní symbol pro platby: <strong>'.$Row2['id'].'</strong><br><br>'); 32 37 33 // Měsíční bilance 34 if($Row2['inet'] == 1) $InternetPrice = round($Row2['monthly_inet']); else $InternetPrice = 0; 35 if($Row2['overheads'] == 0) 36 { 37 $PoplatekSprava = 0; 38 $PoplatekSpotreba = 0; 39 $PrijemSpotreba = $Row2['plus']; 40 } else { 41 $PoplatekSprava = $Sprava; 42 $PoplatekSpotreba = $Row2['consumption']; 43 $PrijemSpotreba = $Row2['plus']; 44 } 45 echo('Rozpis měsíčního poplatku:<br><table border="1" cellspacing="0" cellpadding="3">'. 46 '<tr><th>Část</th><th>Cena [Kč]</th></tr>'. 47 '<tr><td>Internet - tarif '.$TarifName.'</td><td>'.$InternetPrice.'</td></tr>'. 48 '<tr><td>Správa</td><td>'.$PoplatekSprava.'</td></tr>'. 49 '<tr><td>Poplatek za spotřebu</td><td>'.$PoplatekSpotreba.'</td></tr>'. 50 '<tr><td>Příjem za spotřebu</td><td>'.(-1*$PrijemSpotreba) .'</td></tr>'. 51 '<tr><td><strong>Celkem</strong></td><td><strong>'.($InternetPrice + $PoplatekSprava + $PoplatekSpotreba - $PrijemSpotreba).'</strong></td></tr></table>'); 52 //echo('Tarif pro příští měsíc: '.$Tarify[$Row2['inet_tarif_next']]['name'].'<br><br>'); 53 echo('<br>'); 38 // Měsíční bilance 39 if($Row2['inet'] == 1) $InternetPrice = round($Row2['monthly_inet']); else $InternetPrice = 0; 40 if($Row2['overheads'] == 0) 41 { 42 $PoplatekSprava = 0; 43 $PoplatekSpotreba = 0; 44 $PrijemSpotreba = $Row2['plus']; 45 } else { 46 $PoplatekSprava = $Sprava; 47 $PoplatekSpotreba = $Row2['consumption']; 48 $PrijemSpotreba = $Row2['plus']; 49 } 50 echo('Rozpis měsíčního poplatku:<br><table border="1" cellspacing="0" cellpadding="3">'. 51 '<tr><th>Část</th><th>Cena [Kč]</th></tr>'. 52 '<tr><td>Internet - tarif '.$TarifName.'</td><td>'.$InternetPrice.'</td></tr>'. 53 //'<tr><td>Správa</td><td>'.$PoplatekSprava.'</td></tr>'. 54 //'<tr><td>Poplatek za spotřebu</td><td>'.$PoplatekSpotreba.'</td></tr>'. 55 '<tr><td>Příjem za spotřebu</td><td>'.(-1*$PrijemSpotreba) .'</td></tr>'. 56 '<tr><td><strong>Celkem</strong></td><td><strong>'.($InternetPrice // + $PoplatekSprava + $PoplatekSpotreba 57 - $PrijemSpotreba).'</strong></td></tr></table>'); 58 //echo('Tarif pro příští měsíc: '.$Tarify[$Row2['inet_tarif_next']]['name'].'<br><br>'); 59 echo('<br>'); 54 60 61 /* 62 55 63 // Rozpis ceny za zařízení 56 64 echo('Výpis podílu na zařízení segmentů:'); … … 87 95 echo('<tr><td><strong>Celkem</strong></td><td> </td><td> </td><td><strong>'.round($Money).'</strong></td></tr>'); 88 96 echo('</table><br>'); 89 90 echo('Měsíční příjem za spotřebu zařízení umístěných u uživatele:<br>'); 91 echo('<table border="1" cellspacing="0" cellpadding="3"><tr><th>Název zařízení</th><th>Spotřeba [W]</th><th>Příjem [Kč]</th></tr>'); 92 $DbResult = $Database->query("SELECT * FROM network_devices WHERE user=".$UserID." AND used=1"); 93 $TotalW = 0; 94 $TotalPrice = 0; 95 while($Row = $DbResult->fetch_array()) 96 { 97 echo('<tr><td>'.$Row['name'].'</td><td>'.$Row['consumption'].'</td><td>'.W2Kc($Row['consumption']).'</td></tr>'); 98 $TotalW += $Row['consumption']; 99 $TotalPrice += W2Kc($Row['consumption']); 97 */ 98 99 echo('Měsíční příjem za spotřebu zařízení umístěných u uživatele:<br>'); 100 echo('<table border="1" cellspacing="0" cellpadding="3"><tr><th>Název zařízení</th><th>Spotřeba [W]</th><th>Příjem [Kč]</th></tr>'); 101 $DbResult = $Database->query("SELECT * FROM network_devices WHERE user=".$UserID." AND used=1"); 102 $TotalW = 0; 103 $TotalPrice = 0; 104 while($Row = $DbResult->fetch_array()) 105 { 106 echo('<tr><td>'.$Row['name'].'</td><td>'.$Row['consumption'].'</td><td>'.W2Kc($Row['consumption']).'</td></tr>'); 107 $TotalW += $Row['consumption']; 108 $TotalPrice += W2Kc($Row['consumption']); 109 } 110 echo('<tr><td><strong>Celkem</strong></td><td><strong>'.$TotalW.'</strong></td><td><strong>'.$TotalPrice.'</strong></td></tr>'); 111 echo('</table>'); 100 112 } 101 echo('<tr><td><strong>Celkem</strong></td><td><strong>'.$TotalW.'</strong></td><td><strong>'.$TotalPrice.'</strong></td></tr>');102 echo('</table>');103 104 113 echo('</td></tr></table>'); 114 break; 115 case 'bill': 116 $InvoiceGenerator->ShowStoredBill($_GET['id']); 105 117 break; 106 118 default: … … 108 120 echo('Seznam členů:<br>'. 109 121 '<table style="font-size: smaller;" border="1" cellspacing="0" cellpadding="3">'. 110 '<tr><th>Jméno</th><th>Cena za zařízení [Kč]</th><th>Měsíční poplatek [Kč]</th><th>Stav účtu [Kč]</th><th>Běžící tarif</th><th>Příští tarif</th><th>Poznámky</th></tr>'); 122 '<tr><th>Jméno</th>'); 123 //<th>Cena za zařízení [Kč]</th> 124 echo('<th>Měsíční poplatek [Kč]</th><th>Stav účtu [Kč]</th><th>Běžící tarif</th><th>Příští tarif</th><th>Poznámky</th></tr>'); 111 125 $TotalDevice = 0; 112 126 $TotalMonth = 0; 113 127 $TotalCash = 0; 114 $DbResult = $Database->query("SELECT *,CONCAT(second_name, ' ', first_name) as fullname FROM users WHERE role= 0ORDER BY fullname");128 $DbResult = $Database->query("SELECT *,CONCAT(second_name, ' ', first_name) as fullname FROM users WHERE role=2 ORDER BY fullname"); 115 129 while($Row = $DbResult->fetch_array()) 116 130 { … … 128 142 $Tarif = $Tarify[$Row['inet_tarif_now']]['name']; 129 143 $PristiTarif = $Tarify[$Row['inet_tarif_next']]['name']; 130 echo('<tr><td><a href="?show=user&id='.$Row['id'].'">'.$Row['fullname'].'</a></td><td align="right">'.$Row['network_device'].'</td><td align="right">'.$Monthly.'</td><td align="right">'.$Row['cash'].'</td><td align="center">'.$Tarif.'</td><td align="center">'.$PristiTarif.'</td><td>'.$Row['notice'].' </td></tr>'); 144 echo('<tr><td><a href="?show=user&id='.$Row['id'].'">'.$Row['fullname'].'</a></td>'); 145 //<td align="right">'.$Row['network_device'].'</td> 146 echo('<td align="right">'.$Monthly.'</td><td align="right">'.$Row['cash'].'</td><td align="center">'.$Tarif.'</td><td align="center">'.$PristiTarif.'</td><td>'.$Row['notice'].' </td></tr>'); 131 147 $TotalDevice += $Row['network_device']; 132 $TotalMonth += ($Row['monthly'] -$Row['plus']);148 $TotalMonth += ($Row['monthly'] - $Row['plus']); 133 149 } 134 echo('<tr><td><strong>Celkem</strong></td><td align="right"><strong>'.$TotalDevice.'</strong></td><td align="right"><strong>'.$TotalMonth.'</strong></td><td align="right"><strong>'.$TotalCash.'</strong></td><td align="right"> </td><td align="right"> </td><td align="right"> </td></tr>'); 150 echo('<tr><td><strong>Celkem</strong></td>'); 151 //<td align="right"><strong>'.$TotalDevice.'</strong></td> 152 echo('<td align="right"><strong>'.$TotalMonth.'</strong></td><td align="right"><strong>'.$TotalCash.'</strong></td><td align="right"> </td><td align="right"> </td><td align="right"> </td></tr>'); 135 153 echo('</table>'); 136 154 } -
www/finance/include.php
r34 r50 4 4 function RecalculateTariffs($Period = 1) 5 5 { 6 global $Tarify, $MaxSpeed, $Internet, $SpeedElement, $BaseSpeedElement, $Database ;6 global $Tarify, $MaxSpeed, $Internet, $SpeedElement, $BaseSpeedElement, $Database, $BaseTariffPrice, $TopTariffPrice; 7 7 8 8 $ResidualPrice = $Internet; … … 10 10 11 11 $Tarify = array(); 12 $DbResult = $Database->select('finance_tariffs', '*', 'period='.$Period.' ORDER BY speed_factor');12 $DbResult = $Database->select('finance_tariffs', '*', 'period='.$Period.' ORDER BY id,speed_factor'); 13 13 while($Tariff = $DbResult->fetch_array()) 14 14 { … … 23 23 foreach($Tarify as $Index => $Tarif) 24 24 { 25 $DbResult = $Database->select('users', 'COUNT(*)', 'inet_tarif_'.$Column.'='.$Index.' AND inet=1 AND role= 0');25 $DbResult = $Database->select('users', 'COUNT(*)', 'inet_tarif_'.$Column.'='.$Index.' AND inet=1 AND role=2'); 26 26 $Row = $DbResult->fetch_array(); 27 27 $Tarify[$Index]['user_count'] = $Row[0]; … … 48 48 } 49 49 } 50 $PricePerUnit =$ResidualPrice / $TotalTarifUnits;50 //$PricePerUnit = $TopTariffPrice / ; // $ResidualPrice / $TotalTarifUnits; 51 51 $SpeedPerUnit = $ResidualSpeed * 1024 / $TotalTarifSpeedUnits; 52 52 … … 57 57 { 58 58 case 1: 59 $Tarify[$Index]['price'] = round($Tarif['price_units'] * $PricePerUnit);59 $Tarify[$Index]['price'] = $BaseTariffPrice + round($TopTariffPrice * $Tarif['price_units'] / 10) * 10; 60 60 $Tarify[$Index]['min_speed'] = round($Tarif['speed_factor'] * $SpeedPerUnit); 61 61 $Tarify[$Index]['max_speed'] = round($Tarify[$Index]['speed_factor'] * $BaseSpeedElement * 1024); … … 66 66 break; 67 67 case 3: 68 $Tarify[$Index]['price'] = $BaseTariffPrice + round($TopTariffPrice * $Tarif['price_units']); 68 69 $Tarify[$Index]['min_speed'] = $Tarify[$Index]['min_speed'] * 1024; 69 70 $Tarify[$Index]['max_speed'] = $Tarify[$Index]['max_speed'] * 1024; … … 77 78 { 78 79 global $kWh, $Internet, $Sprava, $DatumOdecteni, $InternetUsers, $SpravaUsers, $InternetSegmentId, 79 $MaxSpeed, $RealMaxSpeed, $SpeedReserve, $BaseSpeedElement, $Database; 80 $MaxSpeed, $RealMaxSpeed, $SpeedReserve, $BaseSpeedElement, $Database, $TotalConsumption, $UserIdNetwork, 81 $BaseTariffPrice, $TopTariffPrice, $TotalPaid, $TotalInternetPaid; 80 82 81 83 $DbResult = $Database->query("SELECT * FROM finance_charge WHERE period=".$Period); … … 88 90 $BaseSpeedElement = $Row['base_speed_element']; 89 91 $MaxSpeed = $RealMaxSpeed - $SpeedReserve; 92 $TopTariffPrice = $Row['TopTariffPrice']; 93 $BaseTariffPrice = $Row['BaseTariffPrice']; 90 94 91 $DbResult = $Database->query("SELECT COUNT(*) FROM users WHERE inet=1 AND role= 0");95 $DbResult = $Database->query("SELECT COUNT(*) FROM users WHERE inet=1 AND role=2"); 92 96 $Row = $DbResult->fetch_array(); 93 97 $InternetUsers = $Row[0]; 94 98 95 $DbResult = $Database->query("SELECT COUNT(*) FROM users WHERE overheads=1 AND role= 0");99 $DbResult = $Database->query("SELECT COUNT(*) FROM users WHERE overheads=1 AND role=2"); 96 100 $SpravaUsers = $DbResult->fetch_array(); 97 101 $SpravaUsers = $SpravaUsers[0]; 98 102 $InternetSegmentId = 21; 103 $DbResult = $Database->query("SELECT SUM(consumption) FROM network_segments"); 104 $TotalConsumption = $DbResult->fetch_array(); 105 $TotalConsumption = $TotalConsumption[0]; 106 $UserIdNetwork = 46; 99 107 108 $DbResult = $Database->query("SELECT SUM(`monthly`) as `internet`, SUM(`monthly` - `plus`) as `real` FROM users WHERE role=2"); 109 $Row = $DbResult->fetch_array(); 110 $TotalInternetPaid = $Row['internet']; 111 $TotalPaid = $Row['real']; 100 112 101 113 RecalculateTariffs($Period); -
www/finance/index.php
r34 r50 4 4 5 5 ShowHeader('Financování sítě','Finance'); 6 7 echo('<table><tr><td valign="top">'); 6 8 7 9 echo('<table><tr><td width="30%"><a href="zarizeni.php">Výpis zařízení</a><br> … … 31 33 */ 32 34 33 echo('</td></tr></table> ');35 echo('</td></tr></table><br>'); 34 36 35 echo('< br><strong>Souhrn:</strong><br>');37 echo('<strong>Souhrn:</strong><br>'); 36 38 37 39 $DbResult = $Database->query("SELECT * FROM finance_monthly_overall ORDER BY date DESC LIMIT 0,1"); … … 39 41 echo('Aktuální měsíční poplatek za společný internet ('.$RealMaxSpeed.'/'.$RealMaxSpeed.' kbit/s): <strong>'.$Internet.' Kč</strong><br>'); 40 42 41 $DbResult = $Database->query("SELECT COUNT(*) FROM users WHERE role= 0");43 $DbResult = $Database->query("SELECT COUNT(*) FROM users WHERE role=2"); 42 44 $Row2 = $DbResult->fetch_array(); 43 45 echo('Počet členů (s internetem): <strong>'.$Row2[0].' ('.$InternetUsers.')</strong><br>'); … … 54 56 echo('Celkem peněz na účtech: <strong>'.$Row4[0].' Kč</strong><br>'); 55 57 echo('Stanovená cena jedné kWh: <strong>'.$kWh.' Kč</strong><br>'); 56 echo('Komunitou stanovený poplatek za správu sítě pro jednoho uživatele: <strong>'.$Sprava.' Kč</strong><br>');57 $DbResult = $Database->query("SELECT SUM(family) FROM users WHERE role= 0");58 //echo('Komunitou stanovený poplatek za správu sítě pro jednoho uživatele: <strong>'.$Sprava.' Kč</strong><br>'); 59 $DbResult = $Database->query("SELECT SUM(family) FROM users WHERE role=2"); 58 60 $Row5 = $DbResult->fetch_array(); 59 61 $TotalFamily = 600; 60 echo('V připojených domácnostech celkem <strong>'.$Row5[0].'</strong> občanů ze všech <strong>'.$TotalFamily.'</strong> ('.round($Row5[0] /$TotalFamily*100).' %)<br>');62 echo('V připojených domácnostech celkem <strong>'.$Row5[0].'</strong> občanů ze všech <strong>'.$TotalFamily.'</strong> ('.round($Row5[0] / $TotalFamily * 100).' %)<br>'); 61 63 echo('Provizorní bankovní účet kam lze posílát peníze: <strong>86-7755240207/0100</strong><br>'); 62 64 63 echo('<br>Měsíční platba:<br><table border="1" cellspacing="0" cellpadding="3"><tr><th>Název položky</th><th>Cena [Kč]</th></tr>'); 64 echo('<tr><td>Internet</td><td align="right">'.$Internet.'</td></tr>'); 65 $Celkem = $Internet; 66 echo('<tr><td>Správa sítě</td><td align="right">'.$Sprava * $SpravaUsers.'</td></tr>'); 67 $Celkem += $Sprava * $SpravaUsers; 65 echo('</td><td valign="top">'); 66 67 $UsersPayment = $TotalInternetPaid; 68 $NetworkManagement = $Sprava * $SpravaUsers; 69 $TotalGain = 0; 70 $TotalExpense = 0; 68 71 $DbResult = $Database->query("SELECT SUM(consumption) FROM network_devices WHERE used=1"); 69 $Spotreba = $DbResult->fetch_array(); 70 echo('<tr><td>Spotřeba energie</td><td align="right">'.round($Spotreba[0]*0.72*$kWh).'</td></tr>'); 71 $Celkem += round($Spotreba[0]*0.72*$kWh); 72 echo('<tr><td><strong>Celkem</strong></td><td align="right"><strong>'.$Celkem.'</strong></td></tr>'); 72 $Row = $DbResult->fetch_array(); 73 $TotalConsumption = W2Kc($Row[0]); 74 //$Users 75 76 echo('Měsíční vyúčtování:<br> 77 <table border="1" cellspacing="0" cellpadding="3"> 78 <tr><th>Položka</th><th>Cena [Kč]</th></tr> 79 <tr><th colspan="2">Příjmy</th></tr>'); 80 echo('<tr><td>Poplatky účastníků za internet</td><td align="right">'.$UsersPayment.'</td></tr>'); 81 $TotalGain += $UsersPayment; 82 echo('<tr><td><strong>Celkem</strong></td><td align="right"><strong>'.$TotalGain.'</strong></td></tr>'); 83 echo('<tr><th colspan="2">Výdaje</th></tr> 84 <tr><td>Internet</td><td align="right">'.$Internet.'</td></tr>'); 85 $TotalExpense += $Internet; 86 echo('<tr><td>Správa sítě</td><td align="right">'.$NetworkManagement.'</td></tr>'); 87 $TotalExpense += $NetworkManagement; 88 echo('<tr><td>Spotřeba energie</td><td align="right">'.$TotalConsumption.'</td></tr>'); 89 $TotalExpense += $TotalConsumption; 90 echo('<tr><td><strong>Celkem</strong></td><td align="right"><strong>'.$TotalExpense.'</strong></td></tr>'); 91 echo('<tr><td colspan="2"> </td></tr>'); 92 echo('<tr><td><strong>Rozdíl</strong></td><td align="right"><strong>'.($TotalGain - $TotalExpense).'</strong></td></tr>'); 93 echo('<tr><td>Převod do dalšího měsíce</td><td align="right">'.($TotalGain - $TotalExpense).'</td></tr>'); 73 94 echo('</table><br>'); 95 $DbResult = $Database->select('users', 'cash', 'id='.$UserIdNetwork); 96 $Row = $DbResult->fetch_array(); 97 $NetworkCash = $Row['cash']; 98 echo('Stav účtu sítě: '.$NetworkCash.' Kč<br><a href="clenove.php?show=user&id='.$UserIdNetwork.'">Výpis účtu</a><br>'); 74 99 75 echo('Celková měsíční suma je rozpočítána podílově na jednotlivé uživatele. Poplatek je odečten z účtu vždy první den v měsíci. Peníze noste nejlépe předem.<br><br>'); 100 echo('<td></tr></table>'); 101 102 /* 103 echo('Poplatek je odečten z účtu vždy první den v měsíci. Peníze noste nejlépe předem.<br><br>'); 76 104 echo('<strong>Jak se rozpočítávají finance</strong><br>Internet i zařízení sítě se platí za domácnost. Systém výpočtu vychází z topologie sítě. Síť má stromovou topologii přičemž listy stromu jsou jednotliví uživatelé a kořen stromu je linka do internetu. Dosavadní systém je uzpůsoben tak, aby linky, které jsou nejvíce zatíženy, byly nejlépe zaplaceny a mohlo na nich tak být dražší a výkonější zařízení. Nejvytíženější linky se nazývají páteřní. Proto platí každý uživatel podílově zařízení, které vede od něj až ke kořenu stromu, což je v našem případě server Centrála s trvalým internetovým připojením. Pro jednoduchost je síť rozdělena na segmenty. Segment je část sítě, kterou využívá konstantní počet uživatelů. Každý segment je tvořen skupinou zařízení a má svoji celkovou cenu. Každý uživatel je přirozeně napojen na některý ze segmentů. Podíl klienta na zařízení sítě je vypočten jako součet podílů na jednotlivých segmentech směrem ke kořenu. Podíl na segmentu znamená celková cena segmentu podělená počtem uživatelů využívajících daný segment.<br>'); 105 */ 77 106 ShowFooter(); 78 107 ?> -
www/finance/prepocet.php
r46 r50 1 1 <?php 2 include('../ global.php');2 include('../style.php'); 3 3 include('include.php'); 4 include('bills.php'); 5 6 ShowHeader('Přepočet financí', 'Přepočet financí'); 4 7 5 8 function RecalculateUsersFinance() 6 9 { 7 global $InternetSegmentId, $Tarify, $Sprava, $Database; 8 9 $DbResult = $Database->query("SELECT * FROM users WHERE role=0"); // Select network members only 10 global $InternetSegmentId, $Tarify, $Sprava, $Database, $UserIdNetwork; 11 12 echo("Aktualizuju finance uživatelů...<br>\n"); 13 $DbResult = $Database->query("SELECT * FROM users WHERE role=2 OR id=".$UserIdNetwork); // Select network members only 10 14 while($Row = $DbResult->fetch_array()) 11 15 { … … 14 18 $DbResult2 = $Database->query("SELECT SUM(consumption) FROM network_devices WHERE user=".$Row['id']." AND used=1"); 15 19 $Row4 = $DbResult2->fetch_array(); 16 //DB_Update('users','id='.$Row['id'], array());17 20 18 21 $Price = 0; … … 34 37 $MonthlyInet = $Tarify[$Row['inet_tarif_next']]['price']; 35 38 if($Row['inet'] == 1) $Monthly += $MonthlyInet; 36 if($Row['overheads'] == 1) $Monthly += $Sprava+ W2Kc($Consumption);39 //if($Row['overheads'] == 1) $Monthly += $Sprava; // + W2Kc($Consumption); 37 40 //echo($Row['fullname'].' '.$Row['inet'].' '.$Monthly.'<br>'); 38 41 $Monthly = round($Monthly); 39 42 //echo($Row['fullname'].' '.$Row['inet'].' '.$Monthly.'<br>'); 40 $Database->update('users', 'id='.$Row['id'], array('network_device' => $Price, 'monthly_inet' => $MonthlyInet, 'monthly' => $Monthly, 'consumption' => W2Kc($Consumption), 'cash' => ($Row3[0]-$Row['network_device']), 'plus' => W2Kc($Row4[0]))); 41 } 42 } 43 44 43 $Database->update('users', 'id='.$Row['id'], array('network_device' => $Price, 'monthly_inet' => $MonthlyInet, 'monthly' => $Monthly, 'consumption' => W2Kc($Consumption), 'cash' => $Row3[0], 'plus' => W2Kc($Row4[0]))); 44 } 45 } 46 47 function RecalculateSegmentParameters() 48 { 49 global $Database, $InternetSegmentId; 50 51 echo("Aktualizuju parametry segmentů...<br>\n"); 52 $Database->query("UPDATE network_segments SET users = 0, users_overheads = 0"); // Vynulovat počty uživatelů 53 $DbResult = $Database->query("SELECT * FROM network_segments"); 54 while($Row = $DbResult->fetch_array()) 55 { 56 //echo('Segment '.$Row['name'].'<br>'); 57 $DbResult2 = $Database->query("SELECT users FROM network_segments WHERE id=".$Row['id']); 58 $RowP = $DbResult2->fetch_array(); 59 $DbResult2 = $Database->query("SELECT users_overheads FROM network_segments WHERE id=".$Row['id']); 60 $RowP2 = $DbResult2->fetch_array(); 61 62 $DbResult2 = $Database->query("SELECT SUM(price) as Price, SUM(consumption) as Consumption FROM network_devices WHERE segment=".$Row['id']." AND used=1"); 63 $Row2 = $DbResult2->fetch_array(); 64 $DbResult2 = $Database->query("SELECT COUNT(*) FROM users WHERE network_segment=".$Row['id'].' AND hw=1'); 65 $Row3 = $DbResult2->fetch_array(); 66 $DbResult2 = $Database->query("SELECT COUNT(*) FROM users WHERE network_segment=".$Row['id'].' AND overheads=1'); 67 $Row5 = $DbResult2->fetch_array(); 68 $ID = $Row['parent']; 69 while($ID != 0) 70 { 71 //echo($ID.', '); 72 $DbResult2 = $Database->query("SELECT * FROM network_segments WHERE id=".$ID); 73 $Row4 = $DbResult2->fetch_array(); 74 $Database->update('network_segments', 'id='.$Row4['id'], array('users' => ($Row4['users'] + $Row3[0]), 'users_overheads' => ($Row4['users_overheads'] + $Row5[0]))); 75 $ID = $Row4['parent']; 76 } 77 //echo('Pocet '.$Row3[0].','.$Row['hosts'].'<br>'); 78 $Database->update('network_segments', 'id='.$Row['id'], array('price' => $Row2['Price'], 'users' => ($Row3[0] + $RowP['users']), 'consumption' => $Row2['Consumption'], 'users_overheads' => ($Row5[0] + $RowP2['users_overheads']))); 79 } 80 81 // Zkorigovat segment Internet 82 $DbResult = $Database->select('users', 'COUNT(*)', 'inet_hw=1'); 83 $Row = $DbResult->fetch_array(); 84 $DbResult = $Database->select('users', 'COUNT(*)', 'inet=1'); 85 $Row2 = $DbResult->fetch_array(); 86 $DbResult = $Database->update('network_segments','id='.$InternetSegmentId, array('users' => $Row[0], 'users_overheads' => $Row2[0])); 87 } 88 89 function CreateMonthlyOverallBill() 90 { 91 global $Database, $Sprava, $SpravaUsers, $TotalConsumption, $UserIdNetwork, $Internet, $TotalInternetPaid; 92 93 $TotalConsumptionPrice = W2Kc($TotalConsumption); 94 95 echo("Spotřeba energie: ".-$TotalConsumptionPrice."<br>\n"); 96 echo("Správa sítě: ".-($Sprava * $SpravaUsers)."<br>\n"); 97 echo("Internet: ".-$Internet."<br>\n"); 98 echo("Poplatky učástníků: ".$TotalInternetPaid."<br>\n"); 99 100 $Database->insert('finance_operations', array('money' => -$TotalConsumptionPrice, 'user' => $UserIdNetwork, 'type' => 2, 'date' => 'NOW()', 'comment' => 'Spotřeba energie', 'group' => 2)); 101 $Database->insert('finance_operations', array('money' => -($Sprava * $SpravaUsers), 'user' => $UserIdNetwork, 'type' => 2, 'date' => 'NOW()', 'comment' => 'Správa sítě', 'group' => 2)); 102 $Database->insert('finance_operations', array('money' => -$Internet, 'user' => $UserIdNetwork, 'type' => 2, 'date' => 'NOW()', 'comment' => 'Internet', 'group' => 2)); 103 $Database->insert('finance_operations', array('money' => $TotalInternetPaid, 'user' => $UserIdNetwork, 'type' => 2, 'date' => 'NOW()', 'comment' => 'Poplatky učástníků', 'group' => 2)); 104 } 105 106 function DiscountNetworkDevicePrice() 107 { 108 global $Database; 109 $DbResult = $Database->query("SELECT *,CONCAT(second_name, ' ', first_name) as fullname FROM users WHERE role=2"); 110 while($Row = $DbResult->fetch_array()) 111 { 112 echo($Row['fullname'].': '.($Row['network_device'])."<br>\n"); 113 $Database->insert('finance_operations', array('money' => (-$Row['network_device']), 'user' => $Row['id'], 'type' => 2, 'date' => 'NOW()', 'comment' => 'Jednorázový poplatek za společné zařízení', 'group' => 1)); 114 //echo($Database->LastQuery."<br>\n"); 115 } 116 } 117 118 // Načti poslední měsíční přehled a nastavení 45 119 $DbResult = $Database->select('finance_monthly_overall', '*', '1 ORDER BY date DESC LIMIT 1'); 46 120 $Overall = $DbResult->fetch_array(); 47 121 48 echo('Datum: '.date('j.n.Y')." \n");49 $Mesice = array('', 'Leden','Únor','Březen','Duben','Květen','Červen','Červenec','Srpen','Září','Říjen','Listopad','Prosinec');122 echo('Datum: '.date('j.n.Y')."<br>"); 123 $Mesice = array('', 'Leden', 'Únor', 'Březen', 'Duben', 'Květen', 'Červen', 'Červenec', 'Srpen', 'Září', 'Říjen', 'Listopad', 'Prosinec'); 50 124 $Datum = explode('-', $Overall['date']); 51 $Mesic = date("m")+0; 52 53 // Spočítat ceny segmentů 54 echo("Prepocitavam ceny"); 55 $Database->query("UPDATE network_segments SET users=0"); // Vynulovat počty počítačů 56 $Database->query("UPDATE network_segments SET users_overheads=0"); // Vynulovat počty počítačů 57 $DbResult = $Database->query("SELECT * FROM network_segments"); 58 while($Row = $DbResult->fetch_array()) 59 { 60 //echo('Segment '.$Row['name'].'<br>'); 61 $DbResult2 = $Database->query("SELECT users FROM network_segments WHERE id=".$Row['id']); 62 $RowP = $DbResult2->fetch_array(); 63 $DbResult2 = $Database->query("SELECT users_overheads FROM network_segments WHERE id=".$Row['id']); 64 $RowP2 = $DbResult2->fetch_array(); 65 $DbResult2 = $Database->query("SELECT SUM(price),SUM(consumption) FROM network_devices WHERE segment=".$Row['id']." AND used=1"); 66 $Row2 = $DbResult2->fetch_array(); 67 $DbResult2 = $Database->query("SELECT COUNT(*) FROM users WHERE network_segment=".$Row['id'].' AND hw=1'); 68 $Row3 = $DbResult2->fetch_array(); 69 $DbResult2 = $Database->query("SELECT COUNT(*) FROM users WHERE network_segment=".$Row['id'].' AND overheads=1'); 70 $Row5 = $DbResult2->fetch_array(); 71 $ID = $Row['parent']; 72 while($ID != 0) 73 { 74 //echo($ID.', '); 75 $DbResult2 = $Database->query("SELECT * FROM network_segments WHERE id=".$ID); 76 $Row4 = $DbResult2->fetch_array(); 77 $Database->update('network_segments', 'id='.$Row4['id'], array('users' => ($Row4['users']+$Row3[0]), 'users_overheads' => ($Row4['users_overheads']+$Row5[0]))); 78 $ID = $Row4['parent']; 79 } 80 //echo('Pocet '.$Row3[0].','.$Row['hosts'].'<br>'); 81 $Database->update('network_segments','id='.$Row['id'],array('price' => $Row2[0], 'users' => ($Row3[0]+$RowP['users']), 'consumption' => $Row2[1], 'users_overheads' => ($Row5[0]+$RowP2['users_overheads']))); 82 } 83 84 // Zkorigovat segment Internet 85 $DbResult = $Database->select('users', 'COUNT(*)', 'inet_hw=1'); 86 $Row = $DbResult->fetch_array(); 87 $DbResult = $Database->select('users', 'COUNT(*)', 'inet=1'); 88 $Row2 = $DbResult->fetch_array(); 89 $DbResult = $Database->update('network_segments','id='.$InternetSegmentId, array('users' => $Row[0], 'users_overheads' => $Row2[0])); 90 125 $Mesic = date("m") + 0; 126 127 RecalculateSegmentParameters(); 91 128 RecalculateTariffs(); 92 93 echo("."); 129 //DiscountNetworkDevicePrice(); 94 130 RecalculateUsersFinance(); 95 echo("OK\n");96 131 97 132 // Celkovy prehled 98 133 $DbResult = $Database->query("SELECT SUM(price) FROM network_devices WHERE used=1"); 99 134 $Row4 = $DbResult->fetch_array(); 100 echo("Celkov acena zařízení: Zařízení(".$Row4[0]);135 echo("Celková cena zařízení: Zařízení(".$Row4[0]); 101 136 $DbResult = $Database->query("SELECT SUM(price) FROM network_segments"); 102 137 $Row = $DbResult->fetch_array(); … … 104 139 $DbResult = $Database->query("SELECT SUM(network_device) FROM users"); 105 140 $Row5 = $DbResult->fetch_array(); 106 echo("), U ľivatelé(".$Row5[0].")\n");107 $DbResult = $Database->query("SELECT SUM(cash) FROM users WHERE role= 0");141 echo("), Uživatelé(".$Row5[0].")<br>\n"); 142 $DbResult = $Database->query("SELECT SUM(cash) FROM users WHERE role=2"); 108 143 $Row6 = $DbResult->fetch_array(); 109 echo("Stav pokladny: Uľivatelé(".$Row6[0].")"); 110 $DbResult = $Database->query("SELECT SUM(money) FROM finance_operations"); 111 $Row = $DbResult->fetch_array(); 112 $DbResult = $Database->query("SELECT SUM(price) FROM network_devices WHERE used=1"); 144 echo("Stav pokladny: Uživatelé(".$Row6[0].")"); 145 $DbResult = $Database->query("SELECT SUM(money) FROM finance_operations WHERE `group`=1"); // Položky uživatelů 113 146 $Row2 = $DbResult->fetch_array(); 114 echo(", Operace-Zařízení(".($Row[0]-$Row2[0]).")<br>\n"); 115 116 $DbResult = $Database->query("SELECT SUM(money) FROM finance_operations"); 117 $Row3 = $DbResult->fetch_array(); 118 echo("Rozdíl peněz v operacích: ".($Row3[0]-$Row6[0] - $Row4[0])." <br>\n"); 147 echo(", Operace-Zařízení(".($Row2[0] - $Row4[0]).")<br>\n"); 148 echo("Rozdíl peněz v operacích: ".($Row2[0] - $Row6[0] - $Row4[0])." <br>\n"); 119 149 120 150 … … 123 153 $CelkemSpotreba = W2Kc($Row[0]); 124 154 125 $DbResult = $Database->query("SELECT SUM(plus-monthly) FROM users WHERE role=0"); 126 $Row = $DbResult->fetch_array(); 127 $CelkemZaplaceno = $Row[0]; 128 $SpravaCelkem = $Sprava*$SpravaUsers; 129 echo("Kontrola placení (Zaplaceno-Sprava-Internet): ".(-$CelkemZaplaceno)."-".$SpravaCelkem."-".$Internet."=".(-$CelkemZaplaceno-$SpravaCelkem-$Internet)."<br>\n\n"); 155 $SpravaCelkem = $Sprava * $SpravaUsers; 156 echo("Kontrola placení (Zaplaceno-Sprava-Internet): ".$TotalPaid."-".$SpravaCelkem."-".$Internet."=".($TotalPaid - $SpravaCelkem - $Internet)."<br>\n\n"); 130 157 131 158 // Zkontrolovat odečtení měsíčního poplatku … … 134 161 if($Mesic != $Datum[1]) 135 162 { 136 echo("Odečítám měsíční poplatek: "); 137 138 $DbResult = $Database->query("SELECT * FROM users WHERE role=0"); 139 while($Row = $DbResult->fetch_array()) 140 { 141 echo($Row['fullname'].': '.($Row['plus']-$Row['monthly']).'<br>'); 142 $Database->insert('finance_operations',array('money' => $Row['plus']-$Row['monthly'], 'user' => $Row['id'], 'type' => 2, 'date' => 'NOW()', 'comment' => 'Poplatek za měsíc '.$Mesice[$Mesic])); 143 } 144 $Database->insert('finance_monthly_overall', array('date' => 'NOW()', 'money' => $Internet, 'kWh' => $kWh, 'administration' => $Sprava, 'administration_total' => $SpravaCelkem, 'consumption_total' => $CelkemSpotreba, 'total_paid' => $CelkemZaplaceno)); 145 146 echo('Menim aktualni parametry site.'); 163 echo("Odečítám měsíční poplatek...<br>\n"); 164 165 // Generuj účetní položky 166 $DbResult = $Database->query("SELECT *,CONCAT(second_name, ' ', first_name) as fullname FROM users WHERE role=2"); 167 while($Row = $DbResult->fetch_array()) 168 { 169 echo($Row['fullname'].': '.($Row['plus'] - $Row['monthly'])."<br>\n"); 170 171 $BillId = $InvoiceGenerator->CreateBill($Row['id'], array(array('description' => 'Poplatek za připojení k síti', 'price' => ($Row['monthly'] - $Row['plus']), 'quantity' => 1)), time(), time() + (date("t", time()) - 1) * 24 * 3600); 172 173 $Database->insert('finance_operations',array('money' => ($Row['plus'] - $Row['monthly']), 'user' => $Row['id'], 'type' => 2, 'date' => 'NOW()', 'comment' => 'Poplatek za měsíc '.$Mesice[$Mesic], 'group' => 1, 'bill_id' => $BillId)); 174 } 175 176 echo('Měním aktuální parametry sítě...<br>\n'); 147 177 148 178 // Update finance charge … … 152 182 //print_r($Charge); 153 183 $DbResult = $Database->insert('finance_charge', array('period' => 0, 'internet' => $Charge['internet'], 154 'internet_speed' => $Charge['internet_speed'], 'internet_speed_reserve' => $Charge['internet_speed_reserve'], 'administration_per_user' => $Charge['administration_per_user'], 'kWh' => $Charge['kWh'], 'base_speed_element' => $Charge['base_speed_element'])); 155 156 157 echo('Menim aktualni tarify.'); 184 'internet_speed' => $Charge['internet_speed'], 'internet_speed_reserve' => $Charge['internet_speed_reserve'], 'administration_per_user' => $Charge['administration_per_user'], 'kWh' => $Charge['kWh'], 'base_speed_element' => $Charge['base_speed_element'], 'BaseTariffPrice' => $Charge['BaseTariffPrice'], 'TopTariffPrice' => $Charge['TopTariffPrice'])); 185 186 echo("Přidávám měsíční přehled...<br>\n"); 187 188 $Database->insert('finance_monthly_overall', array('date' => 'NOW()', 'money' => $Internet, 'kWh' => $kWh, 'administration' => $Sprava, 'administration_total' => $SpravaCelkem, 'consumption_total' => $CelkemSpotreba, 'total_paid' => $TotalPaid, 'BaseTariffPrice' => $Charge['BaseTariffPrice'], 'TopTariffPrice' => $Charge['TopTariffPrice'])); 189 190 echo("Měním aktuální tarify....<br>\n"); 158 191 159 192 // Update tarrifs … … 166 199 } 167 200 168 echo( 'Menim aktualni tarify uzivatelu.');201 echo("Měním aktuální tarify uživatelů...<br>\n"); 169 202 170 203 // Update tariff user selection 171 $DbResult = $Database->query("SELECT id,inet_tarif_next FROM users WHERE role= 0");204 $DbResult = $Database->query("SELECT id,inet_tarif_next FROM users WHERE role=2"); 172 205 while($User = $DbResult->fetch_array()) 173 206 { … … 176 209 177 210 RecalculateTariffs(); 178 RecalculateUsersFinance(); 211 RecalculateUsersFinance(); 212 CreateMonthlyOverallBill(); 213 RecalculateUsersFinance(); 179 214 180 215 // Restart traffic shaping 181 216 $Database->update('services_restart', 'id=3', array('changed' => 1)); 182 217 } 218 219 ShowFooter(); 220 183 221 ?> -
www/finance/tarify.php
r6 r50 11 11 echo('Rychlost společné linky: <strong>'.$RealMaxSpeed.' kbit/s</strong><br>'); 12 12 echo('Rezerva (nevyužitá kapacita pro zlepšení odezvy sítě): <strong>'.$SpeedReserve.' kbit/s</strong><br>'); 13 echo('Maximální dostupná kapacita pro po žití: <strong>'.$MaxSpeed.' kbit/s</strong><br>');13 echo('Maximální dostupná kapacita pro použití: <strong>'.$MaxSpeed.' kbit/s</strong><br>'); 14 14 echo('<br>'); 15 15 -
www/style.php
r49 r50 41 41 'index.php' => 'Rozpis mší', 42 42 ), 43 // Finance 44 'finance' => array('Finance', 43 'finance' => array('Finance', 45 44 'index.php' => '', 46 45 'spotreba.php' => 'Spotřeba', 46 'prepocet.php' => 'Přepočet financí', 47 47 'changes.php' => 'Změny', 48 48 'tarify.php' => 'Tarify', … … 52 52 'strom.php' => 'Strom zařízení', 53 53 'srovnani.php' => 'Porovnání tarifů s konkurencí', 54 'bills.php' => 'Faktury', 54 55 'faktury' => array('', 55 56 'index.php' => 'Faktury za internet',
Note:
See TracChangeset
for help on using the changeset viewer.