summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xbase_accounting_kit/models/credit_limit.py55
1 files changed, 35 insertions, 20 deletions
diff --git a/base_accounting_kit/models/credit_limit.py b/base_accounting_kit/models/credit_limit.py
index 8cee2ed..766e1df 100755
--- a/base_accounting_kit/models/credit_limit.py
+++ b/base_accounting_kit/models/credit_limit.py
@@ -80,25 +80,34 @@ class SaleOrder(models.Model):
paid_invoice_amount = 0
outstanding_amount = 0
- all_order_ids = self.env['sale.order'].search([
- ('state','in',['sale','done']),
- ('partner_id','=',rec.partner_id.id),
- ('id', '!=', rec.id)
- ])
-
- paid_invoice_ids = self.env['account.move'].search([
- ('payment_state','=','paid'),
- ('partner_id','=',rec.partner_id.id),
- ('move_type','=','out_invoice')
- ])
-
- if all_order_ids:
- for order in all_order_ids:
- all_order_amount += order.amount_total
-
- if paid_invoice_ids:
- for invoice in paid_invoice_ids:
- paid_invoice_amount += invoice.amount_total
+ # this is only outstanding per user, must add outstanding parent
+ if rec.partner_id.parent_id:
+ partners = self.env['res.partner'].search([
+ ('active', '=', True),
+ ('parent_id', '=', rec.partner_id.parent_id.id)
+ ])
+ else:
+ partners = rec.partner_id
+ for partner in partners:
+ all_order_ids = self.env['sale.order'].search([
+ ('state', 'in', ['sale', 'done']),
+ ('partner_id', '=', partner.id),
+ ('id', '!=', rec.id)
+ ])
+
+ paid_invoice_ids = self.env['account.move'].search([
+ ('payment_state', '=', 'paid'),
+ ('partner_id', '=', partner.id),
+ ('move_type', '=', 'out_invoice')
+ ])
+
+ if all_order_ids:
+ for order in all_order_ids:
+ all_order_amount += order.amount_total
+
+ if paid_invoice_ids:
+ for invoice in paid_invoice_ids:
+ paid_invoice_amount += invoice.amount_total
outstanding_amount = all_order_amount - paid_invoice_amount
rec.outstanding_amount = outstanding_amount
@@ -152,7 +161,13 @@ class SaleOrder(models.Model):
######
if rec.partner_id.active_limit \
and rec.partner_id.enable_credit_limit:
- if (outstanding_amount + rec.amount_total) >= rec.partner_id.blocking_stage:
+ block_stage = 0
+ if rec.partner_id.parent_id:
+ block_state = rec.partner_id.parent_id.blocking_stage
+ else:
+ block_stage = rec.partner_id.blocking_stage
+
+ if (outstanding_amount + rec.amount_total) >= block_stage:
if rec.partner_id.blocking_stage != 0:
remaining_credit_limit = rec.partner_id.blocking_stage - outstanding_amount
raise UserError(_("%s is in Blocking Stage, Remaining credit limit is %s %s") % (rec.partner_id.name, rec.currency_id.symbol, remaining_credit_limit))