From 630950c6bd646920c2aa67ab46fce8e2aebce41d Mon Sep 17 00:00:00 2001 From: Carlos Dauden Date: Wed, 30 Nov 2016 19:47:37 +0100 Subject: [PATCH] [9.0][ADD] partner_payment_return_risk: New module --- partner_payment_return_risk/README.rst | 66 +++++++++++++++++++ partner_payment_return_risk/__init__.py | 3 + partner_payment_return_risk/__openerp__.py | 19 ++++++ .../models/__init__.py | 3 + .../models/res_partner.py | 33 ++++++++++ .../views/res_partner_view.xml | 20 ++++++ 6 files changed, 144 insertions(+) create mode 100644 partner_payment_return_risk/README.rst create mode 100644 partner_payment_return_risk/__init__.py create mode 100644 partner_payment_return_risk/__openerp__.py create mode 100644 partner_payment_return_risk/models/__init__.py create mode 100644 partner_payment_return_risk/models/res_partner.py create mode 100644 partner_payment_return_risk/views/res_partner_view.xml diff --git a/partner_payment_return_risk/README.rst b/partner_payment_return_risk/README.rst new file mode 100644 index 000000000..1b376a392 --- /dev/null +++ b/partner_payment_return_risk/README.rst @@ -0,0 +1,66 @@ +.. image:: https://img.shields.io/badge/licence-AGPL--3-blue.svg + :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html + :alt: License: AGPL-3 + +=========================== +Partner Payment Return Risk +=========================== + +Extends Partner Financial Risk to manage payments returns. + +If any limit is exceed the partner gets forbidden to confirm sale orders. + + +Usage +===== + +To use this module, you need to: + +#. Go to *Customers > Financial Risk* +#. Set limits and choose options to compute in credit limit. +#. Create an invoice and pay it. +#. Create a payment return. +#. Go to *Sales -> Sales Orders* and create a new Sales Orders. + + +.. image:: https://odoo-community.org/website/image/ir.attachment/5784_f2813bd/datas + :alt: Try me on Runbot + :target: https://runbot.odoo-community.org/runbot/134/9.0 + + +Bug Tracker +=========== + +Bugs are tracked on `GitHub Issues +`_. In case of trouble, please +check there if your issue has already been reported. If you spotted it first, +help us smashing it by providing a detailed and welcomed feedback. + +Credits +======= + +Images +------ + +* Odoo Community Association: `Icon `_. + +Contributors +------------ + +* Carlos Dauden - Tecnativa + + +Maintainer +---------- + +.. image:: https://odoo-community.org/logo.png + :alt: Odoo Community Association + :target: https://odoo-community.org + +This module is maintained by the OCA. + +OCA, or the Odoo Community Association, is a nonprofit organization whose +mission is to support the collaborative development of Odoo features and +promote its widespread use. + +To contribute to this module, please visit https://odoo-community.org. \ No newline at end of file diff --git a/partner_payment_return_risk/__init__.py b/partner_payment_return_risk/__init__.py new file mode 100644 index 000000000..cde864bae --- /dev/null +++ b/partner_payment_return_risk/__init__.py @@ -0,0 +1,3 @@ +# -*- coding: utf-8 -*- + +from . import models diff --git a/partner_payment_return_risk/__openerp__.py b/partner_payment_return_risk/__openerp__.py new file mode 100644 index 000000000..8fe7a1c8a --- /dev/null +++ b/partner_payment_return_risk/__openerp__.py @@ -0,0 +1,19 @@ +# -*- coding: utf-8 -*- +# © 2016 Carlos Dauden - Tecnativa +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). +{ + 'name': 'Partner Payment Return Risk', + 'version': '9.0.1.0.0', + 'author': 'Tecnativa, ' + 'Odoo Community Association (OCA)', + 'category': 'Sales Management', + 'license': 'AGPL-3', + 'depends': [ + 'partner_financial_risk', + 'account_payment_return', + ], + 'data': [ + 'views/res_partner_view.xml', + ], + 'installable': True, +} diff --git a/partner_payment_return_risk/models/__init__.py b/partner_payment_return_risk/models/__init__.py new file mode 100644 index 000000000..f261da797 --- /dev/null +++ b/partner_payment_return_risk/models/__init__.py @@ -0,0 +1,3 @@ +# -*- coding: utf-8 -*- + +from . import res_partner diff --git a/partner_payment_return_risk/models/res_partner.py b/partner_payment_return_risk/models/res_partner.py new file mode 100644 index 000000000..ef0f57f88 --- /dev/null +++ b/partner_payment_return_risk/models/res_partner.py @@ -0,0 +1,33 @@ +# -*- coding: utf-8 -*- +# © 2016 Carlos Dauden +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from openerp import api, fields, models + + +class ResPartner(models.Model): + _inherit = 'res.partner' + + risk_payment_return_include = fields.Boolean( + string='Include Payments Returns', help='Full risk computation') + risk_payment_return_limit = fields.Monetary( + string='Limit Payments Returns', help='Set 0 if it is not locked') + risk_payment_return = fields.Monetary( + compute='_compute_risk_payment_return', store=True, + string='Total Returned Invoices', + help='Total returned invoices in Open state') + + @api.multi + @api.depends('invoice_ids.state', 'invoice_ids.returned_payment') + def _compute_risk_payment_return(self): + for partner in self: + invoices = partner.invoice_ids.filtered( + lambda x: x.returned_payment and x.state == 'open') + partner.risk_payment_return = sum(invoices.mapped('residual')) + + @api.model + def _risk_field_list(self): + res = super(ResPartner, self)._risk_field_list() + res.append(('risk_payment_return', 'risk_payment_return_limit', + 'risk_payment_return_include')) + return res diff --git a/partner_payment_return_risk/views/res_partner_view.xml b/partner_payment_return_risk/views/res_partner_view.xml new file mode 100644 index 000000000..1349f131c --- /dev/null +++ b/partner_payment_return_risk/views/res_partner_view.xml @@ -0,0 +1,20 @@ + + + + + res.partner + + + + + + + + + + + +