skidev / order-item-attributes
Skidev 订单项属性模块
1.0.0
2024-09-11 08:04 UTC
Requires
- php: >=7.0.0
README
概述
Skidev_OrderItemAttributes Magento 2 模块允许您指定某些产品属性,这些属性应在将报价转换为订单时传输到 sales_order_item
表中。这可以存储所选产品属性值以及每个订单项,以便将来参考。
功能
- 向 EAV 属性模型 添加了新的选项,用于确定属性值是否应传输到订单项。
- 将指定的产品属性从 报价项 传输到 订单项,格式为 JSON。
- 支持各种产品属性类型,例如
- 文本属性
- 下拉属性(存储标签值)
- 多选属性(存储所选选项标签)
安装
-
1. 将此存储库克隆或下载到您的 Magento 2 安装目录中的 app/code/SkiDev/OrderItemAttributes。
-
2. 运行以下命令以启用模块并设置数据库模式
bin/magento module:enable SkiDev_OrderItemAttributes
bin/magento setup:upgrade
bin/magento cache:flush
模式更改
此模块引入了两个新的数据库列
- 1. 在
catalog_eav_attribute
表中transfer_to_order_item
- 类型:
SMALLINT
- 描述: 确定是否应将此属性传输到订单项。
- 类型:
- 2. 在
sales_order_item
表中product_attributes
- 类型:
TEXT
- 描述: 存储从报价项传输的产品属性(以 JSON 格式)。
- 类型:
功能
向属性添加传输到订单选项
在 Magento 管理面板中,在属性创建/编辑表单中添加了一个新的选项,用于标记要传输到订单项的属性
- 当在管理面板中编辑属性时,您将看到一个标记为“传输到订单项”的字段。选择“是”将确保在将报价转换为订单时传输属性值。
观察者:将产品属性保存到订单项
模块使用一个观察者,该观察者监听 sales_convert_quote_item_to_order_item
事件。在从报价到订单的转换过程中,此观察者
- 1. 遍历所有报价项。
- 2. 对于每个报价项
- 检索相关产品及其属性。
- 如果属性设置了
transfer_to_order_item
标志为 1,则处理其值。 - 根据属性类型
- 文本、文本区域、日期 属性:直接保存值。
- 下拉 属性:保存所选选项的标签。
- 多选 属性:将所选选项的标签保存为数组。
- 3. 将所有相关属性编码为 JSON 字符串,并存储在
sales_order_item
表的product_attributes
字段中。
订单项中存储的示例 JSON 数据
product_attributes
字段以 JSON 格式存储数据。例如
{ "color": "Red", "size": "Large", "custom_options": ["Option 1", "Option 2"] }
作者
作者名称: Karol Puczkowski
电子邮件: karol.skidev@gmail.com
github: github.com/KarolPuczkowski
您可以通过模块提出任何问题或贡献。