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
Aucune branche associée trouvée
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).
from . import models
from . import models, wizard
......@@ -10,6 +10,9 @@
"cgscop_partner",
],
"data": [
# wizard
"wizard/scop_deces_wizard.xml",
# views
"views/assets.xml",
"views/res_partner.xml",
],
......
......@@ -11,11 +11,10 @@ class SecondaryFacility(models.Model):
selection_add=[("facility", "Etablissement")],
ondelete={"resource": "set default"}
)
facility_ids = fields.One2many(
"res.partner",
"parent_id",
string="Etablissements Secondaires",
string="Etablissements",
domain=[("active", "=", True), ("type", "=", "facility")],
)
other_child_ids = fields.One2many(
......@@ -28,6 +27,36 @@ class SecondaryFacility(models.Model):
("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
......
......@@ -13,7 +13,30 @@
<field name="name">cooperative.facility.form</field>
<field name="model">res.partner</field>
<field name="inherit_id" ref="cgscop_partner.scop_contact_view_form" />
<field name="priority">100</field>
<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">
<group
name="facility_info"
......@@ -29,18 +52,6 @@
options="{'no_open': True, 'no_create': True}"
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
name="naf_id"
options='{"no_create": True, "no_open": True}'
......@@ -83,7 +94,7 @@
<field name="naf_id" />
</xpath>
<page name="scop_contacts" position="inside">
<label for="facility_ids" string="Etablissements Secondaires" />
<label for="facility_ids" string="Etablissements" />
<p>
<button
name="add_facility"
......@@ -173,7 +184,7 @@
>
<attribute
name="attrs"
eval="{'invisible': [('company_name', '!=', False),('company_name', '!=', '')]}"
eval="{'invisible': [('company_name', '!=', False),('company_name', '!=', '')], 'required': [('type', '=', 'facility')]}"
/>
</xpath>
</field>
......@@ -182,14 +193,12 @@
<!-- ******************************
*** Custom Views
****************************** -->
<!--
CG Scop Facility View Tree
-->
<!-- Tree -->
<record id="scop_partner_tree_view" model="ir.ui.view">
<field name="name">scop partner tree view</field>
<field name="model">res.partner</field>
<field name="arch" type="xml">
<tree string="Etablissements secondaires">
<tree string="Etablissements">
<field name="display_name" />
<field name="parent_id" string="Etablissement principal" />
<field name="zip" />
......@@ -200,18 +209,54 @@
</field>
</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
****************************** -->
<!-- Organismes Action -->
<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="view_mode">tree,form,activity,pivot,graph</field>
<field
name="search_view_id"
ref="cgscop_partner.scop_partner_view_search"
ref="scop_partner_facility_view_search"
/>
<field
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