diff --git a/partner_payment_return_risk/models/res_partner.py b/partner_payment_return_risk/models/res_partner.py index 3a1eb4892..dc2481fec 100644 --- a/partner_payment_return_risk/models/res_partner.py +++ b/partner_payment_return_risk/models/res_partner.py @@ -23,7 +23,7 @@ class ResPartner(models.Model): AccountInvoice = self.env['account.invoice'] for partner in self: partner.risk_payment_return = AccountInvoice.read_group( - [('id', '=', partner.id), + [('partner_id', '=', partner.id), ('returned_payment', '=', True), ('state', '=', 'open'), ], diff --git a/partner_payment_return_risk/tests/__init__.py b/partner_payment_return_risk/tests/__init__.py new file mode 100644 index 000000000..c150b4ca9 --- /dev/null +++ b/partner_payment_return_risk/tests/__init__.py @@ -0,0 +1,5 @@ +# -*- coding: utf-8 -*- +# Copyright 2017 Carlos Dauden +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from . import test_payment_return_risk diff --git a/partner_payment_return_risk/tests/test_payment_return_risk.py b/partner_payment_return_risk/tests/test_payment_return_risk.py new file mode 100644 index 000000000..70dcae599 --- /dev/null +++ b/partner_payment_return_risk/tests/test_payment_return_risk.py @@ -0,0 +1,38 @@ +# -*- coding: utf-8 -*- +# Copyright 2017 Carlos Dauden +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from openerp.tests import common + + +class TestPartnerPaymentReturnRisk(common.SavepointCase): + + @classmethod + def setUpClass(cls): + super(TestPartnerPaymentReturnRisk, cls).setUpClass() + cls.partner = cls.env['res.partner'].create({ + 'name': 'Test partner', + 'risk_payment_return_include': True, + 'risk_payment_return_limit': 50.0, + }) + cls.user_type = cls.env.ref('account.data_account_type_revenue') + cls.invoice = cls.env['account.invoice'].create({ + 'partner_id': cls.partner.id, + 'invoice_line_ids': [(0, 0, { + 'name': 'Product Test', + 'quantity': 1.0, + 'uom_id': cls.env.ref('product.product_uom_unit').id, + 'price_unit': 100.0, + 'account_id': cls.env['account.account'].search([ + ('user_type_id', '=', cls.user_type.id)], limit=1).id, + })] + }) + + def test_payment_return_risk(self): + self.invoice.signal_workflow('invoice_open') + # Partner risk is zero because invoice is not returned + self.assertAlmostEqual(self.partner.risk_payment_return, 0.0) + # We simulate that the invoice is returned + self.invoice.returned_payment = True + # Partner risk has increased + self.assertAlmostEqual(self.partner.risk_payment_return, 100.0)