Module: Spree::Stock::PrioritizerDecorator

Defined in:
app/models/spree/stock/prioritizer_decorator.rb

Instance Method Summary collapse

Instance Method Details

#hash_item(item) ⇒ Object

同一 variant の複数 line_item が order に存在する場合 (例: spree_embed_gravity_forms の wp_gf_entry_id で line_item を分離するケース) に、Spree 本家の hash_item は shipment が無いと variant.hash のみで識別するため、 同 variant の inventory_unit が同じ adjuster を共有してしまい、 後発の inventory_unit が Adjuster#adjustfulfilled? 判定で remove_item されて shipment から欠落する。 Issue #1187 を参照。Packer decorator の修正と合わせて line_item 単位で adjuster を 個別化することで対処する。

@gem-override spree_core-5.3.6/app/models/spree/stock/prioritizer.rb#hash_item



15
16
17
18
19
20
21
22
# File 'app/models/spree/stock/prioritizer_decorator.rb', line 15

def hash_item(item)
  line_item_id = item.inventory_unit.line_item_id
  return super unless line_item_id

  shipment = item.inventory_unit.shipment
  base = item.inventory_unit.variant.hash ^ line_item_id.hash
  shipment.present? ? (base ^ shipment.hash) : base
end