Fix easy rubocop issues

This commit is contained in:
Luis Ramos
2020-08-08 16:02:13 +01:00
parent 94ad02abbe
commit 2cd066237d
5 changed files with 105 additions and 90 deletions

View File

@@ -49,8 +49,8 @@ module Spree
end
def find_stock_item
Spree::StockItem.where(stock_location_id: shipment.stock_location_id,
variant_id: variant_id).first
Spree::StockItem.find_by(stock_location_id: shipment.stock_location_id,
variant_id: variant_id)
end
# Remove variant default_scope `deleted_at: nil`

View File

@@ -15,7 +15,8 @@ module Spree
has_one :product, through: :variant
has_many :adjustments, as: :adjustable, dependent: :destroy
has_and_belongs_to_many :option_values, join_table: 'spree_option_values_line_items', class_name: 'Spree::OptionValue'
has_and_belongs_to_many :option_values, join_table: 'spree_option_values_line_items',
class_name: 'Spree::OptionValue'
before_validation :adjust_quantity
before_validation :copy_price
@@ -31,7 +32,8 @@ module Spree
validates_with Stock::AvailabilityValidator
before_save :update_inventory
before_save :calculate_final_weight_volume, if: :quantity_changed?, unless: :final_weight_volume_changed?
before_save :calculate_final_weight_volume, if: :quantity_changed?,
unless: :final_weight_volume_changed?
after_save :update_order
after_save :update_units
before_destroy :update_inventory_before_destroy
@@ -50,7 +52,8 @@ module Spree
# Find line items that are from orders distributed by the user or supplied by the user
joins(variant: :product).
joins(:order).
where('spree_orders.distributor_id IN (?) OR spree_products.supplier_id IN (?)', user.enterprises, user.enterprises).
where('spree_orders.distributor_id IN (?) OR spree_products.supplier_id IN (?)',
user.enterprises, user.enterprises).
select('spree_line_items.*')
end
}
@@ -99,17 +102,17 @@ module Spree
}
def copy_price
if variant
self.price = variant.price if price.nil?
self.cost_price = variant.cost_price if cost_price.nil?
self.currency = variant.currency if currency.nil?
end
return unless variant
self.price = variant.price if price.nil?
self.cost_price = variant.cost_price if cost_price.nil?
self.currency = variant.currency if currency.nil?
end
def copy_tax_category
if variant
self.tax_category = variant.product.tax_category
end
return unless variant
self.tax_category = variant.product.tax_category
end
def amount
@@ -223,18 +226,18 @@ module Spree
private
def update_inventory
if changed?
scoper.scope(variant)
Spree::OrderInventory.new(order).verify(self, target_shipment)
end
return unless changed?
scoper.scope(variant)
Spree::OrderInventory.new(order).verify(self, target_shipment)
end
def update_order
if changed? || destroyed?
# update the order totals, etc.
order.create_tax_charge!
order.update!
end
return unless changed? || destroyed?
# update the order totals, etc.
order.create_tax_charge!
order.update!
end
def update_inventory_before_destroy

View File

