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