Multimag  0.2.992
torg12.php
См. документацию.
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 
22 
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 
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 
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 }
num2str($L, $ed='rub', $sot=2)
Definition: doc.core.php:135
$res
Definition: fixer.php:178
$i
Definition: images.php:25
addPage($orientation= '')
Добавить страницу с техническим заголовком
controlPageBreak($offset=20, $orientation= '')
Абстрактный класс печатной формы
makeDPFItem($name, $post, $fio, $step=4, $microstep=2)
Definition: torg12.php:78
$y
Definition: images.php:28
$firm_vars
Definition: get_yml.php:30
$str
Definition: c_img.php:23
makeSimpleItem($name, $value, $desc, $step, $microstep)
Definition: torg12.php:68
$line
Definition: priceload.php:39
make()
Сформировать данные печатной формы
Definition: torg12.php:141
$db
makePCItem($name, $value, $nvalue, $step=4)
Definition: torg12.php:129
makeColRect($w_info, $start_y)
Definition: torg12.php:29
makeSummary($text, $w_info, $line_height, $list_cnt, $list_sumbeznaloga, $list_sum, $list_sumnaloga, $list_summass)
Вывести суммарную информацию
Definition: torg12.php:38
makeBuxItem($fio, $step=4, $microstep=2)
Definition: torg12.php:99
$sum
Definition: gpb_check.php:80
$text
Definition: gpb_check.php:72