mirror of
https://github.com/openfoodfoundation/openfoodnetwork
synced 2026-03-16 04:24:23 +00:00
Merge pull request #13065 from mkllnk/dfc-amend-nothing
Admin updates can trigger new backorders until the order cycle is closed
This commit is contained in:
@@ -92,6 +92,7 @@ class CheckoutController < BaseController
|
||||
end
|
||||
@order.process_payments!
|
||||
@order.confirm!
|
||||
BackorderJob.check_stock(@order)
|
||||
order_completion_reset @order
|
||||
end
|
||||
|
||||
|
||||
@@ -23,8 +23,16 @@ class AmendBackorderJob < ApplicationJob
|
||||
def amend_backorder(order)
|
||||
backorder = BackorderUpdater.new.amend_backorder(order)
|
||||
|
||||
user = order.distributor.owner
|
||||
urls = nil # Not needed to send order. The backorder id is the URL.
|
||||
FdcBackorderer.new(user, urls).send_order(backorder) if backorder
|
||||
if backorder
|
||||
user = order.distributor.owner
|
||||
urls = nil # Not needed to send order. The backorder id is the URL.
|
||||
FdcBackorderer.new(user, urls).send_order(backorder)
|
||||
elsif !order.order_cycle.closed?
|
||||
|
||||
# We don't have an order to amend but the order cycle is or will open.
|
||||
# We can assume that this job was triggered by an admin creating a new
|
||||
# order or adding backorderable items to an order.
|
||||
BackorderJob.new.place_backorder(order)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -392,8 +392,6 @@ module Spree
|
||||
|
||||
deliver_order_confirmation_email
|
||||
|
||||
BackorderJob.check_stock(self)
|
||||
|
||||
state_changes.create(
|
||||
previous_state: 'cart',
|
||||
next_state: 'complete',
|
||||
|
||||
@@ -28,7 +28,7 @@ class BackorderUpdater
|
||||
|
||||
backorder = orderer.find_open_order(order)
|
||||
|
||||
update(backorder, user, distributor, order_cycle)
|
||||
update(backorder, user, distributor, order_cycle) if backorder
|
||||
end
|
||||
|
||||
# Update a given backorder according to a distributor's order cycle.
|
||||
@@ -58,6 +58,9 @@ class BackorderUpdater
|
||||
variants.map do |variant|
|
||||
link = variant.semantic_links[0].semantic_id
|
||||
solution = broker.best_offer(link)
|
||||
|
||||
next unless solution.offer
|
||||
|
||||
line = orderer.find_or_build_order_line(backorder, solution.offer)
|
||||
if variant.on_demand
|
||||
adjust_stock(variant, solution, line)
|
||||
@@ -66,7 +69,7 @@ class BackorderUpdater
|
||||
end
|
||||
|
||||
line
|
||||
end
|
||||
end.compact
|
||||
end
|
||||
|
||||
def cancel_stale_lines(unprocessed_lines, managed_variants, broker)
|
||||
|
||||
Reference in New Issue
Block a user