1C-Bitrix 25.700.0
Загрузка...
Поиск...
Не найдено
template_pdf.php
См. документацию.
1<?
2if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED !== true)
3 die();
4
6 die();
7
8if ($_REQUEST['BLANK'] == 'Y')
9 $blank = true;
11$pdf = new CSalePdf('P', 'pt', 'A4');
12
13if ($params['BILLDE_BACKGROUND'])
14{
15 $pdf->SetBackground(
16 $params['BILLDE_BACKGROUND'],
17 $params['BILLDE_BACKGROUND_STYLE']
18 );
19}
20
21$pageWidth = $pdf->GetPageWidth();
22$pageHeight = $pdf->GetPageHeight();
23
24$pdf->AddFont('Font', '', 'pt_sans-regular.ttf', true);
25$pdf->AddFont('Font', 'B', 'pt_sans-bold.ttf', true);
26
27$fontFamily = 'Font';
28$fontSize = 10.5;
29
31 'top' => intval($params['BILLDE_MARGIN_TOP'] ?: 15) * 72/25.4,
32 'right' => intval($params['BILLDE_MARGIN_RIGHT'] ?: 15) * 72/25.4,
33 'bottom' => intval($params['BILLDE_MARGIN_BOTTOM'] ?: 15) * 72/25.4,
34 'left' => intval($params['BILLDE_MARGIN_LEFT'] ?: 20) * 72/25.4
35);
36
37$width = $pageWidth - $margin['left'] - $margin['right'];
38
39$pdf->SetDisplayMode(100, 'continuous');
40$pdf->SetMargins($margin['left'], $margin['top'], $margin['right']);
41$pdf->SetAutoPageBreak(true, $margin['bottom']);
42
43$pdf->AddPage();
44
45$y0 = $pdf->GetY();
48
49if ($params['BILLDE_PATH_TO_LOGO'])
50{
51 list($imageHeight, $imageWidth) = $pdf->GetImageSize($params['BILLDE_PATH_TO_LOGO']);
52
53 $imgDpi = intval($params['BILLDE_LOGO_DPI']) ?: 96;
54 $imgZoom = 96 / $imgDpi;
55
56 $logoHeight = $imageHeight * $imgZoom + 5;
57 $logoWidth = $imageWidth * $imgZoom + 5;
58
59 if ($logoWidth >= $width)
60 {
61 $imgDpi = 96 * $imageWidth/($width*0.6 + 5);
62 $imgZoom = 96 / $imgDpi;
63
64 $logoHeight = $imageHeight * $imgZoom + 5;
65 $logoWidth = $imageWidth * $imgZoom + 5;
66 }
67
68 $pdf->Image($params['BILLDE_PATH_TO_LOGO'], $pdf->GetX(), $pdf->GetY(), -$imgDpi, -$imgDpi);
69}
70
71$pdf->Ln(10);
72if ($params["SELLER_COMPANY_NAME"])
73{
74 $pdf->SetFont($fontFamily, 'B', $fontSize);
75 $pdf->SetX($pdf->GetX() + $logoWidth);
76 $pdf->MultiCell(0, 30, CSalePdf::prepareToPdf($params["SELLER_COMPANY_NAME"]), 0, 'L');
77 $pdf->Ln();
78 $pdf->SetY(max($y0 + $logoHeight, $pdf->GetY()));
79 $pdf->Ln(10);
80}
81
82$pdf->SetFont($fontFamily, 'B', $fontSize-2);
83$pdf->SetY(max($y0 + $logoHeight, $pdf->GetY()));
84
85$seller = $params["SELLER_COMPANY_NAME"];
86if ($params["SELLER_COMPANY_ADDRESS"])
87{
88 $sellerAddr = $params["SELLER_COMPANY_ADDRESS"];
89 if (is_array($sellerAddr))
90 $sellerAddr = implode(', ', $sellerAddr);
91 else
92 $sellerAddr = str_replace(array("\r\n", "\n", "\r"), ', ', strval($sellerAddr));
93 $seller .= ' - ';
95 $seller .= ' ';
96}
97
98if ($seller)
99{
101while ($pdf->GetStringWidth($text))
102{
103 list($string, $text) = $pdf->splitString($text, $width);
104 $pdf->Cell($pdf->GetStringWidth($string), 10, $string, 'B');
105 $pdf->Ln();
106}
107 $pdf->Ln();
108 $pdf->Ln();
109 $pdf->Ln();
110}
111
112if ($params["BUYER_PERSON_COMPANY_NAME"])
113{
114 $pdf->SetFont($fontFamily, 'B', $fontSize);
115 $pdf->Write(15, CSalePdf::prepareToPdf($params["BUYER_PERSON_COMPANY_NAME"]));
116 $pdf->Ln();
117 $pdf->SetFont($fontFamily, '', $fontSize);
118 if ($params["BUYER_PERSON_COMPANY_PAYER_NAME"])
119 {
120 $pdf->Write(15, CSalePdf::prepareToPdf($params["BUYER_PERSON_COMPANY_PAYER_NAME"]));
121 $pdf->Ln();
122 }
123 $buyerAddress = $params["BUYER_PERSON_COMPANY_ADDRESS"];
124 if($buyerAddress)
125 {
126 if(is_string($buyerAddress))
127 {
128 $buyerAddress = explode("\n", str_replace(array("\r\n", "\n", "\r"), "\n", $buyerAddress));
129 if (count($buyerAddress) === 1)
130 $buyerAddress = $buyerAddress[0];
131 }
132 if (is_array($buyerAddress))
133 {
134 if (!empty($buyerAddress))
135 {
136 foreach ($buyerAddress as $item)
137 {
138 $pdf->Write(15, CSalePdf::prepareToPdf($item));
139 $pdf->Ln();
140 }
141 unset($item);
142 }
143 }
144 else
145 {
146 $pdf->Write(15, CSalePdf::prepareToPdf($buyerAddress));
147 $pdf->Ln();
148 }
149 }
150}
151
152$pdf->Ln();
153
154if ($params['BILLDE_HEADER'])
155{
156 $pdf->SetFont($fontFamily, 'B', $fontSize * 2);
157 $pdf->Write(15, CSalePdf::prepareToPdf($params['BILLDE_HEADER']));
158
159 $pdf->Ln();
160 $pdf->Ln();
161 $pdf->Ln();
162}
163if ($params['BILLDE_HEADER_SHOW'] === 'Y')
164{
165 $pdf->SetFont($fontFamily, 'B', $fontSize);
166
167 $pdf->Cell(0.35*$width, 15, CSalePdf::prepareToPdf(sprintf(
168 $params['BILLDE_HEADER'].' Nr. %s',
169 $params["ACCOUNT_NUMBER"]
170 )));
171
172 if ($params["BUYER_PERSON_COMPANY_ID"])
173 {
174 $pdf->Cell(0.35*$width, 15, CSalePdf::prepareToPdf(sprintf(
175 'Kunden-Nr.: %s',
176 $params["BUYER_PERSON_COMPANY_ID"]
177 )));
178 }
179
180 $pdf->Cell(0, 15, CSalePdf::prepareToPdf(sprintf(
181 'Datum: %s',
182 $params["DATE_INSERT"]
183 )), 0, 0, 'R');
184 $pdf->Ln();
185
186 if ($params["DATE_PAY_BEFORE"])
187 {
188 $pdf->Cell(0, 15, CSalePdf::prepareToPdf(sprintf(
189 'Bezahlen bis: %s',
190 ConvertDateTime($params["DATE_PAY_BEFORE"], FORMAT_DATE)
191 ?: $params["DATE_PAY_BEFORE"]
192 )), 0, 0, 'R');
193 $pdf->Ln();
194 }
195
196 $pdf->SetFont($fontFamily, 'B', $fontSize-2);
197 $pdf->Write(15, CSalePdf::prepareToPdf('Bitte bei Zahlungen und Schriftverkehr angeben!'));
198
199 $pdf->Ln();
200 $pdf->Ln();
201}
202
203$pdf->SetFont($fontFamily, '', $fontSize);
204
205$columnList = array('NUMBER', 'NAME', 'QUANTITY', 'MEASURE', 'PRICE', 'VAT_RATE', 'SUM');
207foreach ($columnList as $column)
208{
209 if ($params['BILLDE_COLUMN_'.$column.'_SHOW'] == 'Y')
210 {
211 $arCols[$column] = array(
212 'NAME' => CSalePdf::prepareToPdf($params['BILLDE_COLUMN_'.$column.'_TITLE']),
213 'SORT' => $params['BILLDE_COLUMN_'.$column.'_SORT']
214 );
215 }
216}
217if ($params['USER_COLUMNS'])
218{
219 $columnList = array_merge($columnList, array_keys($params['USER_COLUMNS']));
220 foreach ($params['USER_COLUMNS'] as $id => $val)
221 {
222 $arCols[$id] = array(
223 'NAME' => CSalePdf::prepareToPdf($val['NAME']),
224 'SORT' => $val['SORT']
225 );
226 }
227}
228
229uasort($arCols, function ($a, $b) {return ($a['SORT'] < $b['SORT']) ? -1 : 1;});
230
231$arColumnKeys = array_keys($arCols);
233
234if ($params['BASKET_ITEMS'])
235{
236 $arCells = array();
237 $arProps = array();
238
239 $n = 0;
240 $sum = 0.00;
241 $vat = 0;
242 $vats = array();
243
244 foreach ($params['BASKET_ITEMS'] as $basketItem)
245 {
246 // @TODO: replace with real vatless price
247 if ($basketItem['IS_VAT_IN_PRICE'])
248 $vatLessPrice = roundEx($basketItem['PRICE'] / (1 + $basketItem['VAT_RATE']), SALE_VALUE_PRECISION);
249 else
250 $vatLessPrice = $basketItem['PRICE'];
251
252 $productName = $basketItem['NAME'];
253 if ($productName == "OrderDelivery")
254 $productName = "Schifffahrt";
255 else if ($productName == "OrderDiscount")
256 $productName = "Rabatt";
257
258 $arCells[++$n] = array();
259 foreach ($arCols as $columnId => $cols)
260 {
261 $data = null;
262
263 switch ($columnId)
264 {
265 case 'NUMBER':
267 $arCols[$columnId]['IS_DIGIT'] = true;
268 break;
269 case 'NAME':
270 $data = CSalePdf::prepareToPdf($productName);
271 break;
272 case 'QUANTITY':
273 $data = CSalePdf::prepareToPdf(roundEx($basketItem['QUANTITY'], SALE_VALUE_PRECISION));
274 $arCols[$columnId]['IS_DIGIT'] = true;
275 break;
276 case 'MEASURE':
277 $data = CSalePdf::prepareToPdf($basketItem["MEASURE_NAME"] ? $basketItem["MEASURE_NAME"] : 'St.');
278 $arCols[$columnId]['IS_DIGIT'] = true;
279 break;
280 case 'PRICE':
281 $data = CSalePdf::prepareToPdf(SaleFormatCurrency($vatLessPrice, $basketItem['CURRENCY'], false));
282 $arCols[$columnId]['IS_DIGIT'] = true;
283 break;
284 case 'VAT_RATE':
285 $data = CSalePdf::prepareToPdf(roundEx($basketItem['VAT_RATE']*100, SALE_VALUE_PRECISION)."%");
286 $arCols[$columnId]['IS_DIGIT'] = true;
287 break;
288 case 'SUM':
289 $data = CSalePdf::prepareToPdf(SaleFormatCurrency($vatLessPrice * $basketItem['QUANTITY'], $basketItem['CURRENCY'], false));
290 $arCols[$columnId]['IS_DIGIT'] = true;
291 break;
292 default :
293 if (preg_match('/[^0-9 ,\.]/', $basketItem[$columnId]) === 0)
294 {
295 if (!array_key_exists('IS_DIGIT', $arCols[$columnId]))
296 $arCols[$columnId]['IS_DIGIT'] = true;
297 }
298 else
299 {
300 $arCols[$columnId]['IS_DIGIT'] = false;
301 }
302 $data = ($basketItem[$columnId]) ? CSalePdf::prepareToPdf($basketItem[$columnId]) : '';
303 }
304 if ($data !== null)
305 $arCells[$n][$columnId] = $data;
306 }
307
308 $arProps[$n] = array();
309
310 foreach ($basketItem['PROPS'] as $basketPropertyItem)
311 {
312 if ($basketPropertyItem['CODE'] == 'CATALOG.XML_ID' || $basketPropertyItem['CODE'] == 'PRODUCT.XML_ID')
313 continue;
314 $arProps[$n][] = htmlspecialcharsbx(sprintf("%s: %s", $basketPropertyItem["NAME"], $basketPropertyItem["VALUE"]));
315 }
316
317 $sum += doubleval($vatLessPrice * $basketItem['QUANTITY']);
318 $vat = max($vat, $basketItem['VAT_RATE']);
319 if ($basketItem['VAT_RATE'] > 0)
320 {
321 if (!isset($vats[$basketItem['VAT_RATE']]))
322 $vats[$basketItem['VAT_RATE']] = 0;
323
324 if ($basketItem['IS_VAT_IN_PRICE'])
325 $vats[$basketItem['VAT_RATE']] += ($basketItem['PRICE'] - $vatLessPrice) * $basketItem['QUANTITY'];
326 else
327 $vats[$basketItem['VAT_RATE']] += ($basketItem['PRICE']*(1 + $basketItem['VAT_RATE']) - $vatLessPrice) * $basketItem['QUANTITY'];
328 }
329 }
330
331 if ($vat <= 0)
332 {
333 unset($arCols['VAT_RATE']);
335 $arColumnKeys = array_keys($arCols);
336 foreach ($arCells as $i => $cell)
337 unset($arCells[$i]['VAT_RATE']);
338 }
339
340 if ($params['DELIVERY_PRICE'] > 0)
341 {
342 $sDeliveryItem = "Schifffahrt";
343 if ($params['DELIVERY_NAME'] <> '')
344 $sDeliveryItem .= sprintf(" (%s)", $params['DELIVERY_NAME']);
345 $arCells[++$n] = array();
346 foreach ($arCols as $columnId => $caption)
347 {
348 $data = null;
349
350 switch ($columnId)
351 {
352 case 'NUMBER':
354 break;
355 case 'NAME':
356 $data = CSalePdf::prepareToPdf($sDeliveryItem);
357 break;
358 case 'QUANTITY':
360 break;
361 case 'MEASURE':
363 break;
364 case 'PRICE':
365 $data = CSalePdf::prepareToPdf(SaleFormatCurrency($params['DELIVERY_PRICE'] / (1 + $vat), $params['CURRENCY'], false));
366 break;
367 case 'VAT_RATE':
369 break;
370 case 'SUM':
371 $data = CSalePdf::prepareToPdf(SaleFormatCurrency($params['DELIVERY_PRICE'] / (1 + $vat), $params['CURRENCY'], false));
372 break;
373 default :
374 $data = '';
375 }
376 if ($data !== null)
377 $arCells[$n][$columnId] = $data;
378 }
379
380 $sum += roundEx(
381 doubleval($params['DELIVERY_PRICE'] / (1 + $vat)),
383 );
384
385 if ($vat > 0)
386 $vats[$vat] += roundEx(
387 $params['DELIVERY_PRICE'] * $vat / (1 + $vat),
389 );
390 }
391
392 $items = $n;
393 if ($params['BILLDE_TOTAL_SHOW'] === 'Y')
394 {
395 $eps = 0.0001;
396 if ($params['SUM'] - $sum > $eps)
397 {
398 $arCells[++$n] = array();
399 for ($i = 0; $i < $columnCount; $i++)
400 $arCells[$n][$arColumnKeys[$i]] = null;
401
404 }
405
406 if (!empty($vats))
407 {
408 // @TODO: remove on real vatless price implemented
409 $delta = intval(roundEx(
410 $params['SUM'] - $sum - array_sum($vats),
412 ) * pow(10, SALE_VALUE_PRECISION));
413
414 if ($delta)
415 {
416 $vatRates = array_keys($vats);
417 rsort($vatRates);
418
419 $ful = intval($delta / count($vatRates));
420 $ost = $delta % count($vatRates);
421
422 foreach ($vatRates as $vatRate)
423 {
424 $vats[$vatRate] += ($ful + $ost) / pow(10, SALE_VALUE_PRECISION);
425
426 if ($ost > 0)
427 $ost--;
428 }
429 }
430
431 foreach ($vats as $vatRate => $vatSum)
432 {
433 $arCells[++$n] = array();
434 for ($i = 0; $i < $columnCount; $i++)
435 $arCells[$n][$arColumnKeys[$i]] = null;
436
437 $arCells[$n][$arColumnKeys[$columnCount-2]] = CSalePdf::prepareToPdf(sprintf("zzgl. %s%% MwSt:", roundEx($vatRate * 100, SALE_VALUE_PRECISION)));
439 }
440 }
441 else
442 {
443 if ($params['TAXES'])
444 {
445 foreach ($params['TAXES'] as $tax)
446 {
447 $arCells[++$n] = array();
448 for ($i = 0; $i < $columnCount; $i++)
449 $arCells[$n][$arColumnKeys[$i]] = null;
450
452 "%s%s%s:",
453 ($tax["IS_IN_PRICE"] == "Y") ? "inkl." : "zzgl.",
454 sprintf(' %s%% ', roundEx($tax["VALUE"], SALE_VALUE_PRECISION)),
455 $tax["TAX_NAME"]
456 ));
457 $arCells[$n][$arColumnKeys[$columnCount-1]] = CSalePdf::prepareToPdf(SaleFormatCurrency($tax["VALUE_MONEY"], $params['CURRENCY'], false));
458 }
459 }
460 }
461
462 if ($params['SUM_PAID'] > 0)
463 {
464 $arCells[++$n] = array();
465 for ($i = 0; $i < $columnCount; $i++)
466 $arCells[$n][$arColumnKeys[$i]] = null;
467
470 }
471
472 if ($params['DISCOUNT_PRICE'])
473 {
474 $arCells[++$n] = array();
475 for ($i = 0; $i < $columnCount; $i++)
476 $arCells[$n][$arColumnKeys[$i]] = null;
477
479 $arCells[$n][$arColumnKeys[$columnCount-1]] = CSalePdf::prepareToPdf(SaleFormatCurrency($params['DISCOUNT_PRICE'], $params['CURRENCY'], false));
480 }
481
482 $arCells[++$n] = array();
483 for ($i = 0; $i < $columnCount; $i++)
484 $arCells[$n][$arColumnKeys[$i]] = null;
485
488 }
489
490 $rowsInfo = $pdf->calculateRowsWidth($arCols, $arCells, $items, $width);
491 $arRowsWidth = $rowsInfo['ROWS_WIDTH'];
492 $arRowsContentWidth = $rowsInfo['ROWS_CONTENT_WIDTH'];
493}
494$pdf->Ln();
495
496$x0 = $pdf->GetX();
497$y0 = $pdf->GetY();
498
499$k = 0;
501{
502 $newLine = false;
503 foreach ($arCols as $columnId => $column)
504 {
505 list($string, $arCols[$columnId]['NAME']) = $pdf->splitString($column['NAME'], $arRowsWidth[$columnId]);
506 if ($vat > 0 || $columnId !== 'VAT_RATE')
507 $pdf->Cell($arRowsWidth[$columnId], 20, $string, 0, 0, $k ? 'L' : 'C');
508
509 if ($arCols[$columnId]['NAME'])
510 {
511 $k++;
512 $newLine = true;
513 }
514
515 $i = array_search($columnId, $arColumnKeys);
516 ${"x".($i+1)} = $pdf->GetX();
517 }
518
519 $pdf->Ln();
520}
521while($newLine);
522
523$y5 = $pdf->GetY();
524
525$pdf->Line($x0, $y0, ${"x".$columnCount}, $y0);
526for ($i = 0; $i <= $columnCount; $i++)
527{
528 if ($vat > 0 || $arColumnKeys[$i] != 'VAT_RATE')
529 $pdf->Line(${"x$i"}, $y0, ${"x$i"}, $y5);
530}
531$pdf->Line($x0, $y5, ${'x'.$columnCount}, $y5);
532
534for ($n = 1; $n <= $rowsCnt; $n++)
535{
536 $arRowsWidth_tmp = $arRowsWidth;
537 $arRowsContentWidth_tmp = $arRowsContentWidth;
538 $accumulated = 0;
539 $accumulatedContent = 0;
540 foreach ($arCols as $columnId => $column)
541 {
542 if (is_null($arCells[$n][$columnId]))
543 {
544 $accumulated += $arRowsWidth_tmp[$columnId];
545 $arRowsWidth_tmp[$columnId] = null;
546 $accumulatedContent += $arRowsContentWidth_tmp[$columnId];
547 $arRowsContentWidth_tmp[$columnId] = null;
548 }
549 else
550 {
551 $arRowsWidth_tmp[$columnId] += $accumulated;
552 $arRowsContentWidth_tmp[$columnId] += $accumulatedContent;
553 $accumulated = 0;
554 $accumulatedContent = 0;
555 }
556 }
557
558 $x0 = $pdf->GetX();
559 $y0 = $pdf->GetY();
560
561 $pdf->SetFont($fontFamily, '', $fontSize);
562
563 $l = 0;
564 do
565 {
566 $newLine = false;
567 foreach ($arCols as $columnId => $column)
568 {
569 $string = '';
570 if (!is_null($arCells[$n][$columnId]))
571 list($string, $arCells[$n][$columnId]) = $pdf->splitString($arCells[$n][$columnId], $arRowsContentWidth_tmp[$columnId]);
572
573 $rowWidth = $arRowsWidth_tmp[$columnId];
574
575 if (in_array($columnId, array('QUANTITY', 'MEASURE', 'PRICE', 'SUM')))
576 {
577 if (!is_null($arCells[$n][$columnId]))
578 {
579 $pdf->Cell($rowWidth, 15, $string, 0, 0, 'R');
580 }
581 }
582 elseif ($columnId == 'NUMBER')
583 {
584 if (!is_null($arCells[$n][$columnId]))
585 $pdf->Cell($rowWidth, 15, ($l == 0) ? $string : '', 0, 0, 'C');
586 }
587 elseif ($columnId == 'NAME')
588 {
589 if (!is_null($arCells[$n][$columnId]))
590 $pdf->Cell($rowWidth, 15, $string, 0, 0, ($n > $items) ? 'R' : '');
591 }
592 elseif ($columnId == 'VAT_RATE')
593 {
594 if (!is_null($arCells[$n][$columnId]))
595 $pdf->Cell($rowWidth, 15, $string, 0, 0, 'R');
596 }
597 else
598 {
599 if (!is_null($arCells[$n][$columnId]))
600 {
601 $pdf->Cell($rowWidth, 15, $string, 0, 0, ($n > $items) ? 'R' : 'L');
602 }
603 }
604
605 if ($l == 0)
606 {
607 $pos = array_search($columnId, $arColumnKeys);
608 ${'x'.($pos+1)} = $pdf->GetX();
609 }
610
611 if ($arCells[$n][$columnId])
612 $newLine = true;
613 }
614
615 $pdf->Ln();
616 $l++;
617 }
618 while($newLine);
619
620 if ($params['BILLDE_COLUMN_NAME_SHOW'] == 'Y')
621 {
622 if (isset($arProps[$n]) && is_array($arProps[$n]))
623 {
624 $pdf->SetFont($fontFamily, '', $fontSize-2);
625 foreach ($arProps[$n] as $property)
626 {
627 $i = 0;
628 $line = 0;
629 foreach ($arCols as $columnId => $col)
630 {
631 $i++;
632 if ($i == $columnCount)
633 $line = 1;
634 if ($columnId == 'NAME')
635 $pdf->Cell($arRowsWidth_tmp[$columnId], 12, $property, 0, $line);
636 else
637 $pdf->Cell($arRowsWidth_tmp[$columnId], 12, '', 0, $line);
638 }
639 }
640 }
641 }
642 $y5 = $pdf->GetY();
643
644 if ($y0 > $y5)
645 $y0 = $margin['top'];
646
647 for ($i = ($n > $items) ? $columnCount - 1 : 0; $i <= $columnCount; $i++)
648 {
649 if ($vat > 0 || $arColumnKeys[$i] != 'VAT_RATE')
650 $pdf->Line(${"x$i"}, $y0, ${"x$i"}, $y5);
651 }
652
653 $pdf->Line(($n <= $items) ? $x0 : ${'x'.($columnCount-1)}, $y5, ${'x'.$columnCount}, $y5);
654}
655$pdf->Ln();
656$pdf->Ln();
657$pdf->Ln();
658
659
660$pdf->SetFont($fontFamily, 'B', $fontSize);
661
662if ($params["BILLDE_COMMENT1"] || $params["BILLDE_COMMENT2"])
663{
664 $pdf->SetFont($fontFamily, '', $fontSize);
665
666 if ($params["BILLDE_COMMENT1"])
667 {
668 $pdf->Write(15, HTMLToTxt(preg_replace(
669 array('#</div>\s*<div[^>]*>#i', '#</?div>#i'), array('<br>', '<br>'),
670 CSalePdf::prepareToPdf($params["BILLDE_COMMENT1"])
671 ), '', array(), 0));
672 $pdf->Ln();
673 $pdf->Ln();
674 }
675
676 if ($params["BILLDE_COMMENT2"])
677 {
678 $pdf->Write(15, HTMLToTxt(preg_replace(
679 array('#</div>\s*<div[^>]*>#i', '#</?div>#i'), array('<br>', '<br>'),
680 CSalePdf::prepareToPdf($params["BILLDE_COMMENT2"])
681 ), '', array(), 0));
682 $pdf->Ln();
683 $pdf->Ln();
684 }
685}
686
687$pdf->Ln();
688
689if (!$blank && $params['BILLDE_PATH_TO_STAMP'])
690{
691 list($stampHeight, $stampWidth) = $pdf->GetImageSize($params['BILLDE_PATH_TO_STAMP']);
692
693 if ($stampHeight && $stampWidth)
694 {
695 if ($stampHeight > 120 || $stampWidth > 120)
696 {
697 $ratio = 120 / max($stampHeight, $stampWidth);
698 $stampHeight = $ratio * $stampHeight;
699 $stampWidth = $ratio * $stampWidth;
700 }
701
702 $pdf->Image(
703 $params['BILLDE_PATH_TO_STAMP'],
704 $margin['left']+40, $pdf->GetY(),
705 $stampWidth, $stampHeight
706 );
707 }
708}
709
710if ($params["SELLER_COMPANY_DIRECTOR_POSITION"])
711{
712 $isDirSign = false;
713 if (!$blank && $params['SELLER_COMPANY_DIR_SIGN'])
714 {
715 list($signHeight, $signWidth) = $pdf->GetImageSize($params['SELLER_COMPANY_DIR_SIGN']);
716
717 if ($signHeight && $signWidth)
718 {
719 $ratio = min(37.5/$signHeight, 150/$signWidth);
720 $signHeight = $ratio * $signHeight;
721 $signWidth = $ratio * $signWidth;
722
723 $isDirSign = true;
724 }
725 }
726
727 $sellerDirPos = CSalePdf::prepareToPdf($params["SELLER_COMPANY_DIRECTOR_POSITION"]);
728 if ($isDirSign && $pdf->GetStringWidth($sellerDirPos) <= 160)
729 $pdf->SetY($pdf->GetY() + min($signHeight, 30) - 15);
730 $pdf->MultiCell(150, 15, $sellerDirPos, 0, 'L');
731 $pdf->SetXY($margin['left'] + 150, $pdf->GetY() - 15);
732
733 if ($isDirSign)
734 {
735 $pdf->Image(
736 $params['SELLER_COMPANY_DIR_SIGN'],
737 $pdf->GetX() + 80 - $signWidth/2, $pdf->GetY() - $signHeight + 15,
738 $signWidth, $signHeight
739 );
740 }
741
742 $x1 = $pdf->GetX();
743 $pdf->Cell(160, 15, '');
744 $x2 = $pdf->GetX();
745
746 if ($params["SELLER_COMPANY_DIRECTOR_NAME"])
747 $pdf->Write(15, CSalePdf::prepareToPdf('('.$params["SELLER_COMPANY_DIRECTOR_NAME"].')'));
748 $pdf->Ln();
749
750 $y2 = $pdf->GetY();
751 $pdf->Line($x1, $y2, $x2, $y2);
752
753 $pdf->Ln();
754}
755
756if ($params["SELLER_COMPANY_ACCOUNTANT_POSITION"])
757{
758 $isAccSign = false;
759 if (!$blank && $params['SELLER_COMPANY_ACC_SIGN'])
760 {
761 list($signHeight, $signWidth) = $pdf->GetImageSize($params['SELLER_COMPANY_ACC_SIGN']);
762
763 if ($signHeight && $signWidth)
764 {
765 $ratio = min(37.5/$signHeight, 150/$signWidth);
766 $signHeight = $ratio * $signHeight;
767 $signWidth = $ratio * $signWidth;
768
769 $isAccSign = true;
770 }
771 }
772
773 $sellerAccPos = CSalePdf::prepareToPdf($params["SELLER_COMPANY_ACCOUNTANT_POSITION"]);
774 if ($isAccSign && $pdf->GetStringWidth($sellerAccPos) <= 160)
775 $pdf->SetY($pdf->GetY() + min($signHeight, 30) - 15);
776 $pdf->MultiCell(150, 15, $sellerAccPos, 0, 'L');
777 $pdf->SetXY($margin['left'] + 150, $pdf->GetY() - 15);
778
779 if ($isAccSign)
780 {
781 $pdf->Image(
782 $params['SELLER_COMPANY_ACC_SIGN'],
783 $pdf->GetX() + 80 - $signWidth/2, $pdf->GetY() - $signHeight + 15,
784 $signWidth, $signHeight
785 );
786 }
787
788 $x1 = $pdf->GetX();
789 $pdf->Cell(($params["SELLER_COMPANY_DIRECTOR_NAME"]) ? $x2-$x1 : 160, 15, '');
790 $x2 = $pdf->GetX();
791
792 if ($params["SELLER_COMPANY_ACCOUNTANT_NAME"])
793 $pdf->Write(15, CSalePdf::prepareToPdf('('.$params["SELLER_COMPANY_ACCOUNTANT_NAME"].')'));
794 $pdf->Ln();
795
796 $y2 = $pdf->GetY();
797 $pdf->Line($x1, $y2, $x2, $y2);
798}
799
800$pdf->Ln();
801$pdf->Ln();
802$pdf->Ln();
803
804
805$pdf->SetFont($fontFamily, '', $fontSize-2);
806
807$sellerName = $params["SELLER_COMPANY_NAME"];
808$sellerAddr = $params["SELLER_COMPANY_ADDRESS"];
809if (is_array($sellerAddr))
810 $sellerAddr = implode(', ', $sellerAddr);
811else
812 $sellerAddr = str_replace(array("\r\n", "\n", "\r"), ', ', strval($sellerAddr));
813
815
816if ($sellerName)
818if ($sellerAddr)
820
821if (!empty($sellerData))
822{
824 while ($pdf->GetStringWidth($text))
825 {
826 list($string, $text) = $pdf->splitString($text, $width);
827 $pdf->Cell(0, 15, $string, 0, 0, 'C');
828 $pdf->Ln();
829 }
830}
831
832
833$sellerPhone = $params["SELLER_COMPANY_PHONE"];
834$sellerEmail = $params["SELLER_COMPANY_EMAIL"];
835
837
838if ($sellerPhone)
839 $sellerData[] = sprintf('Telefon: %s', $sellerPhone);
840if ($sellerEmail)
841 $sellerData[] = sprintf('Mail: %s', $sellerEmail);
842
843if (!empty($sellerData))
844{
846 while ($pdf->GetStringWidth($text))
847 {
848 list($string, $text) = $pdf->splitString($text, $width);
849 $pdf->Cell(0, 15, $string, 0, 0, 'C');
850 $pdf->Ln();
851 }
852}
853
854
855$bankAccNo = $params["SELLER_COMPANY_BANK_ACCOUNT"];
856$bankBlz = $params["SELLER_COMPANY_BANK_BIC"];
857$bankIban = $params["SELLER_COMPANY_BANK_IBAN"];
858$bankSwift = $params["SELLER_COMPANY_BANK_SWIFT"];
859$bank = $params["SELLER_COMPANY_BANK_NAME"];
860
862
863if ($bankAccNo)
864 $bankData[] = sprintf('Konto Nr.: %s', $bankAccNo);
865if ($bankBlz)
866 $bankData[] = sprintf('BLZ: %s', $bankBlz);
867if ($bankIban)
868 $bankData[] = sprintf('IBAN: %s', $bankIban);
869if ($bankSwift)
870 $bankData[] = sprintf('BIC/SWIFT: %s', $bankSwift);
871if ($bank)
872 $bankData[] = $bank;
873
874if (!empty($bankData))
875{
876 $text = CSalePdf::prepareToPdf(join(' - ', $bankData));
877 while ($pdf->GetStringWidth($text))
878 {
879 list($string, $text) = $pdf->splitString($text, $width);
880 $pdf->Cell(0, 15, $string, 0, 0, 'C');
881 $pdf->Ln();
882 }
883}
884
885
886$sellerEuInn = $params["SELLER_COMPANY_EU_INN"];
887$sellerInn = $params["SELLER_COMPANY_INN"];
888$sellerReg = $params["SELLER_COMPANY_REG"];
889$sellerDir = $params["SELLER_COMPANY_DIRECTOR_NAME"];
890
892
893if ($sellerEuInn)
894 $sellerData[] = sprintf('USt-IdNr.: %s', $sellerEuInn);
895if ($sellerInn)
896 $sellerData[] = sprintf('Steuernummer: %s', $sellerInn);
897if ($sellerReg)
899if ($sellerDir)
901
902if (!empty($sellerData))
903{
904 $pdf->Cell(0, 15, CSalePdf::prepareToPdf(join(' - ', $sellerData)), 0, 0, 'C');
905 $pdf->Ln();
906}
907
908
909$dest = 'I';
910if ($_REQUEST['GET_CONTENT'] == 'Y')
911 $dest = 'S';
912else if ($_REQUEST['DOWNLOAD'] == 'Y')
913 $dest = 'D';
914
915$fileName = sprintf(
916 'Rechnung Nr. %s (Datum %s).pdf',
917 str_replace(
918 array(
919 chr(0), chr(1), chr(2), chr(3), chr(4), chr(5), chr(6), chr(7), chr(8), chr(9), chr(10), chr(11),
920 chr(12), chr(13), chr(14), chr(15), chr(16), chr(17), chr(18), chr(19), chr(20), chr(21), chr(22),
921 chr(23), chr(24), chr(25), chr(26), chr(27), chr(28), chr(29), chr(30), chr(31),
922 '"', '*', '/', ':', '<', '>', '?', '\\', '|'
923 ),
924 '_',
925 strval($params["ACCOUNT_NUMBER"])
926 ),
927 ConvertDateTime($params["DATE_BILL"], 'YYYY-MM-DD')
928);
929
930$trFileName = CUtil::translit($fileName, 'de', array('max_len' => 1024, 'safe_chars' => '.', 'replace_space' => '-'));
931
932return $pdf->Output($trFileName, $dest, $fileName);
933?>
$sum
Определения checkout.php:6
Определения pdf.php:312
static isPdfAvailable()
Определения pdf.php:316
static prepareToPdf($string)
Определения pdf.php:324
$data['IS_AVAILABLE']
Определения .description.php:13
</td ></tr ></table ></td ></tr >< tr >< td class="bx-popup-label bx-width30"><?=GetMessage("PAGE_NEW_TAGS")?> array( $site)
Определения file_new.php:804
$_REQUEST["admin_mnu_menu_id"]
Определения get_menu.php:8
const FORMAT_DATE
Определения include.php:63
$l
Определения options.php:783
ConvertDateTime($datetime, $to_format=false, $from_site=false, $bSearchInSitesOnly=false)
Определения tools.php:724
roundEx($value, $prec=0)
Определения tools.php:4635
HTMLToTxt($str, $strSiteUrl="", $aDelete=[], $maxlen=70)
Определения tools.php:2587
htmlspecialcharsbx($string, $flags=ENT_COMPAT, $doubleEncode=true)
Определения tools.php:2701
$delta
Определения prolog_main_admin.php:363
if( $daysToExpire >=0 &&$daysToExpire< 60 elseif)( $daysToExpire< 0)
Определения prolog_main_admin.php:393
$fileName
Определения quickway.php:305
die
Определения quickway.php:367
$text
Определения template_pdf.php:79
$i
Определения factura.php:643
</p ></td >< td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;padding:0cm 2.0pt 0cm 2.0pt;height:9.0pt'>< p class=Normal align=center style='margin:0cm;margin-bottom:.0001pt;text-align:center;line-height:normal'>< a name=ТекстовоеПоле54 ></a ><?=($taxRate > count( $arTaxList) > 0) ? $taxRate."%"
Определения waybill.php:936
$bankData
Определения html.php:597
$pageWidth
Определения html.php:24
if( $arBasket=$dbBasket->Fetch()) if($vat > 0) $rowsCnt
Определения html.php:430
$sellerAddr
Определения html.php:558
$width
Определения html.php:68
$sellerInn
Определения html.php:618
$bankSwift
Определения html.php:594
$sellerDir
Определения html.php:620
if(!empty($sellerData)) $bankAccNo
Определения html.php:591
if(!empty($bankData)) $sellerEuInn
Определения html.php:617
$bank
Определения html.php:595
$bankBlz
Определения html.php:592
if(CSalePaySystemAction::GetParamValue('BACKGROUND', false)) $margin
Определения html.php:61
$pageHeight
Определения html.php:25
$sellerData
Определения html.php:560
$bankIban
Определения html.php:593
for($n=1; $n<=$rowsCnt; $n++) if(CSalePaySystemAction::GetParamValue("COMMENT1", false)||CSalePaySystemAction::GetParamValue("COMMENT2", false)) if(! $blank) if(CSalePaySystemAction::GetParamValue("SELLER_DIR_POS", false)) if(CSalePaySystemAction::GetParamValue("SELLER_ACC_POS", false)) $sellerName
Определения html.php:557
$sellerEmail
Определения html.php:575
$sellerReg
Определения html.php:619
if(!empty($sellerData)) $sellerPhone
Определения html.php:574
$logoWidth
Определения pdf.php:49
$y5
Определения pdf.php:464
$logoHeight
Определения pdf.php:48
if(!empty($sellerData)) $dest
Определения pdf.php:818
$fontSize
Определения pdf.php:30
$pdf
Определения pdf.php:13
$fontFamily
Определения pdf.php:29
$x0
Определения pdf.php:452
$seller
Определения pdf.php:78
$y0
Определения pdf.php:47
$arColumnKeys
Определения template.php:310
$columnList
Определения template.php:276
$vat
Определения template.php:273
$columnCount
Определения template.php:311
$arCols
Определения template.php:277
if($inWords) echo htmlspecialcharsbx(Number2Word_Rus(roundEx($totalVatSum $params['CURRENCY']
Определения template.php:799
$arCells
Определения template.php:223
$items
Определения template.php:224
else $a
Определения template.php:137
SaleFormatCurrency($fSum, $strCurrency, $OnlyValue=false, $withoutFormat=false)
Определения include.php:142
const SALE_VALUE_PRECISION
Определения include.php:46
$val
Определения options.php:1793
$y2
Определения pdf.php:144
$x2
Определения pdf.php:124
$isAccSign
Определения pdf.php:601
$trFileName
Определения template_pdf.php:929
$k
Определения template_pdf.php:567
$n
Определения update_log.php:107
$arRowsContentWidth
Определения template_pdf.php:447
$arRowsWidth
Определения template_pdf.php:446
$blank
Определения template_pdf.php:11
$vatRates
Определения yandex_detail.php:156
$x1
Определения template_pdf.php:419