2if (!defined(
"B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED !==
true)
7Loc::loadMessages(__FILE__);
9<!DOCTYPE HTML PUBLIC
"-//W3C//DTD HTML 4.0 Transitional//EN">
12<
title><?=Loc::getMessage(
'SALE_HPS_BILLBY_TITLE')?></
title>
13<meta
http-equiv=
"Content-Type" content=
"text/html; charset=<?=LANG_CHARSET?>">
14<
style type=
"text/css">
16 table.acc td { border: 1pt solid #000000; padding: 0 3pt; line-
height: 21pt; }
17 table.it td { border: 1pt solid #000000; padding: 0 3pt; }
18 table.sign td { vertical-
align: bottom; }
19 table.header td { padding: 0; vertical-
align:
top; }
32if (
$params[
'BILLBY_BACKGROUND'])
35 if (intval(
$path) > 0)
37 if ($arFile = CFile::GetFileArray(
$path))
38 $path = $arFile[
'SRC'];
41 $backgroundStyle =
$params[
'BILLBY_BACKGROUND_STYLE'];
42 if (!in_array($backgroundStyle,
array(
'none',
'tile',
'stretch')))
43 $backgroundStyle =
'none';
47 switch ($backgroundStyle)
57 "url('%s') 0 0 repeat-y; background-size: %.02fpt %.02fpt",
66 'top' => intval(
$params[
'BILLBY_MARGIN_TOP'] ?: 15) * 72/25.4,
67 'right' => intval(
$params[
'BILLBY_MARGIN_RIGHT'] ?: 15) * 72/25.4,
68 'bottom' => intval(
$params[
'BILLBY_MARGIN_BOTTOM'] ?: 15) * 72/25.4,
69 'left' => intval(
$params[
'BILLBY_MARGIN_LEFT'] ?: 20) * 72/25.4
76<body
style=
"margin: 0; padding: 0; background: <?=$background; ?>"<?
if (
$_REQUEST[
'PRINT'] ==
'Y') { ?> onload=
"setTimeout(window.print, 0);"<? } ?>>
78<div
style=
"margin: 0; padding: <?=join('pt ', $margin); ?>pt; width: <?=$width; ?>pt; background: <?=$background; ?>">
80<?
if (
$params[
'BILLBY_HEADER_SHOW'] ==
'Y'):?>
86 if (
$params[
"SELLER_COMPANY_NAME"])
94 if (
$params[
'SELLER_COMPANY_INN'])
104 if (
$params[
"SELLER_COMPANY_BANK_NAME"])
106 $sellerBankCity =
'';
107 if (
$params[
"SELLER_COMPANY_BANK_CITY"])
109 $sellerBankCity =
$params[
"SELLER_COMPANY_BANK_CITY"];
110 if (is_array($sellerBankCity))
111 $sellerBankCity = implode(
', ', $sellerBankCity);
113 $sellerBankCity = str_replace(
array(
"\r\n",
"\n",
"\r"),
', ', strval($sellerBankCity));
117 $params[
"SELLER_COMPANY_BANK_NAME"],
124 $rsPattern =
'/\s*\d{10,100}\s*/';
126 $sellerBank = trim(preg_replace($rsPattern,
' ',
$params[
"SELLER_COMPANY_BANK_ACCOUNT"]));
128 preg_match($rsPattern,
$params[
"SELLER_COMPANY_BANK_ACCOUNT"],
$matches);
133 $sellerRsPrefix = Loc::getMessage(
'SALE_HPS_BILLBY_SELLER_ACC_ABBR');
134 if (!empty($sellerRsPrefix))
136 unset($sellerRsPrefix);
147 if (!empty(
$params[
'SELLER_COMPANY_BANK_BIC']))
151 $sellerInfoBank .= Loc::getMessage(
'SALE_HPS_BILLBY_SELLER_BANK_BIK').
' '.
$params[
'SELLER_COMPANY_BANK_BIC'];
157 if (
$params[
'SELLER_COMPANY_ADDRESS'])
167 if (
$params[
"SELLER_COMPANY_PHONE"])
171 $phoneTitle = Loc::getMessage(
'SALE_HPS_BILLBY_PHONE_TITLE');
172 if (!empty($phoneTitle))
184 <table
class=
"header">
186 <td><?= $sellerInfo ?></td>
187 <?
if (
$params[
"BILLBY_PATH_TO_LOGO"]) { ?>
188 <td
style=
"padding-left: 5pt; padding-bottom: 5pt; ">
190 $dpi = intval(
$params[
'BILLBY_LOGO_DPI']) ?: 96;
191 $imgWidth = $imgParams[
'WIDTH'] * 96 / $dpi;
195 <img src=
"<?=$imgParams['SRC']; ?>" width=
"<?=$imgWidth; ?>" />
210<?
if (
$params[
'BILLBY_HEADER']):?>
212 $dateValue =
$params[
"PAYMENT_DATE_INSERT"];
213 if ($dateValue instanceof \
Bitrix\Main\Type\Date || $dateValue instanceof \
Bitrix\Main\Type\DateTime)
215 $dateValue = mb_strtolower(
FormatDate(
'd F Y', $dateValue->getTimestamp()));
216 $yearPostfix = Loc::getMessage(
'SALE_HPS_BILLBY_YEAR_POSTFIX');
217 if (!empty($yearPostfix))
218 $dateValue .= $yearPostfix;
221 else if (is_string($dateValue))
224 if ($timeStampValue !==
false)
225 $dateValue = mb_strtolower(
FormatDate(
'd F Y', $timeStampValue));
226 unset($timeStampValue);
231 <td
style=
"font-size: 1.6em; font-weight: bold; text-align: center">
238<?
if (
$params[
"BILLBY_ORDER_SUBJECT"]) { ?>
245<?
if (
$params[
"PAYMENT_DATE_PAY_BEFORE"]) { ?>
259if (
$params[
'BILLBY_PAYER_SHOW'] ==
'Y')
262 $buyerInfoRows =
array();
263 if (
$params[
'BUYER_PERSON_COMPANY_DOGOVOR'])
266 Loc::getMessage(
'SALE_HPS_BILLBY_BUYER_DOGOVOR').
': '.
htmlspecialcharsbx(
$params[
'BUYER_PERSON_COMPANY_DOGOVOR']).
'<br>';
268 $buyerInfoName = Loc::getMessage(
'SALE_HPS_BILLBY_BUYER_TITLE').
':';
269 if (
$params[
"BUYER_PERSON_COMPANY_NAME"])
271 if (!empty($buyerInfoName))
272 $buyerInfoName .=
' ';
273 $buyerInfoName .=
$params[
"BUYER_PERSON_COMPANY_NAME"];
275 if (!empty($buyerInfoName))
277 unset($buyerInfoName);
278 $buyerInfoTaxId =
'';
279 if (
$params[
'BUYER_PERSON_COMPANY_INN'])
281 $buyerInfoTaxId .= Loc::getMessage(
'SALE_HPS_BILLBY_INN').
': '.
$params[
'BUYER_PERSON_COMPANY_INN'];
282 if (!empty($buyerInfoTaxId))
285 unset($buyerInfoTaxId);
289 if (
$params[
"BUYER_PERSON_COMPANY_BANK_NAME"])
292 if (
$params[
"BUYER_PERSON_COMPANY_BANK_CITY"])
294 $buyerBankCity =
$params[
"BUYER_PERSON_COMPANY_BANK_CITY"];
295 if (is_array($buyerBankCity))
296 $buyerBankCity = implode(
', ', $buyerBankCity);
298 $buyerBankCity = str_replace(
array(
"\r\n",
"\n",
"\r"),
', ', strval($buyerBankCity));
300 $buyerBank = sprintf(
302 $params[
"BUYER_PERSON_COMPANY_BANK_NAME"],
305 $buyerRs =
$params[
"BUYER_PERSON_COMPANY_BANK_ACCOUNT"];
309 $rsPattern =
'/\s*\d{10,100}\s*/';
311 $buyerBank = trim(preg_replace($rsPattern,
' ',
$params[
"BUYER_PERSON_COMPANY_BANK_ACCOUNT"]));
313 preg_match($rsPattern,
$params[
"BUYER_PERSON_COMPANY_BANK_ACCOUNT"],
$matches);
316 if (!empty($buyerRs))
318 $buyerRsPrefix = Loc::getMessage(
'SALE_HPS_BILLBY_SELLER_ACC_ABBR');
319 if (!empty($buyerRsPrefix))
320 $buyerRs = $buyerRsPrefix.
' '.$buyerRs;
321 unset($buyerRsPrefix);
322 $buyerInfoBank .= $buyerRs;
325 if (!empty($buyerBank))
327 if (!empty($buyerInfoBank))
328 $buyerInfoBank .=
', ';
329 $buyerInfoBank .= $buyerBank;
332 if (!empty(
$params[
'BUYER_PERSON_COMPANY_BANK_BIC']))
334 if (!empty($buyerInfoBank))
335 $buyerInfoBank .=
', ';
336 $buyerInfoBank .= Loc::getMessage(
'SALE_HPS_BILLBY_SELLER_BANK_BIK').
' '.
$params[
'BUYER_PERSON_COMPANY_BANK_BIC'];
338 if (!empty($buyerInfoBank))
340 unset($buyerInfoBank);
342 if (
$params[
'BUYER_PERSON_COMPANY_ADDRESS'])
344 $buyerAddr =
$params[
'BUYER_PERSON_COMPANY_ADDRESS'];
345 if (is_array($buyerAddr))
346 $buyerAddr = implode(
', ', $buyerAddr);
348 $buyerAddr = str_replace(
array(
"\r\n",
"\n",
"\r"),
', ', strval($buyerAddr));
349 if (!empty($buyerAddr))
350 $buyerInfoAddr .= Loc::getMessage(
'SALE_HPS_BILLBY_ADDR_TITLE').
': '.$buyerAddr;
352 if (
$params[
"BUYER_PERSON_COMPANY_PHONE"])
354 if (!empty($buyerInfoAddr))
355 $buyerInfoAddr .=
', ';
356 $phoneTitle = Loc::getMessage(
'SALE_HPS_BILLBY_PHONE_TITLE');
357 if (!empty($phoneTitle))
358 $buyerInfoAddr .= $phoneTitle.
' ';
359 $buyerInfoAddr .=
$params[
"BUYER_PERSON_COMPANY_PHONE"];
361 if (
$params[
"BUYER_PERSON_COMPANY_FAX"])
363 if (!empty($buyerInfoAddr))
364 $buyerInfoAddr .=
', ';
365 $phoneTitle = Loc::getMessage(
'SALE_HPS_BILLBY_FAX_TITLE');
366 if (!empty($phoneTitle))
367 $buyerInfoAddr .= $phoneTitle.
' ';
368 $buyerInfoAddr .=
$params[
"BUYER_PERSON_COMPANY_FAX"];
370 if (
$params[
"BUYER_PERSON_COMPANY_NAME_CONTACT"])
372 if (!empty($buyerInfoAddr))
373 $buyerInfoAddr .=
', ';
374 $buyerInfoAddr .=
$params[
"BUYER_PERSON_COMPANY_NAME_CONTACT"];
376 if (!empty($buyerInfoAddr))
378 unset($buyerInfoAddr);
379 if (!empty($buyerInfoRows))
381 $buyerInfo = implode(
'<br>', $buyerInfoRows);
384 unset($buyerInfoRows);
416$columnList =
array(
'NUMBER',
'NAME',
'QUANTITY',
'MEASURE',
'PRICE',
'SUM',
'VAT_RATE',
'VAT_SUM',
'TOTAL');
421 if (
$params[
'BILLBY_COLUMN_'.$column.
'_SHOW'] ==
'Y')
423 $caption =
$params[
'BILLBY_COLUMN_'.$column.
'_TITLE'];
426 'SORT' =>
$params[
'BILLBY_COLUMN_'.$column.
'_SORT']
437 'SORT' =>
$val[
'SORT']
442uasort(
$arCols,
function (
$a, $b) {
return (
$a[
'SORT'] < $b[
'SORT']) ? -1 : 1;});
447foreach (
$params[
'BASKET_ITEMS'] as $basketItem)
449 $productName = $basketItem[
"NAME"];
450 if ($productName ==
"OrderDelivery")
451 $productName = Loc::getMessage(
'SALE_HPS_BILLBY_DELIVERY');
452 else if ($productName ==
"OrderDiscount")
453 $productName = Loc::getMessage(
'SALE_HPS_BILLBY_DISCOUNT');
455 if ($basketItem[
'IS_VAT_IN_PRICE'])
457 $basketItemTotal = doubleval($basketItem[
'PRICE'] * $basketItem[
'QUANTITY']);
459 if (($basketItem[
'VAT_RATE'] != 0.0))
461 $basketItemSum = $basketItemTotal / (1 + doubleval($basketItem[
'VAT_RATE']));
462 $basketItemVatSum = doubleval($basketItemSum * $basketItem[
'VAT_RATE']);
466 $basketItemSum = $basketItemTotal;
467 $basketItemVatSum = 0.0;
472 $basketItemSum = doubleval($basketItem[
'PRICE'] * $basketItem[
'QUANTITY']);
474 if (($basketItem[
'VAT_RATE'] != 0.0))
476 $basketItemTotal = doubleval($basketItemSum * (1 + doubleval($basketItem[
'VAT_RATE'])));
477 $basketItemVatSum = doubleval($basketItemSum * doubleval($basketItem[
'VAT_RATE']));
481 $basketItemTotal = $basketItemSum;
482 $basketItemVatSum = 0.0;
487 foreach (
$arCols as $columnId => $col)
503 $data = $basketItem[
"MEASURE_NAME"] ?
htmlspecialcharsbx($basketItem[
"MEASURE_NAME"]) : Loc::getMessage(
'SALE_HPS_BILLBY_BASKET_MEASURE_DEFAULT');
512 if ($basketItem[
'VAT_RATE'] == 0.0)
518 if ($basketItem[
'VAT_RATE'] == 0.0)
527 $data = ($basketItem[$columnId]) ?:
'';
534 if ($basketItem[
'PROPS'])
536 foreach ($basketItem[
'PROPS'] as $basketPropertyItem)
538 if ($basketPropertyItem[
'CODE'] ==
'CATALOG.XML_ID' || $basketPropertyItem[
'CODE'] ==
'PRODUCT.XML_ID')
544 $vat = max(
$vat, $basketItem[
'VAT_RATE']);
550if (
$params[
'DELIVERY_PRICE'] > 0)
552 $deliveryItem = Loc::getMessage(
'SALE_HPS_BILLBY_DELIVERY');
555 $deliveryItem .= sprintf(
" (%s)",
$params[
'DELIVERY_NAME']);
557 $basketItemTotal =
$params[
'DELIVERY_PRICE'];
561 $basketItemSum = $basketItemTotal / (1 + doubleval(
$vat));
562 $basketItemVatSum = doubleval($basketItemSum *
$vat);
566 $basketItemSum = $basketItemTotal;
567 $basketItemVatSum = 0.0;
571 foreach (
$arCols as $columnId => $caption)
623if (
$params[
'BILLBY_TOTAL_SHOW'] ==
'Y')
625 $totalRowValues =
array();
636 $value = Loc::getMessage(
'SALE_HPS_BILLBY_TOTAL_VAT_RATE_X');
651 $totalRowValues[$colNum] = $value;
653 unset($skip, $value);
654 $totalTitleColIndex = (empty($totalRowValues) ? 0 : (int)min(array_keys($totalRowValues))) - 1;
657 if (!empty($totalRowValues))
664 unset($totalRowValues);
670 foreach (
$params[
'TAXES'] as $tax)
672 if (isset($tax[
'CODE']) && $tax[
'CODE'] !==
'VAT')
681 ($tax[
"IS_IN_PRICE"] ==
"Y") ? Loc::getMessage(
'SALE_HPS_BILLBY_INCLUDING') :
"",
683 (
$vat <= 0 && $tax[
"IS_PERCENT"] ==
"Y")
703 if (
$params[
'DISCOUNT_PRICE'] > 0)
727<table
class=
"it" width=
"100%">
729 <?
foreach (
$arCols as $columnId => $col):?>
730 <td><?=$col[
'NAME'];?></td>
741 <?
foreach (
$arCols as $columnId => $col):?>
743 if (!is_null(
$cells[
$n][$columnId]))
745 if ($columnId ===
'NUMBER')
749 elseif ($columnId ===
'NAME')
752 <td
align=
"<?=($n > $cntBasketItem) ? 'right' : 'left';?>"
753 style=
"word-break: break-word; word-wrap: break-word; <? if ($accumulated) {?>border-width: 0 1pt 0 0; <? } ?>"
754 <?
if ($accumulated) { ?>colspan=
"<?=($accumulated+1); ?>"<? $accumulated = 0; } ?>>
757 <?
foreach (
$props[
$n] as $property) { ?>
759 <small><?=$property; ?></small>
769 <?
if ($accumulated) { ?>
770 style=
"border-width: 0 1pt 0 0"
771 colspan=
"<? echo $accumulated+1; ?>"
772 <? $accumulated = 0; } ?>>
773 <?
if ($columnId ==
'PRICE' || $columnId ==
'SUM'
774 || $columnId ==
'VAT_RATE' || $columnId ==
'VAT_SUM' || $columnId ==
'TOTAL'):?>
775 <nobr><?=
$cells[
$n][$columnId];?></nobr>
794<?
if (
$params[
'BILLBY_TOTAL_SHOW'] ==
'Y'): ?>
795 <div
style=
"margin-top: 5pt; font-weight: bold; word-break: break-word; word-wrap: break-word;"><?
796 $inWords = in_array(
$params[
'CURRENCY'],
array(
"RUR",
"RUB",
"UAH",
"KZT",
"BYR",
"BYN"));
797 echo Loc::getMessage(
'SALE_HPS_BILLBY_TOTAL_VAT').
': ';
804 echo Loc::getMessage(
'SALE_HPS_BILLBY_TOTAL_SUM_WITH_VAT').
': ';
815<?
if (
$params[
"BILLBY_COMMENT1"] ||
$params[
"BILLBY_COMMENT2"]) { ?>
817 <?
if (
$params[
"BILLBY_COMMENT1"]) { ?>
819 array(
'#</div>\s*<div[^>]*>#i',
'#</?div>#i'),
array(
'<br>',
'<br>'),
821 ),
'',
array(), 0)); ?>
825 <?
if (
$params[
"BILLBY_COMMENT2"]) { ?>
827 array(
'#</div>\s*<div[^>]*>#i',
'#</?div>#i'),
array(
'<br>',
'<br>'),
829 ),
'',
array(), 0)); ?>
838<?
if (
$params[
'BILLBY_SIGN_SHOW'] ==
'Y'):?>
841 $params[
"BILLBY_PATH_TO_STAMP"],
843 'style="position: absolute; left: 40pt; "'
847 <div
style=
"position: relative">
849 <?
if (
$params[
"SELLER_COMPANY_DIRECTOR_POSITION"]) { ?>
852 <td
style=
"width: 160pt; border-bottom: 1pt solid #000000; text-align: center; ">
858 <?
if (
$params[
"SELLER_COMPANY_DIRECTOR_NAME"]) { ?>
863 <tr><td colspan=
"3">&
nbsp;</td></tr>
865 <?
if (
$params[
"SELLER_COMPANY_ACCOUNTANT_POSITION"]) { ?>
868 <td
style=
"width: 160pt; border-bottom: 1pt solid #000000; text-align: center; ">
874 <?
if (
$params[
"SELLER_COMPANY_ACCOUNTANT_NAME"]) { ?>
static ShowImage($strImage, $iMaxW=0, $iMaxH=0, $sParams=null, $strImageUrl="", $bPopup=false, $sPopupTitle=false, $iSizeWHTTP=0, $iSizeHHTTP=0, $strImageUrlTemplate="")
static _GetImgParams($strImage, $iSizeWHTTP=0, $iSizeHHTTP=0)
hidden PROPERTY[<?=$propertyIndex?>][CODE]<?=htmlspecialcharsEx( $propertyCode)?> height
bx popup label bx width30 PAGE_NEW_MENU_NAME text width
</td ></tr ></table ></td ></tr >< tr >< td class="bx-popup-label bx-width30"><?=GetMessage("PAGE_NEW_TAGS")?> array( $site)
bx_acc_lim_group_list limitGroupList[] multiple<?=$group[ 'ID']?> ID selected margin top
<? if( $useEditor3):?>< tr class="heading">< td colspan="2"><? echo GetMessage("FILEMAN_OPTION_SPELL_SET");?></td ></tr ><? if(function_exists( 'pspell_config_create')):$use_pspell_checked=(COption::GetOptionString( $module_id, "use_pspell", "Y")=="Y") ? "checked" :"";?>< tr >< td valign="top">< label for="use_pspell"><?echo GetMessage("FILEMAN_OPTION_USE_PSPELL");?></label >< br >< a title="<?echo GetMessage("FILEMAN_OPTION_ADDISH_DICS_TITLE");?> http
ConvertDateTime($datetime, $to_format=false, $from_site=false, $bSearchInSitesOnly=false)
FormatDate($format="", $timestamp=false, $now=false, ?string $languageId=null)
htmlspecialcharsback($str)
HTMLToTxt($str, $strSiteUrl="", $aDelete=[], $maxlen=70)
htmlspecialcharsbx($string, $flags=ENT_COMPAT, $doubleEncode=true)
MakeTimeStamp($datetime, $format=false)
global_menu_<?echo $menu["menu_id"]?> adm main menu item icon adm main menu item text text adm main menu hover adm submenu menucontainer menu_id menu_id items_id items_id desktop menu_id block none adm global submenu<?=($subMenuDisplay=="block" ? " adm-global-submenu-active" :"")?> global_submenu_<?echo $menu["menu_id"]?> text MAIN_PR_ADMIN_FAV items adm submenu items wrap adm submenu items stretch wrap BX adminMenu itemsStretchScroll()"> <table class if (!empty( $menu["items"])) elseif ( $menu[ 'menu_id']=='desktop') if ( $menu[ 'menu_id']=='desktop') endforeach
if( $daysToExpire >=0 &&$daysToExpire< 60 elseif)( $daysToExpire< 0)
<? endif;?> window document title
</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."%"
if( $arBasket=$dbBasket->Fetch()) if($vat > 0) $rowsCnt
if(CSalePaySystemAction::GetParamValue('BACKGROUND', false)) $margin
if($inWords) echo htmlspecialcharsbx(Number2Word_Rus(roundEx($totalVatSum $params['CURRENCY']
foreach( $params[ 'BASKET_ITEMS'] as $basketItem) if($params['DELIVERY_PRICE'] > 0) $totalRowIsLast
if($params['BILLBY_HEADER_SHOW']=='Y') $sellerInfoRows
if($params["BILLBY_ORDER_SUBJECT"]) if( $params["PAYMENT_DATE_PAY_BEFORE"]) if($params['BILLBY_PAYER_SHOW']=='Y') $currencyFormat
SaleFormatCurrency($fSum, $strCurrency, $OnlyValue=false, $withoutFormat=false)
const SALE_VALUE_PRECISION
Number2Word_Rus($source, $IS_MONEY="Y", $currency="")