Skip to content

Commit

Permalink
Reduce complexity of BackorderJob
Browse files Browse the repository at this point in the history
  • Loading branch information
mkllnk committed Sep 11, 2024
1 parent 9837ad1 commit c949158
Showing 1 changed file with 20 additions and 13 deletions.
33 changes: 20 additions & 13 deletions app/jobs/backorder_job.rb
Original file line number Diff line number Diff line change
Expand Up @@ -39,27 +39,30 @@ def self.place_backorder(order, linked_variants)
ordered_quantities = {}

linked_variants.each do |variant|
needed_quantity = -1 * variant.on_hand
solution = broker.best_offer(variant.semantic_links[0].semantic_id)

wholesale_quantity = (needed_quantity.to_f / solution.factor).ceil
retail_quantity = wholesale_quantity * solution.factor

line = orderer.find_or_build_order_line(backorder, solution.offer)
line.quantity = line.quantity.to_i + wholesale_quantity

retail_quantity = add_item_to_backorder(variant, broker, backorder, orderer)
ordered_quantities[variant] = retail_quantity
end

placed_order = orderer.send_order(backorder)

schedule_order_completion(user, order, placed_order) if orderer.new?(backorder)
place_order(user, order, orderer, backorder)

linked_variants.each do |variant|
variant.on_hand += ordered_quantities[variant]
end
end

def self.add_item_to_backorder(variant, broker, backorder, orderer)
needed_quantity = -1 * variant.on_hand
solution = broker.best_offer(variant.semantic_links[0].semantic_id)

wholesale_quantity = (needed_quantity.to_f / solution.factor).ceil
retail_quantity = wholesale_quantity * solution.factor

line = orderer.find_or_build_order_line(backorder, solution.offer)
line.quantity = line.quantity.to_i + wholesale_quantity

retail_quantity
end

def self.load_broker(user)
FdcOfferBroker.new(load_catalog(user))
end
Expand All @@ -70,7 +73,11 @@ def self.load_catalog(user)
DfcIo.import(catalog_json)
end

def self.schedule_order_completion(user, order, placed_order)
def self.place_order(user, order, orderer, backorder)
placed_order = orderer.send_order(backorder)

return unless orderer.new?(backorder)

wait_until = order.order_cycle.orders_close_at + SALE_SESSION_DELAY
CompleteBackorderJob.set(wait_until:)
.perform_later(user, placed_order.semanticId)
Expand Down

0 comments on commit c949158

Please sign in to comment.