1C-Bitrix 25.700.0
Загрузка...
Поиск...
Не найдено
pdf.php
См. документацию.
1<?if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED !== true) die();?><?
2$arPaySysAction["ENCODING"] = "";
3$ORDER_ID = intval($GLOBALS["SALE_INPUT_PARAMS"]["ORDER"]["ID"]);
4if (!is_array($arOrder))
5 $arOrder = CSaleOrder::GetByID($ORDER_ID);
6
8 die();
9
10if ($_REQUEST['BLANK'] == 'Y')
11 $blank = true;
12
13$pdf = new CSalePdf('P', 'pt', 'A4');
14
15if (CSalePaySystemAction::GetParamValue('BACKGROUND', false))
16{
17 $pdf->SetBackground(
18 CSalePaySystemAction::GetParamValue('BACKGROUND', false),
19 CSalePaySystemAction::GetParamValue('BACKGROUND_STYLE', false)
20 );
21}
22
23$pageWidth = $pdf->GetPageWidth();
24$pageHeight = $pdf->GetPageHeight();
25
26$pdf->AddFont('Font', '', 'pt_sans-regular.ttf', true);
27$pdf->AddFont('Font', 'B', 'pt_sans-bold.ttf', true);
28
29$fontFamily = 'Font';
30$fontSize = 10.5;
31
33 'top' => intval(CSalePaySystemAction::GetParamValue('MARGIN_TOP', false) ?: 15) * 72/25.4,
34 'right' => intval(CSalePaySystemAction::GetParamValue('MARGIN_RIGHT', false) ?: 15) * 72/25.4,
35 'bottom' => intval(CSalePaySystemAction::GetParamValue('MARGIN_BOTTOM', false) ?: 15) * 72/25.4,
36 'left' => intval(CSalePaySystemAction::GetParamValue('MARGIN_LEFT', false) ?: 20) * 72/25.4
37);
38
39$width = $pageWidth - $margin['left'] - $margin['right'];
40
41$pdf->SetDisplayMode(100, 'continuous');
42$pdf->SetMargins($margin['left'], $margin['top'], $margin['right']);
43$pdf->SetAutoPageBreak(true, $margin['bottom']);
44
45$pdf->AddPage();
46
47
48$y0 = $pdf->GetY();
51
52if (CSalePaySystemAction::GetParamValue('PATH_TO_LOGO', false))
53{
54 list($imageHeight, $imageWidth) = $pdf->GetImageSize(CSalePaySystemAction::GetParamValue('PATH_TO_LOGO', false));
55
56 $imgDpi = intval(CSalePaySystemAction::GetParamValue('LOGO_DPI', false)) ?: 96;
57 $imgZoom = 96 / $imgDpi;
58
59 $logoHeight = $imageHeight * $imgZoom + 5;
60 $logoWidth = $imageWidth * $imgZoom + 5;
61
62 $pdf->Image(CSalePaySystemAction::GetParamValue('PATH_TO_LOGO', false), $pdf->GetX(), $pdf->GetY(), -$imgDpi, -$imgDpi);
63}
64
65$pdf->SetFont($fontFamily, 'B', $fontSize);
66
67$pdf->SetX($pdf->GetX() + $logoWidth);
68$pdf->Write(15, CSalePdf::prepareToPdf(CSalePaySystemAction::GetParamValue("SELLER_NAME", false)));
69$pdf->Ln();
70
71if (CSalePaySystemAction::GetParamValue("SELLER_ADDRESS", false))
72{
73 $pdf->SetX($pdf->GetX() + $logoWidth);
74 $pdf->MultiCell(0, 15, CSalePdf::prepareToPdf(CSalePaySystemAction::GetParamValue("SELLER_ADDRESS", false)), 0, 'L');
75}
76
77if (CSalePaySystemAction::GetParamValue("SELLER_PHONE", false))
78{
79 $pdf->SetX($pdf->GetX() + $logoWidth);
80 $pdf->Write(15, CSalePdf::prepareToPdf(sprintf("Тел.: %s", CSalePaySystemAction::GetParamValue("SELLER_PHONE", false))));
81 $pdf->Ln();
82}
83
84$pdf->Ln();
85$pdf->SetY(max($y0 + $logoHeight, $pdf->GetY()));
86
87if (CSalePaySystemAction::GetParamValue("SELLER_BANK", false))
88{
89 $sellerBank = sprintf(
90 "%s %s",
91 CSalePaySystemAction::GetParamValue("SELLER_BANK", false),
92 CSalePaySystemAction::GetParamValue("SELLER_BCITY", false)
93 );
95}
96else
97{
98 $rsPattern = '/\s*\d{10,100}\s*/';
99
100 $sellerBank = trim(preg_replace($rsPattern, ' ', CSalePaySystemAction::GetParamValue("SELLER_RS", false)));
101
102 preg_match($rsPattern, CSalePaySystemAction::GetParamValue("SELLER_RS", false), $matches);
103 $sellerRs = trim($matches[0]);
104}
105
106$pdf->SetFont($fontFamily, '', $fontSize);
107
108$x0 = $pdf->GetX();
109$y0 = $pdf->GetY();
110
111$pdf->Cell(
112 150, 18,
113 (CSalePaySystemAction::GetParamValue("SELLER_INN", false))
114 ? CSalePdf::prepareToPdf(sprintf("ИНН %s", CSalePaySystemAction::GetParamValue("SELLER_INN", false)))
115 : ''
116);
117$x1 = $pdf->GetX();
118$pdf->Cell(
119 150, 18,
120 (CSalePaySystemAction::GetParamValue("SELLER_KPP", false))
121 ? CSalePdf::prepareToPdf(sprintf("КПП %s", CSalePaySystemAction::GetParamValue("SELLER_KPP", false)))
122 : ''
123);
124$x2 = $pdf->GetX();
125$pdf->Cell(50, 18);
126$x3 = $pdf->GetX();
127$pdf->Cell(0, 18);
128$x4 = $pdf->GetX();
129
130$pdf->Line($x0, $y0, $x4, $y0);
131
132$pdf->Ln();
133$y1 = $pdf->GetY();
134
135$pdf->Line($x1, $y0, $x1, $y1);
136
137$pdf->Cell(300, 18, CSalePdf::prepareToPdf('Получатель'));
138$pdf->Cell(50, 18);
139$pdf->Cell(0, 18);
140
141$pdf->Line($x0, $y1, $x2, $y1);
142
143$pdf->Ln();
144$y2 = $pdf->GetY();
145
147while ($pdf->GetStringWidth($text) > 0)
148{
149 list($string, $text) = $pdf->splitString($text, 300-5);
150
151 $pdf->Cell(300, 18, CSalePdf::prepareToPdf($string));
152 if ($text)
153 $pdf->Ln();
154}
155$pdf->Cell(50, 18, CSalePdf::prepareToPdf('Сч. №'));
157
158$pdf->Ln();
159$y3 = $pdf->GetY();
160
161$pdf->Cell(300, 18, CSalePdf::prepareToPdf('Банк получателя'));
162$pdf->Cell(50, 18, CSalePdf::prepareToPdf('БИК'));
163$pdf->Cell(0, 18, CSalePdf::prepareToPdf(CSalePaySystemAction::GetParamValue("SELLER_BIK", false)));
164
165$pdf->Line($x0, $y3, $x4, $y3);
166
167$pdf->Ln();
168$y4 = $pdf->GetY();
169
171while ($pdf->GetStringWidth($text) > 0)
172{
173 list($string, $text) = $pdf->splitString($text, 300-5);
174
175 $pdf->Cell(300, 18, CSalePdf::prepareToPdf($string));
176 if ($text)
177 $pdf->Ln();
178}
179$pdf->Cell(50, 18, CSalePdf::prepareToPdf('Сч. №'));
180$pdf->Cell(0, 18, CSalePdf::prepareToPdf(CSalePaySystemAction::GetParamValue("SELLER_KS", false)));
181
182$pdf->Ln();
183$y5 = $pdf->GetY();
184
185$pdf->Line($x0, $y5, $x4, $y5);
186
187$pdf->Line($x0, $y0, $x0, $y5);
188$pdf->Line($x2, $y0, $x2, $y5);
189$pdf->Line($x3, $y0, $x3, $y5);
190$pdf->Line($x4, $y0, $x4, $y5);
191
192$pdf->Ln();
193$pdf->Ln();
194
195
196$pdf->SetFont($fontFamily, 'B', $fontSize*2);
198 "СЧЕТ № %s от %s",
199 $GLOBALS["SALE_INPUT_PARAMS"]["ORDER"]["ACCOUNT_NUMBER"],
200 CSalePaySystemAction::GetParamValue("DATE_INSERT", false)
201));
202$billNo_width = $pdf->GetStringWidth($billNo_tmp);
203$pdf->Cell(0, 20, $billNo_tmp, 0, 0, 'C');
204$pdf->Ln();
205
206$pdf->SetFont($fontFamily, '', $fontSize);
207
208if (CSalePaySystemAction::GetParamValue("ORDER_SUBJECT", false))
209{
210 $pdf->Cell($width/2-$billNo_width/2-2, 15, '');
211 $pdf->MultiCell(0, 15, CSalePdf::prepareToPdf(CSalePaySystemAction::GetParamValue("ORDER_SUBJECT", false)), 0, 'L');
212}
213
214if (CSalePaySystemAction::GetParamValue("DATE_PAY_BEFORE", false))
215{
216 $pdf->Cell($width/2-$billNo_width/2-2, 15, '');
217 $pdf->MultiCell(0, 15, CSalePdf::prepareToPdf(sprintf(
218 "Срок оплаты %s",
220 ?: CSalePaySystemAction::GetParamValue("DATE_PAY_BEFORE", false)
221 )), 0, 'L');
222}
223
224$pdf->Ln();
225
226if (CSalePaySystemAction::GetParamValue("BUYER_NAME", false))
227{
228 $pdf->Write(15, CSalePdf::prepareToPdf(sprintf(
229 "Плательщик: %s",
230 CSalePaySystemAction::GetParamValue("BUYER_NAME", false)
231 )));
232 if (CSalePaySystemAction::GetParamValue("BUYER_INN", false))
233 $pdf->Write(15, CSalePdf::prepareToPdf(sprintf(" ИНН %s", CSalePaySystemAction::GetParamValue("BUYER_INN", false))));
234 if (CSalePaySystemAction::GetParamValue("BUYER_ADDRESS", false))
235 $pdf->Write(15, CSalePdf::prepareToPdf(sprintf(", %s", CSalePaySystemAction::GetParamValue("BUYER_ADDRESS", false))));
236 if (CSalePaySystemAction::GetParamValue("BUYER_PHONE", false))
237 $pdf->Write(15, CSalePdf::prepareToPdf(sprintf(", %s", CSalePaySystemAction::GetParamValue("BUYER_PHONE", false))));
238 if (CSalePaySystemAction::GetParamValue("BUYER_FAX", false))
239 $pdf->Write(15, CSalePdf::prepareToPdf(sprintf(", %s", CSalePaySystemAction::GetParamValue("BUYER_FAX", false))));
240 if (CSalePaySystemAction::GetParamValue("BUYER_PAYER_NAME", false))
241 $pdf->Write(15, CSalePdf::prepareToPdf(sprintf(", %s", CSalePaySystemAction::GetParamValue("BUYER_PAYER_NAME", false))));
242 $pdf->Ln();
243}
244
245/*
246$pdf->Write(15, CSalePdf::prepareToPdf(sprintf(
247 "Грузополучатель: %s ИНН %s, %s",
248 CSalePaySystemAction::GetParamValue("BUYER_NAME", false),
249 CSalePaySystemAction::GetParamValue("BUYER_INN", false),
250 CSalePaySystemAction::GetParamValue("BUYER_ADDRESS", false)
251)));
252$pdf->Ln();
253*/
254
255// Список товаров
257 array("DATE_INSERT" => "ASC", "NAME" => "ASC"),
258 array("ORDER_ID" => $ORDER_ID),
259 false, false,
260 array("ID", "PRICE", "CURRENCY", "QUANTITY", "NAME", "VAT_RATE", "MEASURE_NAME")
261);
262if ($arBasket = $dbBasket->Fetch())
263{
264 $arCurFormat = CCurrencyLang::GetCurrencyFormat($GLOBALS["SALE_INPUT_PARAMS"]["ORDER"]["CURRENCY"]);
265 $currency = trim(str_replace('#', '', $arCurFormat['FORMAT_STRING']));
266
267 $arColsCaption = array(
268 1 => CSalePdf::prepareToPdf('№'),
269 CSalePdf::prepareToPdf('Наименование товара'),
270 CSalePdf::prepareToPdf('Кол-во'),
271 CSalePdf::prepareToPdf('Ед.'),
272 CSalePdf::prepareToPdf('Цена, '.$currency),
273 CSalePdf::prepareToPdf('Ставка НДС'),
274 CSalePdf::prepareToPdf('Сумма, '.$currency)
275 );
276 $arCells = array();
277 $arProps = array();
278 $arRowsWidth = array(1 => 0, 0, 0, 0, 0, 0, 0);
279
280 for ($i = 1; $i <= 7; $i++)
281 $arRowsWidth[$i] = max($arRowsWidth[$i], $pdf->GetStringWidth($arColsCaption[$i]));
282
283 $n = 0;
284 $sum = 0.00;
285 $vat = 0;
286 do
287 {
288 // props in product basket
289 $arProdProps = array();
290 $dbBasketProps = CSaleBasket::GetPropsList(
291 array("SORT" => "ASC", "ID" => "DESC"),
292 array(
293 "BASKET_ID" => $arBasket["ID"],
294 "!CODE" => array("CATALOG.XML_ID", "PRODUCT.XML_ID")
295 ),
296 false,
297 false,
298 array("ID", "BASKET_ID", "NAME", "VALUE", "CODE", "SORT")
299 );
300 while ($arBasketProps = $dbBasketProps->GetNext())
301 {
302 if (!empty($arBasketProps) && $arBasketProps["VALUE"] != "")
303 $arProdProps[] = $arBasketProps;
304 }
305 $arBasket["PROPS"] = $arProdProps;
306
307 $productName = $arBasket["NAME"];
308 if ($productName == "OrderDelivery")
309 $productName = "Доставка";
310 else if ($productName == "OrderDiscount")
311 $productName = "Скидка";
312
313 $arCells[++$n] = array(
315 CSalePdf::prepareToPdf($productName),
316 CSalePdf::prepareToPdf(roundEx($arBasket["QUANTITY"], SALE_VALUE_PRECISION)),
317 CSalePdf::prepareToPdf($arBasket["MEASURE_NAME"] ? $arBasket["MEASURE_NAME"] : 'шт.'),
318 CSalePdf::prepareToPdf(SaleFormatCurrency($arBasket["PRICE"], $arBasket["CURRENCY"], true)),
319 CSalePdf::prepareToPdf(roundEx($arBasket["VAT_RATE"]*100, SALE_VALUE_PRECISION)."%"),
321 $arBasket["PRICE"] * $arBasket["QUANTITY"],
322 $arBasket["CURRENCY"],
323 true
324 ))
325 );
326
327 $arProps[$n] = array();
328 foreach ($arBasket["PROPS"] as $vv)
329 $arProps[$n][] = CSalePdf::prepareToPdf(sprintf("%s: %s", $vv["NAME"], $vv["VALUE"]));
330
331 for ($i = 1; $i <= 7; $i++)
332 $arRowsWidth[$i] = max($arRowsWidth[$i], $pdf->GetStringWidth($arCells[$n][$i]));
333
334 $sum += doubleval($arBasket["PRICE"] * $arBasket["QUANTITY"]);
335 $vat = max($vat, $arBasket["VAT_RATE"]);
336 }
337 while ($arBasket = $dbBasket->Fetch());
338
339 if (DoubleVal($GLOBALS["SALE_INPUT_PARAMS"]["ORDER"]["PRICE_DELIVERY"]) > 0)
340 {
341 $arDelivery_tmp = CSaleDelivery::GetByID($GLOBALS["SALE_INPUT_PARAMS"]["ORDER"]["DELIVERY_ID"]);
342
343 $sDeliveryItem = "Доставка";
344 if ($arDelivery_tmp["NAME"] <> '')
345 $sDeliveryItem .= sprintf(" (%s)", $arDelivery_tmp["NAME"]);
346 $arCells[++$n] = array(
348 CSalePdf::prepareToPdf($sDeliveryItem),
352 $GLOBALS["SALE_INPUT_PARAMS"]["ORDER"]["PRICE_DELIVERY"],
353 $GLOBALS["SALE_INPUT_PARAMS"]["ORDER"]["CURRENCY"],
354 true
355 )),
358 $GLOBALS["SALE_INPUT_PARAMS"]["ORDER"]["PRICE_DELIVERY"],
359 $GLOBALS["SALE_INPUT_PARAMS"]["ORDER"]["CURRENCY"],
360 true
361 ))
362 );
363
364 for ($i = 1; $i <= 7; $i++)
365 $arRowsWidth[$i] = max($arRowsWidth[$i], $pdf->GetStringWidth($arCells[$n][$i]));
366
367 $sum += doubleval($GLOBALS["SALE_INPUT_PARAMS"]["ORDER"]["PRICE_DELIVERY"]);
368 }
369
370 $items = $n;
371
372 if ($sum < $GLOBALS["SALE_INPUT_PARAMS"]["ORDER"]["PRICE"])
373 {
374 $arCells[++$n] = array(
375 1 => null,
376 null,
377 null,
378 null,
379 null,
380 CSalePdf::prepareToPdf("Подытог:"),
381 CSalePdf::prepareToPdf(SaleFormatCurrency($sum, $GLOBALS["SALE_INPUT_PARAMS"]["ORDER"]["CURRENCY"], true))
382 );
383
384 $arRowsWidth[7] = max($arRowsWidth[7], $pdf->GetStringWidth($arCells[$n][7]));
385 }
386
387 $taxes = false;
388 $dbTaxList = CSaleOrderTax::GetList(
389 array("APPLY_ORDER" => "ASC"),
390 array("ORDER_ID" => $ORDER_ID)
391 );
392
393 while ($arTaxList = $dbTaxList->Fetch())
394 {
395 $taxes = true;
396
397 $arCells[++$n] = array(
398 1 => null,
399 null,
400 null,
401 null,
402 null,
404 "%s%s%s:",
405 ($arTaxList["IS_IN_PRICE"] == "Y") ? "В том числе " : "",
406 $arTaxList["TAX_NAME"],
407 ($vat <= 0 && $arTaxList["IS_PERCENT"] == "Y")
408 ? sprintf(' (%s%%)', roundEx($arTaxList["VALUE"],SALE_VALUE_PRECISION))
409 : ""
410 )),
412 $arTaxList["VALUE_MONEY"],
413 $GLOBALS["SALE_INPUT_PARAMS"]["ORDER"]["CURRENCY"],
414 true
415 ))
416 );
417
418 $arRowsWidth[7] = max($arRowsWidth[7], $pdf->GetStringWidth($arCells[$n][7]));
419 }
420
421 if (!$taxes)
422 {
423 $arCells[++$n] = array(
424 1 => null,
425 null,
426 null,
427 null,
428 null,
429 CSalePdf::prepareToPdf("НДС:"),
430 CSalePdf::prepareToPdf("Без НДС")
431 );
432
433 $arRowsWidth[7] = max($arRowsWidth[7], $pdf->GetStringWidth($arCells[$n][7]));
434 }
435
436 if (DoubleVal($GLOBALS["SALE_INPUT_PARAMS"]["ORDER"]["SUM_PAID"]) > 0)
437 {
438 $arCells[++$n] = array(
439 1 => null,
440 null,
441 null,
442 null,
443 null,
444 CSalePdf::prepareToPdf("Уже оплачено:"),
446 $GLOBALS["SALE_INPUT_PARAMS"]["ORDER"]["SUM_PAID"],
447 $GLOBALS["SALE_INPUT_PARAMS"]["ORDER"]["CURRENCY"],
448 true
449 ))
450 );
451
452 $arRowsWidth[7] = max($arRowsWidth[7], $pdf->GetStringWidth($arCells[$n][7]));
453 }
454
455 if (DoubleVal($GLOBALS["SALE_INPUT_PARAMS"]["ORDER"]["DISCOUNT_VALUE"]) > 0)
456 {
457 $arCells[++$n] = array(
458 1 => null,
459 null,
460 null,
461 null,
462 null,
463 CSalePdf::prepareToPdf("Скидка:"),
465 $GLOBALS["SALE_INPUT_PARAMS"]["ORDER"]["DISCOUNT_VALUE"],
466 $GLOBALS["SALE_INPUT_PARAMS"]["ORDER"]["CURRENCY"],
467 true
468 ))
469 );
470
471 $arRowsWidth[7] = max($arRowsWidth[7], $pdf->GetStringWidth($arCells[$n][7]));
472 }
473
474 $arCells[++$n] = array(
475 1 => null,
476 null,
477 null,
478 null,
479 null,
480 CSalePdf::prepareToPdf("Итого:"),
482 $GLOBALS["SALE_INPUT_PARAMS"]["ORDER"]["SHOULD_PAY"],
483 $GLOBALS["SALE_INPUT_PARAMS"]["ORDER"]["CURRENCY"],
484 true
485 ))
486 );
487
488 $arRowsWidth[7] = max($arRowsWidth[7], $pdf->GetStringWidth($arCells[$n][7]));
489
490 for ($i = 1; $i <= 7; $i++)
491 $arRowsWidth[$i] += 10;
492 if ($vat <= 0)
493 $arRowsWidth[6] = 0;
494 $arRowsWidth[2] = $width - (array_sum($arRowsWidth)-$arRowsWidth[2]);
495}
496$pdf->Ln();
497
498$x0 = $pdf->GetX();
499$y0 = $pdf->GetY();
500
501for ($i = 1; $i <= 7; $i++)
502{
503 if ($vat > 0 || $i != 6)
504 $pdf->Cell($arRowsWidth[$i], 20, $arColsCaption[$i], 0, 0, 'C');
505 ${"x$i"} = $pdf->GetX();
506}
507
508$pdf->Ln();
509
510$y5 = $pdf->GetY();
511
512$pdf->Line($x0, $y0, $x7, $y0);
513for ($i = 0; $i <= 7; $i++)
514{
515 if ($vat > 0 || $i != 6)
516 $pdf->Line(${"x$i"}, $y0, ${"x$i"}, $y5);
517}
518$pdf->Line($x0, $y5, $x7, $y5);
519
521for ($n = 1; $n <= $rowsCnt; $n++)
522{
523 $arRowsWidth_tmp = $arRowsWidth;
524 $accumulated = 0;
525 for ($j = 1; $j <= 7; $j++)
526 {
527 if (is_null($arCells[$n][$j]))
528 {
529 $accumulated += $arRowsWidth_tmp[$j];
530 $arRowsWidth_tmp[$j] = null;
531 }
532 else
533 {
534 $arRowsWidth_tmp[$j] += $accumulated;
535 $accumulated = 0;
536 }
537 }
538
539 $x0 = $pdf->GetX();
540 $y0 = $pdf->GetY();
541
542 $pdf->SetFont($fontFamily, '', $fontSize);
543
544 if (!is_null($arCells[$n][2]))
545 {
546 $text = $arCells[$n][2];
547 $cellWidth = $arRowsWidth_tmp[2];
548 }
549 else
550 {
551 $text = $arCells[$n][6];
552 $cellWidth = $arRowsWidth_tmp[6];
553 }
554
555 for ($l = 0; $pdf->GetStringWidth($text) > 0; $l++)
556 {
557 list($string, $text) = $pdf->splitString($text, $cellWidth-5);
558
559 if (!is_null($arCells[$n][1]))
560 $pdf->Cell($arRowsWidth_tmp[1], 15, ($l == 0) ? $arCells[$n][1] : '', 0, 0, 'C');
561 if ($l == 0)
562 $x1 = $pdf->GetX();
563
564 if (!is_null($arCells[$n][2]))
565 $pdf->Cell($arRowsWidth_tmp[2], 15, $string);
566 if ($l == 0)
567 $x2 = $pdf->GetX();
568
569 if (!is_null($arCells[$n][3]))
570 $pdf->Cell($arRowsWidth_tmp[3], 15, ($l == 0) ? $arCells[$n][3] : '', 0, 0, 'R');
571 if ($l == 0)
572 $x3 = $pdf->GetX();
573
574 if (!is_null($arCells[$n][4]))
575 $pdf->Cell($arRowsWidth_tmp[4], 15, ($l == 0) ? $arCells[$n][4] : '', 0, 0, 'R');
576 if ($l == 0)
577 $x4 = $pdf->GetX();
578
579 if (!is_null($arCells[$n][5]))
580 $pdf->Cell($arRowsWidth_tmp[5], 15, ($l == 0) ? $arCells[$n][5] : '', 0, 0, 'R');
581 if ($l == 0)
582 $x5 = $pdf->GetX();
583
584 if (!is_null($arCells[$n][6]))
585 {
586 if (is_null($arCells[$n][2]))
587 $pdf->Cell($arRowsWidth_tmp[6], 15, $string, 0, 0, 'R');
588 else if ($vat > 0)
589 $pdf->Cell($arRowsWidth_tmp[6], 15, ($l == 0) ? $arCells[$n][6] : '', 0, 0, 'R');
590 }
591 if ($l == 0)
592 $x6 = $pdf->GetX();
593
594 if (!is_null($arCells[$n][7]))
595 $pdf->Cell($arRowsWidth_tmp[7], 15, ($l == 0) ? $arCells[$n][7] : '', 0, 0, 'R');
596 if ($l == 0)
597 $x7 = $pdf->GetX();
598
599 $pdf->Ln();
600 }
601
602 if (isset($arProps[$n]) && is_array($arProps[$n]))
603 {
604 $pdf->SetFont($fontFamily, '', $fontSize-2);
605 foreach ($arProps[$n] as $property)
606 {
607 $pdf->Cell($arRowsWidth_tmp[1], 12, '');
608 $pdf->Cell($arRowsWidth_tmp[2], 12, $property);
609 $pdf->Cell($arRowsWidth_tmp[3], 12, '');
610 $pdf->Cell($arRowsWidth_tmp[4], 12, '');
611 $pdf->Cell($arRowsWidth_tmp[5], 12, '');
612 if ($vat > 0)
613 $pdf->Cell($arRowsWidth_tmp[6], 12, '');
614 $pdf->Cell($arRowsWidth_tmp[7], 12, '', 0, 1);
615 }
616 }
617
618 $y5 = $pdf->GetY();
619
620 if ($y0 > $y5)
621 $y0 = $margin['top'];
622 for ($i = (is_null($arCells[$n][1])) ? 6 : 0; $i <= 7; $i++)
623 {
624 if ($vat > 0 || $i != 5)
625 $pdf->Line(${"x$i"}, $y0, ${"x$i"}, $y5);
626 }
627
628 $pdf->Line((!is_null($arCells[$n][1])) ? $x0 : $x6, $y5, $x7, $y5);
629}
630$pdf->Ln();
631
632
633$pdf->SetFont($fontFamily, '', $fontSize);
634$pdf->Write(15, CSalePdf::prepareToPdf(sprintf(
635 "Всего наименований %s, на сумму %s",
636 $items,
638 $GLOBALS["SALE_INPUT_PARAMS"]["ORDER"]["SHOULD_PAY"],
639 $GLOBALS["SALE_INPUT_PARAMS"]["ORDER"]["CURRENCY"],
640 false
641 )
642)));
643$pdf->Ln();
644
645$pdf->SetFont($fontFamily, 'B', $fontSize);
646if (in_array($GLOBALS["SALE_INPUT_PARAMS"]["ORDER"]["CURRENCY"], array("RUR", "RUB")))
647{
648 $pdf->Write(15, CSalePdf::prepareToPdf(Number2Word_Rus($GLOBALS["SALE_INPUT_PARAMS"]["ORDER"]["SHOULD_PAY"])));
649}
650else
651{
653 $GLOBALS["SALE_INPUT_PARAMS"]["ORDER"]["SHOULD_PAY"],
654 $GLOBALS["SALE_INPUT_PARAMS"]["ORDER"]["CURRENCY"],
655 false
656 )));
657}
658$pdf->Ln();
659$pdf->Ln();
660
661if (CSalePaySystemAction::GetParamValue("COMMENT1", false) || CSalePaySystemAction::GetParamValue("COMMENT2", false))
662{
663 $pdf->Write(15, CSalePdf::prepareToPdf('Условия и комментарии'));
664 $pdf->Ln();
665
666 $pdf->SetFont($fontFamily, '', $fontSize);
667
668 if (CSalePaySystemAction::GetParamValue("COMMENT1", false))
669 {
670 $pdf->Write(15, HTMLToTxt(preg_replace(
671 array('#</div>\s*<div[^>]*>#i', '#</?div>#i'), array('<br>', '<br>'),
673 ), '', array(), 0));
674 $pdf->Ln();
675 $pdf->Ln();
676 }
677
678 if (CSalePaySystemAction::GetParamValue("COMMENT2", false))
679 {
680 $pdf->Write(15, HTMLToTxt(preg_replace(
681 array('#</div>\s*<div[^>]*>#i', '#</?div>#i'), array('<br>', '<br>'),
683 ), '', array(), 0));
684 $pdf->Ln();
685 $pdf->Ln();
686 }
687}
688
689$pdf->Ln();
690$pdf->Ln();
691
692if (!$blank && CSalePaySystemAction::GetParamValue('PATH_TO_STAMP', false))
693{
694 list($stampHeight, $stampWidth) = $pdf->GetImageSize(CSalePaySystemAction::GetParamValue('PATH_TO_STAMP', false));
695
696 if ($stampHeight && $stampWidth)
697 {
698 if ($stampHeight > 120 || $stampWidth > 120)
699 {
700 $ratio = 120 / max($stampHeight, $stampWidth);
701 $stampHeight = $ratio * $stampHeight;
702 $stampWidth = $ratio * $stampWidth;
703 }
704
705 $pdf->Image(
706 CSalePaySystemAction::GetParamValue('PATH_TO_STAMP', false),
707 $margin['left']+40, $pdf->GetY(),
708 $stampWidth, $stampHeight
709 );
710 }
711}
712
713
714$pdf->SetFont($fontFamily, 'B', $fontSize);
715
716if (CSalePaySystemAction::GetParamValue("SELLER_DIR_POS", false))
717{
718 $isDirSign = false;
719 if (!$blank && CSalePaySystemAction::GetParamValue('SELLER_DIR_SIGN', false))
720 {
721 list($signHeight, $signWidth) = $pdf->GetImageSize(CSalePaySystemAction::GetParamValue('SELLER_DIR_SIGN', false));
722
723 if ($signHeight && $signWidth)
724 {
725 $ratio = min(37.5/$signHeight, 150/$signWidth);
726 $signHeight = $ratio * $signHeight;
727 $signWidth = $ratio * $signWidth;
728
729 $isDirSign = true;
730 }
731 }
732
733 $sellerDirPos = CSalePdf::prepareToPdf(CSalePaySystemAction::GetParamValue("SELLER_DIR_POS", false));
734 if ($isDirSign && $pdf->GetStringWidth($sellerDirPos) <= 160)
735 $pdf->SetY($pdf->GetY() + min($signHeight, 30) - 15);
736 $pdf->MultiCell(150, 15, $sellerDirPos, 0, 'L');
737 $pdf->SetXY($margin['left'] + 150, $pdf->GetY() - 15);
738
739 if ($isDirSign)
740 {
741 $pdf->Image(
742 CSalePaySystemAction::GetParamValue('SELLER_DIR_SIGN', false),
743 $pdf->GetX() + 80 - $signWidth/2, $pdf->GetY() - $signHeight + 15,
744 $signWidth, $signHeight
745 );
746 }
747
748 $x1 = $pdf->GetX();
749 $pdf->Cell(160, 15, '');
750 $x2 = $pdf->GetX();
751
752 if (CSalePaySystemAction::GetParamValue("SELLER_DIR", false))
753 $pdf->Write(15, CSalePdf::prepareToPdf('('.CSalePaySystemAction::GetParamValue("SELLER_DIR", false).')'));
754 $pdf->Ln();
755
756 $y2 = $pdf->GetY();
757 $pdf->Line($x1, $y2, $x2, $y2);
758
759 $pdf->Ln();
760}
761
762if (CSalePaySystemAction::GetParamValue("SELLER_ACC_POS", false))
763{
764 $isAccSign = false;
765 if (!$blank && CSalePaySystemAction::GetParamValue('SELLER_ACC_SIGN', false))
766 {
767 list($signHeight, $signWidth) = $pdf->GetImageSize(CSalePaySystemAction::GetParamValue('SELLER_ACC_SIGN', false));
768
769 if ($signHeight && $signWidth)
770 {
771 $ratio = min(37.5/$signHeight, 150/$signWidth);
772 $signHeight = $ratio * $signHeight;
773 $signWidth = $ratio * $signWidth;
774
775 $isAccSign = true;
776 }
777 }
778
779 $sellerAccPos = CSalePdf::prepareToPdf(CSalePaySystemAction::GetParamValue("SELLER_ACC_POS", false));
780 if ($isAccSign && $pdf->GetStringWidth($sellerAccPos) <= 160)
781 $pdf->SetY($pdf->GetY() + min($signHeight, 30) - 15);
782 $pdf->MultiCell(150, 15, $sellerAccPos, 0, 'L');
783 $pdf->SetXY($margin['left'] + 150, $pdf->GetY() - 15);
784
785 if ($isAccSign)
786 {
787 $pdf->Image(
788 CSalePaySystemAction::GetParamValue('SELLER_ACC_SIGN', false),
789 $pdf->GetX() + 80 - $signWidth/2, $pdf->GetY() - $signHeight + 15,
790 $signWidth, $signHeight
791 );
792 }
793
794 $x1 = $pdf->GetX();
795 $pdf->Cell((CSalePaySystemAction::GetParamValue("SELLER_DIR", false)) ? $x2-$x1 : 160, 15, '');
796 $x2 = $pdf->GetX();
797
798 if (CSalePaySystemAction::GetParamValue("SELLER_ACC", false))
799 $pdf->Write(15, CSalePdf::prepareToPdf('('.CSalePaySystemAction::GetParamValue("SELLER_ACC", false).')'));
800 $pdf->Ln();
801
802 $y2 = $pdf->GetY();
803 $pdf->Line($x1, $y2, $x2, $y2);
804}
805
806
807$dest = 'I';
808if ($_REQUEST['GET_CONTENT'] == 'Y')
809 $dest = 'S';
810else if ($_REQUEST['DOWNLOAD'] == 'Y')
811 $dest = 'D';
812
813return $pdf->Output(
814 sprintf(
815 'Schet No %s ot %s.pdf',
816 $GLOBALS["SALE_INPUT_PARAMS"]["ORDER"]["ACCOUNT_NUMBER"],
817 ConvertDateTime($GLOBALS["SALE_INPUT_PARAMS"]["ORDER"]["DATE_INSERT"], 'YYYY-MM-DD')
818 ), $dest
819);
820?>
$sum
Определения checkout.php:6
static GetByID($ID)
Определения delivery.php:249
static GetParamValue($key, $defaultValue=null)
Определения pay_system_action.php:76
static GetList($arOrder=array(), $arFilter=array(), $arGroupBy=false, $arNavStartParams=false, $arSelectFields=array())
Определения basket.php:33
static GetPropsList($arOrder=array(), $arFilter=array(), $arGroupBy=false, $arNavStartParams=false, $arSelectFields=array())
Определения basket.php:317
static GetList($arOrder=array("TAX_NAME"=> "ASC"), $arFilter=array(), $arGroupBy=false, $arNavStartParams=false, $arSelectFields=array())
Определения order_tax.php:7
Определения pdf.php:312
static isPdfAvailable()
Определения pdf.php:316
static prepareToPdf($string)
Определения pdf.php:324
</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
die
Определения quickway.php:367
$text
Определения template_pdf.php:79
for( $i=0, $max=count( $arBasketIDs);$i< $max;$i++) if($arOrder['DELIVERY_VAT_RATE'] > 0) if(is_array( $arBasketOrder) &&!empty( $arBasketOrder)) if(floatval($arOrder["DISCOUNT_VALUE"]) > 0) $arTaxList
Определения factura.php:640
$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
$ORDER_ID
Определения html.php:2
$pageWidth
Определения html.php:24
if( $arBasket=$dbBasket->Fetch()) if($vat > 0) $rowsCnt
Определения html.php:430
$width
Определения html.php:68
if(CSalePaySystemAction::GetParamValue("DATE_PAY_BEFORE", false)) $dbBasket
Определения html.php:162
if(CSalePaySystemAction::GetParamValue('BACKGROUND', false)) $margin
Определения html.php:61
$pageHeight
Определения html.php:25
$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
$arPaySysAction["ENCODING"]
Определения pdf.php:2
$fontFamily
Определения pdf.php:29
$x0
Определения pdf.php:452
$y0
Определения pdf.php:47
$currency
Определения template.php:266
$arCurFormat
Определения template.php:265
$sellerBank
Определения template.php:134
$vat
Определения template.php:273
$sellerRs
Определения template.php:137
$arCells
Определения template.php:223
$items
Определения template.php:224
SaleFormatCurrency($fSum, $strCurrency, $OnlyValue=false, $withoutFormat=false)
Определения include.php:142
const SALE_VALUE_PRECISION
Определения include.php:46
Number2Word_Rus($source, $IS_MONEY="Y", $currency="")
Определения include.php:2
$x4
Определения pdf.php:128
$y1
Определения pdf.php:133
$y3
Определения pdf.php:159
$y2
Определения pdf.php:144
$billNo_width
Определения pdf.php:202
$billNo_tmp
Определения pdf.php:197
$x2
Определения pdf.php:124
$x3
Определения pdf.php:126
$y4
Определения pdf.php:168
$isAccSign
Определения pdf.php:601
$matches
Определения index.php:22
$GLOBALS['_____370096793']
Определения update_client.php:1
$n
Определения update_log.php:107
$arRowsWidth
Определения template_pdf.php:446
$taxes
Определения template_pdf.php:444
$blank
Определения template_pdf.php:11
$x1
Определения template_pdf.php:419