Magento:报价项目和报价地址项目之间的概念区别是什么?

标签 magento

灵感来自 another question我最近在 SO 上看到,我想看看是否有人可以解释报价项目 (Mage_Sales_Model_Quote_Item) 和报价地址项目 (Mage_Sales_Model_Quote_Address_Item) 之间的区别?

我想我理解报价项目的概念(Mage_Sales_Model_Quote_Item - 映射到 sales_flat_quote_item 数据库表) - 基本上是客户购物车中的一个行项目,其中包括产品的名称/sku、数量和任何特殊选项。我不明白的是报价地址项目 Mage_Sales_Model_Quote_Address_Item - 映射到 sales_flat_quote_address_item 数据库表)的用途。我看到它有一个与之关联的地址,但这到底是为了什么?我可以想象它可能与多地址运输(我从未使用过)有关,但这是一个疯狂的猜测。

作为第二个问题(实际上是这个问题的全部原因:/),是否存在处理报价项目的自定义模块可以安全地忽略报价地址项目的任何情况?

最佳答案

我以前处理过这个。

基本上报价项目与您描述的一样。它代表购物车中的一个行项目及其所有详细信息。

至于报价地址项目,它只是一个对象,其中包含对报价项目对象的引用、对地址对象的引用以及要运送到该特定地址的报价项目的子集数量(但随后它们复制从报价项目到它的所有内容,但无用)。

在多发货结帐的情况下,报价地址项目用于创建多个 Magento Order 对象(每个订单都与报价项目的子集分开)。

当然,这是一个笨拙的设计。如果他们只保留报价项目数据并添加地址 id 字段并完全消除“报价地址项目”概念会更好。看起来像是一个过度规范化的案例,结果适得其反。

想要弄乱购物车的代码可以安全地忽略报价地址项目,以防只处理单页结帐(并且禁用多发货)。

如果您还想让更改在多发货结帐中正确显示,您还必须弄乱报价地址项目(并且这些区域的代码非常难看)。

关于Magento:报价项目和报价地址项目之间的概念区别是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4948359/

相关文章:

magento - Magento 中的 PayPal 订单自动取消

php - 有没有办法以编程方式关闭类别或产品平面?

php - Magento 复制 Controller 到本地

Magento:添加到购物车时的产品动态价格变化

javascript - Magento 在每个页面上都包含一个自定义 block

php - Magento 中订单完成后调用新的 php 函数

php - 如何在 Magento 搜索中重置 addAttributeToFilter

php - 具有相同 id "429"的项目 (Mage_Sales_Model_Quote) 已存在

javascript - 弹出窗口中原型(prototype)类未定义

php - 保存客户时,Magento 停留在 "Please Wait"