Skip to content

Commit

Permalink
Merge pull request #11724 from ECHOInternational/iss_11723
Browse files Browse the repository at this point in the history
Fix incorrect inventory unit merge
  • Loading branch information
rafalcymerys committed Nov 3, 2022
2 parents 5c9dffb + 4c35c48 commit 9295fef
Show file tree
Hide file tree
Showing 2 changed files with 52 additions and 1 deletion.
2 changes: 1 addition & 1 deletion core/app/models/spree/fulfilment_changer.rb
Original file line number Diff line number Diff line change
Expand Up @@ -92,7 +92,7 @@ def reduce_units_quantities(reduced_quantity, units)
end

def get_desired_shipment_inventory_unit(state)
desired_shipment.inventory_units.find_or_create_by(state: state) do |unit|
desired_shipment.inventory_units.find_or_create_by(state: state, variant: variant) do |unit|
current_shipment_unit = current_shipment_units.first
unit.variant_id = current_shipment_unit.variant_id
unit.order_id = current_shipment_unit.order_id
Expand Down
51 changes: 51 additions & 0 deletions core/spec/models/spree/fulfilment_changer_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,57 @@
variant.stock_items.first.update_column(:count_on_hand, 100)
end

context 'when the order has multiple line items' do
let(:current_shipment_inventory_unit_count) { 3 }
let(:second_variant) { create(:variant)}
let(:third_variant) { create(:variant)}
let(:quantity) { 3 }


let(:order) do
create(
:completed_order_with_totals,
without_line_items: true,
line_items_attributes: [
{
quantity: current_shipment_inventory_unit_count,
variant: variant
},
{
quantity: current_shipment_inventory_unit_count,
variant: second_variant
},
{
quantity: current_shipment_inventory_unit_count,
variant: third_variant
}
]
)
end

it 'can move more than one variant to the desired shipment' do
described_class.new(
current_stock_location: current_shipment.stock_location,
desired_stock_location: desired_shipment.stock_location,
current_shipment: current_shipment,
desired_shipment: desired_shipment,
variant: variant,
quantity: quantity
).run!
expect(desired_shipment.inventory_units.count).to eq 1
described_class.new(
current_stock_location: current_shipment.stock_location,
desired_stock_location: desired_shipment.stock_location,
current_shipment: current_shipment,
desired_shipment: desired_shipment,
variant: second_variant,
quantity: quantity
).run!
expect(current_shipment.inventory_units.count).to eq 1
expect(desired_shipment.inventory_units.count).to eq 2
end
end

context 'when the current shipment has enough inventory units' do
let(:current_shipment_inventory_unit_count) { 3 }
let(:quantity) { 1 }
Expand Down

0 comments on commit 9295fef

Please sign in to comment.