source: trunk/Modules/Finance/UserState.php@ 521

Last change on this file since 521 was 521, checked in by chronos, 12 years ago
  • Upraveno: Finance přepracovány na aplikační modul. Upraveny URL adresy stránek.
  • Přidáno: Slučování registrovaných stránek do stromu stránek. Registgrovat lze nyní také pomocí cesty jako pole adresářů URL.
File size: 7.5 KB
Line 
1<?php
2
3class PageFinanceUserState extends Page
4{
5 var $FullTitle = 'Stav financí účastníka';
6 var $ShortTitle = 'Stav financí';
7 var $ParentClass = 'PageFinance';
8
9 function Show()
10 {
11 $Finance = &$this->System->Modules['Finance'];
12 $this->System->Modules['Finance']->LoadTariffs(1);
13
14 if(array_key_exists('Subject', $_GET))
15 {
16 if(!$this->System->Modules['User']->CheckPermission('Finance', 'Manage')) return('Nemáte oprávnění');
17 $DbResult = $this->Database->query('SELECT * FROM Subject WHERE Id='.$_GET['Subject']);
18 $Subject = $DbResult->fetch_assoc();
19 } else
20 {
21 if(!$this->System->Modules['User']->CheckPermission('Finance', 'DisplaySubjectState')) return('Nemáte oprávnění');
22 $UserId = $this->System->Modules['User']->User['Id'];
23 $DbResult = $this->Database->query('SELECT Customer FROM UserCustomerRel WHERE User='.$UserId.' LIMIT 1');
24 if($DbResult->num_rows > 0)
25 {
26 $CustomerUserRel = $DbResult->fetch_assoc();
27 $DbResult = $this->Database->query('SELECT * FROM Subject WHERE Id=(SELECT Subject FROM Member WHERE Id='.$CustomerUserRel['Customer'].')');
28 $Subject = $DbResult->fetch_assoc();
29 } else return($this->SystemMessage('Chyba', 'Nejste zákazníkem'));
30 }
31
32 if(!array_key_exists('show', $_GET)) $_GET['show'] = '';
33 $DbResult = $this->Database->query('SELECT Member.*, MemberPayment.MonthlyPlus AS MonthlyPlus '.
34 'FROM Member LEFT JOIN MemberPayment ON MemberPayment.Member=Member.Id WHERE Member.Subject='.$Subject['Id']);
35 $Member = $DbResult->fetch_assoc();
36 $Output = '<table width="100%" border="0" cellspacing="0" cellpadding="3"><tr><td valign="top">';
37
38 if(array_key_exists('year', $_GET))
39 {
40 $DbResult = $this->Database->query('SELECT * FROM FinanceYear WHERE Id='.addslashes($_GET['year'] * 1));
41 } else
42 {
43 $DbResult = $this->Database->query('SELECT * FROM FinanceYear ORDER BY Year DESC LIMIT 1');
44 }
45 $FinanceYearSelected = $DbResult->fetch_assoc();
46 $YearWhere = ' WHERE (Time >= "'.$FinanceYearSelected['DateStart'].'") AND (Time <= "'.$FinanceYearSelected['DateEnd'].'")';
47
48 // Year list
49 if(array_key_exists('Subject', $_GET)) $SubjectParam = '&amp;Subject='.($_GET['Subject'] * 1);
50 else $SubjectParam = '';
51 $Output .= 'Roky: ';
52 $DbResult = $this->Database->query('SELECT * FROM FinanceYear WHERE Year >= '.
53 substr($Member['MembershipDate'], 0, strpos($Member['MembershipDate'], '-')));
54 while($FinanceYear = $DbResult->fetch_assoc())
55 {
56 $Year = '<a href="?year='.$FinanceYear['Id'].$SubjectParam.'">'.$FinanceYear['Year'].'</a> ';
57 if($FinanceYear['Id'] == $FinanceYearSelected['Id']) $Output .= '<strong>'.$Year.'</strong>';
58 else $Output .= $Year;
59 }
60 $Output .= '<br/><br/>';
61
62 // Account state
63 $UserOperationTableQuery = '((SELECT Text, Time, Value AS Value, File, BillCode, NULL AS PeriodFrom, NULL AS PeriodTo '.
64 'FROM FinanceOperation WHERE (Subject='.$Subject['Id'].')) UNION ALL '.
65 '(SELECT (SELECT GROUP_CONCAT(Description SEPARATOR ",") FROM FinanceInvoiceItem WHERE FinanceInvoice=FinanceInvoice.Id) AS Text, '.
66 'TimeCreation as Time, -Value as Value, File, BillCode, PeriodFrom, PeriodTo FROM FinanceInvoice WHERE (Subject='.$Subject['Id'].')) ORDER BY Time DESC) AS T1';
67 $DbResult = $this->Database->query('SELECT SUM(T1.Value) AS Total FROM '.$UserOperationTableQuery);
68 $DbRow = $DbResult->fetch_array();
69 $Total = $DbRow['Total'];
70 $Output .= 'Stav účtu: <strong>'.round($Total, 2).' Kč</strong<br /><br /><br/>';
71
72 // Tabulka operaci
73 $Output .= 'Výpis operací pro subjekt '.$Subject['Name'].':<br />';
74 $Output .= '<table style="font-size: smaller;" class="WideTable"><tr>'.
75 '<th>Datum</th><th>Popis</th><th>Částka</th><th>Období</th><th>Doklad</th></tr>';
76 $Operations = array();
77 $DbResult = $this->Database->query('SELECT T1.* FROM '.$UserOperationTableQuery.$YearWhere);
78 while($DbRow = $DbResult->fetch_array())
79 $Operations[] = $DbRow;
80 $SumValue = 0;
81 foreach($Operations as $Row)
82 {
83 if($Row['Value'] == -0) $Row['Value'] = 0;
84 if($Row['Value'] > 0) $Row['Value'] = '+'.$Row['Value'];
85 if($Row['BillCode'] == '') $Row['BillCode'] = 'PDF';
86 if($Row['File'] > 0) $Invoice = '<a href="'.$this->System->Link('/file?id='.$Row['File']).'">'.$Row['BillCode'].'</a>';
87 else $Invoice = '&nbsp;';
88 if($Row['PeriodFrom'] != '') $Period = HumanDate($Row['PeriodFrom']).' - '.HumanDate($Row['PeriodTo']);
89 else $Period = '&nbsp;';
90 $Output .= '<tr><td style="text-align: right;">'.HumanDate($Row['Time']).'</td>'.
91 '<td style="text-align: left;">'.$Row['Text'].'</td>'.
92 '<td style="text-align: right;">'.round($Row['Value'], 2).'</td>'.
93 '<td style="text-align: center;">'.$Period.'</td>'.
94 '<td style="text-align: center;">'.$Invoice.'</td></tr>';
95 $SumValue = $SumValue + $Row['Value'];
96 }
97 $Output .= '<tr><td style="text-align: right;" colspan="2"><strong>Celkem za rok</strong></td>'.
98 '<td style="text-align: right;"><strong>'.round($SumValue, 2).'</strong></td>'.
99 '<td style="text-align: center;">&nbsp;</td>'.
100 '<td style="text-align: center;">&nbsp;</td></tr>';
101
102 $Output .= '</table>';
103 $Output .= '</td><td valign="top">';
104
105 $Output .= 'Variabilní symbol pro platby: <strong>'.$Subject['Id'].'</strong><br><br>';
106
107 $Total = 0;
108 $Output .= 'Rozpis měsíčního poplatku:<br><table class="WideTable">'.
109 '<tr><th>Služba</th><th>Cena [Kč]</th></tr>';
110 $DbResult = $this->Database->query('SELECT Service.Name, Service.Price FROM ServiceCustomerRel '.
111 'LEFT JOIN Service ON Service.Id=ServiceCustomerRel.Service '.
112 'WHERE (ServiceCustomerRel.Customer='.$Member['Id'].') AND (ServiceCustomerRel.Action IS NULL)');
113 while($DbRow = $DbResult->fetch_assoc())
114 {
115 $Output .= '<tr><td>'.$DbRow['Name'].'</td><td>'.$DbRow['Price'].'</td></tr>';
116 $Total += $DbRow['Price'];
117 }
118
119 if($Member['MonthlyPlus'] != 0)
120 {
121 $Output .= '<tr><td>Příjem za spotřebu</td><td>'.(-$Member['MonthlyPlus']).'</td></tr>';
122 $Total -= $Member['MonthlyPlus'];
123 }
124 $Output .= '<tr><td><strong>Celkem</strong></td><td><strong>'.$Total.'</strong></td></tr></table>';
125 //echo('Tarif pro příští měsíc: '.$Tarify[$Row2['inet_tarif_next']]['name'].'<br><br>');
126 $Output .= '<br />';
127
128 if($Member['MonthlyPlus'] != 0)
129 {
130 $Output .= 'Měsíční příjem za spotřebu zařízení umístěných u uživatele:<br>';
131 $Output .= '<table class="WideTable"><tr><th>Název zařízení</th><th>Spotřeba [W]</th><th>Příjem [Kč]</th></tr>';
132 $DbResult = $this->Database->query('SELECT Product.Name AS Name, Product.Consumption AS Consumption '.
133 'FROM StockItem JOIN Product ON Product.Id = StockItem.Product '.
134 'WHERE (StockItem.Location='.$Member['Id'].') AND (StockItem.TimeElimination IS NULL)');
135 $TotalW = 0;
136 $TotalPrice = 0;
137 while($Row = $DbResult->fetch_assoc())
138 {
139 $Output .= '<tr><td>'.$Row['Name'].'</td><td>'.$Row['Consumption'].'</td><td>'.$this->System->Modules['Finance']->W2Kc($Row['Consumption']).'</td></tr>';
140 $TotalW += $Row['Consumption'];
141 $TotalPrice += $this->System->Modules['Finance']->W2Kc($Row['Consumption']);
142 }
143 $Output .= '<tr><td><strong>Celkem</strong></td><td><strong>'.$TotalW.'</strong></td><td><strong>'.$TotalPrice.'</strong></td></tr>';
144 $Output .= '</table>';
145 }
146 $Output .= '</td></tr></table>';
147 return($Output);
148 }
149}
150
151?>
Note: See TracBrowser for help on using the repository browser.