Factorizer/Cluster ERP WikiCluster ERP English
Ana sayfa / İş modülleri

Modül

Subscriptions modülü (subscriptions)

Yinelenen abonelik planlarını ve müşteri ile satın alma aboneliklerini yaşam döngüleri ve günlük taramalarıyla tutan subscriptions modülünün sayfası.

src/cluster_erp/modules/subscriptions/ içindeki subscriptions modülü yinelenen işleri kaydeder: şirketin sunduğu planları, müşterilerin bu planlara aboneliklerini ve şirketin kendisinin tedarikçilerle olan aboneliklerini. Fatura dönemlerini, yenilemeleri ve süre dolumunu izler ve yaşam döngüsü olayları yayar; fatura üretmez. Bir iş modülüdür; bir kiracının SaaS üyeliği değildir, o çok kiracılılık sayfasında açıklanır.

Bir bakışta

Öğe Değer Kaynak
Paket src/cluster_erp/modules/subscriptions/ klasör
Modül sınıfı Module src/cluster_erp/modules/subscriptions/module.py:15
name / version subscriptions / 0.1.0 src/cluster_erp/modules/subscriptions/module.py:16-22
API öneki /api/v1/subscriptions (ModuleBase.api_prefix) src/cluster_erp/core/module_base.py:37-38
Alt modüller 2: plans, customer_subscriptions klasör listesi
Tablolar 2: sub_plans, sub_customer_subscriptions src/cluster_erp/modules/subscriptions/plans/models.py:23, src/cluster_erp/modules/subscriptions/customer_subscriptions/models.py:34
Metadata'daki varlıklar 2: customer_subscription, subscription_plan src/cluster_erp/modules/subscriptions/module.py:149-152
Web uygulamasında yeri Katalog uygulaması subscriptions src/cluster_erp/modules/app_store/catalog.json (subscriptions girdisi)
Masaüstünde yeri Yalnızca genel bileşenler; src/cluster_erp/desktop/modules/ içinde klasör yok klasör

Modül ne yapar

  • Bir plan hangi yinelenen ürünün satıldığını, ne sıklıkla faturalandığını ve hangi fiyatla satıldığını belirtir (src/cluster_erp/modules/subscriptions/plans/models.py:13-21).
  • Bir satış aboneliği koşullarını etkin bir plandan alır; bir satın alma aboneliğinin koşulları bir tedarikçiye karşı doğrudan girilir (src/cluster_erp/modules/subscriptions/customer_subscriptions/services.py:129-206).
  • Etkinleştirme planın koşullarının anlık görüntüsünü alır; böylece sonraki plan değişiklikleri geçmişi yeniden yazmaz (src/cluster_erp/modules/subscriptions/customer_subscriptions/services.py:247-275).
  • Günlük bir tarama, dönemi bitmiş abonelikleri yeniler veya sona erdirir (src/cluster_erp/modules/subscriptions/customer_subscriptions/services.py:348-390, src/cluster_erp/server/app.py:504-546).

Alt modüller

Alt modül Amaç Ana varlıklar Yönlendirici Kaynak
plans Satılabilir yinelenen planlar SubscriptionPlan /api/v1/subscriptions/subscription-plans src/cluster_erp/modules/subscriptions/plans/routes.py:25
customer_subscriptions Müşteri ve satın alma abonelikleri CustomerSubscription /api/v1/subscriptions (modül kökü) src/cluster_erp/modules/subscriptions/customer_subscriptions/routes.py:31-34

Veri modeli

Varlık Tablo Anahtar alanlar Notlar Kaynak
SubscriptionPlan sub_plans code, name, product_id, product_model_id, product_version_id, billing_cycle, interval_count, price_per_cycle, currency, setup_fee, trial_days, min_term_cycles, status ürün üçlüsü zorunlu; para sütunları Numeric(18, 4); kiracı alanları extra içinde src/cluster_erp/modules/subscriptions/plans/models.py:13-59
CustomerSubscription sub_customer_subscriptions subscription_no, direction, customer_id, vendor_id, plan_id, ürün üçlüsü, anlık koşullar, dönem tarihleri, auto_renew, status bir denetim kısıtı sales için müşteri, purchase için tedarikçi ister src/cluster_erp/modules/subscriptions/customer_subscriptions/models.py:23-109

