# 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