logicasoft/cashback

Bitrix 模块:从完成的订单向用户的内部账户充值现金返还

安装: 2

依赖: 0

建议者: 0

安全: 0

星星: 0

观察者: 2

分支: 1

开放问题: 0

类型:bitrix-d7-module

v1.0.1 2020-05-15 11:57 UTC

This package is auto-updated.

Last update: 2024-09-15 22:09:10 UTC


README

Build Status

Bitrix:将购物现金返还到用户内部账户

添加了将现金返还到用户内部账户的功能。在订单结算后,会向订单中指定的电子邮件和电话发送通知。现金返还的金额取决于设置:%现金返还和计算策略。

安装

将文件复制到 /local/modules/ 或 /bitrix/modules/ 目录。

等待市场平台审核

计算策略

  1. 从商品利润率计算: (零售价 - 采购价) * 数量 * 现金返还百分比
  2. 从零售价计算: 零售价 * 数量 * 现金返还百分比

通知

通知模板在 邮件和短信事件 部分可用。事件类型

  • LOGICASOFT_CASHBACK_ADD_EMAIL
  • LOGICASOFT_CASHBACK_ADD_SMS

设置

设置页面可通过 设置/产品设置/模块设置/用户内部账户现金返还 地址访问。

事件

在从订单购物车获取产品列表后 onAfterFillProducts

可以更改产品列表的组成,调整字段值。

使用

在参数中传递标准的 Bitrix\Main\Event。产品列表位于 basketProducts 参数中。返回时需要 \Bitrix\Main\Entity\EventResult();

\Bitrix\Main\EventManager::getInstance()->addEventHandler(
  'logicasoft.cashback',
  'onAfterFillProducts', 
  [
    'Class',
    'Method'
  ]
);
Class {
    public static function Method(\Bitrix\Main\Event $event) 
    {
        $basketProducts = $event->getParameter('basketProducts');
        
        //Для изменения нужно передать в функцию $result->mofidyFields();
        //массив ключами которого будут id продукта.
        $modifyFields = [];
        foreach ($basketProducts as $id => $item) {
            $modifyFields[$id] = [
                'QUANTITY' => 100, //Изменяем количество продуктов
                'NEW_FIELD' => 'VALUES' //Новое поле в продуктах
            ];
        }
        
        //Добавляем новый продукт в список с id = 100, 
        //нужно учитывать, что в продукте должны быть необходимые для расчета поля
        //Проверка происходит в стратегиях подсчета, к примеру
        //\Logicasoft\Cashback\Strategy\RetailCalculation::checkFields() - ищет поля
        //PRICE и QUANTITY
        $modifyFields['100'] = [
            'QUANTITY_ID' => 500,
            'ID' => 200
        ];
    
        $result = new \Bitrix\Main\Entity\EventResult();
    
        $result->modifyFields($modifyFields);
    
        //Если нужно удалить продукт из списка, то передаем массив с id продуктов в функцию
        //$result->unsetField();
        //Удалим из списка продукт с id=100
        $result->unsetFields([100]);
        
        return $result;
    }
}

在添加现金返还后 onAfterCashbackAdd

事件参数中传递以下数据

  • CASHBACK_AMOUNT - 现金返还金额
  • CURRENCY - 货币
  • ORDER_ID - 订单 ID
  • USER_ID - 用户 ID

使用

\Bitrix\Main\EventManager::getInstance()->addEventHandler(
  'logicasoft.cashback',
  'onAfterCashbackAdd', 
  [
    'Class',
    'Method'
  ]
);

Class {
    public static function Method(\Bitrix\Main\Event $event) 
    {
        //Будет содержать массив описанных выше данных
        $parameters = $event->getParameters();
    }
}

在收集列表中的策略时 onCollectCashbackStrategies

在参数中传递实例化的 Logicasoft\Cashback\Strategy\Manager;

添加自己的计算策略。

策略类必须实现 \Logicasoft\Cashback\Strategy\StrategyInterface 接口

use Bitrix\Main\Event;
use Bitrix\Main\EventManager;
use Logicasoft\Cashback\Strategy\Manager;
use Logicasoft\Cashback\Strategy\RetailCalculation;

$eventManager = EventManager::getInstance();

$eventManager->addEventHandler(
    'logicasoft.cashback',
    'onCollectCashbackStrategies',
    'llcCollectCashbackStrategies'
);

function llcCollectCashbackStrategies(Event $event)
{
    /** @var Manager $manager */
    $manager = $event->getParameter('manager');

    $manager->addStrategy(
        RetailCalculation::class
    );
}

待办事项

  • 添加通过 composer 安装
  • 添加市场平台链接

由 HueJack 为 Logicasoft LLC 创建