Para değerleri Numeric sütunlar ve şemalarda Decimal olur; olaylar tutarları dizge olarak taşır (src/cluster_erp/modules/subscriptions/plans/models.py:43-47, src/cluster_erp/modules/subscriptions/plans/schemas.py:22-24, src/cluster_erp/modules/subscriptions/customer_subscriptions/services.py:415-444). Bkz. para ve Decimal.

Ekranlar ve metadata

get_metadata, iki liste bölümüyle Abonelikler (İngilizce Subscriptions) adlı bir kenar çubuğu grubu bildirir: customer_subscription için Abonelikler ve subscription_plan için Planlar (İngilizce Plans) (src/cluster_erp/modules/subscriptions/module.py:121-153). Fatura döngüsü seçenekleri Aylık, Üç Aylık, Altı Aylık ve Yıllık olur (src/cluster_erp/modules/subscriptions/customer_subscriptions/metadata.py:40-45).

Durumlar ve aksiyonlar

Plan durumları draft, active, retired sırasıyla ilerler, geri dönüş yoktur (src/cluster_erp/modules/subscriptions/plans/services.py:101-117). Abonelik durumları draft, active, paused, cancelled ve expired olur (src/cluster_erp/modules/subscriptions/customer_subscriptions/models.py:97-100).

Aksiyon Etiket Koşul Uç İzin Kaynak
plan activate Aktifleştir status değeri draft POST /subscription-plans/{id}/activate subscription_plan.activate src/cluster_erp/modules/subscriptions/plans/metadata.py:100-107, src/cluster_erp/modules/subscriptions/plans/routes.py:99-108
plan retire Kullanımdan Kaldır status değeri active POST /subscription-plans/{id}/retire subscription_plan.retire src/cluster_erp/modules/subscriptions/plans/metadata.py:108-115, src/cluster_erp/modules/subscriptions/plans/routes.py:111-120
activate Aktifleştir status değeri draft POST /{id}/activate customer_subscription.activate src/cluster_erp/modules/subscriptions/customer_subscriptions/metadata.py:141, src/cluster_erp/modules/subscriptions/customer_subscriptions/routes.py:125-130
pause Duraklat status değeri active POST /{id}/pause customer_subscription.pause src/cluster_erp/modules/subscriptions/customer_subscriptions/metadata.py:142, src/cluster_erp/modules/subscriptions/customer_subscriptions/routes.py:131-136
resume Devam Et status değeri paused POST /{id}/resume customer_subscription.resume src/cluster_erp/modules/subscriptions/customer_subscriptions/metadata.py:143
renew Şimdi Yenile status değeri active POST /{id}/renew customer_subscription.renew src/cluster_erp/modules/subscriptions/customer_subscriptions/metadata.py:144
cancel İptal Et status değeri draft, active veya paused POST /{id}/cancel customer_subscription.cancel src/cluster_erp/modules/subscriptions/customer_subscriptions/metadata.py:146-151, src/cluster_erp/modules/subscriptions/customer_subscriptions/routes.py:151-161

Durum şeması bir aboneliğin yaşam döngüsünü gösterir.

stateDiagram-v2
    [*] --> draft: create
    draft --> active: activate
    active --> paused: pause
    paused --> active: resume
    active --> active: renew veya tarama yenilemesi
    active --> expired: tarama, bitiş geldi veya yenileme kapalı
    draft --> cancelled: cancel
    active --> cancelled: cancel
    paused --> cancelled: cancel
    cancelled --> [*]
    expired --> [*]

Düz anlatımla: abonelik draft olarak yaratılır; activate ilk dönemi başlatır; pause ve resume active ile paused arasında geçirir; renew veya tarama etkin bir aboneliğin dönemini ilerletir; tarama bitiş tarihini geçmiş veya dönemi yenilemesi kapalıyken bitmiş etkin bir aboneliği sona erdirir; cancel zaten iptal edilmemiş veya sona ermemiş her aboneliği bitirir (src/cluster_erp/modules/subscriptions/customer_subscriptions/services.py:247-399). Etiketler metadata etiket sözlüklerinden gelir.

