Skip to content
Extraits de code Groupes Projets
Valider f75c9b96 rédigé par Hugo Trentesaux's avatar Hugo Trentesaux
Parcourir les fichiers

contrats en portabilité

parent dcbd51bf
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
......@@ -11,12 +11,9 @@ class Contract(models.Model):
name = fields.Char(compute="_compute_name")
date_start = fields.Date("Début du contrat", required=True)
date_end = fields.Date("Fin du contrat")
number = fields.Char("Numéro de contrat", required=True)
# On attend d'avoir des données
# product_id = fields.Many2one("Type de couverture")
type = fields.Char("Type de couverture") # will be computed on product_id
code = fields.Char("Code contrat")
is_portabilite = fields.Boolean("Portabilité")
member_count = fields.Integer("Effectifs adhérents")
maybe_member_count = fields.Integer("Potentiel adhérents")
# relations
partner_id = fields.Many2one(comodel_name="res.partner", required=True)
......@@ -36,7 +33,7 @@ class Contract(models.Model):
# ------------------------------------------------------
def _compute_name(self):
for contract in self:
contract.name = f"{contract.number} - {contract.partner_id.name}"
contract.name = f"{contract.code} - {contract.partner_id.name}"
# ------------------------------------------------------
# Onchange / Constraints
......
......@@ -37,8 +37,9 @@ class ResPartner(models.Model):
readonly=False,
copy=False,
tracking=True,
index=True,
)
num_orga = fields.Char("Numéro orga")
num_orga = fields.Char("Numéro orga", index=True)
social_object = fields.Text("Objet Social")
activity_desc = fields.Text("Description de l'activité")
......@@ -127,10 +128,27 @@ class ResPartner(models.Model):
support_count = fields.Integer(
"Nombre d'événements de gestion", compute="_compute_support_count", store=True
)
# contracts
contract_count = fields.Integer(
"Nombre de contrats", compute="_compute_contract_count", store=True
)
member_count = fields.Integer(
"Effectif adhérent",
compute="_compute_member_count",
store=True,
help="L'effectif adhérent est la somme des effectifs "
"des contrats en cours hors portabilité.",
)
maybe_member_count = fields.Integer(
"Potentiel adhérents",
compute="_compute_maybe_member_count",
store=True,
help="L'effectif potentiel est la différence entre "
"l'effectif communiqué et l'effectif adhérent.",
)
# dates
date_last_support = fields.Date(
"Date du dernier support", compute="_compute_date_last_support", store=True
)
......@@ -176,6 +194,21 @@ class ResPartner(models.Model):
for i in self:
i.contract_count = len(i.contract_ids)
@api.depends("contract_ids", "contract_ids.member_count")
def _compute_member_count(self):
for i in self:
i.member_count = sum(
i.contract_ids.filtered(
lambda c: not c.date_end and not c.is_portabilite
).mapped("member_count")
)
@api.depends("company_size", "member_count")
def _compute_maybe_member_count(self):
for i in self:
if i.company_size and i.member_count:
i.maybe_member_count = i.company_size - i.member_count
@api.depends("support_ids", "support_ids.date")
def _compute_date_last_support(self):
for i in self:
......
......@@ -9,15 +9,20 @@
<field name="arch" type="xml">
<search>
<field name="partner_id" />
<field name="number" />
<field name="code" />
<filter name="date_start" date="date_start" string="Début de contrat" />
<filter name="date_end" date="date_end" string="Fin de contrat" />
<group expand="0" name="group_by" string="Group By">
<filter
name="group_type"
name="filter_portabilite"
string="Portabilité"
domain="[('is_portabilite', '=', False)]"
/>
<filter
name="group_code"
string="Type"
domain="[]"
context="{'group_by' : 'type'}"
context="{'group_by' : 'code'}"
/>
<filter
name="group_partner_id"
......@@ -38,9 +43,9 @@
<form>
<group>
<group>
<field name="number" />
<field name="code" />
<field name="partner_id" />
<field name="type" />
<field name="is_portabilite" />
</group>
<group>
<field name="date_start" />
......@@ -48,7 +53,6 @@
</group>
<group>
<field name="member_count" />
<field name="maybe_member_count" />
</group>
</group>
</form>
......@@ -61,11 +65,10 @@
<field name="model">mucs.contract</field>
<field name="arch" type="xml">
<list>
<field name="number" />
<field name="partner_id" />
<field name="type" />
<field name="code" />
<field name="is_portabilite" />
<field name="member_count" />
<field name="maybe_member_count" />
<field name="date_start" />
<field name="date_end" />
<field name="write_date" optional="hide" />
......
......@@ -101,7 +101,10 @@
name="cooperative_form_id"
invisible="not is_cooperative"
/>
<field name="date_coop"/>
<field
name="date_coop"
invisible="not is_cooperative"
/>
<field name="date_registration"/>
<field name="date_dissolution"/>
</group>
......@@ -131,6 +134,10 @@
<field name="is_member_mutex" />
<field name="type_rma_aid" />
</group>
<group>
<field name="member_count" />
<field name="maybe_member_count" />
</group>
</group>
<separator />
<group>
......@@ -146,12 +153,11 @@
<group string="Contrats">
<field name="contract_ids" nolabel="1">
<list>
<field name="number" />
<field name="type" />
<field name="code" />
<field name="is_portabilite" />
<field name="member_count" />
<field name="maybe_member_count" />
<field name="date_start" optional="hide" />
<field name="date_end" optional="hide" />
<field name="date_start" optional="show" />
<field name="date_end" optional="show" />
<field name="write_date" optional="hide" />
<field name="write_uid" optional="hide" />
</list>
......@@ -411,7 +417,7 @@
<!-- Action -->
<record id="contacts.action_contacts" model="ir.actions.act_window">
<field name="domain">[('is_cooperative', '!=', True)]</field>
<field name="domain">[('is_company', '!=', True)]</field>
</record>
<record id="coop_partner_action" model="ir.actions.act_window">
......@@ -421,7 +427,7 @@
<field name="view_mode">list,pivot,graph,form</field>
<field name="view_id" ref="mucs_coop_partner_tree"/>
<field name="search_view_id" ref="mucs_coop_partner_search" />
<field name="domain">[('is_cooperative', '=', True)]</field>
<field name="domain">[('is_company', '=', True)]</field>
<field name="path">coop</field>
<field name="context">
{
......
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