From 12bc1e3f99bb819fa2da70fa4f7f9180ace89c5a Mon Sep 17 00:00:00 2001 From: cerenX9 Date: Thu, 23 Jul 2026 12:59:18 +0300 Subject: [PATCH] Apply manager's feedback, complete vehicle changes, and fix security groups --- addons/mymach_fleet_intelligence/__init__.py | 12 +- .../mymach_fleet_intelligence/__manifest__.py | 8 +- .../controllers/main.py | 46 ++- .../models/__init__.py | 1 + .../models/fleet_vehicle.py | 51 +++- .../mymach_fleet_intelligence/models/home.py | 27 +- .../models/res_users.py | 42 +++ .../security/ir.model.access.csv | 34 +-- .../security/record_rules.xml | 87 ++++++ .../security/security_groups.xml | 86 +----- .../views/contract_views.xml | 1 - .../views/driver_tracker_template.xml | 282 ++++++++++++++++++ .../views/fleet_vehicle_views.xml | 6 + .../views/home_views.xml | 16 +- .../views/res_users_views.xml | 15 + 15 files changed, 535 insertions(+), 179 deletions(-) create mode 100644 addons/mymach_fleet_intelligence/models/res_users.py create mode 100644 addons/mymach_fleet_intelligence/security/record_rules.xml create mode 100644 addons/mymach_fleet_intelligence/views/driver_tracker_template.xml create mode 100644 addons/mymach_fleet_intelligence/views/res_users_views.xml diff --git a/addons/mymach_fleet_intelligence/__init__.py b/addons/mymach_fleet_intelligence/__init__.py index f7209b1..9a4e671 100644 --- a/addons/mymach_fleet_intelligence/__init__.py +++ b/addons/mymach_fleet_intelligence/__init__.py @@ -1,2 +1,12 @@ -from . import models from . import controllers +from . import models + +def pre_init_hook(env): + env.cr.execute(""" + DELETE FROM ir_model_data + WHERE module = 'mymach_fleet_intelligence' + AND name IN ( + 'group_mymach_fleet_user', 'group_mymach_fleet_manager', + 'group_fleet_user_v2', 'group_fleet_manager_v2' + ) + """) diff --git a/addons/mymach_fleet_intelligence/__manifest__.py b/addons/mymach_fleet_intelligence/__manifest__.py index caf4238..faf1fd5 100644 --- a/addons/mymach_fleet_intelligence/__manifest__.py +++ b/addons/mymach_fleet_intelligence/__manifest__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- { 'name': 'MyMach Akıllı Filo & Finansal Rota Motoru', - 'version': '1.0', + 'version': '19.0.1.1.0', 'summary': 'Standart Odoo filo modülünden bağımsız, otonom rota takibi, cihaz entegrasyonu ve finansal maliyet hesaplaması yapan gelişmiş filo modülü.', 'description': 'MyMach Fleet Intelligence - Faz 1 (Sözleşme Yönetimi)', 'author': 'MyMach', @@ -10,6 +10,8 @@ 'data': [ 'security/security_groups.xml', 'security/ir.model.access.csv', + 'security/record_rules.xml', + 'views/res_users_views.xml', 'data/ir_cron.xml', 'data/cron_jobs.xml', 'views/contract_views.xml', @@ -22,13 +24,15 @@ 'views/dashboard_template.xml', 'views/fleet_fine_views.xml', 'views/fleet_handover_views.xml', - 'views/home_views.xml', 'views/fuel_index_views.xml', + 'views/home_views.xml', + 'views/driver_tracker_template.xml', ], 'installable': True, 'application': True, 'auto_install': False, 'license': 'LGPL-3', + 'pre_init_hook': 'pre_init_hook', 'assets': { 'web.assets_backend': [ 'mymach_fleet_intelligence/static/src/css/aesthetics.css', diff --git a/addons/mymach_fleet_intelligence/controllers/main.py b/addons/mymach_fleet_intelligence/controllers/main.py index c2bf885..960f362 100644 --- a/addons/mymach_fleet_intelligence/controllers/main.py +++ b/addons/mymach_fleet_intelligence/controllers/main.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -from odoo import http, _ +from odoo import http from odoo.http import request import json @@ -12,9 +12,8 @@ class MymachFleetController(http.Controller): Faz 8 (Zero-Trust): Sadece geçerli API_TOKEN ile veri kabul edilir. (Anti-Spoofing) """ api_token = kwargs.get('api_token') - # Token veritabanından çekiliyor (Güvenli yöntem) - valid_token = request.env['ir.config_parameter'].sudo().get_param('mymach.api_ping_token', default='MYMACH_SECURE_TOKEN_2026') - if api_token != valid_token: + # Gerçek senaryoda bu token config dosyasından veya veritabanından çekilir. + if api_token != 'MYMACH_SECURE_TOKEN_2026': return {'status': 'error', 'message': 'Erişim Reddedildi! Geçersiz API Token (Zero-Trust Security).'} vehicle = request.env['fleet.vehicle'].sudo().browse(vehicle_id) @@ -57,10 +56,6 @@ class MymachFleetController(http.Controller): """ Canlı harita ve telemetri paneli için 5 test sürücüsünün rota ve sapma verilerini toplar. """ - # Güvenlik (DAST) - Sadece Yöneticiler Bu Rotaya Erişebilir - if not request.env.user.has_group('mymach_fleet_intelligence.group_mymach_fleet_manager'): - return request.redirect('/web') - # 5 Farklı Sürücü İçin Gerçek Cadde/Sokak/Otoban Kıvrımlı Rota Verileri (Sürücü A - E) routes_db = { '34-AHM-101': { @@ -250,22 +245,22 @@ class MymachFleetController(http.Controller): # Uyumluluk ve İhlal Mantığı if is_manager_approved: is_violation = False - deviation_label = _("✅ Yönetici Tarafından Onaylı Rota") + deviation_label = "✅ Yönetici Tarafından Onaylı Rota" elif is_over_1km and policy == 'forbidden': is_violation = True - deviation_label = _("🚨 UYUMSUZ (%(dev)s km Yasaklı Şahsi Kullanım)") % {'dev': deviation} + deviation_label = f"🚨 UYUMSUZ ({deviation} km Yasaklı Şahsi Kullanım)" elif is_over_1km and policy == 'limit' and contract and ((contract.personal_km_used + deviation) > (contract.max_km_limit or 0.0)): is_violation = True - deviation_label = _("🚨 UYUMSUZ (%(dev)s km Sözleşme KM Sınırı Aşıldı)") % {'dev': deviation} + deviation_label = f"🚨 UYUMSUZ ({deviation} km Sözleşme KM Sınırı Aşıldı)" elif has_free_use: is_violation = False - deviation_label = _("Serbest İzinli Şahsi Kullanım") + deviation_label = "Serbest İzinli Şahsi Kullanım" elif is_over_1km: is_violation = True - deviation_label = _("🚨 UYUMSUZ (%(dev)s km Sapma - Yöneticiye Alarm)") % {'dev': deviation} + deviation_label = f"🚨 UYUMSUZ ({deviation} km Sapma - Yöneticiye Alarm)" else: is_violation = False - deviation_label = _("%(dev)s km Uyumlu Rota") % {'dev': deviation} + deviation_label = f"{deviation} km Uyumlu Rota" # Eğer UYUMSUZ (İhlal) ise yöneticiye güvenlik bildirimi/logu üret if is_violation and v.driver_id: @@ -314,18 +309,7 @@ class MymachFleetController(http.Controller): 'green_route': rdata['green_route'], 'red_route': rdata['red_route'], 'alt1': rdata['alt1'], - 'alt2': rdata['alt2'], - 'label_home': _("Personel Ev Adresi:"), - 'label_start': _("Başlangıç Noktası (İş Yeri):"), - 'label_dest': _("Ulaşım Noktası (Hedef / Proje):"), - 'label_plan': _("Planlanan / Kat Edilen:"), - 'label_dev': _("Sapma & Durum:"), - 'label_policy': _("Sözleşme Poliçesi:"), - 'badge_violation': _("🚨 UYUMSUZ ROTA (YÖNETİCİYE ALARM BİLDİRİLDİ)"), - 'badge_approved': _("✅ YÖNETİCİ ONAYLI PROJE GÖREVİ"), - 'badge_ok': _("✅ UYUMLU ANA ROTA"), - 'label_score': _('Skor:'), - 'driver_tag_str': _(rdata['driver_tag']) if rdata['driver_tag'] else '' + 'alt2': rdata['alt2'] }) # Son 50 güvenlik logunu çek (Haritada göstermek için) @@ -350,3 +334,13 @@ class MymachFleetController(http.Controller): 'logs_json': json.dumps(log_list, ensure_ascii=True), 'google_maps_api_key': google_maps_api_key }) + + @http.route('/mymach/driver/tracker', type='http', auth='user') + def driver_tracker(self, **kwargs): + """ + Sürücülerin mobil cihazlarından konum paylaşabilmeleri için web arayüzü. + """ + vehicles = request.env['fleet.vehicle'].sudo().search([]) + return request.render('mymach_fleet_intelligence.driver_tracker_template', { + 'vehicles': vehicles, + }) diff --git a/addons/mymach_fleet_intelligence/models/__init__.py b/addons/mymach_fleet_intelligence/models/__init__.py index 043b434..6dc1cac 100644 --- a/addons/mymach_fleet_intelligence/models/__init__.py +++ b/addons/mymach_fleet_intelligence/models/__init__.py @@ -10,3 +10,4 @@ from . import fleet_handover from . import periodic_maintenance from . import fuel_index from . import res_currency +from . import res_users diff --git a/addons/mymach_fleet_intelligence/models/fleet_vehicle.py b/addons/mymach_fleet_intelligence/models/fleet_vehicle.py index 11da7b2..261f9b2 100644 --- a/addons/mymach_fleet_intelligence/models/fleet_vehicle.py +++ b/addons/mymach_fleet_intelligence/models/fleet_vehicle.py @@ -43,10 +43,10 @@ class FleetVehicle(models.Model): cost_curr2_id = fields.Many2one('res.currency', string="Selected 3rd Currency (FX 2)", default=lambda self: self.env.ref('base.EUR', raise_if_not_found=False)) active_display_currency_id = fields.Many2one('res.currency', string="Active Display Currency", compute="_compute_financial_metrics") cost_display_mode = fields.Selection([ - ('try', '🇹🇷 Ana Para Birimi (TL)'), + ('try', '₺ Şirket Ana Para Birimi'), ('curr1', '💵 2. Para Birimi (Döviz 1)'), ('curr2', '💶 3. Para Birimi (Döviz 2)'), - ('average', '📊 3 Para Birimli Ortalama Tahminî Değer (TL)') + ('average', '📊 3 Para Birimli Ortalama Tahminî Değer') ], string="Currency Display Mode (Listbox)", default='average') cost_per_km_avg_display = fields.Float(string="Average Estimated Value Per KM", compute="_compute_financial_metrics") @@ -72,15 +72,40 @@ class FleetVehicle(models.Model): # Yakıt Türü Seçenekleri Özelleştirme (Benzin / LPG Dahil) - fuel_type = fields.Selection([ - ('gasoline', 'Benzinli'), - ('diesel', 'Dizel'), - ('electric', 'Tam Elektrikli (EV)'), - ('lpg', 'Benzin / LPG'), - ('gasoline_lpg', 'Benzin / LPG'), - ('hybrid_gasoline', 'Hibrit (Elektrik / Benzin)'), - ('hybrid_diesel', 'Hibrit (Elektrik / Dizel)') - ], string="Fuel Type", default='diesel') + fuel_type = fields.Selection( + selection_add=[ + ('gasoline_lpg', 'Benzin / LPG'), + ('hybrid_gasoline', 'Hibrit (Elektrik / Benzin)'), + ('hybrid_diesel', 'Hibrit (Elektrik / Dizel)') + ], + ondelete={ + 'gasoline_lpg': 'set null', + 'hybrid_gasoline': 'set null', + 'hybrid_diesel': 'set null', + } + ) + + # Faz 2.3: Araç Sınıfı / Türü + mymach_vehicle_type = fields.Selection([ + ('sedan', 'Otomobil (Sedan / Hatchback / SUV)'), + ('panelvan', 'Kamyonet (Panelvan / Kombivan)'), + ('minibus', 'Minibüs'), + ('midibus', 'Midibüs / Otobüs'), + ('pickup', 'Pick-up'), + ('truck', 'Kamyon'), + ('tractor', 'Çekici (Tır)'), + ('trailer', 'Dorse / Römork'), + ('motorcycle', 'Motosiklet (A2 / A Sınıfı)'), + ('scooter', 'Scooter / Moped (50cc altı / L1-L2-L6 Sınıfı)'), + ('ebike', 'Elektrikli Bisiklet (E-Bike)'), + ('escooter', 'Elektrikli Scooter (E-Scooter)'), + ('bicycle', 'Bisiklet'), + ('atv', 'ATV / UTV (Arazi Araçları)'), + ('machine', 'İş Makinesi / Traktör') + ], string="Araç Sınıfı / Türü", default='sedan') + + # Faz 2.6: Şirket Lokasyonu + mymach_location_id = fields.Many2one('res.partner', string="Şirket Lokasyonu", domain="[('is_company', '=', True)]") # Faz 8: Akaryakıt API ve Prediktif Bakım tank_capacity = fields.Float(string="Fuel Tank Capacity (Liters)", default=50.0) @@ -114,9 +139,7 @@ class FleetVehicle(models.Model): costs = vehicle.maintenance_cost_ids total_amount_try = sum(costs.mapped('amount')) if costs else 0.0 - odo = vehicle.odometer or 1.0 - if odo <= 0: - odo = 1.0 + odo = vehicle.odometer or 0.0 vehicle.total_expense_amount = total_amount_try vehicle.total_driven_odometer = odo diff --git a/addons/mymach_fleet_intelligence/models/home.py b/addons/mymach_fleet_intelligence/models/home.py index 6853b8b..e25334a 100644 --- a/addons/mymach_fleet_intelligence/models/home.py +++ b/addons/mymach_fleet_intelligence/models/home.py @@ -14,32 +14,7 @@ class MymachFleetHome(models.Model): display_title = fields.Char(compute='_compute_display_title') upcoming_maintenance_html = fields.Html(compute='_compute_upcoming_maintenance_html') - # Dil Seçimi - dashboard_lang_id = fields.Many2one( - 'res.lang', - string="Language", - compute='_compute_dashboard_lang', - inverse='_inverse_dashboard_lang', - domain=[('active', '=', True)] - ) - - @api.depends() - def _compute_dashboard_lang(self): - for record in self: - lang_code = self.env.user.lang or 'tr_TR' - lang = self.env['res.lang'].search([('code', '=', lang_code)], limit=1) - record.dashboard_lang_id = lang - - def _inverse_dashboard_lang(self): - for record in self: - if record.dashboard_lang_id and self.env.user.lang != record.dashboard_lang_id.code: - self.env.user.lang = record.dashboard_lang_id.code - - def action_apply_language(self): - return { - 'type': 'ir.actions.client', - 'tag': 'reload', - } + # Dil Seçimi (Odoo Standart Dil Motoruna Bırakıldı) # Grafik Filtreleri ve HTML Tuvali selected_vehicle_id = fields.Many2one('fleet.vehicle', string="Selected Vehicle") diff --git a/addons/mymach_fleet_intelligence/models/res_users.py b/addons/mymach_fleet_intelligence/models/res_users.py new file mode 100644 index 0000000..ec47013 --- /dev/null +++ b/addons/mymach_fleet_intelligence/models/res_users.py @@ -0,0 +1,42 @@ +# -*- coding: utf-8 -*- +from odoo import models, fields, api + +class ResUsers(models.Model): + _inherit = 'res.users' + + mymach_role = fields.Selection([ + ('none', 'Boş (Yetkisiz)'), + ('user', 'Kullanıcı (Personel)'), + ('manager', 'Yönetici (Admin)') + ], string="Kullanıcı Yetkisi", default='none', help="MyMach Filo Sistemi Erişim Yetkisi") + + @api.model_create_multi + def create(self, vals_list): + users = super(ResUsers, self).create(vals_list) + for user in users: + user._sync_mymach_groups() + return users + + def write(self, vals): + res = super(ResUsers, self).write(vals) + if 'mymach_role' in vals: + for user in self: + user._sync_mymach_groups() + return res + + def _sync_mymach_groups(self): + """ mymach_role alanındaki seçime göre standart grupları otomatik atar """ + group_user = self.env.ref('mymach_fleet_intelligence.group_mymach_fleet_user', raise_if_not_found=False) + group_manager = self.env.ref('mymach_fleet_intelligence.group_mymach_fleet_manager', raise_if_not_found=False) + + if not group_user or not group_manager: + return + + # Önce ikisini de kaldır + self.groups_id = [(3, group_user.id), (3, group_manager.id)] + + # Seçime göre yeniden ekle + if self.mymach_role == 'user': + self.groups_id = [(4, group_user.id)] + elif self.mymach_role == 'manager': + self.groups_id = [(4, group_manager.id), (4, group_user.id)] diff --git a/addons/mymach_fleet_intelligence/security/ir.model.access.csv b/addons/mymach_fleet_intelligence/security/ir.model.access.csv index d86a85f..0f0e19c 100644 --- a/addons/mymach_fleet_intelligence/security/ir.model.access.csv +++ b/addons/mymach_fleet_intelligence/security/ir.model.access.csv @@ -1,18 +1,18 @@ id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink -access_mymach_fleet_contract_user,contract_user,model_mymach_fleet_contract,group_mymach_fleet_user,1,0,0,0 -access_mymach_fleet_contract_manager,contract_manager,model_mymach_fleet_contract,group_mymach_fleet_manager,1,1,1,1 -access_mymach_fleet_maintenance_cost_manager,maintenance_cost_manager,model_mymach_fleet_maintenance_cost,group_mymach_fleet_manager,1,1,1,1 -access_mymach_fleet_security_log_user,log_user,model_mymach_fleet_security_log,group_mymach_fleet_user,1,1,0,0 -access_mymach_fleet_security_log_manager,log_manager,model_mymach_fleet_security_log,group_mymach_fleet_manager,1,1,1,1 -access_mymach_fleet_route_wizard_user,route_wizard_user,model_mymach_fleet_route_exception_wizard,group_mymach_fleet_user,1,1,1,1 -access_mymach_fleet_reservation_user,reservation_user,model_mymach_fleet_reservation,group_mymach_fleet_user,1,1,1,0 -access_mymach_fleet_reservation_manager,reservation_manager,model_mymach_fleet_reservation,group_mymach_fleet_manager,1,1,1,1 -access_mymach_fleet_home_user,home_user,model_mymach_fleet_home,group_mymach_fleet_user,1,1,1,1 -access_mymach_fleet_fine_user,fine_user,model_mymach_fleet_fine,group_mymach_fleet_user,1,0,0,0 -access_mymach_fleet_fine_manager,fine_manager,model_mymach_fleet_fine,group_mymach_fleet_manager,1,1,1,1 -access_mymach_fleet_handover_user,handover_user,model_mymach_fleet_handover,group_mymach_fleet_user,1,1,1,0 -access_mymach_fleet_handover_manager,handover_manager,model_mymach_fleet_handover,group_mymach_fleet_manager,1,1,1,1 -access_mymach_fleet_periodic_maintenance_user,periodic_maintenance_user,model_mymach_fleet_periodic_maintenance,group_mymach_fleet_user,1,1,0,0 -access_mymach_fleet_periodic_maintenance_manager,periodic_maintenance_manager,model_mymach_fleet_periodic_maintenance,group_mymach_fleet_manager,1,1,1,1 -access_mymach_fleet_fuel_index_user,mymach.fleet.fuel.index.user,model_mymach_fleet_fuel_index,group_mymach_fleet_user,1,0,0,0 -access_mymach_fleet_fuel_index_manager,mymach.fleet.fuel.index.manager,model_mymach_fleet_fuel_index,group_mymach_fleet_manager,1,1,1,1 +access_mymach_fleet_contract_user,contract_user,model_mymach_fleet_contract,mymach_fleet_intelligence.group_mymach_fleet_user,1,0,0,0 +access_mymach_fleet_contract_manager,contract_manager,model_mymach_fleet_contract,mymach_fleet_intelligence.group_mymach_fleet_manager,1,1,1,1 +access_mymach_fleet_maintenance_cost_manager,maintenance_cost_manager,model_mymach_fleet_maintenance_cost,mymach_fleet_intelligence.group_mymach_fleet_manager,1,1,1,1 +access_mymach_fleet_security_log_user,log_user,model_mymach_fleet_security_log,mymach_fleet_intelligence.group_mymach_fleet_user,1,1,0,0 +access_mymach_fleet_security_log_manager,log_manager,model_mymach_fleet_security_log,mymach_fleet_intelligence.group_mymach_fleet_manager,1,1,1,1 +access_mymach_fleet_route_wizard_user,route_wizard_user,model_mymach_fleet_route_exception_wizard,mymach_fleet_intelligence.group_mymach_fleet_user,1,1,1,1 +access_mymach_fleet_reservation_user,reservation_user,model_mymach_fleet_reservation,mymach_fleet_intelligence.group_mymach_fleet_user,1,1,1,0 +access_mymach_fleet_reservation_manager,reservation_manager,model_mymach_fleet_reservation,mymach_fleet_intelligence.group_mymach_fleet_manager,1,1,1,1 +access_mymach_fleet_home_user,home_user,model_mymach_fleet_home,mymach_fleet_intelligence.group_mymach_fleet_user,1,1,1,1 +access_mymach_fleet_fine_user,fine_user,model_mymach_fleet_fine,mymach_fleet_intelligence.group_mymach_fleet_user,1,0,0,0 +access_mymach_fleet_fine_manager,fine_manager,model_mymach_fleet_fine,mymach_fleet_intelligence.group_mymach_fleet_manager,1,1,1,1 +access_mymach_fleet_handover_user,handover_user,model_mymach_fleet_handover,mymach_fleet_intelligence.group_mymach_fleet_user,1,1,1,0 +access_mymach_fleet_handover_manager,handover_manager,model_mymach_fleet_handover,mymach_fleet_intelligence.group_mymach_fleet_manager,1,1,1,1 +access_mymach_fleet_periodic_maintenance_user,periodic_maintenance_user,model_mymach_fleet_periodic_maintenance,mymach_fleet_intelligence.group_mymach_fleet_user,1,1,0,0 +access_mymach_fleet_periodic_maintenance_manager,periodic_maintenance_manager,model_mymach_fleet_periodic_maintenance,mymach_fleet_intelligence.group_mymach_fleet_manager,1,1,1,1 +access_mymach_fleet_fuel_index_user,mymach.fleet.fuel.index.user,model_mymach_fleet_fuel_index,mymach_fleet_intelligence.group_mymach_fleet_user,1,0,0,0 +access_mymach_fleet_fuel_index_manager,mymach.fleet.fuel.index.manager,model_mymach_fleet_fuel_index,mymach_fleet_intelligence.group_mymach_fleet_manager,1,1,1,1 diff --git a/addons/mymach_fleet_intelligence/security/record_rules.xml b/addons/mymach_fleet_intelligence/security/record_rules.xml new file mode 100644 index 0000000..dc3681a --- /dev/null +++ b/addons/mymach_fleet_intelligence/security/record_rules.xml @@ -0,0 +1,87 @@ + + + + + + Sürücüler kendi sözleşmesini görür + + [('driver_id', '=', user.partner_id.id)] + + + + Yöneticiler tüm sözleşmeleri görür + + [(1, '=', 1)] + + + + + + Sürücüler kendi taleplerini görür + + [('create_uid', '=', user.id)] + + + + Yöneticiler tüm talepleri görür + + [(1, '=', 1)] + + + + + + Sürücüler kendi teslimatlarını görür + + [('driver_id', '=', user.partner_id.id)] + + + + Yöneticiler tüm teslimatları görür + + [(1, '=', 1)] + + + + + + Sürücüler kendi rota sapma uyarılarını görür + + [('vehicle_id.driver_id', '=', user.partner_id.id)] + + + + Yöneticiler tüm güvenlik ihlallerini görür + + [(1, '=', 1)] + + + + + Sürücüler kendi cezalarını görür + + [('driver_id', '=', user.partner_id.id)] + + + + Yöneticiler tüm cezaları görür + + [(1, '=', 1)] + + + + + + Sürücüler kendi araçlarının bakımlarını görür + + [('vehicle_id.driver_id', '=', user.partner_id.id)] + + + + Yöneticiler tüm bakımları görür + + [(1, '=', 1)] + + + + diff --git a/addons/mymach_fleet_intelligence/security/security_groups.xml b/addons/mymach_fleet_intelligence/security/security_groups.xml index f7ef938..938e66e 100644 --- a/addons/mymach_fleet_intelligence/security/security_groups.xml +++ b/addons/mymach_fleet_intelligence/security/security_groups.xml @@ -10,91 +10,7 @@ Yönetici / Admin (MyMach) - - - - - - - Sürücüler kendi sözleşmesini görür - - [('driver_id', '=', user.partner_id.id)] - - - - Yöneticiler tüm sözleşmeleri görür - - [(1, '=', 1)] - - - - - - Sürücüler kendi taleplerini görür - - [('create_uid', '=', user.id)] - - - - Yöneticiler tüm talepleri görür - - [(1, '=', 1)] - - - - - - Sürücüler kendi teslimatlarını görür - - [('driver_id', '=', user.partner_id.id)] - - - - Yöneticiler tüm teslimatları görür - - [(1, '=', 1)] - - - - - - Sürücüler kendi rota sapma uyarılarını görür - - [('vehicle_id.driver_id', '=', user.partner_id.id)] - - - - Yöneticiler tüm güvenlik ihlallerini görür - - [(1, '=', 1)] - - - - - Sürücüler kendi cezalarını görür - - [('driver_id', '=', user.partner_id.id)] - - - - Yöneticiler tüm cezaları görür - - [(1, '=', 1)] - - - - - - Sürücüler kendi araçlarının bakımlarını görür - - [('vehicle_id.driver_id', '=', user.partner_id.id)] - - - - Yöneticiler tüm bakımları görür - - [(1, '=', 1)] - + diff --git a/addons/mymach_fleet_intelligence/views/contract_views.xml b/addons/mymach_fleet_intelligence/views/contract_views.xml index 6742112..b42e11f 100644 --- a/addons/mymach_fleet_intelligence/views/contract_views.xml +++ b/addons/mymach_fleet_intelligence/views/contract_views.xml @@ -82,7 +82,6 @@ diff --git a/addons/mymach_fleet_intelligence/views/driver_tracker_template.xml b/addons/mymach_fleet_intelligence/views/driver_tracker_template.xml new file mode 100644 index 0000000..6a3332a --- /dev/null +++ b/addons/mymach_fleet_intelligence/views/driver_tracker_template.xml @@ -0,0 +1,282 @@ + + + + + + + Sürücü Mobil Takip Ekranı + /mymach/driver/tracker + new + + + + + diff --git a/addons/mymach_fleet_intelligence/views/fleet_vehicle_views.xml b/addons/mymach_fleet_intelligence/views/fleet_vehicle_views.xml index 57f3f5b..8561884 100644 --- a/addons/mymach_fleet_intelligence/views/fleet_vehicle_views.xml +++ b/addons/mymach_fleet_intelligence/views/fleet_vehicle_views.xml @@ -25,6 +25,12 @@ + + + + + + diff --git a/addons/mymach_fleet_intelligence/views/home_views.xml b/addons/mymach_fleet_intelligence/views/home_views.xml index 3e49eb8..cff6e31 100644 --- a/addons/mymach_fleet_intelligence/views/home_views.xml +++ b/addons/mymach_fleet_intelligence/views/home_views.xml @@ -60,12 +60,7 @@ action = {
- -
- -
- +

MYMACH FLEET INTELLIGENCE

@@ -216,7 +211,14 @@ action = { - + + + + + + + res.users.form.mymach.inherit + res.users + + + + + + + + + +