1
revision_act.php in web/include/reports – MultiMag

source: web/include/reports/revision_act.php @ 339a669

Last change on this file since 339a669 was 339a669, checked in by Blacklight <blacklight@…>, 3 years ago
  • УПД в CSV
  • Экспериментальный новый редактор шапки документов
  • Property mode set to 100644
File size: 23.9 KB
Line 
1<?php
2
3//      MultiMag v0.2 - Complex sales system
4//
5//      Copyright (C) 2005-2018, BlackLight, TND Team, http://tndproject.org
6//
7//      This program is free software: you can redistribute it and/or modify
8//      it under the terms of the GNU Affero General Public License as
9//      published by the Free Software Foundation, either version 3 of the
10//      License, or (at your option) any later version.
11//
12//      This program is distributed in the hope that it will be useful,
13//      but WITHOUT ANY WARRANTY; without even the implied warranty of
14//      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15//      GNU Affero General Public License for more details.
16//
17//      You should have received a copy of the GNU Affero General Public License
18//      along with this program.  If not, see <http://www.gnu.org/licenses/>.
19//
20/// Акт сверки
21class Report_Revision_Act extends BaseReport {
22
23    function getName($short = 0) {
24        if ($short) {
25            return "Акт сверки";
26        } else {
27            return "Акт сверки взаимных расчетов";
28        }
29    }
30
31    function Form() {
32        global $tmpl, $db;
33        $pref = \pref::getInstance();
34        $date_end = date("Y-m-d");
35        $tmpl->addContent("<h1>" . $this->getName() . "</h1>
36            <script src='/css/jquery/jquery.js' type='text/javascript'></script>
37            <script type='text/javascript' src='/css/jquery/jquery.autocomplete.js'></script>
38            <form action='' method='post'>
39            <input type='hidden' name='mode' value='revision_act'>
40            Агент-партнёр:<br>
41            <input type='hidden' name='agent_id' id='agent_id' value=''>
42            <input type='text' id='ag' name='agent_name' style='width: 400px;' value=''><br>
43            <p class='datetime'>
44            Дата от:<br><input type='text' id='dt_f' name='date_st' value='1970-01-01' maxlength='10'><br>
45            Дата до:<br><input type='text' id='dt_t' name='date_end' value='$date_end' maxlength='10'></p><br>
46            Организация:<br><select name='firm_id'>");
47        if(\acl::testAccess('firm.global', \acl::VIEW)) {
48            $tmpl->addContent("<option value='0'>--- Любая ---</option>");
49        }
50           
51        $rs = $db->query("SELECT `id`, `firm_name` FROM `doc_vars` ORDER BY `firm_name`");
52        while ($nx = $rs->fetch_row()) {
53            if ($pref->site_default_firm_id == $nx[0]) {
54                $s = ' selected';
55            } else {
56                $s = '';
57            }
58            if(\acl::testAccess([ 'firm.global', 'firm.'.$nx[0]], \acl::VIEW)) {
59                $tmpl->addContent("<option value='$nx[0]' $s>" . html_out($nx[1]) . "</option>");
60            }
61           
62        }
63        $tmpl->addContent("</select><br>
64            Подтип документа (оставьте пустым, если учитывать не требуется):<br>
65            <input type='text' name='subtype'><br>
66            <label><input type='radio' name='opt' value='html'>Выводить в виде HTML</label><br>
67            <label><input type='radio' name='opt' value='pdf' checked>Выводить в виде PDF</label><br>
68            <label><input type='radio' name='opt' value='email'>отправить по email</label><br>
69            <label><input type='checkbox' name='no_stamp' value='1'>Не ставить печать</label><br>
70            email адрес (не указывайте, чтобы взять из контактов):<br>
71            <input type='text' name='email' value=''><br>
72            <button type='submit'>Сформировать отчет</button></form>
73
74            <script type='text/javascript'>
75            initCalendar('dt_f',false);
76            initCalendar('dt_t',false);
77            $(document).ready(function(){
78                $(\"#ag\").autocomplete(\"/docs.php\", {
79                delay:300,
80                minChars:1,
81                matchSubset:1,
82                autoFill:false,
83                selectFirst:true,
84                matchContains:1,
85                cacheLength:10,
86                maxItemsToShow:15,
87                formatItem:agliFormat,
88                onItemSelect:agselectItem,
89                extraParams:{'l':'agent','mode':'srv','opt':'ac'}
90                });
91            });
92            function agliFormat (row, i, num) {
93                var result = row[0] + \"<em class='qnt'>тел. \" +
94                row[2] + \"</em> \";
95                return result;
96            }
97            function agselectItem(li) {
98                if( li == null ) var sValue = \"Ничего не выбрано!\";
99                if( !!li.extra ) var sValue = li.extra[0];
100                else var sValue = li.selectValue;
101                document.getElementById('agent_id').value=sValue;
102            }
103
104            </script>");
105    }
106
107    function Make($opt = 'html') {
108        global $tmpl, $CONFIG, $db;
109        $email = request('email');
110        $no_stamp = request('no_stamp');
111        if ($opt == 'email') {
112            $opt = 'pdf';
113            $sendmail = 1;
114        } else {
115            $sendmail = 0;
116        }
117        if ($opt == 'html') {
118            $tmpl->loadTemplate('print');
119        } else if ($opt == 'pdf') {
120            global $CONFIG;
121            $tmpl->ajax = 1;
122            $tmpl->setContent('');
123            ob_start();
124            require('fpdf/fpdf.php');
125            $pdf = new FPDF('P');
126            $pdf->Open();
127            $pdf->SetAutoPageBreak(1, 12);
128            $pdf->AddFont('Arial', '', 'arial.php');
129            $pdf->tMargin = 10;
130            $pdf->AddPage('P');
131        }
132
133        $firm_id = rcvint('firm_id');
134        $subtype = request('subtype');
135        $date_st = strtotime(rcvdate('date_st'));
136        $date_end = strtotime(rcvdate('date_end')) + 60 * 60 * 24 - 1;
137        $agent_id = rcvint('agent_id');
138        \acl::accessGuard([ 'firm.global', 'firm.'.$firm_id], \acl::VIEW);
139       
140        $subtype_sql = $db->real_escape_string($subtype);
141
142        if ($firm_id) {
143            $res = $db->query("SELECT * FROM `doc_vars` WHERE `id`='$firm_id'");
144            $firm_vars = $res->fetch_assoc();
145        }
146        if (!$date_end) {
147            $date_end = time();
148        }
149
150        $agent = new \models\agent($agent_id);
151        if (!$email) {
152            $email = $agent->getEmail();
153        }
154        if (!$email && $sendmail) {
155            throw new \Exception("Не задан email");
156        }
157        $sql_add = '';
158        if ($firm_id > 0) {
159            $sql_add.=" AND `doc_list`.`firm_id`='$firm_id'";
160        }
161        if ($subtype != '') {
162            $sql_add.=" AND `doc_list`.`subtype`='$subtype_sql'";
163        }
164
165        $res = $db->query("SELECT `doc_list`.`id`, `doc_list`.`type`, `doc_list`.`date`, `doc_list`.`sum`, `doc_list`.`altnum`, `doc_types`.`name`, `doc_list`.`firm_id`
166            FROM `doc_list`
167            LEFT JOIN `doc_types` ON `doc_types`.`id`=`doc_list`.`type`
168                WHERE `doc_list`.`agent`='$agent_id' AND `doc_list`.`ok`!='0' AND `doc_list`.`date`<='$date_end' " . $sql_add . " ORDER BY `doc_list`.`date`");
169        if ($opt == 'html') {
170            $tmpl->setContent("<h1>" . $this->getName() . "</h1>
171                <center>от " . html_out($firm_vars['firm_name']) . "<br>за период c " . date("d.m.Y", $date_st) . " по " . date("d.m.Y", $date_end) . "
172                {$agent->fullname}</center>
173                Мы, нижеподписавшиеся, директор " . html_out($firm_vars['firm_name'] . ' ' . $firm_vars['firm_director']) . "
174                c одной стороны, и " . html_out($agent->leader_post . ' ' . $agent->fullname . ' ' . $agent->leader_name) . " с другой стороны,
175                составили настоящий акт сверки в том, что состояние взаимных расчетов по
176                данным учёта следующее:<br><br>
177                <table width=100%>
178                <tr>
179                <td colspan=4 width='50%'>по данным " . html_out($firm_vars['firm_name']) . "
180                <td colspan=4 width='50%'>по данным " . html_out($agent->fullname) . "
181                <tr>
182                <th>Дата<th>Операция<th>Дебет<th>Кредит
183                <th>Дата<th>Операция<th>Дебет<th>Кредит");
184        } 
185        else if ($opt == 'pdf') {
186            $pdf->SetFont('Arial', '', 16);
187            $str = iconv('UTF-8', 'windows-1251', $this->getName());
188            $pdf->Cell(0, 6, $str, 0, 1, 'C', 0);
189
190            $str = "от {$firm_vars['firm_name']}\nза период с " . date("d.m.Y", $date_st) . " по " . date("d.m.Y", $date_end);
191            $pdf->SetFont('Arial', '', 10);
192            $str = iconv('UTF-8', 'windows-1251', $str);
193            $pdf->MultiCell(0, 4, $str, 0, 'C', 0);
194            $pdf->Ln(2);
195            $str = "Мы, нижеподписавшиеся, директор {$firm_vars['firm_name']} {$firm_vars['firm_director']} c одной стороны, и {$agent->leader_post} {$agent->fullname} {$agent->leader_name}, с другой стороны, составили настоящий акт сверки о том, что состояние взаимных расчетов по данным учёта следующее:";
196            $str = iconv('UTF-8', 'windows-1251', $str);
197            $pdf->Write(5, $str, '');
198
199            $pdf->Ln(8);
200            $y = $pdf->GetY();
201            $base_x = $pdf->GetX();
202            $pdf->SetLineWidth(0.5);
203            $t_width = array(17, 44, 17, 17, 17, 44, 17, 0);
204            $t_text = array('Дата', 'Операция', 'Дебет', 'Кредит', 'Дата', 'Операция', 'Дебет', 'Кредит');
205
206            $h_width = $t_width[0] + $t_width[1] + $t_width[2] + $t_width[3];
207            $str1 = iconv('UTF-8', 'windows-1251', "По данным {$firm_vars['firm_name']}");
208            $str2 = iconv('UTF-8', 'windows-1251', "По данным {$agent->fullname}");
209
210            $pdf->MultiCell($h_width, 5, $str1, 0, 'L', 0);
211            $max_h = $pdf->GetY() - $y;
212            $pdf->SetY($y);
213            $pdf->SetX($base_x + $h_width);
214            $pdf->MultiCell(0, 5, $str2, 0, 'L', 0);
215            if (($pdf->GetY() - $y) > $max_h) {
216                $max_h = $pdf->GetY() - $y;
217            }
218            //$pdf->Cell(0,5,$str2,1,0,'L',0);
219            $pdf->SetY($y);
220            $pdf->SetX($base_x);
221            $pdf->Cell($h_width, $max_h, '', 1, 0, 'L', 0);
222            $pdf->Cell(0, $max_h, '', 1, 0, 'L', 0);
223            $pdf->Ln();
224            foreach ($t_width as $i => $w) {
225                $str = iconv('UTF-8', 'windows-1251', $t_text[$i]);
226                $pdf->Cell($w, 5, $str, 1, 0, 'C', 0);
227            }
228            $pdf->SetLineWidth(0.2);
229            $pdf->Ln();
230            $pdf->SetFont('', '', 8);
231        }
232        $pr = $ras = $s_pr = $s_ras = 0;
233        $f_print = false;
234        while ($nxt = $res->fetch_array()) {
235            if(!\acl::testAccess([ 'firm.global', 'firm.'.$nxt['firm_id']], \acl::VIEW)) {
236                continue;
237            }
238            $deb = $kr = "";
239            if (($nxt[2] >= $date_st) && (!$f_print)) {
240                $f_print = true;
241                if ($pr > $ras) {
242                    $pr-=$ras;
243                    $ras = '';
244                } else if ($pr < $ras) {
245                    $ras-=$pr;
246                    $pr = '';
247                } else {
248                    $pr = $ras = '';
249                }
250                if ($pr) {
251                    $pr = sprintf("%01.2f", $pr);
252                }
253                if ($ras) {
254                    $ras = sprintf("%01.2f", $ras);
255                }
256
257                if ($opt == 'html') {
258                    $tmpl->addContent("<tr><td colspan=2>Сальдо на начало периода<td>$ras<td>$pr<td><td><td><td>");
259                } else if ($opt == 'pdf') {
260                    $str = iconv('UTF-8', 'windows-1251', "Сальдо на начало периода");
261                    $pdf->Cell($t_width[0] + $t_width[1], 4, $str, 1, 0, 'L', 0);
262                    $pdf->Cell($t_width[2], 4, $ras, 1, 0, 'R', 0);
263                    $pdf->Cell($t_width[3], 4, $pr, 1, 0, 'R', 0);
264                    $pdf->Cell($t_width[4] + $t_width[5], 4, '', 1, 0, 'L', 0);
265                    $pdf->Cell($t_width[6], 4, '', 1, 0, 'L', 0);
266                    $pdf->Cell($t_width[7], 4, '', 1, 0, 'L', 0);
267                    $pdf->Ln();
268                }
269                $s_pr = $pr;
270                $s_ras = $ras;
271                $pr = $ras = 0;
272            }
273
274            if ($nxt[1] == 1) {
275                $pr+=$nxt[3];
276                $kr = $nxt[3];
277            } else if ($nxt[1] == 2) {
278                $ras+=$nxt[3];
279                $deb = $nxt[3];
280            } else if ($nxt[1] == 4) {
281                $pr+=$nxt[3];
282                $kr = $nxt[3];
283            } else if ($nxt[1] == 5) {
284                $ras+=$nxt[3];
285                $deb = $nxt[3];
286            } else if ($nxt[1] == 6) {
287                $pr+=$nxt[3];
288                $kr = $nxt[3];
289            } else if ($nxt[1] == 7) {
290                $ras+=$nxt[3];
291                $deb = $nxt[3];
292            } else if ($nxt[1] == 18) {
293                if ($nxt[3] > 0) {
294                    $ras+=$nxt[3];
295                    $deb = $nxt[3];
296                } else {
297                    $pr+=abs($nxt[3]);
298                    $kr = abs($nxt[3]);
299                }
300            } else {
301                continue;
302            }
303
304            if ($f_print) {
305                if (!$nxt[4]) {
306                    $nxt[4] = $nxt[0];
307                }
308                if ($deb) {
309                    $deb = sprintf("%01.2f", $deb);
310                }
311                if ($kr) {
312                    $kr = sprintf("%01.2f", $kr);
313                }
314                $dt = date("d.m.Y", $nxt[2]);
315
316                if ($opt == 'html') {
317                    $tmpl->addContent("<tr><td>$dt<td>$nxt[5] N$nxt[4]<td>$deb<td>$kr<td><td><td><td>");
318                }
319                else if ($opt == 'pdf') {
320                    $str = iconv('UTF-8', 'windows-1251', "$nxt[5] N$nxt[4]");
321                    $pdf->Cell($t_width[0], 4, $dt, 1, 0, 'L', 0);
322                    $pdf->Cell($t_width[1], 4, $str, 1, 0, 'L', 0);
323                    $pdf->Cell($t_width[2], 4, $deb, 1, 0, 'R', 0);
324                    $pdf->Cell($t_width[3], 4, $kr, 1, 0, 'R', 0);
325                    $pdf->Cell($t_width[4], 4, '', 1, 0, 'L', 0);
326                    $pdf->Cell($t_width[5], 4, '', 1, 0, 'L', 0);
327                    $pdf->Cell($t_width[6], 4, '', 1, 0, 'L', 0);
328                    $pdf->Cell($t_width[7], 4, '', 1, 0, 'L', 0);
329                    $pdf->Ln();
330                }
331            }
332        }
333
334        $pr = sprintf("%01.2f", $pr);
335        $ras = sprintf("%01.2f", $ras);
336
337        if ($opt == 'html') {
338            $tmpl->addContent("<tr><td colspan=2>Обороты за период<td>$ras<td>$pr<td><td><td><td>");
339        } else if ($opt == 'pdf') {
340            $str = iconv('UTF-8', 'windows-1251', "Обороты за период");
341            $pdf->Cell($t_width[0] + $t_width[1], 4, $str, 1, 0, 'L', 0);
342            $pdf->Cell($t_width[2], 4, $ras, 1, 0, 'R', 0);
343            $pdf->Cell($t_width[3], 4, $pr, 1, 0, 'R', 0);
344            $pdf->Cell($t_width[4] + $t_width[5], 4, '', 1, 0, 'L', 0);
345            $pdf->Cell($t_width[6], 4, '', 1, 0, 'L', 0);
346            $pdf->Cell($t_width[7], 4, '', 1, 0, 'L', 0);
347            $pdf->Ln();
348        }
349
350        $pr += $s_pr;
351        $ras += $s_ras;
352
353        $razn = round($pr - $ras, 2);
354        $razn_p = abs($razn);
355        $razn_text = num2str($razn_p, 'rub', 2);
356        $razn_p = number_format($razn_p, 2, '.', ' ');
357
358        if ($pr > $ras) {
359            $pr-=$ras;
360            $ras = '';
361        } else if ($pr < $ras) {
362            $ras-=$pr;
363            $pr = '';
364        } else {
365            $pr = $ras = '';
366        }
367        if ($pr) {
368            $pr = sprintf("%01.2f", $pr);
369        }
370        if ($ras) {
371            $ras = sprintf("%01.2f", $ras);
372        }
373
374        if ($opt == 'html') {
375            $tmpl->addContent("<tr><td colspan=2>Сальдо на конец периода<td>$ras<td>$pr<td colspan=4>
376                <tr><td colspan=4>По данным {$firm_vars['firm_name']} на " . date("d.m.Y", $date_end) . "<td colspan=4>
377                <tr><td colspan=4>");
378            if ($razn > 0) {
379                $tmpl->addContent("задолженность в пользу " . html_out($agent->fullname) . " $razn_p руб.");
380            } else if ($razn < 0) {
381                $tmpl->addContent("задолженность в пользу " . html_out($firm_vars['firm_name']) . " $razn_p руб.");
382            } else {
383                $tmpl->addContent("переплат и задолженностей нет!");
384            }
385            if($razn) {
386                $str = "В результате сверки выявлено расхождение информации о состоянии расчётов в размере {$razn_p} руб. ( {$razn_text} )";
387                $tmpl->addContent("<tr><td colspan=4>".html_out($str)."</td></tr>");
388            }
389            $tmpl->addContent("<td colspan=4>
390                <tr><td colspan=4>От " . $firm_vars['firm_name'] . "<br>
391                директор<br>____________________________ (" . $firm_vars['firm_director'] . ")<br><br>м.п.<br>
392                <td colspan=4>От " . html_out($agent->fullname) . "<br>
393                " . html_out($agent->leader_post) . "<br> ____________________________ (" . html_out($agent->leader_name) . ")<br><br>м.п.<br>
394                </table>");
395        }
396        else if ($opt == 'pdf') {
397            $str = iconv('UTF-8', 'windows-1251', "Сальдо на конец периода");
398            $pdf->Cell($t_width[0] + $t_width[1], 4, $str, 1, 0, 'L', 0);
399            $pdf->Cell($t_width[2], 4, $ras, 1, 0, 'L', 0);
400            $pdf->Cell($t_width[3], 4, $pr, 1, 0, 'L', 0);
401            $pdf->Cell($t_width[4] + $t_width[5], 4, '', 1, 0, 'L', 0);
402            $pdf->Cell($t_width[6], 4, '', 1, 0, 'L', 0);
403            $pdf->Cell($t_width[7], 4, '', 1, 0, 'L', 0);
404            $pdf->Ln(7);
405            $str = iconv('UTF-8', 'windows-1251', "По данным {$firm_vars['firm_name']} на " . date("d.m.Y", $date_end));
406            $pdf->Write(4, $str);
407            $pdf->Ln();
408            if ($razn > 0) {
409                $str = "задолженность в пользу " . $agent->fullname . " $razn_p руб.";
410            } else if ($razn < 0) {
411                $str = "задолженность в пользу " . $firm_vars['firm_name'] . " $razn_p руб.";
412            } else {
413                $str = "переплат и задолженностей нет!";
414            }
415
416            $str = iconv('UTF-8', 'windows-1251', $str);
417            $pdf->Write(4, $str);
418            if($razn) {
419                $str = "В результате сверки выявлено расхождение информации о состоянии расчётов в размере {$razn_p} руб. ( {$razn_text} )";
420                $str = iconv('UTF-8', 'windows-1251', $str);
421                $pdf->Write(4, $str);
422            }
423           
424            $pdf->Ln(7);
425            $x = $pdf->getX() + $t_width[0] + $t_width[1] + $t_width[2] + $t_width[3];
426            $y = $pdf->getY();
427           
428            if (!$no_stamp && \cfg::get('site', 'doc_shtamp')) {
429                $shtamp_img = str_replace('{FN}', $firm_id, \cfg::get('site', 'doc_shtamp'));
430                $pdf->Image($shtamp_img, 4, $pdf->GetY(), 120);               
431            }
432            else {
433                $str = iconv('UTF-8', 'windows-1251', "От {$firm_vars['firm_name']}\n\nДиректор ____________________________ ({$firm_vars['firm_director']})\n\n           м.п.");
434                $pdf->MultiCell($t_width[0] + $t_width[1] + $t_width[2] + $t_width[3], 5, $str, 0, 'L', 0);
435            }   
436           
437            $pdf->lMargin = $x;
438            $pdf->setX($x);
439            $pdf->setY($y);
440            $str = iconv('UTF-8', 'windows-1251', "От {$agent->fullname}\n\n{$agent->leader_post}  ____________________________ ({$agent->leader_name})\n\n           м.п.");
441            $pdf->MultiCell(0, 5, $str, 0, 'L', 0);
442
443           
444
445            $pdf->Ln();
446            if (!$sendmail) {
447                $pdf->Output('rev_act.pdf', 'I');
448            } else {
449                /// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
450                $data = $pdf->Output('rev_act.pdf', 'S');
451                $pref = \pref::getInstance();
452
453                $email_message = new \email_message();
454                $email_message->default_charset = "UTF-8";
455                if ($agent->fullname) {
456                    $email_message->SetEncodedEmailHeader("To", $email, $agent->fullname);
457                } else {
458                    $email_message->SetEncodedEmailHeader("To", $email, $email);
459                }
460
461                $email_message->SetEncodedHeader("Subject", "{$pref->site_display_name} - акт сверки ({$pref->site_name})");
462
463                $res = $db->query("SELECT `worker_real_name`, `worker_phone`, `worker_email` FROM `users_worker_info` WHERE `user_id`='{$_SESSION['uid']}'");
464                if ($res->num_rows) {
465                    $doc_autor = $res->fetch_assoc();
466                } else {
467                    $doc_autor = array('worker_email' => '');
468                }
469
470                if (!$doc_autor['worker_email']) {
471                    $email_message->SetEncodedEmailHeader("From", $pref->site_email, "Почтовый робот {$pref->site_name}");
472                    $email_message->SetHeader("Sender", $pref->site_email);
473                    $text_message = "Здравствуйте, {$agent->fullname}!\nВо вложении находится заказанный Вами документ (акт сверки) от {$pref->site_display_name} ({$pref->site_name})\n\n"
474                        . "Сообщение сгенерировано автоматически, отвечать на него не нужно!\n"
475                        . "Для переписки используйте адрес, указанный в контактной информации на сайте http://{$pref->site_name}!";
476                } else {
477                    $email_message->SetEncodedEmailHeader("From", $doc_autor['worker_email'], $doc_autor['worker_real_name']);
478                    $email_message->SetHeader("Sender", $doc_autor['worker_email']);
479                    $text_message = "Здравствуйте, {$agent->fullname}!\nВо вложении находится заказанный Вами документ (акт сверки) от {$pref->site_name}\n\n"
480                        . "Ответственный сотрудник: {$doc_autor['worker_real_name']}\nКонтактный телефон: {$doc_autor['worker_phone']}\n"
481                        . "Электронная почта (e-mail): {$doc_autor['worker_email']}";
482                    $text_message.="\nОтправитель: {$_SESSION['name']}";
483                }
484                $email_message->AddQuotedPrintableTextPart($text_message);
485
486                $text_attachment = array(
487                    "Data" => $data,
488                    "Name" => 'rev_act.pdf',
489                    "Content-Type" => "automatic/name",
490                    "Disposition" => "attachment"
491                );
492                $email_message->AddFilePart($text_attachment);
493
494                $error = $email_message->Send();
495
496                if (strcmp($error, "")) {
497                    throw new Exception($error);
498                }
499                $tmpl->ajax = 0;
500                $tmpl->msg("Документ отправлен по адреск email: ".html_out($email), "ok");
501            }
502        }
503    }
504   
505    /**  Добавить изображение с печатью и подписью
506     * @param $firm_id integer ID организации
507     */
508    protected function addSignAndStampImage($firm_id) {
509        if($firm_id == 0) {
510            throw new \OutOfBoundsException('ID организации не задан');
511        }
512       
513    }
514
515}
Note: See TracBrowser for help on using the repository browser.