diff --git a/sample/db/samples/reimbursements.rb b/sample/db/samples/reimbursements.rb index 0fd4971afdc..4b7990a68b6 100644 --- a/sample/db/samples/reimbursements.rb +++ b/sample/db/samples/reimbursements.rb @@ -2,22 +2,46 @@ Spree::Sample.load_sample("orders") -order = Spree::Order.last -inventory_unit = order.inventory_units.first +order = Spree::Order.last +inventory_unit = order.inventory_units.take! stock_location = inventory_unit.find_stock_item.stock_location +return_reason = Spree::ReturnReason.active.take! +preferred_reimbursement_type = Spree::ReimbursementType.where(name: 'Original').take! +admin_user = if defined?(Spree::Auth) + Spree.user_class.admin.take! +else + Spree.user_class.find_or_create_by!(email: 'admin@example.com') +end -return_item = Spree::ReturnItem.create(inventory_unit: inventory_unit) +# Mark the order paid and shipped +order.payments.pending.each(&:complete) +order.shipments.each do |shipment| + shipment.suppress_mailer = false + shipment.ship! +end -return_item.exchange_variant = return_item.eligible_exchange_variants.last -return_item.build_exchange_inventory_unit -return_item.accept! +# Create a return authorization +return_item = Spree::ReturnItem.new( + inventory_unit: inventory_unit, + preferred_reimbursement_type: preferred_reimbursement_type +) -customer_return = Spree::CustomerReturn.create( - stock_location: stock_location, - return_items: [return_item] +order.return_authorizations.create!( + reason: return_reason, + return_items: [return_item], + stock_location: stock_location ) -order.reimbursements.create( - customer_return: customer_return, - return_items: [return_item] +# Create a customer return and mark it as received +customer_return = Spree::CustomerReturn.create!( + return_items: [return_item], + stock_location: stock_location ) +return_item.reload +return_item.skip_customer_return_processing = true +return_item.receive! +customer_return.process_return! + +# Accept the customer return and reimburse it +reimbursement = Spree::Reimbursement.build_from_customer_return(customer_return) +reimbursement.return_all(created_by: admin_user)