3namespace Bitrix\Sale\Cashbox;
6use Bitrix\Main\Localization\Loc;
7use Bitrix\Main\NotImplementedException;
8use Bitrix\Sale\Cashbox\Internals\CashboxTable;
11Loc::loadMessages(__FILE__);
28 private $fields =
array();
36 public static function init()
38 $handlers = static::getHandlerList();
44 $className = (new \ReflectionClass(static::class))->getShortName();
45 return mb_strtolower($className);
51 public static function getHandlerList()
53 static $handlerList =
array();
61 $zone = \CBitrix24::getLicensePrefix();
63 elseif (
Main\Loader::includeModule(
'intranet'))
65 $zone = \CIntranetUtils::getPortalZone();
67 if ($zone ===
'ru' && $isCloud)
70 '\Bitrix\Sale\Cashbox\CashboxAtolFarm' =>
'/bitrix/modules/sale/lib/cashbox/cashboxatolfarm.php',
71 '\Bitrix\Sale\Cashbox\CashboxAtolFarmV4' =>
'/bitrix/modules/sale/lib/cashbox/cashboxatolfarmv4.php',
72 '\Bitrix\Sale\Cashbox\CashboxAtolFarmV5' =>
'/bitrix/modules/sale/lib/cashbox/cashboxatolfarmv5.php',
73 '\Bitrix\Sale\Cashbox\CashboxOrangeData' =>
'/bitrix/modules/sale/lib/cashbox/cashboxorangedata.php',
74 '\Bitrix\Sale\Cashbox\CashboxOrangeDataFfd12' =>
'/bitrix/modules/sale/lib/cashbox/cashboxorangedataffd12.php',
75 '\Bitrix\Sale\Cashbox\CashboxBusinessRu' =>
'/bitrix/modules/sale/lib/cashbox/cashboxbusinessru.php',
76 '\Bitrix\Sale\Cashbox\CashboxBusinessRuV5' =>
'/bitrix/modules/sale/lib/cashbox/cashboxbusinessruv5.php',
82 '\Bitrix\Sale\Cashbox\CashboxCheckbox' =>
'/bitrix/modules/sale/lib/cashbox/cashboxcheckbox.php',
88 '\Bitrix\Sale\Cashbox\CashboxAtolFarm' =>
'/bitrix/modules/sale/lib/cashbox/cashboxatolfarm.php',
89 '\Bitrix\Sale\Cashbox\CashboxAtolFarmV4' =>
'/bitrix/modules/sale/lib/cashbox/cashboxatolfarmv4.php',
90 '\Bitrix\Sale\Cashbox\CashboxAtolFarmV5' =>
'/bitrix/modules/sale/lib/cashbox/cashboxatolfarmv5.php',
91 '\Bitrix\Sale\Cashbox\CashboxOrangeData' =>
'/bitrix/modules/sale/lib/cashbox/cashboxorangedata.php',
92 '\Bitrix\Sale\Cashbox\CashboxOrangeDataFfd12' =>
'/bitrix/modules/sale/lib/cashbox/cashboxorangedataffd12.php',
93 '\Bitrix\Sale\Cashbox\CashboxBitrixV2' =>
'/bitrix/modules/sale/lib/cashbox/cashboxbitrixv2.php',
94 '\Bitrix\Sale\Cashbox\CashboxBitrixV3' =>
'/bitrix/modules/sale/lib/cashbox/cashboxbitrixv3.php',
95 '\Bitrix\Sale\Cashbox\CashboxBitrix' =>
'/bitrix/modules/sale/lib/cashbox/cashboxbitrix.php',
96 '\Bitrix\Sale\Cashbox\Cashbox1C' =>
'/bitrix/modules/sale/lib/cashbox/cashbox1c.php',
97 '\Bitrix\Sale\Cashbox\CashboxCheckbox' =>
'/bitrix/modules/sale/lib/cashbox/cashboxcheckbox.php',
98 '\Bitrix\Sale\Cashbox\CashboxBusinessRu' =>
'/bitrix/modules/sale/lib/cashbox/cashboxbusinessru.php',
99 '\Bitrix\Sale\Cashbox\CashboxBusinessRuV5' =>
'/bitrix/modules/sale/lib/cashbox/cashboxbusinessruv5.php',
103 $handlerList[
'\Bitrix\Sale\Cashbox\CashboxRest'] =
'/bitrix/modules/sale/lib/cashbox/cashboxrest.php';
105 $handlerList[
'\Bitrix\Sale\Cashbox\CashboxRobokassa'] =
'/bitrix/modules/sale/lib/cashbox/cashboxrobokassa.php';
106 $handlerList[
'\Bitrix\Sale\Cashbox\CashboxYooKassa'] =
'/bitrix/modules/sale/lib/cashbox/cashboxyookassa.php';
108 $event =
new Main\Event(
'sale', static::EVENT_ON_GET_CUSTOM_CASHBOX_HANDLERS);
110 $resultList =
$event->getResults();
112 if (is_array($resultList) && !empty($resultList))
114 foreach ($resultList as $eventResult)
117 if ($eventResult->getType() === Main\EventResult::SUCCESS)
119 $params = $eventResult->getParameters();
121 $handlerList = array_merge($handlerList,
$params);
140 if (class_exists($handler))
161 return $this->fields[
$name] ??
null;
169 if ($this->ofd ===
null)
205 $map = $this->fields[
'SETTINGS'];
228 public function getCheckLink(
array $linkParams)
242 $ofd = $this->getOfd();
245 return $ofd->generateCheckLink($linkParams);
292 return CheckManager::savePrintResult($checkId,
$result);
321 unset($fields[
'OFD_SETTINGS']);
328 $r = $ofd->validate();
329 if (!$r->isSuccess())
331 $result->addErrors($r->getErrors());
342 foreach ($fields as
$code => $value)
344 if (is_array($value))
347 if (!$r->isSuccess())
349 $result->addErrors($r->getErrors());
360 $requiredFields = $this->getRequiredFields();
365 'SALE_CASHBOX_VALIDATE_ERROR',
366 [
'#FIELD_ID#' => $requiredFields[
$code]]
378 $requiredFields = $this->getRequiredFields();
380 return isset($requiredFields[$field]);
399 private function getRequiredFields()
401 $result = static::getGeneralRequiredFields();
403 $settings = static::getSettings($this->getField(
'KKM_ID'));
404 foreach (
$settings as $groupId => $group)
406 foreach ($group[
'ITEMS'] as
$code => $item)
409 isset($group[
'REQUIRED']) && $group[
'REQUIRED'] ===
'Y'
410 || isset($item[
'REQUIRED']) && $item[
'REQUIRED'] ===
'Y'
427 $map = CashboxTable::getMap();
430 'NAME' =>
$map[
'NAME'][
'title'],
431 'EMAIL' =>
$map[
'EMAIL'][
'title'],
432 'HANDLER' =>
$map[
'HANDLER'][
'title']
445 $domain = $server->getServerName();
449 $type.static::UUID_DELIMITER.
450 $domain.static::UUID_DELIMITER.
451 $id.static::UUID_DELIMITER.
455 return mb_substr($uuid, 0, static::MAX_UUID_LENGTH);
464 $info = explode(static::UUID_DELIMITER, $uuid);
492 && $this::isCorrectionOn()
519 return static::getFfdVersion() >= 1.05;
529 if (static::isSupportedDirectCheckLink())
if(!Loader::includeModule('catalog')) if(!AccessController::getCurrent() ->check(ActionDictionary::ACTION_PRICE_EDIT)) if(!check_bitrix_sessid()) $request
static includeModule($moduleName)
static registerAutoLoadClasses($moduleName, array $classes)
const PARAM_OFD_RECEIPT_URL
static extractZReportData(array $data)
static buildUuid($type, $id)
static getErrorType($errorCode)
static getSettings($modelId=0)
static getGeneralRequiredFields()
static isOfdSettingsNeeded()
buildCheckQuery(Check $check)
static getSupportedKkmModels()
static isSupportedFFD105()
static applyZReportResult(array $data)
static extractCheckData(array $data)
static create(array $settings)
static applyCheckResult(array $data)
const EVENT_ON_GET_CUSTOM_CASHBOX_HANDLERS
static isSupportedDirectCheckLink()
getValueFromSettings($name, $code)
static create(Cashbox $cashbox)
static saveZReportPrintResult($reportId, $data)
</td ></tr ></table ></td ></tr >< tr >< td class="bx-popup-label bx-width30"><?=GetMessage("PAGE_NEW_TAGS")?> array( $site)
if(!is_null($config))($config as $configItem)(! $configItem->isVisible()) $code
if($NS['step']==6) if( $NS[ 'step']==7) if(COption::GetOptionInt('main', 'disk_space', 0) > 0) $info
if( $daysToExpire >=0 &&$daysToExpire< 60 elseif)( $daysToExpire< 0)
if($inWords) echo htmlspecialcharsbx(Number2Word_Rus(roundEx($totalVatSum $params['CURRENCY']