我在获取功能字段以在一个列表中计算折扣,税金和总额时遇到问题。
我正在使用openerp 7.这是我的代码:
def _total(self,cr,uid,ids,field_names,args,context=None):
res = {}
for record in self.browse(cr,uid,ids,context=context):
res[record.id]={
'total': record.cantidad * record.precioe,
'total1': record.total * record.descuento / 100,
'total2': record.total - record.total1,
'iva': record.total2 * 16 / 100,
'gran_total': record.iva + record.total2,
}
return res
和
'cantidad': fields.integer('Cantidad', multi='calc'),
'precioe': fields.float('Costo', multi='calc'),
#'precio_equipo': fields.related('equipo', 'precio', string='Precio', type='float', readonly=True),
'total': fields.function(_total, type='float', method=True, string='Total', store=True, multi='calc'),
'descuento': fields.integer('Descuento', multi='calc'),
'total1': fields.function(_total, type='float', method=True, string='Total descuento', store=True, multi='calc'),
'total2': fields.function(_total, type='float', method=True, string='subtotal', store=True, multi='calc'),
'iva': fields.function(_total, type='float', method=True, string='IVA', store=True, multi='calc'),
'gran_total': fields.function(_total, type='float', method=True, string='Total', store=True, multi='calc'),
}
我只计算第一个总数,其他值出现在0.我做错了什么?
答案 0 :(得分:1)
您必须使用两种方式管理此代码。 1)使用未使用任何函数字段的代码来计算任何其他功能字段,如下所示。
def _total(self,cr,uid,ids,field_names,args,context=None):
res = {}
for record in self.browse(cr,uid,ids,context=context):
total = record.cantidad * record.precioe
total1 = total * record.descuento / 100
total2 = total - record.total1
iva = total2 * 16 / 100
gran_total = iva + total2
res[record.id]={
'total':total,
'total1': total1,
'total2': total2,
'iva': iva,
'gran_total': gran_total,
}
return res
您将获得每个领域的完美数据。
在系统即将获得total
时代码内部,而total1
系统的计算总是得到'0'(零),因为它的值仍未设置。
2)使所有功能不同,并给予适当的优先权来调用它们。
多数民众赞成。