16 private static $instance;
24 if (!isset(self::$instance))
26 self::$instance =
new self;
29 return self::$instance;
32 private function __construct()
37 private function __clone()
51 return mb_strpos(
$discount[
'ACTIONS'], \CSaleActionGiftCtrlGroup::getControlID()) !==
false;
55 foreach(
$discount[
'ACTIONS_LIST'][
'CHILDREN'] as $child)
58 isset($child[
'CLASS_ID']) && isset($child[
'DATA']) &&
59 $child[
'CLASS_ID'] === \CSaleActionGiftCtrlGroup::getControlID()
81 !isset(
$discount[
'LAST_LEVEL_DISCOUNT']) ||
88 if (
$discount[
'EXECUTE_MODULE'] !==
'all' &&
$discount[
'EXECUTE_MODULE'] !==
'catalog')
98 $tryToFindAppliedCondition = $this->tryToFindAppliedCondition(
$discount);
99 if ($tryToFindAppliedCondition ===
true || $tryToFindAppliedCondition ===
null)
104 if (!$this->emptyConditionsList(
$discount))
109 if (!$this->isExistOnlySaleDiscountAction(
$discount))
124 $query = DiscountTable::query();
128 '!EXECUTE_MODE' => DiscountTable::EXECUTE_MODE_SEPARATELY,
132 return !(bool)
$query->exec()->fetch() && !$this->isThereCustomDiscountModules();
135 private function isThereCustomDiscountModules()
137 $query = DiscountModuleTable::query();
140 '!@MODULE_ID' => $this->internalModules,
144 return (
bool)
$query->exec()->fetch();
149 $actionStructure =
$discount[
'ACTIONS_LIST'];
150 if (!$actionStructure || !is_array($actionStructure))
155 if ($actionStructure[
'CLASS_ID'] !=
'CondGroup')
160 if (
count($actionStructure[
'CHILDREN']) > 1)
165 $action = reset($actionStructure[
'CHILDREN']);
166 if (
$action[
'CLASS_ID'] !=
'ActSaleBsktGrp')
181 if (empty(
$discount[
'CONDITIONS_LIST'][
'CHILDREN']))
198 $asString = serialize(
$discount[
'ACTIONS_LIST']);
if( $daysToExpire >=0 &&$daysToExpire< 60 elseif)( $daysToExpire< 0)