sozsoft-platform/configs/seeds/docs/modules/Mnt.md
2026-10-19 17:35:08 +03:00

683 lines
48 KiB
Markdown
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.

# Bakım (`Mnt`)
> 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 Mnt.Definitions -->
## Tanımlamalar (`Mnt.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 `Mnt`, tablo öneki `Mnt_T_`, ekran kökü `Mnt` (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 `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ı (`Stk.md` §2).
- Masraf Merkezleri (2026-10-18, görselden: analitik hesaplar listesi): ağaç yapısı üst masraf merkeziyle kurulur, ad listede ve seçimlerde "Üst / Ad" olarak görünür; Firma şubedir. Planla, Borç, Alacak ve Bakiye sütunları alınmadı (kullanıcı kararı; muhasebe hareketi tutan tablo yok). Görselde okunan 15 satır ve üstleri "Doğal Kaynak Tüketimi" ilk şubeye (Branch1) demo veri olarak yazıldı.
### 3. Menü ve ekranlar
Bakım (`Mnt`) › Tanımlamalar (`Mnt.Definitions`):
| Ekran | Kod | Not |
| --- | --- | --- |
| Ekipman Kategorileri | `Mnt.EquipmentCategory` | şube kapsamlı, 84 demo satır |
| Bakım Ekipleri | `Mnt.Team` | şube kapsamlı, 5 demo satır; Bakım/Hizmet Tipleri'nin lookup kaynağı |
| Bakım Tipleri | `Mnt.MaintenanceType` | 11 demo satır |
| Hizmet Tipleri | `Mnt.ServiceType` | 79 demo satır (ST01–ST79) |
| Arıza Tipleri | `Mnt.FailureType` | 8 demo satır |
| Red Nedenleri | `Mnt.RejectReason` | 8 demo satır |
| Masraf Merkezleri | `Mnt.CostCenter` | şube kapsamlı, ağaç (üst masraf merkezi), 16 demo satır; Ürünler › Ekipman sekmesinin masraf merkezi kaynağı |
### 4. Veri modeli
Tüm tablolar kiracı (`TenantId`) + tam audit + soft delete taşır.
- `Mnt_T_EquipmentCategory` (BranchId, Name, ResponsibleUserId → AbpUsers, IsActive)
- `Mnt_T_Team` (BranchId, Name, ManagerUserId → AbpUsers, MemberUserIds nvarchar(MAX) `|` listesi, IsActive)
- `Mnt_T_MaintenanceType` (Code null olabilir, Name, TeamIds nvarchar(MAX) `|` listesi → Mnt_T_Team, Description, SortOrder, IsActive)
- `Mnt_T_ServiceType` (SortOrder, Code, Name, TeamIds, Description, IsActive) — UQ (TenantId, Code)
- `Mnt_T_FailureType` (Code, Name, Description, SortOrder, IsActive) — UQ (TenantId, Code)
- `Mnt_T_RejectReason` (Code, Name, Description, SortOrder, IsActive) — UQ (TenantId, Code)
- `Mnt_T_CostCenter` (BranchId, ParentId → kendisi, Name, Code (Referans), DepartmentId → `Hr_T_Department`, CustomerId → `Adm_T_Contact`, IsActive)
### 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ı: `Mnt` › `Mnt.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 (`Stk_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
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/Mnt_T_EquipmentCategory.sql`, `Mnt_T_Team.sql`, `Mnt_T_MaintenanceType.sql`, `Mnt_T_ServiceType.sql`, `Mnt_T_FailureType.sql`, `Mnt_T_RejectReason.sql`.
- Wizard'lar: `Mnt_EquipmentCategory.json`, `Mnt_Team.json`, `Mnt_MaintenanceType.json`, `Mnt_ServiceType.json`, `Mnt_FailureType.json`, `Mnt_RejectReason.json`.
- Demo veri: `data/Mnt.{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.
<!-- module-doc:section Mnt.Operations -->
## Bakım (`Mnt.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. Bakım iş emirleri talimatın her vadesinde otomatik ya da elle açılır; malzeme, personel süresi, duruş ve not kaydı tutar, malzemeyi ekipmanın departmanının depolarındaki stoktan (ürün + lot/seri) seçer ve departman onayıyla Bakım Sarf Tüketimi teslimatı açar. Kullanıcılar bakım planlamacıları, bakım teknisyenleri ve ekipmanın departman onaycılarıdı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 `Mnt.Operations`, sıra 2) › Bakım Talimatları.
- Ekipman ayrı bir tablo değildir; Ekipman Kategorisi dolu olan üründür (`Stk_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ş ilk sürümde yalnızca sonraki bakım tarihini hesaplıyordu (kullanıcı kararı); iş emri ekranıyla birlikte vadede iş emri de açar (aşağıda).
- 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 (`Mnt.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.
Onaylanan tarif — Bakım İş Emirleri (2026-10-18, görsellerden: iş emri formu ve Çalışma Süreleri sekmesi):
- Menü `Bakım › Bakım` › Bakım İş Emirleri (sıra 2). Firma şubedir (`BranchId`, `IsBranch`).
- Durum Taslak › Onaylandı › İşlemde / Beklemede › Onarıldı / Hurda (`Status`: `Draft`, `Approved`, `InProgress`, `OnHold`, `Repaired`, `Scrapped`). Taslak › Onaylandı geçişini departman onay akışı verir (kullanıcı kararı); onaylanmadan seçilen durum kayıtta Taslak'a döner, sonraki durumları kullanıcı seçer. Akış dört iş akışı kolonunu kullanır; `Status` onay durumu değil işin yaşam döngüsüdür, kullanıcı istediği için ayrı kolondur.
- Zamanlanmış iş onaylı ve aktif talimatın her vadesinde Taslak, Otomatik iş emri açar; önceki emir kapanmamış olsa da yenisi açılır (kullanıcı kararı). Aynı vade için ikinci emir açılmaz.
- Malzemeler (kullanıcı kararı, 2026-10-19; önceki "İç transfer + sarf" ve kullanıcı departmanı kurallarının yerine): önce ekipmanın departmanına bağlı iç konum, sonra o konumdaki stok satırı (ürün + lot/seri, eldeki miktarıyla) seçilir; iç transfer yoktur. İş emri departman onayını alınca Envanter › Teslimatlar'da Bakım Sarf Tüketimi taslak teslimatı seçilen lotlarla açılır.
- Kontrol Listesi ve Dokümanlar yalnız talimat ekranının sekmeleridir; iş emri ekranından kaldırıldı (kullanıcı kararı, 2026-10-18).
- Görseldeki Sonuç & Geri Bildirim, Maliyetler sekmeleri ve Parçayı Sök düğmesi kapsam dışıdır (kullanıcı kararı). Üretim Emri alanı yoktur: üretim emri tablosu yoktur.
- Stoktan düşme: iç transfer dış konuma gidemez, aynı konuma giden belge stoğa dokunmaz. Bu yüzden Bakım Sarf Tüketimi işlem türü Teslimat türünde ve dış "Bakım Sarf" konumuna gidecek şekilde kurulur (demo seed'i buna çevrildi).
- İş emri ekranının kayıt sonrası komutları Envanter ekranları gibi `EXEC` ile yordam çağırır; yordamların `postgres/` eşi vardır. Form içi hesaplar EditorScript'tedir, kayıt sonrası SQL ile yapılmaz (kullanıcı kararı): Çalışma Süreleri ve Duruşlar'ın süreleri, iş emrinin gerçek başlangıç/bitişi. Yordamda yalnız onaycı listesi, onaysız emri Taslak'ta tutma ve sarf belgesi kalır; bunlar akıştan ve zamanlanmış işten de çalışır.
Üretimde verilen ek kararlar (iş emri):
- Sarf teslimatı taslak açılır; depo Hazırla › Doğrula ile işler. Belgesi açılmış malzeme satırı değiştirilemez ve silinemez.
- Otomatik emrin kullanım konumu ekipman departmanının koda göre ilk iç konumudur; ekip talimatın ilk ekibidir.
- 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 (`Mnt`) › Bakım (`Mnt.Operations`) › Bakım Talimatları (`Mnt.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`).
Bakım (`Mnt.Operations`) › Bakım İş Emirleri (`Mnt.WorkOrder`). Sekmeler: Malzemeler, Çalışma Süreleri, Duruşlar (listeler; `Id → WorkOrderId`), Notlar (iş emri satırı, `Id → Id`).
### 4. Veri modeli
Tüm tablolar kiracı + tam audit + soft delete taşır; `IsActive` tanım tablolarında, talimatta ve iş emrinde vardır, iş emrinin malzeme, çalışma süresi ve duruş tabloları taşımaz (kullanıcı kararı, 2026-10-19); şube (`BranchId`) yalnız talimat tablosundadır.
- `Mnt_T_MaintenanceInstruction` (Code, Name, MaintenanceTypeId → `Mnt_T_MaintenanceType`, EquipmentId → `Stk_T_Product`, TeamIds `|` listesi → `Mnt_T_Team`, PeriodValue int, PeriodUnit `Day`/`Week`/`Month`/`Year`, StartDate, EndDate, NextDueDate, InstructionText, DeptApproverUserNames, iş akışının dört kolonu)
- `Mnt_T_MaintenanceInstructionMaterial` (MaintenanceInstructionId, ProductId → `Stk_T_Product`, Quantity, UomId → `Adm_T_Uom`, Description)
- `Mnt_T_MaintenanceInstructionCheck` (MaintenanceInstructionId, Name, Description, IsRequired)
- `Mnt_T_MaintenanceInstructionDocument` (MaintenanceInstructionId, Name, DocumentType, FileContent, Version)
- `Mnt_T_WorkOrder` (BranchId, WorkOrderNo, Name, EquipmentId, RequestDate, MaintenanceKind `Corrective`/`Preventive`/`Predictive`, ResourceType `Internal`/`External`, MaintenanceTypeId, TeamId → `Mnt_T_Team`, Source `Manual`/`Automatic`, MaintenanceInstructionId, ResponsibleUserId, PlannedStart/End, ActualStart/End, Priority 0–3, Status, Notes, DeptApproverUserNames, iş akışının dört kolonu)
- `Mnt_T_WorkOrderMaterial` (WorkOrderId, LocationId konum, StockId → `Stk_T_Stock` seçilen stok satırı, ProductId, LotNo, Quantity, UomId, ConsumptionTransferId → `Stk_T_Transfer`, Description). Tablo eski sürümde kurulduysa script `StockId` ve `LotNo` kolonlarını ekler; kullanılmayan `TransferSourceLocationId` ve `TransferId` kolonları düşürülmez.
- `Mnt_T_WorkOrderLabor` (WorkOrderId, UserId → AbpUsers, StartTime, EndTime, DurationMinutes, RegularMinutes, OvertimeMinutes, Description)
- `Mnt_T_WorkOrderDowntime` (WorkOrderId, StartTime, EndTime, DurationMinutes, FailureTypeId → `Mnt_T_FailureType`, Description)
### 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, `Mnt_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.
- **Otomatik iş emri:** gece işi, sonraki bakımı bugün ya da geçmiş olan onaylı ve aktif talimattan o vade için iş emri açar (numara `Mnt.WorkOrder`, `WO/2026/00001`, yıllık sıfırlanır; konu "Talimat - Ekipman"; Önleyici, İç Bakım; planlanan tarih vade 08:00), malzemeleri kopyalar, sonra sonraki bakımı ilerletir.
- **İş emri durumu:** onay akışı tamamlanmadan durum Taslak'tır, onayla Onaylandı olur. Onaylı emirde Durum formda İşlemde seçilince gerçek başlangıç, Onarıldı ya da Hurda seçilince gerçek bitiş boşsa anında doldurulur (Durum alanının EditorScript'i).
- **Malzeme:** Konum listesi ekipmanın departmanının aktif iç konumlarıdır. Ürün - Lot/Seri listesi seçilen konumdaki stoğu sıfırdan büyük stok satırlarıdır (`[Referans] Ürün - Lot (miktar birim)`); seçilince malzeme, lot/seri no ve birim stok satırından dolar (EditorScript, üçü salt okunur). Ürün - Lot/Seri listede gizlidir (Malzeme ve Lot/Seri No aynı bilgiyi gösterir), formda durur. Görünüm modunda ve satırsız yüklemede cascade ebeveyni boş gelir; iki lookup bu durumda malzeme satırlarının kullandığı konum ve stok satırlarını döner, böylece kayıtlı değer onaydan ve stok tükendikten sonra da görünür. Kayıtta `Mnt_P_WorkOrderMaterialAfterSave` doğrular ve ürün/lot/birimi stoktan yeniden yazar: konum ekipmanın departmanında değilse 50409, stok satırı seçilen konumda değilse 50410, miktar eldeki miktarı aşarsa 50411. İş emri onaylıysa satır hemen sarfa eklenir.
- **Sarf:** iş emri departman onayını alınca (hurdaya ayrılmamışsa) sarfı açılmamış satırlar konuma göre gruplanır, konumun deposundaki Bakım Sarf Tüketimi türünde (numaratörü `.MaintenanceConsumption` ile biter, tür Teslimat) taslak teslimat açılır; aynı emrin aynı konumdaki taslağı varsa satırlar ona eklenir. Lot/seri takipli satırda seçilen lot teslimat satırının lotu olur (`Mnt_P_WorkOrderConsume`). Tür yoksa kayıt 50402 ile durur. Onarılmış ya da hurdaya ayrılmış emre malzeme eklenmez (50406).
- **Süreler:** Çalışma Süreleri'nde süre (dakika) formda başlangıç ya da bitiş değişince anında hesaplanır; normal mesai = süre − mesai dışı, mesai dışı değişince de yenilenir (ikisi salt okunur). Duruşlar'da süre de formda başlangıç ve bitişten anında hesaplanır. Dakikalar ileride personel maliyetinin dayanağıdır.
### 6. Yetki ve görünürlük
`Mnt` › `Mnt.Operations` › `Mnt.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.
`Mnt.Operations` › `Mnt.WorkOrder` (+ altı eylem); Malzemeler, Çalışma Süreleri, Duruşlar ve Notlar sekmelerinin yetkisi iş emri yetkisinin altındadır. İş emri widget'ları: Toplam · Onay Bekleyen · İşlemde · Onarıldı.
### 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. İş emri malzemeleri ekipman departmanının depolarındaki stoktan seçilir ve onayla Envanter'de Bakım Sarf Tüketimi teslimatı açar (`SourceDocument` = iş emri no); belgeyi depo Envanter › Teslimatlar'da işler. Duruşların arıza tipi Bakım › Arıza Tipleri'nden gelir.
### 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.
- **Otomatik iş emri açılmadı?** Talimat onaylı (Onaylandı) ve aktif olmalı, Sonraki Bakım bugün ya da geçmiş olmalıdır; iş her gece 01:00'de çalışır. İş Hangfire'a API açılışında ya da Zamanlanmış İşler ekranındaki "zamanlanmış işleri yeniden üret" düğmesiyle yüklenir; migrate'ten sonra ikisinden biri yapılmadıysa iş hiç çalışmaz. Sonraki bakım tarihi boş talimatın tarihi aynı çalıştırmada önce hesaplanır, vadesi bugünse iş emri de o çalıştırmada açılır.
- **Konum ya da Ürün - Lot/Seri listesi boş?** Ekipmanın Ekipman sekmesinde departman seçilmeli, o departmana bağlı aktif bir iç konum (Envanter › Konumlar) bulunmalı ve konumda stoğu olan ürün olmalıdır.
- **Onayda 50402 hatası?** Malzeme konumunun deposunda Bakım Sarf Tüketimi işlem türü yok ya da pasif. Türü Teslimat türünde ve dış hedefle tanımlayın.
- **Sarf belgesi stoktan düşmüyor?** Bakım Sarf Tüketimi işlem türünün türü Teslimat ve hedef konumu dış konum olmalıdır; iç transfer türünde stok değişmez.
### 10. Dosyalar ve geri alma
- **Tablolar:** `sql/object/Mnt_T_MaintenanceInstruction{,Material,Check,Document}.sql` ve `postgres/object/` eşleri.
- **Zamanlanmış iş:** `sql/object/Mnt_S_MaintenanceInstructionSchedule.sql` (yordam) + `postgres/object/` eşi (void fonksiyon); satır `data/Sas.BackgroundWorkers.RecurringJobs.json`.
- **Wizard'lar:** `Mnt_MaintenanceInstruction`, `…Material`, `…Check`, `…Document`, `…General`, `…Approval` (`.json`).
- **Numaratör:** `data/Adm.Definitions.Sequence.json` › `Mnt.MaintenanceInstruction`.
- **Onay yeri:** `wizard/Adm_Approver.json` Onay Yeri listesine `Maintenance` eklendi.
- **İş emri:** tablolar `Mnt_T_WorkOrder{,Material,Labor,Downtime}.sql`, yordamlar `Mnt_P_WorkOrderAfterSave`, `Mnt_P_WorkOrderMaterialAfterSave`, `Mnt_P_WorkOrderConsume` (iki sağlayıcı); wizard'lar `Mnt_WorkOrder`, `…Material`, `…Labor`, `…Downtime`, `…Note`; numaratör `Mnt.WorkOrder`.
- **Stok seed'i:** `data/Stk.Location.json` dış "Bakım Sarf" konumu (BKM), `data/Stk.OperationType.json` Bakım Sarf Tüketimi → Teslimat. Seed yalnız eksik satırı ekler; kurulu veritabanında işlem türü ekrandan düzeltilir.
- **Geri alma:** Wizard Manager'da önce `Mnt_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.
<!-- 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 (`Mnt.Definitions`)
#### Ekipman Kategorileri — `Mnt.EquipmentCategory`
| Özellik | Değer |
| --- | --- |
| Wizard | `wizard/Mnt_EquipmentCategory.json` |
| Yol | Liste (Wizard) |
| Menü | `Mnt.Definitions` › `Mnt.EquipmentCategory` (sıra 1) |
| Yetki | `Mnt.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 | `Mnt_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 | `Sas.Widget.Total`, `Sas.Widget.Active`, `Sas.Widget.Passive` |
| Form varsayılanları | IsActive=true, BranchId= |
| Veri aynası | `data/Mnt.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 — `Mnt.Team`
| Özellik | Değer |
| --- | --- |
| Wizard | `wizard/Mnt_Team.json` |
| Yol | Liste (Wizard) |
| Menü | `Mnt.Definitions` › `Mnt.Team` (sıra 2) |
| Yetki | `Mnt.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 | `Mnt_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 | `Sas.Widget.Total`, `Sas.Widget.Active`, `Sas.Widget.Passive` |
| Form varsayılanları | IsActive=true, BranchId= |
| Veri aynası | `data/Mnt.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 — `Mnt.MaintenanceType`
| Özellik | Değer |
| --- | --- |
| Wizard | `wizard/Mnt_MaintenanceType.json` |
| Yol | Liste (Wizard) |
| Menü | `Mnt.Definitions` › `Mnt.MaintenanceType` (sıra 3) |
| Yetki | `Mnt.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 | `Mnt_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 | `Sas.Widget.Total`, `Sas.Widget.Active`, `Sas.Widget.Passive` |
| Form varsayılanları | SortOrder=0, IsActive=true |
| Veri aynası | `data/Mnt.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: Mnt_T_Team |
| `Description` | Açıklama | dxTextArea | | ✓ | |
| `SortOrder` | Sıra | dxNumberBox | ✓ | ✓ | |
| `IsActive` | Aktif | dxCheckBox | ✓ | ✓ | |
#### Hizmet Tipleri — `Mnt.ServiceType`
| Özellik | Değer |
| --- | --- |
| Wizard | `wizard/Mnt_ServiceType.json` |
| Yol | Liste (Wizard) |
| Menü | `Mnt.Definitions` › `Mnt.ServiceType` (sıra 4) |
| Yetki | `Mnt.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 | `Mnt_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 | `Sas.Widget.Total`, `Sas.Widget.Active`, `Sas.Widget.Passive` |
| Form varsayılanları | SortOrder=0, IsActive=true |
| Veri aynası | `data/Mnt.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: Mnt_T_Team |
| `Description` | Açıklama | dxTextArea | | ✓ | |
| `IsActive` | Aktif | dxCheckBox | ✓ | ✓ | |
#### Arıza Tipleri — `Mnt.FailureType`
| Özellik | Değer |
| --- | --- |
| Wizard | `wizard/Mnt_FailureType.json` |
| Yol | Liste (Wizard) |
| Menü | `Mnt.Definitions` › `Mnt.FailureType` (sıra 5) |
| Yetki | `Mnt.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 | `Mnt_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 | `Sas.Widget.Total`, `Sas.Widget.Active`, `Sas.Widget.Passive` |
| Form varsayılanları | SortOrder=0, IsActive=true |
| Veri aynası | `data/Mnt.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 — `Mnt.RejectReason`
| Özellik | Değer |
| --- | --- |
| Wizard | `wizard/Mnt_RejectReason.json` |
| Yol | Liste (Wizard) |
| Menü | `Mnt.Definitions` › `Mnt.RejectReason` (sıra 6) |
| Yetki | `Mnt.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 | `Mnt_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 | `Sas.Widget.Total`, `Sas.Widget.Active`, `Sas.Widget.Passive` |
| Form varsayılanları | SortOrder=0, IsActive=true |
| Veri aynası | `data/Mnt.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 | ✓ | ✓ | |
#### Masraf Merkezleri — `Mnt.CostCenter`
| Özellik | Değer |
| --- | --- |
| Wizard | `wizard/Mnt_CostCenter.json` |
| Yol | Liste (Wizard) |
| Menü | `Mnt.Definitions` › `Mnt.CostCenter` (sıra 7) |
| Yetki | `Mnt.CostCenter` + `.Create`, `.Update`, `.Delete`, `.Export`, `.Import`, `.Note` |
| Açıklama | Masraf Merkezleri — bakım ve ekipman masraflarının bağlandığı masraf merkezleri ve masraf kalemleri. |
| Kaynak | `Mnt_T_CostCenter` · filtre `"IsDeleted" = 'false'` |
| Görünümler | Grid, Card, Pivot, Chart, Tree (açılış tree) |
| Düzenleme | ekle ✓ · düzenle ✓ · sil ✓ · popup |
| Kapsam | Kiracı |
| Widget'lar | `Sas.Widget.Total`, `Sas.Widget.Active`, `Sas.Widget.Passive` |
| Form varsayılanları | IsActive=true, BranchId= |
| Veri aynası | `data/Mnt.CostCenter.json` |
| Alan | Başlık | Editör | Zorunlu | Formda | Kaynak |
| --- | --- | --- | --- | --- | --- |
| `BranchId` | Şube Adı | dxSelectBox | ✓ | ✓ | sorgu: Sas_T_Branch |
| `Name` | Adı | dxTextBox | ✓ | ✓ | |
| `ParentId` | Üst Masraf Merkezi | dxSelectBox | | ✓ | sorgu: Mnt_T_CostCenter |
| `Code` | Referans | dxTextBox | | ✓ | |
| `DepartmentId` | Departman | dxSelectBox | | ✓ | sorgu: Hr_T_Department (← BranchId) |
| `CustomerId` | Müşteri | dxSelectBox | | ✓ | sorgu: Adm_T_Contact |
| `IsActive` | Aktif | dxCheckBox | | ✓ | |
### Bakım (`Mnt.Operations`)
#### Bakım Talimatları — `Mnt.MaintenanceInstruction`
| Özellik | Değer |
| --- | --- |
| Wizard | `wizard/Mnt_MaintenanceInstruction.json` |
| Yol | Liste (Wizard) |
| Menü | `Mnt.Operations` › `Mnt.MaintenanceInstruction` (sıra 1) |
| Yetki | `Mnt.MaintenanceInstruction` + `.Create`, `.Update`, `.Delete`, `.Export`, `.Import`, `.Note` |
| Açıklama | Bakım Talimatları — ekipmanların periyodik bakım planları. |
| Kaynak | `Mnt_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 | `Mnt.MaintenanceInstructionMaterial` (Id → MaintenanceInstructionId, BranchId → BranchId), `Mnt.MaintenanceInstructionCheck` (Id → MaintenanceInstructionId, BranchId → BranchId), `Mnt.MaintenanceInstructionDocument` (Id → MaintenanceInstructionId, BranchId → BranchId), `Mnt.MaintenanceInstructionGeneral` (Id → Id), `Mnt.MaintenanceInstructionApproval` (Id → Id) |
| Widget'lar | `Sas.Widget.Total`, `Sas.Widget.Active`, `Sas.Widget.AwaitingApproval`, `Sas.Widget.Approved` |
| Komutlar | InsertAfter: SQL · UpdateAfter: SQL |
| Form varsayılanları | Code=Mnt.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: Mnt_T_MaintenanceType |
| `Name` | Bakım Adı | dxTextBox | ✓ | ✓ | |
| `EquipmentId` | Ekipman | dxSelectBox | ✓ | ✓ | sorgu: Stk_T_Product |
| `TeamIds` | Bakım Ekipleri | dxTagBox | | ✓ | sorgu: Mnt_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 | | | |
#### Bakım İş Emirleri — `Mnt.WorkOrder`
| Özellik | Değer |
| --- | --- |
| Wizard | `wizard/Mnt_WorkOrder.json` |
| Yol | Liste (Wizard) |
| Menü | `Mnt.Operations` › `Mnt.WorkOrder` (sıra 2) |
| Yetki | `Mnt.WorkOrder` + `.Create`, `.Update`, `.Delete`, `.Export`, `.Import`, `.Note` |
| Açıklama | Bakım İş Emirleri — ekipmanlarda yapılan bakım işleri; elle ya da bakım talimatlarından otomatik açılır. |
| Kaynak | `Mnt_T_WorkOrder` · 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 | `Mnt.WorkOrderMaterial` (Id → WorkOrderId), `Mnt.WorkOrderLabor` (Id → WorkOrderId), `Mnt.WorkOrderDowntime` (Id → WorkOrderId), `Mnt.WorkOrderNote` (Id → Id) |
| Widget'lar | `Sas.Widget.Total`, `Sas.Widget.AwaitingApproval`, `Sas.Widget.InProgress`, `Sas.Widget.Repaired` |
| Komutlar | InsertAfter: `Mnt_P_WorkOrderAfterSave` · UpdateAfter: `Mnt_P_WorkOrderAfterSave` |
| Form varsayılanları | WorkOrderNo=Mnt.WorkOrder, BranchId=, RequestDate=@NOW, Status=Draft, Source=Manual, MaintenanceKind=Corrective, ResourceType=Internal, Priority=0, IsActive=true |
| Onay akışı | Start 'Onaya Gönderildi' → Approval 'Departman Onayı' → End 'Onaylandı' → End 'Reddedildi' |
| Alan | Başlık | Editör | Zorunlu | Formda | Kaynak |
| --- | --- | --- | --- | --- | --- |
| `WorkOrderNo` | İş Emri No | dxTextBox | | ✓ | |
| `Status` | Durum | dxSelectBox | ✓ | ✓ | liste: Draft, Approved, InProgress, OnHold, Repaired, Scrapped · script |
| `Name` | Konu | dxTextBox | ✓ | ✓ | |
| `BranchId` | Şube Adı | dxSelectBox | ✓ | ✓ | sorgu: Sas_T_Branch |
| `EquipmentId` | Ekipman | dxSelectBox | ✓ | ✓ | sorgu: Stk_T_Product |
| `MaintenanceKind` | Bakım Şekli | dxRadioGroup | ✓ | ✓ | liste: Corrective, Preventive, Predictive |
| `MaintenanceTypeId` | Bakım Tipi | dxSelectBox | | ✓ | sorgu: Mnt_T_MaintenanceType |
| `TeamId` | Bakım Ekibi | dxSelectBox | | ✓ | sorgu: Mnt_T_Team (← BranchId) |
| `MaintenanceInstructionId` | Bakım Prosedürü | dxSelectBox | | ✓ | sorgu: Mnt_T_MaintenanceInstruction (← EquipmentId) |
| `ResponsibleUserId` | Sorumlu | dxSelectBox | | ✓ | sorgu: AbpUsers |
| `PlannedStart` | Planlanan Tarih | dxDateBox | | ✓ | |
| `PlannedEnd` | Planlanan Bitiş | dxDateBox | | ✓ | |
| `ActualStart` | Gerçek Başlangıç | dxDateBox | | ✓ | |
| `ActualEnd` | Gerçek Bitiş | dxDateBox | | ✓ | |
| `Source` | Kaynak | dxSelectBox | | ✓ | liste: Manual, Automatic |
| `RequestDate` | İstek Tarihi | dxDateBox | | ✓ | |
| `ResourceType` | Bakım Kaynak Türü | dxRadioGroup | ✓ | ✓ | liste: Internal, External |
| `Priority` | Öncelik | dxRating | | ✓ | |
| `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 — `Mnt.MaintenanceInstructionApproval`
| Özellik | Değer |
| --- | --- |
| Wizard | `wizard/Mnt_MaintenanceInstructionApproval.json` |
| Yol | Liste (Wizard) |
| Menü | Menüsüz (alt form) |
| Yetki | `Mnt.MaintenanceInstructionApproval` + `.Create`, `.Update`, `.Delete`, `.Export`, `.Import`, `.Note` |
| Açıklama | Bakım Talimatı Onay Bilgileri — talimatın onay durumu (salt okunur). |
| Kaynak | `Mnt_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 — `Mnt.MaintenanceInstructionCheck`
| Özellik | Değer |
| --- | --- |
| Wizard | `wizard/Mnt_MaintenanceInstructionCheck.json` |
| Yol | Liste (Wizard) |
| Menü | Menüsüz (alt form) |
| Yetki | `Mnt.MaintenanceInstructionCheck` + `.Create`, `.Update`, `.Delete`, `.Export`, `.Import`, `.Note` |
| Açıklama | Kontrol Listesi — bakım talimatı uygulanırken teknisyenin kontrol ettiği maddeler. |
| Kaynak | `Mnt_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 — `Mnt.MaintenanceInstructionDocument`
| Özellik | Değer |
| --- | --- |
| Wizard | `wizard/Mnt_MaintenanceInstructionDocument.json` |
| Yol | Liste (Wizard) |
| Menü | Menüsüz (alt form) |
| Yetki | `Mnt.MaintenanceInstructionDocument` + `.Create`, `.Update`, `.Delete`, `.Export`, `.Import`, `.Note` |
| Açıklama | Dokümanlar — bakım talimatına eklenen kılavuz, prosedür, çizim ve sertifikalar. |
| Kaynak | `Mnt_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 — `Mnt.MaintenanceInstructionGeneral`
| Özellik | Değer |
| --- | --- |
| Wizard | `wizard/Mnt_MaintenanceInstructionGeneral.json` |
| Yol | Liste (Wizard) |
| Menü | Menüsüz (alt form) |
| Yetki | `Mnt.MaintenanceInstructionGeneral` + `.Create`, `.Update`, `.Delete`, `.Export`, `.Import`, `.Note` |
| Açıklama | Bakım Talimatı Genel — bakım talimatının yazılı metni. |
| Kaynak | `Mnt_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 — `Mnt.MaintenanceInstructionMaterial`
| Özellik | Değer |
| --- | --- |
| Wizard | `wizard/Mnt_MaintenanceInstructionMaterial.json` |
| Yol | Liste (Wizard) |
| Menü | Menüsüz (alt form) |
| Yetki | `Mnt.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 | `Mnt_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: Stk_T_Product · script |
| `Quantity` | Miktar | dxNumberBox | ✓ | ✓ | |
| `UomId` | Birim | dxSelectBox | ✓ | ✓ | sorgu: Adm_T_Uom |
| `Description` | Açıklama | dxTextBox | | ✓ | |
| `IsActive` | Aktif | dxCheckBox | | ✓ | |
#### Duruşlar — `Mnt.WorkOrderDowntime`
| Özellik | Değer |
| --- | --- |
| Wizard | `wizard/Mnt_WorkOrderDowntime.json` |
| Yol | Liste (Wizard) |
| Menü | Menüsüz (alt form) |
| Yetki | `Mnt.WorkOrderDowntime` + `.Create`, `.Update`, `.Delete`, `.Export`, `.Import`, `.Note` |
| Açıklama | İş Emri Duruşları — ekipmanın arıza ya da bakım nedeniyle durduğu süreler. |
| Kaynak | `Mnt_T_WorkOrderDowntime` · 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ı | StartTime=@NOW |
| Alan | Başlık | Editör | Zorunlu | Formda | Kaynak |
| --- | --- | --- | --- | --- | --- |
| `WorkOrderId` | Kimlik | dxTextBox | | | |
| `StartTime` | Başlangıç Tarihi | dxDateBox | ✓ | ✓ | script |
| `EndTime` | Bitiş Tarihi | dxDateBox | | ✓ | script |
| `FailureTypeId` | Arıza Tipi | dxSelectBox | | ✓ | sorgu: Mnt_T_FailureType |
| `Description` | Açıklama | dxTextArea | | ✓ | |
| `DurationMinutes` | Süre (Dakika) | dxNumberBox | | | |
#### Çalışma Süreleri — `Mnt.WorkOrderLabor`
| Özellik | Değer |
| --- | --- |
| Wizard | `wizard/Mnt_WorkOrderLabor.json` |
| Yol | Liste (Wizard) |
| Menü | Menüsüz (alt form) |
| Yetki | `Mnt.WorkOrderLabor` + `.Create`, `.Update`, `.Delete`, `.Export`, `.Import`, `.Note` |
| Açıklama | İş Emri Çalışma Süreleri — bakımda hangi personelin ne kadar süre harcadığı. |
| Kaynak | `Mnt_T_WorkOrderLabor` · 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ı | StartTime=@NOW |
| Alan | Başlık | Editör | Zorunlu | Formda | Kaynak |
| --- | --- | --- | --- | --- | --- |
| `WorkOrderId` | Kimlik | dxTextBox | | | |
| `UserId` | Çalışan Adı | dxSelectBox | ✓ | ✓ | sorgu: AbpUsers |
| `StartTime` | Başlangıç Tarihi | dxDateBox | ✓ | ✓ | script |
| `EndTime` | Bitiş Tarihi | dxDateBox | | ✓ | script |
| `DurationMinutes` | Süre (Dakika) | dxNumberBox | | | |
| `RegularMinutes` | Normal Mesai (Dk) | dxNumberBox | | ✓ | |
| `OvertimeMinutes` | Mesai Dışı (Dk) | dxNumberBox | | ✓ | script |
| `Description` | Açıklama | dxTextBox | | ✓ | |
#### Malzemeler — `Mnt.WorkOrderMaterial`
| Özellik | Değer |
| --- | --- |
| Wizard | `wizard/Mnt_WorkOrderMaterial.json` |
| Yol | Liste (Wizard) |
| Menü | Menüsüz (alt form) |
| Yetki | `Mnt.WorkOrderMaterial` + `.Create`, `.Update`, `.Delete`, `.Export`, `.Import`, `.Note` |
| Açıklama | İş Emri Malzemeleri — bakımda kullanılan, stoktan seçilen yedek parça ve sarf malzemeleri. |
| Kaynak | `Mnt_T_WorkOrderMaterial` · filtre `"IsDeleted" = 'false'` |
| Görünümler | Grid, Card, Pivot, Chart (açılış grid) |
| Düzenleme | ekle ✓ · düzenle ✓ · sil ✓ · popup |
| Kapsam | Kiracı |
| Komutlar | InsertBefore: SQL · InsertAfter: `Mnt_P_WorkOrderMaterialAfterSave` · UpdateBefore: SQL · UpdateAfter: `Mnt_P_WorkOrderMaterialAfterSave` · DeleteBefore: SQL |
| Form varsayılanları | Quantity=1, UomId=Adet |
| Alan | Başlık | Editör | Zorunlu | Formda | Kaynak |
| --- | --- | --- | --- | --- | --- |
| `WorkOrderId` | Kimlik | dxTextBox | | | |
| `LocationId` | Konum | dxSelectBox | ✓ | ✓ | sorgu: Stk_T_Location (← WorkOrderId) |
| `StockId` | Ürün - Lot/Seri | dxSelectBox | ✓ | ✓ | sorgu: Stk_T_Stock (← LocationId,WorkOrderId) · script |
| `ProductId` | Malzeme | dxSelectBox | ✓ | ✓ | sorgu: Stk_T_Product |
| `LotNo` | Lot/Seri No | dxTextBox | | ✓ | |
| `Quantity` | Miktar | dxNumberBox | ✓ | ✓ | |
| `UomId` | Birim | dxSelectBox | ✓ | ✓ | sorgu: Adm_T_Uom |
| `ConsumptionTransferId` | Sarf Çıkışı | dxSelectBox | | | sorgu: Stk_T_Transfer |
| `Description` | Açıklama | dxTextBox | | ✓ | |
#### Notlar — `Mnt.WorkOrderNote`
| Özellik | Değer |
| --- | --- |
| Wizard | `wizard/Mnt_WorkOrderNote.json` |
| Yol | Liste (Wizard) |
| Menü | Menüsüz (alt form) |
| Yetki | `Mnt.WorkOrderNote` + `.Create`, `.Update`, `.Delete`, `.Export`, `.Import`, `.Note` |
| Açıklama | İş Emri Notları — bakım iş emrinin serbest notları. |
| Kaynak | `Mnt_T_WorkOrder` · 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 |
| --- | --- | --- | --- | --- | --- |
| `Notes` | Notlar | dxHtmlEditor | | ✓ | |
<!-- module-doc:auto:end -->