3namespace Bitrix\Sale\Cashbox;
7use Bitrix\Main\Localization;
8use Bitrix\Sale\Cashbox\Internals;
9use Bitrix\Sale\PriceMaths;
40 if (isset($typeMap[
$data[
'type']]))
49 $result[
'uuid'] = static::buildUuid(static::UUID_TYPE_CHECK,
$data[
'unique_id']);
52 foreach (
$data[
'items'] as $item)
59 'name' => $item[
'name'],
60 'price' => (
float)$item[
'base_price'],
61 'quantity' => $item[
'quantity'],
65 if (isset($item[
'discount']) && is_array($item[
'discount']))
68 $value[
'discount'] = $discountValue;
70 $discountType = $item[
'discount'][
'discount_type'] ===
'P' ? 1 : 0;
71 $value[
'discount_type'] = $discountType;
79 $dateTime =
$data[
'date_create'];
80 $result[
'timestamp'] = (string)$dateTime->getTimestamp();
94 'type' => static::TYPE_Z_REPORT,
95 'uuid' => static::buildUuid(static::UUID_TYPE_REPORT, $id),
96 'timestamp' => (
string)$dateTime->getTimestamp(),
97 'zn' => $this->getField(
'NUMBER_KKM')
118 if (isset($cashbox[
'ID']) && (
int)$cashbox[
'ID'] > 0)
120 if ($cashbox[
'ENABLED'] !== $cashbox[
'PRESENTLY_ENABLED'])
122 Manager::update($cashbox[
'ID'],
array(
'ENABLED' => $cashbox[
'PRESENTLY_ENABLED']));
124 if ($cashbox[
'PRESENTLY_ENABLED'] ===
'N')
126 static::showAlarmMessage($cashbox[
'ID']);
131 if (isset($cashbox[
'SETTINGS']))
133 $fields[
'SETTINGS'] = $cashbox[
'SETTINGS'];
136 if (isset($cashbox[
'HANDLER']))
138 $fields[
'HANDLER'] = $cashbox[
'HANDLER'];
141 Manager::update($cashbox[
'ID'], $fields);
149 'NAME' => static::getName(),
150 'NUMBER_KKM' => $cashbox[
'NUMBER_KKM'],
151 'HANDLER' => $cashbox[
'HANDLER'],
152 'ENABLED' => $cashbox[
'PRESENTLY_ENABLED'],
154 'EMAIL' => self::getCashboxDefaultEmail(),
160 if ($cashbox[
'PRESENTLY_ENABLED'] ===
'N')
162 static::showAlarmMessage(
$result->getId());
167 'CASHBOX_ID' =>
$result->getId(),
171 'CASH_SUM' => $cashbox[
'CACHE'],
172 'CASHLESS_SUM' => $cashbox[
'INCOME'] - $cashbox[
'CACHE'],
173 'CUMULATIVE_SUM' => $cashbox[
'NZ_SUM'],
190 private static function getCashboxDefaultEmail()
195 $dbRes = Main\UserGroupTable::getList([
196 'select' => [
'EMAIL' =>
'USER.EMAIL'],
220 $tag =
"CASHBOX_STATUS_ERROR";
230 "MESSAGE" =>
Localization\Loc::getMessage(
'SALE_CASHBOX_ACCESS_UNAVAILABLE', [
'#CASHBOX_ID#' => $cashboxId]),
232 "MODULE_ID" =>
"SALE",
233 "ENABLE_CLOSE" =>
"Y",
247 if (isset(
$data[
'kkm']) && is_array(
$data[
'kkm']))
249 $factoryNum =
array();
250 foreach (
$data[
'kkm'] as $kkm)
252 $factoryNum[] = $kkm[
'zn'];
256 foreach ($cashboxList as $item)
258 if (in_array($item[
'NUMBER_KKM'], $factoryNum))
260 $result[$item[
'NUMBER_KKM']] = $item;
264 foreach (
$data[
'kkm'] as $kkm)
266 if (!isset(
$result[$kkm[
'zn']]))
269 'NUMBER_KKM' => $kkm[
'zn'],
270 'NUMBER_FN' => $kkm[
'fn'],
271 'HANDLER' =>
'\\'.get_called_class(),
272 'CACHE' => $kkm[
'cache'],
273 'INCOME' => $kkm[
'reg_income'],
274 'NZ_SUM' => $kkm[
'nz_sum']
278 $result[$kkm[
'zn']][
'PRESENTLY_ENABLED'] = ($kkm[
'status'] ===
'ok') ?
'Y' :
'N';
291 $processedIds =
array();
293 foreach (
$data[
'kkm'] as $kkm)
295 if (isset($kkm[
'printed']) && is_array($kkm[
'printed']))
297 foreach ($kkm[
'printed'] as $item)
299 $uuid = static::parseUuid($item[
'uuid']);
302 if ($uuid[
'type'] === static::UUID_TYPE_CHECK)
304 $result = static::applyCheckResult($item);
306 elseif ($uuid[
'type'] === static::UUID_TYPE_REPORT)
308 $result = static::applyZReportResult($item);
315 $processedIds[] = $item[
'uuid'];
324 $processedIds[] = $item[
'uuid'];
334 return $processedIds;
346 'TYPE' => $uuid[
'type'],
349 if (
$data[
'code'] !== 0 && isset(
$data[
'message']))
355 $errorType = static::getErrorType(
$data[
'code']);
358 'CODE' =>
$data[
'code'],
360 'TYPE' => ($errorType ===
Errors\Error::TYPE) ?
Errors\Error::TYPE :
Errors\Warning::TYPE
364 $result[
'LINK_PARAMS'] = static::getCheckLinkParams(
$data);
373 private static function getCheckLinkParams(
$data)
375 $linkParams = static::parseQrParam(
$data[
'qr']);
384 if (isset(
$data[
'rn']))
401 'TYPE' => $uuid[
'type'],
404 if (
$data[
'code'] !== 0 && isset(
$data[
'message']))
410 $errorType = static::getErrorType(
$data[
'code']);
411 if ($errorType ==
null)
421 $result[
'LINK_PARAMS'] = static::parseQrParam(
$data[
'qr']);
442 private static function parseQrParam($qr)
450 [
$key, $value] = explode(
'=', $param);
465 $value = (string)$dateTime->getTimestamp();
491 $errors =
array(-3800, -3803, -3804, -3805, -3816, -3807, -3896, -3897, -4026);
492 if (in_array($errorCode,
$errors))
496 if (in_array($errorCode, $warnings))
510 $kkmList = static::getSupportedKkmModels();
511 if (isset($kkmList[$modelId]))
513 $defaultSettings = $kkmList[$modelId][
'SETTINGS'];
515 if (isset($defaultSettings[
'PAYMENT_TYPE']))
518 'LABEL' =>
Localization\Loc::getMessage(
'SALE_CASHBOX_BITRIX_SETTINGS_P_TYPE'),
523 foreach ($defaultSettings[
'PAYMENT_TYPE'] as
$type => $value)
527 'LABEL' =>
Localization\Loc::getMessage(
'SALE_CASHBOX_BITRIX_SETTINGS_P_TYPE_LABEL_'.mb_strtoupper(
$type)),
535 'LABEL' =>
Localization\Loc::getMessage(
'SALE_CASHBOX_BITRIX_SETTINGS_VAT'),
540 'LABEL' =>
Localization\Loc::getMessage(
'SALE_CASHBOX_BITRIX_SETTINGS_VAT_LABEL_NOT_VAT'),
541 'VALUE' => $defaultSettings[
'VAT'][
'NOT_VAT']
546 if (
Main\Loader::includeModule(
'catalog'))
555 if (isset($defaultSettings[
'VAT'][(
int)
$vat[
'RATE']]))
556 $value = $defaultSettings[
'VAT'][(int)
$vat[
'RATE']];
560 'LABEL' =>
$vat[
'NAME'].
' ['.(
int)
$vat[
'RATE'].
'%]',
569 for (
$i = 0;
$i < 24;
$i++)
571 $value = (
$i < 10) ?
'0'.
$i :
$i;
576 for (
$i = 0;
$i < 60;
$i+=5)
578 $value = (
$i < 10) ?
'0'.
$i :
$i;
579 $minutes[
$i] = $value;
583 'LABEL' =>
Localization\Loc::getMessage(
'SALE_CASHBOX_BITRIX_SETTINGS_Z_REPORT'),
586 'TYPE' =>
'DELIVERY_MULTI_CONTROL_STRING',
587 'LABEL' =>
Localization\Loc::getMessage(
'SALE_CASHBOX_BITRIX_SETTINGS_Z_REPORT_LABEL'),
591 'LABEL' =>
Localization\Loc::getMessage(
'SALE_CASHBOX_BITRIX_SETTINGS_Z_REPORT_LABEL_H'),
597 'LABEL' =>
Localization\Loc::getMessage(
'SALE_CASHBOX_BITRIX_SETTINGS_Z_REPORT_LABEL_M'),
599 'OPTIONS' => $minutes
637 $generalRequiredFields = parent::getGeneralRequiredFields();
640 $generalRequiredFields[
'KKM_ID'] =
$map[
'KKM_ID'][
'title'];
641 $generalRequiredFields[
'NUMBER_KKM'] =
$map[
'NUMBER_KKM'][
'title'];
643 return $generalRequiredFields;
661 'PAYMENT_TYPE' =>
array(
if(!Loader::includeModule('catalog')) if(!AccessController::getCurrent() ->check(ActionDictionary::ACTION_PRICE_EDIT)) if(!check_bitrix_sessid()) $request
static get($moduleId, $name, $default="", $siteId=false)
static loadMessages($file)
static getMessage($code, $replace=null, $language=null)
static getList(array $parameters=array())
const PARAM_CALCULATION_ATTR
const PARAM_FISCAL_DOC_ATTR
const PARAM_FISCAL_DOC_NUMBER
const PARAM_REG_NUMBER_KKT
const PAYMENT_TYPE_CASHLESS
static extractZReportData(array $data)
static extractSettingsFromRequest(Main\HttpRequest $request)
static getErrorType($errorCode)
static getSettings($modelId=0)
static getGeneralRequiredFields()
static getCashboxList(array $data)
static getSupportedKkmModels()
static saveCashbox(array $cashbox)
static showAlarmMessage($cashboxId)
static extractCheckData(array $data)
static applyPrintResult(array $data)
buildCheckQuery(Check $check)
getValueFromSettings($name, $code)
static getObjectById($id)
static getListFromCache()
static roundPrecision($value)
static GetList($arSort=[], $arFilter=[])
</td ></tr ></table ></td ></tr >< tr >< td class="bx-popup-label bx-width30"><?=GetMessage("PAGE_NEW_TAGS")?> array( $site)
if( $daysToExpire >=0 &&$daysToExpire< 60 elseif)( $daysToExpire< 0)
if(empty($signedUserToken)) $key
if($inWords) echo htmlspecialcharsbx(Number2Word_Rus(roundEx($totalVatSum $params['CURRENCY']