order_detail.rb 6.1 KB

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