52 lines
1.8 KiB
Python
52 lines
1.8 KiB
Python
from odoo import models, fields, api
|
||
|
||
#import debugpy
|
||
import logging
|
||
|
||
_logger = logging.getLogger(__name__)
|
||
_logger.info("✅ pos_order.py geladen")
|
||
|
||
# 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, draft, existing_order):
|
||
pos_order_id = super(PosOrder, self)._process_order(order, draft, existing_order)
|
||
pos_order = self.browse(pos_order_id)
|
||
|
||
training_products = self.env['ows.machine.training'].search([])
|
||
product_map = {
|
||
tp.product_id.product_tmpl_id.id: tp.machine_id.id
|
||
for tp in training_products
|
||
}
|
||
|
||
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_id = product_map.get(product_tmpl_id)
|
||
|
||
_logger.info("🔍 Prüfe Produkt %s → Maschine ID: %s", line.product_id.display_name, machine_id)
|
||
|
||
if machine_id:
|
||
already_exists = self.env['ows.machine.access'].search([
|
||
('partner_id', '=', partner.id),
|
||
('machine_id', '=', machine_id)
|
||
])
|
||
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
|