from odoo import models, fields class OwsMachineArea(models.Model): _name = 'ows.machine.area' _table = "ows_machine_area" _description = 'OWS: Maschinenbereich' _order = 'name' name = fields.Char(required=True, translate=True) color = fields.Integer(string="Farbe") class OwsMachine(models.Model): _name = 'ows.machine' _table = 'ows_machine' _description = 'OWS: Maschine' name = fields.Char(required=True, translate=True) code = fields.Char(required=True, help="Eindeutiger Kurzcode, z.B. 'lasercutter'") description = fields.Text() active = fields.Boolean(default=True) area_id = fields.Many2one('ows.machine.area', string='Bereich') _sql_constraints = [ ('code_unique', 'unique(code)', 'Maschinencode muss eindeutig sein.') ] def name_get(self): return [(rec.id, f"{rec.name} ({rec.code})") for rec in self] class OwsMachineAccess(models.Model): _name = 'ows.machine.access' _table = 'ows_machine_access' _description = 'OWS: Maschinenfreigabe' _order = 'partner_id, machine_id' partner_id = fields.Many2one('res.partner', required=True, ondelete='cascade') machine_id = fields.Many2one('ows.machine', required=True) date_granted = fields.Date(default=fields.Date.today) date_expiry = fields.Date(string="Ablaufdatum") granted_by_pos = fields.Boolean(default=True) _sql_constraints = [ ('partner_machine_unique', 'unique(partner_id, machine_id)', 'Der Kunde hat diese Freigabe bereits.') ] class OwsMachineProduct(models.Model): _name = 'ows.machine.product' _table = 'ows_machine_product' _description = 'OWS: Zurordnung Produkt der Einweisung zur die Maschine' product_id = fields.Many2one('product.product', required=True, domain=[('available_in_pos', '=', True)], ondelete='cascade') machine_id = fields.Many2one('ows.machine', required=True, ondelete='cascade') class ResPartner(models.Model): _inherit = 'res.partner' machine_access_ids = fields.One2many( 'ows.machine.access', 'partner_id', string='Maschinenfreigaben' )