3namespace Sale\Handlers\PaySystem;
6use Bitrix\Main\Localization\Loc;
7use Bitrix\Main\Request;
9use Bitrix\Main\Type\Date;
11use Bitrix\Sale\Payment;
12use Bitrix\Sale\PaySystem;
15Loc::loadMessages(__FILE__);
54 \CCurrencyLang::disableUseHideZero();
68 protected function getPreparedParams(Sale\Payment
$payment, Request
$request =
null)
78 'CURRENCY' =>
$payment->getField(
'CURRENCY'),
79 'DATE_BILL' =>
$payment->getField(
'DATE_BILL'),
80 'SUM' => Sale\PriceMaths::roundPrecision(
$order->getPrice()),
82 'DISCOUNT_PRICE' => Sale\PriceMaths::roundPrecision(
$order->getDiscountPrice())
89 $shipmentCollection =
$order->getShipmentCollection();
92 foreach ($shipmentCollection as $shipment)
94 if (!$shipment->isSystem())
96 $extraParams[
'DELIVERY_NAME'] = $shipment->getDeliveryName();
98 $extraParams[
'DELIVERY_VAT_RATE'] = $shipment->getVatRate();
103 $basket =
$order->getBasket();
109 if ($userColumns !==
null)
112 $userColumns = unserialize($userColumns, [
'allowed_classes' =>
false]);
115 foreach ($userColumns as $id => $columns)
118 'NAME' => $columns[
'NAME'],
119 'SORT' => $columns[
'SORT']
128 foreach ($basket->getBasketItems() as $basketItem)
130 $productProps[$basketItem->getProductId()] =
array();
133 'NAME' => $basketItem->getField(
"NAME"),
134 'IS_VAT_IN_PRICE' => $basketItem->isVatInPrice(),
135 'PRODUCT_ID' => $basketItem->getProductId(),
136 'PRICE' => $basketItem->getPrice(),
137 'VAT_RATE' => $basketItem->getVatRate(),
138 'QUANTITY' => $basketItem->getQuantity(),
139 'MEASURE_NAME' => $basketItem->getField(
"MEASURE_NAME"),
140 'CURRENCY' => $basketItem->getCurrency(),
143 $item[
'PROPS'] =
array();
144 foreach ($basketItem->getPropertyCollection() as $basketPropertyItem)
146 $item[
'PROPS'][] =
array(
147 'CODE' => $basketPropertyItem->getField(
'CODE'),
148 'NAME' => $basketPropertyItem->getField(
'NAME'),
149 'VALUE' => $basketPropertyItem->getField(
'VALUE')
153 $extraParams[
'BASKET_ITEMS'][$basketItem->getId()] = $item;
156 if ($ids && Loader::includeModule(
'crm') && Loader::includeModule(
'iblock'))
158 $productIdsByCatalogMap = [];
159 $dbRes = \CCrmProduct::GetList([], [
'ID' => array_keys($productProps)], [
'ID',
'CATALOG_ID']);
162 $catalogId = isset(
$data[
'CATALOG_ID']) ? intval(
$data[
'CATALOG_ID']) : \CCrmCatalog::EnsureDefaultExists();
163 if (!isset($productIdsByCatalogMap[$catalogId]))
165 $productIdsByCatalogMap[$catalogId] = [];
168 $productIdsByCatalogMap[$catalogId][] =
$data[
'ID'];
171 if ($productIdsByCatalogMap)
173 foreach ($productIdsByCatalogMap as $catalogId => $ids)
175 \CIBlockElement::GetPropertyValuesArray($productProps, $catalogId,
array(
'ID' => $ids));
181 foreach ($productProps[$row[
'PRODUCT_ID']] as $property)
183 $extraParams[
'BASKET_ITEMS'][
$i][
'PROPERTY_'.$property[
'ID']] = $property[
'VALUE'];
198 if (Loader::includeModule(
'currency'))
200 $currencyIterator = Currency\CurrencyTable::getList([
201 'select' => [
'CURRENCY'],
202 'cache' => [
'ttl' => 86400],
204 while (
$currency = $currencyIterator->fetch())
210 return $currencyList;
216 public function isAffordPdf()
229 'ACCOUNT_NUMBER' =>
'A1',
230 'PAYMENT_DATE_INSERT' =>
new Date(),
231 'DATE_INSERT' =>
new Date(),
237 'TAX_NAME' => Loc::getMessage(
'SALE_HPS_BILL_TAX'),
238 'IS_IN_PRICE' =>
'Y',
240 'VALUE_MONEY' => 900,
245 'BASKET_ITEMS' =>
array(
247 'NAME' => Loc::getMessage(
'SALE_HPS_BILL_BASKET_ITEM_NAME'),
248 'IS_VAT_IN_PRICE' =>
false,
252 'MEASURE_NAME' => Loc::getMessage(
'SALE_HPS_BILL_BASKET_ITEM_MEASURE'),
256 'SELLER_COMPANY_BANK_CITY' => Loc::getMessage(
'SALE_HPS_BILL_BANK_CITY'),
257 'SELLER_COMPANY_ADDRESS' => Loc::getMessage(
'SALE_HPS_BILL_BANK_ADDRESS'),
258 'SELLER_COMPANY_PHONE' =>
'+76589321451',
259 'SELLER_COMPANY_BANK_NAME' => Loc::getMessage(
'SALE_HPS_BILL_BANK_NAME'),
260 'SELLER_COMPANY_BANK_ACCOUNT' =>
'0000 0000 0000 0000 0000',
261 'SELLER_COMPANY_INN' =>
'000011112222',
262 'SELLER_COMPANY_KPP' =>
'123456789',
263 'SELLER_COMPANY_NAME' => Loc::getMessage(
'SALE_HPS_BILL_COMPANY_NAME'),
264 'SELLER_COMPANY_BANK_BIC' =>
'0123456',
265 'SELLER_COMPANY_BANK_ACCOUNT_CORR' =>
'1111 1111 1111 1111',
266 'BUYER_PERSON_COMPANY_NAME' => Loc::getMessage(
'SALE_HPS_BILL_BUYER_COMPANY_NAME'),
267 'BUYER_PERSON_COMPANY_INN' =>
'0123456789',
268 'BUYER_PERSON_COMPANY_PHONE' =>
'+79091234523',
269 'BUYER_PERSON_COMPANY_FAX' =>
'88002000600',
270 'BUYER_PERSON_COMPANY_ADDRESS' => Loc::getMessage(
'SALE_HPS_BILL_BUYER_COMPANY_ADDRESS'),
271 'BUYER_PERSON_COMPANY_NAME_CONTACT' => Loc::getMessage(
'SALE_HPS_BILL_BUYER_NAME_CONTACT'),
272 'SELLER_COMPANY_DIRECTOR_POSITION' => Loc::getMessage(
'SALE_HPS_BILL_DIRECTOR_POSITION'),
273 'SELLER_COMPANY_DIRECTOR_NAME' => Loc::getMessage(
'SALE_HPS_BILL_DIRECTOR_NAME'),
274 'SELLER_COMPANY_ACCOUNTANT_POSITION' => Loc::getMessage(
'SALE_HPS_BILL_ACCOUNTANT_POSITION'),
275 'SELLER_COMPANY_ACCOUNTANT_NAME' => Loc::getMessage(
'SALE_HPS_BILL_ACCOUNTANT_NAME'),
276 'SELLER_COMPANY_EMAIL' =>
'my@company.com',
279 if (Loader::includeModule(
'crm') && Loader::includeModule(
'iblock'))
282 'IBLOCK_ID' => intval(\CCrmCatalog::EnsureDefaultExists()),
283 'CHECK_PERMISSIONS' =>
'N',
284 '!PROPERTY_TYPE' =>
'G'
288 while ($arRow =
$dbRes->Fetch())
289 $data[
'BASKET_ITEMS'][0][
'PROPERTY_'.$arRow[
'ID']] =
'test';
303 public function getContent(Payment
$payment)
316 if ($prevMode !== self::STRING)
321 foreach ([
'pdf',
'GET_CONTENT'] as
$key)
323 if (array_key_exists(
$key, $origRequest))
341 public function getFile(Payment
$payment)
345 $today =
new Type\Date();
346 $fileName =
'invoice_'.$order->getField(
'ACCOUNT_NUMBER').
'_'.str_replace(
array(
'.',
'\\',
'/'),
'-' ,$today->toString()).
'.pdf';
349 'type' =>
'application/pdf',
350 'content' => $this->getContent(
$payment),
351 'MODULE_ID' =>
'sale'
353 $fileId = \CFile::SaveFile($fileData,
'sale');
355 return \CFile::GetFileArray($fileId);
362 public function isGenerated(Payment
$payment)
if(!Loader::includeModule('catalog')) if(!AccessController::getCurrent() ->check(ActionDictionary::ACTION_PRICE_EDIT)) if(!check_bitrix_sessid()) $request
setExtraParams(array $values)
getBusinessValue(Payment $payment=null, $code)
</td ></tr ></table ></td ></tr >< tr >< td class="bx-popup-label bx-width30"><?=GetMessage("PAGE_NEW_TAGS")?> array( $site)
IsModuleInstalled($module_id)
if(empty($signedUserToken)) $key