class SpreeChannable::ReturnImporter

Public Class Methods

import(return_data) click to toggle source

{

    "status": "new",
    "channel_name": "bol",
    "channel_id": "61284922",
    "channable_id": 151,
    "data": {
        "item": {
            "id": "11694321",
            "order_id": "4522232111",
            "gtin": "0884500642113",
            "title": "Nike Air Force 1 Winter Premium GS Flax Pack",
            "quantity": 1,
            "reason": "Anders, namelijk:",
            "comment": "De schoenen vielen te groot."
        },
        "customer": {
            "gender": "male",
            "first_name": "Jans",
            "last_name": "Van Janssen",
            "email": "2ixee2337ca74m23423uu@verkopen.bol.com"
        },
        "address": {
            "first_name": "Jans",
            "last_name": "Van Janssen",
            "email": "2ixee2337ca74m23423uu@verkopen.bol.com",
            "street": "Teststraat",
            "house_number": 12,
            "address1": "Teststraat 12",
            "adderss2": "",
            "city": "Utrecht",
            "country_code": "NL",
            "zip_code": "1234 XZ"
        }
    }
}
# File lib/spree_channable/return_importer.rb, line 40
def self.import(return_data)
  order = Spree::Order.find_by_channable_order_id(return_data.data.item.order_id)

  return_reason_id = Spree::ReturnAuthorizationReason.first.id
  inventory_unit = order.line_items.detect {|li| li.variant.sku == return_data.data.item.gtin}&.inventory_units&.first


  if order && inventory_unit
    return_authorization = Spree::ReturnAuthorization.create!(
        order_id: order.id,
        stock_location: ::SpreeChannable.configuration.stock_location,
        return_authorization_reason_id: return_reason_id
    )
    Spree::CustomerReturn.create(
        stock_location: ::SpreeChannable.configuration.stock_location,
        channable_order_id: return_data.channable_id,
        return_items_attributes: {
            return_authorization_id: return_authorization.id, inventory_unit_id: inventory_unit.id
        })
  end
end