29 lines
1.3 KiB
Python
29 lines
1.3 KiB
Python
from odoo import fields, models, api
|
|
|
|
|
|
class OrderPrice(models.Model):
|
|
_name = 'order.price'
|
|
_description = '订单价格对比'
|
|
sale_order_id = fields.Many2one('sale.order', '销售订单')
|
|
bfm_order_name = fields.Char(related="sale_order_id.default_code", string='bfm订单号')
|
|
sale_order_name = fields.Char(related="sale_order_id.name", string='销售订单号')
|
|
currency_id = fields.Many2one(
|
|
related='sale_order_id.currency_id', string='货币', store=True)
|
|
sale_order_amount_total = fields.Monetary(related="sale_order_id.amount_total", tracking=4, string='销售订单金额')
|
|
bfm_amount_total = fields.Float(string='价格合计', compute='_compute_bfm_amount_total', store=True)
|
|
|
|
def is_float(self,value):
|
|
try:
|
|
float(value)
|
|
return True
|
|
except ValueError:
|
|
return False
|
|
@api.depends('sale_order_id.order_line.remark')
|
|
def _compute_bfm_amount_total(self):
|
|
for record in self:
|
|
amount_total = 0
|
|
for line in record.sale_order_id.order_line:
|
|
# 判断remark是否存在并且是否是数字
|
|
if line.remark and self.is_float(line.remark):
|
|
amount_total += float(line.remark)
|
|
record.bfm_amount_total = amount_total |