From d4c2a67ea2d346527a9eca93fb5e6fce0eace5e6 Mon Sep 17 00:00:00 2001 From: hsilvant <hsilvant@scop.coop> Date: Tue, 24 Nov 2020 17:55:57 +0100 Subject: [PATCH] Ajout du suivi de facturation projet (idf) --- models/res_partner.py | 38 ++++++++++++++++++++++++++++++++++++ security/ir.model.access.csv | 2 ++ views/res_partner.xml | 31 +++++++++++++++++++++++++++++ 3 files changed, 71 insertions(+) diff --git a/models/res_partner.py b/models/res_partner.py index 9cad95f..41fd05b 100644 --- a/models/res_partner.py +++ b/models/res_partner.py @@ -51,6 +51,16 @@ class ScopPartner(models.Model): 'res.partner', string="Destinataire du dossier FSE") + project_invoicing_status_id = fields.Many2many('res.partner.project.invoicing.status', + column1='partner_id', + column2='invoicing_status_id', + string='Etat de facturation') + + project_invoicing_status_nb = fields.Integer( + string="Nb de statuts de facturation", + compute="_compute_project_invoicing_status_nb") + + # ------------------------------------------------------ # Onchange function # ------------------------------------------------------ @@ -86,8 +96,36 @@ class ScopPartner(models.Model): return True + @api.multi + def _compute_project_invoicing_status_nb(self): + for partner in self: + # Calcul nombre de statut 1 + sta = partner.env['res.partner.project.invoicing.status'].search([ + ('ur_id', '=', self.env.user.ur_id.id)]) + partner.project_invoicing_status_nb = len(sta) + + + class ResPartnerPrescriberCanal(models.Model): _name = "res.partner.prescriber.canal" _description = "Canal de Prescription" name = fields.Char('Canal de Prescription') + +class ResPartnerProjectInvoicingStatus(models.Model): + _name = "res.partner.project.invoicing.status" + _description = "Etat de la facturation projet" + _rec_name = 'name' + _order = 'ur_id, name' + + def _default_ur(self): + return self.env['res.company']._ur_default_get() + + name = fields.Char('Nom', index=True, required=True) + ur_id = fields.Many2one( + 'union.regionale', + string='Union Régionale', + index=True, + on_delete='restrict', + default=_default_ur) + diff --git a/security/ir.model.access.csv b/security/ir.model.access.csv index fef53f7..39e8f6f 100644 --- a/security/ir.model.access.csv +++ b/security/ir.model.access.csv @@ -1,3 +1,5 @@ id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink access_res_partner_prescriber_canal,access_res_partner_prescriber_canal,model_res_partner_prescriber_canal,base.group_user,1,0,0,0 admin_res_partner_prescriber_canal,admin_res_partner_prescriber_canal,model_res_partner_prescriber_canal,cgscop_partner.group_cg_administrator,1,1,1,1 +access_res_partner_project_invoicing_status,access_res_partner_project_invoicing_status,model_res_partner_project_invoicing_status,base.group_user,1,0,0,0 +admin_res_partner_project_invoicing_status,admin_res_partner_project_invoicing_status,model_res_partner_project_invoicing_status,cgscop_partner.group_cg_administrator,1,1,1,1 diff --git a/views/res_partner.xml b/views/res_partner.xml index e9ed81b..e5c848b 100644 --- a/views/res_partner.xml +++ b/views/res_partner.xml @@ -34,6 +34,7 @@ <field name="arch" type="xml"> <page name='scop_contacts' position="before"> <page name="adhesion_processus1" string="Processus d'Adhésion" attrs="{'invisible': [('project_status','=','6_suivi')]}"> + <field name="project_invoicing_status_nb" invisible="1"/> <group col="3"> <group string="Général"> <field name="project_number"/> @@ -51,6 +52,8 @@ <field name="fse_full" widget="boolean_toggle"/> <field name="is_id_card" widget="boolean_toggle"/> <field name="recipient_file_fse"/> + <field name="project_invoicing_status_id" widget="many2many_tags" options="{'no_create': True}" domain="[('ur_id', '=', ur_id)]" attrs="{'invisible':[('project_invoicing_status_nb', '=', 0)]}" /> + </group> <group string="Phase d'information"> <field name="date_first_rdv" attrs="{'required':[('project_status','=', '1_information')]}"/> @@ -76,6 +79,7 @@ <page name='scop_liasse_fiscale' position="after"> <page name="adhesion_processus2" string="Processus d'Adhésion" attrs="{'invisible': [('project_status','!=','6_suivi')]}"> <group col="3"> + <field name="project_invoicing_status_nb" invisible="1"/> <group string="Général"> <field name="percent_realisation" widget="priority"/> <field name="date_realisation"/> @@ -90,6 +94,7 @@ <field name="date_return_file"/> <field name="fse_full" widget="boolean_toggle"/> <field name="recipient_file_fse"/> + <field name="project_invoicing_status_id" widget="many2many_tags" options="{'no_create': True}" domain="[('ur_id', '=', ur_id)]" attrs="{'invisible':[('project_invoicing_status_nb', '=', 0)]}" /> </group> <group string="Phase d'information"> <field name="date_first_rdv"/> @@ -149,6 +154,32 @@ action="action_view_res_partner_prescriber_canal_tree" sequence="15"/> + <!-- statut de facturation projet --> + <record id="view_res_partner_project_invoicing_status_tree" model="ir.ui.view"> + <field name="name">res.partner.project.invoicing.status.tree</field> + <field name="model">res.partner.project.invoicing.status</field> + <field name="arch" type="xml"> + <tree string="Etat de la facturation projet" editable="top"> + <field name="name"/> + </tree> + </field> + </record> + + <record id="action_view_res_partner_project_invoicing_status_tree" model="ir.actions.act_window"> + <field name="name">Etat de la facturation projet</field> + <field name="res_model">res.partner.project.invoicing.status</field> + <field name="domain">[('ur_id', '=', ur_id)]</field> + <field name="view_mode">tree</field> + <field name="help">Affiche et gère les états de facturation projet</field> + </record> + + <menuitem id="menu_res_partner_project_invoicing_status" + parent="cgscop_partner.menu_scop" + action="action_view_res_partner_project_invoicing_status_tree" + groups="group_cg_administrator" + sequence="17"/> + + <record id="view_partner_add_fse_form" model="ir.ui.view"> <field name="name">partner.fse.form</field> <field name="model">res.partner</field> -- GitLab