source: www/finance/manage.php@ 133

Last change on this file since 133 was 133, checked in by george, 16 years ago
  • Přidáno: Ukládání pdf faktůr jako soubory namísto databáze. * Přidáno: Používání číslených řad pro identifikaci dokumentů.
File size: 10.7 KB
Line 
1<?php
2
3include('finance.php');
4include('bills.php');
5
6if(array_key_exists('Operation', $_GET)) $Operation = $_GET['Operation']; else $Operation = '';
7switch($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}
22echo(FormatOutput($Output));
23
24function 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
46function 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
56function 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
68function 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
77function 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
86function 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
95function 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
221function 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
233function 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();
249ImportOldData();
250
251?>
Note: See TracBrowser for help on using the repository browser.