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

[update] remove and create invoices instead of update in bordereau

parent 3e1af49b
Aucune branche associée trouvée
Aucune étiquette associée trouvée
1 requête de fusion!212.0 dev
......@@ -440,25 +440,13 @@ class Bordereau(models.Model):
'context': ctx,
}
@api.multi
def update_cotiz_and_lines(self):
for bordereau in self:
if bordereau.state == 'new':
bordereau.create_cotiz_and_lines()
def update_bordereau_with_liasse(self):
"""
Supprime ou ajoute les appels de cotisations en fonction du
nombre de trimestres choisi et de la liasse
:return:
"""
self.update_cotiz_and_lines()
for i in range(0, 4 - self.nb_quarter):
invoices_quarter_i = self.invoice_ids.filtered(
lambda inv: inv.cotiz_quarter == i + 1
)
if invoices_quarter_i:
invoices_quarter_i.unlink()
self.create_cotiz_and_lines()
@api.multi
def open_payment(self):
......@@ -551,6 +539,7 @@ class Bordereau(models.Model):
'version': self.version + 1,
'date_regul': ongoing_version.date,
'comment_regul': ongoing_version.comment,
'is_regul': True,
})
ongoing_version.write({
'state': 'validated',
......@@ -593,7 +582,14 @@ class Bordereau(models.Model):
# ------------------------------------------------------
# Global Functions
# ------------------------------------------------------
def create_cotiz_and_lines(self, is_regul=False):
def create_cotiz_and_lines(self):
"""
- Supprime les factures existantes si besoin
- Crée les appels de cotisation par trimestre
"""
if self.invoice_ids:
self.invoice_ids.unlink()
partner = self.partner_id
liasse = self.liasse_fiscale_id
......@@ -611,7 +607,8 @@ class Bordereau(models.Model):
amount_cg = self.env['scop.liasse.fiscale']. \
get_values_for_cotiz_cg(partner)['plancher1']
self.create_contribution(
product_cg_id, type_cotisation_cg, amount_cg, is_regul=is_regul)
product_cg_id, type_cotisation_cg, amount_cg
)
self.env.cr.commit()
# Invoice UR et Fédé
......@@ -634,7 +631,8 @@ class Bordereau(models.Model):
get_plancher_cotiz()['fede_com']
self.create_contribution(
product_fede_com_id, type_cotisation_fede_com, amount_fede_com,
journal_ur_or_fede, account_id, is_regul=is_regul)
journal_ur_or_fede, account_id
)
self.env.cr.commit()
# Invoice cotiz Fede CAE
......@@ -653,7 +651,7 @@ class Bordereau(models.Model):
get_plancher_cotiz()['fede_cae']
self.create_contribution(
product_fede_cae_id, type_cotisation_fede_cae, amount_fede_cae,
journal_ur_or_fede, account_id, is_regul=is_regul
journal_ur_or_fede, account_id
)
self.env.cr.commit()
......@@ -672,7 +670,7 @@ class Bordereau(models.Model):
get_plancher_cotiz()['ur_hdf']
self.create_contribution(
product_hdf_id, type_cotisation_ur, amount_hdf,
journal_ur_or_fede, account_id, is_regul=is_regul
journal_ur_or_fede, account_id
)
self.env.cr.commit()
......@@ -691,24 +689,21 @@ class Bordereau(models.Model):
get_plancher_cotiz()['ur_med']
self.create_contribution(
product_med_id, type_cotisation_ur, amount_med,
journal_ur_or_fede, account_id, is_regul=is_regul)
journal_ur_or_fede, account_id
)
self.env.cr.commit()
def create_contribution(
self, product, type_contribution, amount=0,
journal_id=False, account_id=False, type_invoice='out_invoice',
is_regul=False):
journal_id=False, account_id=False, type_invoice='out_invoice'):
"""
Create invoice from Contribution Base
:param product: product_id
:param partner: partner_id
:param type_contribution: type_contribution (CG, UR, Fédé)
:param liasse: liasse_fiscale_id (reference)
:param amount: contribution amount (float)
:param journal_id: journal
:param account_id: customer_account_id
:param type_invoice: invoice or refund
:param is_regul: used for CG Scop regul
:return: invoice
"""
Invoice = self.env['account.invoice']
......@@ -728,15 +723,7 @@ class Bordereau(models.Model):
for i in range(1, self.nb_quarter + 1):
cotiz_quarter = (4 - self.nb_quarter) + i
domain = [('partner_id', '=', partner.id),
('year', '=', self.year),
('type_contribution_id', '=', type_contribution),
('bordereau_id', '=', self.id),
('cotiz_quarter', '=', cotiz_quarter)]
existing_invoice = Invoice.search(domain)
if not existing_invoice or is_regul:
journal_id = self.company_id.contribution_journal_id \
if not journal_id else journal_id
account_id = partner.property_account_receivable_id \
......@@ -758,19 +745,8 @@ class Bordereau(models.Model):
'amount_cg_calculated': amount,
'cotiz_quarter': cotiz_quarter,
})
else:
member_invoice = existing_invoice
member_invoice.write({
'liasse_fiscale_id': liasse.id,
'amount_cg_calculated': amount,
'cotiz_quarter': cotiz_quarter,
})
# Création de la ligne CG Scop
exisiting_invoice_line_ids = InvoiceLine.search([
('invoice_id', '=', member_invoice.id),
('product_id', '=', product.id)
])
# Création de la ligne de cotisation
price_unit = amount / 4
# TODO: Specific CAE calculation : to be deleted when 2022 is generated
......@@ -781,7 +757,6 @@ class Bordereau(models.Model):
price_unit = (amount - 25) / 3
# ... End specific CAE 2022
if not exisiting_invoice_line_ids or is_regul:
InvoiceLine.create({
'invoice_id': member_invoice.id,
'product_id': product.id,
......@@ -790,10 +765,6 @@ class Bordereau(models.Model):
'name': product.name + " T" + str(cotiz_quarter),
'price_unit': price_unit
})
else:
exisiting_invoice_line_ids[0].write({
'price_unit': price_unit
})
def check_ongoing_version(self):
"""
......
......@@ -320,8 +320,7 @@ class ScopCotisation(models.Model):
'target': 'current',
}
def create_bordereau(
self, member, nb_quarter, liasse=None, date=False, is_regul=False):
def create_bordereau(self, member, nb_quarter, liasse=None, date=False):
"""
Création du bordereau de cotisations
:param member:
......@@ -330,11 +329,6 @@ class ScopCotisation(models.Model):
:param date:
:return bordereau_id:
"""
bordereau = self.env['scop.bordereau'].search([
('partner_id', '=', member.id),
('year', '=', self.year),
])
if not bordereau or is_regul:
# Variables to calculate cotiz
staff_id = self.get_last_staff_id(member)
if staff_id:
......
......@@ -22,5 +22,5 @@ class ScopBordereauUpdate(models.TransientModel):
if record.state != 'new':
raise UserError(_("Impossible de mettre à jour un bordereau "
"qui n'est pas à l'état de brouillon"))
record.update_cotiz_and_lines()
record.create_cotiz_and_lines()
return {'type': 'ir.actions.act_window_close'}
......@@ -2,6 +2,7 @@
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
from odoo import fields, models, api
from odoo.exceptions import UserError
class ScopBordereauChangeLiasse(models.TransientModel):
......@@ -145,9 +146,11 @@ class ScopBordereauChangeLiasse(models.TransientModel):
# ------------------------------------------------------
def update_liasse_fiscale(self):
bordereau_id = self.bordereau_id
if not self.liasse_fiscale_new_id:
raise UserError('Merci de choisir une nouvelle liasse fiscale.')
# Link new liasse fiscale to bordereau
bordereau_id.update({
'liasse_fiscale_id': self.liasse_fiscale_new_id,
})
bordereau_id.update_cotiz_and_lines()
bordereau_id.create_cotiz_and_lines()
return {'type': 'ir.actions.act_window_close'}
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