sozsoft-platform/configs/seeds/docs/modules/App.Maintenance.md

479 lines
30 KiB
Markdown
Raw Normal View History

2026-10-14 22:42:19 +00:00
# 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.
<!-- module-doc:section App.Maintenance.Definitions -->
## 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.
2026-10-17 23:15:46 +00:00
- Ü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).
2026-10-14 22:42:19 +00:00
### 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
2026-10-17 23:15:46 +00:00
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`).
2026-10-14 22:42:19 +00:00
### 8. Akış örneği
1. 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.
2. Bakım Tipleri'nde "ELEKTRİK & ELEKTRONİK BAKIMLAR" düzenlenir, Bakım Ekipleri'ne "elektrik bakım" eklenir.
3. 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.
2026-10-17 23:59:45 +00:00
<!-- module-doc:section App.Maintenance.Operations -->
## Bakım (`App.Maintenance.Operations`)
### 1. Amaç ve kapsam
Ekipmanların periyodik bakım planı: hangi ekipmana, hangi ekiple, hangi malzeme, kontrol listesi ve dokümanlarla, ne sıklıkta bakım yapılacağı. Plan departman onayından geçer; sonraki bakım tarihini zamanlanmış iş her gece hesaplar. Kullanıcılar bakım planlamacıları ve ekipmanın departman onaycılarıdır. Bakım iş emri henüz yoktur; iş emri ekranı geldiğinde vadesi gelen onaylı talimattan iş emri açılır.
### 2. Analiz ve kararlar
Onaylanan tarif (2026-10-18, görsellerden: talimat formu, Kontrol Listesi ve Dokümanlar sekmeleri):
- Menü `Bakım › Bakım` (yeni dal `App.Maintenance.Operations`, sıra 2) › Bakım Talimatları.
- Ekipman ayrı bir tablo değildir; Ekipman Kategorisi dolu olan üründür (`Inv_T_Product`, Ürünler › Ekipman sekmesi). Diğer ürünler ekipman listesinde görünmez (kullanıcı kararı). Seçenek "Ad [İç Referans]/Seri No" olarak gösterilir.
- Periyot "Her N Gün / Hafta / Ay / Yıl" (kullanıcı kararı).
- Zamanlanmış iş yalnızca sonraki bakım tarihini hesaplar; iş emri tablosu açılmadı (kullanıcı kararı: "Yalnızca sonraki tarih").
- Onaycı departman onaycısıdır (kullanıcı kararı): Onaycılar ekranında ekipmanın departmanı (`EquipmentDepartmentId`) için yeni **Bakım** onay yeri (`Maintenance`). Red nedeni Bakım › Red Nedenleri'nden seçilir.
- Genel sekmesi yalnız zengin metin bakım talimatıdır (kullanıcı kararı). Onay Bilgileri sekmesi akışın dört alanını ve departman onaycılarını salt okunur gösterir.
- Bakım Kodu otomatik (`Mm.MaintenanceInstruction` numaratörü, `BKM00001`). Talimat işlem kaydıdır: `BranchId` taşır ve şube kapsamlıdır (`IsBranch`). Sekme tabloları şube kolonu taşımaz; şubeyi bağlı oldukları talimattan alırlar (kullanıcı kararı).
- Doküman Tipi sabit liste: Kullanım Kılavuzu, Prosedür, Teknik Çizim, Sertifika, Diğer. Dosya kayıtta base64 saklanır.
Üretimde verilen ek kararlar:
- Kayıt sonrası komutlar yordam çağırmaz, iki sağlayıcıda da çalışan tek bir `UPDATE`'tir; ekran komutu sağlayıcıya göre çevrilmediği için `EXEC` kullanılmadı. Tarih aritmetiği sağlayıcıya göre değiştiğinden periyot hesabı yalnız zamanlanmış işin yordamındadır (`sql/` + `postgres/` eşi).
- Sonraki bakım tarihi onay durumundan bağımsız hesaplanır; onay şartı iş emri açılırken uygulanacaktır.
- Güncelleme varsayılanlarına `Id = @ID` yazılmaz: yazılırsa anahtar tek değer olarak gider ve güncelleme sonrası komuttaki `"Id" IN @Id` geçersiz SQL olur (Onayla düğmesinde "Incorrect syntax near @Id" hatası). Satır yoksa platform anahtarı liste olarak ekler.
### 3. Menü ve ekranlar
Bakım (`App.Maintenance`) › Bakım (`App.Maintenance.Operations`) › Bakım Talimatları (`App.Maintenance.MaintenanceInstruction`).
Sekmeler (menüsüz alt formlar), sırasıyla: Kullanılacak Malzemeler, Kontrol Listesi, Dokümanlar (listeler; ilişki `Id → MaintenanceInstructionId`), Genel, Onay Bilgileri (talimat satırının kendisi, `Id → Id`).
### 4. Veri modeli
Tüm tablolar kiracı + tam audit + soft delete + `IsActive` taşır; şube (`BranchId`) yalnız talimat tablosundadır.
- `Mm_T_MaintenanceInstruction` (Code, Name, MaintenanceTypeId → `Mm_T_MaintenanceType`, EquipmentId → `Inv_T_Product`, TeamIds `|` listesi → `Mm_T_Team`, PeriodValue int, PeriodUnit `Day`/`Week`/`Month`/`Year`, StartDate, EndDate, NextDueDate, InstructionText, DeptApproverUserNames, iş akışının dört kolonu)
- `Mm_T_MaintenanceInstructionMaterial` (MaintenanceInstructionId, ProductId → `Inv_T_Product`, Quantity, UomId → `Adm_T_Uom`, Description)
- `Mm_T_MaintenanceInstructionCheck` (MaintenanceInstructionId, Name, Description, IsRequired)
- `Mm_T_MaintenanceInstructionDocument` (MaintenanceInstructionId, Name, DocumentType, FileContent, Version)
### 5. İş kuralları ve hesaplar
- **Sonraki bakım:** `Başlangıç + k × periyot` dizisinde bugüne eşit ya da sonraki ilk tarih. Hafta 7 gün, yıl 12 aydır; ay eklemede ay sonu korunur (31 Ocak › 28 Şubat). Bitiş Tarihi'ni aşan tarih boş kalır. Pasif ya da silinmiş talimatta tarih boştur.
- **Hesaplama zamanı:** Maintenance Instruction Schedule işi (her gece 01:00, `Mm_S_MaintenanceInstructionSchedule`). Kayıtta yalnız Başlangıç Tarihi bugün ya da ileride ise sonraki bakım hemen Başlangıç Tarihi olur; geçmiş başlangıç ve periyot değişikliği gece işlenir.
- **Departman onaycıları:** her kayıtta ve akış adımında yeniden yazılır: ekipmanın departmanı için aktif Bakım onaycılarının aktif kullanıcı adları, `|` ile.
- **Bakım Ekipleri** seçili şubenin aktif ekiplerini listeler; şube değişince temizlenir. **Malzeme** seçilince birim üründen dolar.
- **Varsayılanlar:** yeni talimat ilk şube, bugün, Her 1 Ay ve Aktif ile; malzeme 1 Adet; doküman tipi Diğer ile açılır.
### 6. Yetki ve görünürlük
`App.Maintenance` › `App.Maintenance.Operations` › `App.Maintenance.MaintenanceInstruction` (+ Create/Update/Delete/Export/Import/Note); beş sekmenin yetkisi talimat yetkisinin altındadır. Yetkiler hiçbir role otomatik verilmez. Akışı başlatmak ve karar vermek talimatın Update yetkisini ister; karar yalnız departman onaycılarındadır. Widget'lar: Toplam · Aktif · Onay Bekleyen · Onaylanan.
### 7. Entegrasyonlar
Ekipman, malzeme ve birim Envanter'den; ekipmanın departmanı İK › Departmanlar'dan; onaycılar Yönetim › Onaycılar'dan (Bakım onay yeri); bakım tipi, ekip ve red nedeni Bakım › Tanımlamalar'dan okunur. Zamanlanmış iş `SqlWorker` türündedir, kapsamı Host ve Kiracılar'dır.
### 8. Akış örneği
1. Ürünler'de "örme motoru"nun Ekipman sekmesinde Ekipman Kategorisi ve Departman seçilir.
2. Onaycılar'da o departman için Onay Yeri = Bakım satırı eklenir.
3. Bakım Talimatları'nda "motor yanmış" talimatı açılır: ekipman örme motoru [MTR-001]/MTR-001, Her 60 Gün, başlangıç 18 Eylül. Malzeme, kontrol maddesi ve doküman sekmelerden eklenir.
4. Başlat düğmesiyle talimat Departman Onayı'na düşer; onaycı onaylar ya da red nedeniyle reddeder.
5. İş her gece sonraki bakımı ilerletir: 18 Eylül › 17 Kasım.
### 9. Sık sorulanlar
- **Ekipman listesinde ürünüm yok?** Ürünün Ekipman sekmesinde Ekipman Kategorisi seçilmeli ve ürün aktif olmalıdır.
- **Onaya gönderdim ama kimse onaylayamıyor?** Ekipmanın departmanı boş ya da o departman için Bakım onay yerinde aktif onaycı yoktur. Onaycıyı ekleyip talimatı kaydedin; liste kayıtta yenilenir.
- **Sonraki Bakım boş?** Başlangıç geçmişteyse tarih ilk gece işinde dolar. Bitişi geçmiş ya da pasif talimatta tarih boştur.
- **İş emri neden açılmıyor?** İş emri ekranı henüz yoktur; geldiğinde zamanlanmış işin yordamına eklenecektir.
### 10. Dosyalar ve geri alma
- **Tablolar:** `sql/object/Mm_T_MaintenanceInstruction{,Material,Check,Document}.sql` ve `postgres/object/` eşleri.
- **Zamanlanmış iş:** `sql/object/Mm_S_MaintenanceInstructionSchedule.sql` (yordam) + `postgres/object/` eşi (void fonksiyon); satır `data/App.BackgroundWorkers.RecurringJobs.json`.
- **Wizard'lar:** `Mm_MaintenanceInstruction`, `…Material`, `…Check`, `…Document`, `…General`, `…Approval` (`.json`).
- **Numaratör:** `data/App.Definitions.Sequence.json` › `Mm.MaintenanceInstruction`.
- **Onay yeri:** `wizard/Adm_Approver.json` Onay Yeri listesine `Maintenance` eklendi.
- **Geri alma:** Wizard Manager'da önce `Mm_MaintenanceInstruction`, sonra beş sekme silinir; zamanlanmış iş satırı ve numaratör dosyadan çıkarılır. Tablolar ancak açık onayla düşürülür.
2026-10-14 22:42:19 +00:00
<!-- module-doc:auto:begin -->
## 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` |
2026-10-17 23:15:46 +00:00
| Form varsayılanları | IsActive=true, BranchId= |
2026-10-14 22:42:19 +00:00
| Veri aynası | `data/App.Maintenance.EquipmentCategory.json` |
| Alan | Başlık | Editör | Zorunlu | Formda | Kaynak |
| --- | --- | --- | --- | --- | --- |
2026-10-17 23:15:46 +00:00
| `BranchId` | Şube Adı | dxSelectBox | ✓ | ✓ | sorgu: Sas_T_Branch |
2026-10-14 22:42:19 +00:00
| `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` |
2026-10-17 23:15:46 +00:00
| Form varsayılanları | IsActive=true, BranchId= |
2026-10-14 22:42:19 +00:00
| Veri aynası | `data/App.Maintenance.Team.json` |
| Alan | Başlık | Editör | Zorunlu | Formda | Kaynak |
| --- | --- | --- | --- | --- | --- |
2026-10-17 23:15:46 +00:00
| `BranchId` | Şube Adı | dxSelectBox | ✓ | ✓ | sorgu: Sas_T_Branch |
2026-10-14 22:42:19 +00:00
| `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 | ✓ | ✓ | |
2026-10-17 23:59:45 +00:00
### Bakım (`App.Maintenance.Operations`)
#### Bakım Talimatları — `App.Maintenance.MaintenanceInstruction`
| Özellik | Değer |
| --- | --- |
| Wizard | `wizard/Mm_MaintenanceInstruction.json` |
| Yol | Liste (Wizard) |
| Menü | `App.Maintenance.Operations` › `App.Maintenance.MaintenanceInstruction` (sıra 1) |
| Yetki | `App.Maintenance.MaintenanceInstruction` + `.Create`, `.Update`, `.Delete`, `.Export`, `.Import`, `.Note` |
| Açıklama | Bakım Talimatları — ekipmanların periyodik bakım planları. |
| Kaynak | `Mm_T_MaintenanceInstruction` · filtre `"IsDeleted" = 'false'` |
| Görünümler | Grid, Card, Pivot, Chart (açılış grid) |
| Düzenleme | ekle ✓ · düzenle ✓ · sil ✓ · popup |
| Kapsam | Kiracı |
| Alt formlar | `App.Maintenance.MaintenanceInstructionMaterial` (Id → MaintenanceInstructionId, BranchId → BranchId), `App.Maintenance.MaintenanceInstructionCheck` (Id → MaintenanceInstructionId, BranchId → BranchId), `App.Maintenance.MaintenanceInstructionDocument` (Id → MaintenanceInstructionId, BranchId → BranchId), `App.Maintenance.MaintenanceInstructionGeneral` (Id → Id), `App.Maintenance.MaintenanceInstructionApproval` (Id → Id) |
| Widget'lar | `App.Widget.Total`, `App.Widget.Active`, `App.Widget.AwaitingApproval`, `App.Widget.Approved` |
| Komutlar | InsertAfter: SQL · UpdateAfter: SQL |
| Form varsayılanları | Code=Mm.MaintenanceInstruction, BranchId=, StartDate=@NOW, PeriodValue=1, PeriodUnit=Month, IsActive=true |
| Onay akışı | Start 'Onaya Gönderildi' → Approval 'Departman Onayı' → End 'Onaylandı' → End 'Reddedildi' |
| Alan | Başlık | Editör | Zorunlu | Formda | Kaynak |
| --- | --- | --- | --- | --- | --- |
| `BranchId` | Şube Adı | dxSelectBox | ✓ | ✓ | sorgu: Sas_T_Branch |
| `Code` | Bakım Kodu | dxTextBox | | ✓ | |
| `MaintenanceTypeId` | Bakım Tipi | dxSelectBox | | ✓ | sorgu: Mm_T_MaintenanceType |
| `Name` | Bakım Adı | dxTextBox | ✓ | ✓ | |
| `EquipmentId` | Ekipman | dxSelectBox | ✓ | ✓ | sorgu: Inv_T_Product |
| `TeamIds` | Bakım Ekipleri | dxTagBox | | ✓ | sorgu: Mm_T_Team (← BranchId) |
| `PeriodValue` | Periyot | dxNumberBox | ✓ | ✓ | |
| `PeriodUnit` | Periyot Birimi | dxSelectBox | ✓ | ✓ | liste: Day, Week, Month, Year |
| `StartDate` | Başlangıç Tarihi | dxDateBox | ✓ | ✓ | |
| `EndDate` | Bitiş Tarihi | dxDateBox | | ✓ | |
| `NextDueDate` | Sonraki Bakım | dxDateBox | | | |
| `IsActive` | Aktif | dxCheckBox | | ✓ | |
| `ApprovalStatus` | Onay Durumu | dxTextBox | | | |
| `ApprovalUserName` | Onaylayan Kullanıcı Adı | dxTextBox | | | |
| `ApprovalDate` | Onay Tarihi | dxDateBox | | | |
| `ApprovalDescription` | Onay Açıklaması | dxTextBox | | | |
| `DeptApproverUserNames` | Departman Onaycıları | dxTextBox | | | |
#### Onay Bilgileri — `App.Maintenance.MaintenanceInstructionApproval`
| Özellik | Değer |
| --- | --- |
| Wizard | `wizard/Mm_MaintenanceInstructionApproval.json` |
| Yol | Liste (Wizard) |
| Menü | Menüsüz (alt form) |
| Yetki | `App.Maintenance.MaintenanceInstructionApproval` + `.Create`, `.Update`, `.Delete`, `.Export`, `.Import`, `.Note` |
| Açıklama | Bakım Talimatı Onay Bilgileri — talimatın onay durumu (salt okunur). |
| Kaynak | `Mm_T_MaintenanceInstruction` · filtre `"IsDeleted" = 'false'` |
| Görünümler | Grid, Card, Pivot, Chart (açılış grid) |
| Düzenleme | ekle ✗ · düzenle ✗ · sil ✗ · popup |
| Kapsam | Kiracı |
| Alan | Başlık | Editör | Zorunlu | Formda | Kaynak |
| --- | --- | --- | --- | --- | --- |
| `ApprovalStatus` | Onay Durumu | dxTextBox | | ✓ | |
| `ApprovalUserName` | Onaylayan Kullanıcı Adı | dxTextBox | | ✓ | |
| `ApprovalDate` | Onay Tarihi | dxDateBox | | ✓ | |
| `ApprovalDescription` | Onay Açıklaması | dxTextArea | | ✓ | |
| `DeptApproverUserNames` | Departman Onaycıları | dxTextBox | | ✓ | |
#### Kontrol Listesi — `App.Maintenance.MaintenanceInstructionCheck`
| Özellik | Değer |
| --- | --- |
| Wizard | `wizard/Mm_MaintenanceInstructionCheck.json` |
| Yol | Liste (Wizard) |
| Menü | Menüsüz (alt form) |
| Yetki | `App.Maintenance.MaintenanceInstructionCheck` + `.Create`, `.Update`, `.Delete`, `.Export`, `.Import`, `.Note` |
| Açıklama | Kontrol Listesi — bakım talimatı uygulanırken teknisyenin kontrol ettiği maddeler. |
| Kaynak | `Mm_T_MaintenanceInstructionCheck` · filtre `"IsDeleted" = 'false'` |
| Görünümler | Grid, Card, Pivot, Chart (açılış grid) |
| Düzenleme | ekle ✓ · düzenle ✓ · sil ✓ · popup |
| Kapsam | Kiracı |
| Form varsayılanları | IsActive=true, IsRequired=false |
| Alan | Başlık | Editör | Zorunlu | Formda | Kaynak |
| --- | --- | --- | --- | --- | --- |
| `MaintenanceInstructionId` | Kimlik | dxTextBox | | | |
| `Name` | Kontrol Maddesi | dxTextBox | ✓ | ✓ | |
| `Description` | Açıklama | dxTextArea | | ✓ | |
| `IsRequired` | Zorunlu | dxCheckBox | | ✓ | |
| `IsActive` | Aktif | dxCheckBox | | ✓ | |
#### Dokümanlar — `App.Maintenance.MaintenanceInstructionDocument`
| Özellik | Değer |
| --- | --- |
| Wizard | `wizard/Mm_MaintenanceInstructionDocument.json` |
| Yol | Liste (Wizard) |
| Menü | Menüsüz (alt form) |
| Yetki | `App.Maintenance.MaintenanceInstructionDocument` + `.Create`, `.Update`, `.Delete`, `.Export`, `.Import`, `.Note` |
| Açıklama | Dokümanlar — bakım talimatına eklenen kılavuz, prosedür, çizim ve sertifikalar. |
| Kaynak | `Mm_T_MaintenanceInstructionDocument` · filtre `"IsDeleted" = 'false'` |
| Görünümler | Grid, Card, Pivot, Chart (açılış grid) |
| Düzenleme | ekle ✓ · düzenle ✓ · sil ✓ · popup |
| Kapsam | Kiracı |
| Form varsayılanları | IsActive=true, DocumentType=Other |
| Alan | Başlık | Editör | Zorunlu | Formda | Kaynak |
| --- | --- | --- | --- | --- | --- |
| `MaintenanceInstructionId` | Kimlik | dxTextBox | | | |
| `BranchId` | BranchId | dxSelectBox | | | sorgu: Sas_T_Branch |
| `Name` | Doküman Adı | dxTextBox | ✓ | ✓ | |
| `DocumentType` | Belge Tipi | dxSelectBox | ✓ | ✓ | liste: UserManual, Procedure, TechnicalDrawing, Certificate, Other |
| `FileContent` | Dosya | dxImageUpload | | ✓ | |
| `Version` | Versiyon | dxTextBox | | ✓ | |
| `IsActive` | Aktif | dxCheckBox | | ✓ | |
#### Genel — `App.Maintenance.MaintenanceInstructionGeneral`
| Özellik | Değer |
| --- | --- |
| Wizard | `wizard/Mm_MaintenanceInstructionGeneral.json` |
| Yol | Liste (Wizard) |
| Menü | Menüsüz (alt form) |
| Yetki | `App.Maintenance.MaintenanceInstructionGeneral` + `.Create`, `.Update`, `.Delete`, `.Export`, `.Import`, `.Note` |
| Açıklama | Bakım Talimatı Genel — bakım talimatının yazılı metni. |
| Kaynak | `Mm_T_MaintenanceInstruction` · filtre `"IsDeleted" = 'false'` |
| Görünümler | Grid, Card, Pivot, Chart (açılış grid) |
| Düzenleme | ekle ✗ · düzenle ✓ · sil ✗ · popup |
| Kapsam | Kiracı |
| Alan | Başlık | Editör | Zorunlu | Formda | Kaynak |
| --- | --- | --- | --- | --- | --- |
| `InstructionText` | Bakım Talimatı | dxHtmlEditor | | ✓ | |
#### Kullanılacak Malzemeler — `App.Maintenance.MaintenanceInstructionMaterial`
| Özellik | Değer |
| --- | --- |
| Wizard | `wizard/Mm_MaintenanceInstructionMaterial.json` |
| Yol | Liste (Wizard) |
| Menü | Menüsüz (alt form) |
| Yetki | `App.Maintenance.MaintenanceInstructionMaterial` + `.Create`, `.Update`, `.Delete`, `.Export`, `.Import`, `.Note` |
| Açıklama | Kullanılacak Malzemeler — bakım talimatının gerektirdiği yedek parça ve sarf malzemeleri. |
| Kaynak | `Mm_T_MaintenanceInstructionMaterial` · filtre `"IsDeleted" = 'false'` |
| Görünümler | Grid, Card, Pivot, Chart (açılış grid) |
| Düzenleme | ekle ✓ · düzenle ✓ · sil ✓ · popup |
| Kapsam | Kiracı |
| Form varsayılanları | IsActive=true, Quantity=1, UomId=Adet |
| Alan | Başlık | Editör | Zorunlu | Formda | Kaynak |
| --- | --- | --- | --- | --- | --- |
| `MaintenanceInstructionId` | Kimlik | dxTextBox | | | |
| `ProductId` | Malzeme | dxSelectBox | ✓ | ✓ | sorgu: Inv_T_Product · script |
| `Quantity` | Miktar | dxNumberBox | ✓ | ✓ | |
| `UomId` | Birim | dxSelectBox | ✓ | ✓ | sorgu: Adm_T_Uom |
| `Description` | Açıklama | dxTextBox | | ✓ | |
| `IsActive` | Aktif | dxCheckBox | | ✓ | |
2026-10-14 22:42:19 +00:00
<!-- module-doc:auto:end -->