Class: Shipping::ItemPackagingDiscrepancyCheck
- Inherits:
-
BaseService
- Object
- BaseService
- Shipping::ItemPackagingDiscrepancyCheck
- Defined in:
- app/services/shipping/item_packaging_discrepancy_check.rb
Instance Method Summary collapse
Methods inherited from BaseService
#initialize, #log_debug, #log_error, #log_info, #log_warning, #logger, #options, #tagged_logger
Constructor Details
This class inherits a constructor from BaseService
Instance Method Details
#process(delivery, options = {}) ⇒ Object
3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
# File 'app/services/shipping/item_packaging_discrepancy_check.rb', line 3 def process(delivery, = {}) packaging_solution = Shipping::DeterminePackaging.new.process(delivery:, is_freight: delivery.ships_ltl_freight?) if packaging_solution&.source_type == :from_delivery && (relevant_packages_from_delivery = (packaging_solution&.packages || []).select{|p| p.send(:contents)&.size == 1 && p.send(:contents).first.send(:quantity) == 1}).any? relevant_packages_from_delivery.each do |package_from_delivery| item = Item.find(package_from_delivery.send(:contents).first.send(:item_id)) if item.boxes.count == 1 package_from_item = item.boxes_to_packages.first unless package_from_item.close_to?(package_to_compare: package_from_delivery) item.update_column(:review_product_packaging_flag, true) if packaging_solution.packing_id.present? && (packing = Packing.find_by(id: packaging_solution.packing_id)) item.update_column(:packaging_discrepancy_packing_id, packing.id) if packing_actionable_for_item?(packing, item) end end end end end end |