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