| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262 |
- # encoding:utf-8
- class OrderDetail < ActiveRecord::Base
- has_paper_trail
- self.table_name = "order_details"
- #belongs_to :product
- belongs_to :order, :foreign_key => :order_id
- # has_one :order, :foreign_key=>:order_id, :primary_key=>:order_id
- validates :order_no,:product_id,:nums, presence: true
- validate :order_validation
- #after_create :import_orders
- # def before_import_save(record)
- # end
- def after_import_save(record)
- # 获取商品信息
- pd = Product.where("id = ?", record[:product_id]).first
- detail = OrderDetail.where("id = ?", self.id).first
- od = Order.where("order_id = ?", self.order_no).first
- if !pd.blank? && !od.blank? && od.source=="sys"
- detail.order_id=od.id
- detail.product_name=pd.name
- detail.relate_product_id=pd.relate_product_id
- detail.pv=pd.pv
- detail.price=pd.price
- detail.order_status=order.status
- detail.depart=order.depart
- detail.save
- # 更新order信息
- if detail.is_zeng==0
- od.pv=od.pv+detail.nums*pd.pv
- od.save
- end
- #生成base_dt明细
- unless pd.package==true
- baseDt = BaseDetail.new
- baseDt.order_no=od.order_id
- baseDt.product_id=pd.id
- baseDt.dt_id=detail.id
- baseDt.order_id=od.id
- baseDt.is_zeng=detail.is_zeng
- baseDt.nums=detail.nums
- baseDt.price=pd.price
- baseDt.product_name=pd.name
- baseDt.depart=order.depart
- baseDt.save
- else
- #生成套装商品明细
- items = ProductItem.where("product_id = ?", record[:product_id])
- items.each do |item|
- pd = Product.where("id = ?", item.item_id).first
- unless pd.blank?
- baseDt = BaseDetail.new
- baseDt.order_no=od.order_id
- baseDt.dt_id=detail.id
- baseDt.is_zeng=detail.is_zeng
- baseDt.nums=detail.nums*item.nums
- baseDt.depart=order.depart
- baseDt.product_id=pd.id
- baseDt.order_id=od.id
- baseDt.price=pd.price
- baseDt.product_name=pd.name
- baseDt.save
- end
- end
- end
- end
- end
- def order_validation
- if self.product_id > 0
- prd = Product.where("id = ?", self.product_id).first
- if prd.blank?
- self.errors.add(:product_id,"商品不存在,请重新填写商品ID")
- else
- self.product_name=prd.name
- #self.price=prd.price
- end
- end
- if self.order_no.length>0
- ord = Order.where("order_id = ?", self.order_no).first
- if ord.blank?
- self.errors.add(:order_id,"订单不存在,请重新填写编号")
- else
- self.order_id=ord.id
- end
- end
- end
- def order_state
- order = Order.where("id = ?", self.order_id).first
- if !order.blank?
- return order.status
- end
- end
- def product
- pd = Product.where("id = ?", self.product_id).first
- if !pd.blank?
- return pd.name
- else
- return "--"
- end
- end
- def paid_time
- order = Order.where("id = ?", self.order_id).first
- if !order.blank?
- paidTime=order.paied_at == 0 || order.paied_at == nil ? Time.at(0) : Time.at(order.paied_at)
- return paidTime
- end
- return paidTime
- end
- def pay_way
- payWay = ""
- order = Order.where("id = ?", self.order_id).first
- if !order.blank?
- payWay=order.pay_way
- end
- return payWay
- end
- STATUS_ENUM = [["未支付","unpay"],["已关闭","closed"],["待确认","unconfirmed"],["处理中","processing"],["已完成","complete"],["待收货","dispatch"],["已退款","refunded"]]
- PAY_WAY_ENUM = [
- # ["Web网银连连支付","webbankllpay"],
- # ["Web认证连连支付","webauthllpay"],
- # ["Wap认证连连支付","wapauthllpay"],
- ["微信支付","weixinpay"],
- ["提货券支付","balance"],
- # ["公众号微信支付","gzhwxpay"],
- # ["公众号提货券支付","gzhbalance"],
- # ["统统微信支付","wx_sumpay"],
- # ["统统Web网银支付","webbanksumpay"],
- ]
- rails_admin do
- navigation_label '商品管理'
- weight -240
- parent Order
-
- list do
- filters [:order_no,:nums,:price,:order_status]
- field :id
- field :order_no do
- filterable true
- end
- #field :order
- #field :product
- field :product do
- visible false
- end
- field :nums
- field :price do
- visible true
- label "单价(元)"
- formatted_value do
- value!=0 ? (value/100.0):0
- end
- end
- field :product_name
- field :order_status, :enum do
- filterable true
- enum do
- STATUS_ENUM
- end
- end
- # field :paid_time do
- # filterable true
- # formatted_value do
- # #bindings[:object].order.paied_time
- # (bindings[:object].order.paied_at == 0 || bindings[:object].order.paied_at == nil) ? Time.at(0) : Time.at(bindings[:object].order.paied_at)
- # end
- # end
- field :paid_time
- field :order do
- queryable true
- searchable [:status]
- end
- field :pay_way, :enum do
- filterable true
- enum do
- PAY_WAY_ENUM
- end
- end
- field :is_zeng
- field :size_name
- field :color_name
- field :pv do
- formatted_value do # used in form views
- value.to_f / 100
- end
- end
- field :created_at
- field :updated_at
- end
- show do
- field :id
- field :order_no
- field :product
- field :nums
- field :is_zeng
- field :price do
- visible true
- label "单价(元)"
- formatted_value do
- value!=0 ? (value/100.0):0
- end
- end
- field :order_status, :enum do
- filterable true
- enum do
- STATUS_ENUM
- end
- end
- field :product_name
- field :size_name
- field :color_name
- field :pv do
- formatted_value do # used in form views
- value.to_f / 100
- end
- end
- field :created_at
- field :updated_at
- end
- edit do
- field :order_no
- #field :order_id
- field :product_id
- field :nums
- field :is_zeng
- field :price
- end
- export do
- include_all_fields
- field :wx_user_id do
- formatted_value do
- bindings[:object].order.wx_user_id
- end
- end
- field :nums
- field :product_name
- field :unit_robo_balance_price do
- visible false
- end
- field :pv do
- formatted_value do # used in form views
- value.to_f / 100
- end
- end
- end
- end
- end
|