mirror of
https://gitlab.com/hibou-io/hibou-odoo/suite.git
synced 2025-01-20 12:37:31 +02:00
Merge branch 'mig/12.0/maintenance_equipment_charge' into '12.0'
mig/12.0/maintenance_equipment_charge into 12.0 See merge request hibou-io/hibou-odoo/suite!202
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': '12.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
|
||||||
46
maintenance_equipment_charge/models/maintenance.py
Normal file
46
maintenance_equipment_charge/models/maintenance.py
Normal file
@@ -0,0 +1,46 @@
|
|||||||
|
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')
|
||||||
|
|
||||||
|
@api.multi
|
||||||
|
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