mirror of
https://gitlab.com/hibou-io/hibou-odoo/suite.git
synced 2025-01-20 12:37:31 +02:00
Merge branch 'mig/13.0/maintenance_equipment_charge' into '13.0'
mig/13.0/maintenance_equipment_charge into 13.0 See merge request hibou-io/hibou-odoo/suite!204
This commit is contained in:
42
maintenance_equipment_charge/README.rst
Normal file
42
maintenance_equipment_charge/README.rst
Normal file
@@ -0,0 +1,42 @@
|
||||
************************************
|
||||
Hibou - Maintenance Equipment Charge
|
||||
************************************
|
||||
|
||||
Record related equipment charges, for example fuel charges.
|
||||
|
||||
For more information and add-ons, visit `Hibou.io <https://hibou.io/>`_.
|
||||
|
||||
|
||||
=============
|
||||
Main Features
|
||||
=============
|
||||
|
||||
* New Models: Equipment Charge and Equipment Charge Type
|
||||
* New smart button on the equipment form view for Charges.
|
||||
* Adds Equipment Charge views: form, tree, graph, pivot and calendar.
|
||||
* Adds filters to group equipment charges by: Charge Type, Equipment, Employee and Department.
|
||||
* By default, **Employees** have the ability to create and view **Charges** and **Charge Types**, while **Inventory Managers** have the ability to update and delete them.
|
||||
|
||||
.. image:: https://user-images.githubusercontent.com/15882954/41184422-143b5cc4-6b35-11e8-9dcc-6c16ac31b869.png
|
||||
:alt: 'Equipment Detail'
|
||||
:width: 988
|
||||
:align: left
|
||||
|
||||
.. image:: https://user-images.githubusercontent.com/15882954/41184430-27f2c586-6b35-11e8-94f4-9b4efa1fcfe9.png
|
||||
:alt: 'Equipment Charges Detail'
|
||||
:width: 988
|
||||
:align: left
|
||||
|
||||
.. image:: https://user-images.githubusercontent.com/15882954/41184451-3ee3cc18-6b35-11e8-9488-445538501be8.png
|
||||
:alt: 'Equipment Charge Detail'
|
||||
:width: 988
|
||||
:align: left
|
||||
|
||||
|
||||
=======
|
||||
License
|
||||
=======
|
||||
|
||||
Please see `LICENSE <https://github.com/hibou-io/hibou-odoo-suite/blob/11.0/LICENSE>`_.
|
||||
|
||||
Copyright Hibou Corp. 2018
|
||||
1
maintenance_equipment_charge/__init__.py
Normal file
1
maintenance_equipment_charge/__init__.py
Normal file
@@ -0,0 +1 @@
|
||||
from . import models
|
||||
24
maintenance_equipment_charge/__manifest__.py
Normal file
24
maintenance_equipment_charge/__manifest__.py
Normal file
@@ -0,0 +1,24 @@
|
||||
{
|
||||
'name': 'Equipment Charges',
|
||||
'version': '13.0.1.0.0',
|
||||
'author': 'Hibou Corp. <hello@hibou.io>',
|
||||
'category': 'Human Resources',
|
||||
'summary': 'Record related equipment charges.',
|
||||
'description': """
|
||||
Equipment Charges
|
||||
=================
|
||||
|
||||
Record related equipment charges, for example fuel charges.
|
||||
""",
|
||||
'website': 'https://www.odoo.com/page/manufacturing',
|
||||
'depends': [
|
||||
'hr_maintenance',
|
||||
'stock'
|
||||
],
|
||||
'data': [
|
||||
'security/ir.model.access.csv',
|
||||
'views/maintenance_views.xml',
|
||||
],
|
||||
'installable': True,
|
||||
'auto_install': False,
|
||||
}
|
||||
1
maintenance_equipment_charge/models/__init__.py
Normal file
1
maintenance_equipment_charge/models/__init__.py
Normal file
@@ -0,0 +1 @@
|
||||
from . import maintenance
|
||||
45
maintenance_equipment_charge/models/maintenance.py
Normal file
45
maintenance_equipment_charge/models/maintenance.py
Normal file
@@ -0,0 +1,45 @@
|
||||
from odoo import api, fields, models
|
||||
|
||||
|
||||
class EquipmentChargeType(models.Model):
|
||||
_name = 'maintenance.equipment.charge.type'
|
||||
|
||||
name = fields.Char(string='Charge Type')
|
||||
uom_id = fields.Many2one('uom.uom', string='Charge UOM')
|
||||
|
||||
|
||||
class Equipment(models.Model):
|
||||
_inherit = 'maintenance.equipment'
|
||||
|
||||
charge_ids = fields.One2many('maintenance.equipment.charge', 'equipment_id', 'Charges', copy=False)
|
||||
charge_count = fields.Integer(string='Charges', compute='_compute_charge_count')
|
||||
|
||||
def _compute_charge_count(self):
|
||||
for equipment in self:
|
||||
self.charge_count = len(equipment.charge_ids)
|
||||
|
||||
def action_open_charges(self):
|
||||
self.ensure_one()
|
||||
action = self.env.ref('maintenance_equipment_charge.maintenance_charge_action_reports').read()[0]
|
||||
action['domain'] = [('equipment_id', '=', self.id)]
|
||||
action['context'] = {
|
||||
'default_equipment_id': self.id,
|
||||
'default_employee_id': self.employee_id.id,
|
||||
'default_department_id': self.department_id.id,
|
||||
}
|
||||
return action
|
||||
|
||||
|
||||
class EquipmentCharge(models.Model):
|
||||
_name = 'maintenance.equipment.charge'
|
||||
_order = 'date DESC'
|
||||
|
||||
name = fields.Char(string='Description')
|
||||
date = fields.Date(string='Date', default=fields.Date.today, index=True)
|
||||
equipment_id = fields.Many2one('maintenance.equipment', copy=False)
|
||||
type_id = fields.Many2one('maintenance.equipment.charge.type', string='Type')
|
||||
employee_id = fields.Many2one('hr.employee', string='Employee')
|
||||
department_id = fields.Many2one('hr.department', string='Department')
|
||||
qty = fields.Float(string='Quantity', default=1.0)
|
||||
uom_id = fields.Many2one('uom.uom', related='type_id.uom_id')
|
||||
amount = fields.Float(string='Amount')
|
||||
@@ -0,0 +1,5 @@
|
||||
"id","name","model_id:id","group_id:id","perm_read","perm_write","perm_create","perm_unlink"
|
||||
"manage_maintenance_equipment_charge","manage maintenance.equipment.charge","model_maintenance_equipment_charge","stock.group_stock_manager",1,1,1,1
|
||||
"access_maintenance_equipment_charge","access maintenance.equipment.charge","model_maintenance_equipment_charge","base.group_user",1,0,1,0
|
||||
"manage_maintenance_equipment_charge_type","manage maintenance.equipment.charge.type","model_maintenance_equipment_charge_type","stock.group_stock_manager",1,1,1,1
|
||||
"access_maintenance_equipment_charge_type","access maintenance.equipment.charge.type","model_maintenance_equipment_charge_type","base.group_user",1,0,1,0
|
||||
|
1
maintenance_equipment_charge/tests/__init__.py
Normal file
1
maintenance_equipment_charge/tests/__init__.py
Normal file
@@ -0,0 +1 @@
|
||||
from . import test_maintenance_usage
|
||||
21
maintenance_equipment_charge/tests/test_maintenance_usage.py
Normal file
21
maintenance_equipment_charge/tests/test_maintenance_usage.py
Normal file
@@ -0,0 +1,21 @@
|
||||
from odoo.tests import common
|
||||
|
||||
|
||||
class TestMaintenanceCharge(common.TransactionCase):
|
||||
"""Tests for charges
|
||||
"""
|
||||
|
||||
def test_create(self):
|
||||
test_charge = 21.0
|
||||
equipment = self.env['maintenance.equipment'].create({
|
||||
'name': 'Monitor',
|
||||
})
|
||||
|
||||
self.assertFalse(equipment.charge_ids)
|
||||
self.env['maintenance.equipment.charge'].create({
|
||||
'equipment_id': equipment.id,
|
||||
'name': 'test',
|
||||
'amount': test_charge,
|
||||
})
|
||||
self.assertTrue(equipment.charge_ids)
|
||||
self.assertAlmostEqual(equipment.charge_ids[0].amount, test_charge)
|
||||
183
maintenance_equipment_charge/views/maintenance_views.xml
Normal file
183
maintenance_equipment_charge/views/maintenance_views.xml
Normal file
@@ -0,0 +1,183 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<odoo>
|
||||
<record model="maintenance.equipment.charge.type" id="equipment_charge_other">
|
||||
<field name="name">Other</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.ui.view" id="hr_equipment_view_form_inherited">
|
||||
<field name="name">equipment.form.inherited</field>
|
||||
<field name="model">maintenance.equipment</field>
|
||||
<field name="inherit_id" ref="maintenance.hr_equipment_view_form"/>
|
||||
<field name="arch" type="xml">
|
||||
<xpath expr="//div[@name='button_box']" position="inside">
|
||||
<button name="action_open_charges"
|
||||
type="object"
|
||||
class="oe_stat_button"
|
||||
icon="fa-dollar"
|
||||
help="show the usage charges for equipment" >
|
||||
<field string="Charges" name="charge_count" widget="statinfo"/>
|
||||
</button>
|
||||
</xpath>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<!-- maintenance.equipment.charge : views -->
|
||||
<record id="hr_equipment_charge_view_search" model="ir.ui.view">
|
||||
<field name="name">equipment.charge.search</field>
|
||||
<field name="model">maintenance.equipment.charge</field>
|
||||
<field name="arch" type="xml">
|
||||
<search string="Equipment Charge Search">
|
||||
<field name="equipment_id"/>
|
||||
<field name="employee_id"/>
|
||||
<field name="department_id"/>
|
||||
<field name="type_id"/>
|
||||
<group expand="0" string="Group By">
|
||||
<filter string="Charge Type" name="groupby_type_id" domain="[]" context="{'group_by':'type_id'}"/>
|
||||
<filter string='Equipment' name="groupby_equipment_id" domain="[]" context="{'group_by': 'equipment_id'}"/>
|
||||
<filter string='Employee' name="groupby_employee_id" domain="[]" context="{'group_by': 'employee_id'}"/>
|
||||
<filter string='Department' name="groupby_department_id" domain="[]" context="{'group_by': 'department_id'}"/>
|
||||
</group>
|
||||
</search>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="hr_equipment_charge_view_form" model="ir.ui.view">
|
||||
<field name="name">equipment.charge.form</field>
|
||||
<field name="model">maintenance.equipment.charge</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="Equipment Charge Form">
|
||||
<header/>
|
||||
<sheet>
|
||||
<group>
|
||||
<group>
|
||||
<field name="date"/>
|
||||
<field name="equipment_id"/>
|
||||
<field name="employee_id"/>
|
||||
<field name="department_id"/>
|
||||
</group>
|
||||
<group name="charge_info" string="Charge">
|
||||
<field name="type_id" widget="selection"/>
|
||||
<label for="qty"/>
|
||||
<div class="o_row" name="qty">
|
||||
<field name="qty" nolabel="1"/>
|
||||
<field name="uom_id" nolabel="1" readonly="1"/>
|
||||
</div>
|
||||
<field name="amount"/>
|
||||
<field name="name"/>
|
||||
</group>
|
||||
</group>
|
||||
</sheet>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="hr_equipment_charge_view_tree" model="ir.ui.view">
|
||||
<field name="name">equipment.charge.tree</field>
|
||||
<field name="model">maintenance.equipment.charge</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree string="Equipment Charge">
|
||||
<field name="date"/>
|
||||
<field name="type_id"/>
|
||||
<field name="equipment_id"/>
|
||||
<field name="employee_id"/>
|
||||
<field name="department_id"/>
|
||||
<field name="qty"/>
|
||||
<field name="amount"/>
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="hr_equipment_charge_view_graph" model="ir.ui.view">
|
||||
<field name="name">equipment.charge.graph</field>
|
||||
<field name="model">maintenance.equipment.charge</field>
|
||||
<field name="arch" type="xml">
|
||||
<graph string="Equipment Charge">
|
||||
<field name="type_id"/>
|
||||
<field name="equipment_id"/>
|
||||
<field name="amount"/>
|
||||
</graph>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="hr_equipment_charge_view_pivot" model="ir.ui.view">
|
||||
<field name="name">equipment.charge.pivot</field>
|
||||
<field name="model">maintenance.equipment.charge</field>
|
||||
<field name="arch" type="xml">
|
||||
<pivot string="Equipment Charge">
|
||||
<field name="type_id"/>
|
||||
<field name="equipment_id"/>
|
||||
<field name="amount"/>
|
||||
</pivot>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="hr_equipment_charge_view_calendar" model="ir.ui.view">
|
||||
<field name="name">equipment.charge.calendar</field>
|
||||
<field name="model">maintenance.equipment.charge</field>
|
||||
<field name="arch" type="xml">
|
||||
<calendar date_start="date" color="equipment_id">
|
||||
<field name="equipment_id"/>
|
||||
<field name="amount"/>
|
||||
</calendar>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<!-- maintenance.equipment.charge : actions -->
|
||||
<record id="maintenance_charge_action_reports" model="ir.actions.act_window">
|
||||
<field name="name">Equipment Charges</field>
|
||||
<field name="res_model">maintenance.equipment.charge</field>
|
||||
<field name="view_mode">tree,form,graph,pivot,calendar</field>
|
||||
<field name="help" type="html">
|
||||
<p>
|
||||
No charges.
|
||||
</p>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<menuitem
|
||||
id="maintenance_equipment_charge_reporting"
|
||||
action="maintenance_charge_action_reports"
|
||||
parent="maintenance.maintenance_reporting"/>
|
||||
|
||||
<!-- maintenance.equipment.charge.type : views -->
|
||||
<record id="hr_equipment_charge_type_view_form" model="ir.ui.view">
|
||||
<field name="name">equipment.charge.type.form</field>
|
||||
<field name="model">maintenance.equipment.charge.type</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="Equipment Charge Type Form">
|
||||
<header/>
|
||||
<sheet>
|
||||
<group>
|
||||
<group>
|
||||
<field name="name"/>
|
||||
<field name="uom_id"/>
|
||||
</group>
|
||||
</group>
|
||||
</sheet>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="hr_equipment_charge_type_view_tree" model="ir.ui.view">
|
||||
<field name="name">equipment.charge.type.tree</field>
|
||||
<field name="model">maintenance.equipment.charge.type</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree string="Equipment Charge Type">
|
||||
<field name="name"/>
|
||||
<field name="uom_id"/>
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<!-- maintenance.equipment.charge.type : actions -->
|
||||
<record id="maintenance_charge_type_action" model="ir.actions.act_window">
|
||||
<field name="name">Equipment Charge Types</field>
|
||||
<field name="res_model">maintenance.equipment.charge.type</field>
|
||||
<field name="view_mode">tree,form</field>
|
||||
</record>
|
||||
|
||||
<menuitem
|
||||
id="maintenance_equipment_charge_type"
|
||||
action="maintenance_charge_type_action"
|
||||
parent="maintenance.menu_maintenance_configuration"/>
|
||||
</odoo>
|
||||
Reference in New Issue
Block a user