source: trunk/finance/bills.php@ 498

Last change on this file since 498 was 498, checked in by chronos, 12 years ago
  • Upraveno: Přepracováno generování PDF dokladů. Nyní pro každý typ dokladu se definuje samostatná třída odvozená ze třídy Bill. Údaje se načítají přímo ze zdrojových tabulek namísto vytváření duplicitních dat v tabulce FinanceBills. Doklady jsou identifikovány jako soubor dle tabulky File.
  • Upraveno: Fronta emailů a seznam síťových služeb lze nyní upravovat přímo ze sekce Správa dat.
File size: 7.0 KB
Line 
1<?php
2
3class Bill extends Module
4{
5 var $SpecificSymbol = 1; // počítačová sít
6
7 function GenerateHTML()
8 {
9 return('');
10 }
11
12 function SaveToFile($FileName)
13 {
14 global $Database;
15
16 $PdfData = $this->HtmlToPdf($this->GenerateHTML());
17 file_put_contents($FileName, $PdfData);
18 }
19
20 function HtmlToPdf($HtmlCode)
21 {
22 $Output = shell_exec('echo "'.addslashes(FromUTF8($HtmlCode)).
23 '"|htmldoc --no-numbered --webpage --no-embedfonts --charset 8859-2 -t pdf -');
24 return($Output);
25 }
26}
27
28class BillInvoice extends Bill
29{
30 var $InvoiceId;
31
32 function GenerateHTML()
33 {
34 global $SpecificSymbol, $Config;
35
36 $DbResult = $this->Database->select('FinanceInvoice', '*', '`Id`='.$this->InvoiceId);
37 $Invoice = $DbResult->fetch_assoc();
38
39 $DbResult = $this->Database->select('Subject', '*', '`Id`='.$Invoice['Subject']);
40 $Subject = $DbResult->fetch_assoc();
41
42 $DbResult = $this->Database->select('Subject', '*', '`Id`='.$Config['Finance']['MainSubjectId']);
43 $MainSubject = $DbResult->fetch_assoc();
44
45 $DbResult = $this->Database->select('FinanceBankAccount', '*', '(`Subject`='.
46 $Config['Finance']['MainSubjectId'].') AND (`Use`=1)');
47 $MainSubjectAccount = $DbResult->fetch_assoc();
48
49 $Dodavka = array();
50 $DbResult = $this->Database->select('FinanceInvoiceItem', '*', 'FinanceInvoice='.$this->InvoiceId);
51 while($Item = $DbResult->fetch_assoc())
52 {
53 $InvoiceItems[$Item['Id']] = $Item;
54 }
55
56 $PaymentType = array('převodem', 'hotově');
57 $BooleanText = array('Ne', 'Ano');
58
59 $Output = '<table width="100%"><tr><td colspan="2">'.
60 '<font size="6"><div align="center">Faktura - daňový doklad</font></div>'.
61 '<hr></td></tr>'.
62 '<tr><td valign="top" width="50%"><strong>Dodavatel:</strong><br>'.
63 $MainSubject['Name'].'<br>'.
64 $MainSubject['AddressStreet'].'<br>'.
65 $MainSubject['AddressPSC'].' '.$MainSubject['AddressTown'].'<br>'.
66 'IČ: '.$MainSubject['IC'].'<br>'.
67 'DIČ: '.$MainSubject['DIC'].'<br>'.
68 'Účet: '.$MainSubjectAccount['Number'].'<br>'.
69 'Plátce DPH: '.$BooleanText[$MainSubject['PayVAT']].'<br>'.
70 '</td><td valign="top">'.
71 '<strong>Odběratel:</strong><br>'.
72 $Subject['Name'].'<br>'.
73 $Subject['AddressStreet'].'<br>'.
74 $Subject['AddressPSC'].' '.$Subject['AddressTown'].'<br>';
75 if($Subject['IC'] != 0) $Output .= 'IČ: '.$Subject['IC'].'<br>';
76 if($Subject['DIC'] != '') $Output .= 'DIČ: '.$Subject['DIC'].'<br>';
77 $Output .=
78 '</td></tr>'.
79 '<tr><td colspan="2"><hr></td></tr>'.
80 '<tr><td width="50%" valign="top">'.
81 '<strong>Platební podmínky:</strong><br>'.
82 'Číslo dokladu: '.$Invoice['BillCode'].'<br>'.
83 'Variabilní symbol: '.$Subject['Id'].'<br>'.
84 'Specifický symbol: '.$this->SpecificSymbol.'<br>'.
85 'Konstantní symbol:<br>'.
86 'Způsob úhrady: '.$PaymentType[$Invoice['Cash']].
87 '</td><td valign="top">'.
88 '<br>'.
89 'Datum vystavení: '.HumanDate($Invoice['TimeCreation']).'<br>'.
90 'Datum zdanitel. plnění: '.HumanDate($Invoice['TimeCreation']).'<br>'.
91 'Datum splatnosti: '.HumanDate($Invoice['TimeDue']).'<br>';
92 if(($Invoice['PeriodFrom'] != '') and ($Invoice['PeriodTo'] != ''))
93 $Output .= 'Fakturované období: '.HumanDate($Invoice['PeriodFrom']).' - '.
94 HumanDate($Invoice['PeriodTo']).'<br>';
95 $Output .= '</td></tr>'.
96 '<tr><td colspan="2">'.
97 '<hr>'.
98 '<br>'.
99 '<table border="0" width="100%">'.
100 '<tr><th align="left">Dodávka</th><th align="right">Množství</th><th align="right">Cena/MJ</th><th align="right">Celkem</th></tr>'.
101 '<tr><td colspan="4"><hr></td></tr>';
102
103 $Total = 0;
104 foreach($InvoiceItems as $Item)
105 {
106 $Output .= '<tr><td>'.$Item['Description'].'</td><td align="right">'.
107 $Item['Quantity'].'</td><td align="right">'.$Item['Price'].
108 '&nbsp;Kč</td><td align="right">'.($Item['Quantity'] * $Item['Price']).'&nbsp;Kč</td></tr>';
109 $Total += ($Item['Quantity'] * $Item['Price']);
110 }
111 $Output .= '<tr><th colspan="3" align="left">Celkem</th><th align="right">'.$Total.'&nbsp;Kč</th></tr>';
112 $Output .= '</table>'.
113 '</td></tr>'.
114 '<tr><td colspan="2"><hr></td></tr>'.
115 '</table>';
116
117 return($Output);
118 }
119}
120
121class BillOperation extends Bill
122{
123 var $OperationId;
124
125 function GenerateHTML()
126 {
127 $DbResult = $this->Database->select('FinanceOperation', '*', '`Id`='.$this->OperationId);
128 $Operation = $DbResult->fetch_assoc();
129
130 $DbResult = $this->Database->select('Subject', '*', '`Id`='.$Operation['Subject']);
131 $Subject = $DbResult->fetch_assoc();
132
133 $DbResult = $this->Database->select('Subject', '*', '`Id`='.$Config['Finance']['MainSubjectId']);
134 $MainSubject = $DbResult->fetch_assoc();
135
136 $DbResult = $this->Database->select('FinanceBankAccount', '*', '(`Subject`='.
137 $Config['Finance']['MainSubjectId'].') AND (`Use`=1)');
138 $MainSubjectAccount = $DbResult->fetch_assoc();
139
140 //$Dodavka = array();
141 //$DbResult = $this->Database->select('FinanceInvoiceItem', '*', 'FinanceInvoice='.$BillId);
142 //while($Item = $DbResult->fetch_assoc())
143 //{
144 // $InvoiceItems[$Item['Id']] = $Item;
145 //}
146
147 $Output = '<table width="100%" border="1" cellspacing="0" cellpadding="3"><tr><td width="50%">'.
148 '<strong>Firma:</strong><br>'.
149 $MainSubject['Name'].'<br>'.
150 $MainSubject['AddressStreet'].'<br>'.
151 $MainSubject['AddressPSC'].' '.$MainSubject['AddressTown'].'<br>'.
152 'IČ: '.$MainSubject['IC'].'<br>'.
153 'DIČ: '.$MainSubject['DIC'].'<br>'.
154 'Účet: '.$MainSubjectAccount['Number'].'<br>'.
155 'Plátce DPH: '.$BooleanText[$MainSubject['PayVAT']].
156 '</td><td width="50%" valign="top">'.
157 '<font size="5"><strong>PŘÍJMOVÝ POKLADNÍ DOKLAD</strong></font><br><br>'.
158 'Číslo dokladu: '.$Bill['BillCode'].'<br>'.
159 'Datum vystavení: '.HumanDate($Bill['TimeCreate']).'<br>'.
160 '</td></tr>'.
161 '<tr><td colspan="2"><strong>Přijato od:</strong><br>'.
162 $Subject['Name'].'<br>'.
163 $Subject['AddressStreet'].'<br>'.
164 $Subject['AddressPSC'].' '.$Subject['AddressTown'].'<br>';
165 if($Subject['IC'] != 0) $Output .= 'IČ: '.$Subject['IC'].'<br>';
166 if($Subject['DIC'] != '') $Output .= 'DIČ: '.$Subject['DIC'].'<br>';
167 $Total = 0;
168 $Description = '';
169 //foreach($Dodavka as $Polozka)
170 //{
171 // $Description .= $Polozka['Description'].'<br>';
172 // $Total += ($Polozka['Quantity'] * $Polozka['Price']);
173 //}
174 $Output .= '</td></tr>'.
175 '<tr><td colspan="2"><strong>Částka:</strong> '.$Total.' Kč<br><br>'.
176 '</td></tr>'.
177 '<tr><td colspan="2"><strong>Účel platby:</strong><br>'.$Description.'</td></tr>'.
178 '<tr><td><br><br>Podpis příjemce:</td><td><br><br>Podpis pokladníka:</td></tr>';
179 $Output .= '</table>';
180 return($Output);
181 }
182}
183
184?>
Note: See TracBrowser for help on using the repository browser.