1 | <?php
|
---|
2 |
|
---|
3 | class 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 = ' ';
|
---|
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 | }
|
---|