Skip to content
Snippets Groups Projects
Commit dfd67009 authored by daniquilez's avatar daniquilez
Browse files

[IMP] :sparkles: Introducing active monitoring members formula

parent e06b4777
No related branches found
No related tags found
2 merge requests!504Release 2025-03-11,!502Refactor module energy communities service invoicing
<odoo> <odoo>
<data> <data>
<record <record
id="community_members_formula" id="active_community_members_formula"
model="contract.line.qty.formula" model="contract.line.qty.formula"
> >
<field name="name">Community members</field> <field name="name">Active community members</field>
<field name="code"> <field name="code">
result = env['cooperative.membership'].sudo().search_count([ result = env['cooperative.membership'].sudo().search_count([
('company_id','=',contract.community_company_id.id), ('company_id','=',contract.community_company_id.id),
...@@ -13,5 +13,15 @@ result = env['cooperative.membership'].sudo().search_count([ ...@@ -13,5 +13,15 @@ result = env['cooperative.membership'].sudo().search_count([
</field> </field>
<field name="company_id" eval="ref('base.main_company')" /> <field name="company_id" eval="ref('base.main_company')" />
</record> </record>
<record
id="active_monitoring_members_formula"
model="contract.line.qty.formula"
>
<field name="name">Active monitoring members</field>
<field name="code">
result = contract.get_active_monitoring_members()
</field>
<field name="company_id" eval="ref('base.main_company')" />
</record>
</data> </data>
</odoo> </odoo>
from collections import namedtuple
from datetime import datetime from datetime import datetime
from odoo import _, api, fields, models from odoo import _, api, fields, models
...@@ -263,6 +264,33 @@ class ContractContract(models.Model): ...@@ -263,6 +264,33 @@ class ContractContract(models.Model):
self.env, self.partner_id, self.community_company_id, self self.env, self.partner_id, self.community_company_id, self
) )
def get_active_monitoring_members(self):
QueryResult = namedtuple("QueryResult", ["total"])
QUERY = """
select count(energy_selfconsumption_supply_point.code) from energy_project_project
inner join energy_selfconsumption_selfconsumption on
energy_selfconsumption_selfconsumption.project_id = energy_project_project.id
inner join energy_selfconsumption_distribution_table on
energy_selfconsumption_distribution_table.selfconsumption_project_id = energy_selfconsumption_selfconsumption.id
inner join energy_selfconsumption_supply_point_assignation on
energy_selfconsumption_supply_point_assignation.distribution_table_id = energy_selfconsumption_distribution_table.id
inner join energy_selfconsumption_supply_point on
energy_selfconsumption_supply_point.id = energy_selfconsumption_supply_point_assignation.supply_point_id
inner join energy_project_service_contract on
energy_project_service_contract.project_id= energy_project_project.id
inner join energy_project_provider on energy_project_service_contract.provider_id=energy_project_provider.id
where
energy_project_project.company_id={current_company_id} and
energy_selfconsumption_distribution_table.state = 'active' and
energy_project_provider.name LIKE '{arkenova_like}';
""".format(
current_company_id=int(self.community_company_id.id),
arkenova_like="%Arkenova%",
)
self.env.cr.execute(QUERY)
members = QueryResult._make(self.env.cr.fetchone())
return members.total
def set_close_status_type_by_date(self): def set_close_status_type_by_date(self):
if self.date_end.strftime("%Y-%m-%d") <= datetime.now().strftime("%Y-%m-%d"): if self.date_end.strftime("%Y-%m-%d") <= datetime.now().strftime("%Y-%m-%d"):
self.write({"status": "closed"}) self.write({"status": "closed"})
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment