diff --git a/models/ows_models.py b/models/ows_models.py index c19a086..05d6380 100644 --- a/models/ows_models.py +++ b/models/ows_models.py @@ -466,6 +466,28 @@ class OwsMachine(models.Model): @api.model def get_access_list_grouped(self, partner_id): + """ + Gibt eine gruppierte Liste von Maschinenzugängen für einen bestimmten Partner zurück. Diese Funktion wird in + Odoo POS Frontend verwendet um die Ansicht zu erzeugen auf Welche Maschinen der Partner Zugriff hat. + + Für einen gegebenen Partner (über die partner_id) werden alle Maschinenbereiche (areas) abgefragt. + Für jeden Bereich wird geprüft, auf welche Maschinen der Partner Zugriff hat. Das Ergebnis wird + als Liste von Bereichen mit jeweils zugehörigen Maschinen und Zugriffsstatus zurückgegeben. + + Zusätzlich werden sicherheitsrelevante Informationen des Partners (wie Sicherheitsunterweisung, + Sicherheits-ID, RFID-Karte und Geburtstag) aus dem zugehörigen ows_user ermittelt und mitgeliefert. + + Args: + partner_id (int): Die ID des Partners, für den die Zugriffsübersicht erstellt werden soll. + + Returns: + dict: Ein Dictionary mit folgenden Schlüsseln: + - 'access_by_area': Liste von Bereichen mit Maschinen und Zugriffsstatus. + - 'security_briefing': Sicherheitsunterweisung des Nutzers (bool oder False). + - 'security_id': Sicherheits-ID des Nutzers (str oder ''). + - 'rfid_card': RFID-Kartennummer des Nutzers (str oder ''). + - 'birthday': Geburtstag des Nutzers (str oder ''). + """ partner = self.env['res.partner'].browse(partner_id) areas = self.env['ows.machine.area'].search([], order="name") @@ -520,7 +542,7 @@ class OwsMachineAccess(models.Model): class OwsMachineProduct(models.Model): _name = 'ows.machine.product' _table = 'ows_machine_product' - _description = 'OWS: Zurordnung Produkt der Nutzung zur die Maschine' + _description = 'OWS: Zuordnung Produkt der Nutzung zu der 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') @@ -528,7 +550,7 @@ class OwsMachineProduct(models.Model): class OwsMachineTraining(models.Model): _name = 'ows.machine.training' _table = 'ows_machine_training' - _description = 'OWS: Zurordnung Produkt der Einweisung zur die Maschine' + _description = 'OWS: Zuordnung Produkt der Einweisung zu der Maschine' training_id = fields.Many2one('product.product', required=True, domain=[('available_in_pos', '=', True)], ondelete='cascade') machine_id = fields.Many2one('ows.machine', required=True, ondelete='cascade') diff --git a/static/src/js/ows_machine_access_list.js b/static/src/js/ows_machine_access_list.js index fc9e981..7e63850 100644 --- a/static/src/js/ows_machine_access_list.js +++ b/static/src/js/ows_machine_access_list.js @@ -12,6 +12,7 @@ export class OwsMachineAccessList extends Component { this.pos = usePos(); this.state = useState({ + client: null, grouped_accesses: [], security_briefing: false, security_id: '', @@ -31,7 +32,7 @@ export class OwsMachineAccessList extends Component { async updateAccessList() { const order = this.pos.get_order(); const partner = order?.get_partner?.(); - + this.state.client = partner || null; if (!partner) { this.state.grouped_accesses = []; this.state.security_briefing = false;