Skip to content
Extraits de code Groupes Projets
Valider c05d3f78 rédigé par Juliana's avatar Juliana
Parcourir les fichiers

[ADD] Add fill data av for generation

parent 447483dd
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
......@@ -103,9 +103,142 @@ class Project(models.Model):
'lieu_av': project.lieu,
'periode_realisation_av': project.periode_realisation,
'modalite_gap_av': project.modalite_gap,
'explication_financement_av': project.explication_financement
'explication_financement_av': project.explication_financement,
'nb_jours_adefpat_av': project.nb_jours_adefpat,
'cout_jour_adefpat_av': project.cout_jour_adefpat
})
def fill_data_av(self):
parser = [
'name',
'name:NAME',
'date_ca_av',
# Entête Dossier CA
'name_subtitle',
'num_dossier',
# Critères dossier CA
'nb_activité',
'nb_emplois',
'type_beneficiaire',
# Blocs CA
'contenu_formation_av',
'methode_savoir_av',
'travaux_intersessions_av',
'lieu_av',
'periode_realisation_av',
'explication_financement_av',
'modalite_gap_av',
# CDC
'contexte_av',
'caract_beneficiaire_av',
'historique',
'besoins_beneficiaires_av',
'objectifs_accompagnement_av',
'competences_requises',
'secteurs_requis',
'modalites_intervention',
'modalites_facturation',
'modalites_reponse',
'modalites_modif_marche',
'financement_adefpat_av',
'total_budget_financement_av',
'total_financement_av',
'nb_jours_adefpat_av',
'cout_jour_adefpat_av',
'total_cout_adefpat_av',
'total_budget_cout_av',
'total_cout_av',
# # Selection field
'departement',
'objectif_projet',
'secteur_crit',
'taille',
'objectif_formation',
'type_formation',
'encadrement',
# Many2one
('territoire_id', ['display_name', 'street']),
('elu_referent_id', ['name']),
('user_id:cfd_name', ['name']),
('user_id:cfd_email', ['email']),
('type_convention_id', ['name']),
# One2many List
(
'membre_ids:LIST_membres', {'type_data': 'LIST', 'fields': [('partner_id', ['display_name', 'function'])]}),
('porteurs_projets_ids:LIST_porteurs_project',
{'type_data': 'LIST', 'fields': [('porteur_id', ['display_name'])]}),
('financement_av_ids:LIST_financement', {'type_data': 'LIST', 'fields': [('partner_id', ['display_name'])]}),
('porteurs_projets_ids:LIST_porteurs_adress',
{'type_data': 'LIST', 'fields': [('porteur_id', ['display_name', 'street', 'zip', 'city'])]}),
('financement_av_ids:LIST_financement_adress',
{'type_data': 'LIST', 'fields': [('partner_id', ['display_name', 'street', 'zip', 'city'])]}),
('od_ids:LIST_ods_adress', {'type_data': 'MULTI', 'fields': ['display_name', 'street', 'zip', 'city']}),
# One2many Enum
('petr_ids:petr_list', {'type_data': 'ENUM', 'fields': ['name']}),
('porteurs_projets_ids:commune_list', {'type_data': 'ENUM', 'fields': ['commune']}),
('cout_ids:consultants', {'type_data': 'ENUM', 'fields': [('partner_id', ['name'])]}),
('od_ids:ods', {'type_data': 'ENUM', 'fields': ['name']}),
('animateur_ids:animateurs', {'type_data': 'ENUM', 'fields': ['name']}),
]
keys = self.json_build(parser)[0]
# Ajout des champs spécifiques
# Nombre de PP eligibles
nb_stagiaires = 0
if self.porteurs_projets_ids:
nb_stagiaires = len(self.porteurs_projets_ids.filtered(lambda r: r.eligible == True))
keys['##nb_porteurs##'] = nb_stagiaires
# Tableau des modules
tab_mod = []
for modul in self.cout_av_ids:
tab_par_mod = [modul.module, nb_stagiaires, modul.nb_jour_theorique, modul.nb_jour_pratiques,
(7 * nb_stagiaires * modul.nb_jour_theorique), (7 * nb_stagiaires * modul.nb_jour_pratiques),
((7 * nb_stagiaires * modul.nb_jour_theorique) + (
7 * nb_stagiaires * modul.nb_jour_pratiques))]
tab_mod.append(tab_par_mod)
keys['##TAB_MODULE##'] = tab_mod
# Tableau des porteurs de projets
tab_pp = []
for pp in self.porteurs_projets_ids:
tab_par_pp = [pp.name, pp.statut.name, pp.commune]
tab_pp.append(tab_par_pp)
# Enum consultants "name (mobile)"
res = ""
for cout in self.cout_av_ids:
if cout.partner_id:
if res:
if cout.partner_id.name not in res:
res += ', ' + cout.partner_id.name
if cout.partner_id.email:
res += ' (' + cout.partner_id.email + ')'
else:
res += cout.partner_id.name
if cout.partner_id.email:
res += ' (' + cout.partner_id.email + ')'
keys['##consultants_email##'] = res
keys['##TAB_PORTEURS##'] = tab_pp
if self.date_ca_next:
keys['##date_ca_next##'] = babel.dates.format_date(date=self.date_ca_next, format='dd MMMM Y',
locale=self._context.get('lang') or 'en_US')
return keys
@api.multi
def generate_dossier_ca_av(self):
for project in self:
......@@ -118,7 +251,7 @@ class Project(models.Model):
'&', '|', ('convention_ids', '=', False),
('convention_ids', '=', project.type_convention_id.id),
('type_temp', '=', 'dossier_ca_av')])
keys = project.fill_data()
keys = project.fill_data_av()
for template_doc in template_docs:
url = project._publipostage_documents(template_doc, keys, True)
return {
......@@ -135,7 +268,7 @@ class Project(models.Model):
"Le répertoire Projet d'Alfresco n'est pas configuré")
# Fill data project
keys = project.fill_data()
keys = project.fill_data_av()
# Récupération des conventions d'accompagnement
# 1 par formateur
......@@ -175,7 +308,7 @@ class Project(models.Model):
('type_temp', '=', 'annexe_convention_av')])
for template_doc in template_docs:
for financ in project.financement_ids:
for financ in project.financement_av_ids:
keys_obj = financ.fill_data()
keys.update(keys_obj)
project._publipostage_documents(template_doc, keys, False)
......
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