Abonelik Yönetimi
Abonelik yönetimi, her kiracının seçtiği modüllerin ve ödeme durumunun takip edildiği merkezi alandır. Accsivo, sabit paket yerine modül bazlı (Adobe-style) abonelik modeli kullanır: her kiracı yalnızca ihtiyaç duyduğu modülleri seçer.
Bu yönetim ekranları genellikle Developer ve SystemManager rolündeki kullanıcılara açıktır.
1. Modül Ayarları
/ModuleSettings/Index ekranı, sistemde kayıtlı her modülün aylık/yıllık fiyatını ve satışa açık (IsEnabled) durumunu gösterir.
Yalnızca fiyat ve etkinleştirme durumu düzenlenebilir; modüller kod tabanlı olduğundan oluşturma/silme işlemi yoktur.
Liste Sütunları
| Sütun | Anlamı |
|---|---|
| Modül Kodu | Sistemde kayıtlı modülün benzersiz kodu (ör: Hr, Finance). |
| Modül Adı | Modülün görünen adı (runtime'da AccsivoModuleRegistry'den alınır). |
| Aylık Fiyat | Aylık abonelik ücreti (TRY). |
| Yıllık Fiyat | Yıllık abonelik ücreti (TRY). |
| Satışa Açık | IsEnabled = true ise modül kayıt ekranında seçilebilir. |
| Durum | Kaydın genel aktifliği. |
Düzenleme Formu
| Alan | Kullanım Amacı ve Kurallar |
|---|---|
| Aylık Fiyat | 0 veya üzeri ondalık değer. 0 = ücretsiz. |
| Yıllık Fiyat | 0 veya üzeri ondalık değer. Genellikle aylık × 12'den indirimli olur. |
| Satışa Açık | Kapalıysa modül kayıt ekranında listelenmez ve seçilemez. |
Fiyat değişikliği anında geçerlidir. Mevcut abonelikleri etkilemez; yeni ödemelerde yeni fiyat uygulanır.
2. Abonelikler
/TenantSubscriptions/Index ekranı, kiracılara ait aktif ve geçmiş abonelikleri listeler.
Filtreleme
- Tarih Aralığı: Aboneliğin başlangıç tarihine göre filtreleme.
- Durum: Deneme, Aktif, Ödeme Bekliyor, Süresi Doldu, İptal Edildi.
- Faturalama Döngüsü: Aylık, Yıllık veya Deneme.
Liste Sütunları
| Sütun | Anlamı |
|---|---|
| Kiracı | Aboneliğin ait olduğu kuruluş adı. |
| Durum | Aboneliğin mevcut durumu. |
| Faturalama Döngüsü | Aylık veya Yıllık faturalama türü. |
| Başlangıç Tarihi | Aboneliğin başladığı tarih. |
| Bitiş Tarihi | Aboneliğin sona ereceği tarih. |
| Otomatik Yenileme | Otomatik yenilemenin açık olup olmadığı. |
Abonelik Durumları
| Durum | Açıklama |
|---|---|
| Deneme (Trial) | Kayıt sonrası varsayılan olarak 30 gün süren; yönetici tarafından manuel bitiş tarihi belirlenebilen ücretsiz deneme. |
| Aktif (Active) | Ödeme alınmış ve geçerli abonelik. |
| Ödeme Bekliyor (PendingPayment) | Ödeme vadesi geçmiş ancak henüz süre dolmamış. |
| Süresi Doldu (Expired) | Süresi dolmuş ve yenilenmeyen abonelik. |
| İptal Edildi (Cancelled) | Kullanıcı veya yönetici tarafından iptal edilmiş. |
Yeni Abonelik Formu
| Alan | Kullanım Amacı ve Kurallar |
|---|---|
| Kiracı | Aboneliğin verileceği kuruluş. Yalnızca aktif aboneliği olmayan kiracılar listelenir. |
| Modüller | Aktivasyon verilecek modüllerin çoklu seçimi. Satışa açık (IsEnabled) modüller listelenir. |
| Faturalama Döngüsü | Aylık, Yıllık veya Deneme. Deneme seçildiğinde durum otomatik olarak Deneme olur ve otomatik yenileme kapatılır. Mevcut ücretli abonelikler düzenleme formunda Deneme döngüsüne çevrilemez. |
| Abonelik Durumu | Deneme döngüsünde otomatik olarak Deneme olur. Aylık veya Yıllık ücretli döngülerde Deneme durumu seçilemez. |
| Başlangıç Tarihi | Aboneliğin başlayacağı tarih. |
| Deneme Bitiş Tarihi | Deneme süresinin gerçek bitiş tarihi. Oluşturma formunda başlangıç tarihinden 30 gün sonrası varsayılan olarak yazılır; alan boşsa Deneme seçildiğinde aynı tarih yeniden doldurulur. Manuel girilen geçerli tarih için sabit bir azami süre uygulanmaz; girilen tarih aboneliğin bitiş tarihi olarak kullanılır. |
| Otomatik Yenileme | Ücretli aboneliklerde abonelik süresi dolduğunda otomatik yenilemeyi belirler. Deneme döngüsünde daima kapalıdır ve formda gösterilmez. |
Yönetici tarafından girilen deneme bitiş tarihi yalnızca ekranda gösterilen bir bilgi değildir. Modül erişimi, yaklaşan bitiş bildirimleri ve aboneliğin sona ermesi aynı tarihe göre çalışır. Örneğin bitiş tarihi 10 yıl sonrası seçildiyse deneme aboneliği bu tarihe kadar kullanılabilir.
3. Kiracı Modülleri
/TenantModules/Index ekranı, bir kiracıya atanmış modül erişimlerini listeler ve yönetir.
Filtreleme
- Modül Kodu: Belirli bir modüle göre filtreleme.
- Durum: Aktif veya pasif modül kayıtları.
Liste Sütunları
| Sütun | Anlamı |
|---|---|
| Modül Kodu | Erişim verilen modülün kodu (ör: Hr, Finance). |
| Aktifleştirme Tarihi | Modülün kiracıya açıldığı tarih. |
| Deaktifleştirme Tarihi | Modül erişiminin kapatıldığı tarih. Boş ise hâlâ aktif. |
| Durum | Modül erişiminin aktif olup olmadığı. |
Kayıt ve Abonelik İlişkisi
Yeni kuruluş kaydı (Register) sırasında seçilen modüller kiracının ilk aboneliğini otomatik oluşturur:
- Kullanıcı kayıt formunda modülleri ve faturalama döngüsünü seçer (
GET /public/modulesile fiyatlar listelenir). - Kayıt tamamlandığında
StartSubscriptionAsynctetiklenir. - Deneme (Trial) durumunda bir
TenantSubscriptionkaydı varsayılan 30 günlük süreyle oluşturulur; yönetici daha sonra manuel bitiş tarihi belirlerse bu tarih esas alınır. - Seçilen her modül için ayrı bir
TenantModulekaydı oluşturulur (IsActive = true). - CMS modülü tek başına satın alınabilir; CMS dışında herhangi bir modül seçildiğinde CMS modülü hediye olarak eklenir ve ayrı ücretlendirilmez.
- Deneme süresi sonunda ödeme yapılırsa abonelik
Activedurumuna geçer; modüller korunur.
Production geçişlerinde yeni modül erişimleri ve varsayılan abonelik referans verileri uygulama açılışında otomatik tamamlanır. Kullanıcıların abonelik ekranında ayrıca kurulum veya manuel aktivasyon işlemi yapması gerekmez.
Ödeme Akışı
- Kiracı
/MySubscriptionekranından ödeme başlatır. POST /payments/initiatecheckoutisteği gönderilir;ModuleSettingtablosundan toplam fiyat hesaplanır.- iyzico Checkout Form HTML döner; kullanıcı kart bilgilerini iyzico üzerinde girer (3D Secure).
- iyzico callback
POST /payments/callbackile doğrulama yapılır. - Başarılı ödemede
TenantSubscription.EndDateuzatılır,TenantModulekayıtları aktifleştirilir.
Sık Karşılaşılan Sorunlar
| Sorun | Olası Neden | Çözüm |
|---|---|---|
| "Ödeme için modül seçilmedi" hatası | ModuleCodes listesi boş |
Kayıt veya ödeme formunda en az bir modül seçin |
| Modüle erişilemiyor | Kiracının TenantModule kaydı yok veya pasif |
Admin panelinden modül ekleyin veya aktifleştirin |
| "Aktif abonelik bulunamadı" hatası | Abonelik süresi dolmuş veya iptal edilmiş | Yeni abonelik oluşturun veya mevcut aboneliği yenileyin |
| Kayıt ekranında modül listelenmiyor | ModuleSetting.IsEnabled = false |
Modül Ayarları ekranından modülü satışa açın |
| iyzico callback başarısız | Token eşleşmiyor veya daha önce işlendi | Logları kontrol edin; idempotency cache süresi 24 saattir |