Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • coopdevs/comunitats-energetiques/odoo-ce
1 result
Show changes
Commits on Source (15)
from odoo import _, fields, models
from odoo import _, api, fields, models
from odoo.exceptions import ValidationError
class Inscription(models.Model):
......@@ -30,3 +31,30 @@ class Inscription(models.Model):
string="Partner",
)
effective_date = fields.Date(required=True)
def has_matching_supply_assignations(self):
matching_tables = self.project_id.selfconsumption_id.distribution_table_ids.filtered(
lambda table: table.state in ('validated', 'process', 'active')
)
matching_assignations = matching_tables.mapped('supply_point_assignation_ids').filtered(
lambda assignation: assignation.supply_point_id.partner_id == self.partner_id
)
return matching_assignations
def get_matching_supply_assignations_to_remove(self):
supply_point_assignations = self.env['energy_selfconsumption.supply_point_assignation'].search([
('supply_point_id.partner_id', '=', self.partner_id.id),
('selfconsumption_project_id', '=', self.project_id.id),
('distribution_table_id.state', '=', 'draft')
])
return supply_point_assignations
def unlink(self):
matching_assignations = self.has_matching_supply_assignations()
if len(matching_assignations) > 0:
table_states = ', '.join(matching_assignations.distribution_table_id.mapped('state'))
raise ValidationError(_("The inscription cannot be deleted. It is related to a distribution table with state: {table_state}").format(table_state=table_states))
supply_point_assignations = self.get_matching_supply_assignations_to_remove()
if supply_point_assignations:
supply_point_assignations.unlink()
return super(Inscription, self).unlink()
......@@ -3,3 +3,4 @@ from . import supply_point
from . import partner
from . import distribution_table
from . import supply_point_assignation
from . import project
from odoo import _, api, fields, models
from odoo.exceptions import ValidationError
STATE_VALUES = [
("draft", _("Draft")),
("validated", _("Validated")),
......@@ -48,12 +49,16 @@ class DistributionTable(models.Model):
@api.model
def create(self, vals):
vals["name"] = self.env.ref(
"energy_selfconsumption.distribution_table_sequence", False
).next_by_id()
return super().create(vals)
vals['name'] = self.env.ref('energy_selfconsumption.distribution_table_sequence', False).next_by_id()
return super(DistributionTable, self).create(vals)
@api.onchange("selfconsumption_project_id")
@api.constrains('supply_point_assignation_ids')
def _supply_point_constrain(self):
for record in self:
if record.state in ('validated', 'process', 'active'):
raise ValidationError(_("The supply point can't be removed because the distribution table state is {table_state}").format(table_state=record.state))
@api.onchange('selfconsumption_project_id')
def _onchange_selfconsumption_project_id(self):
self.supply_point_assignation_ids = False
......
......@@ -6,9 +6,14 @@ class ResPartner(models.Model):
def _compute_supply_point_count(self):
for record in self:
record.supply_point_count = len(record.supply_ids)
record.supply_point_count = len(
set(record.supply_ids + record.owner_supply_ids)
)
supply_ids = fields.One2many(
"energy_selfconsumption.supply_point", "partner_id", readonly=True
)
owner_supply_ids = fields.One2many(
"energy_selfconsumption.supply_point", "owner_id", readonly=True
)
supply_point_count = fields.Integer(compute=_compute_supply_point_count)
......@@ -20,10 +25,11 @@ class ResPartner(models.Model):
"name": "Supply Points",
"view_mode": "tree,form",
"res_model": "energy_selfconsumption.supply_point",
"domain": [("owner_id", "=", self.id)],
"domain": ["|", ("partner_id", "=", self.id), ("owner_id", "=", self.id)],
"context": {
"create": True,
"default_owner_id": self.id,
"default_partner_id": self.id,
"default_country_id": self.env.ref("base.es").id,
},
}
from odoo import fields, models
class EnergyProject(models.Model):
_inherit = "energy_project.project"
selfconsumption_id = fields.One2many(
"energy_selfconsumption.selfconsumption", "project_id"
)
......@@ -5,7 +5,7 @@
<field name="name">Owners</field>
<field name="res_model">res.partner</field>
<field name="view_mode">kanban,tree,form</field>
<field name="domain">[('supply_ids','!=', False)]</field>
<field name="domain">[('owner_supply_ids','!=', False)]</field>
<field name="context">{'create':False}</field>
<field name="help" type="html">
<p class="oe_view_nocontent_create">
......@@ -33,7 +33,6 @@
type="object"
name="get_supply_points"
icon="fa-lightbulb-o"
context="{'default_partner_id': id, 'default_owner_id': id}"
>
<field
string="Supply Points"
......