diff options
| author | stephanchrst <stephanchrst@gmail.com> | 2022-10-18 17:04:22 +0700 |
|---|---|---|
| committer | stephanchrst <stephanchrst@gmail.com> | 2022-10-18 17:04:22 +0700 |
| commit | 3f9c57e602ebe859a2e2dc9e1b1c2619be5559c0 (patch) | |
| tree | ca07306a219797a5d5f6d7d2ee6447b1b8cf4c88 | |
| parent | 8b2be5e26b5627d38e2600fe07d2e14733431b27 (diff) | |
check credit limit from parent customer
| -rwxr-xr-x | base_accounting_kit/models/credit_limit.py | 55 |
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)) |
