1 | unit UFinancePage;
|
---|
2 |
|
---|
3 | {$mode delphi}{$H+}
|
---|
4 |
|
---|
5 | interface
|
---|
6 |
|
---|
7 | uses
|
---|
8 | UDatabase, UConfig;
|
---|
9 |
|
---|
10 | type
|
---|
11 |
|
---|
12 | { TBaseObject }
|
---|
13 |
|
---|
14 | TBaseObject = class(TDbObject)
|
---|
15 | private
|
---|
16 | FName: string;
|
---|
17 | published
|
---|
18 | property Name: string read FName write FName;
|
---|
19 | end;
|
---|
20 |
|
---|
21 | function FinanceOverviewPage: string;
|
---|
22 |
|
---|
23 | implementation
|
---|
24 |
|
---|
25 | uses
|
---|
26 | USqlDatabase, UCore, SysUtils, UFinance;
|
---|
27 |
|
---|
28 | function FinanceOverviewPage: string;
|
---|
29 | begin
|
---|
30 | Result := ShowHeader('<strong>ZděchovNET</strong> - komunitní počítačová síť', 'Finance');
|
---|
31 | Result := Result + '<table><tr><td valign="top"><table><tr><td>' +
|
---|
32 | HtmlLink('Výpis zařízení', 'zarizeni.php') + '<br />' +
|
---|
33 | HtmlLink('Seznam členů', '?p=finance-clenove') + '<br />' +
|
---|
34 | HtmlLink('Spotřeba energie', 'spotreba.php') + '<br />' +
|
---|
35 | HtmlLink('Investice v síti', '/aktuality/index.php?category=9') + '<br />' +
|
---|
36 | HtmlLink('Měsíční přehledy', 'monthly_overall.php') + '<br />' +
|
---|
37 | HtmlLink('Faktury za internet', 'Faktury') + '<br />' +
|
---|
38 | HtmlLink('Tarify', 'tarify.php') + '<br />' +
|
---|
39 | HtmlLink('Výpis skladových zásob', 'inventory.php') + '<br />' +
|
---|
40 | HtmlLink('Porovnání tarifů s konkurencí', 'srovnani.php') + '<br />' +
|
---|
41 | '</td><td></td></tr></table><br /><strong>Souhrn:</strong><br />Aktuální měsíční poplatek za společný internet (10240/10240 kbit/s):' +
|
---|
42 | ' <strong>15351 Kč</strong><br />Počet členů (s internetem): <strong>79 (79)</strong><br />Celková cena zařízení sítě: <strong>106335 Kč</strong><br />Celkem peněz na účtech: <strong>' +
|
---|
43 | '-14537 Kč</strong><br />Stanovená cena jedné kWh: <strong>3 Kč</strong><br />V připojených domácnostech celkem <strong>273</strong>' +
|
---|
44 | ' občanů ze všech <strong>600</strong> (46 %)<br />IČO: <strong>75904535</strong><br />DIČ: <strong>CZ8303255884</strong><br />Bankovní účet: <strong>218098370 / 0300</strong><br /><br /></td><td valign="top">Měsíční vyúčtování:<br />' +
|
---|
45 | '' +
|
---|
46 | '<table border="1" cellspacing="0" cellpadding="3">' +
|
---|
47 | '<tr><th>Položka</th><th>Cena [Kč]</th></tr>' +
|
---|
48 | '<tr><th colspan="2">Příjmy</th></tr><tr><td>Poplatky účastníků za internet</td><td align="right">27010</td></tr><tr><td><strong>Celkem</strong></td><td align="right"><strong>27010</strong></td></tr><tr><th colspan="2">Výdaje</th></tr>' +
|
---|
49 | '<tr><td>Internet</td><td align="right">15351</td></tr><tr><td>Správa sítě</td><td align="right">3160</td></tr><tr><td>Spotřeba energie</td><td align="right">525</td></tr><tr><td><strong>Celkem</strong></td><td align="right"><strong>' +
|
---|
50 | '19036</strong></td></tr><tr><td colspan="2"> </td></tr><tr><td><strong>Rozdíl</strong></td><td align="right"><strong>7974</strong></td></tr><tr><td>Převod do dalšího měsíce</td><td align="right">7974</td></tr></table>' +
|
---|
51 | '<br />Stav účtu sítě: 0 Kč<br /><a href="clenove.php?show=user&id=46">Výpis účtu</a><br /></td></tr></table>';
|
---|
52 | Result := Result + ShowFooter;
|
---|
53 | end;
|
---|
54 |
|
---|
55 | function FinanceClientList: string;
|
---|
56 | var
|
---|
57 | DbRows: TDbRows;
|
---|
58 | I: Integer;
|
---|
59 | TotalDevice: Integer;
|
---|
60 | TotalMonth: Integer;
|
---|
61 | TotalCash: Integer;
|
---|
62 | Monthly: string;
|
---|
63 | CurrentTariffName: string;
|
---|
64 | NextTariffName: string;
|
---|
65 | Member: TMember;
|
---|
66 | Cash: string;
|
---|
67 | Finance: TFinance;
|
---|
68 | begin
|
---|
69 | Finance := TFinance.Create;
|
---|
70 | Member := TMember.Create;
|
---|
71 | Result := ShowHeader('<strong>ZděchovNET</strong> - komunitní počítačová síť', 'Finance');
|
---|
72 | Result := Result + 'Seznam účastníků:<br />' +
|
---|
73 | '<table style="font-size: smaller;" border="1" cellspacing="0" cellpadding="3">' +
|
---|
74 | '<tr><th>Jméno</th>';
|
---|
75 | Result := Result + '<th>Měsíční poplatek [Kč]</th><th>Stav účtu [Kč]</th><th>Běžící tarif</th><th>Příští tarif</th><th>Poznámky</th></tr>';
|
---|
76 | TotalDevice := 0;
|
---|
77 | TotalMonth := 0;
|
---|
78 | TotalCash := 0;
|
---|
79 | DbRows := Database.Query('SELECT *, CONCAT(users.second_name, " ", users.first_name) as Fullname, ((SELECT COALESCE(SUM(Value), 0) FROM FinanceCashFlow WHERE Subject=users.id) + ' +
|
---|
80 | '(SELECT COALESCE(SUM(-Value), 0) FROM FinanceClaimsLiabilities WHERE Subject=users.id)) as Cash FROM users WHERE role=2 ORDER BY fullname');
|
---|
81 | for I := 0 to DbRows.Count - 1 do begin
|
---|
82 | Member.LoadFromDbRecord(DbRows[I]);
|
---|
83 | Monthly := IntToStr(Member.Monthly - Member.Plus);
|
---|
84 | if not Member.Hardware then Monthly := '(trvale nepřipojen) ' + IntToStr(-Member.Plus)
|
---|
85 | else begin
|
---|
86 | if not Member.Overheads then Monthly := '(dočasně nepřipojen) ' + Monthly
|
---|
87 | else begin
|
---|
88 | if not Member.Inet then Monthly := '(bez internetu) ' + Monthly
|
---|
89 | else Monthly := Monthly;
|
---|
90 | end;
|
---|
91 | end;
|
---|
92 | TotalCash := TotalCash + Member.Cash;
|
---|
93 | if Member.Cash < 0 then Cash := '<span style="color: red;">' + IntToStr(Member.Cash) + '</span>'
|
---|
94 | else Cash := IntToStr(Member.Cash);
|
---|
95 | CurrentTariffName := TTariff(Finance.TariffList[StrToInt(DbRows[I].Values['inet_tarif_now'])]).Name;
|
---|
96 | NextTariffName := TTariff(Finance.TariffList[StrToInt(DbRows[I].Values['inet_tarif_next'])]).Name;
|
---|
97 | Result := Result + '<tr><td><a href="?show=user&id=' + IntToStr(Member.Id) + '">' + Member.FullName + '</a></td>';
|
---|
98 | Result := Result + '<td align="right">' + Monthly + '</td><td align="right">' + Cash + '</td><td align="center">' + CurrentTariffName + '</td><td align="center">' + NextTariffName + '</td><td>' + Member.Notice + ' </td></tr>';
|
---|
99 | TotalDevice := TotalDevice + Member.NetworkDevice;
|
---|
100 | TotalMonth := TotalMonth + (Member.Monthly - Member.Plus);
|
---|
101 | end;
|
---|
102 | Result := Result + '<tr><td><strong>Celkem</strong></td>';
|
---|
103 | Result := Result + '<td align="right"><strong>' + IntToStr(TotalMonth) + '</strong></td><td align="right"><strong>' + IntToStr(TotalCash) + '</strong></td><td align="right"> </td><td align="right"> </td><td align="right"> </td></tr>' +
|
---|
104 | '</table>';
|
---|
105 | Result := Result + ShowFooter;
|
---|
106 | Member.Free;
|
---|
107 | Finance.Free;
|
---|
108 | end;
|
---|
109 |
|
---|
110 | function Test: string;
|
---|
111 | var
|
---|
112 | Base: TBaseObject;
|
---|
113 | begin
|
---|
114 | Result := ShowHeader('<strong>ZděchovNET</strong> - komunitní počítačová síť', 'Finance');
|
---|
115 | Base := TBaseObject.Create(nil);
|
---|
116 | Base.Database := TDatabase.Create;
|
---|
117 | Base.Database.Hostname := DatabaseHostname;
|
---|
118 | Base.Database.Database := 'centrala';
|
---|
119 | Base.Database.UserName := DatabaseUserName;
|
---|
120 | Base.Database.Password := DatabasePassword;
|
---|
121 | Base.Database.Connect;
|
---|
122 | //Base.Store;
|
---|
123 |
|
---|
124 | Result := Result + ShowFooter;
|
---|
125 | end;
|
---|
126 |
|
---|
127 | { TBaseObject }
|
---|
128 |
|
---|
129 | begin
|
---|
130 | RegisterPage('finance', @FinanceOverviewPage);
|
---|
131 | RegisterPage('finance-clenove', @FinanceClientList);
|
---|
132 | RegisterPage('test', @Test);
|
---|
133 | end.
|
---|