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

Last change on this file since 700 was 700, checked in by chronos, 11 years ago
  • Opraveno: Chybné názvy sloupců pro řazení ve zobrazení historie plateb uživatelů.
File size: 7.1 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 ShowFinanceOperation($Subject)
10 {
11 $UserOperationTableQuery = '((SELECT Text, Time, Value AS Value, File, BillCode, NULL AS PeriodFrom, NULL AS PeriodTo '.
12 'FROM FinanceOperation WHERE (Subject='.$Subject['Id'].')) UNION ALL '.
13 '(SELECT (SELECT GROUP_CONCAT(Description SEPARATOR ",") FROM FinanceInvoiceItem WHERE FinanceInvoice=FinanceInvoice.Id) AS Text, '.
14 'Time, -Value as Value, File, BillCode, PeriodFrom, PeriodTo FROM FinanceInvoice WHERE (Subject='.$Subject['Id'].')))';
15
16 $Output = '<div style="text-align:center">Výpis finančních operací</div>';
17 $DbResult = $this->Database->query('SELECT COUNT(*) FROM '.$UserOperationTableQuery.' AS T1');
18 $DbRow = $DbResult->fetch_row();
19 $PageList = GetPageList($DbRow[0]);
20
21 $Output .= $PageList['Output'];
22 $Output .= '<table class="WideTable" style="font-size: small;">';
23
24 $TableColumns = array(
25 array('Name' => 'Time', 'Title' => 'Datum'),
26 array('Name' => 'Text', 'Title' => 'Popis'),
27 array('Name' => 'Value', 'Title' => 'Změna [Kč]'),
28 array('Name' => 'State', 'Title' => 'Zůstatek [Kč]'),
29 array('Name' => 'PeriodFrom', 'Title' => 'Období'),
30 array('Name' => 'BillCode', 'Title' => 'Doklad'),
31 );
32 $Order = GetOrderTableHeader($TableColumns, 'Time', 1);
33 $Output .= $Order['Output'];
34
35 $StateQuery = 'SELECT SUM(T2.Value) FROM '.$UserOperationTableQuery.
36 ' AS T2 WHERE T2.Time <= T1.Time ';
37 $Query = 'SELECT *, ('.$StateQuery.') AS State FROM '.$UserOperationTableQuery.' AS T1 '.$Order['SQL'].$PageList['SQLLimit'];
38
39 $DbResult = $this->Database->query($Query);
40 $SumValue = 0;
41 while($Row = $DbResult->fetch_assoc())
42 {
43 $Row['State'] = round($Row['State'], 2);
44 if($Row['State'] > 0) $Row['State'] = '<span style="color:green;">'.$Row['State'].'</span>';
45 if($Row['State'] < 0) $Row['State'] = '<span style="color:red;">'.$Row['State'].'</span>';
46 if($Row['Value'] == -0) $Row['Value'] = 0;
47 if($Row['Value'] > 0) $Row['Value'] = '+'.$Row['Value'];
48 if($Row['BillCode'] == '') $Row['BillCode'] = 'PDF';
49 if($Row['File'] > 0) $Invoice = '<a href="'.$this->System->Link('/file?id='.$Row['File']).'">'.$Row['BillCode'].'</a>';
50 else $Invoice = NotBlank($Row['BillCode']);
51 if($Row['PeriodFrom'] != '') $Period = HumanDate($Row['PeriodFrom']).' - '.HumanDate($Row['PeriodTo']);
52 else $Period = '&nbsp;';
53 $Output .= '<tr><td style="text-align: right;">'.HumanDate($Row['Time']).'</td>'.
54 '<td style="text-align: left;">'.$Row['Text'].'</td>'.
55 '<td style="text-align: right;">'.round($Row['Value'], 2).'</td>'.
56 '<td style="text-align: right;">'.$Row['State'].'</td>'.
57 '<td>'.$Period.'</td>'.
58 '<td>'.$Invoice.'</td></tr>';
59 $SumValue = $SumValue + $Row['Value'];
60 }
61 $Output .= '</table>';
62 $Output .= $PageList['Output'];
63 return($Output);
64 }
65
66 function Show()
67 {
68 $Finance = &$this->System->Modules['Finance'];
69 $Finance->LoadMonthParameters(0);
70 $this->System->Modules['Finance']->LoadTariffs(1);
71
72 if(array_key_exists('Subject', $_GET))
73 {
74 if(!$this->System->User->CheckPermission('Finance', 'Manage')) return('Nemáte oprávnění');
75 $DbResult = $this->Database->query('SELECT * FROM Subject WHERE Id='.$_GET['Subject']);
76 if($DbResult->num_rows > 0)
77 $Subject = $DbResult->fetch_assoc();
78 else return($this->SystemMessage('Chyba', 'Subjekt nenalezen'));
79 } else
80 {
81 if(!$this->System->User->CheckPermission('Finance', 'DisplaySubjectState')) return('Nemáte oprávnění');
82 $UserId = $this->System->User->User['Id'];
83 $DbResult = $this->Database->query('SELECT Customer FROM UserCustomerRel WHERE User='.$UserId.' LIMIT 1');
84 if($DbResult->num_rows > 0)
85 {
86 $CustomerUserRel = $DbResult->fetch_assoc();
87 $DbResult = $this->Database->query('SELECT * FROM Subject WHERE Id=(SELECT Subject FROM Member WHERE Id='.$CustomerUserRel['Customer'].')');
88 $Subject = $DbResult->fetch_assoc();
89 } else return($this->SystemMessage('Chyba', 'Nejste zákazníkem'));
90 }
91
92 if(!array_key_exists('show', $_GET)) $_GET['show'] = '';
93 $DbResult = $this->Database->query('SELECT Member.* '.
94 'FROM Member LEFT JOIN MemberPayment ON MemberPayment.Member=Member.Id WHERE Member.Subject='.$Subject['Id']);
95 if($DbResult->num_rows == 0)
96 {
97 return($this->SystemMessage('Položka nenalezena', 'Zákazník nenalezen'));
98 }
99 $Member = $DbResult->fetch_assoc();
100 $Output = '<table width="100%" border="0" cellspacing="0" cellpadding="3"><tr><td valign="top">';
101
102 // Account state
103 $UserOperationTableQuery = '((SELECT Text, Time, Value AS Value, File, BillCode, NULL AS PeriodFrom, NULL AS PeriodTo '.
104 'FROM FinanceOperation WHERE (Subject='.$Subject['Id'].')) UNION ALL '.
105 '(SELECT (SELECT GROUP_CONCAT(Description SEPARATOR ",") FROM FinanceInvoiceItem WHERE FinanceInvoice=FinanceInvoice.Id) AS Text, '.
106 'Time, -Value as Value, File, BillCode, PeriodFrom, PeriodTo FROM FinanceInvoice WHERE (Subject='.$Subject['Id'].')) ORDER BY Time DESC) AS T1';
107 $DbResult = $this->Database->query('SELECT SUM(T1.Value) AS Total FROM '.$UserOperationTableQuery);
108 $DbRow = $DbResult->fetch_array();
109 $Total = $DbRow['Total'];
110 $Output .= 'Stav účtu: <strong>'.round($Total, 2).' Kč</strong><br /><br />';
111
112 // Tabulka operaci
113 $Output .= $this->ShowFinanceOperation($Subject);
114
115 $Output .= '</td><td valign="top">';
116
117 $DbResult = $this->Database->query('SELECT FinanceBankAccount.*, CONCAT(FinanceBankAccount.Number, "/", FinanceBank.Code) AS NumberFull FROM FinanceBankAccount '.
118 'JOIN FinanceBank ON FinanceBank.Id=FinanceBankAccount.Bank '.
119 'WHERE (FinanceBankAccount.`Subject`='.$this->System->Config['Finance']['MainSubjectId'].') AND (FinanceBankAccount.`Use`=1)');
120 $SubjectFromAccount = $DbResult->fetch_assoc();
121 $Account = $SubjectFromAccount['NumberFull'];
122
123 $Output .= 'Účet pro platby: <strong>'.$Account.'</strong><br/>';
124 $Output .= 'Variabilní symbol pro platby: <strong>'.$Subject['Id'].'</strong><br/>';
125 $Output .= 'Subjekt: <strong>'.$Subject['Name'].'</strong><br/>';
126 $Output .= '<br/>';
127
128 $Total = 0;
129 $Output .= 'Rozpis měsíčního poplatku:<br><table class="WideTable">'.
130 '<tr><th>Služba</th><th>Cena [Kč]</th></tr>';
131 $DbResult = $this->Database->query('SELECT Service.Name, Service.Price FROM ServiceCustomerRel '.
132 'LEFT JOIN Service ON Service.Id=ServiceCustomerRel.Service '.
133 'WHERE (ServiceCustomerRel.Customer='.$Member['Id'].') AND (ServiceCustomerRel.Action IS NULL)');
134 while($DbRow = $DbResult->fetch_assoc())
135 {
136 $Output .= '<tr><td>'.$DbRow['Name'].'</td><td>'.$DbRow['Price'].'</td></tr>';
137 $Total += $DbRow['Price'];
138 }
139
140 $Output .= '<tr><td><strong>Celkem</strong></td><td><strong>'.$Total.'</strong></td></tr></table>';
141 //echo('Tarif pro příští měsíc: '.$Tarify[$Row2['inet_tarif_next']]['name'].'<br><br>');
142 $Output .= '<br />';
143
144 $Output .= '</td></tr></table>';
145 return($Output);
146 }
147}
Note: See TracBrowser for help on using the repository browser.