51 lines
2.0 KiB
Python
51 lines
2.0 KiB
Python
from odoo import models, fields, api
|
||
from collections import defaultdict
|
||
|
||
#import debugpy
|
||
import logging
|
||
|
||
_logger = logging.getLogger(__name__)
|
||
_logger.info("✅ pos_order.py geladen Test 2")
|
||
|
||
#debugpy.listen(("0.0.0.0", 5678))
|
||
print("✅ debugpy wartet auf Verbindung (Port 5678) ...")
|
||
# Optional: Starte erst, wenn VS Code verbunden ist
|
||
#debugpy.wait_for_client()
|
||
|
||
class PosOrder(models.Model):
|
||
_inherit = 'pos.order'
|
||
|
||
def _process_order(self, order, existing_order):
|
||
_logger.info("🚨 DEBUG: _process_order wurde aufgerufen mit order: %s", order.get('name', 'unbekannt'))
|
||
pos_order_id = super(PosOrder, self)._process_order(order, existing_order)
|
||
pos_order = self.browse(pos_order_id)
|
||
|
||
training_products = self.env['ows.machine.training'].search([])
|
||
product_map = defaultdict(list)
|
||
for tp in training_products:
|
||
product_map[tp.training_id.product_tmpl_id.id].append(tp.machine_id.id)
|
||
|
||
partner = pos_order.partner_id
|
||
if not partner:
|
||
_logger.info("🟡 POS-Bestellung ohne Partner – keine Freigabe möglich")
|
||
return pos_order_id
|
||
|
||
for line in pos_order.lines:
|
||
product_tmpl_id = line.product_id.product_tmpl_id.id
|
||
machine_ids = product_map.get(product_tmpl_id, [])
|
||
_logger.info("🔍 Prüfe Produkt %s → Maschinen IDs: %s", line.product_id.display_name, machine_ids)
|
||
for machine_id in machine_ids:
|
||
already_exists = self.env['ows.machine.access'].search([
|
||
('partner_id', '=', partner.id),
|
||
('machine_id', '=', machine_id)
|
||
], limit=1)
|
||
if not already_exists:
|
||
self.env['ows.machine.access'].create({
|
||
'partner_id': partner.id,
|
||
'machine_id': machine_id,
|
||
'granted_by_pos': True
|
||
})
|
||
_logger.info("✅ Maschinenfreigabe erstellt: %s für %s", machine_id, partner.name)
|
||
|
||
return pos_order_id
|