1163 lines
28 KiB
PHP
1163 lines
28 KiB
PHP
<?php
|
|
|
|
/**
|
|
* PHP version 7.1
|
|
*
|
|
* @category Integration
|
|
* @package Intaro\RetailCrm\Component
|
|
* @author RetailCRM <integration@retailcrm.ru>
|
|
* @license MIT
|
|
* @link http://retailcrm.ru
|
|
* @see http://retailcrm.ru/docs
|
|
*/
|
|
|
|
namespace Intaro\RetailCrm\Component;
|
|
|
|
use Bitrix\Currency\CurrencyManager;
|
|
use Bitrix\Main\ArgumentNullException;
|
|
use Bitrix\Main\ArgumentOutOfRangeException;
|
|
use Bitrix\Main\Config\Option;
|
|
use COption;
|
|
use Intaro\RetailCrm\Service\Utils;
|
|
|
|
/**
|
|
* Class ConfigProvider
|
|
*
|
|
* @package Intaro\RetailCrm\Component
|
|
*/
|
|
class ConfigProvider
|
|
{
|
|
/** @var bool|null|string */
|
|
protected static $apiUrl;
|
|
|
|
/** @var array $integrationPayment */
|
|
public static $integrationPayment;
|
|
|
|
/** @var bool|null|string */
|
|
protected static $apiKey;
|
|
|
|
/** @var bool|null|string */
|
|
protected static $catalogBasePrice;
|
|
|
|
/** @var bool|null|string */
|
|
protected static $currency;
|
|
|
|
/** @var bool|null|string */
|
|
protected static $orderDimensions;
|
|
|
|
/** @var bool|null|string */
|
|
protected static $corporateClientName;
|
|
|
|
/** @var bool|null|string */
|
|
protected static $corporateClientAddress;
|
|
|
|
/** @var bool|null|string */
|
|
protected static $corporateClient;
|
|
|
|
/** @var bool|null|string $shipmentDeducted */
|
|
protected static $shipmentDeducted;
|
|
|
|
/** @var array $sitesList */
|
|
protected static $sitesList;
|
|
|
|
/** @var array $sitesListCorporate */
|
|
protected static $sitesListCorporate;
|
|
|
|
/** @var bool|null|string $orderNumbers */
|
|
protected static $orderNumbers;
|
|
|
|
/** @var bool|null|string $orderVat */
|
|
protected static $orderVat;
|
|
|
|
/** @var null|string $orderVat */
|
|
protected static $orderCouponField;
|
|
|
|
/** @var array $orderTypes */
|
|
protected static $orderTypes;
|
|
|
|
/** @var array $deliveryTypes */
|
|
protected static $deliveryTypes;
|
|
|
|
/** @var array $paymentTypes */
|
|
protected static $paymentTypes;
|
|
|
|
/** @var array $paymentStatuses */
|
|
protected static $paymentStatuses;
|
|
|
|
/** @var array $payment */
|
|
protected static $payment;
|
|
|
|
/** @var array $orderProps */
|
|
protected static $orderProps;
|
|
|
|
/** @var array $legalDetails */
|
|
protected static $legalDetails;
|
|
|
|
/** @var array $contragentTypes */
|
|
protected static $contragentTypes;
|
|
|
|
/** @var array $cancellableOrderPaymentStatuses */
|
|
protected static $cancellableOrderPaymentStatuses;
|
|
|
|
/** @var array $customFields */
|
|
protected static $customFields;
|
|
|
|
/** @var array $infoblocksInventories */
|
|
protected static $infoblocksInventories;
|
|
|
|
/** @var array $stores */
|
|
protected static $stores;
|
|
|
|
/** @var array $shops */
|
|
protected static $shops;
|
|
|
|
/** @var array $integrationDeliveriesMapping */
|
|
protected static $integrationDeliveriesMapping;
|
|
|
|
/** @var bool|null|string $loyaltyProgramStatus */
|
|
protected static $loyaltyProgramStatus;
|
|
|
|
/**
|
|
* @return bool|string|null
|
|
*/
|
|
public static function getCrmPurchasePrice()
|
|
{
|
|
return static::getOption(Constants::CRM_PURCHASE_PRICE_NULL);
|
|
}
|
|
|
|
public static function getProtocol()
|
|
{
|
|
return static::getOption(Constants::PROTOCOL);
|
|
}
|
|
|
|
/**
|
|
* @return string
|
|
*/
|
|
public static function getSiteName(): string
|
|
{
|
|
$siteName = COption::GetOptionString('main', 'site_name');
|
|
|
|
if (!$siteName) {
|
|
return '';
|
|
}
|
|
|
|
return $siteName;
|
|
}
|
|
|
|
/**
|
|
* @param $profileId
|
|
*
|
|
* @return false|string|null
|
|
*/
|
|
public static function getCatalogBasePriceByProfile($profileId)
|
|
{
|
|
return COption::GetOptionString(
|
|
Constants::MODULE_ID,
|
|
Constants::CRM_CATALOG_BASE_PRICE . '_' . $profileId,
|
|
0
|
|
);
|
|
}
|
|
|
|
/**
|
|
* @return string
|
|
*/
|
|
public static function getDefaultIcmlPath(): string
|
|
{
|
|
return (COption::GetOptionString(
|
|
'catalog',
|
|
'export_default_path',
|
|
'/bitrix/catalog_export/'))
|
|
. 'retailcrm.xml';
|
|
}
|
|
|
|
/**
|
|
* @return mixed
|
|
*/
|
|
public static function getUsersMap()
|
|
{
|
|
return static::getUnserializedOption(Constants::CRM_USERS_MAP);
|
|
}
|
|
|
|
/**
|
|
* @param array|null $userMap
|
|
*
|
|
* @return void
|
|
* @throws \Bitrix\Main\ArgumentOutOfRangeException
|
|
*/
|
|
public static function setUsersMap(?array $userMap): void
|
|
{
|
|
static::setOption(Constants::CRM_USERS_MAP, serialize($userMap));
|
|
}
|
|
|
|
/**
|
|
* @param $profileId
|
|
*
|
|
* @return false|string|null
|
|
*/
|
|
public static function getCrmBasePrice($profileId)
|
|
{
|
|
return self::getOption(Constants::CRM_CATALOG_BASE_PRICE . '_' . $profileId, 1);
|
|
}
|
|
|
|
/**
|
|
* @param $profileId
|
|
* @param $priceTypes
|
|
*
|
|
* @throws \Bitrix\Main\ArgumentOutOfRangeException
|
|
*/
|
|
public static function setProfileBasePrice($profileId, $priceTypes): void
|
|
{
|
|
self::setOption(
|
|
Constants::CRM_CATALOG_BASE_PRICE . '_' . $profileId,
|
|
htmlspecialchars(trim($priceTypes))
|
|
);
|
|
}
|
|
|
|
/**
|
|
* getIntegrationPaymentTypes
|
|
*
|
|
* @return array
|
|
*/
|
|
public static function getIntegrationPaymentTypes(): array
|
|
{
|
|
if (self::isEmptyNotZero(static::$integrationPayment)) {
|
|
static::$integrationPayment = static::getUnserializedOption(Constants::CRM_INTEGRATION_PAYMENT);
|
|
}
|
|
|
|
return is_array(static::$integrationPayment) ? static::$integrationPayment : [];
|
|
}
|
|
|
|
/**
|
|
* setIntegrationPaymentTypes
|
|
*
|
|
* @param $integrationPayment
|
|
*
|
|
* @throws \Bitrix\Main\ArgumentOutOfRangeException
|
|
*/
|
|
public static function setIntegrationPaymentTypes($integrationPayment): void
|
|
{
|
|
static::setOption(Constants::CRM_INTEGRATION_PAYMENT, serialize((new Utils())
|
|
->clearArray($integrationPayment)));
|
|
}
|
|
|
|
/**
|
|
* setIntegrationDelivery
|
|
*
|
|
* @param $deliveryIntegrationCode
|
|
*
|
|
* @throws \Bitrix\Main\ArgumentOutOfRangeException
|
|
*/
|
|
public static function setIntegrationDelivery($deliveryIntegrationCode): void
|
|
{
|
|
static::setOption(Constants::CRM_INTEGRATION_DELIVERY, serialize((new Utils())
|
|
->clearArray($deliveryIntegrationCode)));
|
|
}
|
|
|
|
/**
|
|
* @return bool|string|null
|
|
*/
|
|
public static function getApiUrl()
|
|
{
|
|
if (self::isEmptyNotZero(static::$apiUrl)) {
|
|
static::$apiUrl = static::getOption(Constants::CRM_API_HOST_OPTION);
|
|
}
|
|
|
|
return static::$apiUrl;
|
|
}
|
|
|
|
/**
|
|
* @return bool|string|null
|
|
*/
|
|
public static function getApiKey()
|
|
{
|
|
if (self::isEmptyNotZero(static::$apiKey)) {
|
|
static::$apiKey = static::getOption(Constants::CRM_API_KEY_OPTION);
|
|
}
|
|
|
|
return static::$apiKey;
|
|
}
|
|
|
|
/**
|
|
* getCorporateClientName
|
|
*
|
|
* @return bool|string|null
|
|
*/
|
|
public static function getCorporateClientName()
|
|
{
|
|
if (self::isEmptyNotZero(static::$corporateClientName)) {
|
|
static::$corporateClientName = static::getOption(Constants::CRM_CORP_NAME);
|
|
}
|
|
|
|
return static::$corporateClientName;
|
|
}
|
|
|
|
/**
|
|
* getCorporateClientAddress
|
|
*
|
|
* @return bool|string|null
|
|
*/
|
|
public static function getCorporateClientAddress()
|
|
{
|
|
if (self::isEmptyNotZero(static::$corporateClientAddress)) {
|
|
static::$corporateClientAddress = static::getOption(Constants::CRM_CORP_ADDRESS);
|
|
}
|
|
|
|
return static::$corporateClientAddress;
|
|
}
|
|
|
|
/**
|
|
* getCorporateClient
|
|
*
|
|
* @return bool|string|null
|
|
*/
|
|
public static function getCorporateClientStatus()
|
|
{
|
|
if (self::isEmptyNotZero(static::$corporateClient)) {
|
|
static::$corporateClient = static::getOption(Constants::CRM_CC);
|
|
}
|
|
|
|
return static::$corporateClient;
|
|
}
|
|
|
|
/**
|
|
* Returns true if corporate clients are enabled
|
|
*
|
|
* @return bool
|
|
*/
|
|
public static function isCorporateClientEnabled(): bool
|
|
{
|
|
return self::getCorporateClientStatus() === 'Y';
|
|
}
|
|
|
|
/**
|
|
* getSitesList
|
|
*
|
|
* @return array
|
|
*/
|
|
public static function getSitesList()
|
|
{
|
|
if (self::isEmptyNotZero(static::$sitesList)) {
|
|
static::$sitesList = static::getUnserializedOption(Constants::CRM_SITES_LIST);
|
|
}
|
|
|
|
return static::$sitesList;
|
|
}
|
|
|
|
/**
|
|
* getSitesListCorporate
|
|
*
|
|
* @return array
|
|
*/
|
|
public static function getSitesListCorporate()
|
|
{
|
|
if (self::isEmptyNotZero(static::$sitesListCorporate)) {
|
|
static::$sitesListCorporate = static::getUnserializedOption(
|
|
Constants::CRM_SITES_LIST_CORPORATE
|
|
);
|
|
}
|
|
|
|
return static::$sitesListCorporate;
|
|
}
|
|
|
|
/**
|
|
* getOrderTypes
|
|
*
|
|
* @return array
|
|
*/
|
|
public static function getOrderTypes()
|
|
{
|
|
if (self::isEmptyNotZero(static::$orderTypes)) {
|
|
static::$orderTypes = static::getUnserializedOption(Constants::CRM_ORDER_TYPES_ARR);
|
|
}
|
|
|
|
return static::$orderTypes;
|
|
}
|
|
|
|
/**
|
|
* getDeliveryTypes
|
|
*
|
|
* @return array
|
|
*/
|
|
public static function getDeliveryTypes()
|
|
{
|
|
if (self::isEmptyNotZero(static::$deliveryTypes)) {
|
|
static::$deliveryTypes = static::getUnserializedOption(Constants::CRM_DELIVERY_TYPES_ARR);
|
|
}
|
|
|
|
return static::$deliveryTypes;
|
|
}
|
|
|
|
/**
|
|
* getPaymentTypes
|
|
*
|
|
* @return array
|
|
*/
|
|
public static function getPaymentTypes()
|
|
{
|
|
if (self::isEmptyNotZero(static::$paymentTypes)) {
|
|
static::$paymentTypes = static::getUnserializedOption(Constants::CRM_PAYMENT_TYPES);
|
|
}
|
|
|
|
return static::$paymentTypes;
|
|
}
|
|
|
|
/**
|
|
* getPaymentStatuses
|
|
*
|
|
* @return array
|
|
*/
|
|
public static function getPaymentStatuses()
|
|
{
|
|
if (self::isEmptyNotZero(static::$paymentStatuses)) {
|
|
static::$paymentStatuses = static::getUnserializedOption(Constants::CRM_PAYMENT_STATUSES);
|
|
}
|
|
|
|
return static::$paymentStatuses;
|
|
}
|
|
|
|
/**
|
|
* getPayment
|
|
*
|
|
* @return array
|
|
*/
|
|
public static function getPayment()
|
|
{
|
|
if (self::isEmptyNotZero(static::$payment)) {
|
|
static::$payment = static::getUnserializedOption(Constants::CRM_PAYMENT);
|
|
}
|
|
|
|
return static::$payment;
|
|
}
|
|
|
|
/**
|
|
* getOrderProps
|
|
*
|
|
* @return array
|
|
*/
|
|
public static function getOrderProps()
|
|
{
|
|
if (self::isEmptyNotZero(static::$orderProps)) {
|
|
static::$orderProps = static::getUnserializedOption(Constants::CRM_ORDER_PROPS);
|
|
}
|
|
|
|
return static::$orderProps;
|
|
}
|
|
|
|
/**
|
|
* getLegalDetails
|
|
*
|
|
* @return array
|
|
*/
|
|
public static function getLegalDetails()
|
|
{
|
|
if (self::isEmptyNotZero(static::$legalDetails)) {
|
|
static::$legalDetails = static::getUnserializedOption(Constants::CRM_LEGAL_DETAILS);
|
|
}
|
|
|
|
return static::$legalDetails;
|
|
}
|
|
|
|
/**
|
|
* getContragentTypes
|
|
*
|
|
* @return array
|
|
*/
|
|
public static function getContragentTypes()
|
|
{
|
|
if (self::isEmptyNotZero(static::$contragentTypes)) {
|
|
static::$contragentTypes = static::getUnserializedOption(Constants::CRM_CONTRAGENT_TYPE);
|
|
}
|
|
|
|
return static::$contragentTypes;
|
|
}
|
|
|
|
/**
|
|
* Returns contragent type for provided person type (PERSON_TYPE_ID in the Bitrix order).
|
|
* Returns null if nothing was found.
|
|
*
|
|
* @param string $personTypeId
|
|
*
|
|
* @return string|null
|
|
*/
|
|
public static function getContragentTypeForPersonType(string $personTypeId): ?string
|
|
{
|
|
$personTypes = static::getContragentTypes();
|
|
|
|
if (!empty($personTypes[$personTypeId])) {
|
|
return $personTypes[$personTypeId];
|
|
}
|
|
|
|
return null;
|
|
}
|
|
|
|
/**
|
|
* getCustomFields
|
|
*
|
|
* @return array
|
|
*/
|
|
public static function getCustomFields()
|
|
{
|
|
if (self::isEmptyNotZero(static::$customFields)) {
|
|
static::$customFields = static::getUnserializedOption(Constants::CRM_CUSTOM_FIELDS);
|
|
}
|
|
|
|
return static::$customFields;
|
|
}
|
|
|
|
/**
|
|
* get CRM order coupon field
|
|
*
|
|
* @return string
|
|
*/
|
|
public static function getOrderCouponField()
|
|
{
|
|
if (self::isEmptyNotZero(static::$orderCouponField)) {
|
|
static::$orderCouponField = static::getOption(Constants::CRM_COUPON_FIELD);
|
|
}
|
|
|
|
return static::$orderCouponField;
|
|
}
|
|
|
|
/**
|
|
* getCancellableOrderPaymentStatuses
|
|
*
|
|
* @return array
|
|
*/
|
|
public static function getCancellableOrderPaymentStatuses()
|
|
{
|
|
if (self::isEmptyNotZero(static::$cancellableOrderPaymentStatuses)) {
|
|
static::$cancellableOrderPaymentStatuses = static::getUnserializedOption(
|
|
Constants::CRM_CANCEL_ORDER
|
|
);
|
|
}
|
|
|
|
return static::$cancellableOrderPaymentStatuses;
|
|
}
|
|
|
|
/**
|
|
* getLastOrderId
|
|
*
|
|
* @return bool|string|null
|
|
*/
|
|
public static function getLastOrderId()
|
|
{
|
|
return static::getOption(Constants::CRM_ORDER_LAST_ID);
|
|
}
|
|
|
|
/**
|
|
* getSendPaymentAmount
|
|
*
|
|
* @return bool|string|null
|
|
*/
|
|
public static function getSendPaymentAmount()
|
|
{
|
|
return static::getOption(Constants::SEND_PAYMENT_AMOUNT);
|
|
}
|
|
|
|
/**
|
|
* setSendPaymentAmount
|
|
*
|
|
* @param string $value
|
|
*
|
|
* @throws \Bitrix\Main\ArgumentOutOfRangeException
|
|
*/
|
|
public static function setSendPaymentAmount($value)
|
|
{
|
|
static::setOption(Constants::SEND_PAYMENT_AMOUNT, $value);
|
|
}
|
|
|
|
/**
|
|
* Returns true if payment amount should be sent from CMS to RetailCRM.
|
|
*
|
|
* @return bool|string|null
|
|
*/
|
|
public static function shouldSendPaymentAmount()
|
|
{
|
|
return static::getSendPaymentAmount() === 'Y';
|
|
}
|
|
|
|
/**
|
|
* Return integration_delivery option
|
|
*
|
|
* @return mixed
|
|
*/
|
|
public static function getCrmIntegrationDelivery()
|
|
{
|
|
return static::getUnserializedOption(Constants::CRM_INTEGRATION_DELIVERY);
|
|
}
|
|
|
|
/**
|
|
* setLastOrderId
|
|
*
|
|
* @param $id
|
|
*
|
|
* @throws \Bitrix\Main\ArgumentOutOfRangeException
|
|
*/
|
|
public static function setLastOrderId($id): void
|
|
{
|
|
static::setOption(Constants::CRM_ORDER_LAST_ID, $id);
|
|
}
|
|
|
|
/**
|
|
* getFailedOrdersIds
|
|
*
|
|
* @return array
|
|
*/
|
|
public static function getFailedOrdersIds()
|
|
{
|
|
return static::getUnserializedOption(Constants::CRM_ORDER_FAILED_IDS);
|
|
}
|
|
|
|
/**
|
|
* setFailedOrdersIds
|
|
*
|
|
* @param $ids
|
|
*
|
|
* @throws \Bitrix\Main\ArgumentOutOfRangeException
|
|
*/
|
|
public static function setFailedOrdersIds($ids): void
|
|
{
|
|
static::setOption(Constants::CRM_ORDER_FAILED_IDS, serialize($ids));
|
|
}
|
|
|
|
/**
|
|
* getOrderNumbers
|
|
*
|
|
* @return bool|string|null
|
|
*/
|
|
public static function getOrderNumbers()
|
|
{
|
|
if (self::isEmptyNotZero(self::$orderNumbers)) {
|
|
self::$orderNumbers = static::getOption(Constants::CRM_ORDER_NUMBERS);
|
|
}
|
|
|
|
return self::$orderNumbers;
|
|
}
|
|
|
|
/**
|
|
* getOrderVat
|
|
*
|
|
* @return bool|string|null
|
|
*/
|
|
public static function getOrderVat()
|
|
{
|
|
if (self::isEmptyNotZero(self::$orderVat)) {
|
|
self::$orderVat = static::getOption(Constants::CRM_ORDER_VAT);
|
|
}
|
|
|
|
return self::$orderVat;
|
|
}
|
|
|
|
public static function needSendPickupPointAddress()
|
|
{
|
|
return static::getOption(Constants::CRM_SEND_PICKUP_POINT_ADDRESS);
|
|
}
|
|
|
|
/**
|
|
* getOrderHistoryDate
|
|
*
|
|
* @return bool|string|null
|
|
*/
|
|
public static function getOrderHistoryDate()
|
|
{
|
|
return static::getOption(Constants::CRM_ORDER_HISTORY_DATE);
|
|
}
|
|
|
|
/**
|
|
* Returns customers history since ID
|
|
*
|
|
* @return int
|
|
*/
|
|
public static function getCustomersHistorySinceId(): int
|
|
{
|
|
return (int) static::getOption(Constants::CRM_CUSTOMERS_HISTORY_SINCE_ID);
|
|
}
|
|
|
|
/**
|
|
* Sets new customers history since ID
|
|
*
|
|
* @param int $sinceId
|
|
*/
|
|
public static function setCustomersHistorySinceId($sinceId): void
|
|
{
|
|
static::setOption(Constants::CRM_CUSTOMERS_HISTORY_SINCE_ID, $sinceId);
|
|
}
|
|
|
|
/**
|
|
* getCatalogBasePrice
|
|
*
|
|
* @return bool|string|null
|
|
*/
|
|
public static function getCatalogBasePrice()
|
|
{
|
|
if (self::isEmptyNotZero(static::$catalogBasePrice)) {
|
|
static::$catalogBasePrice = static::getOption(Constants::CRM_CATALOG_BASE_PRICE);
|
|
}
|
|
|
|
return static::$catalogBasePrice;
|
|
}
|
|
|
|
/**
|
|
* getOrderDimensions
|
|
*
|
|
* @return bool|string|null
|
|
*/
|
|
public static function getOrderDimensions()
|
|
{
|
|
if (self::isEmptyNotZero(static::$orderDimensions)) {
|
|
static::$orderDimensions = static::getOption(Constants::CRM_ORDER_DIMENSIONS, 'N');
|
|
}
|
|
|
|
return static::$orderDimensions;
|
|
}
|
|
|
|
/**
|
|
* getCurrency
|
|
*
|
|
* @return bool|string|null
|
|
*/
|
|
public static function getCurrency()
|
|
{
|
|
if (self::isEmptyNotZero(static::$currency)) {
|
|
static::$currency = static::getOption(Constants::CRM_CURRENCY);
|
|
}
|
|
|
|
return static::$currency;
|
|
}
|
|
|
|
/**
|
|
* Returns currency from settings. If it's not set - returns Bitrix base currency.
|
|
*
|
|
* @return bool|string|null
|
|
*/
|
|
public static function getCurrencyOrDefault()
|
|
{
|
|
return self::getCurrency() ?: CurrencyManager::getBaseCurrency();
|
|
}
|
|
|
|
/**
|
|
* getInfoblocksInventories
|
|
*
|
|
* @return array
|
|
*/
|
|
public static function getInfoblocksInventories()
|
|
{
|
|
if (self::isEmptyNotZero(static::$infoblocksInventories)) {
|
|
static::$infoblocksInventories = static::getUnserializedOption(
|
|
Constants::CRM_IBLOCKS_INVENTORIES
|
|
);
|
|
}
|
|
|
|
return static::$infoblocksInventories;
|
|
}
|
|
|
|
/**
|
|
* getStores
|
|
*
|
|
* @return array
|
|
*/
|
|
public static function getStores()
|
|
{
|
|
if (self::isEmptyNotZero(static::$stores)) {
|
|
static::$stores = static::getUnserializedOption(Constants::CRM_STORES);
|
|
}
|
|
|
|
return static::$stores;
|
|
}
|
|
|
|
/**
|
|
* getShops
|
|
*
|
|
* @return array
|
|
*/
|
|
public static function getShops()
|
|
{
|
|
if (self::isEmptyNotZero(static::$shops)) {
|
|
static::$shops = static::getUnserializedOption(Constants::CRM_SHOPS);
|
|
}
|
|
|
|
return static::$shops;
|
|
}
|
|
|
|
/**
|
|
* getShipmentDeducted
|
|
*
|
|
* @return bool|string|null
|
|
*/
|
|
public static function getShipmentDeducted()
|
|
{
|
|
if (self::isEmptyNotZero(static::$shipmentDeducted)) {
|
|
static::$shipmentDeducted = static::getOption(Constants::CRM_SHIPMENT_DEDUCTED);
|
|
}
|
|
|
|
return static::$shipmentDeducted;
|
|
}
|
|
|
|
/**
|
|
* isPhoneRequired
|
|
*
|
|
* @return bool|string|null
|
|
*/
|
|
public static function isPhoneRequired()
|
|
{
|
|
return static::getExternalOption("main", "new_user_phone_required") === 'Y';
|
|
}
|
|
|
|
/**
|
|
* Returns integration delivery mapping
|
|
*
|
|
* @return array
|
|
*/
|
|
public static function getIntegrationDeliveriesMapping(): array
|
|
{
|
|
if (empty(self::$integrationDeliveriesMapping)) {
|
|
self::$integrationDeliveriesMapping =
|
|
(array) static::getUnserializedOption(Constants::CRM_INTEGRATION_DELIVERY);
|
|
}
|
|
|
|
return self::$integrationDeliveriesMapping;
|
|
}
|
|
|
|
/**
|
|
* @return bool|string|null
|
|
*/
|
|
public static function getClientId()
|
|
{
|
|
return static::getOption(Constants::CLIENT_ID);
|
|
}
|
|
|
|
/**
|
|
* Включена ли программа лояльности
|
|
*
|
|
* @return string|null
|
|
*/
|
|
public static function getLoyaltyProgramStatus()
|
|
{
|
|
return static::getOption(Constants::LOYALTY_PROGRAM_TOGGLE);
|
|
}
|
|
|
|
/**
|
|
* @param bool|string|null $loyaltyProgramStatus
|
|
* @throws \Bitrix\Main\ArgumentOutOfRangeException
|
|
*/
|
|
public static function setLoyaltyProgramStatus($loyaltyProgramStatus): void
|
|
{
|
|
static::setOption(Constants::LOYALTY_PROGRAM_TOGGLE, $loyaltyProgramStatus);
|
|
}
|
|
|
|
/**
|
|
* @return string|null
|
|
*/
|
|
public static function getAgreementLoyaltyProgram(): ?string
|
|
{
|
|
return static::getOption(Constants::AGREEMENT_LOYALTY_PROGRAM);
|
|
}
|
|
|
|
/**
|
|
* @return string|null
|
|
*/
|
|
public static function getAgreementPersonalData(): ?string
|
|
{
|
|
return static::getOption(Constants::AGREEMENT_PERSONAL_DATA);
|
|
}
|
|
|
|
/**
|
|
* @param $agreementLoyaltyProgramId
|
|
* @return void
|
|
* @throws \Bitrix\Main\ArgumentOutOfRangeException
|
|
*/
|
|
public static function setAgreementLoyaltyProgram($agreementLoyaltyProgramId): void
|
|
{
|
|
static::setOption(Constants::AGREEMENT_LOYALTY_PROGRAM, $agreementLoyaltyProgramId);
|
|
}
|
|
|
|
/**
|
|
* @param $agreementPersonalData
|
|
* @return void
|
|
* @throws \Bitrix\Main\ArgumentOutOfRangeException
|
|
*/
|
|
public static function setAgreementPersonalData($agreementPersonalData): void
|
|
{
|
|
static::setOption(Constants::AGREEMENT_PERSONAL_DATA, $agreementPersonalData);
|
|
}
|
|
|
|
/**
|
|
* Wraps Bitrix \COption::GetOptionString(...)
|
|
*
|
|
* @param string $option
|
|
* @param int|string $def
|
|
*
|
|
* @return string|null
|
|
*/
|
|
protected static function getOption($option, $def = 0): ?string
|
|
{
|
|
return static::getExternalOption(Constants::MODULE_ID, $option, $def);
|
|
}
|
|
|
|
/**
|
|
* Returns option from provided module
|
|
*
|
|
* @param string $moduleId
|
|
* @param string $option
|
|
* @param int $def
|
|
*
|
|
* @return string|null
|
|
*/
|
|
protected static function getExternalOption(string $moduleId, string $option, $def = 0): ?string
|
|
{
|
|
try {
|
|
return Option::get($moduleId, $option, $def);
|
|
} catch (ArgumentNullException | ArgumentOutOfRangeException $e) {
|
|
return null;
|
|
}
|
|
}
|
|
|
|
/**
|
|
* setOption
|
|
*
|
|
* @param $name
|
|
* @param string $value
|
|
* @param string $site
|
|
*
|
|
* @throws \Bitrix\Main\ArgumentOutOfRangeException
|
|
*/
|
|
protected static function setOption($name, $value = "", $site = ""): void
|
|
{
|
|
Option::set(
|
|
Constants::MODULE_ID,
|
|
$name,
|
|
$value,
|
|
$site
|
|
);
|
|
}
|
|
|
|
/**
|
|
* Wraps Bitrix unserialize(\COption::GetOptionString(...))
|
|
*
|
|
* @param string $option
|
|
* @param int|string $def
|
|
*
|
|
* @return mixed
|
|
*/
|
|
protected static function getUnserializedOption($option, $def = 0)
|
|
{
|
|
return unserialize(static::getOption($option, $def));
|
|
}
|
|
|
|
/**
|
|
* Returns true if value is empty and not zero (0 - digit)
|
|
*
|
|
* @param mixed $value
|
|
*
|
|
* @return bool
|
|
*/
|
|
protected static function isEmptyNotZero($value): bool
|
|
{
|
|
return empty($value) && $value !== 0;
|
|
}
|
|
|
|
/**
|
|
* isOnlineConsultantEnabled
|
|
*
|
|
* @return bool
|
|
*/
|
|
public static function isOnlineConsultantEnabled()
|
|
{
|
|
return static::getOption(Constants::CRM_ONLINE_CONSULTANT) === 'Y';
|
|
}
|
|
|
|
/**
|
|
* getOnlineConsultantScript
|
|
*
|
|
* @return string
|
|
*/
|
|
public static function getOnlineConsultantScript()
|
|
{
|
|
return trim(static::getOption(Constants::CRM_ONLINE_CONSULTANT_SCRIPT, ""));
|
|
}
|
|
|
|
/**
|
|
* setOnlineConsultant
|
|
*
|
|
* @param string $value
|
|
*/
|
|
public static function setOnlineConsultant($value)
|
|
{
|
|
static::setOption(Constants::CRM_ONLINE_CONSULTANT, $value);
|
|
}
|
|
|
|
/**
|
|
* setOnlineConsultantScript
|
|
*
|
|
* @param string $value
|
|
*/
|
|
public static function setOnlineConsultantScript($value)
|
|
{
|
|
static::setOption(Constants::CRM_ONLINE_CONSULTANT_SCRIPT, $value);
|
|
}
|
|
|
|
/**
|
|
* setOrderTypes
|
|
*
|
|
* @param array $orderTypesArr
|
|
*/
|
|
public static function setOrderTypes($orderTypesArr)
|
|
{
|
|
static::setOption(Constants::CRM_ORDER_TYPES_ARR, serialize(self::getUtils()
|
|
->clearArray(is_array($orderTypesArr)?$orderTypesArr:[])));
|
|
}
|
|
|
|
/**
|
|
* setDeliveryTypes
|
|
*
|
|
* @param array $deliveryTypesArr
|
|
*/
|
|
public static function setDeliveryTypes($deliveryTypesArr)
|
|
{
|
|
static::setOption(Constants::CRM_DELIVERY_TYPES_ARR, serialize(self::getUtils()
|
|
->clearArray(is_array($deliveryTypesArr)?$deliveryTypesArr:[])));
|
|
}
|
|
|
|
/**
|
|
* setPaymentTypes
|
|
*
|
|
* @param array $paymentTypesArr
|
|
*/
|
|
public static function setPaymentTypes($paymentTypesArr)
|
|
{
|
|
static::setOption(Constants::CRM_PAYMENT_TYPES, serialize(self::getUtils()
|
|
->clearArray(is_array($paymentTypesArr)?$paymentTypesArr:[])));
|
|
}
|
|
|
|
/**
|
|
* getPaymentStatuses
|
|
*
|
|
* @param array $paymentStatusesArr
|
|
*/
|
|
public static function setPaymentStatuses($paymentStatusesArr)
|
|
{
|
|
static::setOption(Constants::CRM_PAYMENT_STATUSES, serialize(self::getUtils()
|
|
->clearArray(is_array($paymentStatusesArr)?$paymentStatusesArr:[])));
|
|
}
|
|
|
|
/**
|
|
* setContragentTypes
|
|
*
|
|
* @param array $contragentTypeArr
|
|
*/
|
|
public static function setContragentTypes($contragentTypeArr)
|
|
{
|
|
static::setOption(Constants::CRM_CONTRAGENT_TYPE, serialize(self::getUtils()
|
|
->clearArray(is_array($contragentTypeArr)?$contragentTypeArr:[])));
|
|
}
|
|
|
|
/**
|
|
* @return \Intaro\RetailCrm\Service\Utils
|
|
*/
|
|
public static function getUtils(): Utils
|
|
{
|
|
return ServiceLocator::get(Utils::class);
|
|
}
|
|
|
|
/**
|
|
* @return string|null
|
|
*/
|
|
public static function getCrmPrices(): ?string
|
|
{
|
|
return static::getOption(Constants::CRM_PRICES);
|
|
}
|
|
|
|
/**
|
|
* @return false|string|null
|
|
*/
|
|
public static function getAgentUseCrontab()
|
|
{
|
|
return COption::GetOptionString('main', 'agents_use_crontab', 'N');
|
|
}
|
|
|
|
/**
|
|
* @return false|string|null
|
|
*/
|
|
public static function getDiscountRound()
|
|
{
|
|
return COption::GetOptionString(Constants::MODULE_ID, Constants::CRM_DISCOUNT_ROUND, 0);
|
|
}
|
|
|
|
/**
|
|
* @return void
|
|
*/
|
|
public static function setDiscountRound($discount_round)
|
|
{
|
|
COption::SetOptionString(Constants::MODULE_ID, Constants::CRM_DISCOUNT_ROUND, $discount_round);
|
|
}
|
|
|
|
/**
|
|
* @return void
|
|
*/
|
|
public static function setCart($optionCart)
|
|
{
|
|
COption::SetOptionString(Constants::MODULE_ID, Constants::CART, $optionCart);
|
|
}
|
|
|
|
/**
|
|
* @param string $version
|
|
*
|
|
* @return mixed
|
|
*/
|
|
public static function setApiVersion(string $version)
|
|
{
|
|
return COption::SetOptionString(Constants::MODULE_ID, Constants::CRM_API_VERSION, $version);
|
|
}
|
|
|
|
public static function getLoyaltyProgramId()
|
|
{
|
|
return COption::GetOptionString(Constants::MODULE_ID, Constants::LOYALTY_PROGRAM_ID, 0);
|
|
}
|
|
|
|
/**
|
|
* @param int $loyaltyId
|
|
*
|
|
* @return false|string|null
|
|
*/
|
|
public static function setLoyaltyProgramId(int $loyaltyId)
|
|
{
|
|
COption::SetOptionString(Constants::MODULE_ID, Constants::LOYALTY_PROGRAM_ID, $loyaltyId);
|
|
}
|
|
|
|
/**
|
|
* @param string $loyaltyFields
|
|
*/
|
|
public static function setLoyaltyFields(string $loyaltyFields): void
|
|
{
|
|
COption::SetOptionString(Constants::MODULE_ID, Constants::LOYALTY_FIELDS, $loyaltyFields);
|
|
}
|
|
|
|
/**
|
|
* @return false|string|null
|
|
*/
|
|
public static function getLoyaltyFields()
|
|
{
|
|
return COption::GetOptionString(Constants::MODULE_ID, Constants::LOYALTY_FIELDS, 0);
|
|
}
|
|
|
|
/**
|
|
* setSitesAvailable
|
|
*
|
|
* @param string $siteCode
|
|
*
|
|
* @throws \Bitrix\Main\ArgumentOutOfRangeException
|
|
*/
|
|
public static function setSitesAvailable(string $siteCode): void
|
|
{
|
|
static::setOption(Constants::SITES_AVAILABLE, $siteCode);
|
|
}
|
|
|
|
/**
|
|
* getSitesAvailable
|
|
*/
|
|
public static function getSitesAvailable()
|
|
{
|
|
return COption::GetOptionString(Constants::MODULE_ID, Constants::SITES_AVAILABLE, null);
|
|
}
|
|
}
|