source: trunk/finance/user_state.php@ 508

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