Jump to
↵select↑↓navigateescclose

Avunu repair addons

Odoo 18.0 modules for the Repairs app: configurable stages, customer vehicles from Fleet, service lines on templates and quotations, a work timer on the repair order, and parts taken from purchase orders.

On this page

Odoo 18.0 modules for the Repairs app: configurable stages, customer vehicles from Fleet, service lines on templates and quotations, a work timer on the repair order, and parts taken from purchase orders. They are built and maintained by Avunu LLC and published for anyone to use. They extend Odoo's core repair module and the modules in OCA/repair.

Modules

Workflow and vehicles

ModuleWhat it doesLicence
repair_stageConfigurable kanban stages for repair orders, each tied to a core repair status, with drag-and-drop that runs the real status change (Confirm, Start Repair, End Repair); an open order can also be moved back to an earlier stageAGPL-3.0-or-later
repair_fleet_vehicleLinks a repair order to the customer's vehicle in Fleet: odometer reading logged to the vehicle's history on confirmation, a customer concern page, search by plate or VIN, a Repairs button on each vehicle, and the vehicle carried onto the quotation and invoice and printed on all three documentsAGPL-3.0-or-later

Installing repair_fleet_vehicle widens Fleet officers' access. Core Fleet limits them to the vehicles they drive, which suits company cars but not a shop's customer vehicles, so the module adds rules that let officers reach every vehicle, odometer reading and service log; their access rights and the multi-company rules still apply.

Services and time

OCA repair_service adds service lines to repair orders so they can be added to the sale order, and OCA repair_timesheet links timesheet lines to a repair order. These modules build on them.

ModuleWhat it doesLicence
repair_order_template_serviceLets OCA repair_order_template templates carry service lines as well as parts, so a template can pre-fill a diagnostic fee or book-time labour; installs itself when repair_order_template and repair_service are both installedAGPL-3.0-or-later
repair_service_so_syncKeeps service lines in step with the sale order after Create Quotation, as core Odoo does for parts: new services add a line, changes update it, and deleting one zeroes its line's quantity; installs itself with repair_serviceAGPL-3.0-or-later
repair_timesheet_time_controlStarts and stops the work timer from the repair order itself, logging to its Timesheets tab against a project set once per company; joins repair_timesheet to the timer from OCA project_timesheet_time_controlAGPL-3.0-or-later

Parts

ModuleWhat it doesLicence
repair_purchase_order_partsAdds every part on a purchase order to an existing repair order in one click, from the repair order or from the purchase order or its receipt, so a repair order can be built before its parts are on hand; links the two through Odoo's own Purchases and Repair Orders smart buttons, however the purchase order was createdAGPL-3.0-or-later

Branches

develop is the default branch and where pull requests go. Its code targets Odoo 18.0, the series named in .odoo-series. 18.0 follows develop automatically (a workflow fast-forwards it after every push) and is the branch to install or pin. When a newer Odoo series is maintained, it gets its own branch (19.0, …) and changes flow up to it from develop.

Install

Requires Odoo 18.0 and a PostgreSQL database. Pick the module or modules you want; each pulls in the modules it depends on (see below), and those must be on your addons_path first.

With a plain Odoo checkout, clone this repository on its 18.0 branch and add it to the addons path:

git clone --branch 18.0 https://github.com/Avunu/repair-addons.git
odoo-bin --addons-path=odoo/addons,/path/to/repair-addons,<your other addons paths> \
  -d <database> -i <module> --stop-after-init

With odoo-nix, add the repository from the dev shell. odoo module add accepts an owner/repo and a branch, adds it as a submodule, and the addons path is regenerated from the folders present (run direnv reload afterwards):

odoo module add Avunu/repair-addons 18.0

Add the OCA repositories your modules need the same way, for example odoo module add OCA/repair 18.0.

Dependencies

Each module's __manifest__.py is the source of truth. Besides Odoo core modules (repair, purchase, purchase_repair), the modules depend on the following. The OCA repositories listed are the 18.0 branches; clone the ones your chosen modules need.

ModuleNeeds from OCA or othersPython packages
repair_stagenone beyond corenone
repair_fleet_vehiclefleet_vehicle_ownership (OCA/fleet)none
repair_order_template_servicerepair_order_template and repair_service (OCA/repair)none
repair_service_so_syncrepair_service (OCA/repair)none
repair_timesheet_time_controlrepair_timesheet and base_repair_config (OCA/repair), project_timesheet_time_control (OCA/project)none
repair_purchase_order_partsnone beyond corenone

repair_timesheet_time_control also works with modules it does not require: with hr_timesheet_begin_end and hr_timesheet_time_control_begin_end (OCA/timesheet) installed, stopped timers show clock-in and clock-out hours, and with repair_fleet_vehicle installed, the timer's prefilled description names the vehicle.

Development

The repository carries its own development environment, built by odoo-nix in addons mode. OCB and the repositories these modules depend on are flake inputs pinned in flake.lock, and the Python environment is locked in nix/. You need Nix with flakes, and optionally direnv.

git clone https://github.com/Avunu/repair-addons.git && cd repair-addons
direnv allow                  # or: nix develop --no-pure-eval
devenv up                     # PostgreSQL, Odoo and Mailpit
odoo db provision             # a database with every module here installed
odoo test repair_fleet_vehicle

After nix flake update, or when a module gains a depends or a Python requirement, run odoo project relock and commit flake.lock and nix/. A new dependency on another repository also needs its input and an externalSources entry in flake.nix. See odoo-nix's A repository of addons.

Tests

Odoo runs a module's tests when you install or update it with --test-enable. Select a module's tests with a --test-tags filter and use a throwaway database:

odoo-bin -c odoo.conf -d <testdb> -i <module> \
  --test-enable --test-tags /<module> --stop-after-init

Every module has automated tests. repair_stage also includes a browser tour of the repairs board (dragging cards between stages) that runs after install; Odoo skips it when it cannot find a Chrome or Chromium browser.

Licence

Every module is licensed under the GNU Affero General Public License v3.0 or later. The licence of each module is also stated in its __manifest__.py (AGPL-3, Odoo's identifier for version 3). No module vendors third-party code.

Provenance

These modules were first developed in a private Avunu project and imported here.