如何使用 EC-CUBE4 取消指定县的免费送货条件(多个地区)
2.在多个都道府县取消免运费条件时
在Customize/Service/PurchaseFlow/Processor目录下设置如下DeliveryFeeFreeByShippingPreprocessor.php。
<?phpnamespace Customize\Service\PurchaseFlow\Processor;use Eccube\Annotation\ShoppingFlow;
use Eccube\Entity\BaseInfo;
use Eccube\Entity\ItemHolderInterface;
use Eccube\Entity\Order;
use Eccube\Repository\BaseInfoRepository;
use Eccube\Repository\Master\PrefRepository;
use Eccube\Service\PurchaseFlow\ItemHolderPreprocessor;
use Eccube\Service\PurchaseFlow\Processor\DeliveryFeePreprocessor;
use Eccube\Service\PurchaseFlow\PurchaseContext;/*** @ShoppingFlow()** Class DeliveryFeeFreeByShippingPreprocessor* @package Customize\Service\PurchaseFlow\Processor*/
class DeliveryFeeFreeByShippingPreprocessor implements ItemHolderPreprocessor
{/*** @var BaseInfo*/protected $BaseInfo;/*** @var PrefRepository*/private $prefRepository;public function __construct(BaseInfoRepository $baseInfoRepository,PrefRepository $prefRepository){$this->BaseInfo = $baseInfoRepository->get();$this->prefRepository = $prefRepository;}/*** @param ItemHolderInterface $itemHolder* @param PurchaseContext $context*/public function process(ItemHolderInterface $itemHolder, PurchaseContext $context){if (!($this->BaseInfo->getDeliveryFreeAmount() || $this->BaseInfo->getDeliveryFreeQuantity())) {return;}// Orderif ($itemHolder instanceof Order) {/** @var Order $Order */$Order = $itemHolder;foreach ($Order->getShippings() as $Shipping) {$isFree = false;$total = 0;$quantity = 0;foreach ($Shipping->getProductOrderItems() as $Item) {$total += $Item->getPriceIncTax() * $Item->getQuantity();$quantity += $Item->getQuantity();}// 配送金额超if ($this->BaseInfo->getDeliveryFreeAmount()) {if ($total >= $this->BaseInfo->getDeliveryFreeAmount()) {$isFree = true;}}// 配送数量超if ($this->BaseInfo->getDeliveryFreeQuantity()) {if ($quantity >= $this->BaseInfo->getDeliveryFreeQuantity()) {$isFree = true;}}// 免费处理if ($isFree) {foreach ($Shipping->getOrderItems() as $Item) {if ($Item->getProcessorName() == DeliveryFeePreprocessor::class) {$Prefs = $this->prefRepository->findBy(['name' => ['沖縄県', '東京都']]);foreach ($Prefs as $Pref) {if ($Shipping->getPref() === $Pref) {$Item->setQuantity(1);break;}}}}}}}}
}
如何使用 EC-CUBE4 取消指定县的免费送货条件(多个地区)相关推荐
- 如何使用 EC-CUBE4 取消指定县的免费送货条件(单个地区)
1,如果您只在冲绳县取消免费送货条件 在Customize/Service/PurchaseFlow/Processor目录下设置如下DeliveryFeeFreeByShippingPreproce ...
- ECCUBE4 取消部分地区的免运费条件,将地区的运费减半至设定金额的一半时
在Customize/Service/PurchaseFlow/Processor目录下设置如下DeliveryFeeFreeByShippingPreprocessor.php. namespace ...
- excel怎么批量提取指定网站内容-免费指定网站提取导出excel软件
excel怎么批量提取指定网站内容?Excel是人们经常使用的一种办公软件,掌握正确的使用方法和技巧是很有用的Excel是Microsoft为使用Windows和Apple Macintosh操作系统 ...
- oracle 只导出指定的表格,expdp带条件导出单个表的数据
[oracle@testdb dmp]$ expdp \"testuser/testuser\" DIRECTORY=dpump_dir dumpfile=kevin.dmp ta ...
- java中map删除指定元素_Map中根据条件删除元素
今天在写程序过程中,需要根据判断条件删除一个Map中的相应数据,我自然而然想到可以通过调用Map中的remove(Object key)函数进行删除:代码如下: public Map processM ...
- NopCommerce功能与特点介绍
[本文转自]http://www.cnblogs.com/nopcommerce-b2c/p/3758676.html 前两节我们主要介绍了NopCommerce下载与安装和NopCommerce中文 ...
- 取消显示fps的指令_机器人控制指令介绍(一)
本文旨在通过指令介绍及程序示例帮助读者了解和学习I/O指令.IF\SELECT指令.WAIT指令.JMP/LBL指令.CALL指令以及FOR\ENDFOR指令的使用方法及注意事项.1.I/O指令I/O ...
- C语言指定编译对齐方式
什么是对齐,以及为什么要对齐: 现代计算机中内存空间都是按照byte划分的,从理论上讲似乎对任何类型的变量的访问可以从任何地址开始,但实际情况是在访问特定变量的时候经常在特定的内存地址访问,这就 ...
- 微信小程序图片上传和预览以及取消上传图片案例
前言: 做小程序项目遇到一个需求,就是上传图片和预览,以及取消指定的图片,其实这个功能挺好搞的,借助微信官方的API结合实现,只不过注意一点细节.不多说了直接上代码和效果图.大家可以直接复制我的代码进 ...
最新文章
- 远程控制软件VNC教程和对内网机器控制的实现
- 2021-07-23 B站观看力扣算法视频第一天
- hdu2722 简单最短路,处理好输入就行
- c语言mfc弹出窗口函数,CMFCDesktopAlertWnd实现桌面弹出消息框
- java查询数组中元素的索引
- Jeewx企业号系统入门配置指南
- 05引用类型以及特殊引用类型string
- Hyper-V Server 虚拟光纤通道
- 从原子操作走向模板部署,详解云上资源自动化部署新模式
- 国考地市级各题型分值分布(数量关系10题,其他题型同省级试题相同,共130题)——仅供参考
- 计算机的标准输入法,维语输入法电脑版
- 在虚拟机下安装配置Linux和Oracle
- 计算平均成绩 (10分)
- html颜色代码 糖果色,75平米糖果色跃层家 绚丽色彩散发迷人魅力
- 研发团队角色与职责分析
- monthly rollup和security only的区别
- Linux升级gcc到最新版本--gcc-9.1.0
- 2021年N1叉车司机证考试及N1叉车司机模拟考试题库
- 机器学习_深度学习毕设题目汇总——皮肤_癌症_糖尿病
- python 圆形的词云