1 | <?php
|
---|
2 |
|
---|
3 | include('finance.php');
|
---|
4 | include('bills.php');
|
---|
5 |
|
---|
6 | if(array_key_exists('Operation', $_GET)) $Operation = $_GET['Operation']; else $Operation = '';
|
---|
7 | switch($Operation)
|
---|
8 | {
|
---|
9 | case 'NewPaymentInsert':
|
---|
10 | $Output = ShowNewPaymentInsert();
|
---|
11 | break;
|
---|
12 | case 'NewPaymentForm':
|
---|
13 | $Output = ShowNewPaymentForm();
|
---|
14 | break;
|
---|
15 | case 'NewInvoiceForm':
|
---|
16 | $Output = ShowNewInvoiceForm();
|
---|
17 | break;
|
---|
18 | default:
|
---|
19 | $Output = '<a href="?Operation=NewPaymentForm">Přidat novou platbu</a><br>';
|
---|
20 | $Output .= '<a href="?Operation=NewInvoiceForm">Přidat novou fakturu</a><br>';
|
---|
21 | }
|
---|
22 | echo(FormatOutput($Output));
|
---|
23 |
|
---|
24 | function CheckAdvancesAndLiabilities($Subject)
|
---|
25 | {
|
---|
26 | global $Database, $LastInsertTime;
|
---|
27 | do {
|
---|
28 | $DbResult = $Database->select('FinanceAdvances', 'SUM(Value)', 'Subject='.$Subject.' AND Direction = "In"');
|
---|
29 | $DbRow = $DbResult->fetch_array();
|
---|
30 | $Advances = $DbRow[0];
|
---|
31 | $DbResult = $Database->select('FinanceClaimsLiabilities', '*', 'Subject='.$Subject.' AND TimePayment IS NULL AND Value > 0 ORDER BY TimeCreation LIMIT 1');
|
---|
32 | //echo($Database->error);
|
---|
33 | if($DbResult->num_rows > 0)
|
---|
34 | {
|
---|
35 | $OpenedClaim = $DbResult->fetch_array();
|
---|
36 | if($Advances > $OpenedClaim['Value'])
|
---|
37 | {
|
---|
38 | $Database->update('FinanceClaimsLiabilities', 'Id='.$OpenedClaim['Id'], array('TimePayment' => TimeToMysqlDateTime($LastInsertTime)));
|
---|
39 | $Database->insert('FinanceAdvances', array('Subject' => $OpenedClaim['Subject'], 'Value' => -$OpenedClaim['Value'], 'TimeCreation' => TimeToMysqlDateTime($LastInsertTime), 'CashFlowId' => $OpenedClaim['Id'], 'Direction' => 'In'));
|
---|
40 | //echo($Database->LastQuery);
|
---|
41 | } else break;
|
---|
42 | } else break;
|
---|
43 | } while(($Advances > $OpenedClaim['Value']));
|
---|
44 | }
|
---|
45 |
|
---|
46 | function InsertLiability($Subject, $Value, $Time, $BillId, $Text, $TimePayment = '')
|
---|
47 | {
|
---|
48 | global $Database, $LastInsertTime;
|
---|
49 | if($TimePayment != '') $TimePayment = TimeToMysqlDateTime($TimePayment);
|
---|
50 | $Database->insert('FinanceClaimsLiabilities', array('Text' => $Text, 'Subject' => $Subject, 'TimeCreation' => TimeToMysqlDateTime($Time), 'TimeDue' => TimeToMysqlDateTime($Time + 3600*24*15), 'TimePayment' => $TimePayment, 'Value' => $Value, 'Bill' => $BillId));
|
---|
51 | echo($Database->LastQuery.'<br>');
|
---|
52 | $LastInsertTime = $Time;
|
---|
53 | CheckAdvancesAndLiabilities($Subject);
|
---|
54 | }
|
---|
55 |
|
---|
56 | function InsertMoney($Subject, $Value, $Cash, $Taxable, $Time, $Text)
|
---|
57 | {
|
---|
58 | global $Database, $LastInsertTime;
|
---|
59 | $Database->insert('FinanceCashFlow', array('Text' => $Text, 'Subject' => $Subject, 'Cash' => $Cash, 'Value' => $Value, 'Time' => TimeToMysqlDateTime($Time), 'Taxable' => $Taxable));
|
---|
60 | if($Value >= 0)
|
---|
61 | {
|
---|
62 | $Database->insert('FinanceAdvances', array('Subject' => $Subject, 'Value' => $Value, 'TimeCreation' => TimeToMysqlDateTime($Time), 'CashFlowId' => $Database->insert_id, 'Direction' => 'In'));
|
---|
63 | }
|
---|
64 | $LastInsertTime = $Time;
|
---|
65 | CheckAdvancesAndLiabilities($Subject);
|
---|
66 | }
|
---|
67 |
|
---|
68 | function ShowNewPaymentForm()
|
---|
69 | {
|
---|
70 | global $Database;
|
---|
71 | $Values = array();
|
---|
72 | $Output = '<form action="?Operation=NewPaymentInsert" method="post">'.ShowEditTable('NewPayment', $Values);
|
---|
73 | $Output .= '<input type="submit" value="Vložit"></form>';
|
---|
74 | return($Output);
|
---|
75 | }
|
---|
76 |
|
---|
77 | function ShowNewPaymentInsert()
|
---|
78 | {
|
---|
79 | global $Database;
|
---|
80 | $Values = LoadSubmitedData('NewPayment');
|
---|
81 | InsertMoney($Values['Subject'], $Values['Value'], $Values['Cash'], $Value['Taxable'], $Values['Text'], time());
|
---|
82 | echo('Nová platba vložena');
|
---|
83 | //echo(phpinfo());
|
---|
84 | }
|
---|
85 |
|
---|
86 | function ShowNewInvoiceForm()
|
---|
87 | {
|
---|
88 | global $Database;
|
---|
89 | $Values = array();
|
---|
90 | $Output = '<form action="?Operation=NewInvoiceInsert" method="post">'.ShowEditTable('NewInvoice', $Values);
|
---|
91 | $Output .= '<input type="submit" value="Vložit"></form>';
|
---|
92 | return($Output);
|
---|
93 | }
|
---|
94 |
|
---|
95 | function ImportOldData()
|
---|
96 | {
|
---|
97 | global $Database, $InvoiceGenerator;
|
---|
98 |
|
---|
99 | $Database->query('TRUNCATE TABLE FinanceCashFlow');
|
---|
100 | $Database->query('TRUNCATE TABLE FinanceClaimsLiabilities');
|
---|
101 | $Database->query('TRUNCATE TABLE FinanceAdvances');
|
---|
102 | $Database->query('TRUNCATE TABLE FinanceSmallAssets');
|
---|
103 |
|
---|
104 | // Move time of device price transformation
|
---|
105 | $Database->query('UPDATE finance_operations SET date="2007-11-30" WHERE comment = "Jednorázový poplatek za společné zařízení"');
|
---|
106 |
|
---|
107 | // Transfer finance before era
|
---|
108 | $DbResult = $Database->query('SELECT * FROM users WHERE role=2');
|
---|
109 | while($User = $DbResult->fetch_array())
|
---|
110 | {
|
---|
111 | $DbResult2 = $Database->query('SELECT SUM(money) FROM finance_operations WHERE user='.$User['id'].' AND date < "2007-12-01"');
|
---|
112 | $Row = $DbResult2->fetch_array();
|
---|
113 | $TotalAdvance = $Row[0];
|
---|
114 | //echo($User['second_name'].' '.$User['first_name'].' '.$TotalAdvance.'<br>');
|
---|
115 | // Záloha
|
---|
116 | if($TotalAdvance > 0)
|
---|
117 | {
|
---|
118 | InsertMoney($User['id'], $TotalAdvance, 0, 1, mktime(0, 0, 0, 12, 1, 2007), 'Přijatá záloha (z období před daňovou evidencí)');
|
---|
119 | }
|
---|
120 | // Dluh
|
---|
121 | if($TotalAdvance < 0)
|
---|
122 | {
|
---|
123 | InsertLiability($User['id'], (-$Row[0]), mktime(0, 0, 0, 12, 1, 2007), 0, 'Připojení k síti (z období před daňovou evidencí)');
|
---|
124 | //echo($Database->LastQuery.'<br>');
|
---|
125 | }
|
---|
126 | }
|
---|
127 |
|
---|
128 | // Transfer finance after era
|
---|
129 | // $DbResult = $Database->query('SELECT * FROM users WHERE role=2');
|
---|
130 | // while($User = $DbResult->fetch_array())
|
---|
131 | // {
|
---|
132 | $DbResult2 = $Database->query('SELECT finance_operations.*, users.role as role FROM finance_operations JOIN users ON users.id = finance_operations.user WHERE finance_operations.date >= "2007-12-01"');
|
---|
133 | while($Operation = $DbResult2->fetch_array())
|
---|
134 | {
|
---|
135 | //echo($Operation['comment'].'<br>');
|
---|
136 | if(substr($Operation['comment'], 0, 19) == 'Poplatek za měsíc')
|
---|
137 | {
|
---|
138 | InsertLiability($Operation['user'], -$Operation['money'], MysqlDateToTime($Operation['date']), $Operation['bill_id'], 'Připojení k síti');
|
---|
139 | echo($Operation['user'].' '.$Operation['money'].' Připojení k síti<br>');
|
---|
140 | } else
|
---|
141 | if($Operation['comment'] == 'Vklad')
|
---|
142 | {
|
---|
143 | InsertMoney($Operation['user'], $Operation['money'], 0, 1, MysqlDateToTime($Operation['date']), 'Přijatá záloha');
|
---|
144 | //echo($Operation['user'].' '.$Operation['money'].' Přijatá záloha<br>');
|
---|
145 | } else
|
---|
146 | if($Operation['comment'] == 'Internet')
|
---|
147 | {
|
---|
148 | InsertLiability($Operation['user'], $Operation['money'], MysqlDateToTime($Operation['date']), $Operation['bill_id'], 'Měsíční paušál za Internet', MysqlDateToTime($Operation['date']));
|
---|
149 | InsertMoney($Operation['user'], $Operation['money'], 0, 1, MysqlDateToTime($Operation['date']), 'Měsíční paušál za Internet');
|
---|
150 | } else
|
---|
151 | if($Operation['comment'] == 'Sociální pojištění')
|
---|
152 | {
|
---|
153 | InsertLiability($Operation['user'], $Operation['money'], MysqlDateToTime($Operation['date']), $Operation['bill_id'], $Operation['comment'], MysqlDateToTime($Operation['date']));
|
---|
154 | InsertMoney($Operation['user'], $Operation['money'], 0, 1, MysqlDateToTime($Operation['date']), $Operation['comment']);
|
---|
155 | } else
|
---|
156 | {
|
---|
157 | $DbResult = $Database->query('SELECT role FROM users WHERE id='.$Operation['user']);
|
---|
158 | while($User = $DbResult->fetch_array())
|
---|
159 |
|
---|
160 | InsertLiability($Operation['user'], -$Operation['money'], MysqlDateToTime($Operation['date']), $Operation['bill_id'], $Operation['comment'], MysqlDateToTime($Operation['date']));
|
---|
161 | echo($Operation['user'].' '.$Operation['comment'].' '.MysqlDateToTime($Operation['date']).'<br>');
|
---|
162 |
|
---|
163 | if(($Operation['role'] == 2))
|
---|
164 | {
|
---|
165 | echo('A');
|
---|
166 | $Database->insert('FinanceAdvances', array('Subject' => $Operation['user'], 'Value' => $Operation['money'], 'TimeCreation' => MysqlDateToTime($Operation['date']), 'CashFlowId' => 0, 'Direction' => 'In'));
|
---|
167 | CheckAdvancesAndLiabilities($Operation['user']);
|
---|
168 | } else InsertMoney($Operation['user'], $Operation['money'], 0, 1, MysqlDateToTime($Operation['date']), $Operation['comment']);
|
---|
169 | }
|
---|
170 | }
|
---|
171 | // }
|
---|
172 |
|
---|
173 | // Import small asset
|
---|
174 | $Subject = 1;
|
---|
175 |
|
---|
176 | // Převod pro minulý rok
|
---|
177 | $Time = mktime(0, 0, 0, 12, 10, 2007);
|
---|
178 | $DbResult = $Database->query('SELECT * FROM network_devices WHERE used <> 0 AND date < "'.TimeToMysqlDateTime($Time).'" AND (id <> 73)');
|
---|
179 | $Items = array();
|
---|
180 | $TotalPrice = 0;
|
---|
181 | while($Device = $DbResult->fetch_array())
|
---|
182 | {
|
---|
183 | //$Database->insert('FinanceSmallAsset', array());
|
---|
184 | $Items[] = array('description' => $Device['name'], 'quantity' => $Device['count'], 'price' => 0); //$Device['price']);
|
---|
185 | $LastId = $Device['id'];
|
---|
186 | $TotalPrice += $Device['price'] * $Device['count'];
|
---|
187 | if($TotalPrice > 55000) break;
|
---|
188 | }
|
---|
189 | //print_r($Items);
|
---|
190 | $BillId = $InvoiceGenerator->CreateBill($Subject, $Items, $Time, $Time);
|
---|
191 | $DbResult = $Database->query('UPDATE network_devices SET TimeEnlistment = "'.TimeToMysqlDateTime($Time).'" WHERE used <> 0 AND date < "'.TimeToMysqlDateTime($Time).'" AND (id <> 73) AND (id <= '.$LastId.')');
|
---|
192 | //echo($Database->error);
|
---|
193 | InsertLiability($Subject, 0, $Time, $BillId, 'Nákup infrastruktury', $Time);
|
---|
194 | //InsertMoney($Subject, 0, 0, 1, $Time, 'Nákup infrastruktury');
|
---|
195 |
|
---|
196 | //echo($LastId);
|
---|
197 |
|
---|
198 | // Převod tento rok
|
---|
199 | $Time = mktime(0, 0, 0, 1, 14, 2008);
|
---|
200 | $DbResult = $Database->query('SELECT * FROM network_devices WHERE (used <> 0) AND (id > '.$LastId.') AND date < "'.TimeToMysqlDateTime($Time).'"');
|
---|
201 | $Items = array();
|
---|
202 | $TotalPrice = 0;
|
---|
203 | while($Device = $DbResult->fetch_array())
|
---|
204 | {
|
---|
205 | //$Database->insert('FinanceSmallAsset', array());
|
---|
206 | $Items[] = array('description' => $Device['name'], 'quantity' => $Device['count'], 'price' => 0); //$Device['price']);
|
---|
207 | $TotalPrice += $Device['price'] * $Device['count'];
|
---|
208 | }
|
---|
209 | //print_r($Items);
|
---|
210 | $BillId = $InvoiceGenerator->CreateBill($Subject, $Items, $Time, $Time);
|
---|
211 | $DbResult = $Database->query('UPDATE network_devices SET TimeEnlistment = "'.TimeToMysqlDateTime($Time).'" WHERE used <> 0 AND date < "'.TimeToMysqlDateTime($Time).'" AND (id > '.$LastId.')');
|
---|
212 | InsertLiability($Subject, 0, $Time, $BillId, 'Nákup infrastruktury', $Time);
|
---|
213 | //InsertMoney($Subject, 0, 0, 1, $Time, 'Nákup infrastruktury');
|
---|
214 |
|
---|
215 |
|
---|
216 | // Make absolute value in monthly overall
|
---|
217 | //$Database->query('UPDATE finance_monthly_overall SET total_paid = ABS(total_paid)');
|
---|
218 | //$Database->query('UPDATE finance_monthly_overall SET member_count = (SELECT COUNT(*) FROM users WHERE users.role=2 AND users.membership_date < finance_monthly_overall.date)');
|
---|
219 | }
|
---|
220 |
|
---|
221 | function ConvertPDFDataToFiles()
|
---|
222 | {
|
---|
223 | global $Database;
|
---|
224 | $DbResult = $Database->query('SELECT * FROM finance_bills');
|
---|
225 | while($Bill = $DbResult->fetch_array())
|
---|
226 | {
|
---|
227 | file_put_contents('doklady/doklad-'.$Bill['id'].'.pdf', $Bill['pdf']);
|
---|
228 | echo($Bill['id'].',');
|
---|
229 | }
|
---|
230 |
|
---|
231 | }
|
---|
232 |
|
---|
233 | function CheckPDFFiles()
|
---|
234 | {
|
---|
235 | global $Database, $InvoiceGenerator;
|
---|
236 |
|
---|
237 | $DbResult = $Database->query('SELECT * FROM finance_bills');
|
---|
238 | while($Bill = $DbResult->fetch_array())
|
---|
239 | {
|
---|
240 | file_put_contents('doklady2/doklad-'.$Bill['id'].'.pdf', file_get_contents('doklady/doklad-'.$Bill['id'].'.pdf'));
|
---|
241 | //echo($InvoiceGenerator->HasPDFFile($Bill['id']).',');
|
---|
242 | }
|
---|
243 |
|
---|
244 | }
|
---|
245 |
|
---|
246 | //ConvertPDFDataToFiles();
|
---|
247 |
|
---|
248 | //CheckPDFFiles();
|
---|
249 | ImportOldData();
|
---|
250 |
|
---|
251 | ?>
|
---|