diff --git a/report/partner_dashboard_dlg.py b/report/partner_dashboard_dlg.py index 742436ac018bdd93fd2cad33dc31b0ade9f7881c..c62b6fd27880e58fae41216c9dc01d7c883361b5 100644 --- a/report/partner_dashboard_dlg.py +++ b/report/partner_dashboard_dlg.py @@ -24,12 +24,17 @@ class ScopPartnerDashboardDlg(models.Model): name = fields.Char() dash_type = fields.Char("Type de dashboard") - nb_prj_info = fields.Integer("Information") - nb_prj_pdiag = fields.Integer("Pre-diag") - nb_prj_accomp = fields.Integer("Accompagnement") - nb_prj_adh = fields.Integer("Adhésion") - nb_prj_soumis = fields.Integer("Soumis") - nb_prj_tot = fields.Integer("Projets en cours") + nb_prj_crea_info = fields.Integer("Information") + nb_prj_crea_pdiag = fields.Integer("Pre-diag") + nb_prj_crea_accomp = fields.Integer("Accompagnement") + nb_prj_crea_abandon = fields.Integer("Abandon") + nb_prj_crea_tot = fields.Integer("Projets en cours") + + nb_adh_member = fields.Integer("Membre") + nb_adh_adhesion = fields.Integer("Adhésion") + nb_adh_soumis_cg = fields.Integer("Soumis CG") + nb_adh_radie = fields.Integer("Radié") + nb_adh_tot = fields.Integer("Coop dans le processus") nb_fc_scop = fields.Integer("Nombre de scop") nb_fc_scic = fields.Integer("Nombre de scic") @@ -71,13 +76,16 @@ class ScopPartnerDashboardDlg(models.Model): def _select(self): # On constitue les requetes - qy_projet = self._select_projet() + qy_projet_crea = self._select_projet_crea() + qy_adh = self._select_adh() qy_coop = self._select_coop() qy_rev = self._select_rev() qy_act = self._select_act() qy = ( - qy_projet + qy_projet_crea + + " UNION ALL " + + qy_adh + " UNION ALL " + qy_coop + " UNION ALL " @@ -89,32 +97,34 @@ class ScopPartnerDashboardDlg(models.Model): return qy # ------------------------------------------------------ - # Dashboard projets + # Dashboard projets de création # ------------------------------------------------------ @api.model - def _select_projet(self): + def _select_projet_crea(self): query = """ SELECT - CONCAT('1', org.creation_delegate_id) AS id, + CONCAT('5', org.creation_delegate_id) AS id, org.creation_delegate_id as dlg_id, - 'Prospects en cours' AS name, - '1' as dash_type, + 'Projets de création' AS name, + '5' as dash_type, SUM(case when substring(org.project_status,1,1) = '1' then 1 - else 0 end) AS nb_prj_info, + else 0 end) AS nb_prj_crea_info, SUM(case when substring(org.project_status,1,1) = '2' then 1 - else 0 end) AS nb_prj_pdiag, + else 0 end) AS nb_prj_crea_pdiag, SUM(case when substring(org.project_status,1,1) = '3' then 1 - else 0 end) AS nb_prj_accomp, - SUM(case - when substring(org.project_status,1,1) = '4' then 1 - else 0 end) AS nb_prj_adh, + else 0 end) AS nb_prj_crea_accomp, SUM(case when substring(org.project_status,1,1) = '5' then 1 - else 0 end) AS nb_prj_soumis, - count(org.id) as nb_prj_tot, + else 0 end) AS nb_prj_crea_abandon, + count(org.id) as nb_prj_crea_tot, + 0 as nb_adh_member, + 0 as nb_adh_adhesion, + 0 as nb_adh_soumis_cg, + 0 as nb_adh_radie, + 0 as nb_adh_tot, 0 as nb_fc_scop, 0 as nb_fc_scic, 0 as nb_fc_co47, @@ -138,7 +148,65 @@ class ScopPartnerDashboardDlg(models.Model): WHERE (org.active=TRUE) and (org.is_cooperative = TRUE)and - substring(org.project_status,1,1) in ('1','2','3','4','5') + substring(org.project_status,1,1) in ('1','2','3','5') + GROUP BY + org.creation_delegate_id + """ + return query + + # ------------------------------------------------------ + # Dashboard processus d'adhésion + # ------------------------------------------------------ + @api.model + def _select_adh(self): + query = """ + SELECT + CONCAT('6', org.creation_delegate_id) AS id, + org.creation_delegate_id as dlg_id, + 'Processus d adhésion' AS name, + '6' as dash_type, + 0 as nb_prj_crea_info, + 0 as nb_prj_crea_pdiag, + 0 as nb_prj_crea_accomp, + 0 as nb_prj_crea_abandon, + 0 as nb_prj_crea_tot, + SUM(case + when org.membership_status = 'member' then 1 + else 0 end) AS nb_adh_member, + SUM(case + when org.membership_status = 'adhesion' then 1 + else 0 end) AS nb_adh_adhesion, + SUM(case + when org.membership_status = 'soumis_cg' then 1 + else 0 end) AS nb_adh_soumis_cg, + SUM(case + when org.membership_status = 'out' then 1 + else 0 end) AS nb_adh_radie, + count(org.id) as nb_adh_tot, + 0 as nb_fc_scop, + 0 as nb_fc_scic, + 0 as nb_fc_co47, + 0 as nb_coop_cae, + 0 as nb_coop_adh, + 0 as nb_coop_tot, + 0 as rev_done, + 0 as rev_1y, + 0 as rev_5y, + 0 as rev_5ys, + 0 as rev_5ys23, + 0 as rev_todo, + 0 as rev_total, + 0 as act_dev, + 0 as act_acc, + 0 as act_rev, + 0 as act_for, + 0 as act_acc_theo + FROM + res_partner org + WHERE + (org.active=TRUE) and + (org.is_cooperative = TRUE)and + substring(org.project_status,1,1) in ('4') GROUP BY org.creation_delegate_id """ @@ -173,12 +241,16 @@ class ScopPartnerDashboardDlg(models.Model): org.followup_delegate_id as dlg_id, 'Coopératives suivies' AS name, '2' as dash_type, - 0 as nb_prj_info, - 0 as nb_prj_pdiag, - 0 as nb_prj_accomp, - 0 as nb_prj_adh, - 0 as nb_prj_soumis, - 0 as nb_prj_tot, + 0 as nb_prj_crea_info, + 0 as nb_prj_crea_pdiag, + 0 as nb_prj_crea_accomp, + 0 as nb_prj_crea_abandon, + 0 as nb_prj_crea_tot, + 0 as nb_adh_member, + 0 as nb_adh_adhesion, + 0 as nb_adh_soumis_cg, + 0 as nb_adh_radie, + 0 as nb_adh_tot, SUM(case when org.cooperative_form_id = %d then 1 else 0 end) AS nb_fc_scop, @@ -239,12 +311,16 @@ class ScopPartnerDashboardDlg(models.Model): dlg_id, CONCAT('Révisions année ',date_part('year', CURRENT_DATE)) AS name, '3' as dash_type, - 0 as nb_prj_info, - 0 as nb_prj_pdiag, - 0 as nb_prj_accomp, - 0 as nb_prj_adh, - 0 as nb_prj_soumis, - 0 as nb_prj_tot, + 0 as nb_prj_crea_info, + 0 as nb_prj_crea_pdiag, + 0 as nb_prj_crea_accomp, + 0 as nb_prj_crea_abandon, + 0 as nb_prj_crea_tot, + 0 as nb_adh_member, + 0 as nb_adh_adhesion, + 0 as nb_adh_soumis_cg, + 0 as nb_adh_radie, + 0 as nb_adh_tot, 0 as nb_fc_scop, 0 as nb_fc_scic, 0 as nb_fc_co47, @@ -307,12 +383,16 @@ class ScopPartnerDashboardDlg(models.Model): dlg_id, CONCAT('Activité année ',date_part('year', CURRENT_DATE)) AS name, '4' as dash_type, - 0 as nb_prj_info, - 0 as nb_prj_pdiag, - 0 as nb_prj_accomp, - 0 as nb_prj_adh, - 0 as nb_prj_soumis, - 0 as nb_prj_tot, + 0 as nb_prj_crea_info, + 0 as nb_prj_crea_pdiag, + 0 as nb_prj_crea_accomp, + 0 as nb_prj_crea_abandon, + 0 as nb_prj_crea_tot, + 0 as nb_adh_member, + 0 as nb_adh_adhesion, + 0 as nb_adh_soumis_cg, + 0 as nb_adh_radie, + 0 as nb_adh_tot, 0 as nb_fc_scop, 0 as nb_fc_scic, 0 as nb_fc_co47, @@ -429,32 +509,60 @@ class ScopPartnerDashboardDlg(models.Model): # ------------------------------------------------------ def _compute_graph_values(self): for rec in self: - if rec.dash_type == "1": + if rec.dash_type == "5": rec.graph_values = json.dumps( [ { "values": [ { "label": "Information", - "value": rec.nb_prj_info, + "value": rec.nb_prj_crea_info, }, { "label": "Pré-diag", - "value": rec.nb_prj_pdiag, + "value": rec.nb_prj_crea_pdiag, }, { "label": "Accompagnement", - "value": rec.nb_prj_accomp, + "value": rec.nb_prj_crea_accomp, + }, + { + "label": "Abandon", + "value": rec.nb_prj_crea_abandon, + }, + ], + "area": True, + "title": "", + "key": "Projets de création", + } + ] + ) + + if rec.dash_type == "6": + rec.graph_values = json.dumps( + [ + { + "values": [ + { + "label": "Membre", + "value": rec.nb_adh_member, + }, + { + "label": "Adhésion", + "value": rec.nb_adh_adhesion, }, - {"label": "Adhésion", "value": rec.nb_prj_adh}, { "label": "Soumis CG", - "value": rec.nb_prj_soumis, + "value": rec.nb_adh_soumis_cg, + }, + { + "label": "Radié", + "value": rec.nb_adh_radie, }, ], "area": True, "title": "", - "key": "Prospects en cours", + "key": "Processus d'adhésion", } ] ) @@ -545,11 +653,11 @@ class ScopPartnerDashboardDlg(models.Model): rec.act_acc_percent_done = rec.act_acc / rec.act_acc_theo * 100 # ------------------------------------------------------ - # Affichage des projets + # Affichage des projets de création # ------------------------------------------------------ - def show_projets(self): + def show_projets_creation(self): return { - "name": "Prospects", + "name": "Projets de création", "type": "ir.actions.act_window", "res_model": "res.partner", "view_mode": "kanban,tree,form,activity", @@ -577,9 +685,7 @@ class ScopPartnerDashboardDlg(models.Model): "1_information", "2_pre-diagnostic", "3_accompagnement", - "4_adhesion", - "5_cg", - "7_abandonne", + "4_abandonne", ), ), ("creation_delegate_id", "=", self.env.user.id), @@ -592,6 +698,48 @@ class ScopPartnerDashboardDlg(models.Model): }, } + # ----------------------------------------- + # Affichage des coop en processu d'adhésion + # ----------------------------------------- + def show_adhesion(self): + return { + "name": "Processus d'adhésion", + "type": "ir.actions.act_window", + "res_model": "res.partner", + "view_mode": "kanban,tree,form,activity", + "views": [ + ( + self.env.ref("cgscop_partner.view_partner_adhesion_kanban").id, + "kanban", + ), + ( + self.env.ref("cgscop_partner.view_partner_prospect_tree").id, + "tree", + ), + ( + self.env.ref("cgscop_partner.scop_contact_view_form").id, + "form", + ), + ], + "target": "current", + "domain": [ + ("is_cooperative", "=", True), + ( + "project_status", + "in", + ("4_suivi",), + ), + ("membership_status", "!=", "not_member"), + ("creation_delegate_id", "=", self.env.user.id), + ], + "context": { + "default_is_company": True, + "default_is_cooperative": True, + "default_company_type": "company", + "default_project_status": "1_information", + }, + } + # ------------------------------------------------------ # Affichage des coop adh # ------------------------------------------------------ diff --git a/report/partner_dashboard_dlg.xml b/report/partner_dashboard_dlg.xml index 76cf132aef7cc4c388b4669d84d1bbbd76cb91cf..2c0797c1bb7fe94e08e6406a2cad4570845b1d7e 100644 --- a/report/partner_dashboard_dlg.xml +++ b/report/partner_dashboard_dlg.xml @@ -14,10 +14,14 @@ <field name="name" /> <field name="dlg_id" /> <field name="dash_type" /> - <field name="nb_prj_tot" /> - <field name="nb_prj_accomp" /> - <field name="nb_prj_adh" /> - <field name="nb_prj_soumis" /> + <field name="nb_prj_crea_tot" /> + <field name="nb_prj_crea_accomp" /> + <field name="nb_prj_crea_abandon" /> + <field name="nb_adh_member" /> + <field name="nb_adh_adhesion" /> + <field name="nb_adh_soumis_cg" /> + <field name="nb_adh_radie" /> + <field name="nb_adh_tot" /> <templates> <t t-name="kanban-box"> <div class="container o_kanban_card_content"> @@ -29,42 +33,103 @@ </div> </div> - <!-- Affiche Dashboard type 1 --> + <!-- Affiche Dashboard type 5 --> <div class="row" - attrs="{'invisible': [('dash_type', '!=', '1')]}" + attrs="{'invisible': [('dash_type', '!=', '5')]}" > <div class="col-6"> <div class="text-center mb32"> <button type="object" - name="show_projets" + name="show_projets_creation" class="btn btn-info" - >Voir mes prospects</button> + >Voir mes projets de création</button> </div> </div> <div class="col-6"> <table class="table table-bordered"> <tbody> <tr> - <td>Prospects en cours :</td> - <td><field name="nb_prj_tot" /></td> + <td>Projets en cours :</td> + <td><field + name="nb_prj_crea_tot" + /></td> + </tr> + <tr> + <td>dont phase d'information :</td> + <td><field + name="nb_prj_crea_info" + /></td> + </tr> + <tr> + <td>dont phase pré-diagnostic :</td> + <td><field + name="nb_prj_crea_pdiag" + /></td> </tr> <tr> <td >dont phase d'accompagnement :</td> <td><field - name="nb_prj_accomp" + name="nb_prj_crea_accomp" + /></td> + </tr> + <tr> + <td>dont phase d'abandon :</td> + <td><field + name="nb_prj_crea_abandon" + /></td> + </tr> + </tbody> + </table> + </div> + </div> + + <!-- Affiche Dashboard type 6 --> + <div + class="row" + attrs="{'invisible': [('dash_type', '!=', '6')]}" + > + <div class="col-6"> + <div class="text-center mb32"> + <button + type="object" + name="show_adhesion" + class="btn btn-info" + >Voir les coops en processus d'adhésion</button> + </div> + </div> + <div class="col-6"> + <table class="table table-bordered"> + <tbody> + <tr> + <td + >Coop dans le procuss d'adhésion :</td> + <td><field name="nb_adh_tot" /></td> + </tr> + <tr> + <td>dont membre :</td> + <td><field + name="nb_adh_member" /></td> </tr> <tr> - <td>dont phase d'adhésion :</td> - <td><field name="nb_prj_adh" /></td> + <td>dont phase adhésion :</td> + <td><field + name="nb_adh_adhesion" + /></td> </tr> <tr> <td>dont soumis CG :</td> <td><field - name="nb_prj_soumis" + name="nb_adh_soumis_cg" + /></td> + </tr> + <tr> + <td>dont radié :</td> + <td><field + name="nb_adh_radie" /></td> </tr> </tbody> @@ -72,7 +137,6 @@ </div> </div> - <!-- Affiche Dashboard type 2 --> <div class="row" diff --git a/report/partner_dashboard_ur.py b/report/partner_dashboard_ur.py index cd18d4011ea573131464ff8f7736f0c5115d813c..d2bd540849310c521de50fd3e5e5804491dff93f 100644 --- a/report/partner_dashboard_ur.py +++ b/report/partner_dashboard_ur.py @@ -29,12 +29,17 @@ class ScopPartnerDashboardUr(models.Model): dash_type = fields.Integer("Type de dashboard") all_ur = fields.Boolean("Affichage de toutes les UR") - nb_prj_info = fields.Integer("Information") - nb_prj_pdiag = fields.Integer("Pre-diag") - nb_prj_accomp = fields.Integer("Accompagnement") - nb_prj_adh = fields.Integer("Adhésion") - nb_prj_soumis = fields.Integer("Soumis") - nb_prj_tot = fields.Integer("Projets en cours") + nb_prj_crea_info = fields.Integer("Information") + nb_prj_crea_pdiag = fields.Integer("Pre-diag") + nb_prj_crea_accomp = fields.Integer("Accompagnement") + nb_prj_crea_abandon = fields.Integer("Abandon") + nb_prj_crea_tot = fields.Integer("Projets en cours") + + nb_adh_member = fields.Integer("Membre") + nb_adh_adhesion = fields.Integer("Adhésion") + nb_adh_soumis_cg = fields.Integer("Soumis CG") + nb_adh_radie = fields.Integer("Radié") + nb_adh_tot = fields.Integer("Coop dans le processus") nb_fc_scop = fields.Integer("Nombre de scop") nb_fc_scic = fields.Integer("Nombre de scic") @@ -76,17 +81,19 @@ class ScopPartnerDashboardUr(models.Model): cgscop_id = cgids[0].id # On constitue les requetes - qy_projet = self._select_projet(cgscop_id) + qy_projet_crea = self._select_projet_crea(cgscop_id) + qy_adh = self._select_adh(cgscop_id) qy_coop = self._select_coop(cgscop_id) qy_rev = self._select_rev(cgscop_id) qy_act = self._select_act(cgscop_id) qy = """ - WITH req AS (%s UNION ALL %s UNION ALL %s UNION ALL %s) + WITH req AS (%s UNION ALL %s UNION ALL %s UNION ALL %s UNION ALL %s) SELECT ROW_NUMBER() OVER (ORDER BY ur_id) as id, * FROM req """ % ( - qy_projet, + qy_projet_crea, + qy_adh, qy_coop, qy_rev, qy_act, @@ -94,33 +101,35 @@ class ScopPartnerDashboardUr(models.Model): return qy # ------------------------------------------------------ - # Dashboard projets + # Dashboard projets de création # ------------------------------------------------------ @api.model - def _select_projet(self, cgscop_id): + def _select_projet_crea(self, cgscop_id): query = """ SELECT - CONCAT('1', ur_id) AS id_txt, + CONCAT('5', ur_id) AS id_txt, org.ur_id as ur_id, - 'Prospects en cours' AS name, - 1 as dash_type, + 'Projets de création' AS name, + 5 as dash_type, 0 as all_ur, SUM(case when substring(org.project_status,1,1) = '1' then 1 - else 0 end) AS nb_prj_info, + else 0 end) AS nb_prj_crea_info, SUM(case when substring(org.project_status,1,1) = '2' then 1 - else 0 end) AS nb_prj_pdiag, + else 0 end) AS nb_prj_crea_pdiag, SUM(case when substring(org.project_status,1,1) = '3' then 1 - else 0 end) AS nb_prj_accomp, + else 0 end) AS nb_prj_crea_accomp, SUM(case - when substring(org.project_status,1,1) = '4' then 1 - else 0 end) AS nb_prj_adh, - SUM(case when - substring(org.project_status,1,1) = '5' then 1 - else 0 end) AS nb_prj_soumis, - count(org.id) as nb_prj_tot, + when substring(org.project_status,1,1) = '5' then 1 + else 0 end) AS nb_prj_crea_abandon, + count(org.id) as nb_prj_crea_tot, + 0 as nb_adh_member, + 0 as nb_adh_adhesion, + 0 as nb_adh_soumis_cg, + 0 as nb_adh_radie, + 0 as nb_adh_tot, 0 as nb_fc_scop, 0 as nb_fc_scic, 0 as nb_fc_co47, @@ -144,32 +153,145 @@ class ScopPartnerDashboardUr(models.Model): (org.ur_id <> %d) and (org.active=TRUE) and (org.is_cooperative = TRUE)and - substring(org.project_status,1,1) in ('1','2','3','4','5') + substring(org.project_status,1,1) in ('1','2','3','5') group by org.ur_id UNION ALL SELECT - '1CGSCOP' AS id_txt, + '5CGSCOP' AS id_txt, '%d' as ur_id, - 'Prospects en cours' AS name, - 1 as dash_type, + 'Projets de création' AS name, + 5 as dash_type, 1 as all_ur, SUM(case when substring(org.project_status,1,1) = '1' then 1 - else 0 end) AS nb_prj_info, + else 0 end) AS nb_prj_crea_info, SUM(case when substring(org.project_status,1,1) = '2' then 1 - else 0 end) AS nb_prj_pdiag, + else 0 end) AS nb_prj_crea_pdiag, SUM(case when substring(org.project_status,1,1) = '3' then 1 - else 0 end) AS nb_prj_accomp, - SUM(case - when substring(org.project_status,1,1) = '4' then 1 - else 0 end) AS nb_prj_adh, + else 0 end) AS nb_prj_crea_accomp, SUM(case when substring(org.project_status,1,1) = '5' then 1 - else 0 end) AS nb_prj_soumis, - count(org.id) as nb_prj_tot, + else 0 end) AS nb_prj_crea_abandon, + count(org.id) as nb_prj_crea_tot, + 0 as nb_adh_member, + 0 as nb_adh_adhesion, + 0 as nb_adh_soumis_cg, + 0 as nb_adh_radie, + 0 as nb_adh_tot, + 0 as nb_fc_scop, + 0 as nb_fc_scic, + 0 as nb_fc_co47, + 0 as nb_coop_cae, + 0 as nb_coop_adh, + 0 as nb_coop_tot, + 0 as rev_done, + 0 as rev_1y, + 0 as rev_5y, + 0 as rev_5ys, + 0 as rev_5ys23, + 0 as rev_todo, + 0 as rev_total, + 0 as act_dev, + 0 as act_acc, + 0 as act_rev, + 0 as act_for, + 0 as act_acc_theo + FROM res_partner org + where + (org.active=TRUE) and + (org.is_cooperative = TRUE)and + substring(org.project_status,1,1) in ('1','2','3','5') + """ % ( + cgscop_id, + cgscop_id, + ) + + return query + + # ------------------------------------------------------ + # Dashboard processus d'adhésion + # ------------------------------------------------------ + @api.model + def _select_adh(self, cgscop_id): + query = """ + SELECT + CONCAT('5', ur_id) AS id_txt, + org.ur_id as ur_id, + 'Processus adhésion' AS name, + 6 as dash_type, + 0 as all_ur, + 0 as nb_prj_crea_info, + 0 as nb_prj_crea_pdiag, + 0 as nb_prj_crea_accomp, + 0 as nb_prj_crea_abandon, + 0 as nb_prj_crea_tot, + SUM(case + when org.membership_status = 'member' then 1 + else 0 end) AS nb_adh_member, + SUM(case + when org.membership_status = 'adhesion' then 1 + else 0 end) AS nb_adh_adhesion, + SUM(case + when org.membership_status = 'soumis_cg' then 1 + else 0 end) AS nb_adh_soumis_cg, + SUM(case + when org.membership_status = 'out' then 1 + else 0 end) AS nb_adh_radie, + count(org.id) as nb_adh_tot, + 0 as nb_fc_scop, + 0 as nb_fc_scic, + 0 as nb_fc_co47, + 0 as nb_coop_cae, + 0 as nb_coop_adh, + 0 as nb_coop_tot, + 0 as rev_done, + 0 as rev_1y, + 0 as rev_5y, + 0 as rev_5ys, + 0 as rev_5ys23, + 0 as rev_todo, + 0 as rev_total, + 0 as act_dev, + 0 as act_acc, + 0 as act_rev, + 0 as act_for, + 0 as act_acc_theo + FROM res_partner org + where + (org.ur_id <> %d) and + (org.active=TRUE) and + (org.is_cooperative = TRUE)and + substring(org.project_status,1,1) in ('1','2','3','5') + group by + org.ur_id + UNION ALL + SELECT + '6CGSCOP' AS id_txt, + '%d' as ur_id, + 'Processus adhésion' AS name, + 6 as dash_type, + 1 as all_ur, + 0 as nb_prj_crea_info, + 0 as nb_prj_crea_pdiag, + 0 as nb_prj_crea_accomp, + 0 as nb_prj_crea_abandon, + 0 as nb_prj_crea_tot, + SUM(case + when org.membership_status = 'member' then 1 + else 0 end) AS nb_adh_member, + SUM(case + when org.membership_status = 'adhesion' then 1 + else 0 end) AS nb_adh_adhesion, + SUM(case + when org.membership_status = 'soumis_cg' then 1 + else 0 end) AS nb_adh_soumis_cg, + SUM(case + when org.membership_status = 'out' then 1 + else 0 end) AS nb_adh_radie, + count(org.id) as nb_adh_tot, 0 as nb_fc_scop, 0 as nb_fc_scic, 0 as nb_fc_co47, @@ -192,7 +314,7 @@ class ScopPartnerDashboardUr(models.Model): where (org.active=TRUE) and (org.is_cooperative = TRUE)and - substring(org.project_status,1,1) in ('1','2','3','4','5') + substring(org.project_status,1,1) in ('4') """ % ( cgscop_id, cgscop_id, @@ -227,12 +349,16 @@ class ScopPartnerDashboardUr(models.Model): 'Coopératives adhérentes' AS name, 2 as dash_type, 0 as all_ur, - 0 as nb_prj_info, - 0 as nb_prj_pdiag, - 0 as nb_prj_accomp, - 0 as nb_prj_adh, - 0 as nb_prj_soumis, - 0 as nb_prj_tot, + 0 as nb_prj_crea_info, + 0 as nb_prj_crea_pdiag, + 0 as nb_prj_crea_accomp, + 0 as nb_prj_crea_abandon, + 0 as nb_prj_crea_tot, + 0 as nb_adh_member, + 0 as nb_adh_adhesion, + 0 as nb_adh_soumis_cg, + 0 as nb_adh_radie, + 0 as nb_adh_tot, SUM(case when org.cooperative_form_id = %d then 1 else 0 end) AS nb_fc_scop, @@ -281,12 +407,16 @@ class ScopPartnerDashboardUr(models.Model): 'Coopératives adhérentes' AS name, 2 as dash_type, 1 as all_ur, - 0 as nb_prj_info, - 0 as nb_prj_pdiag, - 0 as nb_prj_accomp, - 0 as nb_prj_adh, - 0 as nb_prj_soumis, - 0 as nb_prj_tot, + 0 as nb_prj_crea_info, + 0 as nb_prj_crea_pdiag, + 0 as nb_prj_crea_accomp, + 0 as nb_prj_crea_abandon, + 0 as nb_prj_crea_tot, + 0 as nb_adh_member, + 0 as nb_adh_adhesion, + 0 as nb_adh_soumis_cg, + 0 as nb_adh_radie, + 0 as nb_adh_tot, SUM(case when org.cooperative_form_id = %d then 1 else 0 end) AS nb_fc_scop, @@ -350,12 +480,16 @@ class ScopPartnerDashboardUr(models.Model): CONCAT('Révisions année ',date_part('year', CURRENT_DATE)) AS name, 3 as dash_type, 0 as all_ur, - 0 as nb_prj_info, - 0 as nb_prj_pdiag, - 0 as nb_prj_accomp, - 0 as nb_prj_adh, - 0 as nb_prj_soumis, - 0 as nb_prj_tot, + 0 as nb_prj_crea_info, + 0 as nb_prj_crea_pdiag, + 0 as nb_prj_crea_accomp, + 0 as nb_prj_crea_abandon, + 0 as nb_prj_crea_tot, + 0 as nb_adh_member, + 0 as nb_adh_adhesion, + 0 as nb_adh_soumis_cg, + 0 as nb_adh_radie, + 0 as nb_adh_tot, 0 as nb_fc_scop, 0 as nb_fc_scic, 0 as nb_fc_co47, @@ -417,12 +551,16 @@ class ScopPartnerDashboardUr(models.Model): CONCAT('Activité année ',date_part('year', CURRENT_DATE)) AS name, 4 as dash_type, 0 as all_ur, - 0 as nb_prj_info, - 0 as nb_prj_pdiag, - 0 as nb_prj_accomp, - 0 as nb_prj_adh, - 0 as nb_prj_soumis, - 0 as nb_prj_tot, + 0 as nb_prj_crea_info, + 0 as nb_prj_crea_pdiag, + 0 as nb_prj_crea_accomp, + 0 as nb_prj_crea_abandon, + 0 as nb_prj_crea_tot, + 0 as nb_adh_member, + 0 as nb_adh_adhesion, + 0 as nb_adh_soumis_cg, + 0 as nb_adh_radie, + 0 as nb_adh_tot, 0 as nb_fc_scop, 0 as nb_fc_scic, 0 as nb_fc_co47, @@ -549,32 +687,60 @@ class ScopPartnerDashboardUr(models.Model): # ------------------------------------------------------ def _compute_graph_values(self): for rec in self: - if rec.dash_type == 1: + if rec.dash_type == 5: rec.graph_values = json.dumps( [ { "values": [ { "label": "Information", - "value": rec.nb_prj_info, + "value": rec.nb_prj_crea_info, }, { "label": "Pré-diag", - "value": rec.nb_prj_pdiag, + "value": rec.nb_prj_crea_pdiag, }, { "label": "Accompagnement", - "value": rec.nb_prj_accomp, + "value": rec.nb_prj_crea_accomp, + }, + { + "label": "Abandonné", + "value": rec.nb_prj_crea_abandon, + }, + ], + "area": True, + "title": "", + "key": "Projets de création", + } + ] + ) + + if rec.dash_type == 6: + rec.graph_values = json.dumps( + [ + { + "values": [ + { + "label": "Membre", + "value": rec.nb_adh_member, + }, + { + "label": "Adhésion", + "value": rec.nb_adh_adhesion, }, - {"label": "Adhésion", "value": rec.nb_prj_adh}, { "label": "Soumis CG", - "value": rec.nb_prj_soumis, + "value": rec.nb_adh_soumis_cg, + }, + { + "label": "Radié", + "value": rec.nb_adh_radie, }, ], "area": True, "title": "", - "key": "Prospects en cours", + "key": "Projets de création", } ] ) @@ -665,17 +831,19 @@ class ScopPartnerDashboardUr(models.Model): rec.act_acc_percent_done = rec.act_acc / rec.act_acc_theo * 100 # ------------------------------------------------------ - # Affichage des projets de l'ur + # Affichage des projets de création de l'ur # ------------------------------------------------------ - def show_projets(self): + def show_projets_creation(self): domain = [ ("is_cooperative", "=", True), - ("project_status", "!=", "6_suivi"), + ("project_status", "!=", "4_suivi"), + ("project_status", "!=", "6_decede"), ] + if self.env.company.ur_id.partner_filter != "1": domain.append(("ur_id", "=", self.env.company.ur_id.id)) return { - "name": "Prospects", + "name": "Projets de création", "type": "ir.actions.act_window", "res_model": "res.partner", "view_mode": "kanban,tree,form", @@ -708,7 +876,7 @@ class ScopPartnerDashboardUr(models.Model): # ------------------------------------------------------ def show_all_projets(self): return { - "name": "Tous les Prospects", + "name": "Tous les Projets", "type": "ir.actions.act_window", "res_model": "res.partner", "view_mode": "kanban,tree,form", @@ -736,9 +904,52 @@ class ScopPartnerDashboardUr(models.Model): "1_information", "2_pre-diagnostic", "3_accompagnement", - "4_adhesion", - "5_cg", - "7_abandonne", + "5_abandonne", + ), + ), + ], + "context": { + "default_is_company": True, + "default_is_cooperative": True, + "default_company_type": "company", + "default_project_status": "1_information", + }, + } + + # ------------------------------------------------------ + # Affichage de tous les projets de création + # ------------------------------------------------------ + def show_all_projets_creation(self): + return { + "name": "Tous les Projets de création", + "type": "ir.actions.act_window", + "res_model": "res.partner", + "view_mode": "kanban,tree,form", + "views": [ + ( + self.env.ref("cgscop_partner.view_partner_cooperative_kanban").id, + "kanban", + ), + ( + self.env.ref("cgscop_partner.view_partner_prospect_tree").id, + "tree", + ), + ( + self.env.ref("cgscop_partner.scop_contact_view_form").id, + "form", + ), + ], + "target": "current", + "domain": [ + ("is_cooperative", "=", True), + ( + "project_status", + "in", + ( + "1_information", + "2_pre-diagnostic", + "3_accompagnement", + "5_abandonne", ), ), ], @@ -789,6 +1000,50 @@ class ScopPartnerDashboardUr(models.Model): }, } + # ------------------------------------------------------ + # Affichage des coop en processus d'adhésion l'ur + # ------------------------------------------------------ + def show_adhesion(self): + domain = [ + ("is_cooperative", "=", True), + ("project_status", "=", "4_suivi"), + ("membership_status", "!=", "not_member"), + ] + if self.env.company.ur_id.partner_filter != "1": + domain.append(("ur_id", "=", self.env.company.ur_id.id)) + + return { + "name": "Processus d'adhésion", + "type": "ir.actions.act_window", + "res_model": "res.partner", + "search_view_id": ( + self.env.ref("cgscop_partner.scop_partner_view_search").id, + ), + "view_mode": "tree,form", + "views": [ + ( + self.env.ref("cgscop_partner.view_partner_adhesion_kanban").id, + "kanban", + ), + ( + self.env.ref("cgscop_partner.view_partner_prospect_tree").id, + "tree", + ), + ( + self.env.ref("cgscop_partner.scop_contact_view_form").id, + "form", + ), + ], + "target": "current", + "domain": domain, + "context": { + "default_is_company": True, + "default_is_cooperative": True, + "default_company_type": "company", + "create": False, + }, + } + # ------------------------------------------------------ # Affichage de toutes les coop adh # ------------------------------------------------------ @@ -814,7 +1069,7 @@ class ScopPartnerDashboardUr(models.Model): "target": "current", "domain": [ ("is_cooperative", "=", True), - ("membership_status", "=", "member"), + ("project_status", "=", "4_suivi"), ], "context": { "default_is_company": True, diff --git a/report/partner_dashboard_ur.xml b/report/partner_dashboard_ur.xml index fb29a193a4b4e7812b3ba0d8471b19ac8d2f6b0a..2dd3305be85cbd6717ead9006c22600c7d8f1d6c 100644 --- a/report/partner_dashboard_ur.xml +++ b/report/partner_dashboard_ur.xml @@ -13,10 +13,16 @@ <field name="name" /> <field name="ur_id" /> <field name="dash_type" /> - <field name="nb_prj_tot" /> - <field name="nb_prj_accomp" /> - <field name="nb_prj_adh" /> - <field name="nb_prj_soumis" /> + <field name="nb_prj_crea_tot" /> + <field name="nb_prj_crea_accomp" /> + <field name="nb_prj_crea_info" /> + <field name="nb_prj_crea_pdiag" /> + <field name="nb_prj_crea_abandon" /> + <field name="nb_adh_member" /> + <field name="nb_adh_adhesion" /> + <field name="nb_adh_soumis_cg" /> + <field name="nb_adh_radie" /> + <field name="nb_adh_tot" /> <field name="all_ur" /> <templates> <t t-name="kanban-box"> @@ -29,51 +35,121 @@ </div> </div> - <!-- Affiche Dashboard type 1 --> + <!-- Affiche Dashboard type 5 --> <div class="row" - attrs="{'invisible': [('dash_type', '!=', 1)]}" + attrs="{'invisible': [('dash_type', '!=', 5)]}" > <div class="col-6"> <div class="text-center mb32"> <button type="object" - name="show_projets" + name="show_projets_creation" class="btn btn-info" attrs="{'invisible': [('all_ur', '=', True)]}" - >Voir les prospects</button> + >Voir les projets de création</button> </div> <div class="text-center mb32"> <button type="object" - name="show_all_projets" + name="show_all_projets_creation" class="btn btn-info" attrs="{'invisible': [('all_ur', '!=', True)]}" - >Voir tous les prospects</button> + >Voir tous les projets de création</button> </div> </div> <div class="col-6"> <table class="table table-bordered"> <tbody> <tr> - <td>Prospects en cours :</td> - <td><field name="nb_prj_tot" /></td> + <td>Projets en cours :</td> + <td><field + name="nb_prj_crea_tot" + /></td> + </tr> + <tr> + <td>dont phase d'information :</td> + <td><field + name="nb_prj_crea_info" + /></td> + </tr> + <tr> + <td>dont phase pré-diagnostic :</td> + <td><field + name="nb_prj_crea_pdiag" + /></td> </tr> <tr> <td >dont phase d'accompagnement :</td> <td><field - name="nb_prj_accomp" + name="nb_prj_crea_accomp" /></td> </tr> <tr> - <td>dont phase d'adhésion :</td> - <td><field name="nb_prj_adh" /></td> + <td>dont phase d'abandon :</td> + <td><field + name="nb_prj_crea_abandon" + /></td> + </tr> + </tbody> + </table> + </div> + </div> + + <!-- Affiche Dashboard type 6 --> + <div + class="row" + attrs="{'invisible': [('dash_type', '!=', 6)]}" + > + <div class="col-6"> + <div class="text-center mb32"> + <button + type="object" + name="show_adhesion" + class="btn btn-info" + attrs="{'invisible': [('all_ur', '=', True)]}" + >Voir les coop en processus d'adhésion</button> + </div> + <div class="text-center mb32"> + <button + type="object" + name="show_all_projets_creation" + class="btn btn-info" + attrs="{'invisible': [('all_ur', '!=', True)]}" + >Voir toutes les coop en processus d'adhésion</button> + </div> + </div> + <div class="col-6"> + <table class="table table-bordered"> + <tbody> + <tr> + <td + >Coop dans le procuss d'adhésion :</td> + <td><field name="nb_adh_tot" /></td> + </tr> + <tr> + <td>dont membre :</td> + <td><field + name="nb_adh_member" + /></td> + </tr> + <tr> + <td>dont phase adhésion :</td> + <td><field + name="nb_adh_adhesion" + /></td> </tr> <tr> <td>dont soumis CG :</td> <td><field - name="nb_prj_soumis" + name="nb_adh_soumis_cg" + /></td> + </tr> + <tr> + <td>dont radié :</td> + <td><field + name="nb_adh_radie" /></td> </tr> </tbody> @@ -81,7 +157,6 @@ </div> </div> - <!-- Affiche Dashboard type 2 --> <div class="row" @@ -226,7 +301,6 @@ </div> </div> - <!-- Affiche le graph --> <div class="row"> <div class="col"> @@ -237,6 +311,7 @@ /> </div> </div> + </div> </t> </templates>