2011-02-09 78 views
10

another question的啓發我最近看到了SO,我想看看是否有人可以解釋報價項目(Mage_Sales_Model_Quote_Item)和報價地址項目(Mage_Sales_Model_Quote_Address_Item)之間的區別?Magento:報價項目和報價地址項目之間的概念區別是什麼?

我想我明白報價單的概念(Mage_Sales_Model_Quote_Item - 映射到sales_flat_quote_item數據庫表) - 基本上是客戶購物車中的一個訂單項,其中包含產品的名稱/數量,以及任何特殊選項。我不明白的是引用地址項目Mage_Sales_Model_Quote_Address_Item - 映射到sales_flat_quote_address_item數據庫表格)。我看到它有一個與之相關的地址,但是它的目的是什麼?我可以想象它可能與多地址發送有關(我從未使用過),但這是一個瘋狂的猜測。

作爲第二個問題(實際上是這個問題的全部原因:/),是否有任何處理報價項目的自定義模塊可以安全地忽略報價地址項目的情況?

回答

7

爲每個項目需要與「船到多個地址」它被映射到不同的地址

+1

如果是這種情況,您是否清楚爲什麼大部分來自quote_item的數據被克隆到此表中?看起來像quote_address上的可選address_id字段將解決同樣的問題。 – 2011-02-09 21:55:10

+1

@約瑟夫。我完全同意你的看法。令人討厭的是,所有這些數據都是重複的......甚至對只使用onepage結賬的商店也是如此。很高興知道這背後的原因,但是哦。 – shaune 2011-02-11 18:27:57

11

我以前處理了這一點。

基本上,報價項目就像你描述的那樣。它代表購物車中的所有細節的訂單項。

至於報價地址項目,它只是一個對象,它包含對報價項目對象的引用,對地址對象的引用以及將要發送到此特定地址的報價項目中的子集數量(但是他們從報價項目到無用地複製了所有內容)。

如果使用multishipping結帳,它是用於創建幾個Magento訂單對象(每個訂單,就好像它與報價項目的子集分開)的報價地址項目。

當然,這是一個笨重的設計。如果他們只保留報價項目數據並添加地址標識字段並完全消除「報價地址項目」概念,那將會更好。看起來像是一個過度規範化的案例,導致他們反感。

想要與購物車混淆的代碼可以安全地忽略報價地址項目,以便僅處理onepage結帳(並且multishipping已禁用)。

如果你想也有變化multishipping結賬正確顯示,你也必須惹帖地址項目(並在這些地區的代碼是相當難看)。

相關問題