# -*- coding: utf-8 -*- from odoo import http from odoo.http import request class ServiceBookingController(http.Controller): @http.route('/fusion_claims/service_booking/refdata', type='jsonrpc', auth='user') def refdata(self, **kw): env = request.env Users = env['res.users'] techs = Users.search([('x_fc_is_field_staff', '=', True)]) \ if 'x_fc_is_field_staff' in Users._fields else Users.search([]) Rate = env['fusion.service.rate'] rates = Rate.search([('rate_kind', '=', 'callout'), ('active', '=', True)]) per_km = Rate.get_rate('per_km') def labour(code): r = Rate.get_rate(code) return r.price if r else 0.0 return { 'technicians': [{'id': t.id, 'name': t.name} for t in techs], 'callout_rates': [{ 'code': r.code, 'category': r.category, 'timing': r.timing, 'name': r.name, 'price': r.price, 'adds_per_km': r.adds_per_km, } for r in rates], 'per_km': per_km.price if per_km else 0.70, 'labour': {'onsite': labour('labour_onsite'), 'inshop': labour('labour_inshop'), 'lift': labour('labour_lift')}, } @http.route('/fusion_claims/service_booking/submit', type='jsonrpc', auth='user') def submit(self, payload=None, **kw): try: return request.env['fusion.technician.task'].action_book_from_wizard(payload or {}) except Exception as e: return {'error': str(e)}