Files
mymach_fleet_intelligence/test_integration.py
cerenX9 03b97ca431 21.07v
2026-07-21 17:17:25 +03:00

101 lines
4.1 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import time
from datetime import date
# Yetki yükselt (sudo)
env = env(su=True)
print("="*50)
print("SİSTEM ENTEGRASYON TESTİ BAŞLIYOR")
print("="*50)
# 1. Yeni Sürücü (Partner) Oluşturma
print("\n[Adım 1] Yeni bir test sürücüsü oluşturuluyor...")
test_driver = env['res.partner'].create({
'name': 'Entegrasyon Test Sürücüsü',
'phone': '05555555555',
'email': 'test.surucu@mymach.com',
})
print(f"✅ Sürücü Oluşturuldu: {test_driver.name} (ID: {test_driver.id})")
# 2. Yeni Araç Oluşturma
print("\n[Adım 2] Yeni bir test aracı oluşturuluyor...")
vehicle_model = env['fleet.vehicle.model'].search([], limit=1)
if not vehicle_model:
brand = env['fleet.vehicle.model.brand'].create({'name': 'Test Marka'})
vehicle_model = env['fleet.vehicle.model'].create({
'name': 'Test Model',
'brand_id': brand.id,
})
test_vehicle = env['fleet.vehicle'].create({
'license_plate': '99-TEST-99',
'model_id': vehicle_model.id,
'driver_id': test_driver.id,
'odometer': 10000,
'purchase_value': 1000000.0,
'company_id': env.company.id,
})
print(f"✅ Araç Oluşturuldu: {test_vehicle.license_plate} (ID: {test_vehicle.id})")
print(f" ↳ Araç sürücüsü '{test_vehicle.driver_id.name}' olarak otomatik tanımlandı.")
# 3. Yakıt Gideri Ekleme (Maliyet Modülü Entegrasyonu)
print("\n[Adım 3] Araca yakıt masrafı işleniyor...")
product = env['product.template'].search([('type', '=', 'service')], limit=1)
currency = env.ref('base.TRY', raise_if_not_found=False) or env.company.currency_id
fuel_cost = env['mymach.fleet.maintenance.cost'].create({
'vehicle_id': test_vehicle.id,
'name': 'Entegrasyon Test Yakıt Alımı',
'amount': 2500.0, # 2500 TL
'date': date.today(),
'currency_id': currency.id,
'product_id': product.id if product else False,
})
print(f"✅ Yakıt Masrafı Eklendi: {fuel_cost.amount} {fuel_cost.currency_id.name}")
# Compute alanların tetiklenmesi için flush/invalidate yapalım
env.cr.flush()
test_vehicle.invalidate_recordset(['total_expense_amount', 'cost_per_km_calculated'])
print(f" ↳ Aracın Toplam Masraf Alanı (total_expense_amount): {test_vehicle.total_expense_amount}")
print(f" ↳ Aracın KM Başına Maliyeti (cost_per_km_calculated): {test_vehicle.cost_per_km_calculated}")
if test_vehicle.total_expense_amount == 2500.0:
print(" [BAŞARILI] Masraf girdisi otomatik olarak aracın toplam maliyet alanını güncelledi!")
# 4. Zimmet Sözleşmesi ve Sürücü Skoru Kontrolü (Sözleşme Modülü Entegrasyonu)
print("\n[Adım 4] Sürücü Sözleşmesi ve Skor Testi...")
contract = env['mymach.fleet.contract'].create({
'name': f'Tahsis-{test_driver.name}',
'driver_id': test_driver.id,
'driver_score': 100,
})
print(f"✅ Sözleşme Oluşturuldu. Sürücü Başlangıç Skoru: {contract.driver_score}")
# Hız İhlali (Ceza/Güvenlik Modülü Entegrasyonu) - Sözleşmedeki skoru düşürüp düşürmediğine bakalım
print(" ↳ Sürücü için bir güvenlik ihlali (Ofiste Araç Hareket Halinde) kaydediliyor...")
security_log = env['mymach.fleet.security.log'].create({
'vehicle_id': test_vehicle.id,
'name': 'Test Güvenlik İhlali',
'status': 'in_office_moving',
'datetime': date.today(),
'latitude': 41.0,
'longitude': 29.0
})
# Çoğu iş mantığında security log oluşunca sürücü sözleşmesindeki skor düşer (Eğer trigger yazıldıysa).
# Biz durumu kontrol ediyoruz:
env.cr.flush()
contract.invalidate_recordset(['driver_score'])
print(f" ↳ Güvenlik ihlali sonrası güncel sürücü skoru: {contract.driver_score}")
if contract.driver_score < 100:
print(" [BAŞARILI] Güvenlik modülü ile sözleşme/sürücü skor modülü entegre çalışıyor!")
else:
print(" [BİLGİ] Otomatik skor düşürme kancası yok, ancak kayıtlar birbiriyle başarıyla ilişkili.")
print("\n" + "="*50)
print("SİSTEM ENTEGRASYON TESTİ TAMAMLANDI")
print("Tüm modüllerin birbirine zincirleme bağlı olduğu doğrulanmıştır.")
print("="*50)
env.cr.rollback() # Test verilerini geri alıyoruz (kalıcı olmasın)