1
torg12.php in trunk/web/include/doc/printforms/realizaciya – MultiMag

source: trunk/web/include/doc/printforms/realizaciya/torg12.php @ 963

Last change on this file since 963 was 963, checked in by blacklight, 15 months ago
  • В интерфейсе прослушивания записей разговоров добавлено использование поля fname, а так же реализована поддержка нескольких типов расширений файлов записей
  • Добавлен модуль перекодирования записей телефонных разговоров. В данный момент поддерживается только opus.
File size: 26.3 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
21namespace doc\printforms\realizaciya;
22
23class torg12 extends \doc\printforms\iPrintFormPdf {
24
25    public function getName() {
26        return "Товарная накладная ТОРГ-12";
27    }
28
29    protected function makeColRect($w_info, $start_y) {
30        $this->pdf->SetLineWidth($this->line_bold_w);
31        $this->pdf->Rect($w_info[2] + $this->pdf->lMargin, $start_y, $w_info[3] - $w_info[2], $this->pdf->GetY() - $start_y);
32        $this->pdf->Rect($w_info[4] + $this->pdf->lMargin, $start_y, $w_info[12] - $w_info[4], $this->pdf->GetY() - $start_y);
33        $this->pdf->Rect($w_info[13] + $this->pdf->lMargin, $start_y, $this->pdf->w - $this->pdf->rMargin - $this->pdf->lMargin - $w_info[13], $this->pdf->GetY() - $start_y);
34        $this->pdf->SetLineWidth($this->line_normal_w);
35    }
36   
37    /// Вывести суммарную информацию
38    protected function makeSummary($text, $w_info, $line_height, $list_cnt, $list_sumbeznaloga, $list_sum, $list_sumnaloga, $list_summass) {
39        $list_sumbeznaloga = sprintf("%01.2f", $list_sumbeznaloga);
40        if($list_sumnaloga) {
41            $list_sumnaloga = sprintf("%01.2f", $list_sumnaloga);
42        }
43        else {
44            $list_sumnaloga = '--';
45        }
46        $list_sum = sprintf("%01.2f", $list_sum);
47        $list_summass = sprintf("%01.3f", $list_summass);
48
49        $w = 0;
50        for ($i = 0; $i < 7; $i++) {
51            $w+=$w_info[$i];
52        }
53        $line_height = 3;
54        $this->pdf->CellIconv($w, $line_height, $text, 0, 0, 'R', 1);
55        $this->pdf->Cell($w_info[7], $line_height, '-', 1, 0, 'C', 1);
56        $this->pdf->Cell($w_info[8], $line_height, $list_summass, 1, 0, 'R', 1);
57        $this->pdf->Cell($w_info[9], $line_height, "$list_cnt / $list_summass", 1, 0, 'C', 1);
58
59        $this->pdf->Cell($w_info[10], $line_height, '', 1, 0, 'C', 1);
60        $this->pdf->Cell($w_info[11], $line_height, $list_sumbeznaloga, 1, 0, 'R', 1);
61        $this->pdf->Cell($w_info[12], $line_height, "-", 1, 0, 'C', 1);
62        $this->pdf->Cell($w_info[13], $line_height, $list_sumnaloga, 1, 0, 'R', 1);
63        $this->pdf->Cell($w_info[14], $line_height, $list_sum, 1, 0, 'R', 1);
64        $this->pdf->Ln();
65    }
66
67    // Вывод простого элемента блока подписей
68    protected function makeSimpleItem($name, $value, $desc, $step, $microstep) {
69        $this->pdf->SetFont('', '', 7);
70        $this->pdf->CellIconv(50, $step, $name, 0, 0, 'L', 0);
71        $this->pdf->CellIconv(0, $step, $value, 'B', 0, 'L', 0);
72        $this->pdf->SetFont('', '', 5);
73        $this->pdf->CellIconv(120, $microstep, $desc, 0, 1, 'C', 0);
74        $this->pdf->SetFont('', '', 7);
75    }
76   
77    // Вывод элемента *должность/подпись/фио*
78    protected function makeDPFItem($name, $post, $fio, $step = 4, $microstep = 2) {
79        $p1_w = array(30, 25, 2, 35, 2, 0);
80        $this->pdf->SetFont('', '', 7);
81        $this->pdf->CellIconv($p1_w[0], $step, $name, 0, 0, 'L', 0);
82        $this->pdf->CellIconv($p1_w[1], $step, $post, 'B', 0, 'C', 0);
83        $this->pdf->CellIconv($p1_w[2], $step, '', 0, 0, 'C', 0);
84        $this->pdf->CellIconv($p1_w[3], $step, '', 'B', 0, 'C', 0);
85        $this->pdf->CellIconv($p1_w[4], $step, '', 0, 0, 'С', 0);
86        $this->pdf->CellIconv($p1_w[5], $step, $fio, 'B', 1, 'C', 0);
87       
88        $this->pdf->SetFont('', '', 5);
89        $this->pdf->CellIconv($p1_w[0], $microstep, '', 0, 0, 'C', 0);
90        $this->pdf->CellIconv($p1_w[1], $microstep, '(должность)', 0, 0, 'C', 0);
91        $this->pdf->CellIconv($p1_w[2], $microstep, '', 0, 0, 'C', 0);
92        $this->pdf->CellIconv($p1_w[3], $microstep, '(подпись)', 0, 0, 'C', 0);
93        $this->pdf->CellIconv($p1_w[4], $microstep, '',0, 0, 'C', 0);
94        $this->pdf->CellIconv($p1_w[5], $microstep, '(ф.и.о.)', 0, 1, 'C', 0);
95       
96    }
97   
98    // Вывод элемента *бухгалтер/подпись/фио*
99    protected function makeBuxItem($fio, $step = 4, $microstep = 2) {
100        $p1_w = array(55, 2, 35, 2, 0);
101        $this->pdf->SetFont('', '', 7);
102        $this->pdf->CellIconv($p1_w[0], $step, 'Главный (старший) бухгалтер', 0, 0, 'L', 0);
103        $this->pdf->CellIconv($p1_w[1], $step, '', 0, 0, 'C', 0);
104        $this->pdf->CellIconv($p1_w[2], $step, '', 'B', 0, 'C', 0);
105        $this->pdf->CellIconv($p1_w[3], $step, '', 0, 0, 'С', 0);
106        $this->pdf->CellIconv($p1_w[4], $step, $fio, 'B', 1, 'C', 0);
107       
108        $this->pdf->SetFont('', '', 5);
109        $this->pdf->CellIconv($p1_w[0], $microstep, '', 0, 0, 'C', 0);
110        $this->pdf->CellIconv($p1_w[1], $microstep, '', 0, 0, 'C', 0);
111        $this->pdf->CellIconv($p1_w[2], $microstep, '(подпись)', 0, 0, 'C', 0);
112        $this->pdf->CellIconv($p1_w[3], $microstep, '',0, 0, 'C', 0);
113        $this->pdf->CellIconv($p1_w[4], $microstep, '(ф.и.о.)', 0, 1, 'C', 0);
114    }
115   
116    // Вывод элемента *место для печати*
117    protected function makeStampPlaceItem($step = 4) {
118        $p1_w = array(30, 25, 2, 35, 2, 0);
119        $this->pdf->SetFont('', '', 7);
120        $this->pdf->CellIconv($p1_w[0], $step, 'М.П.', 0, 0, 'C', 0);
121        $this->pdf->CellIconv($p1_w[1], $step, '"_____"', 0, 0, 'R', 0);
122        $this->pdf->CellIconv($p1_w[2], $step, '', 0, 0, 'C', 0);
123        $this->pdf->CellIconv($p1_w[3], $step, '', 'B', 0, 'C', 0);
124        $this->pdf->CellIconv($p1_w[4], $step, '', 0, 0, 'С', 0);
125        $this->pdf->CellIconv($p1_w[5], $step, '20___г.', 0, 1, 'L', 0);
126    }
127   
128    // Вывод элемента *пропись и цифра*
129    protected function makePCItem($name, $value, $nvalue, $step = 4) {
130        $p1_w = array(30, 64, 0);
131        $this->pdf->SetFont('', '', 7);
132        $this->pdf->CellIconv($p1_w[0], $step, $name, 0, 0, 'L', 0);
133        $this->pdf->CellIconv($p1_w[1], $step, $value, 'B', 0, 'C', 0);
134        $this->pdf->SetLineWidth($this->line_bold_w);
135        $this->pdf->CellIconv($p1_w[2], $step, $nvalue, 1, 1, 'C', 0);
136        $this->pdf->SetLineWidth($this->line_thin_w);
137    }
138
139   
140    /// Сформировать данные печатной формы
141    public function make() {
142        global $db;
143        $doc_data = $this->doc->getDocDataA();
144        $dop_data = $this->doc->getDopDataA();
145        $firm_vars = $this->doc->getFirmVarsA();
146        $res = $db->query("SELECT `name`, `bik`, `rs`, `ks` FROM `doc_kassa` WHERE `ids`='bank' AND `num`='{$doc_data['bank']}'");
147        $bank_info = $res->fetch_assoc();
148
149        $this->pdf->AddPage('L');
150        $y = $this->pdf->getY();
151        $this->addTechFooter();
152
153        $this->pdf->setY($y);
154        $this->pdf->SetFont('', '', 6);
155        $str = 'Унифицированная форма ТОРГ-12 Утверждена постановлением госкомстата России от 25.12.98 № 132';
156        $this->pdf->CellIconv(0, 4, $str, 0, 1, 'R');
157
158        // Шапка с реквизитами
159        $t2_y = $this->pdf->GetY();
160        $this->pdf->SetFont('', '', 8);
161        $str = $firm_vars['firm_gruzootpr'] . ", тел." . $firm_vars['firm_telefon'] . ", счёт " . $bank_info['rs'] . ", БИК " . $bank_info['bik'] . ", банк " . $bank_info['name'] . ", К/С {$bank_info['ks']}, адрес: {$firm_vars['firm_adres']}";
162        $this->pdf->MultiCellIconv(230, 4, $str, 0, 'L');
163        $y = $this->pdf->GetY();
164        $this->pdf->Line(10, $this->pdf->GetY(), 230, $this->pdf->GetY());
165        $this->pdf->SetFont('', '', 5);
166        $str = "грузоотправитель, адрес, номер телефона, банковские реквизиты";
167        $this->pdf->CellIconv(230, 2, $str, 0, 1, 'C');
168
169        $this->pdf->SetFont('', '', 8);
170        $this->pdf->Cell(0, 4, '', 0, 1, 'L');
171        $this->pdf->Line(10, $this->pdf->GetY(), 230, $this->pdf->GetY());
172        $this->pdf->SetFont('', '', 5);
173        $str = "структурное подразделение";
174        $this->pdf->CellIconv(220, 2, $str, 0, 1, 'C');
175
176        $gruzop_info = $db->selectRow('doc_agent', $dop_data['gruzop']);
177        $gruzop = '';
178        if ($gruzop_info) {
179            if ($gruzop_info['fullname']) {
180                $gruzop.=$gruzop_info['fullname'];
181            } else {
182                $gruzop.=$gruzop_info['name'];
183            }
184            if ($gruzop_info['adres']) {
185                $gruzop.=', адрес ' . $gruzop_info['adres'];
186            }
187            if ($gruzop_info['tel']) {
188                $gruzop.=', тел. ' . $gruzop_info['tel'];
189            }
190            if ($gruzop_info['inn']) {
191                $gruzop.=', ИНН ' . $gruzop_info['inn'];
192            }
193            if ($gruzop_info['kpp']) {
194                $gruzop.=', КПП ' . $gruzop_info['kpp'];
195            }
196            if ($gruzop_info['okpo']) {
197                $gruzop.=', ОКПО ' . $gruzop_info['okpo'];
198            }
199            if ($gruzop_info['okved']) {
200                $gruzop.=', ОКВЭД ' . $gruzop_info['okved'];
201            }
202            if ($gruzop_info['rs']) {
203                $gruzop.=', Р/С ' . $gruzop_info['rs'];
204            }
205            if ($gruzop_info['bank']) {
206                $gruzop.=', в банке ' . $gruzop_info['bank'];
207            }
208            if ($gruzop_info['bik']) {
209                $gruzop.=', БИК ' . $gruzop_info['bik'];
210            }
211            if ($gruzop_info['ks']) {
212                $gruzop.=', К/С ' . $gruzop_info['ks'];
213            }
214        }
215
216        $this->pdf->Ln(5);
217        $this->pdf->SetFont('', '', 8);
218        $str = "Грузополучатель";
219        $this->pdf->CellIconv(30, 4, $str, 0, 0, 'L');
220        $this->pdf->MultiCellIconv(190, 4, $gruzop, 0, 'L');
221        $this->pdf->Line(40, $this->pdf->GetY(), 230, $this->pdf->GetY());
222
223        $str = "Поставщик";
224        $this->pdf->CellIconv(30, 4, $str, 0, 0, 'L');
225        $str = "{$firm_vars['firm_name']}, {$firm_vars['firm_adres']}, ИНН/КПП {$firm_vars['firm_inn']}, К/С {$bank_info['ks']}, Р/С {$bank_info['rs']}, БИК {$bank_info['bik']}, в банке {$bank_info['name']}";
226        $this->pdf->MultiCellIconv(190, 4, $str, 0, 'L');
227        $this->pdf->Line(40, $this->pdf->GetY(), 230, $this->pdf->GetY());
228
229        $platelshik_info = $db->selectRow('doc_agent', $dop_data['platelshik']);
230        $platelshik = '';
231        if ($platelshik_info) {
232            if ($platelshik_info['fullname']) {
233                $platelshik.=$platelshik_info['fullname'];
234            } else {
235                $platelshik.=$platelshik_info['name'];
236            }
237            if ($platelshik_info['adres']) {
238                $platelshik.=', адрес ' . $platelshik_info['adres'];
239            }
240            if ($platelshik_info['tel']) {
241                $platelshik.=', тел. ' . $platelshik_info['tel'];
242            }
243            if ($platelshik_info['inn']) {
244                $platelshik.=', ИНН ' . $platelshik_info['inn'];
245            }
246            if ($platelshik_info['kpp']) {
247                $platelshik.=', КПП ' . $platelshik_info['kpp'];
248            }
249            if ($platelshik_info['okpo']) {
250                $platelshik.=', ОКПО ' . $platelshik_info['okpo'];
251            }
252            if ($platelshik_info['okved']) {
253                $platelshik.=', ОКВЭД ' . $platelshik_info['okved'];
254            }
255            if ($platelshik_info['rs']) {
256                $platelshik.=', Р/С ' . $platelshik_info['rs'];
257            }
258            if ($platelshik_info['bank']) {
259                $platelshik.=', в банке ' . $platelshik_info['bank'];
260            }
261            if ($platelshik_info['bik']) {
262                $platelshik.=', БИК ' . $platelshik_info['bik'];
263            }
264            if ($platelshik_info['ks']) {
265                $platelshik.=', К/С ' . $platelshik_info['ks'];
266            }
267        }
268
269        $str = "Плательщик";
270        $this->pdf->CellIconv(30, 4, $str, 0, 0, 'L');
271        $this->pdf->MultiCellIconv(190, 4, $platelshik, 0, 'L');
272        $this->pdf->Line(40, $this->pdf->GetY(), 230, $this->pdf->GetY());
273
274        $str_osn = "";
275        $res = $db->query("SELECT `doc_list`.`id`, `doc_list`.`altnum`, `doc_list`.`date`
276        FROM `doc_list`
277        WHERE `doc_list`.`agent`='{$doc_data['agent']}' AND `doc_list`.`type`='14' AND `doc_list`.`ok`>'0'
278        ORDER BY  `doc_list`.`date` DESC");
279        if ($res->num_rows) {
280            $nxt = $res->fetch_row();
281            $str_osn.="Договор N$nxt[1] от " . date("d.m.Y", $nxt[2]) . ", ";
282        }
283        if ($doc_data['p_doc']) {
284            $res = $db->query("SELECT `doc_list`.`id`, `doc_list`.`altnum`, `doc_list`.`date`, `doc_list`.`p_doc`, `doc_list`.`type` FROM `doc_list`
285                WHERE `id`={$doc_data['p_doc']}");
286            if ($res->num_rows) {
287                $nxt = $res->fetch_row();
288                if ($nxt[4] == 1) {
289                    $str_osn.="Счёт N$nxt[1] от " . date("d.m.Y", $nxt[2]) . ", ";
290                } else if ($nxt[4] == 16) {
291                    $str_osn.="Спецификация N$nxt[1] от " . date("d.m.Y", $nxt[2]) . ", ";
292                }
293                if ($nxt[3]) {
294                    $res = $db->query("SELECT `doc_list`.`id`, `doc_list`.`altnum`, `doc_list`.`date`, `doc_list`.`p_doc` FROM `doc_list`
295                                WHERE `id`={$nxt[3]} AND `doc_list`.`type`='16'");
296                    if ($res->num_rows) {
297                        $nxt = $res->fetch_row();
298                        $str_osn.="Спецификация N$nxt[1] от " . date("d.m.Y", $nxt[2]) . ", ";
299                    }
300                }
301            }
302        }
303        $str = "Основание";
304        $this->pdf->CellIconv(30, 4, $str, 0, 0, 'L');
305        $this->pdf->MultiCellIconv(190, 4, $str_osn, 0, 'L');
306        $this->pdf->Line(40, $this->pdf->GetY(), 230, $this->pdf->GetY());
307        $this->pdf->SetFont('', '', 5);
308        $str = "договор, заказ-наряд";
309        $this->pdf->CellIconv(220, 2, $str, 0, 1, 'C');
310
311        // Правый столбик шапки
312        $t3_y = $this->pdf->GetY();
313
314        $set_x = 255;
315        $width = 17;
316        $this->pdf->SetFont('', '', 7);
317        $this->pdf->SetY($t2_y);
318        $set_x = $this->pdf->w - $this->pdf->rMargin - $width;
319
320        $str = 'Коды';
321        $this->pdf->SetX($set_x);
322        $this->pdf->CellIconv($width, 4, $str, 1, 1, 'C');
323        $set_x = $this->pdf->w - $this->pdf->rMargin - $width * 2;
324
325        $tbt_y = $this->pdf->GetY();
326
327        $lines = array('Форма по ОКУД', 'по ОКПО', 'Вид деятельности по ОКДП', 'по ОКПО', 'по ОКПО', 'по ОКПО');
328        foreach ($lines as $str) {
329            $this->pdf->SetX($set_x);
330            $this->pdf->CellIconv($width, 4, $str, 0, 1, 'R');
331        }
332        $lines = array('Номер', 'Дата', 'Номер', 'Дата');
333        foreach ($lines as $str) {
334            $this->pdf->SetX($set_x);
335            $this->pdf->CellIconv($width, 4, $str, 1, 1, 'R');
336        }
337        $str = 'Вид операции';
338        $this->pdf->SetX($set_x);
339        $this->pdf->CellIconv($width, 4, $str, 0, 1, 'R');
340
341        $tbt_h = $this->pdf->GetY() - $tbt_y;
342        $set_x = $this->pdf->w - $this->pdf->rMargin - $width;
343        $this->pdf->SetY($tbt_y);
344        $this->pdf->SetX($this->pdf->w - $this->pdf->rMargin - $width);
345        $this->pdf->SetLineWidth($this->line_bold_w);
346        $this->pdf->Cell($width, $tbt_h, '', 1, 1, 'R');
347        $this->pdf->SetLineWidth($this->line_normal_w);
348
349        $this->pdf->SetY($tbt_y);
350        $lines = array('0330212', $firm_vars['firm_okpo'], '', $gruzop_info['okpo'], $firm_vars['firm_okpo'], $platelshik_info['okpo'], '', '', '', '');
351        foreach ($lines as $str) {
352            $this->pdf->SetX($set_x);
353            $this->pdf->CellIconv($width, 4, $str, 1, 1, 'C');
354        }
355
356        // Название документа
357        $this->pdf->SetY($tbt_y + 4 * 7 + 2);
358        $this->pdf->SetX($this->pdf->w - $this->pdf->rMargin - $width * 3 - 3);
359        $str = 'Транспортная накладная';
360        $this->pdf->MultiCellIconv($width + 3, 6, $str, 0, 'R');
361
362        $this->pdf->SetY($t3_y + 5);
363        $this->pdf->SetX(40);
364        $this->pdf->Cell(60, 4, '', 0, 0, 'R');
365        $str = 'Номер документа';
366        $this->pdf->CellIconv(25, 4, $str, 1, 0, 'C');
367        $str = 'Дата составления';
368        $this->pdf->CellIconv(25, 4, $str, 1, 1, 'C');
369        $this->pdf->SetX(50);
370        $this->pdf->SetLineWidth($this->line_bold_w);
371        $this->pdf->SetFont('', '', 10);
372        $str = 'ТОВАРНАЯ НАКЛАДНАЯ';
373        $this->pdf->CellIconv(50, 4, $str, 0, 0, 'C');
374        $this->pdf->SetFont('', '', 7);
375        $this->pdf->Cell(25, 4, $doc_data['altnum'], 1, 0, 'C');
376        $dt = date("d.m.Y", $doc_data['date']);
377        $this->pdf->Cell(25, 4, $dt, 1, 1, 'C');
378        $this->pdf->Ln(3);
379
380        // Шапка таблицы
381        $y = $this->pdf->GetY();
382        $t_all_offset = array();
383        $this->pdf->SetLineWidth($this->line_normal_w);
384        $t_width = array(12, 85, 29, 14, 22, 14, 19, 16, 18, 29, 19);
385        $t_ydelta = array(2, 1, 1, 3, 1, 5, 2, 5, 2, 1, 3);
386        $t_text = array(
387            'Номер по поряд- ку',
388            'Товар',
389            'Единица измерения',
390            'Вид упаковки',
391            'Количество',
392            'Масса брутто',
393            'Количе- ство (масса нетто)',
394            'Цена, руб. коп.',
395            'Сумма без учёта НДС, руб. коп',
396            'НДС',
397            'Сумма с учётом НДС, руб. коп.');
398
399        foreach ($t_width as $w) {
400            $this->pdf->Cell($w, 16, '', 1, 0, 'C', 0);
401        }
402        $this->pdf->Ln();
403        $this->pdf->Ln(0.5);
404        $this->pdf->SetFont('', '', 8);
405        $offset = 0;
406        foreach ($t_width as $i => $w) {
407            $t_all_offset[$offset] = $offset;
408            $this->pdf->SetY($y + $t_ydelta[$i] + 0.2);
409            $this->pdf->SetX($offset + $this->pdf->lMargin);
410            $this->pdf->MultiCellIconv($w, 3, $t_text[$i], 0, 'C', 0);
411            $offset+=$w;
412        }
413
414        $t2_width = array(68, 17, 15, 14, 11, 11, 15, 14);
415        $t2_start = array(1, 1, 2, 2, 4, 4, 9, 9);
416        $t2_ydelta = array(4, 4, 2, 2, 1, 3, 3, 3);
417        $t2_text = array(
418            'наименование, характеристика, сорт, артикул товара',
419            'код',
420            'наимено- вание',
421            'код по ОКЕИ',
422            'в одном месте',
423            'мест, штук',
424            'ставка %',
425            'сумма');
426        $offset = 0;
427        $c_id = 0;
428        $old_col = 0;
429        $y+=5;
430
431        foreach ($t2_width as $i => $w2) {
432            while ($c_id < $t2_start[$i]) {
433                $offset+=$t_width[$c_id++];
434            }
435
436            if ($old_col == $t2_start[$i]) {
437                $off2+=$t2_width[$i - 1];
438            } else {
439                $off2 = 0;
440            }
441            $old_col = $t2_start[$i];
442            $t_all_offset[$offset + $off2] = $offset + $off2;
443            $this->pdf->SetY($y);
444            $this->pdf->SetX($offset + $off2 + $this->pdf->lMargin);
445            $this->pdf->Cell($w2, 11, '', 1, 0, 'C', 0);
446
447            $this->pdf->SetY($y + $t2_ydelta[$i]);
448            $this->pdf->SetX($offset + $off2 + $this->pdf->lMargin);
449            $this->pdf->MultiCellIconv($w2, 3, $t2_text[$i], 0, 'C', 0);
450        }
451
452        sort($t_all_offset, SORT_NUMERIC);
453        $this->pdf->SetY($y + 11);
454        $t_all_width = array();
455        $old_offset = 0;
456        foreach ($t_all_offset as $offset) {
457            if ($offset == 0) {
458                continue;
459            }
460            $t_all_width[] = $offset - $old_offset;
461            $old_offset = $offset;
462        }
463        $t_all_width[] = 19;
464        $i = 1;
465        foreach ($t_all_width as $w) {
466            $this->pdf->Cell($w, 4, $i, 1, 0, 'C', 0);
467            $i++;
468        }
469        $this->pdf->Ln();
470       
471
472        // тело таблицы
473        $y = $this->pdf->GetY();
474        $nomenclature = $this->doc->getDocumentNomenclatureWVATandNums();
475
476        $this->pdf->SetWidths($t_all_width);
477        $font_sizes = array(0 => 7);
478        $this->pdf->SetFSizes($font_sizes);
479        $this->pdf->SetHeight(3.5);
480
481        $aligns = array('R', 'L', 'L', 'C', 'C', 'C', 'C', 'C', 'R', 'R', 'R', 'R', 'R', 'R', 'R');
482        $this->pdf->SetAligns($aligns);
483        $this->pdf->SetFillColor(255, 255, 255);
484        $i = 1;
485        $summass = $sum = $sumnaloga = $sumbeznaloga = $cnt = 0;
486        $list_summass = $list_sum = $list_sumnaloga = $list_sumbeznaloga = $list_cnt = 0;
487        foreach ($nomenclature as $line) {
488            $sumbeznaloga += $line['sum_wo_vat'];
489            $list_sumbeznaloga += $line['sum_wo_vat'];
490            $sum += $line['sum'];
491            $list_sum += $line['sum'];
492            $sumnaloga += $line['vat_s'];
493            $list_sumnaloga += $line['vat_s'];
494            $summass += $line['mass']*$line['cnt'];
495            $list_summass += $line['mass']*$line['cnt'];
496            $cnt += $line['cnt'];
497            $list_cnt += $line['cnt'];
498            if($line['vat_p']>0) {
499                $p_vat_p = $line['vat_p'].'%';
500                $vat_s_p = sprintf("%01.2f", $line['vat_s']);
501            }   else {
502                $p_vat_p = $vat_s_p = '--';
503            }
504            $row = array(
505                $i++,
506                $line['name'],
507                $line['code'],
508                $line['unit_name'],
509                $line['unit_code'],
510                '-',
511                '-',
512                '-',
513                sprintf("%01.3f", $line['mass']*$line['cnt']),
514                $line['cnt'],
515                sprintf("%01.2f", $line['price']),
516                sprintf("%01.2f", $line['sum_wo_vat']),
517                $p_vat_p,
518                $vat_s_p,
519                sprintf("%01.2f", $line['sum']),
520            );
521            $this->pdf->RowIconv($row);
522
523            if ($this->pdf->GetY() > 190) {
524                $this->makeColRect($t_all_offset, $y);
525                if($list_sumnaloga == 0) {
526                    $list_sumnaloga = 'без налога';
527                }
528                $this->makeSummary('Всего:', $t_all_width, 3.5, $list_cnt, $list_sumbeznaloga, $list_sum, $list_sumnaloga, $list_summass);
529                $this->pdf->AddPage('L');
530                $this->addTechFooter();
531                $y = $this->pdf->GetY();
532                $list_summass = $list_sum = $list_sumnaloga = 0;
533            }
534        }
535        $this->makeColRect($t_all_offset, $y);       
536        $this->makeSummary('Всего:', $t_all_width, 3.5, $list_cnt, $list_sumbeznaloga, $list_sum, $list_sumnaloga, $list_summass);
537        $this->makeSummary('Итого по накладной:', $t_all_width, 3.5, $cnt, $sumbeznaloga, $sum, $sumnaloga, $summass);
538
539        // Контроль расстояния до конца листа
540        $workspace_h = $this->pdf->h - $this->pdf->bMargin - $this->pdf->tMargin;
541        if ($workspace_h <= $this->pdf->GetY() + 61) {
542            $this->pdf->AddPage('L');
543            $this->addTechFooter();
544        }
545        $this->pdf->SetAutoPageBreak(0);
546       
547        // Подписи
548        $step = 3.5;
549        $microstep = 3;
550        $this->pdf->SetLineWidth($this->line_thin_w);
551        $lsy = $this->pdf->GetY();
552        $old_r_margin = $this->pdf->rMargin;
553        $this->pdf->rMargin = 160;
554       
555        $this->makeSimpleItem('Всего мест', '', '', $step, $microstep);
556        $this->makeSimpleItem('Приложения (паспорта, сертификаты) на ', '', '', $step, $microstep);
557        $str = "Всего отпущено " . num2str($cnt, 'sht', 0) . " наименований на сумму " . num2str($sum);
558        $this->pdf->MultiCellIconv(0, $step, $str ,0,'L',0);
559       
560        $this->makeDPFItem('Отпуск разрешил', '', '', $step, $microstep);
561        $this->makeBuxItem('', $step, $microstep);
562        $this->makeDPFItem('Отпуск груза произвёл', '', '', $step, $microstep);
563        $this->pdf->ln();
564        $this->makeStampPlaceItem($step);
565       
566        $this->pdf->SetLineWidth($this->line_bold_w);
567        $this->pdf->Line(140, $this->pdf->GetY() + 2, 140, $lsy);
568        $this->pdf->SetLineWidth($this->line_thin_w);
569        $this->pdf->rMargin = $old_r_margin;
570        $this->pdf->SetY($lsy);
571        $this->pdf->lMargin = 145;
572        $this->pdf->ln();
573       
574        $this->makePCItem('Масса груза (нетто)', '', $summass, $step);       
575        $this->makePCItem('Масса груза (брутто)', '', '', $step);
576       
577        if (isset($dop_data['dov_agent'])) {
578            $dov_data = $db->selectRow('doc_agent_dov', $dop_data['dov_agent']);
579            if ($dov_data) {
580                $dov_agn = $dov_data['surname'] . ' ' . $dov_data['name'] . ' ' . $dov_data['name2'];
581                $dov_agr = $dov_data['range'];
582            } else {
583                $dov_agn = $dov_agr = "";
584            }
585        }
586        else {
587            $dov_agn = $dov_agr = "";
588        }
589        $this->makeSimpleItem('По доверенности №', $dop_data['dov']." от ".$dop_data['dov_data'], 'кем, кому (организация, должность, фамилия и. о.)', $step, $microstep);
590        $this->makeSimpleItem('Выданной', $dov_agr.' '.$dov_agn, 'кем, кому (организация, должность, фамилия и. о.)', $step, $microstep);
591        $this->makeDPFItem('Груз принял', '', '', $step, $microstep);
592        $this->makeDPFItem('Груз получил грузополучатель', '', '', $step, $microstep);
593        $this->makeStampPlaceItem($step);
594    }
595
596}
Note: See TracBrowser for help on using the repository browser.