order_detail.rb 5.9 KB

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