İş kuralları

  • Bir satış aboneliği bir müşteri ve etkin bir plan ister; bir satın alma aboneliği bir tedarikçi, ürün üçlüsünün tamamı, fiyat, döngü ve para birimi ister (src/cluster_erp/modules/subscriptions/customer_subscriptions/services.py:129-190).
  • subscription_no ve plan code değeri next_code ile verilen yıllık iş anahtarlarıdır (src/cluster_erp/modules/subscriptions/customer_subscriptions/services.py:112, src/cluster_erp/modules/subscriptions/plans/services.py:65).
  • Bir dönem ay olarak döngü uzunluğu (1, 3, 6 veya 12) çarpı interval_count olur ve ilk dönemin ayın gününe sabitlenir (src/cluster_erp/modules/subscriptions/customer_subscriptions/services.py:35-53, src/cluster_erp/modules/subscriptions/customer_subscriptions/services.py:328-339).
  • Tarama vadesi gelmiş her dönemi yakalar ve dönem başına bir yenileme yayar (src/cluster_erp/modules/subscriptions/customer_subscriptions/services.py:365-385).
  • Bir olaydaki tutar birim fiyat çarpı miktardır (src/cluster_erp/modules/subscriptions/customer_subscriptions/services.py:426-444).

Olaylar ve sorgular

Yön Sözleşme sınıfı İşleyici veya yayan Kaynak
yayar SubscriptionActivated, SubscriptionRenewed, SubscriptionCancelled, SubscriptionExpired SubscriptionService._emit src/cluster_erp/modules/subscriptions/customer_subscriptions/services.py:415-444, src/cluster_erp/core/contracts.py:2318-2352
sorguyu yanıtlar GetSubscriptionPlanById _handle_get_plan src/cluster_erp/modules/subscriptions/module.py:53
sorguyu yanıtlar GetCustomerSubscriptionById _handle_get_subscription src/cluster_erp/modules/subscriptions/module.py:54-56

Dört olay sınıfı için modül dışında yapılan grep bu commit'te hiçbir abone bulmaz.

Yetkiler

İzin anahtarı Kullanan Kaynak
subscription_plan.read, .create, .update, .delete, .bulk_delete, .activate, .retire plan uçları src/cluster_erp/modules/subscriptions/plans/routes.py:42-140
customer_subscription.read, .create, .update, .delete, .bulk_delete, .activate, .pause, .resume, .renew, .cancel abonelik uçları; .renew isteğe bağlı taramayı da korur src/cluster_erp/modules/subscriptions/customer_subscriptions/routes.py:51-197

Yaşam döngüsü kodları ek kodlar olarak tohumlanır (src/cluster_erp/server/app.py:837-847).

Gizlilik, saklama ve geçmiş

Modül müşterilerin ve tedarikçilerin taraf kimliklerini saklar ama kendine ait kişisel alanı yoktur ve privacy_handlers.py dosyası yoktur. Değişiklikler değişiklik geçmişine yazılır; bkz. değişiklik geçmişi. extra içindeki kiracı tanımlı değerler okumada izne göre süzülür (src/cluster_erp/modules/subscriptions/customer_subscriptions/routes.py:42-48).

Analitik olguları

Bu modülün analytics_facts.py dosyası yoktur.

Ayarlar ve başvuru verileri

Modül kendine özgü bir ayar okumaz. Para birimleri plan şemasında desenle doğrulanan üç harfli kodlardır (src/cluster_erp/modules/subscriptions/plans/schemas.py:23). Günlük tarama her kiracı veritabanında bir lider kilidi altında çalışır (src/cluster_erp/server/app.py:504-546).

Testler

tests/ ve web-client/ içinde dosya adıyla bulundu.

Tür Dosya Kapsam
pytest tests/test_subscription_math.py dönem hesabı ve olay yükleri (5 test)
e2e web-client/_e2e_subscriptions.mjs web uygulamasında planlar ve abonelikler

Tutarsızlıklar

Tanıtılan terimler

Terim Kod tanımlayıcısı Tanım Türkçe terim Kaynak
subscription plan SubscriptionPlan Döngüsü ve fiyatıyla satılabilir yinelenen bir ürün. Plan src/cluster_erp/modules/subscriptions/plans/models.py:13
customer subscription CustomerSubscription Bir müşteri veya tedarikçiyle canlı yinelenen anlaşma. Abonelik src/cluster_erp/modules/subscriptions/customer_subscriptions/models.py:23
subscription direction direction Bir aboneliğin müşteriye satış mı yoksa tedarikçiden satın alma mı olduğu. abonelik yönü src/cluster_erp/modules/subscriptions/customer_subscriptions/models.py:55

İlgili sayfalar


92f8051 numaralı commit ile 2026-11-13 tarihinde doğrulandı.

Doğrulanan commit 92f8051 · 2026-11-13