1C-Bitrix 25.700.0
Загрузка...
Поиск...
Не найдено
template_pdf.php
См. документацию.
1<?
2if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED !== true)
3 die();
4
6
7$billLang = 'ua';
8Loc::loadLanguageFile(__FILE__, $billLang);
9
11 die();
12
13if ($_REQUEST['BLANK'] == 'Y')
14 $blank = true;
16$pdf = new CSalePdf('P', 'pt', 'A4');
17
18if ($params['BILLUA_BACKGROUND'])
19{
20 $pdf->SetBackground(
21 $params['BILLUA_BACKGROUND'],
22 $params['BILLUA_BACKGROUND_STYLE']
23 );
24}
25
26$pageWidth = $pdf->GetPageWidth();
27$pageHeight = $pdf->GetPageHeight();
28
29$pdf->AddFont('Font', '', 'pt_sans-regular.ttf', true);
30$pdf->AddFont('Font', 'B', 'pt_sans-bold.ttf', true);
31
32$fontFamily = 'Font';
33$fontSize = 10.5;
34
36 'top' => intval($params['BILLUA_MARGIN_TOP'] ?: 15) * 72/25.4,
37 'right' => intval($params['BILLUA_MARGIN_RIGHT'] ?: 15) * 72/25.4,
38 'bottom' => intval($params['BILLUA_MARGIN_BOTTOM'] ?: 15) * 72/25.4,
39 'left' => intval($params['BILLUA_MARGIN_LEFT'] ?: 20) * 72/25.4
40);
41
42$width = $pageWidth - $margin['left'] - $margin['right'];
43
44$pdf->SetDisplayMode(100, 'continuous');
45$pdf->SetMargins($margin['left'], $margin['top'], $margin['right']);
46$pdf->SetAutoPageBreak(true, $margin['bottom']);
47
48$pdf->AddPage();
49
50
51$pdf->SetFont($fontFamily, 'B', $fontSize);
52if($params['BILLUA_HEADER'])
53{
54 $pdf->Write(15, CSalePdf::prepareToPdf($params['BILLUA_HEADER']).CSalePdf::prepareToPdf(Loc::getMessage('SALE_HPS_BILLUA_TITLE', array('#PAYMENT_NUMBER#' => htmlspecialcharsbx($params["ACCOUNT_NUMBER"]), '#PAYMENT_DATE#' => $params["DATE_INSERT"]), $billLang)));
55 $pdf->Ln();
56 $pdf->Ln();
57}
58if ($params['BILLUA_SELLER_SHOW'] == 'Y')
59{
60 $pdf->SetFont($fontFamily, '', $fontSize);
61
62 $title = CSalePdf::prepareToPdf(Loc::getMessage('SALE_HPS_BILLUA_SELLER', null, $billLang).': ');
63 $title_width = $pdf->GetStringWidth($title);
64 $pdf->Write(15, $title);
65
66 $pdf->Write(15, CSalePdf::prepareToPdf($params["SELLER_COMPANY_NAME"]));
67 $pdf->Ln();
68
69 $pdf->Cell($title_width, 15, '');
70 $pdf->MultiCell(0, 15, CSalePdf::prepareToPdf(sprintf(
71 Loc::getMessage('SALE_HPS_BILLUA_SELLER_COMPANY_RS', null, $billLang).' %s, '.Loc::getMessage('SALE_HPS_BILLUA_SELLER_COMPANY_BANK', null, $billLang).' %s, '.Loc::getMessage('SALE_HPS_BILLUA_SELLER_COMPANY_MFO', null, $billLang).' %s',
72 $params["SELLER_COMPANY_BANK_ACCOUNT"],
73 $params["SELLER_COMPANY_BANK_NAME"],
74 $params["SELLER_COMPANY_MFO"]
75 )));
76
77 $sellerAddr = '';
78 if ($params["SELLER_COMPANY_ADDRESS"])
79 {
80 $sellerAddr = $params["SELLER_COMPANY_ADDRESS"];
81 if (is_array($sellerAddr))
82 $sellerAddr = implode(', ', $sellerAddr);
83 else
84 $sellerAddr = str_replace(array("\r\n", "\n", "\r"), ', ', strval($sellerAddr));
85 }
86
87 $string = sprintf(Loc::getMessage('SALE_HPS_BILLUA_SELLER_COMPANY_ADDRESS', null, $billLang).': %s', $sellerAddr);
88 if ($params["SELLER_COMPANY_PHONE"])
89 {
90 $string .= ', '.sprintf(Loc::getMessage('SALE_HPS_BILLUA_SELLER_COMPANY_PHONE', null, $billLang).': %s', $params["SELLER_COMPANY_PHONE"]);
91 }
92
93 $pdf->Cell($title_width, 15, '');
94 $pdf->MultiCell(0, 15, CSalePdf::prepareToPdf($string));
95
96 $pdf->Cell($title_width, 15, '');
97
99 foreach (array('EDRPOY', 'IPN', 'PDV') as $value)
100 {
101 if ($params["SELLER_COMPANY_".$value])
102 $requisiteList[] = Loc::getMessage('SALE_HPS_BILLUA_SELLER_COMPANY_'.$value, null, $billLang).': '.$params["SELLER_COMPANY_".$value];
103 }
104 $text = join(', ', $requisiteList);
105
106 $pdf->MultiCell(0, 15, CSalePdf::prepareToPdf($text));
107
108 if ($params["SELLER_COMPANY_SYS"])
109 {
110 $pdf->Cell($title_width, 15, '');
111 $pdf->Write(15, CSalePdf::prepareToPdf($params["SELLER_COMPANY_SYS"]));
112 $pdf->Ln();
113 }
114 $pdf->Ln();
115}
116
117if ($params['BILLUA_PAYER_SHOW'] === 'Y')
118{
119 $pdf->Cell($title_width, 15, CSalePdf::prepareToPdf(Loc::getMessage('SALE_HPS_BILLUA_BUYER', null, $billLang).': '));
120
121 $pdf->Write(15, CSalePdf::prepareToPdf($params["BUYER_PERSON_COMPANY_NAME"]));
122 $pdf->Ln();
123
124 $buyerPhone = $params["BUYER_PERSON_COMPANY_PHONE"];
125 $buyerFax = $params["BUYER_PERSON_COMPANY_FAX"];
126 if ($buyerPhone || $buyerFax)
127 {
128 $pdf->Cell($title_width, 15, '');
129
130 if ($buyerPhone)
131 {
132 $pdf->Write(15, CSalePdf::prepareToPdf(sprintf(Loc::getMessage('SALE_HPS_BILLUA_BUYER_PHONE', null, $billLang).': %s', $buyerPhone)));
133 if ($buyerFax)
134 $pdf->Write(15, CSalePdf::prepareToPdf(', '));
135 }
136
137 if ($buyerFax)
138 $pdf->Write(15, CSalePdf::prepareToPdf(sprintf(Loc::getMessage('SALE_HPS_BILLUA_BUYER_FAX', null, $billLang).': %s', $buyerFax)));
139
140 $pdf->Ln();
141 }
142
143 if ($params["BUYER_PERSON_COMPANY_ADDRESS"])
144 {
145 $buyerAddr = $params["BUYER_PERSON_COMPANY_ADDRESS"];
146 if (is_array($buyerAddr))
147 $buyerAddr = implode(', ', $buyerAddr);
148 else
149 $buyerAddr = str_replace(array("\r\n", "\n", "\r"), ', ', strval($buyerAddr));
150 $pdf->Cell($title_width, 15, '');
151 $pdf->Write(15, CSalePdf::prepareToPdf(sprintf(
152 Loc::getMessage('SALE_HPS_BILLUA_BUYER_ADDRESS', null, $billLang).': %s',
153 $buyerAddr
154 )));
155 $pdf->Ln();
156 }
157
158 $pdf->Ln();
159
160 if ($params["BUYER_PERSON_COMPANY_DOGOVOR"])
161 {
162 $pdf->Write(15, CSalePdf::prepareToPdf(sprintf(
163 Loc::getMessage('SALE_HPS_BILLUA_BUYER_DOGOVOR', null, $billLang).': %s',
164 $params["BUYER_PERSON_COMPANY_DOGOVOR"]
165 )));
166
167 $pdf->Ln();
168 }
169}
170$arCurFormat = CCurrencyLang::GetCurrencyFormat($params['CURRENCY']);
171$currency = trim(str_replace('#', '', $arCurFormat['FORMAT_STRING']));
172
174$columnList = array('NUMBER', 'NAME', 'QUANTITY', 'MEASURE', 'PRICE', 'VAT_RATE', 'SUM');
177foreach ($columnList as $column)
178{
179 if ($params['BILLUA_COLUMN_'.$column.'_SHOW'] == 'Y')
180 {
181 $caption = $params['BILLUA_COLUMN_'.$column.'_TITLE'];
182 if (in_array($column, array('PRICE', 'SUM')))
183 $caption .= ', '.$currency;
184
185 $arCols[$column] = array(
186 'NAME' => CSalePdf::prepareToPdf($caption),
187 'SORT' => $params['BILLUA_COLUMN_'.$column.'_SORT']
188 );
189 }
190}
191if ($params['USER_COLUMNS'])
192{
193 $columnList = array_merge($columnList, array_keys($params['USER_COLUMNS']));
194 foreach ($params['USER_COLUMNS'] as $id => $val)
195 {
196 $arCols[$id] = array(
197 'NAME' => CSalePdf::prepareToPdf($val['NAME']),
198 'SORT' => $val['SORT']
199 );
200 }
201}
202
203uasort($arCols, function ($a, $b) {return ($a['SORT'] < $b['SORT']) ? -1 : 1;});
204
205$arColumnKeys = array_keys($arCols);
207
208if ($params['BASKET_ITEMS'])
209{
210 $arCells = array();
211 $arProps = array();
212
213 $isVatInPrice = false;
214 $n = 0;
215 $sum = 0.00;
216 $vat = 0;
217
218 foreach ($params['BASKET_ITEMS'] as $basketItem)
219 {
220 $productName = $basketItem["NAME"];
221 if ($productName == "OrderDelivery")
222 $productName = Loc::getMessage('SALE_HPS_BILLUA_DELIVERY', null, $billLang);
223 else if ($productName == "OrderDiscount")
224 $productName = Loc::getMessage('SALE_HPS_BILLUA_DISCOUNT', null, $billLang);
225
226 $isVatInPrice = $basketItem['IS_VAT_IN_PRICE'];
227
228 if ($basketItem['IS_VAT_IN_PRICE'])
229 $basketItemPrice = $basketItem['PRICE'];
230 else
231 $basketItemPrice = $basketItem['PRICE']*(1 + $basketItem['VAT_RATE']);
232
233 $arCells[++$n] = array();
234 foreach ($arCols as $columnId => $col)
235 {
236 $data = null;
237
238 switch ($columnId)
239 {
240 case 'NUMBER':
242 $arCols[$columnId]['IS_DIGIT'] = true;
243 break;
244 case 'NAME':
245 $data = CSalePdf::prepareToPdf($productName);
246 break;
247 case 'QUANTITY':
248 $data = CSalePdf::prepareToPdf(roundEx($basketItem['QUANTITY'], SALE_VALUE_PRECISION));
249 $arCols[$columnId]['IS_DIGIT'] = true;
250 break;
251 case 'MEASURE':
252 $data = CSalePdf::prepareToPdf($basketItem["MEASURE_NAME"] ? $basketItem["MEASURE_NAME"] : Loc::getMessage('SALE_HPS_BILLUA_MEASHURE', null, $billLang));
253 $arCols[$columnId]['IS_DIGIT'] = true;
254 break;
255 case 'PRICE':
256 $data = CSalePdf::prepareToPdf(SaleFormatCurrency($basketItem['PRICE'], $basketItem['CURRENCY'], true));
257 $arCols[$columnId]['IS_DIGIT'] = true;
258 break;
259 case 'VAT_RATE':
260 $data = CSalePdf::prepareToPdf(roundEx($basketItem['VAT_RATE']*100, SALE_VALUE_PRECISION)."%");
261 $arCols[$columnId]['IS_DIGIT'] = true;
262 break;
263 case 'SUM':
264 $data = CSalePdf::prepareToPdf(SaleFormatCurrency($basketItemPrice * $basketItem['QUANTITY'], $basketItem['CURRENCY'], true));
265 $arCols[$columnId]['IS_DIGIT'] = true;
266 break;
267 default:
268 if (preg_match('/[^0-9 ,\.]/', $basketItem[$columnId]) === 0)
269 {
270 if (!array_key_exists('IS_DIGIT', $arCols[$columnId]))
271 $arCols[$columnId]['IS_DIGIT'] = true;
272 }
273 else
274 {
275 $arCols[$columnId]['IS_DIGIT'] = false;
276 }
277 $data = ($basketItem[$columnId]) ? CSalePdf::prepareToPdf($basketItem[$columnId]) : '';
278 }
279 if ($data !== null)
280 $arCells[$n][$columnId] = $data;
281 }
282
283 $arProps[$n] = array();
284
285 foreach ($basketItem['PROPS'] as $basketPropertyItem)
286 {
287 if ($basketPropertyItem['CODE'] == 'CATALOG.XML_ID' || $basketPropertyItem['CODE'] == 'PRODUCT.XML_ID')
288 continue;
289 $arProps[$n][] = CSalePdf::prepareToPdf(sprintf("%s: %s", $basketPropertyItem["NAME"], $basketPropertyItem["VALUE"]));
290 }
291
292 $sum += doubleval($basketItem['PRICE'] * $basketItem['QUANTITY']);
293 $vat = max($vat, $basketItem['VAT_RATE']);
294 }
295
296 if ($vat <= 0)
297 {
298 unset($arCols['VAT_RATE']);
300 $arColumnKeys = array_keys($arCols);
301 foreach ($arCells as $i => $cell)
302 unset($arCells[$i]['VAT_RATE']);
303 }
304
305 if ($vat > 0 && array_key_exists('PRICE', $arCols) && $isVatInPrice)
306 $arCols['PRICE']['NAME'] = CSalePdf::prepareToPdf($params['BILLUA_COLUMN_PRICE_TAX_TITLE'].', '.$currency);
307
308 if ($vat > 0 && array_key_exists('SUM', $arCols))
309 $arCols['SUM']['NAME'] = CSalePdf::prepareToPdf($params['BILLUA_COLUMN_SUM_TAX_TITLE'].', '.$currency);
310
311 if ($params['DELIVERY_PRICE'] > 0)
312 {
313 $sDeliveryItem = Loc::getMessage('SALE_HPS_BILLUA_DELIVERY', null, $billLang);
314 if ($params['DELVIERY_NAME'])
315 $sDeliveryItem .= sprintf(" (%s)", $params['DELVIERY_NAME']);
316
317 $arCells[++$n] = array();
318 foreach ($arCols as $columnId => $col)
319 {
320 $data = null;
321
322 switch ($columnId)
323 {
324 case 'NUMBER':
326 break;
327 case 'NAME':
328 $data = CSalePdf::prepareToPdf($sDeliveryItem);
329 break;
330 case 'QUANTITY':
332 break;
333 case 'MEASURE':
335 break;
336 case 'PRICE':
337 $data = CSalePdf::prepareToPdf(SaleFormatCurrency($params['DELIVERY_PRICE'], $params['CURRENCY'], true));
338 break;
339 case 'VAT_RATE':
341 break;
342 case 'SUM':
343 $data = CSalePdf::prepareToPdf(SaleFormatCurrency($params['DELIVERY_PRICE'], $params['CURRENCY'], true));
344 break;
345 default:
346 $data = '';
347 }
348 if ($data !== null)
349 $arCells[$n][$columnId] = $data;
350 }
351
352 $sum += doubleval($params['DELIVERY_PRICE']);
353 }
354
355 $items = $n;
356 $orderTax = 0;
357 if ($params['BILLUA_TOTAL_SHOW'] === 'Y')
358 {
359 if ($params['TAXES'])
360 {
361 foreach ($params['TAXES'] as $tax)
362 {
363 $arCells[++$n] = array();
364 for ($i = 0; $i < $columnCount; $i++)
365 $arCells[$n][$arColumnKeys[$i]] = null;
366
368 "%s%s%s:",
369 ($tax["IS_IN_PRICE"] == "Y") ? Loc::getMessage('SALE_HPS_BILLUA_IN_PRICE', null, $billLang) : "",
370 ($vat <= 0) ? $tax["TAX_NAME"] : Loc::getMessage('SALE_HPS_BILLUA_TAX', null, $billLang),
371 ($vat <= 0 && $tax["IS_PERCENT"] == "Y")
372 ? sprintf(' (%s%%)', roundEx($tax["VALUE"],SALE_VALUE_PRECISION))
373 : ""
374 ));
376 $tax["VALUE_MONEY"],
377 $params['CURRENCY'],
378 true
379 ));
380
381 $orderTax += $tax["VALUE_MONEY"];
382 }
383 }
384
385 if ($params['SUM_PAID'])
386 {
387 $arCells[++$n] = array();
388 for ($i = 0; $i < $columnCount; $i++)
389 $arCells[$n][$arColumnKeys[$i]] = null;
390
391 $arCells[$n][$arColumnKeys[$columnCount-2]] = CSalePdf::prepareToPdf(Loc::getMessage('SALE_HPS_BILLUA_PAYMENT_PAID', null, $billLang).":");
393 }
394
395 if ($params['DISCOUNT_PRICE'])
396 {
397 $arCells[++$n] = array();
398 for ($i = 0; $i < $columnCount; $i++)
399 $arCells[$n][$arColumnKeys[$i]] = null;
400
401 $arCells[$n][$arColumnKeys[$columnCount-2]] = CSalePdf::prepareToPdf(Loc::getMessage('SALE_HPS_BILLUA_DISCOUNT', null, $billLang).":");
403 }
404
405 $arCells[++$n] = array();
406 for ($i = 0; $i < $columnCount; $i++)
407 $arCells[$n][$arColumnKeys[$i]] = null;
408
409 $arCells[$n][$arColumnKeys[$columnCount-2]] = CSalePdf::prepareToPdf(Loc::getMessage('SALE_HPS_BILLUA_SUM', null, $billLang).':');
411 }
412
413 $rowsInfo = $pdf->calculateRowsWidth($arCols, $arCells, $items, $width);
414 $arRowsWidth = $rowsInfo['ROWS_WIDTH'];
415 $arRowsContentWidth = $rowsInfo['ROWS_CONTENT_WIDTH'];
416}
417$pdf->Ln();
418
419$x0 = $pdf->GetX();
420$y0 = $pdf->GetY();
421
422$k = 0;
424{
425 $newLine = false;
426 foreach ($arCols as $columnId => $column)
427 {
428 list($string, $arCols[$columnId]['NAME']) = $pdf->splitString($column['NAME'], $arRowsWidth[$columnId]);
429 if ($vat > 0 || $columnId !== 'VAT_RATE')
430 $pdf->Cell($arRowsWidth[$columnId], 20, $string, 0, 0, $k ? 'L' : 'C');
431
432 if ($arCols[$columnId]['NAME'])
433 {
434 $k++;
435 $newLine = true;
436 }
437
438 $i = array_search($columnId, $arColumnKeys);
439 ${"x".($i+1)} = $pdf->GetX();
440 }
441
442 $pdf->Ln();
443}
444while($newLine);
445
446$y5 = $pdf->GetY();
447
448$pdf->Line($x0, $y0, ${"x".$columnCount}, $y0);
449for ($i = 0; $i <= $columnCount; $i++)
450{
451 if ($vat > 0 || $arColumnKeys[$i] != 'VAT_RATE')
452 $pdf->Line(${"x$i"}, $y0, ${"x$i"}, $y5);
453}
454$pdf->Line($x0, $y5, ${'x'.$columnCount}, $y5);
455
457for ($n = 1; $n <= $rowsCnt; $n++)
458{
459 $arRowsWidth_tmp = $arRowsWidth;
460 $arRowsContentWidth_tmp = $arRowsContentWidth;
461 $accumulated = 0;
462 $accumulatedContent = 0;
463 foreach ($arCols as $columnId => $column)
464 {
465 if (is_null($arCells[$n][$columnId]))
466 {
467 $accumulated += $arRowsWidth_tmp[$columnId];
468 $arRowsWidth_tmp[$columnId] = null;
469 $accumulatedContent += $arRowsContentWidth_tmp[$columnId];
470 $arRowsContentWidth_tmp[$columnId] = null;
471 }
472 else
473 {
474 $arRowsWidth_tmp[$columnId] += $accumulated;
475 $arRowsContentWidth_tmp[$columnId] += $accumulatedContent;
476 $accumulated = 0;
477 $accumulatedContent = 0;
478 }
479 }
480
481 $x0 = $pdf->GetX();
482 $y0 = $pdf->GetY();
483
484 $pdf->SetFont($fontFamily, '', $fontSize);
485
486 $l = 0;
487 do
488 {
489 $newLine = false;
490 foreach ($arCols as $columnId => $column)
491 {
492 $string = '';
493 if (!is_null($arCells[$n][$columnId]))
494 list($string, $arCells[$n][$columnId]) = $pdf->splitString($arCells[$n][$columnId], $arRowsContentWidth_tmp[$columnId]);
495
496 $rowWidth = $arRowsWidth_tmp[$columnId];
497
498 if (in_array($columnId, array('QUANTITY', 'MEASURE', 'PRICE', 'SUM')))
499 {
500 if (!is_null($arCells[$n][$columnId]))
501 {
502 $pdf->Cell($rowWidth, 15, $string, 0, 0, 'R');
503 }
504 }
505 elseif ($columnId == 'NUMBER')
506 {
507 if (!is_null($arCells[$n][$columnId]))
508 $pdf->Cell($rowWidth, 15, ($l == 0) ? $string : '', 0, 0, 'C');
509 }
510 elseif ($columnId == 'NAME')
511 {
512 if (!is_null($arCells[$n][$columnId]))
513 $pdf->Cell($rowWidth, 15, $string, 0, 0, ($n > $items) ? 'R' : '');
514 }
515 elseif ($columnId == 'VAT_RATE')
516 {
517 if (!is_null($arCells[$n][$columnId]))
518 $pdf->Cell($rowWidth, 15, $string, 0, 0, 'R');
519 }
520 else
521 {
522 if (!is_null($arCells[$n][$columnId]))
523 {
524 $pdf->Cell($rowWidth, 15, $string, 0, 0, ($n > $items) ? 'R' : 'L');
525 }
526 }
527
528 if ($l == 0)
529 {
530 $pos = array_search($columnId, $arColumnKeys);
531 ${'x'.($pos+1)} = $pdf->GetX();
532 }
533
534 if ($arCells[$n][$columnId])
535 $newLine = true;
536 }
537
538 $pdf->Ln();
539 $l++;
540 }
541 while($newLine);
542
543 if ($params['BILLUA_COLUMN_NAME_SHOW'] == 'Y')
544 {
545 if (isset($arProps[$n]) && is_array($arProps[$n]))
546 {
547 $pdf->SetFont($fontFamily, '', $fontSize-2);
548 foreach ($arProps[$n] as $property)
549 {
550 $i = 0;
551 $line = 0;
552 foreach ($arCols as $columnId => $col)
553 {
554 $i++;
555 if ($i == $columnCount)
556 $line = 1;
557 if ($columnId == 'NAME')
558 $pdf->Cell($arRowsWidth_tmp[$columnId], 12, $property, 0, $line);
559 else
560 $pdf->Cell($arRowsWidth_tmp[$columnId], 12, '', 0, $line);
561 }
562 }
563 }
564 }
565
566 $y5 = $pdf->GetY();
567
568 if ($y0 > $y5)
569 $y0 = $margin['top'];
570 for ($i = ($n > $items) ? $columnCount - 1 : 0; $i <= $columnCount; $i++)
571 {
572 if ($vat > 0 || $arColumnKeys[$i] != 'VAT_RATE')
573 $pdf->Line(${"x$i"}, $y0, ${"x$i"}, $y5);
574 }
575
576 $pdf->Line(($n <= $items) ? $x0 : ${'x'.($columnCount-1)}, $y5, ${'x'.$columnCount}, $y5);
577}
578$pdf->Ln();
579if ($params['BILLUA_TOTAL_SHOW'] === 'Y')
580{
581 $pdf->SetFont($fontFamily, 'B', $fontSize);
582 $pdf->Write(15, CSalePdf::prepareToPdf(sprintf(
583 Loc::getMessage('SALE_HPS_BILLUA_BASKET_ITEMS_TOTAL', null, $billLang),
584 $items,
585 ($params['CURRENCY'] == "UAH")
587 $params['SUM'],
588 "Y",
589 $params['CURRENCY']
590 )
592 $params['SUM'],
593 $params['CURRENCY'],
594 false
595 )
596 )));
597 $pdf->Ln();
598
599 if ($vat > 0)
600 {
601 $pdf->Write(15, CSalePdf::prepareToPdf(sprintf(
602 Loc::getMessage('SALE_HPS_BILLUA_BASKET_ITEMS_TAX', null, $billLang),
603 ($params['CURRENCY'] == "UAH")
604 ? Number2Word_Rus($orderTax, "Y", $params['CURRENCY'])
605 : SaleFormatCurrency($orderTax, $params['CURRENCY'], false)
606 )));
607 }
608 elseif($orderTax == 0)
609 {
610 $pdf->Write(15, CSalePdf::prepareToPdf(Loc::getMessage('SALE_HPS_BILLUA_BASKET_ITEMS_WITHOUT_TAX', null, $billLang)));
611 }
612 $pdf->Ln();
613 $pdf->Ln();
614}
615if ($params["BILLUA_COMMENT1"] || $params["BILLUA_COMMENT2"])
616{
617 $pdf->Write(15, CSalePdf::prepareToPdf(Loc::getMessage('SALE_HPS_BILLUA_COMMENT', null, $billLang)));
618 $pdf->Ln();
619
620 $pdf->SetFont($fontFamily, '', $fontSize);
621
622 if ($params["BILLUA_COMMENT1"])
623 {
624 $pdf->Write(15, HTMLToTxt(preg_replace(
625 array('#</div>\s*<div[^>]*>#i', '#</?div>#i'), array('<br>', '<br>'),
626 CSalePdf::prepareToPdf($params["BILLUA_COMMENT1"])
627 ), '', array(), 0));
628 $pdf->Ln();
629 $pdf->Ln();
630 }
631
632 if ($params["BILLUA_COMMENT2"])
633 {
634 $pdf->Write(15, HTMLToTxt(preg_replace(
635 array('#</div>\s*<div[^>]*>#i', '#</?div>#i'), array('<br>', '<br>'),
636 CSalePdf::prepareToPdf($params["BILLUA_COMMENT2"])
637 ), '', array(), 0));
638 $pdf->Ln();
639 $pdf->Ln();
640 }
641}
642
643$pdf->Ln();
644if ($params['BILLUA_FOOTER_SHOW'] == 'Y')
645{
646 if ($params['BILLUA_PATH_TO_STAMP'])
647 {
648 $filePath = $pdf->GetImagePath($params['BILLUA_PATH_TO_STAMP']);
649 if ($filePath != '' && !$blank && \Bitrix\Main\IO\File::isFileExists($filePath))
650 {
651 list($stampHeight, $stampWidth) = $pdf->GetImageSize($params['BILLUA_PATH_TO_STAMP']);
652 if ($stampHeight && $stampWidth)
653 {
654 if ($stampHeight > 120 || $stampWidth > 120)
655 {
656 $ratio = 120 / max($stampHeight, $stampWidth);
657 $stampHeight = $ratio * $stampHeight;
658 $stampWidth = $ratio * $stampWidth;
659 }
660 $pdf->Image(
661 $params['BILLUA_PATH_TO_STAMP'],
662 $margin['left'] + 40, $pdf->GetY(),
663 $stampWidth, $stampHeight
664 );
665 }
666 }
667 }
668
669 $pdf->Line($pdf->GetX(), $pdf->GetY(), $pdf->GetX()+$width, $pdf->GetY());
670 $pdf->Ln();
671 $pdf->Ln();
672
673 $isAccSign = false;
674 if (!$blank && $params['SELLER_COMPANY_ACC_SIGN'])
675 {
676 list($signHeight, $signWidth) = $pdf->GetImageSize($params['SELLER_COMPANY_ACC_SIGN']);
677
678 if ($signHeight && $signWidth)
679 {
680 $ratio = min(37.5/$signHeight, 150/$signWidth);
681 $signHeight = $ratio * $signHeight;
682 $signWidth = $ratio * $signWidth;
683
684 $isAccSign = true;
685 }
686 }
687
688 $pdf->SetFont($fontFamily, 'B', $fontSize);
689 $pdf->Write(15, CSalePdf::prepareToPdf(Loc::getMessage('SALE_HPS_BILLUA_WRITER', null, $billLang).': '));
690
691 if ($isAccSign)
692 {
693 $pdf->Image(
694 $params['SELLER_COMPANY_ACC_SIGN'],
695 $pdf->GetX() + 80 - $signWidth/2, $pdf->GetY() - $signHeight + 15,
696 $signWidth, $signHeight
697 );
698 }
699
700 $pdf->SetFont($fontFamily, '', $fontSize);
701 $pdf->Cell(160, 15, '', 'B', 0, 'C');
702 if ($params["SELLER_COMPANY_ACCOUNTANT_NAME"])
703 $pdf->Write(15, CSalePdf::prepareToPdf($params["SELLER_COMPANY_ACCOUNTANT_NAME"]));
704
705 $pdf->SetX(max($pdf->GetX()+20, $margin['left']+3*$width/5));
706 if ($params["SELLER_COMPANY_ACCOUNTANT_POSITION"])
707 {
708 $pdf->SetFont($fontFamily, 'B', $fontSize);
709 $pdf->Write(15, CSalePdf::prepareToPdf(Loc::getMessage('SALE_HPS_BILLUA_ACC_POSITION', null, $billLang).': '));
710
711 $pdf->SetFont($fontFamily, '', $fontSize);
712 $pdf->Cell(0, 15, CSalePdf::prepareToPdf($params["SELLER_COMPANY_ACCOUNTANT_POSITION"]), 'B', 0, 'C');
713 }
714 $pdf->Ln();
715 $pdf->Ln();
716 $pdf->Ln();
717}
718if ($params["DATE_PAY_BEFORE"])
719{
720 $pdf->SetFont($fontFamily, 'B', $fontSize);
721 $pdf->Cell(0, 15, CSalePdf::prepareToPdf(sprintf(
722 Loc::getMessage('SALE_HPS_BILLUA_DATE_PAID_BEFORE', null, $billLang),
723 ConvertDateTime($params["DATE_PAY_BEFORE"], FORMAT_DATE)
724 ?: $params["DATE_PAY_BEFORE"]
725 )), 0, 0, 'R');
726}
727
728
729$dest = 'I';
730if ($_REQUEST['GET_CONTENT'] == 'Y')
731 $dest = 'S';
732else if ($_REQUEST['DOWNLOAD'] == 'Y')
733 $dest = 'D';
734
735$fileName = sprintf(
736 'Rakhunok No%s vid %s.pdf',
737 str_replace(
738 array(
739 chr(0), chr(1), chr(2), chr(3), chr(4), chr(5), chr(6), chr(7), chr(8), chr(9), chr(10), chr(11),
740 chr(12), chr(13), chr(14), chr(15), chr(16), chr(17), chr(18), chr(19), chr(20), chr(21), chr(22),
741 chr(23), chr(24), chr(25), chr(26), chr(27), chr(28), chr(29), chr(30), chr(31),
742 '"', '*', '/', ':', '<', '>', '?', '\\', '|'
743 ),
744 '_',
745 strval($params["ACCOUNT_NUMBER"])
746 ),
747 ConvertDateTime($params["DATE_BILL"], 'YYYY-MM-DD')
748);
749
750$trFileName = CUtil::translit($fileName, 'la', array('max_len' => 1024, 'safe_chars' => '.', 'replace_space' => '-'));
751
752return $pdf->Output($trFileName, $dest, $fileName);
753?>
$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
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
$pageWidth
Определения html.php:24
if( $arBasket=$dbBasket->Fetch()) if($vat > 0) $rowsCnt
Определения html.php:430
$sellerAddr
Определения html.php:558
$width
Определения html.php:68
if(CSalePaySystemAction::GetParamValue('BACKGROUND', false)) $margin
Определения html.php:61
$pageHeight
Определения html.php:25
$y5
Определения pdf.php:464
if(!empty($sellerData)) $dest
Определения pdf.php:818
$fontSize
Определения pdf.php:30
$pdf
Определения pdf.php:13
$fontFamily
Определения pdf.php:29
$x0
Определения pdf.php:452
$y0
Определения pdf.php:47
$vatRateColumn
Определения template.php:278
$currency
Определения template.php:266
$arCurFormat
Определения template.php:265
$arColumnKeys
Определения template.php:310
$columnList
Определения template.php:276
$vat
Определения template.php:273
$columnCount
Определения template.php:311
$arCols
Определения template.php:277
$billLang
Определения template.php:7
if($inWords) echo htmlspecialcharsbx(Number2Word_Rus(roundEx($totalVatSum $params['CURRENCY']
Определения template.php:799
$arCells
Определения template.php:223
$items
Определения template.php:224
$buyerPhone
Определения template.php:85
$requisiteList
Определения template.php:117
$buyerFax
Определения template.php:86
else $a
Определения template.php:137
SaleFormatCurrency($fSum, $strCurrency, $OnlyValue=false, $withoutFormat=false)
Определения include.php:142
const SALE_VALUE_PRECISION
Определения include.php:46
$title
Определения pdf.php:123
$val
Определения options.php:1793
Number2Word_Rus($source, $IS_MONEY="Y", $currency="")
Определения include.php:2
$title_width
Определения pdf.php:61
$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