@@ -7,7 +7,8 @@ require 'open_food_network/feature_toggle'
require 'open_food_network/tag_rule_applicator'
require 'concerns/order_shipment'
ActiveSupport::Notifications.subscribe('spree.order.contents_changed') do |_name, _start, _finish, _id, payload|
ActiveSupport::Notifications
.subscribe('spree.order.contents_changed') do |_name, _start, _finish, _id, payload|
payload[:order].reload.update_distribution_charge!
end
@@ -82,7 +83,9 @@ module Spree
before_validation :ensure_customer, unless: :customer_is_valid?
validates :customer, presence: true, if: :require_customer?
validate :products_available_from_new_distribution, if: lambda { distributor_id_changed? || order_cycle_id_changed? }
validate :products_available_from_new_distribution, if: lambda {
distributor_id_changed? || order_cycle_id_changed?
}
validate :disallow_guest_order
attr_accessor :use_billing
@@ -110,7 +113,8 @@ module Spree
where(nil)
else
# Find orders that are distributed by the user or have products supplied by the user
# WARNING: This only filters orders, you'll need to filter line items separately using LineItem.managed_by
# WARNING: This only filters orders,
# you'll need to filter line items separately using LineItem.managed_by
with_line_items_variants_and_products_outer.
where('spree_orders.distributor_id IN (?) OR spree_products.supplier_id IN (?)',
user.enterprises.select(&:id),
@@ -330,11 +334,6 @@ module Spree
current_item.quantity = quantity
current_item.max_quantity = max_quantity
# This is the original behaviour, behaviour above is so that we can resolve the order populator bug
# current_item.quantity ||= 0
# current_item.max_quantity ||= 0
# current_item.quantity += quantity.to_i
# current_item.max_quantity += max_quantity.to_i
current_item.currency = currency unless currency.nil?
current_item.save
else
@@ -356,14 +355,14 @@ module Spree
def set_variant_attributes(variant, attributes)
line_item = find_line_item_by_variant(variant)
if line_item
if attributes.key?(:max_quantity) && attributes[:max_quantity].to_i < line_item.quantity
attributes[:max_quantity] = line_item.quantity
end
return unless line_item
line_item.assign_attributes(attributes)
line_item.save!
if attributes.key?(:max_quantity) && attributes[:max_quantity].to_i < line_item.quantity
attributes[:max_quantity] = line_item.quantity
end
line_item.assign_attributes(attributes)
line_item.save!
end
# Associates the specified user with the order.
@@ -372,10 +371,13 @@ module Spree
self.email = user.email
self.created_by = user if created_by.blank?
if persisted?
# immediately persist the changes we just made, but don't use save since we might have an invalid address associated
self.class.unscoped.where(id: id).update_all(email: user.email, user_id: user.id, created_by_id: created_by_id)
end
return unless persisted?
# Persist the changes we just made,
# but don't use save since we might have an invalid address associated
self.class.unscoped.where(id: id).update_all(email: user.email,
user_id: user.id,
created_by_id: created_by_id)
end
# FIXME refactor this method and implement validation using validates_* utilities
@@ -383,7 +385,7 @@ module Spree
record = true
while record
random = "R#{Array.new(9){ rand(9) }.join}"
record = self.class.where(number: random).first
record = self.class.find_by(number: random)
end
self.number = random if number.blank?
number
@@ -429,9 +431,10 @@ module Spree
end
def name
if (address = bill_address || ship_address)
"#{address.firstname} #{address.lastname}"
end
address = bill_address || ship_address
return unless address
"#{address.firstname} #{address.lastname}"
end
def can_ship?
@@ -487,10 +490,12 @@ module Spree
@available_payment_methods ||= PaymentMethod.available(:front_end)
end
# "Checkout" is the initial state and, for card payments, "pending" is the state after authorization
# "Checkout" is the initial state and, for card payments, "pending" is the state after auth
# These are both valid states to process the payment
def pending_payments
(payments.select(&:pending?) + payments.select(&:processing?) + payments.select(&:checkout?)).uniq
(payments.select(&:pending?) +
payments.select(&:processing?) +
payments.select(&:checkout?)).uniq
end
# processes any pending payments and must return a boolean as it's
@@ -507,17 +512,15 @@ module Spree
# :allow_checkout_on_gateway_error is set to false
#
def process_payments!
if pending_payments.empty?
raise Core::GatewayError, Spree.t(:no_pending_payments)
else
pending_payments.each do |payment|
break if payment_total >= total
raise Core::GatewayError, Spree.t(:no_pending_payments) if pending_payments.empty?
payment.process!
pending_payments.each do |payment|
break if payment_total >= total
if payment.completed?
self.payment_total += payment.amount
end
payment.process!
if payment.completed?
self.payment_total += payment.amount
end
end
rescue Core::GatewayError => e
@@ -542,7 +545,7 @@ module Spree
end
def insufficient_stock_lines
line_items.select &:insufficient_stock?
line_items.select(&:insufficient_stock?)
end
def merge!(order)
@@ -581,15 +584,15 @@ module Spree
def state_changed(name)
state = "#{name}_state"
if persisted?
old_state = send("#{state}_was")
state_changes.create(
previous_state: old_state,
next_state: send(state),
name: name,
user_id: user_id
)
end
return unless persisted?
old_state = __send__("#{state}_was")
state_changes.create(
previous_state: old_state,
next_state: __send__(state),
name: name,
user_id: user_id
)
end
def shipped?
@@ -641,25 +644,28 @@ module Spree
# to delivery again so that proper updated shipments are created.
# e.g. customer goes back from payment step and changes order items
def ensure_updated_shipments
if shipments.any?
shipments.destroy_all
update_column(:state, "address")
end
return unless shipments.any?
shipments.destroy_all
update_column(:state, "address")
end
def refresh_shipment_rates
shipments.map &:refresh_rates
shipments.map(&:refresh_rates)
end
# Check that line_items in the current order are available from a newly selected distribution
def products_available_from_new_distribution
# Check that the line_items in the current order are available from a newly selected distribution
errors.add(:base, I18n.t(:spree_order_availability_error)) unless OrderCycleDistributedVariants.new(order_cycle, distributor).distributes_order_variants?(self)
return if OrderCycleDistributedVariants.new(order_cycle, distributor)
.distributes_order_variants?(self)
errors.add(:base, I18n.t(:spree_order_availability_error))
end
def disallow_guest_order
if using_guest_checkout? && registered_email?
errors.add(:base, I18n.t('devise.failure.already_registered'))
end
return unless using_guest_checkout? && registered_email?
errors.add(:base, I18n.t('devise.failure.already_registered'))
end
# After changing line items of a completed order
@@ -816,9 +822,9 @@ module Spree
end
def ensure_line_items_present
if line_items.blank?
errors.add(:base, Spree.t(:there_are_no_items_for_this_order)) && (return false)
end
return if line_items.present?
errors.add(:base, Spree.t(:there_are_no_items_for_this_order)) && (return false)
end
def has_available_shipment
@@ -829,9 +835,9 @@ module Spree
end
def ensure_available_shipping_rates
if shipments.empty? || shipments.any? { |shipment| shipment.shipping_rates.blank? }
errors.add(:base, Spree.t(:items_cannot_be_shipped)) && (return false)
end
return unless shipments.empty? || shipments.any? { |shipment| shipment.shipping_rates.blank? }
errors.add(:base, Spree.t(:items_cannot_be_shipped)) && (return false)
end
def has_available_payment
@@ -900,10 +906,13 @@ module Spree
end
def ensure_customer
unless associate_customer
customer_name = bill_address.andand.full_name
self.customer = Customer.create(enterprise: distributor, email: email_for_customer, user: user, name: customer_name, bill_address: bill_address.andand.clone, ship_address: ship_address.andand.clone)
end
return if associate_customer
customer_name = bill_address.andand.full_name
self.customer = Customer.create(enterprise: distributor, email: email_for_customer,
user: user, name: customer_name,
bill_address: bill_address.andand.clone,
ship_address: ship_address.andand.clone)
end
def update_adjustment!(adjustment)

View File

@@ -59,12 +59,13 @@ module Spree
# first unshipped that already includes this variant
# first unshipped that's leaving from a stock_location that stocks this variant
def determine_target_shipment(variant)
shipment = order.shipments.detect do |shipment|
target_shipment = order.shipments.detect do |shipment|
(shipment.ready? || shipment.pending?) && shipment.include?(variant)
end
shipment ||= order.shipments.detect do |shipment|
(shipment.ready? || shipment.pending?) && variant.stock_location_ids.include?(shipment.stock_location_id)
target_shipment || order.shipments.detect do |shipment|
(shipment.ready? || shipment.pending?) &&
variant.stock_location_ids.include?(shipment.stock_location_id)
end
end

View File

@@ -67,7 +67,9 @@ module Spree
private
def must_have_shipped_units
errors.add(:order, Spree.t(:has_no_shipped_units)) if order.nil? || order.shipped_shipments.none?
return unless order.nil? || order.shipped_shipments.none?
errors.add(:order, Spree.t(:has_no_shipped_units))
end
def generate_number
@@ -76,7 +78,7 @@ module Spree
record = true
while record
random = "RMA#{Array.new(9){ rand(9) }.join}"
record = self.class.where(number: random).first
record = self.class.find_by(number: random)
end
self.number = random
end