Skip to content
Extraits de code Groupes Projets
Valider 938a7fdd rédigé par jordan's avatar jordan
Parcourir les fichiers

[fix] much easier way to compute state

parent fd32e9d6
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
......@@ -84,6 +84,7 @@ class ScopCotisationsIDF(models.Model):
else:
r.amount_residual = r.debit
@api.multi
def _compute_state(self):
"""
A line can be in different state :
......@@ -91,34 +92,24 @@ class ScopCotisationsIDF(models.Model):
- Too many payments related to one invoice
- Some payments are missing
- The invoice has been paid
"""
partners = set(self.mapped('partner_id'))
years = set(self.mapped('year'))
for year in years:
for partner in partners:
invoice_lines = self.search([
['year', '=', year],
['partner_id', '=', partner.id],
['lettrage', '=', letter]])
invoices = invoice_lines.filtered(
lambda l: l.type == 'inv')
if not invoices:
for r in invoice_lines:
for r in self:
if r.type != 'inv':
if not r.invoice_id:
r.state = 'no_invoice'
else:
for invoice in invoices:
if invoice.amount_residual > 0:
invoice.state = 'awaiting_payments'
for r in invoice.payments_ids:
if r.invoice_id.amount_residual > 0:
r.state = 'awaiting_payments'
elif r.invoice_id.amount_residual < 0:
r.state = 'overpaid'
else:
r.state = 'paid'
else:
if r.amount_residual > 0:
r.state = 'awaiting_payments'
elif invoice.amount_residual < 0:
invoice.state = 'overpaid'
for r in invoice.payments_ids:
elif r.amount_residual < 0:
r.state = 'overpaid'
else:
invoice.state = 'paid'
for r in invoice.payments_ids:
r.state = 'paid'
@api.multi
......
......@@ -80,6 +80,7 @@ class ScopInvoiceIDF(models.Model):
else:
r.amount_residual = r.debit
@api.multi
def _compute_state(self):
"""
A line can be in different state :
......@@ -88,31 +89,23 @@ class ScopInvoiceIDF(models.Model):
- Some payments are missing
- The invoice has been paid
"""
partners = set(self.mapped('partner_id'))
years = set(self.mapped('year'))
for year in years:
for partner in partners:
invoice_lines = self.search([
['year', '=', year],
['partner_id', '=', partner.id], ])
invoices = invoice_lines.filtered(
lambda l: l.type == 'inv')
if not invoices:
for r in invoice_lines:
for r in self:
if r.type != 'inv':
if not r.invoice_id:
r.state = 'no_invoice'
else:
for invoice in invoices:
if invoice.amount_residual > 0:
invoice.state = 'awaiting_payments'
for r in invoice.payments_ids:
if r.invoice_id.amount_residual > 0:
r.state = 'awaiting_payments'
elif r.invoice_id.amount_residual < 0:
r.state = 'overpaid'
else:
r.state = 'paid'
else:
if r.amount_residual > 0:
r.state = 'awaiting_payments'
elif invoice.amount_residual < 0:
invoice.state = 'overpaid'
for r in invoice.payments_ids:
elif r.amount_residual < 0:
r.state = 'overpaid'
else:
invoice.state = 'paid'
for r in invoice.payments_ids:
r.state = 'paid'
@api.multi
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Veuillez vous inscrire ou vous pour commenter