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')
