Skip to content
Extraits de code Groupes Projets

Comparer les révisions

Les modifications sont affichées comme si la révision source était fusionnée avec la révision cible. En savoir plus sur la comparaison des révisions.

Source

Sélectionner le projet cible
No results found
Sélectionner une révision Git
  • 12.0
  • 13.0
  • 14.0
  • 14.0-add-ddets-state
  • 14.0-new-process
  • 14.0-process-extranet
6 résultats

Cible

Sélectionner le projet cible
  • lefilament/cgscop/cgscop_liste_ministere
1 résultat
Sélectionner une révision Git
  • 12.0
  • 13.0
  • 14.0
  • 14.0-add-ddets-state
  • 14.0-new-process
  • 14.0-process-extranet
6 résultats
Afficher les modifications
Validations sur la source (3)
......@@ -10,6 +10,7 @@
"depends": [
"cgscop_liasse_fiscale",
"cgscop_facility",
"queue_job",
"mail_tracking",
],
"data": [
......@@ -34,6 +35,7 @@
# wizards
"wizard/lm_renew_wizard.xml",
"wizard/lm_inscription_wizard.xml",
"wizard/lm_change_year_wizard.xml",
"wizard/lm_survey_import_wizard.xml",
# templates
"templates/dossier_direccte_report.xml",
......
......@@ -1435,66 +1435,57 @@ class ScopListeMinistere(models.Model):
self.lm_maj_prestataires()
# STATUSBAR
def action_publish_extranet(self):
def _publish_extranet(self, composer=False):
"""
This function opens a window to compose an email, with the edi
liste Ministere template message loaded by default
"""
self.ensure_one()
if not self.recipient_ids:
raise UserError(_("Email manquant. Ce dossier ne peut être publié."))
template = self.env.ref(
"cgscop_liste_ministere.email_template_liste_ministere_publish"
template_id = self.env.ref(
"cgscop_liste_ministere.email_template_liste_ministere_publish",
raise_if_not_found=True
)
template_id = template if template else False
if not self.status == "1_ouvert":
raise UserError(_("Ce dossier est déjà publié ou validé."))
self.update_data_lm()
self.update({"status": "2_publie"})
if composer:
return self.with_context(lm_publish_action=True).action_open_mail(template_id)
else:
template_id.send_mail(self.id)
def action_publish_extranet_mass(self):
ir_model_data = self.env["ir.model.data"]
try:
composer_form_view_id = ir_model_data.get_object_reference(
"mail", "email_compose_message_wizard_form"
)[1]
except ValueError:
composer_form_view_id = False
template = self.env.ref(
"cgscop_liste_ministere.email_template_liste_ministere_publish"
)
template_id = template.id if template else False
def action_publish_extranet(self):
"""
Ouvre le composer pour publier un dossier sur l'extranet avec envoi d'email
"""
self.ensure_one()
return self._publish_extranet(composer=True)
def action_publish_extranet_mass(self):
"""
Sélectionne les dossiers ouverts et dont les emails sont renseignés
Met en file d'attente la publication sur l'extranet pour chacun des dossiers
avec envoi du mail
"""
# Get lm to publish
lm_ids = self.filtered(lambda lm: lm.status == "1_ouvert" and lm.recipient_ids)
if lm_ids:
for lm in lm_ids:
lm.update_data_lm()
return {
"type": "ir.actions.act_window",
"view_mode": "form",
"res_model": "mail.compose.message",
"view_id": composer_form_view_id,
"target": "new",
"context": {
"default_composition_mode": "mass_mail"
if len(self.ids) > 1
else "comment",
"default_res_id": self.ids[0],
"default_model": "scop.liste.ministere",
"default_use_template": bool(template_id),
"default_template_id": template_id,
"active_ids": lm_ids.ids,
"lm_publish_action": True,
},
}
lm.with_delay(
description=("Publication LM : %s" % lm.name))._publish_extranet()
else:
message = (
"Les dossiers sélectionnés ont déjà été "
"publiés ou n'ont pas d'adesse mail"
)
return {
"type": "ir.actions.act_window.message",
"title": _("Publication des dossiers"),
"message": _(message),
"message": _(
"Les dossiers sélectionnés ont déjà été "
"publiés ou n'ont pas d'adresse mail"
),
}
def action_publish_without_extranet(self):
......@@ -1717,19 +1708,17 @@ class ScopListeMinistere(models.Model):
month = 12
cloture = date(year - 1, month, monthrange(year - 1, month)[1])
# Check effective period
if len(partner_id.scop_period_ids) == 1:
period_id = partner_id.scop_period_ids[0]
else:
period_id = partner_id.scop_period_ids.filtered(
lambda p: p.start <= cloture and (p.end is False or p.end > cloture)
)
if len(period_id) != 1:
raise UserError(
_("Erreur sur les périodes pour le partner " + partner_id.name)
)
period_ids = partner_id.scop_period_ids.filtered(
lambda p: p.end <= cloture or not p.end
).sorted("start", reverse=True)
if period_ids:
# Define form and type related to period
period_id = period_ids[0]
partner_company_type_id = period_id.partner_company_type_id.id
cooperative_form_id = period_id.cooperative_form_id.id
else:
partner_company_type_id = partner_id.partner_company_type_id.id
cooperative_form_id = partner_id.cooperative_form_id.id
# Create LM
main_type = self.compute_main_type(cooperative_form_id)
lm_id = self.with_context(mail_create_nosubscribe=True).create(
......@@ -1814,6 +1803,7 @@ class ScopListeMinistere(models.Model):
previous_lm = self.get_previous_lm(lm_id)
if len(previous_lm) == 1:
for director_previous_lm in previous_lm.director_ids:
if director_previous_lm.partner_id not in self.director_ids.mapped("partner_id"):
director_previous_lm.copy(default={"liste_ministere_id": lm_id})
elif self.partner_id.director_ids:
for director in self.partner_id.director_ids:
......@@ -1841,11 +1831,16 @@ class ScopListeMinistere(models.Model):
self.env["scop.liste.ministere.directeurs"].create(director_values)
def lm_maj_prestataires(self):
lm_id = self.id if self.id else self._origin.id
lm_id = self.id or self._origin.id
previous_lm = self.get_previous_lm(lm_id)
# Copie la relation de l'année précédente
if len(previous_lm) == 1:
for relation in previous_lm.prestataire_ids:
if relation.partner_id not in self.prestataire_ids.mapped("partner_id"):
relation.copy(default={"liste_ministere_id": lm_id})
# Crée les relations liées au partenaire
elif self.partner_id.relation_all_ids:
for relation in self.partner_id.relation_all_ids:
prestataire_values = {
......
......@@ -149,14 +149,6 @@ class Directeurs(models.Model):
comodel_name="res.partner", string="Partner correspondant"
)
# def remove_director_from_lm(self):
# liste_minstere_to_update = self.env['scop.liste.ministere'].browse(
# self.env.context.get('params').get('id'))
# if liste_minstere_to_update:
# liste_minstere_to_update.write({
# 'director_ids': [(3, self.id, 0)],
# })
@api.constrains("birthyear")
def _birthyear_constrains(self):
for rec in self:
......
......@@ -37,3 +37,4 @@ cg_access_res_partner_ministere,access_res_partner_ministere,model_res_partner_m
admin_access_res_partner_ministere,admin_res_partner_ministere,model_res_partner_ministere,cgscop_partner.group_cg_administrator,1,1,1,1
cg_access_res_partner_ministere_contact,access_res_partner_ministere_contact,model_res_partner_ministere_contact,cgscop_partner.group_cg_administrative,1,1,1,1
admin_access_res_partner_ministere_contact,admin_res_partner_ministere_contact,model_res_partner_ministere_contact,cgscop_partner.group_cg_administrator,1,1,1,1
cg_access_liste_ministere_year_wizard,access_liste_ministere_year_wizard,model_scop_liste_ministere_change_year_wizard,cgscop_partner.group_cg_administrative,1,1,1,1
\ No newline at end of file
......@@ -285,6 +285,13 @@
attrs="{'invisible':['|', ('status', '!=', '3_complet'), ('main_type', '=', 'quest')]}"
groups="cgscop_partner.group_cg_administrative"
/>
<button
string="Changer l'année du dossier"
type="action"
name="%(cgscop_liste_ministere.action_change_year_wizard)d"
attrs="{'invisible':['|', ('status', 'not in', ['1_ouvert', '2_publie', '3_complet', '4_attente_cg']), ('main_type', '=', 'quest')]}"
groups="cgscop_partner.group_cg_administrative"
/>
<button
string="A transmettre DIRECCTE"
type="object"
......
# © 2022 Le Filament (<http://www.le-filament.com>)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
from . import lm_change_year_wizard
from . import lm_renew_wizard
from . import lm_inscription_wizard
from . import lm_survey_import_wizard
# © 2022 Le Filament (<http://www.le-filament.com>)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
from datetime import datetime
from odoo import _, api, fields, models
class ChangeYear(models.TransientModel):
_name = "scop.liste.ministere.change.year.wizard"
_description = "Wizard LM : Changement année dossier"
# ------------------------------------------------------
# Default function
# ------------------------------------------------------
@api.model
def _default_lm_id(self):
return self.env.context.get("active_id")
@api.model
def _default_year(self):
return self.env["scop.liste.ministere"].browse(
self.env.context.get("active_id")).year
def _get_selection_year(self):
years = [
(str(year), str(year))
for year in range(
fields.Datetime.now().year - 1, fields.Datetime.now().year + 2
)
]
return years
# ------------------------------------------------------
# Fields declaration
# ------------------------------------------------------
lm_id = fields.Many2one(
comodel_name="scop.liste.ministere",
string="LM",
required=True,
default=_default_lm_id,
)
old_year = fields.Integer(default=_default_year)
year = fields.Selection(
selection=_get_selection_year,
string="Année à affecter",
required=True,
)
# ------------------------------------------------------
# Button function
# ------------------------------------------------------
def action_change_year_lm(self):
self.lm_id.update({"year": self.year})
<?xml version="1.0" ?>
<!-- Copyright 2019 Le Filament
License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). -->
<odoo>
<data>
<record model="ir.ui.view" id="scop_liste_ministere_change_year_wizard_form_view">
<field name="name">scop.liste.ministere.change.year.wizard.form</field>
<field name="model">scop.liste.ministere.change.year.wizard</field>
<field name="arch" type="xml">
<form string="Changer l'année du dossier">
<group>
<field name="lm_id" readonly="1" />
<field
name="old_year"
string="Année actuelle du dossier"
widget="char"
readonly="1"
/>
<field name="year" required="1" />
</group>
<footer>
<button
name="action_change_year_lm"
type="object"
string="Modifier l'année'"
class="oe_highlight"
/>
<button special="cancel" string="Cancel" />
</footer>
</form>
</field>
</record>
<record
model="ir.actions.act_window"
id="action_change_year_wizard"
>
<field name="name">Modification de l'année</field>
<field name="res_model">scop.liste.ministere.change.year.wizard</field>
<field name="view_mode">form</field>
<field
name="view_id"
ref="scop_liste_ministere_change_year_wizard_form_view"
/>
<field name="target">new</field>
</record>
</data>
</odoo>