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

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

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