running POS ows machine access and customer sidebar

This commit is contained in:
Matthias Lotz 2025-07-01 21:57:51 +02:00
parent 1f59e16b26
commit 0fe8417602
4 changed files with 15 additions and 18 deletions

View File

@ -1,11 +1,14 @@
# Datei: controllers/pos_access.py
from odoo import http
from odoo.http import request
class OpenWorkshopPOSController(http.Controller):
@http.route('/open_workshop/partner_access', type='json', auth='user')
def get_partner_machine_access(self, partner_id):
def get_partner_machine_access(self, **kwargs):
partner_id = kwargs.get('params', {}).get('partner_id')
if not partner_id:
return {"error": "Missing partner_id"}
Machine = request.env['ows.machine'].sudo()
return Machine.get_access_list_grouped(partner_id)

View File

@ -514,7 +514,7 @@ class OwsMachine(models.Model):
"""
partner = self.env['res.partner'].browse(partner_id)
areas = self.env['ows.machine.area'].search([], order="name")
_logger.info("Access RPC called with partner_id=%s", partner_id)
access_by_area = []
for area in areas:
machines = self.search([('area_id', '=', area.id), ('category', '=', 'red')], order="name")

View File

@ -45,9 +45,7 @@ export class OwsMachineAccessList extends Component {
try {
const data = await rpc("/open_workshop/partner_access", {
params: {
partner_id: partner.id,
},
params: { partner_id: partner.id },
});
this.state.grouped_accesses = data.access_by_area || [];

View File

@ -2,32 +2,30 @@
import { Component } from "@odoo/owl";
import { useService } from "@web/core/utils/hooks";
import { registry } from "@web/core/registry";
import { usePos } from "@point_of_sale/app/store/pos_hook";
import { _t } from "@web/core/l10n/translation";
import { ask } from "@web/core/confirmation_dialog/confirmation_dialog";
import { deserializeDateTime, formatDateTime, parseDateTime } from "@web/core/l10n/dates";
export class OwsPosCustomerSidebar extends Component {
static template = "open_workshop.OwsPosCustomerSidebar";
setup() {
this.pos = usePos();
this.pos = usePos(); // ✅ Holt dir Zugriff auf den zentralen POS-Store
this.dialog = useService("dialog");
}
addOrder() {
this.pos.add_new_order(); // neue Order wird aktive Order
this.pos.add_new_order(); // ✅ Neue Order wird aktive Order
this.pos.showScreen("ProductScreen");
this.pos.selectPartner();
this.env.bus.trigger('partner-changed'); // ✅ korrektes Event feuern
this.env.bus.trigger('partner-changed'); // ✅ Event manuell auslösen
}
async removeCurrentOrder() {
const order = this.pos.get_order();
if (!order) return;
// 🛑 Sicherheitsabfrage: Order enthält bereits Positionen
// 🛑 Sicherheitsabfrage: Order enthält bereits Positionen?
if (order.get_orderlines().length > 0) {
const confirmed = await ask(this.dialog, {
title: _t("Order enthält Positionen"),
@ -49,16 +47,16 @@ export class OwsPosCustomerSidebar extends Component {
this.pos.set_order(remainingOrders[remainingOrders.length - 1]);
}
this.env.bus.trigger('partner-changed'); // ✅ korrektes Event feuern
this.env.bus.trigger('partner-changed');
}
openTicketScreen() {
this.pos.showScreen("TicketScreen");
}
// 🔧 FIXED: Zugriff auf Order-Liste korrigiert
getFilteredOrderList() {
//return this.pos.get_order_list();
return this.pos.orders ? this.pos.orders.filter(order => order.get_partner()) : [];
return this.pos.get_open_orders();
}
getDate(order) {
@ -79,5 +77,3 @@ export class OwsPosCustomerSidebar extends Component {
this.env.bus.trigger('partner-changed');
}
}