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 (13)
......@@ -29,6 +29,7 @@
"data/ir_attactment_data.xml",
"data/custom_paper_format_views.xml",
"data/contract_line_qty_formula_data.xml",
"views/contract_views.xml",
"views/selfconsumption_views.xml",
"views/supply_point_views.xml",
"views/res_partner_views.xml",
......@@ -38,6 +39,7 @@
"wizards/distribution_table_import_wizard_views.xml",
"wizards/contract_generation_wizard_views.xml",
"wizards/define_invoicing_mode_wizard_view.xml",
"wizards/invoicing_wizard_views.xml",
"reports/selfconsumption_reports.xml",
],
}
......@@ -14,3 +14,14 @@ class Contract(models.Model):
string="Energy Project",
related="supply_point_assignation_id.distribution_table_id.selfconsumption_project_id.project_id",
)
code = fields.Char(related="supply_point_assignation_id.supply_point_id.code")
supply_point_name = fields.Char(
related="supply_point_assignation_id.supply_point_id.name"
)
class ContractRecurrencyMixin(models.AbstractModel):
_inherit = "contract.recurrency.mixin"
next_period_date_start = fields.Date(store=True)
next_period_date_end = fields.Date(store=True)
......@@ -125,10 +125,18 @@ class Selfconsumption(models.Model):
return {
"type": "ir.actions.act_window",
"name": "Contracts",
"view_mode": "tree,form",
"views": [
[self.env.ref("energy_selfconsumption.contract_tree_view").id, "tree"],
[False, "form"],
],
"res_model": "contract.contract",
"domain": [("project_id", "=", self.id)],
"context": {"create": True, "default_project_id": self.id},
"context": {
"create": True,
"default_project_id": self.id,
"search_default_filter_next_period_date_start": True,
"search_default_filter_next_period_date_end": True,
},
}
def distribution_table_state(self, actual_state, new_state):
......
......@@ -12,3 +12,4 @@ access_energy_selfconsumption_distribution_table_import_wizard_admin,energy_self
access_energy_selfconsumption_contract_generation_wizard_admin,energy_selfconsumption.contract_generation.wizard.admin,model_energy_selfconsumption_contract_generation_wizard,energy_project.group_admin,1,1,1,1
accces_energy_selfconsumption_coefficient_report,energy_selfconsumption.coefficient_report.admin,model_energy_selfconsumption_coefficient_report,energy_project.group_admin,1,1,1,1
access_energy_selfconsumption_define_invoicing_mode_wizard_admin,energy_selfconsumption.define_invoicing_mode.wizard.admin,model_energy_selfconsumption_define_invoicing_mode_wizard,energy_project.group_admin,1,1,1,1
access_energy_selfconsumption_invoicing_energy_delivered_wizard_admin,energy_selfconsumption.invoicing_energy_delivered.wizard.admin,model_energy_selfconsumption_invoicing_energy_delivered_wizard,energy_project.group_admin,1,1,1,1
<?xml version="1.0" encoding="utf-8" ?>
<odoo>
<data>
<record id="contract_tree_view" model="ir.ui.view">
<field name="name">energy_selfconsumption.contract.tree</field>
<field name="model">contract.contract</field>
<field name="arch" type="xml">
<tree string="Contracts">
<field name="partner_id" />
<field name="supply_point_name" />
<field name="code" />
<field name="next_period_date_start" />
<field name="next_period_date_end" />
</tree>
</field>
</record>
<record id="contract_search_view" model="ir.ui.view">
<field name="name">energy_selfconsumption.contract.search</field>
<field name="model">contract.contract</field>
<field name="inherit_id" ref="contract.contract_contract_search_view" />
<field name="arch" type="xml">
<xpath expr="/search" position="inside">
<group expand="1" string="Group By">
<filter
string="Next Period Date Start"
name="filter_next_period_date_start"
domain="[]"
context="{'group_by':'next_period_date_start'}"
/>
<filter
string="Next Period Date End"
name="filter_next_period_date_end"
domain="[]"
context="{'group_by':'next_period_date_end'}"
/>
</group>
</xpath>
</field>
</record>
</data>
</odoo>
......@@ -2,3 +2,4 @@ from . import selfconsumption_import_wizard
from . import distribution_table_import_wizard
from . import contract_generation_wizard
from . import define_invoicing_mode_wizard
from . import invoicing_wizard
from odoo import _, api, fields, models
from odoo.exceptions import ValidationError
class InvoicingWizard(models.TransientModel):
_name = "energy_selfconsumption.invoicing.wizard"
power = fields.Float(string="Total Energy Generated (kWh)")
contract_ids = fields.Many2many("contract.contract")
@api.constrains("contract_ids")
def constraint_contract_ids(self):
for record in self:
contract_list = record.contract_ids
all_equal_period = all(
element.next_period_date_start
== contract_list[0].next_period_date_start
and element.next_period_date_end
== contract_list[0].next_period_date_end
for element in contract_list
)
if not all_equal_period:
raise ValidationError(
_(
"""
Select only contracts with the same period of invoicing.
Make sure that all the selected contracts have the same next period start and end.
Next period start: {next_period_date_start}
Next period end: {next_period_date_end}"""
).format(
next_period_date_start=contract_list[0].next_period_date_start,
next_period_date_end=contract_list[0].next_period_date_end,
)
)
def generate_invoices(self):
return self.with_context(
{"energy_delivered": self.power}
).contract_ids._recurring_create_invoice()
<?xml version="1.0" encoding="utf-8" ?>
<odoo>
<data>
<record id="invoicing_wizard_form_view" model="ir.ui.view">
<field name="name">energy_selfconsumption.invoicing_wizard.form
</field>
<field name="model">energy_selfconsumption.invoicing.wizard</field>
<field name="arch" type="xml">
<form string="Invoicing Energy Delivered">
<sheet>
<group>
<field name="power" />
<field name="contract_ids" />
</group>
</sheet>
<footer>
<button type="object" name="generate_invoices">Generate</button>
</footer>
</form>
</field>
</record>
<record id="invoicing_wizard_act_window" model="ir.actions.act_window">
<field name="name">Invoice Energy Delivered</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">energy_selfconsumption.invoicing.wizard</field>
<field name="binding_model_id" ref="contract.model_contract_contract" />
<field name="binding_type">action</field>
<field name="binding_view_types">list,form</field>
<field name="groups_id" eval="[(4,ref('energy_project.group_admin'))]" />
<field name="view_mode">form</field>
<field name="target">new</field>
<field name="context">{'default_contract_ids': active_ids}</field>
</record>
</data>
</odoo>