GoodERP
Ви не можете вибрати більше 25 тем Теми мають розпочинатися з літери або цифри, можуть містити дефіси (-) і не повинні перевищувати 35 символів.

110 lines
4.8KB

  1. # -*- coding: utf-8 -*-
  2. from odoo import _
  3. from odoo import fields, models, api, tools
  4. class SellOrderDetail(models.Model):
  5. _name = 'sell.order.detail'
  6. _description = '销售明细表'
  7. _auto = False
  8. date = fields.Date('销售日期')
  9. order_name = fields.Char('销售单据号')
  10. type = fields.Char('业务类型')
  11. user_id = fields.Many2one('res.users', '销售员')
  12. partner_id = fields.Many2one('partner', '客户')
  13. goods_code = fields.Char('商品编码')
  14. goods_id = fields.Many2one('goods', '商品名称')
  15. attribute = fields.Char('属性')
  16. warehouse_id = fields.Many2one('warehouse', '仓库')
  17. qty = fields.Float('数量', digits='Quantity')
  18. uom = fields.Char('单位')
  19. price = fields.Float('单价', digits='Price')
  20. amount = fields.Float('销售收入', digits='Amount')
  21. tax_amount = fields.Float('税额', digits='Amount')
  22. subtotal = fields.Float('价税合计', digits='Amount')
  23. margin = fields.Float('毛利', digits='Amount')
  24. money_state = fields.Char('收款状态')
  25. note = fields.Char('备注')
  26. last_receipt_date = fields.Date(string='最后收款日期')
  27. def init(self):
  28. cr = self._cr
  29. tools.drop_view_if_exists(cr, 'sell_order_detail')
  30. cr.execute("""
  31. CREATE or REPLACE VIEW sell_order_detail AS (
  32. SELECT MIN(wml.id) AS id,
  33. wm.date AS date,
  34. wm.name AS order_name,
  35. (CASE WHEN wm.origin = 'sell.delivery.sell' THEN '销售'
  36. ELSE '退货' END) AS type,
  37. wm.user_id AS user_id,
  38. wm.partner_id AS partner_id,
  39. goods.code AS goods_code,
  40. goods.id AS goods_id,
  41. attr.name AS attribute,
  42. wh.id AS warehouse_id,
  43. SUM(CASE WHEN wm.origin = 'sell.delivery.sell' THEN wml.goods_qty
  44. ELSE - wml.goods_qty END) AS qty,
  45. uom.name AS uom,
  46. wml.price AS price,
  47. SUM(CASE WHEN wm.origin = 'sell.delivery.sell' THEN wml.amount
  48. ELSE - wml.amount END) AS amount,
  49. SUM(CASE WHEN wm.origin = 'sell.delivery.sell' THEN wml.tax_amount
  50. ELSE - wml.tax_amount END) AS tax_amount,
  51. SUM(CASE WHEN wm.origin = 'sell.delivery.sell' THEN wml.subtotal
  52. ELSE - wml.subtotal END) AS subtotal,
  53. (SUM(CASE WHEN wm.origin = 'sell.delivery.sell' THEN wml.amount
  54. ELSE - wml.amount END) - SUM(CASE WHEN wm.origin = 'sell.delivery.sell' THEN wml.goods_qty
  55. ELSE - wml.goods_qty END) * wml.cost_unit) AS margin,
  56. (CASE WHEN wm.origin = 'sell.delivery.sell' THEN sd.money_state
  57. ELSE sd.return_state END) AS money_state,
  58. wml.note AS note,
  59. mi.get_amount_date AS last_receipt_date
  60. FROM wh_move_line AS wml
  61. LEFT JOIN wh_move wm ON wml.move_id = wm.id
  62. LEFT JOIN partner ON wm.partner_id = partner.id
  63. LEFT JOIN goods ON wml.goods_id = goods.id
  64. LEFT JOIN attribute AS attr ON wml.attribute_id = attr.id
  65. LEFT JOIN warehouse AS wh ON wml.warehouse_id = wh.id
  66. OR wml.warehouse_dest_id = wh.id
  67. LEFT JOIN uom ON goods.uom_id = uom.id
  68. LEFT JOIN sell_delivery AS sd ON wm.id = sd.sell_move_id
  69. LEFT JOIN money_invoice AS mi ON mi.id = sd.invoice_id
  70. WHERE wml.state = 'done'
  71. AND wm.origin like 'sell.delivery%%'
  72. AND wh.type = 'stock'
  73. GROUP BY wm.date, wm.name, origin, wm.user_id, wm.partner_id,
  74. goods_code, goods.id, attribute, wh.id, uom,
  75. wml.price, wml.cost_unit, sd.money_state, sd.return_state, wml.note,
  76. mi.get_amount_date
  77. )
  78. """)
  79. def view_detail(self):
  80. '''查看明细按钮'''
  81. self.ensure_one()
  82. order = self.env['sell.delivery'].search(
  83. [('name', '=', self.order_name)])
  84. if order:
  85. if not order.is_return:
  86. view = self.env.ref('sell.sell_delivery_form')
  87. else:
  88. view = self.env.ref('sell.sell_return_form')
  89. return {
  90. 'name': _('销售发货单'),
  91. 'view_mode': 'form',
  92. 'view_id': False,
  93. 'views': [(view.id, 'form')],
  94. 'res_model': 'sell.delivery',
  95. 'type': 'ir.actions.act_window',
  96. 'res_id': order.id,
  97. }
上海开阖软件有限公司 沪ICP备12045867号-1