Skip to content

Commit

Permalink
[MIG] fleet_vehicle_log_fuel: Migration to 16.0
Browse files Browse the repository at this point in the history
TT48096
  • Loading branch information
victoralmau committed Mar 6, 2024
1 parent cebfffa commit 4ae834a
Show file tree
Hide file tree
Showing 15 changed files with 185 additions and 74 deletions.
16 changes: 10 additions & 6 deletions fleet_vehicle_log_fuel/README.rst
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ Fleet Vehicle Log Fuel
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! source digest: sha256:5c2c844dd3f4a8486251e46da663327385b9e7026e9370cc9e62d2bbb7175bdf
!! source digest: sha256:8750066b60c5d2d48c6ec2e0e453ac2897c6fa9eb95641deff8254249e5e3996
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png
Expand All @@ -17,13 +17,13 @@ Fleet Vehicle Log Fuel
:target: http://www.gnu.org/licenses/agpl-3.0-standalone.html
:alt: License: AGPL-3
.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Ffleet-lightgray.png?logo=github
:target: https://github.com/OCA/fleet/tree/15.0/fleet_vehicle_log_fuel
:target: https://github.com/OCA/fleet/tree/16.0/fleet_vehicle_log_fuel
:alt: OCA/fleet
.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
:target: https://translation.odoo-community.org/projects/fleet-15-0/fleet-15-0-fleet_vehicle_log_fuel
:target: https://translation.odoo-community.org/projects/fleet-16-0/fleet-16-0-fleet_vehicle_log_fuel
:alt: Translate me on Weblate
.. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png
:target: https://runboat.odoo-community.org/builds?repo=OCA/fleet&target_branch=15.0
:target: https://runboat.odoo-community.org/builds?repo=OCA/fleet&target_branch=16.0
:alt: Try me on Runboat

|badge1| |badge2| |badge3| |badge4| |badge5|
Expand All @@ -41,7 +41,7 @@ Bug Tracker
Bugs are tracked on `GitHub Issues <https://github.com/OCA/fleet/issues>`_.
In case of trouble, please check there if your issue has already been reported.
If you spotted it first, help us to smash it by providing a detailed and welcomed
`feedback <https://github.com/OCA/fleet/issues/new?body=module:%20fleet_vehicle_log_fuel%0Aversion:%2015.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**>`_.
`feedback <https://github.com/OCA/fleet/issues/new?body=module:%20fleet_vehicle_log_fuel%0Aversion:%2016.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**>`_.

Do not contact contributors directly about support or help with technical issues.

Expand All @@ -58,6 +58,10 @@ Contributors

* Miquel Raïch <miquel.raich@forgeflow.com>

* `Tecnativa <https://www.tecnativa.com>`_:

* Víctor Martínez

Maintainers
~~~~~~~~~~~

Expand All @@ -71,6 +75,6 @@ OCA, or the Odoo Community Association, is a nonprofit organization whose
mission is to support the collaborative development of Odoo features and
promote its widespread use.

This module is part of the `OCA/fleet <https://github.com/OCA/fleet/tree/15.0/fleet_vehicle_log_fuel>`_ project on GitHub.
This module is part of the `OCA/fleet <https://github.com/OCA/fleet/tree/16.0/fleet_vehicle_log_fuel>`_ project on GitHub.

