返回

如何为库存充足的产品设置数量条件?——Magento 2 指南

php

如何在 Magento 2 中为库存充足的产品设置数量条件

概述

在 Magento 2 中,设置目录价格规则和购物车规则来针对库存充足的产品(数量大于或等于 1)可能是一项具有挑战性的任务。当尝试应用基于库存条件时,它们往往会重置为“数量等于或大于库存中”或“数量不为缺货”。本指南将深入探讨如何克服这一障碍,并提供分步说明和代码示例,以帮助你创建符合特定库存条件的价格规则。

步骤:目录价格规则

1. 创建规则信息

  • 导航到“促销”>“购物车价格规则”,添加新规则。
  • 设置规则名称和状态为“启用”。

2. 设置条件

  • 添加商品条件,指定“供应商”等于“供应商 X”。
  • 添加购物篮条件,设置“数量”大于或等于“1”。

3. 设置操作

  • 设置操作类型为“应用折扣”。
  • 选择折扣类型并指定折扣值(例如 10%)。

4. 保存规则

步骤:购物车价格规则

1. 创建规则信息

  • 导航到“促销”>“购物篮价格规则”,添加新规则。
  • 设置规则名称和状态为“启用”。

2. 设置条件

  • 添加商品条件,指定“供应商”等于“供应商 X”。
  • 添加购物篮条件,设置“数量”大于或等于“1”。

3. 设置操作

  • 设置操作类型为“应用折扣”。
  • 选择折扣类型并指定折扣值(例如 10%)。

4. 保存规则

代码示例

API:目录价格规则

$rule = new \Magento\CatalogRule\Model\Rule();
$condition1 = new \Magento\CatalogRule\Model\Rule\Condition\Product();
$condition2 = new \Magento\CatalogRule\Model\Rule\Condition\Cart();
$action = new \Magento\CatalogRule\Model\Rule\Action\Discount();

$rule->setName('Supplier X Stock Quantity Discount');
$rule->setIsActive(true);
$condition1->setAttribute('attribute_code');
$condition1->setOperator('==');
$condition1->setValue('supplier_x');
$condition2->setAttribute('qty');
$condition2->setOperator('>=');
$condition2->setValue(1);
$action->setType('Magento\CatalogRule\Model\Rule\Action\Discount');
$action->setOperator('discount_amount');
$action->setValue(0.1);

$rule->setConditions([$condition1, $condition2]);
$rule->setActions([$action]);
$rule->save();

API:购物车价格规则

$rule = new \Magento\SalesRule\Model\Rule();
$condition1 = new \Magento\SalesRule\Model\Rule\Condition\Product();
$condition2 = new \Magento\SalesRule\Model\Rule\Condition\Cart();
$action = new \Magento\SalesRule\Model\Rule\Action\Discount();

$rule->setName('Supplier X Stock Quantity Discount');
$rule->setIsActive(true);
$condition1->setAttribute('attribute_code');
$condition1->setOperator('==');
$condition1->setValue('supplier_x');
$condition2->setAttribute('qty');
$condition2->setOperator('>=');
$condition2->setValue(1);
$action->setType('Magento\SalesRule\Model\Rule\Action\Discount');
$action->setOperator('discount_amount');
$action->setValue(0.1);

$rule->setConditions([$condition1, $condition2]);
$rule->setActions([$action]);
$rule->save();

常见问题解答

Q1:为什么基于数量的条件会重置为默认值?
A:这是 Magento 2 中的一个已知问题,可以通过使用自定义模块或覆盖相关模型来解决。

Q2:我可以在规则中指定不同的折扣值吗?
A:是的,你可以设置固定折扣金额、百分比折扣或其他自定义折扣方法。

Q3:我可以在购物篮规则中使用相同的条件吗?
A:是的,购物篮价格规则支持基于商品和购物篮条件。

Q4:如何确保规则仅适用于特定供应商的产品?
A:通过在商品条件中指定供应商属性,你可以确保规则只适用于指定供应商的产品。

Q5:如果产品库存为 0,规则将如何运作?
A:规则将不会适用于库存为 0 的产品,因为数量条件将失败。