From 38001e6e3e16c4dcb8cce6b5ed1d0dab05fdecd9 Mon Sep 17 00:00:00 2001 From: Cedric Collins Date: Tue, 29 Dec 2020 15:49:42 -0600 Subject: [PATCH] [IMP] sale_credit_limit: add partner fields and sale exceptions H4721 --- sale_credit_limit/data/sale_exceptions.xml | 27 +++++++++++++++++++++- sale_credit_limit/models/__init__.py | 1 + sale_credit_limit/models/partner.py | 16 +++++++++++++ sale_credit_limit/views/partner_views.xml | 5 +++- 4 files changed, 47 insertions(+), 2 deletions(-) create mode 100644 sale_credit_limit/models/partner.py diff --git a/sale_credit_limit/data/sale_exceptions.xml b/sale_credit_limit/data/sale_exceptions.xml index b8f6192d..0fcc0a4e 100644 --- a/sale_credit_limit/data/sale_exceptions.xml +++ b/sale_credit_limit/data/sale_exceptions.xml @@ -13,7 +13,32 @@ partner_balance = partner.credit + sale.amount_total if partner.credit_limit and partner.credit_limit <= partner_balance: failed = True - + + + + Customer On Credit Hold. + The Customer is on Credit Hold. + Please have the customer contact accounting. + 50 + sale.order + +partner = sale.partner_invoice_id.commercial_partner_id +if partner.credit_hold: + failed = True + + + + + Customer has Overdue Invoices. + The Customer has unpaid overdue invoices. + Please have the customer contact accounting. + 55 + sale.order + +partner = sale.partner_invoice_id.commercial_partner_id +if partner.invoice_ids.filtered(lambda i: i.state == 'posted' and i.invoice_payment_state != 'paid' and (i.invoice_date_due and str(i.invoice_date_due) < time.strftime('%Y-%m-%d',time.gmtime())) and i.type == 'out_invoice'): + failed = True + \ No newline at end of file diff --git a/sale_credit_limit/models/__init__.py b/sale_credit_limit/models/__init__.py index 8a0dc04e..30fb10d9 100644 --- a/sale_credit_limit/models/__init__.py +++ b/sale_credit_limit/models/__init__.py @@ -1 +1,2 @@ +from . import partner from . import sale diff --git a/sale_credit_limit/models/partner.py b/sale_credit_limit/models/partner.py new file mode 100644 index 00000000..84c6db76 --- /dev/null +++ b/sale_credit_limit/models/partner.py @@ -0,0 +1,16 @@ +from odoo import api, fields, models + + +class ResPartner(models.Model): + _inherit = 'res.partner' + + credit_remaining = fields.Float('Credit Remaining', compute='_compute_credit_remaining') + credit_hold = fields.Boolean('Credit Hold') + + @api.depends('credit_limit', 'credit') + def _compute_credit_remaining(self): + for partner in self: + if partner.credit_limit: + partner.credit_remaining = partner.credit_limit - partner.credit + else: + partner.credit_remaining = 0.0 diff --git a/sale_credit_limit/views/partner_views.xml b/sale_credit_limit/views/partner_views.xml index e9dbe0ae..b9aa0885 100644 --- a/sale_credit_limit/views/partner_views.xml +++ b/sale_credit_limit/views/partner_views.xml @@ -7,7 +7,10 @@ - + + + +