src/cluster_erp/modules/currencies/ içindeki currencies modülü üç tür finans başvuru verisi sunar: para birimleri, kurlar ve ödeme koşulları. Para birimi ve kur modelleri platform çekirdeğinde, src/cluster_erp/core/currencies.py içinde bulunur; bu modül onları tohumlar, uçlarını bağlar ve ekranlarını bildirir. Ödeme koşulları modülün kendi tablosudur. Diğer modüller bu kayıtları formlarında yabancı anahtar kaynağı olarak kullanır.
Bir bakışta¶
| Öğe | Değer | Kaynak |
|---|---|---|
| Paket | src/cluster_erp/modules/currencies/ |
klasör |
| Modül sınıfı | Module |
src/cluster_erp/modules/currencies/module.py:18 |
name / version |
currencies / 0.1.0 |
src/cluster_erp/modules/currencies/module.py:19-25 |
| API öneki | /api/v1/currencies (ModuleBase.api_prefix) |
src/cluster_erp/core/module_base.py:37-38 |
| Alt modüller | 2 klasör: exchange_rates, payment_terms; ayrıca server/routes/currencies.py içindeki para birimi uçları |
klasör listesi, src/cluster_erp/modules/currencies/module.py:74-81 |
| Tablolar | 3: core_currencies, core_exchange_rates (çekirdekte tanımlı), core_payment_terms |
src/cluster_erp/core/currencies.py:58, src/cluster_erp/core/currencies.py:92, src/cluster_erp/modules/currencies/payment_terms/models.py:13 |
| Metadata'daki varlıklar | 3: currency, exchange_rate, payment_term |
src/cluster_erp/modules/currencies/module.py:146-150 |
| Uçlar | 20: 7 para birimi ucu, 8 kur ucu, 5 ödeme koşulu ucu | @router. için grep |
| Web uygulamasında yeri | Katalog uygulaması yok; ayarlar Sistem Uygulamaları altında görünür (webapp/i18n/tr.json anahtarı settings.system_apps) |
webapp/js/home.js (SYSTEM_APP_SETTINGS) |
| 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¶
- Her başlangıçta ISO 4217 para birimi listesini ve standart ödeme koşullarını, var olan satırların üzerine yazmadan tohumlar (
src/cluster_erp/modules/currencies/module.py:31-62). - Para birimlerini listeler, oluşturur, günceller ve geçici olarak siler; listeyi paketlenmiş ISO verisinden yeniler (
src/cluster_erp/server/routes/currencies.py:21-98). - Kurları para birimi çifti ve tarih başına saklar, bir tutarı dönüştürür ve Türkiye merkez bankasının günlük kurlarını içe aktarır (
src/cluster_erp/modules/currencies/exchange_rates/routes.py:29-144). - Ödeme koşullarını bir kategori, net gün sayısı ve erken ödeme iskontosuyla tutar (
src/cluster_erp/modules/currencies/payment_terms/models.py:12-62).
Alt modüller¶
| Alt modül | Amaç | Ana varlıklar | Yönlendirici | Kaynak |
|---|---|---|---|---|
| para birimi uçları | Para birimi listesi | Currency |
/api/v1/currencies (modül kökü) |
src/cluster_erp/server/routes/currencies.py:18 |
exchange_rates |
Kurlar, dönüştürme, merkez bankası içe aktarımı | ExchangeRate |
/api/v1/currencies/exchange-rates |
src/cluster_erp/modules/currencies/exchange_rates/routes.py:29 |
payment_terms |
Ödeme koşulları | PaymentTerm |
/api/v1/currencies/payment-terms |
src/cluster_erp/modules/currencies/payment_terms/routes.py:21 |
Para birimi yönlendiricisi sunucu katmanında tanımlanır ve modül yönlendiricisi altına ilk olarak eklenir; yönlendiricinin tamamı currencies uygulama yetkisine bağlıdır (src/cluster_erp/modules/currencies/module.py:64-82). exchange_rates/models.py yalnızca çekirdek modeli yeniden dışa aktarır (src/cluster_erp/modules/currencies/exchange_rates/models.py:1-5).
Veri modeli¶
| Varlık | Tablo | Anahtar alanlar | Notlar | Kaynak |
|---|---|---|---|---|
Currency |
core_currencies |
code, numeric_code, name, symbol, decimal_places, translations, is_active |
kod ve sayısal kod canlı satırlar arasında benzersiz | src/cluster_erp/core/currencies.py:57-88 |
ExchangeRate |
core_exchange_rates |
base_currency_code, target_currency_code, buy_rate, sell_rate, rate, unit, rate_date, source |
çift ve tarih başına bir canlı satır; kurlar Numeric(18, 6) |
src/cluster_erp/core/currencies.py:91-132 |
PaymentTerm |
core_payment_terms |
code, name, category, net_days, discount_percent, discount_days, translations, is_active, sort_order |
kod canlı satırlar arasında benzersiz | src/cluster_erp/modules/currencies/payment_terms/models.py:12-62 |
Tohumlama ve çekirdek uçlar başvuru verileri ve çekirdek i18n sayfasında da anlatılır.
Ekranlar ve metadata¶
get_metadata modüle Para Birimleri ve Ödeme Koşulları (İngilizce Currencies & Payment Terms) etiketini ve iki bölümlü bir Finans Ayarları kenar çubuğu grubunu verir: currency, exchange_rate ve payment_term sekmeli bir ayarlar görünümü ve bir Ödeme Koşulları listesi (src/cluster_erp/modules/currencies/module.py:103-151). Web uygulaması modülü SYSTEM_APP_SETTINGS içinde listeler; bu yüzden ayar sekmeleri Ayarlar, ardından Sistem Uygulamaları üzerinden açılır; kod yorumu finans başvuru verilerinin kendine ait bir uygulaması olmadığını belirtir (webapp/js/home.js (SYSTEM_APP_SETTINGS)). Ödeme koşulu kategorileri altı seçenek olarak sunulur: peşin/avans, vadeli, erken ödeme iskontolu, ay sonu, taksitli ve uluslararası (src/cluster_erp/modules/currencies/metadata.py:294-299).
Durumlar ve aksiyonlar¶
Kayıtların bir is_active bayrağı vardır, durum alanı yoktur (src/cluster_erp/core/currencies.py:88, src/cluster_erp/modules/currencies/payment_terms/models.py:53-57).
| Aksiyon | Etiket | Koşul | Uç | İzin | Kaynak |
|---|---|---|---|---|---|
update_from_internet (para birimi) |
İnternetten Güncelle | yok (genel) | POST /update-from-internet |
currency.create |
src/cluster_erp/modules/currencies/metadata.py:29-37, src/cluster_erp/server/routes/currencies.py:33-40 |
sync_tcmb (kur) |
TCMB Senkronize Et | yok (genel) | POST /exchange-rates/sync-tcmb |
exchange_rate.sync |
src/cluster_erp/modules/currencies/metadata.py:155-163, src/cluster_erp/modules/currencies/exchange_rates/routes.py:131-144 |
İş kuralları¶
- Para birimi tohumu, sembolleri ve çevirileri olan seçilmiş bir listeyi alır ve
pycountrypaketinden diğer tüm ISO 4217 para birimlerini ekler; sayısal kodu boş veya zaten kullanılmış bir para birimi atlanır (src/cluster_erp/core/currencies.py:1811-1852). Var olan kodlar değiştirilmez (src/cluster_erp/core/currencies.py:281-309). - İnternetten Güncelle aynı paketlenmiş veriyi okur ve var olan para birimlerinin sayısal kodunu, adını, sembolünü ve çevirilerini yeniler; ağ isteği yapmaz (
src/cluster_erp/core/currencies.py:311-357). - Aynı para birimi arasında dönüştürme tutarı kur 1 ile döndürür. Aksi halde verilen tarihin doğrudan kurunu, tarih verilmemişse en yeni doğrudan kuru
amount x rate / unitolarak kullanır; o da yoksa eşleşen ters kuruamount x unit / rateolarak kullanır. Sonuçlar altı basamağa yuvarlanır (src/cluster_erp/core/currencies.py:383-446). Hiç kur yoksa uç bulunamadı yanıtı verir (src/cluster_erp/modules/currencies/exchange_rates/routes.py:66-79). - Dönüştürmedeki
quantizehiçbir yuvarlama kipi vermez vesrc/içindegetcontextvesetcontextiçin yapılangrepondalık bağlamında hiçbir değişiklik bulmaz; bu yüzden Python'undecimalmodülünün varsayılan bağlamı geçerlidir. - TCMB Senkronize Et, merkez bankasının günlük XML dosyasını
tcmb_urlayarındaki adrestentcmb_timeout_secondszaman aşımıyla çeker. Her yabancı para biriminiTRYkarşısında alış, satış ve ortalama kurla saklar; o tarihin satırını oluşturur veya günceller (src/cluster_erp/modules/currencies/exchange_rates/routes.py:131-144,src/cluster_erp/core/currencies.py:448-552,src/cluster_erp/config/settings.py:418-420). Çekme bir işçi iş parçacığında çalışır; bir başarısızlık fırlatılmaz, hata sayısı olarak döndürülür (src/cluster_erp/core/currencies.py:454-461). - Elle girilen bir kur, başka bir kaynak verilmedikçe
manualkaynağını alır; para birimi kodları büyük harfle saklanır (src/cluster_erp/modules/currencies/exchange_rates/schemas.py:16-24,src/cluster_erp/modules/currencies/exchange_rates/services.py:80-93). - Bir ödeme koşulu kodu canlı koşullar arasında boş olmalıdır (
src/cluster_erp/modules/currencies/payment_terms/services.py:452-455). Tohum altı kategoride 45 standart koşul içerir (src/cluster_erp/modules/currencies/payment_terms/services.py:32-409,codeanahtarlı girdiler). assert_known_currency, canlı ve etkin bir para birimi olmayan bir koduCURRENCY_UNKNOWNve HTTP 422 ile reddeder (src/cluster_erp/core/currencies.py:30-49). Bu commit'te onusubscriptionsmodülü çağırır (assert_known_currencyiçingrep).
Olaylar ve sorgular¶
Modül hiçbir sözleşme tüketmez ve üretmez; register_events boştur (src/cluster_erp/modules/currencies/module.py:84-85). Diğer modüller kayıtlarını metadata'da yabancı anahtar kaynağı olarak kullanır: diğer modüllerin 10 dosyasında module="currencies" olan 33 ForeignKeySource girdisi (grep).
| Yön | Sözleşme sınıfı | İşleyici veya yayan | Kaynak |
|---|---|---|---|
| yok | yok | yok | src/cluster_erp/modules/currencies/module.py:84-85 |
Yetkiler¶
| İzin anahtarı | Kullanan | Kaynak |
|---|---|---|
currency.read, .create, .update, .delete, .seed |
para birimi uçları | src/cluster_erp/server/routes/currencies.py:25-94 |
exchange_rate.read, .create, .update, .delete, .sync |
kur uçları; toplu silme de exchange_rate.delete kullanır |
src/cluster_erp/modules/currencies/exchange_rates/routes.py:40-134 |
payment_term.read, .create, .update, .delete |
ödeme koşulu uçları | src/cluster_erp/modules/currencies/payment_terms/routes.py:28-82 |
Gizlilik, saklama ve geçmiş¶
Modül kişisel veri saklamaz ve privacy_handlers.py dosyası yoktur. Silme deleted_at alanını ayarlar (src/cluster_erp/core/currencies.py:273-279, src/cluster_erp/modules/currencies/exchange_rates/services.py:109-133). Değişiklikler değişiklik geçmişi tarafından kaydedilir.
Analitik olguları¶
Bu modülün analytics_facts.py dosyası yoktur.
Ayarlar ve başvuru verileri¶
| Ayar | Anlam | Kaynak |
|---|---|---|
tcmb_url |
Merkez bankası günlük kur dosyasının adresi | src/cluster_erp/config/settings.py:416 |
tcmb_sync_on_startup |
Varsayılanı False olarak bildirilir; grep onu okuyan bir kod bulmaz |
src/cluster_erp/config/settings.py:417 |
tcmb_timeout_seconds |
Çekme zaman aşımı, varsayılan 15 | src/cluster_erp/config/settings.py:418 |
Bkz. ayarlar başvurusu.
Testler¶
tests/ içinde modules.currencies ve core.currencies için grep ile ve web-client/ içinde dosya adıyla bulundu.
| Tür | Dosya | Kapsam |
|---|---|---|
| pytest | tests/test_tenant_fields.py |
ödeme koşulu modelini daha geniş bir sözleşmede içe aktarır |
| pytest | tests/test_fk_indexes.py |
indeks denetimi için çekirdek para birimi modellerini içe aktarır |
| e2e | web-client/_e2e_deseng_currencies.mjs |
Sistem Uygulamaları altındaki para birimi ayarları ve ayrı bir uygulamanın bulunmaması |
Tutarsızlıklar¶
Tanıtılan terimler¶
| Terim | Kod tanımlayıcısı | Tanım | Türkçe terim | Kaynak |
|---|---|---|---|---|
| currency | Currency |
Kodu, simgesi ve ondalık basamak sayısıyla bir ISO 4217 para birimini tutan referans veri satırı. | para birimi | src/cluster_erp/core/currencies.py:57 |
| exchange rate | ExchangeRate |
Bir temel para biriminin bir tarihte, unit başına hedef para birimindeki değeri. |
Kur | src/cluster_erp/core/currencies.py:91 |
| payment term | PaymentTerm |
Bir faturanın ne zaman ve nasıl ödeneceğine dair kodlu bir kural. | Ödeme koşulu | src/cluster_erp/modules/currencies/payment_terms/models.py:12 |
İlgili sayfalar¶
- Modüller dizini
- Başvuru verileri ve çekirdek i18n
- Para ve Decimal
- Ayarlar başvurusu
- Bu modülün API başvurusu
92f8051 numaralı commit ile 2026-11-13 tarihinde doğrulandı.