Bakım (App.Maintenance)
Menünün altındaki her dal bu dosyada bir bölümdür (module-doc:section); dosya ve bölümler ilk deploy'da otomatik açılır. module-doc:todo işaretli alt bölümleri modülü üreten kişi ya da AI doldurur (lowcode.instructions.md §0.13); MCP ile üretimde talep bu bölümler doldurulmadan Testing'e alınamaz. "Ek — Ekran envanteri" bölümü wizard dosyalarından üretilir, elle düzenlenmez.
Tanımlamalar (App.Maintenance.Definitions)
1. Amaç ve kapsam
Bakım modülünün (KADİFETEKS Odoo Bakım modülünden taşınan) tanım listeleri: ekipman kategorileri, bakım ekipleri, bakım tipleri, hizmet tipleri, arıza tipleri ve red nedenleri. Kullanıcılar bakım ve bilgi işlem yöneticileridir. Bakım/hizmet iş emirleri, bakım talimatları ve hizmet talepleri bu bölümün kapsamında değildir; bu ekranlar onların lookup kaynağıdır.
2. Analiz ve kararlar
- Modül kodu
Mm, tablo öneki Mm_T_, ekran kökü App.Maintenance (kullanıcı onayı).
- Sorumlu, Ekip Yöneticisi ve Ekip Üyeleri AbpUsers'tan seçilir (kullanıcı onayı); Ekip Üyeleri çoklu seçimdir (dxTagBox,
| ile ayrılmış Id'ler).
- Şube bilgisi
BranchId'dir (Ekipman Kategorileri ve Bakım Ekipleri); demo satırlar Branch1'e yazıldı (kullanıcı onayı).
- Hizmet Tipleri tablosundaki "Bakım Tipi" başlıklı kolon hizmetin adıdır →
Name / "Hizmet Tipi"; Bakım Tipleri'ne lookup yoktur (kullanıcı onayı).
- Odoo'daki "Satış Ekip Üyeleri" etiketi hatalıdır; alan "Ekip Üyeleri" olarak açıldı.
- Red Nedenleri, Satınalma'daki
App.Prc.RejectReason ile birleştirilmedi; Bakım'a ait kodlu ayrı liste.
- Ürün kartına ekipman işareti/kategorisi eklenmesi bu bölümün kapsamında değildir; kategori sonradan Envanter › Ürünler › Ekipman sekmesine bağlandı (
App.Inventory.md §2).
3. Menü ve ekranlar
Bakım (App.Maintenance) › Tanımlamalar (App.Maintenance.Definitions):
| Ekran |
Kod |
Not |
| Ekipman Kategorileri |
App.Maintenance.EquipmentCategory |
şube kapsamlı, 84 demo satır |
| Bakım Ekipleri |
App.Maintenance.Team |
şube kapsamlı, 5 demo satır; Bakım/Hizmet Tipleri'nin lookup kaynağı |
| Bakım Tipleri |
App.Maintenance.MaintenanceType |
11 demo satır |
| Hizmet Tipleri |
App.Maintenance.ServiceType |
79 demo satır (ST01–ST79) |
| Arıza Tipleri |
App.Maintenance.FailureType |
8 demo satır |
| Red Nedenleri |
App.Maintenance.RejectReason |
8 demo satır |
4. Veri modeli
Tüm tablolar kiracı (TenantId) + tam audit + soft delete taşır.
Mm_T_EquipmentCategory (BranchId, Name, ResponsibleUserId → AbpUsers, IsActive)
Mm_T_Team (BranchId, Name, ManagerUserId → AbpUsers, MemberUserIds nvarchar(MAX) | listesi, IsActive)
Mm_T_MaintenanceType (Code null olabilir, Name, TeamIds nvarchar(MAX) | listesi → Mm_T_Team, Description, SortOrder, IsActive)
Mm_T_ServiceType (SortOrder, Code, Name, TeamIds, Description, IsActive) — UQ (TenantId, Code)
Mm_T_FailureType (Code, Name, Description, SortOrder, IsActive) — UQ (TenantId, Code)
Mm_T_RejectReason (Code, Name, Description, SortOrder, IsActive) — UQ (TenantId, Code)
5. İş kuralları ve hesaplar
- Lookup'lar yalnızca silinmemiş kayıtları, ekip lookup'ı ayrıca yalnız aktif ekipleri listeler; kullanılmış tanım silinmez, pasife alınır.
- Bakım Tipleri, Hizmet Tipleri, Arıza Tipleri ve Red Nedenleri SortOrder'a göre artan sıralı açılır.
- Hizmet/Arıza/Red kodu kiracı içinde benzersizdir (soft delete edilmiş kayıt da kodu tutar).
- Hesaplanan alan yoktur.
6. Yetki ve görünürlük
Yetki ağacı: App.Maintenance › App.Maintenance.Definitions › her ekran (+ Create/Update/Delete/Export/Import/Note). Ekipman Kategorileri ve Bakım Ekipleri şube kapsamlıdır (IsBranch), diğerleri yalnız kiracı kapsamlıdır. Widget'lar: her ekranda Toplam · Aktif · Pasif.
7. Entegrasyonlar
Ekipman Kategorileri, Envanter › Ürünler › Ekipman sekmesinin kategori seçeneğidir (Inv_T_Product.EquipmentCategoryId); kullanılmış kategori silinmez, pasife alınır. Kullanıcı lookup'ları AbpUsers'tan, şube lookup'ı kullanıcıya atanmış aktif şubelerdir (Sas_T_Branch ⋈ Sas_T_BranchUsers, kiracıya süzülü; LookupQueryValues.UserBranchValues), yeni kayıt ilk şubeyle açılır (UserDefaultBranchValue).
8. Akış örneği
- Bakım › Tanımlamalar › Bakım Ekipleri'nde "elektrik bakım" ekibi açılır; Ekip Yöneticisi ve Ekip Üyeleri kullanıcılardan seçilir.
- Bakım Tipleri'nde "ELEKTRİK & ELEKTRONİK BAKIMLAR" düzenlenir, Bakım Ekipleri'ne "elektrik bakım" eklenir.
- Hizmet Tipleri'nde ST07 "Elektrik Arızası ( Tesisat )" satırına aynı ekip eklenir; hizmet talebinde bu tip seçildiğinde ilgili ekip önerilir.
9. Sık sorulanlar
- Ekipman kategorisi neden başka şubede görünmüyor? Liste seçili şubeye süzülür; kategori kaydedildiği şubeye aittir.
- Bakım tiplerinin demo verisinde ekipler neden boş? Demo ekiplerin Id'si migrate'te üretildiği için bağlantılar ekrandan elle kurulur.
- ST02 ile ST06 aynı ad mı? Evet, talepteki veri böyle; kodları farklıdır.
10. Dosyalar ve geri alma
- Tablolar:
sql/object/Mm_T_EquipmentCategory.sql, Mm_T_Team.sql, Mm_T_MaintenanceType.sql, Mm_T_ServiceType.sql, Mm_T_FailureType.sql, Mm_T_RejectReason.sql.
- Wizard'lar:
Mm_EquipmentCategory.json, Mm_Team.json, Mm_MaintenanceType.json, Mm_ServiceType.json, Mm_FailureType.json, Mm_RejectReason.json.
- Demo veri:
data/App.Maintenance.{EquipmentCategory,Team,MaintenanceType,ServiceType,FailureType,RejectReason}.json.
- Geri alma: ekranlar
delete_wizard ile silinir (önce Bakım/Hizmet Tipleri, sonra Bakım Ekipleri); tablolar yalnızca açık onayla dropTables: true ile düşürülür.
Ek — Ekran envanteri (otomatik)
Wizard dosyalarından üretilir; deploy, silme, tasarımcı kaydı ve import'ta yenilenir. Elle düzenleme bir sonraki yenilemede kaybolur.
Tanımlamalar (App.Maintenance.Definitions)
Ekipman Kategorileri — App.Maintenance.EquipmentCategory
| Özellik |
Değer |
| Wizard |
wizard/Mm_EquipmentCategory.json |
| Yol |
Liste (Wizard) |
| Menü |
App.Maintenance.Definitions › App.Maintenance.EquipmentCategory (sıra 1) |
| Yetki |
App.Maintenance.EquipmentCategory + .Create, .Update, .Delete, .Export, .Import, .Note |
| Açıklama |
Ekipman Kategorileri — ekipman olan ürünlerin bağlı olduğu gruplar (dokuma makineleri, kompresörler, bilgisayarlar, taşıtlar…). |
| Geliştirme talebi |
Bakım Modülü |
| Kaynak |
Mm_T_EquipmentCategory · filtre "IsDeleted" = 'false' |
| Görünümler |
Grid, Card, Pivot, Chart (açılış grid) |
| Düzenleme |
ekle ✓ · düzenle ✓ · sil ✓ · popup |
| Kapsam |
Kiracı |
| Widget'lar |
App.Widget.Total, App.Widget.Active, App.Widget.Passive |
| Form varsayılanları |
IsActive=true, BranchId= |
| Veri aynası |
data/App.Maintenance.EquipmentCategory.json |
| Alan |
Başlık |
Editör |
Zorunlu |
Formda |
Kaynak |
BranchId |
Şube Adı |
dxSelectBox |
✓ |
✓ |
sorgu: Sas_T_Branch |
Name |
Kategori Adı |
dxTextBox |
✓ |
✓ |
|
ResponsibleUserId |
Sorumlu |
dxSelectBox |
|
✓ |
sorgu: AbpUsers |
IsActive |
Aktif |
dxCheckBox |
✓ |
✓ |
|
Bakım Ekipleri — App.Maintenance.Team
| Özellik |
Değer |
| Wizard |
wizard/Mm_Team.json |
| Yol |
Liste (Wizard) |
| Menü |
App.Maintenance.Definitions › App.Maintenance.Team (sıra 2) |
| Yetki |
App.Maintenance.Team + .Create, .Update, .Delete, .Export, .Import, .Note |
| Açıklama |
Bakım Ekipleri — bakım yapacak kişilerin grupları (iç bakım, mekanik, elektrik, dış bakım/tedarikçi). |
| Geliştirme talebi |
Bakım Modülü |
| Kaynak |
Mm_T_Team · filtre "IsDeleted" = 'false' |
| Görünümler |
Grid, Card, Pivot, Chart (açılış grid) |
| Düzenleme |
ekle ✓ · düzenle ✓ · sil ✓ · popup |
| Kapsam |
Kiracı |
| Widget'lar |
App.Widget.Total, App.Widget.Active, App.Widget.Passive |
| Form varsayılanları |
IsActive=true, BranchId= |
| Veri aynası |
data/App.Maintenance.Team.json |
| Alan |
Başlık |
Editör |
Zorunlu |
Formda |
Kaynak |
BranchId |
Şube Adı |
dxSelectBox |
✓ |
✓ |
sorgu: Sas_T_Branch |
Name |
Ekip Adı |
dxTextBox |
✓ |
✓ |
|
ManagerUserId |
Ekip Yöneticisi |
dxSelectBox |
|
✓ |
sorgu: AbpUsers |
MemberUserIds |
Ekip Üyeleri |
dxTagBox |
|
✓ |
sorgu: AbpUsers |
IsActive |
Aktif |
dxCheckBox |
✓ |
✓ |
|
Bakım Tipleri — App.Maintenance.MaintenanceType
| Özellik |
Değer |
| Wizard |
wizard/Mm_MaintenanceType.json |
| Yol |
Liste (Wizard) |
| Menü |
App.Maintenance.Definitions › App.Maintenance.MaintenanceType (sıra 3) |
| Yetki |
App.Maintenance.MaintenanceType + .Create, .Update, .Delete, .Export, .Import, .Note |
| Açıklama |
Bakım Tipleri — bakım işinin türleri (mekanik, elektrik & elektronik, genel temizlik, ölçüm & kalibrasyon, periyodik, bilgi işlem donanım…). |
| Geliştirme talebi |
Bakım Modülü |
| Kaynak |
Mm_T_MaintenanceType · filtre "IsDeleted" = 'false' |
| Görünümler |
Grid, Card, Pivot, Chart (açılış grid) |
| Düzenleme |
ekle ✓ · düzenle ✓ · sil ✓ · popup |
| Kapsam |
Kiracı |
| Widget'lar |
App.Widget.Total, App.Widget.Active, App.Widget.Passive |
| Form varsayılanları |
SortOrder=0, IsActive=true |
| Veri aynası |
data/App.Maintenance.MaintenanceType.json |
| Alan |
Başlık |
Editör |
Zorunlu |
Formda |
Kaynak |
Code |
Kod |
dxTextBox |
|
✓ |
|
Name |
Bakım Tipi |
dxTextBox |
✓ |
✓ |
|
TeamIds |
Bakım Ekipleri |
dxTagBox |
|
✓ |
sorgu: Mm_T_Team |
Description |
Açıklama |
dxTextArea |
|
✓ |
|
SortOrder |
Sıra |
dxNumberBox |
✓ |
✓ |
|
IsActive |
Aktif |
dxCheckBox |
✓ |
✓ |
|
Hizmet Tipleri — App.Maintenance.ServiceType
| Özellik |
Değer |
| Wizard |
wizard/Mm_ServiceType.json |
| Yol |
Liste (Wizard) |
| Menü |
App.Maintenance.Definitions › App.Maintenance.ServiceType (sıra 4) |
| Yetki |
App.Maintenance.ServiceType + .Create, .Update, .Delete, .Export, .Import, .Note |
| Açıklama |
Hizmet Tipleri — bölümlerin talep edebileceği hizmet türleri (mekanik/elektrik arıza, bilgi işlem destek, yazıcı servisi, sunucu işleri, dokuma özel işlemleri…). |
| Geliştirme talebi |
Bakım Modülü |
| Kaynak |
Mm_T_ServiceType · filtre "IsDeleted" = 'false' |
| Görünümler |
Grid, Card, Pivot, Chart (açılış grid) |
| Düzenleme |
ekle ✓ · düzenle ✓ · sil ✓ · popup |
| Kapsam |
Kiracı |
| Widget'lar |
App.Widget.Total, App.Widget.Active, App.Widget.Passive |
| Form varsayılanları |
SortOrder=0, IsActive=true |
| Veri aynası |
data/App.Maintenance.ServiceType.json |
| Alan |
Başlık |
Editör |
Zorunlu |
Formda |
Kaynak |
SortOrder |
Sıra |
dxNumberBox |
✓ |
✓ |
|
Code |
Kod |
dxTextBox |
✓ |
✓ |
|
Name |
Hizmet Tipi |
dxTextBox |
✓ |
✓ |
|
TeamIds |
Bakım Ekipleri |
dxTagBox |
|
✓ |
sorgu: Mm_T_Team |
Description |
Açıklama |
dxTextArea |
|
✓ |
|
IsActive |
Aktif |
dxCheckBox |
✓ |
✓ |
|
Arıza Tipleri — App.Maintenance.FailureType
| Özellik |
Değer |
| Wizard |
wizard/Mm_FailureType.json |
| Yol |
Liste (Wizard) |
| Menü |
App.Maintenance.Definitions › App.Maintenance.FailureType (sıra 5) |
| Yetki |
App.Maintenance.FailureType + .Create, .Update, .Delete, .Export, .Import, .Note |
| Açıklama |
Arıza Tipleri — hizmet talebinde bildirilen arızanın sınıflandırması (mekanik, elektrik, pnömatik, hidrolik, yazılım/PLC, sensör, aşınma, diğer). |
| Geliştirme talebi |
Bakım Modülü |
| Kaynak |
Mm_T_FailureType · filtre "IsDeleted" = 'false' |
| Görünümler |
Grid, Card, Pivot, Chart (açılış grid) |
| Düzenleme |
ekle ✓ · düzenle ✓ · sil ✓ · popup |
| Kapsam |
Kiracı |
| Widget'lar |
App.Widget.Total, App.Widget.Active, App.Widget.Passive |
| Form varsayılanları |
SortOrder=0, IsActive=true |
| Veri aynası |
data/App.Maintenance.FailureType.json |
| Alan |
Başlık |
Editör |
Zorunlu |
Formda |
Kaynak |
Code |
Kod |
dxTextBox |
✓ |
✓ |
|
Name |
Arıza Tipi |
dxTextBox |
✓ |
✓ |
|
Description |
Açıklama |
dxTextArea |
|
✓ |
|
SortOrder |
Sıra |
dxNumberBox |
✓ |
✓ |
|
IsActive |
Aktif |
dxCheckBox |
✓ |
✓ |
|
Red Nedenleri — App.Maintenance.RejectReason
| Özellik |
Değer |
| Wizard |
wizard/Mm_RejectReason.json |
| Yol |
Liste (Wizard) |
| Menü |
App.Maintenance.Definitions › App.Maintenance.RejectReason (sıra 6) |
| Yetki |
App.Maintenance.RejectReason + .Create, .Update, .Delete, .Export, .Import, .Note |
| Açıklama |
Red Nedenleri — bakım ve hizmet iş taleplerinin reddedilme sebepleri (kullanıcı hatası, arıza bulunamadı, garanti, dış firma, hurda, mükerrer, bakım gerekmiyor, diğer). |
| Geliştirme talebi |
Bakım Modülü |
| Kaynak |
Mm_T_RejectReason · filtre "IsDeleted" = 'false' |
| Görünümler |
Grid, Card, Pivot, Chart (açılış grid) |
| Düzenleme |
ekle ✓ · düzenle ✓ · sil ✓ · popup |
| Kapsam |
Kiracı |
| Widget'lar |
App.Widget.Total, App.Widget.Active, App.Widget.Passive |
| Form varsayılanları |
SortOrder=0, IsActive=true |
| Veri aynası |
data/App.Maintenance.RejectReason.json |
| Alan |
Başlık |
Editör |
Zorunlu |
Formda |
Kaynak |
Code |
Kod |
dxTextBox |
✓ |
✓ |
|
Name |
Red Nedeni |
dxTextBox |
✓ |
✓ |
|
Description |
Açıklama |
dxTextArea |
|
✓ |
|
SortOrder |
Sıra |
dxNumberBox |
✓ |
✓ |
|
IsActive |
Aktif |
dxCheckBox |
✓ |
✓ |
|