skidev/order-item-attributes

Skidev 订单项属性模块

1.0.0 2024-09-11 08:04 UTC

This package is auto-updated.

Last update: 2024-09-11 08:18:33 UTC


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
您可以通过模块提出任何问题或贡献。