You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.
4 changes: 2 additions & 2 deletions fleet_vehicle_log_fuel/__manifest__.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@
{
"name": "Fleet Vehicle Log Fuel",
"summary": "Add Log Fuels for your vehicles.",
"version": "15.0.2.0.0",
"category": "Human Resources/Fleet",
"version": "16.0.1.0.0",
"category": "Fleet",
"author": "ForgeFlow, Odoo Community Association (OCA)",
"website": "https://github.com/OCA/fleet",
"license": "AGPL-3",
Expand Down
6 changes: 0 additions & 6 deletions fleet_vehicle_log_fuel/i18n/es.po
Original file line number Diff line number Diff line change
Expand Up @@ -472,9 +472,3 @@ msgstr ""
#: model_terms:ir.ui.view,arch_db:fleet_vehicle_log_fuel.fleet_vehicle_view_form
msgid "show the fuel logs for this vehicle"
msgstr "mostrar los registros de combustible para este vehículo"

#~ msgid "SMS Delivery error"
#~ msgstr "Error en la entrega del SMS"

#~ msgid "Followers (Channels)"
#~ msgstr "Seguidores (Canales)"
6 changes: 0 additions & 6 deletions fleet_vehicle_log_fuel/i18n/it.po
Original file line number Diff line number Diff line change
Expand Up @@ -468,9 +468,3 @@ msgstr "Indicare qui ogni altra informazione relativa al servizio completato."
#: model_terms:ir.ui.view,arch_db:fleet_vehicle_log_fuel.fleet_vehicle_view_form
msgid "show the fuel logs for this vehicle"
msgstr "visualizza i registri carburante per questo veicolo"

#~ msgid "SMS Delivery error"
#~ msgstr "Errore consegna SMS"

#~ msgid "Followers (Channels)"
#~ msgstr "Seguito da (canali)"
6 changes: 0 additions & 6 deletions fleet_vehicle_log_fuel/i18n/pt_BR.po
Original file line number Diff line number Diff line change
Expand Up @@ -469,9 +469,3 @@ msgstr ""
#: model_terms:ir.ui.view,arch_db:fleet_vehicle_log_fuel.fleet_vehicle_view_form
msgid "show the fuel logs for this vehicle"
msgstr "mostrar os registros de combustível para este veículo"

#~ msgid "SMS Delivery error"
#~ msgstr "Erro no envio de SMS"

#~ msgid "Followers (Channels)"
#~ msgstr "Seguidores (Canais)"
21 changes: 13 additions & 8 deletions fleet_vehicle_log_fuel/models/fleet_vehicle.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,21 +2,26 @@
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).


from odoo import fields, models
from odoo import api, fields, models


class FleetVehicle(models.Model):
_inherit = "fleet.vehicle"

log_fuels = fields.One2many("fleet.vehicle.log.fuel", "vehicle_id", "Fuel Logs")
fuel_count = fields.Integer(compute="_compute_count_all", string="Fuel Log Count")

def _compute_count_all(self):
super()._compute_count_all()
LogFuel = self.env["fleet.vehicle.log.fuel"]
fuel_count = fields.Integer(compute="_compute_fuel_count", string="Fuel Log Count")

@api.depends("log_fuels")
def _compute_fuel_count(self):
res = self.env["fleet.vehicle.log.fuel"].read_group(
domain=[("vehicle_id", "in", self.ids)],
fields=["vehicle_id"],
groupby=["vehicle_id"],
)
res_dict = {x["vehicle_id"][0]: x["vehicle_id_count"] for x in res}
for record in self:
record.fuel_count = LogFuel.search_count([("vehicle_id", "=", record.id)])
return
record.fuel_count = res_dict.get(record.id, 0)
return res

def action_view_log_fuel(self):
action = self.env["ir.actions.act_window"]._for_xml_id(
Expand Down
44 changes: 19 additions & 25 deletions fleet_vehicle_log_fuel/models/fleet_vehicle_log_fuel.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
# Copyright 2022 ForgeFlow S.L. <https://www.forgeflow.com>
# Copyright 2024 Tecnativa - Víctor Martínez
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).

from odoo import _, api, fields, models
Expand All @@ -24,6 +25,8 @@ class FleetVehicleLogFuel(models.Model):
)
odometer = fields.Float(
compute="_compute_odometer",
store=True,
readonly=False,
inverse="_inverse_odometer",
string="Odometer Value",
help="Odometer measure of the vehicle at the moment of this log",
Expand Down Expand Up @@ -89,36 +92,27 @@ def _onchange_liter_price_amount(self):
):
self.liter = round(amount / price_per_liter, 2)

@api.depends("odometer_id", "odometer_id.value")
def _compute_odometer(self):
self.odometer = 0
for record in self:
if record.odometer_id:
record.odometer = record.odometer_id.value
for record in self.filtered("odometer_id"):
record.odometer = record.odometer_id.value

Check warning on line 98 in fleet_vehicle_log_fuel/models/fleet_vehicle_log_fuel.py

