app/models/unidom/order/order_adjustment.rb in unidom-order-2.0 vs app/models/unidom/order/order_adjustment.rb in unidom-order-2.0.1
- old
+ new
@@ -1,44 +1,50 @@
##
# Order Adjustment 是订单调整项。
-class Unidom::Order::OrderAdjustment < Unidom::Order::ApplicationRecord
+module Unidom
+ module Order
- self.table_name = 'unidom_order_adjustments'
+ class OrderAdjustment < ApplicationRecord
- include Unidom::Common::Concerns::ModelExtension
- include ProgneTapera::EnumCode
+ self.table_name = 'unidom_order_adjustments'
- validates :amount, presence: true, numericality: { greater_than_or_equal_to: -1_000_000_000, less_than_or_equal_to: 1_000_000_000 }
+ include Unidom::Common::Concerns::ModelExtension
+ include ProgneTapera::EnumCode
- belongs_to :adjusted, polymorphic: true
+ validates :amount, presence: true, numericality: { greater_than_or_equal_to: -1_000_000_000, less_than_or_equal_to: 1_000_000_000 }
- scope :adjusted_is, ->(adjusted) { where adjusted: adjusted }
+ belongs_to :adjusted, polymorphic: true
- code :adjustment_factor, Unidom::Order::AdjustmentFactor
+ scope :adjusted_is, ->(adjusted) { where adjusted: adjusted }
- ##
- # 对订单或者订单项 adjusted 进行调整。调整金额为 amount ,缺省为 0 。调整原因是 due_to ,缺省是 FRGT 。调整时间是 opened_at ,缺省为当前时间。如:
- # Unidom::Order::OrderAdjustment.adjust! order, amount: 7.90, due_to: 'LTAX'
- def self.adjust!(adjusted, amount: 0, due_to: 'FRGT', opened_at: Time.now)
+ code :adjustment_factor, Unidom::Order::AdjustmentFactor
- assert_present! :adjusted, adjusted
- assert_present! :amount, amount
- assert_present! :due_to, due_to
- assert_present! :opened_at, opened_at
+ ##
+ # 对订单或者订单项 adjusted 进行调整。调整金额为 amount ,缺省为 0 。调整原因是 due_to ,缺省是 FRGT 。调整时间是 opened_at ,缺省为当前时间。如:
+ # Unidom::Order::OrderAdjustment.adjust! order, amount: 7.90, due_to: 'LTAX'
+ def self.adjust!(adjusted, amount: 0, due_to: 'FRGT', opened_at: Time.now)
- query = adjusted_is(adjusted).adjustment_factor_coded_as(due_to).valid_at(now: opened_at).alive
- adjustment = query.first
- if adjustment.present?
- if 0==amount
- adjustment.soft_destroy
- else
- adjustment.amount = amount
- adjustment.save!
+ assert_present! :adjusted, adjusted
+ assert_present! :amount, amount
+ assert_present! :due_to, due_to
+ assert_present! :opened_at, opened_at
+
+ query = adjusted_is(adjusted).adjustment_factor_coded_as(due_to).valid_at(now: opened_at).alive
+ adjustment = query.first
+ if adjustment.present?
+ if 0==amount
+ adjustment.soft_destroy
+ else
+ adjustment.amount = amount
+ adjustment.save!
+ end
+ else
+ adjustment = query.create! amount: amount, opened_at: opened_at
+ end
+ adjustment
end
- else
- adjustment = query.create! amount: amount, opened_at: opened_at
- end
- adjustment
- end
-end unless Unidom::Common::Neglection.namespace_neglected? 'Unidom::Order::OrderAdjustment'
+ end unless Unidom::Common::Neglection.namespace_neglected? 'Unidom::Order::OrderAdjustment'
+
+ end
+end