order_detail.rb 6.3 KB

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