From 97599d35f19a2a6542361145b6197f2257523de3 Mon Sep 17 00:00:00 2001 From: Jared Kipe Date: Thu, 20 Jun 2019 10:08:00 -0700 Subject: [PATCH] Initial commit of `sale_credit_limit` for 11.0 --- sale_credit_limit/__init__.py | 1 + sale_credit_limit/__manifest__.py | 29 ++++++++++++++++++++++ sale_credit_limit/data/sale_exceptions.xml | 21 ++++++++++++++++ sale_credit_limit/models/__init__.py | 1 + sale_credit_limit/models/sale.py | 17 +++++++++++++ sale_credit_limit/views/partner_views.xml | 15 +++++++++++ 6 files changed, 84 insertions(+) create mode 100644 sale_credit_limit/__init__.py create mode 100644 sale_credit_limit/__manifest__.py create mode 100644 sale_credit_limit/data/sale_exceptions.xml create mode 100644 sale_credit_limit/models/__init__.py create mode 100644 sale_credit_limit/models/sale.py create mode 100644 sale_credit_limit/views/partner_views.xml diff --git a/sale_credit_limit/__init__.py b/sale_credit_limit/__init__.py new file mode 100644 index 00000000..0650744f --- /dev/null +++ b/sale_credit_limit/__init__.py @@ -0,0 +1 @@ +from . import models diff --git a/sale_credit_limit/__manifest__.py b/sale_credit_limit/__manifest__.py new file mode 100644 index 00000000..966faa45 --- /dev/null +++ b/sale_credit_limit/__manifest__.py @@ -0,0 +1,29 @@ +{ + 'name': 'Sale Credit Limit', + 'summary': 'Uses credit limit on Partners to warn salespeople if they are over their limit.', + 'version': '11.0.1.0.0', + 'author': "Hibou Corp.", + 'category': 'Sale', + 'license': 'AGPL-3', + 'complexity': 'expert', + 'images': [], + 'website': "https://hibou.io", + 'description': """ +Uses credit limit on Partners to warn salespeople if they are over their limit. + +When confirming a sale order, the current sale order total will be considered and a Sale Order Exception +will be created if the total would put them over their credit limit. +""", + 'depends': [ + 'sale', + 'account', + 'sale_exception', + ], + 'demo': [], + 'data': [ + 'data/sale_exceptions.xml', + 'views/partner_views.xml', + ], + 'auto_install': False, + 'installable': True, +} diff --git a/sale_credit_limit/data/sale_exceptions.xml b/sale_credit_limit/data/sale_exceptions.xml new file mode 100644 index 00000000..ba593a13 --- /dev/null +++ b/sale_credit_limit/data/sale_exceptions.xml @@ -0,0 +1,21 @@ + + + + + Invoice Partner credit limit exceeded. + The Customer or Invoice Address has a credit limit. + This sale order, or the customer has an outstanding balance that, exceeds their credit limit. + 50 + sale.order + sale + +partner = sale.partner_invoice_id.commercial_partner_id +partner_balance = partner.credit + sale.amount_total +if partner.credit_limit and partner.credit_limit <= partner_balance: + failed = True + + + sale + + + \ No newline at end of file diff --git a/sale_credit_limit/models/__init__.py b/sale_credit_limit/models/__init__.py new file mode 100644 index 00000000..8a0dc04e --- /dev/null +++ b/sale_credit_limit/models/__init__.py @@ -0,0 +1 @@ +from . import sale diff --git a/sale_credit_limit/models/sale.py b/sale_credit_limit/models/sale.py new file mode 100644 index 00000000..ff40a466 --- /dev/null +++ b/sale_credit_limit/models/sale.py @@ -0,0 +1,17 @@ +from odoo import api, models + + +class SaleOrder(models.Model): + _inherit = 'sale.order' + + @api.onchange('partner_invoice_id') + def _onchange_partner_invoice_id(self): + for so in self: + partner = so.partner_invoice_id.commercial_partner_id + if partner.credit_limit and partner.credit_limit <= partner.credit: + m = 'Partner outstanding receivables %0.2f is above their credit limit of %0.2f' \ + % (partner.credit, partner.credit_limit) + return { + 'warning': {'title': 'Sale Credit Limit', + 'message': m} + } diff --git a/sale_credit_limit/views/partner_views.xml b/sale_credit_limit/views/partner_views.xml new file mode 100644 index 00000000..009ee4be --- /dev/null +++ b/sale_credit_limit/views/partner_views.xml @@ -0,0 +1,15 @@ + + + + + res.partner.form.inherit + res.partner + + + + + + + + + \ No newline at end of file