View check run for this annotation

Codecov / codecov/patch

fleet_vehicle_log_fuel/models/fleet_vehicle_log_fuel.py#L98

Added line #L98 was not covered by tests

def _prepare_fleet_vehicle_odometer_vals(self):
return {
"value": self.odometer,
"date": self.date or fields.Date.context_today(self),
"vehicle_id": self.vehicle_id.id,
}

def _inverse_odometer(self):
if any(not x.odometer for x in self):
raise UserError(
_("Emptying the odometer value of a vehicle is not allowed.")
)
for record in self:
if not record.odometer:
raise UserError(
_("Emptying the odometer value of a vehicle is not allowed.")
)
odometer = self.env["fleet.vehicle.odometer"].create(
{
"value": record.odometer,
"date": record.date or fields.Date.context_today(record),
"vehicle_id": record.vehicle_id.id,
}
self.odometer_id = self.env["fleet.vehicle.odometer"].create(
record._prepare_fleet_vehicle_odometer_vals()
)
self.odometer_id = odometer

@api.model_create_multi
def create(self, vals_list):
for data in vals_list:
if "odometer" in data and not data["odometer"]:
# if received value for odometer is 0, then remove it from the
# data as it would result to the creation of an odometer log with 0,
# which is to be avoided
del data["odometer"]
return super().create(vals_list)

@api.depends("vehicle_id")
def _compute_purchaser_id(self):
Expand Down
4 changes: 4 additions & 0 deletions fleet_vehicle_log_fuel/readme/CONTRIBUTORS.rst
Original file line number Diff line number Diff line change
@@ -1 +1,5 @@
* Miquel Raïch <miquel.raich@forgeflow.com>

* `Tecnativa <https://www.tecnativa.com>`_:

* Víctor Martínez
5 changes: 5 additions & 0 deletions fleet_vehicle_log_fuel/security/fleet_security.xml
Original file line number Diff line number Diff line change
Expand Up @@ -16,5 +16,10 @@
<field name="name">Administrator has all rights on vehicle's fuel log</field>
<field name="model_id" ref="model_fleet_vehicle_log_fuel" />
<field name="groups" eval="[(4, ref('fleet.fleet_group_manager'))]" />
<field name="domain_force">[(1, '=', 1)]</field>
<field name="perm_read" eval="True" />
<field name="perm_write" eval="True" />
<field name="perm_create" eval="True" />
<field name="perm_unlink" eval="True" />
</record>
</odoo>
13 changes: 9 additions & 4 deletions fleet_vehicle_log_fuel/static/description/index.html
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
Expand Down Expand Up @@ -366,9 +367,9 @@ <h1 class="title">Fleet Vehicle Log Fuel</h1>
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! source digest: sha256:5c2c844dd3f4a8486251e46da663327385b9e7026e9370cc9e62d2bbb7175bdf
!! source digest: sha256:8750066b60c5d2d48c6ec2e0e453ac2897c6fa9eb95641deff8254249e5e3996
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
<p><a class="reference external image-reference" href="https://odoo-community.org/page/development-status"><img alt="Beta" src="https://img.shields.io/badge/maturity-Beta-yellow.png" /></a> <a class="reference external image-reference" href="http://www.gnu.org/licenses/agpl-3.0-standalone.html"><img alt="License: AGPL-3" src="https://img.shields.io/badge/licence-AGPL--3-blue.png" /></a> <a class="reference external image-reference" href="https://github.com/OCA/fleet/tree/15.0/fleet_vehicle_log_fuel"><img alt="OCA/fleet" src="https://img.shields.io/badge/github-OCA%2Ffleet-lightgray.png?logo=github" /></a> <a class="reference external image-reference" href="https://translation.odoo-community.org/projects/fleet-15-0/fleet-15-0-fleet_vehicle_log_fuel"><img alt="Translate me on Weblate" src="https://img.shields.io/badge/weblate-Translate%20me-F47D42.png" /></a> <a class="reference external image-reference" href="https://runboat.odoo-community.org/builds?repo=OCA/fleet&amp;target_branch=15.0"><img alt="Try me on Runboat" src="https://img.shields.io/badge/runboat-Try%20me-875A7B.png" /></a></p>
<p><a class="reference external image-reference" href="https://odoo-community.org/page/development-status"><img alt="Beta" src="https://img.shields.io/badge/maturity-Beta-yellow.png" /></a> <a class="reference external image-reference" href="http://www.gnu.org/licenses/agpl-3.0-standalone.html"><img alt="License: AGPL-3" src="https://img.shields.io/badge/licence-AGPL--3-blue.png" /></a> <a class="reference external image-reference" href="https://github.com/OCA/fleet/tree/16.0/fleet_vehicle_log_fuel"><img alt="OCA/fleet" src="https://img.shields.io/badge/github-OCA%2Ffleet-lightgray.png?logo=github" /></a> <a class="reference external image-reference" href="https://translation.odoo-community.org/projects/fleet-16-0/fleet-16-0-fleet_vehicle_log_fuel"><img alt="Translate me on Weblate" src="https://img.shields.io/badge/weblate-Translate%20me-F47D42.png" /></a> <a class="reference external image-reference" href="https://runboat.odoo-community.org/builds?repo=OCA/fleet&amp;target_branch=16.0"><img alt="Try me on Runboat" src="https://img.shields.io/badge/runboat-Try%20me-875A7B.png" /></a></p>
<p>This module adds fuel logs in a similar way as services.</p>
<p><strong>Table of contents</strong></p>
<div class="contents local topic" id="contents">
Expand All @@ -387,7 +388,7 @@ <h1><a class="toc-backref" href="#toc-entry-1">Bug Tracker</a></h1>
<p>Bugs are tracked on <a class="reference external" href="https://github.com/OCA/fleet/issues">GitHub Issues</a>.
In case of trouble, please check there if your issue has already been reported.
If you spotted it first, help us to smash it by providing a detailed and welcomed
<a class="reference external" href="https://github.com/OCA/fleet/issues/new?body=module:%20fleet_vehicle_log_fuel%0Aversion:%2015.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**">feedback</a>.</p>
<a class="reference external" href="https://github.com/OCA/fleet/issues/new?body=module:%20fleet_vehicle_log_fuel%0Aversion:%2016.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**">feedback</a>.</p>
<p>Do not contact contributors directly about support or help with technical issues.</p>
</div>
<div class="section" id="credits">
Expand All @@ -402,6 +403,10 @@ <h2><a class="toc-backref" href="#toc-entry-3">Authors</a></h2>
<h2><a class="toc-backref" href="#toc-entry-4">Contributors</a></h2>
<ul class="simple">
<li>Miquel Raïch &lt;<a class="reference external" href="mailto:miquel.raich&#64;forgeflow.com">miquel.raich&#64;forgeflow.com</a>&gt;</li>
<li><a class="reference external" href="https://www.tecnativa.com">Tecnativa</a>:<ul>
<li>Víctor Martínez</li>
</ul>
</li>
</ul>
</div>
<div class="section" id="maintainers">
Expand All @@ -411,7 +416,7 @@ <h2><a class="toc-backref" href="#toc-entry-5">Maintainers</a></h2>
<p>OCA, or the Odoo Community Association, is a nonprofit organization whose
mission is to support the collaborative development of Odoo features and
promote its widespread use.</p>
<p>This module is part of the <a class="reference external" href="https://github.com/OCA/fleet/tree/15.0/fleet_vehicle_log_fuel">OCA/fleet</a> project on GitHub.</p>
<p>This module is part of the <a class="reference external" href="https://github.com/OCA/fleet/tree/16.0/fleet_vehicle_log_fuel">OCA/fleet</a> project on GitHub.</p>
<p>You are welcome to contribute. To learn how please visit <a class="reference external" href="https://odoo-community.org/page/Contribute">https://odoo-community.org/page/Contribute</a>.</p>
</div>
</div>
Expand Down
1 change: 1 addition & 0 deletions fleet_vehicle_log_fuel/tests/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
from . import test_fleet_vehicle_log_fuel
24 changes: 24 additions & 0 deletions fleet_vehicle_log_fuel/tests/common.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
# Copyright 2024 Tecnativa - Víctor Martínez
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl
from odoo.addons.base.tests.common import BaseCommon


class TestFleetVehicleLogFuelBase(BaseCommon):
@classmethod
def setUpClass(cls):
super().setUpClass()
cls.driver = cls.env["res.partner"].create({"name": "Test Driver"})
cls.brand = cls.env["fleet.vehicle.model.brand"].create({"name": "Test brand"})
cls.model = cls.env["fleet.vehicle.model"].create(
{
"name": "Test model",
"brand_id": cls.brand.id,
}
)
cls.vehicle = cls.env["fleet.vehicle"].create(
{
"model_id": cls.model.id,
"driver_id": cls.driver.id,
"license_plate": "TEST123",
}
)
92 changes: 92 additions & 0 deletions fleet_vehicle_log_fuel/tests/test_fleet_vehicle_log_fuel.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,92 @@
# Copyright 2024 Tecnativa - Víctor Martínez
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl
from odoo.exceptions import UserError
from odoo.tests import Form

from .common import TestFleetVehicleLogFuelBase


class TestFleetVehicleLogFuelMisc(TestFleetVehicleLogFuelBase):
def test_fleet_vehicle_log_fuel_process(self):
fuel_form = Form(
self.env["fleet.vehicle.log.fuel"].with_context(
default_vehicle_id=self.vehicle.id
)
)
with self.assertRaises(UserError):
fuel_form.odometer = 0
fuel_form.save()
fuel_form.odometer = 5000
fuel = fuel_form.save()
self.assertTrue(fuel.odometer_id)
self.assertEqual(self.vehicle.odometer, 5000)
self.assertEqual(self.vehicle.fuel_count, 1)
res = self.vehicle.action_view_log_fuel()
items = self.env[res["res_model"]].search(res["domain"])
self.assertIn(fuel, items)

def test_fleet_vehicle_log_fuel_onchange(self):
# Check amount
fuel_form_1 = Form(
self.env["fleet.vehicle.log.fuel"].with_context(
default_vehicle_id=self.vehicle.id
)
)
fuel_form_1.liter = 50
fuel_form_1.price_per_liter = 1.5
self.assertEqual(fuel_form_1.amount, 75)
# Check price_per_liter
fuel_form_2 = Form(
self.env["fleet.vehicle.log.fuel"].with_context(
default_vehicle_id=self.vehicle.id
)
)
fuel_form_2.amount = 75
fuel_form_2.liter = 50
self.assertEqual(fuel_form_2.price_per_liter, 1.5)
# Check liter
fuel_form_2 = Form(
self.env["fleet.vehicle.log.fuel"].with_context(
default_vehicle_id=self.vehicle.id
)
)
fuel_form_2.amount = 75
fuel_form_2.price_per_liter = 1.5
self.assertEqual(fuel_form_2.liter, 50)


class TestFleetVehicleLogFuelReport(TestFleetVehicleLogFuelBase):
@classmethod
def setUpClass(cls):
super().setUpClass()
# Create log fuel + log service to check report after
cls.service_type = cls.env["fleet.service.type"].create(
{"name": "Test fuel", "category": "fuel"}
)
cls.env["fleet.vehicle.log.fuel"].create(
{
"vehicle_id": cls.vehicle.id,
"service_type_id": cls.service_type.id,
"date": "2024-01-01",
"amount": 75,
"price_per_liter": 1.5,
"liter": 50,
}
)
cls.env["fleet.vehicle.log.services"].create(
{
"vehicle_id": cls.vehicle.id,
"service_type_id": cls.service_type.id,
"amount": 75,
"date": "2024-01-01",
}
)

def test_fleet_vehicle_cost_report(self):
items = self.env["fleet.vehicle.cost.report"].search(
[("vehicle_id", "=", self.vehicle.id), ("date_start", "=", "2024-01-01")]
)
self.assertIn("fuel", items.mapped("cost_type"))
self.assertEqual(
sum(items.filtered(lambda x: x.cost_type == "fuel").mapped("cost")), 75
)
Loading

0 comments on commit 4ae834a

Please sign in to comment.