GoodERP
Nevar pievienot vairāk kā 25 tēmas Tēmai ir jāsākas ar burtu vai ciparu, tā var saturēt domu zīmes ('-') un var būt līdz 35 simboliem gara.

103 rindas
4.4KB

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