Skip to content
Extraits de code Groupes Projets
Valider 5f0520f7 rédigé par Benjamin - Le Filament's avatar Benjamin - Le Filament
Parcourir les fichiers

[UPD] required fields & update close process & add open and close fields

parent 510d6f65
Branches
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
from . import models from . import models, wizard
...@@ -10,6 +10,9 @@ ...@@ -10,6 +10,9 @@
"cgscop_partner", "cgscop_partner",
], ],
"data": [ "data": [
# wizard
"wizard/scop_deces_wizard.xml",
# views
"views/assets.xml", "views/assets.xml",
"views/res_partner.xml", "views/res_partner.xml",
], ],
......
...@@ -11,11 +11,10 @@ class SecondaryFacility(models.Model): ...@@ -11,11 +11,10 @@ class SecondaryFacility(models.Model):
selection_add=[("facility", "Etablissement")], selection_add=[("facility", "Etablissement")],
ondelete={"resource": "set default"} ondelete={"resource": "set default"}
) )
facility_ids = fields.One2many( facility_ids = fields.One2many(
"res.partner", "res.partner",
"parent_id", "parent_id",
string="Etablissements Secondaires", string="Etablissements",
domain=[("active", "=", True), ("type", "=", "facility")], domain=[("active", "=", True), ("type", "=", "facility")],
) )
other_child_ids = fields.One2many( other_child_ids = fields.One2many(
...@@ -28,6 +27,36 @@ class SecondaryFacility(models.Model): ...@@ -28,6 +27,36 @@ class SecondaryFacility(models.Model):
("type", "!=", "facility"), ("type", "!=", "facility"),
], ],
) )
date_open_facility = fields.Date("Date ouverture établissement")
date_close_facility = fields.Date("Date fermeture établissement")
is_facility_closed = fields.Boolean(
string="Etablissement fermé",
compute="_compute_is_facility_closed",
search="_search_is_facility_closed",
)
# ------------------------------------------------------
# Override parent
# ------------------------------------------------------
def _compute_is_facility_closed(self):
for partner in self:
if partner.type == "facility" and partner.date_close_facility:
partner.is_facility_closed = True
else:
partner.is_facility_closed = False
def _search_is_facility_closed(self, operator, value):
if operator not in ["=", "!="]:
raise ValueError("This opérateur non supporté")
if not isinstance(value, bool):
raise ValueError("La valeur doit être Vrai ou Faux (pas %s)", value)
if (operator == "=" and value) or (operator == "!=" and not value):
domain = [("type", "=", "facility"), ('date_close_facility', '!=', False)]
else:
domain = [("type", "=", "facility"), ('date_close_facility', '=', False)]
partner_ids = self.search(domain)
return [("id", "in", partner_ids.ids)]
# ------------------------------------------------------ # ------------------------------------------------------
# Override parent # Override parent
......
...@@ -13,7 +13,30 @@ ...@@ -13,7 +13,30 @@
<field name="name">cooperative.facility.form</field> <field name="name">cooperative.facility.form</field>
<field name="model">res.partner</field> <field name="model">res.partner</field>
<field name="inherit_id" ref="cgscop_partner.scop_contact_view_form" /> <field name="inherit_id" ref="cgscop_partner.scop_contact_view_form" />
<field name="priority">100</field>
<field name="arch" type="xml"> <field name="arch" type="xml">
<xpath expr="//div[hasclass('oe_title')]" position="before">
<field name="is_facility_closed" invisible="1" />
<span
class="badge bg-danger"
attrs="{'invisible': [('is_facility_closed', '!=', True)]}"
>
Établissement fermé
</span>
</xpath>
<!-- parent_id obligatoire pour les établissements secondaires -->
<xpath expr="//div[hasclass('oe_title')]//field[@name='parent_id']" position="attributes">
<attribute name="attrs">{'required': [('type', '=', 'facility')]}</attribute>
</xpath>
<!-- sire obligatoire pour les établissements secondaires -->
<xpath expr="//field[@name='siret']" position="attributes">
<attribute name="attrs">{'required': [('type', '=', 'facility')]}</attribute>
</xpath>
<xpath expr="//field[@name='registration_date']" position="after">
<field name="date_open_facility" attrs="{'invisible': [('type', '!=', 'facility')]}" />
<field name="date_close_facility" attrs="{'invisible': [('type', '!=', 'facility')]}" />
</xpath>
<xpath expr="//group[@name='partner_segment_info']" position="after"> <xpath expr="//group[@name='partner_segment_info']" position="after">
<group <group
name="facility_info" name="facility_info"
...@@ -29,18 +52,6 @@ ...@@ -29,18 +52,6 @@
options="{'no_open': True, 'no_create': True}" options="{'no_open': True, 'no_create': True}"
domain="[('active', '=', True),('ur_id', '=', ur_id)]" domain="[('active', '=', True),('ur_id', '=', ur_id)]"
/> />
<label for='siret' string="SIRET" class="oe_edit_only" />
<div>
<field name="siret" class="oe_edit_only" />
</div>
<label
for='formatted_siret'
string="SIRET"
class="oe_read_only"
/>
<div>
<field name="formatted_siret" class="oe_read_only" />
</div>
<field <field
name="naf_id" name="naf_id"
options='{"no_create": True, "no_open": True}' options='{"no_create": True, "no_open": True}'
...@@ -83,7 +94,7 @@ ...@@ -83,7 +94,7 @@
<field name="naf_id" /> <field name="naf_id" />
</xpath> </xpath>
<page name="scop_contacts" position="inside"> <page name="scop_contacts" position="inside">
<label for="facility_ids" string="Etablissements Secondaires" /> <label for="facility_ids" string="Etablissements" />
<p> <p>
<button <button
name="add_facility" name="add_facility"
...@@ -173,7 +184,7 @@ ...@@ -173,7 +184,7 @@
> >
<attribute <attribute
name="attrs" name="attrs"
eval="{'invisible': [('company_name', '!=', False),('company_name', '!=', '')]}" eval="{'invisible': [('company_name', '!=', False),('company_name', '!=', '')], 'required': [('type', '=', 'facility')]}"
/> />
</xpath> </xpath>
</field> </field>
...@@ -182,14 +193,12 @@ ...@@ -182,14 +193,12 @@
<!-- ****************************** <!-- ******************************
*** Custom Views *** Custom Views
****************************** --> ****************************** -->
<!-- <!-- Tree -->
CG Scop Facility View Tree
-->
<record id="scop_partner_tree_view" model="ir.ui.view"> <record id="scop_partner_tree_view" model="ir.ui.view">
<field name="name">scop partner tree view</field> <field name="name">scop partner tree view</field>
<field name="model">res.partner</field> <field name="model">res.partner</field>
<field name="arch" type="xml"> <field name="arch" type="xml">
<tree string="Etablissements secondaires"> <tree string="Etablissements">
<field name="display_name" /> <field name="display_name" />
<field name="parent_id" string="Etablissement principal" /> <field name="parent_id" string="Etablissement principal" />
<field name="zip" /> <field name="zip" />
...@@ -200,18 +209,54 @@ ...@@ -200,18 +209,54 @@
</field> </field>
</record> </record>
<!-- Search -->
<record id="scop_partner_facility_view_search" model="ir.ui.view">
<field name="name">scop.partner.facility.search</field>
<field name="model">res.partner</field>
<field name="arch" type="xml">
<search string="Etablissements">
<field name="name" filter_domain="['|', '|', '|', '|', ('display_name', 'ilike', self), ('ref', '=', self), ('email', 'ilike', self), ('member_number','=like',self), ('nickname', 'ilike', self)]"/>
<field name="phone" filter_domain="['|',('phone','ilike',self),('mobile','=',self)]"/>
<field name="followup_delegate_id" string="Délégué" filter_domain="['|', '|', '|', ('followup_delegate_id', 'ilike', self), ('creation_delegate_id', 'ilike', self), ('revision_person_id', 'ilike', self), ('revision_certified_person_id', 'ilike', self)]"/>
<field name="member_number_int" filter_domain="[('member_number','=like',self)]"/>
<field name="siret" filter_domain="[('siret','ilike',self)]"/>
<filter string="Mes organismes" name="my_partners" domain="['|', ('creation_delegate_id','=',uid), ('followup_delegate_id','=',uid)]"/>
<filter string="Mon UR" name="my_ur" domain="[('current_user_ur_id', '=', 'ur_id')]"/>
<separator/>
<filter string="Adhérents" name="is_adherent" domain="[('parent_id.membership_status', '=', 'member')]"/>
<filter string="Adhérents de mon UR" name="my_ur_adherent" domain="[('current_user_ur_id', '=', 'ur_id'), ('parent_id.membership_status', '=', 'member')]"/>
<separator/>
<filter string="Date d'ouverture" name="date_open_facility" date="date_open_facility"/>
<filter string="Date de fermeture" name="date_close_facility" date="date_close_facility"/>
<separator/>
<filter string="Établissements fermés" name="facility_closed" domain="[('is_facility_closed','=',True)]"/>
<filter string="Établissements ouverts" name="facility_open" domain="[('is_facility_closed','=',False)]"/>
<filter string="Archivés" name="inactive" domain="[('active','=',False)]"/>
<separator/>
<filter string="Mes Activités" name="activities_my" domain="[('activity_ids.user_id', '=', uid)]"/>
<separator/>
<group expand="0" name="group_by" string="Group By">
<filter name="group_company" string="Structure" context="{'group_by': 'parent_id'}"/>
<filter name="group_city" string="Ville" context="{'group_by': 'city'}"/>
<filter name="group_departement" string="Département" context="{'group_by': 'zip_departement'}"/>
<filter name="group_country" string="Pays" context="{'group_by': 'country_id'}"/>
</group>
</search>
</field>
</record>
<!-- ****************************** <!-- ******************************
*** Action *** Action
****************************** --> ****************************** -->
<!-- Organismes Action --> <!-- Organismes Action -->
<record model="ir.actions.act_window" id="scop_facility_act"> <record model="ir.actions.act_window" id="scop_facility_act">
<field name="name">Etablissements secondaires</field> <field name="name">Etablissements</field>
<field name="res_model">res.partner</field> <field name="res_model">res.partner</field>
<field name="view_mode">tree,form,activity,pivot,graph</field> <field name="view_mode">tree,form,activity,pivot,graph</field>
<field <field
name="search_view_id" name="search_view_id"
ref="cgscop_partner.scop_partner_view_search" ref="scop_partner_facility_view_search"
/> />
<field <field
name="domain" name="domain"
......
# © 2019 Le Filament (<http://www.le-filament.com>)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
from . import scop_deces_wizard
# © 2019 Le Filament (<http://www.le-filament.com>)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
from odoo import models
class ScopDecesWizard(models.TransientModel):
_inherit = "scop.deces.wizard"
def deces_action(self):
super().deces_action()
partner_id = self.env["res.partner"].browse(self.partner_id)
partner_id.facility_ids.update({"date_close_facility": self.end})
<?xml version="1.0" encoding="UTF-8" ?>
<odoo>
<data>
<!-- WIZARD FORM -->
<record id="scop_deces_wizard_view_form_inherit" model="ir.ui.view">
<field name="name">scop.deces.wizard.form.inherit</field>
<field name="model">scop.deces.wizard</field>
<field name="inherit_id" ref="cgscop_partner.scop_deces_wizard_view_form" />
<field name="arch" type="xml">
<xpath expr="//ul" position="inside">
<li>fermeture des établissements secondaires</li>
</xpath>
</field>
</record>
</data>
</odoo>
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