diff --git a/maintenance_equipment_charge/README.rst b/maintenance_equipment_charge/README.rst
new file mode 100644
index 00000000..de089dd7
--- /dev/null
+++ b/maintenance_equipment_charge/README.rst
@@ -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 `_.
+
+
+=============
+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 `_.
+
+Copyright Hibou Corp. 2018
diff --git a/maintenance_equipment_charge/__init__.py b/maintenance_equipment_charge/__init__.py
new file mode 100644
index 00000000..0650744f
--- /dev/null
+++ b/maintenance_equipment_charge/__init__.py
@@ -0,0 +1 @@
+from . import models
diff --git a/maintenance_equipment_charge/__manifest__.py b/maintenance_equipment_charge/__manifest__.py
new file mode 100644
index 00000000..e3a112a0
--- /dev/null
+++ b/maintenance_equipment_charge/__manifest__.py
@@ -0,0 +1,24 @@
+{
+ 'name': 'Equipment Charges',
+ 'version': '13.0.1.0.0',
+ 'author': 'Hibou Corp. ',
+ '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,
+}
diff --git a/maintenance_equipment_charge/models/__init__.py b/maintenance_equipment_charge/models/__init__.py
new file mode 100644
index 00000000..12bf298f
--- /dev/null
+++ b/maintenance_equipment_charge/models/__init__.py
@@ -0,0 +1 @@
+from . import maintenance
diff --git a/maintenance_equipment_charge/models/maintenance.py b/maintenance_equipment_charge/models/maintenance.py
new file mode 100644
index 00000000..b5556e7b
--- /dev/null
+++ b/maintenance_equipment_charge/models/maintenance.py
@@ -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')
diff --git a/maintenance_equipment_charge/security/ir.model.access.csv b/maintenance_equipment_charge/security/ir.model.access.csv
new file mode 100644
index 00000000..0cc16007
--- /dev/null
+++ b/maintenance_equipment_charge/security/ir.model.access.csv
@@ -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
\ No newline at end of file
diff --git a/maintenance_equipment_charge/tests/__init__.py b/maintenance_equipment_charge/tests/__init__.py
new file mode 100644
index 00000000..bd38ce7a
--- /dev/null
+++ b/maintenance_equipment_charge/tests/__init__.py
@@ -0,0 +1 @@
+from . import test_maintenance_usage
diff --git a/maintenance_equipment_charge/tests/test_maintenance_usage.py b/maintenance_equipment_charge/tests/test_maintenance_usage.py
new file mode 100644
index 00000000..fd60a160
--- /dev/null
+++ b/maintenance_equipment_charge/tests/test_maintenance_usage.py
@@ -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)
diff --git a/maintenance_equipment_charge/views/maintenance_views.xml b/maintenance_equipment_charge/views/maintenance_views.xml
new file mode 100644
index 00000000..43ce2b45
--- /dev/null
+++ b/maintenance_equipment_charge/views/maintenance_views.xml
@@ -0,0 +1,183 @@
+
+
+
+ Other
+
+
+
+ equipment.form.inherited
+ maintenance.equipment
+
+
+
+
+
+
+
+
+
+
+ equipment.charge.search
+ maintenance.equipment.charge
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ equipment.charge.form
+ maintenance.equipment.charge
+
+
+
+
+
+
+ equipment.charge.tree
+ maintenance.equipment.charge
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ equipment.charge.graph
+ maintenance.equipment.charge
+
+
+
+
+
+
+
+
+
+
+ equipment.charge.pivot
+ maintenance.equipment.charge
+
+
+
+
+
+
+
+
+
+
+ equipment.charge.calendar
+ maintenance.equipment.charge
+
+
+
+
+
+
+
+
+
+
+ Equipment Charges
+ maintenance.equipment.charge
+ tree,form,graph,pivot,calendar
+
+
+ No charges.
+
+
+
+
+
+
+
+
+ equipment.charge.type.form
+ maintenance.equipment.charge.type
+
+
+
+
+
+
+ equipment.charge.type.tree
+ maintenance.equipment.charge.type
+
+
+
+
+
+
+
+
+
+
+ Equipment Charge Types
+ maintenance.equipment.charge.type
+ tree,form
+
+
+
+
\ No newline at end of file