Changeset 50


Ignore:
Timestamp:
Feb 24, 2008, 2:07:52 PM (16 years ago)
Author:
george
Message:

Změněno: Odebrán proměnný podíl na zařízení sítě.
Změněno: Ceny tarifů změněny na pevné.
Změněno: Měsíční přehled nákladů a výnosů sítě.
Odebráno: Účtování spotřeby.
Upraveno: Systém zobrazení navigačního řádku.

Location:
www
Files:
2 added
7 edited

Legend:

Unmodified
Added
Removed
  • www/database.php

    r30 r50  
    1 <?
     1<?php
    22
    33// Extended database class
     
    77{
    88  var $Prefix = '';
     9  var $LastQuery = '';
    910 
    1011  function select($Table, $What = '*', $Condition = 1)
    1112  {
    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)); 
    1415  }
    1516
    1617  function delete($Table, $Condition)
    1718  {
    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); 
    1921  }
    2022 
     
    2628    {
    2729      $Value = strtr($Value, '"', '\"');
    28       $Name .= ','.$Key;
     30      $Name .= ',`'.$Key.'`';
    2931            if($Value == 'NOW()') $Values .= ",".$Value;
    3032              else $Values .= ",'".$Value."'";
     
    3234    $Name = substr($Name, 1);
    3335    $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); 
    3538  }
    3639 
     
    4548    }
    4649    $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);
    4852  }
    4953 
     
    6266    $Values = substr($Values, 1);
    6367    //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);
    6570    //echo($this->error().'<br>');
    6671  }
     
    6873  function charset($Charset)
    6974  {
    70     $this->query('SET CHARACTER SET '.$Charset);
     75    $this->LastQuery = 'SET CHARACTER SET '.$Charset;
     76    $this->query($this->LastQuery);
    7177  }
    7278
  • www/finance/clenove.php

    r34 r50  
    22include('../style.php');
    33include('include.php');
     4include('bills.php');
    45RecalculateTariffs(1);
    56
     
    1718 
    1819    // 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>');
    2122    $DbResult = $Database->query("SELECT * FROM finance_operations WHERE user=".$_GET['id'].' ORDER BY date DESC');
    2223    while($Row = $DbResult->fetch_array())
    2324    {
    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'].'&nbsp;</td></tr>');
     25      if($Row['money'] > 0) $Row['money'] = '+'.$Row['money'];
     26      if($Row['bill_id'] > 0) $Invoice = '<a href="?show=bill&amp;id='.$Row['bill_id'].'">PDF</a>'; else $Invoice = '&nbsp;';
     27      echo('<tr><td align="right">'.HumanDate($Row['date']).'</td><td>'.$Row['money'].'</td><td>'.$Invoice.'</td><td>'.$Row['comment'].'&nbsp;</td></tr>');
    2628    }
    27     echo('<tr><td>&nbsp;</td><td>-'.$Row2['network_device'].'</td><td>Proměnná cena za zařízení</td></tr></table>');
     29    //echo('<tr><td>&nbsp;</td><td>-'.$Row2['network_device'].'</td><td>Proměnná cena za zařízení</td></tr>
     30    echo('</table>');
    2831    echo('<h3><strong>Stav účtu: </strong>'.$Row2['cash'].' Kč</h3><br>');
    2932    echo('</td><td valign="top">');
    3033
    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>'); 
    3237
    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>');
    5460   
     61    /*
     62
    5563    // Rozpis ceny za zařízení
    5664    echo('Výpis podílu na zařízení segmentů:');
     
    8795    echo('<tr><td><strong>Celkem</strong></td><td>&nbsp;</td><td>&nbsp;</td><td><strong>'.round($Money).'</strong></td></tr>');
    8896    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>');
    100112    }
    101     echo('<tr><td><strong>Celkem</strong></td><td><strong>'.$TotalW.'</strong></td><td><strong>'.$TotalPrice.'</strong></td></tr>');
    102     echo('</table>');
    103 
    104113    echo('</td></tr></table>');
     114    break;
     115  case 'bill':
     116    $InvoiceGenerator->ShowStoredBill($_GET['id']);
    105117    break;
    106118  default:
     
    108120    echo('Seznam členů:<br>'.
    109121    '<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>');
    111125    $TotalDevice = 0;
    112126    $TotalMonth = 0;
    113127    $TotalCash = 0;
    114     $DbResult = $Database->query("SELECT *,CONCAT(second_name, ' ', first_name) as fullname FROM users WHERE role=0 ORDER BY fullname");
     128    $DbResult = $Database->query("SELECT *,CONCAT(second_name, ' ', first_name) as fullname FROM users WHERE role=2 ORDER BY fullname");
    115129    while($Row = $DbResult->fetch_array())
    116130    {
     
    128142      $Tarif = $Tarify[$Row['inet_tarif_now']]['name'];
    129143      $PristiTarif = $Tarify[$Row['inet_tarif_next']]['name'];
    130       echo('<tr><td><a href="?show=user&amp;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'].'&nbsp;</td></tr>');
     144      echo('<tr><td><a href="?show=user&amp;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'].'&nbsp;</td></tr>');
    131147      $TotalDevice += $Row['network_device'];
    132       $TotalMonth += ($Row['monthly']-$Row['plus']);
     148      $TotalMonth += ($Row['monthly'] - $Row['plus']);
    133149    }
    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">&nbsp;</td><td align="right">&nbsp;</td><td align="right">&nbsp;</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">&nbsp;</td><td align="right">&nbsp;</td><td align="right">&nbsp;</td></tr>');
    135153    echo('</table>');
    136154  }
  • www/finance/include.php

    r34 r50  
    44function RecalculateTariffs($Period = 1)
    55{
    6   global $Tarify, $MaxSpeed, $Internet, $SpeedElement, $BaseSpeedElement, $Database;
     6  global $Tarify, $MaxSpeed, $Internet, $SpeedElement, $BaseSpeedElement, $Database, $BaseTariffPrice, $TopTariffPrice;
    77   
    88  $ResidualPrice = $Internet;
     
    1010 
    1111  $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');
    1313  while($Tariff = $DbResult->fetch_array())
    1414  {
     
    2323  foreach($Tarify as $Index => $Tarif)
    2424  {
    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');
    2626    $Row = $DbResult->fetch_array();
    2727    $Tarify[$Index]['user_count'] = $Row[0];   
     
    4848    }
    4949  }
    50   $PricePerUnit = $ResidualPrice / $TotalTarifUnits;
     50  //$PricePerUnit = $TopTariffPrice / ;  // $ResidualPrice / $TotalTarifUnits;
    5151  $SpeedPerUnit = $ResidualSpeed * 1024 / $TotalTarifSpeedUnits;
    5252 
     
    5757    {
    5858      case 1:
    59         $Tarify[$Index]['price'] = round($Tarif['price_units'] * $PricePerUnit);
     59        $Tarify[$Index]['price'] = $BaseTariffPrice + round($TopTariffPrice * $Tarif['price_units'] / 10) * 10;
    6060        $Tarify[$Index]['min_speed'] = round($Tarif['speed_factor'] * $SpeedPerUnit);
    6161        $Tarify[$Index]['max_speed'] = round($Tarify[$Index]['speed_factor'] * $BaseSpeedElement * 1024);
     
    6666        break;
    6767      case 3:
     68        $Tarify[$Index]['price'] = $BaseTariffPrice + round($TopTariffPrice * $Tarif['price_units']);
    6869        $Tarify[$Index]['min_speed'] = $Tarify[$Index]['min_speed'] * 1024;
    6970        $Tarify[$Index]['max_speed'] = $Tarify[$Index]['max_speed'] * 1024;
     
    7778{
    7879  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;
    8082   
    8183  $DbResult = $Database->query("SELECT * FROM finance_charge WHERE period=".$Period);
     
    8890  $BaseSpeedElement = $Row['base_speed_element'];
    8991  $MaxSpeed = $RealMaxSpeed - $SpeedReserve;
     92  $TopTariffPrice = $Row['TopTariffPrice'];
     93  $BaseTariffPrice = $Row['BaseTariffPrice'];
    9094
    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");
    9296  $Row = $DbResult->fetch_array();
    9397  $InternetUsers = $Row[0];
    9498
    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");
    96100  $SpravaUsers = $DbResult->fetch_array();
    97101  $SpravaUsers = $SpravaUsers[0];
    98102  $InternetSegmentId = 21;
     103  $DbResult = $Database->query("SELECT SUM(consumption) FROM network_segments");
     104  $TotalConsumption = $DbResult->fetch_array();
     105  $TotalConsumption = $TotalConsumption[0];
     106  $UserIdNetwork = 46;
    99107
     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'];
    100112 
    101113  RecalculateTariffs($Period);
  • www/finance/index.php

    r34 r50  
    44
    55ShowHeader('Financování sítě','Finance');
     6
     7echo('<table><tr><td valign="top">');
    68
    79echo('<table><tr><td width="30%"><a href="zarizeni.php">Výpis zařízení</a><br>
     
    3133*/
    3234
    33 echo('</td></tr></table>');   
     35echo('</td></tr></table><br>');   
    3436
    35 echo('<br><strong>Souhrn:</strong><br>');
     37echo('<strong>Souhrn:</strong><br>');
    3638
    3739$DbResult = $Database->query("SELECT * FROM finance_monthly_overall ORDER BY date DESC LIMIT 0,1");
     
    3941echo('Aktuální měsíční poplatek za společný internet ('.$RealMaxSpeed.'/'.$RealMaxSpeed.' kbit/s): <strong>'.$Internet.' Kč</strong><br>');
    4042
    41 $DbResult = $Database->query("SELECT COUNT(*) FROM users WHERE role=0");
     43$DbResult = $Database->query("SELECT COUNT(*) FROM users WHERE role=2");
    4244$Row2 = $DbResult->fetch_array();
    4345echo('Počet členů (s internetem): <strong>'.$Row2[0].' ('.$InternetUsers.')</strong><br>');
     
    5456echo('Celkem peněz na účtech: <strong>'.$Row4[0].' Kč</strong><br>');
    5557echo('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");
    5860$Row5 = $DbResult->fetch_array();
    5961$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>');
     62echo('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>');
    6163echo('Provizorní bankovní účet kam lze posílát peníze: <strong>86-7755240207/0100</strong><br>');
    6264
    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;
     65echo('</td><td valign="top">');
     66
     67$UsersPayment = $TotalInternetPaid;
     68$NetworkManagement = $Sprava * $SpravaUsers;
     69$TotalGain = 0;
     70$TotalExpense = 0;
    6871$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
     76echo('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>');
     80echo('<tr><td>Poplatky účastníků za internet</td><td align="right">'.$UsersPayment.'</td></tr>');
     81$TotalGain += $UsersPayment;
     82echo('<tr><td><strong>Celkem</strong></td><td align="right"><strong>'.$TotalGain.'</strong></td></tr>');
     83echo('<tr><th colspan="2">Výdaje</th></tr>
     84<tr><td>Internet</td><td align="right">'.$Internet.'</td></tr>');
     85$TotalExpense += $Internet;
     86echo('<tr><td>Správa sítě</td><td align="right">'.$NetworkManagement.'</td></tr>');
     87$TotalExpense += $NetworkManagement;
     88echo('<tr><td>Spotřeba energie</td><td align="right">'.$TotalConsumption.'</td></tr>');
     89$TotalExpense += $TotalConsumption;
     90echo('<tr><td><strong>Celkem</strong></td><td align="right"><strong>'.$TotalExpense.'</strong></td></tr>');
     91echo('<tr><td colspan="2">&nbsp;</td></tr>');
     92echo('<tr><td><strong>Rozdíl</strong></td><td align="right"><strong>'.($TotalGain - $TotalExpense).'</strong></td></tr>');
     93echo('<tr><td>Převod do dalšího měsíce</td><td align="right">'.($TotalGain - $TotalExpense).'</td></tr>');
    7394echo('</table><br>');
     95$DbResult = $Database->select('users', 'cash', 'id='.$UserIdNetwork);
     96$Row = $DbResult->fetch_array();
     97$NetworkCash = $Row['cash'];
     98echo('Stav účtu sítě: '.$NetworkCash.' Kč<br><a href="clenove.php?show=user&id='.$UserIdNetwork.'">Výpis účtu</a><br>');
    7499
    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>');
     100echo('<td></tr></table>');
     101
     102/*
     103echo('Poplatek je odečten z účtu vždy první den v měsíci. Peníze noste nejlépe předem.<br><br>');
    76104echo('<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*/
    77106ShowFooter();
    78107?>
  • www/finance/prepocet.php

    r46 r50  
    11<?php
    2 include('../global.php');
     2include('../style.php');
    33include('include.php');
     4include('bills.php');
     5
     6ShowHeader('Přepočet financí', 'Přepočet financí');
    47
    58function RecalculateUsersFinance()
    69{
    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
    1014  while($Row = $DbResult->fetch_array())
    1115  {
     
    1418    $DbResult2 = $Database->query("SELECT SUM(consumption) FROM network_devices WHERE user=".$Row['id']." AND used=1");
    1519    $Row4 = $DbResult2->fetch_array();
    16     //DB_Update('users','id='.$Row['id'], array());
    1720
    1821    $Price = 0;
     
    3437    $MonthlyInet = $Tarify[$Row['inet_tarif_next']]['price'];
    3538    if($Row['inet'] == 1) $Monthly += $MonthlyInet;
    36     if($Row['overheads'] == 1) $Monthly += $Sprava + W2Kc($Consumption);
     39    //if($Row['overheads'] == 1) $Monthly += $Sprava; // + W2Kc($Consumption);
    3740    //echo($Row['fullname'].' '.$Row['inet'].' '.$Monthly.'<br>');
    3841    $Monthly = round($Monthly);
    3942    //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
     47function 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
     89function 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
     106function 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í
    45119$DbResult = $Database->select('finance_monthly_overall', '*', '1 ORDER BY date DESC LIMIT 1');
    46120$Overall = $DbResult->fetch_array();
    47121
    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');
     122echo('Datum: '.date('j.n.Y')."<br>");
     123$Mesice = array('', 'Leden', 'Únor', 'Březen', 'Duben', 'Květen', 'Červen', 'Červenec', 'Srpen', 'Září', 'Říjen', 'Listopad', 'Prosinec');
    50124$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
     127RecalculateSegmentParameters();
    91128RecalculateTariffs();
    92 
    93 echo(".");
     129//DiscountNetworkDevicePrice();
    94130RecalculateUsersFinance();
    95 echo("OK\n");
    96131
    97132// Celkovy prehled
    98133$DbResult = $Database->query("SELECT SUM(price) FROM network_devices WHERE used=1");
    99134$Row4 = $DbResult->fetch_array();
    100 echo("Celkova cena zařízení: Zařízení(".$Row4[0]);
     135echo("Celková cena zařízení: Zařízení(".$Row4[0]);
    101136$DbResult = $Database->query("SELECT SUM(price) FROM network_segments");
    102137$Row = $DbResult->fetch_array();
     
    104139$DbResult = $Database->query("SELECT SUM(network_device) FROM users");
    105140$Row5 = $DbResult->fetch_array();
    106 echo("), Uľivatelé(".$Row5[0].")\n");
    107 $DbResult = $Database->query("SELECT SUM(cash) FROM users WHERE role=0");
     141echo("), Uživatelé(".$Row5[0].")<br>\n");
     142$DbResult = $Database->query("SELECT SUM(cash) FROM users WHERE role=2");
    108143$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");
     144echo("Stav pokladny: Uživatelé(".$Row6[0].")");
     145$DbResult = $Database->query("SELECT SUM(money) FROM finance_operations WHERE `group`=1"); // Položky uživatelů
    113146$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");
     147echo(", Operace-Zařízení(".($Row2[0] - $Row4[0]).")<br>\n");
     148echo("Rozdíl peněz v operacích: ".($Row2[0] - $Row6[0] - $Row4[0])." <br>\n");
    119149
    120150
     
    123153$CelkemSpotreba = W2Kc($Row[0]);
    124154
    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;
     156echo("Kontrola placení (Zaplaceno-Sprava-Internet): ".$TotalPaid."-".$SpravaCelkem."-".$Internet."=".($TotalPaid - $SpravaCelkem - $Internet)."<br>\n\n");
    130157
    131158// Zkontrolovat odečtení měsíčního poplatku
     
    134161if($Mesic != $Datum[1])
    135162{
    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');
    147177
    148178  // Update finance charge
     
    152182  //print_r($Charge);
    153183  $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");
    158191
    159192  // Update tarrifs
     
    166199  }
    167200 
    168   echo('Menim aktualni tarify uzivatelu.');
     201  echo("Měním aktuální tarify uživatelů...<br>\n");
    169202
    170203  // 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");
    172205  while($User = $DbResult->fetch_array())
    173206  {
     
    176209
    177210  RecalculateTariffs();
    178   RecalculateUsersFinance();
     211  RecalculateUsersFinance();
     212  CreateMonthlyOverallBill();
     213  RecalculateUsersFinance();
    179214 
    180215  // Restart traffic shaping
    181216  $Database->update('services_restart', 'id=3', array('changed' => 1));
    182217}
     218
     219ShowFooter();
     220
    183221?>
  • www/finance/tarify.php

    r6 r50  
    1111  echo('Rychlost společné linky: <strong>'.$RealMaxSpeed.' kbit/s</strong><br>');
    1212  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>');
    1414  echo('<br>');
    1515 
  • www/style.php

    r49 r50  
    4141      'index.php' => 'Rozpis mší',
    4242    ),
    43     // Finance
    44     'finance' => array('Finance',
     43     'finance' => array('Finance',
    4544      'index.php' => '',
    4645      'spotreba.php' => 'Spotřeba',
     46      'prepocet.php' => 'Přepočet financí',
    4747      'changes.php' => 'Změny',
    4848      'tarify.php' => 'Tarify',
     
    5252      'strom.php' => 'Strom zařízení',
    5353      'srovnani.php' => 'Porovnání tarifů s konkurencí',
     54      'bills.php' => 'Faktury',
    5455      'faktury' => array('',
    5556        'index.php' => 'Faktury za internet',
Note: See TracChangeset for help on using the changeset viewer.