order_detail.rb 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221
  1. # encoding:utf-8
  2. class OrderDetail < ActiveRecord::Base
  3. has_paper_trail
  4. self.table_name = "order_details"
  5. #belongs_to :product
  6. belongs_to :order, :foreign_key => :order_id
  7. # has_one :order, :foreign_key=>:order_id, :primary_key=>:order_id
  8. validates :order_no,:product_id,:nums, presence: true
  9. validate :order_validation
  10. after_create :import_orders
  11. def import_orders
  12. # 获取商品信息
  13. pd = Product.where("id = ?", self.product_id).first
  14. detail = OrderDetail.where("id = ?", self.id).first
  15. od = Order.where("order_id = ?", self.order_no).first
  16. if !pd.blank? && !od.blank?
  17. detail.order_id=od.id
  18. detail.product_name=pd.name
  19. detail.relate_product_id=pd.relate_product_id
  20. detail.pv=pd.pv
  21. detail.price=pd.price
  22. detail.order_status=order.status
  23. detail.depart=order.depart
  24. od.pv=od.pv+detail.nums*pd.pv
  25. end
  26. # 更新order信息
  27. od.save
  28. detail.save
  29. end
  30. def order_validation
  31. if self.product_id > 0
  32. prd = Product.where("id = ?", self.product_id).first
  33. if prd.blank?
  34. self.errors.add(:product_id,"商品不存在,请重新填写商品ID")
  35. else
  36. self.product_name=prd.name
  37. #self.price=prd.price
  38. end
  39. end
  40. if self.order_no.length>0
  41. ord = Order.where("order_id = ?", self.order_no).first
  42. if ord.blank?
  43. self.errors.add(:order_id,"订单不存在,请重新填写编号")
  44. else
  45. self.order_id=ord.id
  46. end
  47. end
  48. end
  49. def order_state
  50. order = Order.where("id = ?", self.order_id).first
  51. if !order.blank?
  52. return order.status
  53. end
  54. end
  55. def product
  56. pd = Product.where("id = ?", self.product_id).first
  57. if !pd.blank?
  58. return pd.name
  59. else
  60. return "--"
  61. end
  62. end
  63. def paid_time
  64. order = Order.where("id = ?", self.order_id).first
  65. if !order.blank?
  66. paidTime=order.paied_at == 0 || order.paied_at == nil ? Time.at(0) : Time.at(order.paied_at)
  67. return paidTime
  68. end
  69. return paidTime
  70. end
  71. def pay_way
  72. payWay = ""
  73. order = Order.where("id = ?", self.order_id).first
  74. if !order.blank?
  75. payWay=order.pay_way
  76. end
  77. return payWay
  78. end
  79. STATUS_ENUM = [["未支付","unpay"],["已关闭","closed"],["待确认","unconfirmed"],["处理中","processing"],["已完成","complete"],["待收货","dispatch"],["已退款","refunded"]]
  80. PAY_WAY_ENUM = [
  81. # ["Web网银连连支付","webbankllpay"],
  82. # ["Web认证连连支付","webauthllpay"],
  83. # ["Wap认证连连支付","wapauthllpay"],
  84. ["微信支付","weixinpay"],
  85. ["提货券支付","balance"],
  86. # ["公众号微信支付","gzhwxpay"],
  87. # ["公众号提货券支付","gzhbalance"],
  88. # ["统统微信支付","wx_sumpay"],
  89. # ["统统Web网银支付","webbanksumpay"],
  90. ]
  91. rails_admin do
  92. navigation_label '商品管理'
  93. weight -240
  94. parent Order
  95. list do
  96. filters [:order_no,:nums,:price,:order_status]
  97. field :id
  98. field :order_no do
  99. filterable true
  100. end
  101. #field :order
  102. #field :product
  103. field :product do
  104. visible false
  105. end
  106. field :nums
  107. field :price do
  108. visible true
  109. label "单价(元)"
  110. formatted_value do
  111. value!=0 ? (value/100.0):0
  112. end
  113. end
  114. field :product_name
  115. field :order_status, :enum do
  116. filterable true
  117. enum do
  118. STATUS_ENUM
  119. end
  120. end
  121. # field :paid_time do
  122. # filterable true
  123. # formatted_value do
  124. # #bindings[:object].order.paied_time
  125. # (bindings[:object].order.paied_at == 0 || bindings[:object].order.paied_at == nil) ? Time.at(0) : Time.at(bindings[:object].order.paied_at)
  126. # end
  127. # end
  128. field :paid_time
  129. field :order do
  130. queryable true
  131. searchable [:status]
  132. end
  133. field :pay_way, :enum do
  134. filterable true
  135. enum do
  136. PAY_WAY_ENUM
  137. end
  138. end
  139. field :is_zeng
  140. field :size_name
  141. field :color_name
  142. field :pv do
  143. formatted_value do # used in form views
  144. value.to_f / 100
  145. end
  146. end
  147. field :created_at
  148. field :updated_at
  149. end
  150. show do
  151. field :id
  152. field :order_no
  153. field :product
  154. field :nums
  155. field :is_zeng
  156. field :price do
  157. visible true
  158. label "单价(元)"
  159. formatted_value do
  160. value!=0 ? (value/100.0):0
  161. end
  162. end
  163. field :order_status, :enum do
  164. filterable true
  165. enum do
  166. STATUS_ENUM
  167. end
  168. end
  169. field :product_name
  170. field :size_name
  171. field :color_name
  172. field :pv do
  173. formatted_value do # used in form views
  174. value.to_f / 100
  175. end
  176. end
  177. field :created_at
  178. field :updated_at
  179. end
  180. edit do
  181. field :order_no
  182. #field :order_id
  183. field :product_id
  184. field :nums
  185. field :is_zeng
  186. field :price
  187. end
  188. export do
  189. include_all_fields
  190. field :wx_user_id do
  191. formatted_value do
  192. bindings[:object].order.wx_user_id
  193. end
  194. end
  195. field :nums
  196. field :product_name
  197. field :unit_robo_balance_price do
  198. visible false
  199. end
  200. field :pv do
  201. formatted_value do # used in form views
  202. value.to_f / 100
  203. end
  204. end
  205. end
  206. end
  207. end