我有一个自定义模块,其中包含三个不同的金额字段:
Total a pagar
是一个float
字段Total pendiente
并Total pagado
根据函数计算
这就是我的树视图的样子:
当使用按过滤器分组时,我想显示函数字段的总和,但只显示第一个:
我尝试sum
在 XML 记录中使用参数,但这不起作用。
这是我的模块:
class res_partner_current_account(osv.osv):
def _amount_pending_wrapper(self, cr, uid, ids, field_name, arg, context=None):
"""
Wrapper because of direct method passing as parameter for function fields
"""
return self._amount_pending(cr, uid, ids, field_name, arg, context=context)
def _amount_pending(self, cr, uid, ids, field_name, arg, context=None):
cur_obj = self.pool.get('res.currency')
res = {}
for current_account in self.browse(cr, uid, ids, context=context):
res[current_account.id] = {
'amount_pending': 0.0,
'amount_payed': 0.0,
}
cur = current_account.currency_id
payed = 0.0
for line in current_account.pay_line:
payed += line.amount
pending = current_account.amount_total - payed
res[current_account.id]['amount_pending'] = cur_obj.round(cr, uid, cur, pending)
res[current_account.id]['amount_payed'] = cur_obj.round(cr, uid, cur, payed)
return res
_name = 'res.partner.current.account'
_columns = {
'name': fields.char('Concepto'),
'order_id': fields.many2one('sale.order', 'Presupuesto', select=True, required=True, ondelete='cascade'),
'general_account_id': fields.many2one('res.partner.general.account', 'Cuenta general', select=True, required=True, ondelete='cascade'),
'currency_id': fields.many2one('res.currency', 'Moneda', required=True),
'amount_total': fields.float('Total a pagar', help='El total de la deuda'),
'amount_pending': fields.function(_amount_pending_wrapper, digits_compute=dp.get_precision('Account'), string='Total pendiente', multi='sums', help='El importe pendiente por pagar'),
'amount_payed': fields.function(_amount_pending_wrapper, digits_compute=dp.get_precision('Account'), string='Total pagado', multi='sums', help='El importe acumulado de pagos'),
'pay_line': fields.one2many('res.partner.current.account.line', 'current_account_id', 'Líneas de pago',),
'partner_id': fields.related('general_account_id', 'partner_id', type='many2one', relation='res.partner', string='Contratista', readonly=True, store=True),
'account_analytic_id': fields.related('general_account_id', 'account_analytic_id', type='many2one', relation='account.analytic.account', string='Proyecto', readonly=True, store=True),
}
_defaults = {
'amount_total': 0.0,
}
_rec_name = 'name'
_order = 'create_date desc'
def create_pay(self, cr, uid, ids, context=None):
return {
'name': 'Pagos',
'view_type': 'form',
'view_mode': 'form',
'res_model': 'res.partner.current.account',
'view_id': False,
'res_id': ids[0],
'type': 'ir.actions.act_window',
}