Sha256: 0c5f6a4a43033b7a602d18ec7ebc10097cb0a671f039fcc1bb9174e171b8f47b
Contents?: true
Size: 1.61 KB
Versions: 2
Compression:
Stored size: 1.61 KB
Contents
# Price 是价格。 # pricing: 基价(Base)、折扣成分、额外收费成分、厂商建议价。 # charging: 一次性收费、重复性收费、使用率收费。 class Unidom::Price::Price < Unidom::Price::ApplicationRecord self.table_name = 'unidom_prices' include Unidom::Common::Concerns::ModelExtension include ProgneTapera::EnumCode validates :amount, presence: true, numericality: { less_than: 1000000000, greater_than: 0 } belongs_to :priced, polymorphic: true belongs_to :pricer, polymorphic: true scope :priced_by, ->(pricer) { where pricer: pricer } scope :priced_is, ->(priced) { where priced: priced } code :calculation, Unidom::Price::Calculation code :charging, Unidom::Price::Charging def self.price!(priced, amount: 0, pricer: nil, calculation_code: 'AMNT', pricing_code: 'BASE', charging_code: 'ONCE', opened_at: Time.now) price = priced_is(priced).calculation_coded_as(calculation_code).pricing_coded_as(pricing_code).charging_coded_as(charging_code).valid_at.alive.first if price.present? price.amount = amount if pricer.present? price.pricer = pricer else price.pricer_id = Unidom::Common::NULL_UUID price.pricer_type = '' end else attributes = { priced: priced, amount: amount, calculation_code: calculation_code, pricing_code: pricing_code, charging_code: charging_code, opened_at: opened_at } if pricer.present? attributes[:pricer] = pricer else attributes[:pricer_id] = Unidom::Common::NULL_UUID attributes[:pricer_type] = '' end create! attributes end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
unidom-price-1.6 | app/models/unidom/price/price.rb |
unidom-price-1.5 | app/models/unidom/price/price.rb |