add events hadler and bonus pay system
This commit is contained in:
parent
7590cc9027
commit
c3b7e72943
12 changed files with 235 additions and 39 deletions
|
@ -0,0 +1,3 @@
|
|||
<?php
|
||||
|
||||
require_once($_SERVER['DOCUMENT_ROOT'] . BX_ROOT . '/modules/intaro.retailcrm/lib/component/payment/retailcrmbonus/.description.php');
|
|
@ -0,0 +1,3 @@
|
|||
<?php
|
||||
|
||||
require_once($_SERVER['DOCUMENT_ROOT'] . BX_ROOT . '/modules/intaro.retailcrm/lib/component/payment/retailcrmbonus/handler.php');
|
|
@ -8,6 +8,8 @@
|
|||
global $MESS;
|
||||
|
||||
use Bitrix\Main\ArgumentException;
|
||||
use Bitrix\Main\EventManager;
|
||||
use Bitrix\Main\Loader;
|
||||
use Bitrix\Main\ObjectPropertyException;
|
||||
use Bitrix\Main\SystemException;
|
||||
use Bitrix\Sale\Internals\OrderPropsGroupTable;
|
||||
|
@ -23,6 +25,7 @@ use Bitrix\sale\EventActions;
|
|||
use Bitrix\Sale\Internals\OrderTable;
|
||||
use \RetailCrm\ApiClient;
|
||||
use RetailCrm\Exception\CurlException;
|
||||
use Intaro\RetailCrm\Component\Loyalty\EventsHandlers;
|
||||
|
||||
IncludeModuleLangFile(__FILE__);
|
||||
if (class_exists('intaro_retailcrm')) {
|
||||
|
@ -33,6 +36,23 @@ class intaro_retailcrm extends CModule
|
|||
{
|
||||
public const LP_ORDER_GROUP_NAME = 'Программа лояльности';
|
||||
public const BONUS_COUNT = 'Количество бонусов';
|
||||
public const BONUS_PAY_SYSTEM_NAME = 'Оплата бонусами';
|
||||
public const BONUS_PAY_SYSTEM_CODE = 'retailcrmbonus';
|
||||
public const BONUS_PAY_SYSTEM_DESCRIPTION = 'Оплата бонусами программы лояльности retailCRM';
|
||||
/**
|
||||
* @var string[][]
|
||||
*/
|
||||
private const SUBSCRIBE_LP_EVENTS = [
|
||||
['EVENT_NAME' => 'OnBeforeSalePaymentSetField', 'MODULE' => 'sale'],
|
||||
['EVENT_NAME' => 'OnBeforeEndBufferContent', 'MODULE' => 'main'],
|
||||
['EVENT_NAME' => 'OnSaleOrderBeforeSaved', 'MODULE' => 'sale'],
|
||||
['EVENT_NAME' => 'OnSaleOrderPaid', 'MODULE' => 'sale'],
|
||||
['EVENT_NAME' => 'OnSaleStatusOrderChange', 'MODULE' => 'sale'],
|
||||
['EVENT_NAME' => 'OnSaleOrderSaved', 'MODULE' => 'sale'],
|
||||
['EVENT_NAME' => 'OnSaleOrderCanceled', 'MODULE' => 'sale'],
|
||||
['EVENT_NAME' => 'OnSaleOrderDeleted', 'MODULE' => 'sale'],
|
||||
['EVENT_NAME' => 'OnSaleComponentOrderOneStepProcess', 'MODULE' => 'sale'],
|
||||
];
|
||||
public const V5 = 'v5';
|
||||
public $MODULE_ID = 'intaro.retailcrm';
|
||||
public $OLD_MODULE_ID = 'intaro.intarocrm';
|
||||
|
@ -141,7 +161,11 @@ class intaro_retailcrm extends CModule
|
|||
$infoSale = CModule::CreateModuleObject('sale')->MODULE_VERSION;
|
||||
if (version_compare($infoSale, '16', '<=')) {
|
||||
$APPLICATION->ThrowException(GetMessage("SALE_VERSION_ERR"));
|
||||
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!Loader::includeModule('sale')) {
|
||||
return false;
|
||||
}
|
||||
|
||||
|
@ -197,15 +221,17 @@ class intaro_retailcrm extends CModule
|
|||
unset($type);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
$this->CopyFiles();
|
||||
$this->addBonusPaySystem();
|
||||
$this->addLPUserFields();
|
||||
$this->addLPEvents();
|
||||
try {
|
||||
$this->addLPOrderProps();
|
||||
} catch (ObjectPropertyException | ArgumentException | SystemException $e) {
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
if ($step == 11) {
|
||||
$arResult['arSites'] = RCrmActions::SitesList();
|
||||
if (count($arResult['arSites']) < 2) {
|
||||
|
@ -979,8 +1005,6 @@ class intaro_retailcrm extends CModule
|
|||
$dateAgent->format('d.m.Y H:i:s'), // date of first start
|
||||
30
|
||||
);
|
||||
|
||||
$this->CopyFiles();
|
||||
if (isset($_POST['LOAD_NOW'])) {
|
||||
$loader = new RetailCrmICML();
|
||||
$loader->iblocks = $iblocks;
|
||||
|
@ -1243,6 +1267,7 @@ class intaro_retailcrm extends CModule
|
|||
RCrmActions::sendConfiguration($retail_crm_api, $api_version, false);
|
||||
|
||||
$this->DeleteFiles();
|
||||
$this->deleteLPEvents();
|
||||
|
||||
UnRegisterModule($this->MODULE_ID);
|
||||
|
||||
|
@ -1253,8 +1278,21 @@ class intaro_retailcrm extends CModule
|
|||
|
||||
public function CopyFiles(): void
|
||||
{
|
||||
$path_from = $_SERVER['DOCUMENT_ROOT'] . '/bitrix/modules/' . $this->MODULE_ID . '/install';
|
||||
CopyDirFiles(
|
||||
$_SERVER['DOCUMENT_ROOT'] . '/bitrix/modules/' . $this->MODULE_ID . '/install/export/', $_SERVER['DOCUMENT_ROOT'] . '/bitrix/php_interface/include/catalog_export/', true, true
|
||||
$path_from . '/export',
|
||||
$_SERVER['DOCUMENT_ROOT'],
|
||||
true,
|
||||
true,
|
||||
false
|
||||
);
|
||||
$saleSystemPath = COption::GetOptionString('sale', 'path2user_ps_files');
|
||||
CopyDirFiles(
|
||||
$path_from . '/export_sale_payment',
|
||||
$_SERVER['DOCUMENT_ROOT'] . $saleSystemPath,
|
||||
true,
|
||||
true,
|
||||
false
|
||||
);
|
||||
}
|
||||
|
||||
|
@ -1271,6 +1309,9 @@ class intaro_retailcrm extends CModule
|
|||
unlink($_SERVER['DOCUMENT_ROOT'] . '/bitrix/php_interface/include/catalog_export/retailcrm_setup.php');
|
||||
unlink($defaultSite['ABS_DOC_ROOT'] . '/retailcrm/agent.php');
|
||||
rmdir($defaultSite['ABS_DOC_ROOT'] . '/retailcrm/');
|
||||
|
||||
$saleSystemPath = COption::GetOptionString('sale', 'path2user_ps_files');
|
||||
DeleteDirFilesEx($_SERVER['DOCUMENT_ROOT'] . $saleSystemPath . 'retailcrmbonus');
|
||||
}
|
||||
|
||||
public function GetProfileSetupVars(
|
||||
|
@ -1450,11 +1491,11 @@ class intaro_retailcrm extends CModule
|
|||
->fetchCollection();
|
||||
|
||||
foreach ($persons as $person) {
|
||||
|
||||
$groupID = $this->getGroupID();
|
||||
|
||||
$personId = $person->getID();
|
||||
$groupID = $this->getGroupID($personId);
|
||||
|
||||
if (isset($groupID)) {
|
||||
$this->addBonusField($person->ID, $groupID);
|
||||
$this->addBonusField($personId, $groupID);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1482,33 +1523,35 @@ class intaro_retailcrm extends CModule
|
|||
}
|
||||
|
||||
/**
|
||||
* @return int|false
|
||||
* @param $personId
|
||||
* @return \Bitrix\Main\ORM\Data\AddResult|mixed
|
||||
* @throws \Bitrix\Main\ArgumentException
|
||||
* @throws \Bitrix\Main\ObjectPropertyException
|
||||
* @throws \Bitrix\Main\SystemException
|
||||
*/
|
||||
private function getGroupID()
|
||||
private function getGroupID($personId)
|
||||
{
|
||||
$LPGroup = OrderPropsGroupTable::query()
|
||||
->setSelect(['ID'])
|
||||
->where(
|
||||
[
|
||||
['PERSON_TYPE_ID', '=', $person->ID],
|
||||
['PERSON_TYPE_ID', '=', $personId],
|
||||
['NAME', '=', self::LP_ORDER_GROUP_NAME],
|
||||
]
|
||||
)
|
||||
->fetch();
|
||||
|
||||
|
||||
if (is_array($LPGroup)) {
|
||||
return $LPGroup['ID'];
|
||||
}
|
||||
|
||||
if ($LPGroup === false) {
|
||||
$groupFields = [
|
||||
'PERSON_TYPE_ID' => $person->ID,
|
||||
'PERSON_TYPE_ID' => $personId,
|
||||
'NAME' => self::LP_ORDER_GROUP_NAME,
|
||||
];
|
||||
return OrderPropsGroupTable::add($groupFields);
|
||||
$result = OrderPropsGroupTable::add($groupFields);
|
||||
return $result->getId();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1533,7 +1576,7 @@ class intaro_retailcrm extends CModule
|
|||
"REQUIRED" => "N",
|
||||
"NAME" => self::BONUS_COUNT,
|
||||
"TYPE" => "TEXT",
|
||||
"CODE" => "BONUS_COUNT_LP",
|
||||
"CODE" => "BONUS_RETAILCRM",
|
||||
"USER_PROPS" => "Y",
|
||||
"IS_LOCATION" => "N",
|
||||
"IS_LOCATION4TAX" => "N",
|
||||
|
@ -1550,20 +1593,76 @@ class intaro_retailcrm extends CModule
|
|||
}
|
||||
}
|
||||
|
||||
private function addBonusPaySystem()
|
||||
private function addBonusPaySystem(): void
|
||||
{
|
||||
|
||||
$path_from = $_SERVER['DOCUMENT_ROOT'] . '/bitrix/modules/netpay.sale/install/www';
|
||||
$path_to = $_SERVER['DOCUMENT_ROOT'];
|
||||
|
||||
DeleteDirFilesEx('/netpay');
|
||||
DeleteDirFilesEx('/bitrix/php_interface/include/sale_payment/netpay.sale');
|
||||
|
||||
$arrPaySystemAction = PaySystemActionTable::query()->setSelect(['ID'])->where(
|
||||
[
|
||||
['PAY_SYSTEM_ID', '=', $arrOrderPayment['PAY_SYSTEM_ID']],
|
||||
['ACTIVE', '=', 'Y'],
|
||||
['ACTION_FILE', '=', self::BONUS_PAY_SYSTEM_CODE],
|
||||
]
|
||||
)->fetch();
|
||||
)->fetchCollection();
|
||||
|
||||
|
||||
if (count($arrPaySystemAction) === 0) {
|
||||
$data = [
|
||||
'NAME' => self::BONUS_PAY_SYSTEM_NAME,
|
||||
'PSA_NAME' => self::BONUS_PAY_SYSTEM_NAME,
|
||||
'ACTION_FILE' => self::BONUS_PAY_SYSTEM_CODE,
|
||||
'DESCRIPTION' => self::BONUS_PAY_SYSTEM_DESCRIPTION,
|
||||
'RESULT_FILE' => '',
|
||||
'NEW_WINDOW' => 'N',
|
||||
'ENCODING' => 'utf-8',
|
||||
'ACTIVE' => 'Y',
|
||||
'HAVE_PAYMENT' => 'Y',
|
||||
'HAVE_ACTION' => 'N',
|
||||
'AUTO_CHANGE_1C' => 'N',
|
||||
'HAVE_RESULT' => 'N',
|
||||
'HAVE_PRICE' => 'N',
|
||||
'HAVE_PREPAY' => 'N',
|
||||
'HAVE_RESULT_RECEIVE' => 'N',
|
||||
'ALLOW_EDIT_PAYMENT' => 'Y',
|
||||
'IS_CASH' => 'N',
|
||||
'CAN_PRINT_CHECK' => 'N',
|
||||
'ENTITY_REGISTRY_TYPE' => 'ORDER',
|
||||
'XML_ID' => 'intaro_' . randString(15),
|
||||
];
|
||||
$result = PaySystemActionTable::add($data);
|
||||
$updateData = [
|
||||
'PAY_SYSTEM_ID' => $result->getId(),
|
||||
'PARAMS' => serialize(['BX_PAY_SYSTEM_ID' => $result->getId()]),
|
||||
];
|
||||
PaySystemActionTable::update($result->getId(), $updateData);
|
||||
}
|
||||
}
|
||||
|
||||
private function addLPEvents(): void
|
||||
{
|
||||
$eventManager = EventManager::getInstance();
|
||||
|
||||
foreach (self::SUBSCRIBE_LP_EVENTS as $event){
|
||||
|
||||
$eventManager->registerEventHandler(
|
||||
$event['MODULE'],
|
||||
$event['EVENT_NAME'],
|
||||
$this->MODULE_ID,
|
||||
EventsHandlers::class,
|
||||
$event['EVENT_NAME'].'Handler'
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
private function deleteLPEvents()
|
||||
{
|
||||
$eventManager = EventManager::getInstance();
|
||||
|
||||
foreach (self::SUBSCRIBE_LP_EVENTS as $event){
|
||||
$eventManager->unRegisterEventHandler(
|
||||
$event['MODULE'],
|
||||
$event['EVENT_NAME'],
|
||||
$this->MODULE_ID,
|
||||
EventsHandlers::class,
|
||||
$event['EVENT_NAME'].'Handler'
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -1,5 +0,0 @@
|
|||
<?php
|
||||
|
||||
require_once($_SERVER['DOCUMENT_ROOT'] . BX_ROOT . '/modules/netpay.sale/payment/netpay.sale/.description.php');
|
||||
|
||||
?>
|
|
@ -1,5 +0,0 @@
|
|||
<?php
|
||||
|
||||
require_once($_SERVER['DOCUMENT_ROOT'] . BX_ROOT . '/modules/netpay.sale/payment/netpay.sale/payment.php');
|
||||
|
||||
?>
|
101
intaro.retailcrm/lib/component/loyalty/eventshandlers.php
Normal file
101
intaro.retailcrm/lib/component/loyalty/eventshandlers.php
Normal file
|
@ -0,0 +1,101 @@
|
|||
<?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\Loyalty;
|
||||
|
||||
use Bitrix\Main\Event;
|
||||
|
||||
/**
|
||||
* Class ServiceLocator
|
||||
*
|
||||
* @package Intaro\RetailCrm\Component\EventsHandlers
|
||||
*/
|
||||
class EventsHandlers
|
||||
{
|
||||
/**
|
||||
* @param \Bitrix\Main\Event $event
|
||||
*/
|
||||
public function OnBeforeSalePaymentSetFieldHandler(Event $event)
|
||||
{
|
||||
AddMessage2Log('OnBeforeSalePaymentSetFieldHandler work! ' . $event->getDebugInfo());
|
||||
}
|
||||
|
||||
/**
|
||||
* @param &$content
|
||||
* @return mixed
|
||||
*/
|
||||
public function OnBeforeEndBufferContentHandler($content)
|
||||
{
|
||||
AddMessage2Log('OnBeforeEndBufferContentHandler work! ');
|
||||
return $content;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param \Bitrix\Main\Event $event
|
||||
*/
|
||||
public function OnSaleOrderBeforeSavedHandler(Event $event)
|
||||
{
|
||||
AddMessage2Log('OnSaleOrderBeforeSavedHandler work! ' . $event->getDebugInfo());
|
||||
}
|
||||
|
||||
/**
|
||||
* @param \Bitrix\Main\Event $event
|
||||
*/
|
||||
public function OnSaleOrderPaidHandler(Event $event)
|
||||
{
|
||||
AddMessage2Log('OnSaleOrderPaidHandler work! '. $event->getDebugInfo());
|
||||
}
|
||||
|
||||
/**
|
||||
* @param \Bitrix\Main\Event $event
|
||||
*/
|
||||
public function OnSaleStatusOrderChangeHandler(Event $event)
|
||||
{
|
||||
AddMessage2Log('OnSaleStatusOrderChangeHandler work! '. $event->getDebugInfo());
|
||||
}
|
||||
|
||||
/**
|
||||
* @param \Bitrix\Main\Event $event
|
||||
*/
|
||||
public function OnSaleOrderSavedHandler(Event $event)
|
||||
{
|
||||
AddMessage2Log('OnSaleOrderSavedHandler work! '. $event->getDebugInfo());
|
||||
}
|
||||
|
||||
/**
|
||||
* @param \Bitrix\Main\Event $event
|
||||
*/
|
||||
public function OnSaleOrderCanceledHandler(Event $event)
|
||||
{
|
||||
AddMessage2Log('OnSaleOrderCanceledHandler work! '. $event->getDebugInfo());
|
||||
}
|
||||
|
||||
/**
|
||||
* @param \Bitrix\Main\Event $event
|
||||
*/
|
||||
public function OnSaleOrderDeletedHandler(Event $event)
|
||||
{
|
||||
AddMessage2Log('OnSaleOrderDeletedHandler work! '. $event->getDebugInfo());
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $arResult
|
||||
* @param $arUserResult
|
||||
* @param $arParams
|
||||
* @return mixed
|
||||
*/
|
||||
public function OnSaleComponentOrderOneStepProcessHandler($arResult, $arUserResult, $arParams)
|
||||
{
|
||||
AddMessage2Log('OnSaleComponentOrderOneStepProcessHandler work! '. $arUserResult. $arParams);
|
||||
return $arResult;
|
||||
}
|
||||
}
|
|
@ -1,6 +1,6 @@
|
|||
<?php
|
||||
|
||||
namespace Sale\Handlers\PaySystem;
|
||||
namespace Intaro\RetailCrm\Component\Payment\RetailCrmBonus;
|
||||
|
||||
use Bitrix\Main\Localization\Loc;
|
||||
use Bitrix\Main\Request;
|
Loading…
Add table
Reference in a new issue