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

Modül

Parties modülü (parties)

Her kişi ve kuruluş için tek kartı, adresleri, iletişim kanallarını, konuşulan dilleri ve ülke başvuru verilerini tutan parties modülünün sayfası.

src/cluster_erp/modules/parties/ içindeki parties modülü, işletmenin tanıdığı herkes için tek bir kayıt tutar: taraf (Party, şirketin ilişkide olduğu bir kişi veya kuruluş). Müşteriler, tedarikçiler, çalışanlar ve sahip olunan kuruluşlar ayrı kartlar değil, bir tarafın rolleridir; bu model taraf birleştirme sayfasında açıklanır. Modül ayrıca adresleri, iletişim kanallarını, konuşulan dilleri ve ülke, adres seviyesi ve kanal türü başvuru verilerini tutar. Bu sayfa modülün genel görünümüdür; her alt modülün kendi başvuru sayfası vardır.

Bir bakışta

Öğe Değer Kaynak
Paket src/cluster_erp/modules/parties/ klasör
Modül sınıfı Module src/cluster_erp/modules/parties/module.py:22
name / version parties / 0.1.0 src/cluster_erp/modules/parties/module.py:23-29
API öneki /api/v1/parties (ModuleBase.api_prefix) src/cluster_erp/core/module_base.py:37-38
Alt modüller 5: parties, addresses, communication_channels, person_languages, settings klasör listesi
Tablolar 11 (paketteki __tablename__ sayısı) src/cluster_erp/modules/parties/models.py:1-33
Metadata'daki varlıklar 8: party, address, communication_channel, person_language, country, address_level, address_level_value, channel_type src/cluster_erp/modules/parties/module.py:642-651
Uçlar Pakette 53 uç dekoratörü, ayrıca server/routes/party_composite.py ve server/routes/party_roles.py içinde 4 @router. için grep
Web uygulamasında yeri parties, owned_organisations ve crm modüllerini kapsayan katalog uygulaması parties src/cluster_erp/modules/app_store/catalog.json (parties 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

  • Her kişi veya kuruluş için yıllık iş koduna, türe, görünen ada, vergi alanlarına, notlara ve etkinlik bayrağına sahip tek bir taraf kartı tutar (src/cluster_erp/modules/parties/parties/models.py:18-55).
  • Bir tarafın oynadığı rolleri, diğer modüllerin EventBus üzerinden güncel tuttuğu üç bayrak olarak kaydeder: is_customer, is_supplier ve is_employee (src/cluster_erp/modules/parties/module.py:168-195).
  • Seviyeleri ülke başvuru verilerinden gelen yapılandırılmış adresleri saklar; bkz. adresler.
  • E-posta ve telefon gibi iletişim kanallarını saklar; bkz. iletişim kanalları.
  • Bir kişinin konuştuğu dilleri saklar; bkz. kişi dilleri.
  • Başlangıçta ISO ülke listesini ve varsayılan kanal türlerini tohumlar (src/cluster_erp/modules/parties/module.py:37-74); bkz. ayarlar ve başvuru verileri.
  • Her taraf için ortak ek deposunda bir profil fotoğrafı tutar (src/cluster_erp/modules/parties/parties/routes.py:153-249).

Alt modüller

Alt modül Amaç Ana varlıklar Yönlendirici Kaynak
parties Taraf kartı, bireysel ve kurumsal ayrıntılar, fotoğraf Party, Individual, OrganisationInfo /api/v1/parties (modül kökü) src/cluster_erp/modules/parties/parties/routes.py:28
addresses Bir tarafın yapılandırılmış adresleri Address, AddressComponent /api/v1/parties/{party_id}/addresses, /api/v1/parties/addresses/... src/cluster_erp/modules/parties/addresses/routes.py:21
communication_channels Kanal türleri ve bir tarafın kanalları ChannelType, CommunicationChannel /api/v1/parties/{party_id}/channels, /api/v1/parties/settings/channel-types/ src/cluster_erp/modules/parties/communication_channels/routes.py:27
person_languages Bir tarafın konuştuğu diller PersonLanguage /api/v1/parties/{party_id}/languages src/cluster_erp/modules/parties/person_languages/routes.py:19
settings Ülkeler, adres seviyeleri, adres seviyesi değerleri Country, AddressLevel, AddressLevelValue /api/v1/parties/settings src/cluster_erp/modules/parties/settings/routes.py:30

Beş yönlendiricinin tamamı, önce settings olmak üzere tek bir modül yönlendiricisi altında toplanır ve yönlendiricinin tamamı parties uygulama yetkisine bağlıdır (src/cluster_erp/modules/parties/module.py:96-103). Aynı öneke sahip iki yönlendirici daha sunucu katmanında bulunur: rehberli oluşturma (POST /api/v1/parties/composite) ve rol etkinleştirme (POST /api/v1/parties/{party_id}/roles/...); ikisi de taraf birleştirme sayfasında anlatılır.

Veri modeli

Şema modülün on bir tablosunu ve yabancı anahtarlarını gösterir.

erDiagram
 Party ||--o| Individual : "party_id"
 Party ||--o| OrganisationInfo : "party_id"
 Party ||--o{ Address : "party_id"
 Party ||--o{ CommunicationChannel : "party_id"
 Party ||--o{ PersonLanguage : "party_id"
 Address ||--o{ AddressComponent : "address_id"
 Country ||--o{ Address : "country_id"
 Country ||--o{ AddressLevel : "country_id"
 AddressLevel ||--o{ AddressLevelValue : "level_id"
 AddressLevelValue ||--o{ AddressComponent : "level_value_id"
 ChannelType ||--o{ CommunicationChannel : "channel_type_id"

Düz anlatımla: bir Party en çok bir canlı Individual satırına ve en çok bir canlı OrganisationInfo satırına, ayrıca istenen sayıda adrese, kanala ve konuşulan dile sahiptir. Bir Address bir Country kaydına bağlıdır ve her biri o ülkenin bir AddressLevel ve bir AddressLevelValue kaydını gösteren AddressComponent satırlarından oluşur. Bir CommunicationChannel bir ChannelType kaydına sahiptir.

Varlık Tablo Anahtar alanlar Notlar Kaynak
Party parties_parties code, party_type, display_name, tax_id, tax_office, is_customer, is_supplier, is_employee, photo_attachment_id, extra code benzersiz; extra kiracı tanımlı alanları tutar src/cluster_erp/modules/parties/parties/models.py:18-55
Individual parties_individuals party_id, first_name, last_name, middle_name, title, date_of_birth, gender taraf başına bir canlı satır src/cluster_erp/modules/parties/parties/models.py:58-82
OrganisationInfo parties_organisation_info party_id, legal_name, trade_name, registration_number, industry taraf başına bir canlı satır src/cluster_erp/modules/parties/parties/models.py:85-105
Address parties_addresses code, party_id, country_id, address_type, full_text, is_primary bkz. adresler src/cluster_erp/modules/parties/addresses/models.py:16-41
AddressComponent parties_address_components address_id, address_level_id, level_value_id src/cluster_erp/modules/parties/addresses/models.py:44-65
ChannelType parties_channel_types code, name, translations, icon, validation_pattern kod ve ad canlı satırlar arasında benzersiz src/cluster_erp/modules/parties/communication_channels/models.py:15-38
CommunicationChannel parties_communication_channels code, party_id, channel_type_id, value, is_primary src/cluster_erp/modules/parties/communication_channels/models.py:41-59
PersonLanguage parties_person_languages party_id, language, proficiency_level src/cluster_erp/modules/parties/person_languages/models.py:15-29
Country parties_countries code, code_alpha3, numeric_code, name, translations, phone_code üç kod canlı satırlar arasında benzersiz src/cluster_erp/modules/parties/settings/models.py:12-49
AddressLevel parties_address_levels code, country_id, level_order, name, is_required level_order canlı satırlar arasında ülke başına benzersiz src/cluster_erp/modules/parties/settings/models.py:52-80
AddressLevelValue parties_address_level_values code, level_id, parent_id, value, postal_code canlı satırlar arasında seviye, değer ve üst değer başına benzersiz src/cluster_erp/modules/parties/settings/models.py:83-112

Her varlık BaseModel sınıfından türer; bu yüzden satırlar bir ULID birincil anahtar, denetim sütunları ve geçici silme sütunları taşır; bkz. temel model ve kimlikler ve geçici silme ve kullanımdan kaldırma.

Ekranlar ve metadata

get_metadata dört bölümlü tek bir Taraflar (İngilizce Parties) kenar çubuğu grubu bildirir (src/cluster_erp/modules/parties/module.py:557-641):

  • Taraflar: iki varlık sekmeli bir liste; party listesi ve owned_organisations modülünün organisation listesi (Kuruluşlar) (src/cluster_erp/modules/parties/module.py:570-599).
  • Adresler ve İletişim Kanalları: list_all uçlarını kullanan ve sekme çubuğundan gizlenen iki liste (src/cluster_erp/modules/parties/module.py:603-626).
  • Ayarlar: country, address_level ve channel_type sekmeleriyle (src/cluster_erp/modules/parties/module.py:627-637).

Taraf listesinde kod, ad, tür, vergi numarası, aktif ve oluşturulma sütunları ile Tür ve Rol adlı iki süzgeç vardır (src/cluster_erp/modules/parties/parties/metadata.py:440-508). Taraf ayrıntısında Genel, Adresler, İletişim Kanalları, Konuştuğu Diller ve Çalışma Takvimi sekmeleri vardır; sonuncusu calendars modülünün özel bileşenidir (src/cluster_erp/modules/parties/parties/metadata.py:509-544). Rol bölümleri aynı kartta beş FacetMeta girdisiyle görünür (src/cluster_erp/modules/parties/parties/metadata.py:550-763). Taraf kartı ayrıca rehberli oluşturmayı, oluşturmada belge eklemeyi, kiracı alanı kovalarını, call, message ve mail hızlı aksiyonlarını ve bir fotoğrafı bildirir (src/cluster_erp/modules/parties/parties/metadata.py:313-378). Web uygulaması bunları genel olarak işler; bkz. genel ayrıntı ve genel form.

Durumlar ve aksiyonlar

Bir tarafın durum alanı yoktur; bir is_active bayrağı vardır (src/cluster_erp/modules/parties/parties/models.py:32). Modül altı ActionMeta girdisi bildirir (pakette grep "ActionMeta(" ile sayıldı).

Aksiyon Etiket Koşul Uç İzin Kaynak
enable_customer_role Müşteri Rolünü Etkinleştir is_customer yanlış POST /{id}/roles/customer customer.create src/cluster_erp/modules/parties/parties/metadata.py:394-408, src/cluster_erp/server/routes/party_roles.py:58-77
enable_supplier_role Tedarikçi Rolünü Etkinleştir is_supplier yanlış POST /{id}/roles/supplier supplier.create src/cluster_erp/modules/parties/parties/metadata.py:409-423, src/cluster_erp/server/routes/party_roles.py:80-99
enable_employee_role Çalışan Rolünü Etkinleştir is_employee yanlış POST /{id}/roles/employee employee.create src/cluster_erp/modules/parties/parties/metadata.py:424-438, src/cluster_erp/server/routes/party_roles.py:102-123
update_from_internet (ülke) İnternetten Güncelle yok (genel) POST /settings/countries/update-from-internet country.create src/cluster_erp/modules/parties/settings/metadata.py:34-43, src/cluster_erp/modules/parties/settings/routes.py:55-62
seed_address_levels (ülke) Adres Seviyelerini Oluştur yok (tek kayıt) POST /settings/countries/{id}/seed-address-levels country.seed src/cluster_erp/modules/parties/settings/metadata.py:44-53, src/cluster_erp/modules/parties/settings/routes.py:133-146
seed_defaults (kanal türü) Varsayılanları Oluştur yok (genel) POST /settings/channel-types/seed-defaults channel_type.seed src/cluster_erp/modules/parties/settings/metadata.py:383-392, src/cluster_erp/modules/parties/communication_channels/routes.py:35-41

İş kuralları

  • Yeni bir taraf code değerini party yıllık dizisinden alır (src/cluster_erp/modules/parties/parties/services.py:116); bkz. temel model ve kimlikler.
  • Liste araması görünen adla, kodla ve aranabilir kiracı alanlarıyla eşleşir (src/cluster_erp/modules/parties/parties/services.py:64-73).
  • Rol süzgeci üç rol bayrağını okur (src/cluster_erp/modules/parties/parties/services.py:55-61).
  • Oluşturma, yükteki is_customer, is_supplier veya is_employee değerlerini satıra kopyalamaz (src/cluster_erp/modules/parties/parties/services.py:117-126). Bayrakları rol uçları, PartyRoleSet ve bir başlangıç uzlaştırması ayarlar (src/cluster_erp/server/app.py:1002-1055).
  • Bir güncelleme satırın version değerini yalnızca bir alan değiştiyse artırır ve yeni görünen ad ve vergi numarasıyla PartyUpdated yayar (src/cluster_erp/modules/parties/parties/services.py:197-212).
  • Bir tarafı silmek deleted_at alanını ayarlar ve PartyDeleted yayar; toplu silme her kimlik için bir PartyDeleted yayar (src/cluster_erp/modules/parties/parties/services.py:216-233).
  • Fotoğraf JPEG, PNG, WebP veya GIF olmalı, boş olmamalı ve en fazla 5 MB olmalıdır (src/cluster_erp/modules/parties/parties/routes.py:153-154, src/cluster_erp/modules/parties/parties/routes.py:196-203).

Olaylar ve sorgular

Modül 14 sözleşme tüketir ve 3 sözleşme üretir. Tüketmek, paket içinde subscribe( veya register_query_handler( çağrısına ilk argüman olarak verilmek demektir; üretmek, paket içinde sözleşme sınıf adının ardından ( gelmesi demektir. Modüller arası üreticiler ve tüketiciler sözleşmeler başvurusu sayfasında listelenir.

Yön Sözleşme sınıfı İşleyici veya yayan Kaynak
yayar PartyCreated, PartyUpdated, PartyDeleted PartyService.create, .update, .delete, .bulk_delete src/cluster_erp/modules/parties/parties/services.py:156-163, src/cluster_erp/modules/parties/parties/services.py:201-212, src/cluster_erp/modules/parties/parties/services.py:222-232
sorguyu yanıtlar GetPartyById _handle_get_party src/cluster_erp/modules/parties/module.py:117, src/cluster_erp/modules/parties/module.py:359-402
sorguyu yanıtlar GetAddressById, GetPartyPrimaryAddress _handle_get_address, _handle_get_primary_address src/cluster_erp/modules/parties/module.py:118-121
sorguyu yanıtlar GetCountryByCode _handle_get_country_by_code src/cluster_erp/modules/parties/module.py:124
sorguyu yanıtlar SearchParties _handle_search_parties src/cluster_erp/modules/parties/module.py:125
sorguyu yanıtlar EnsurePartyForOrganisation _handle_ensure_party_for_org src/cluster_erp/modules/parties/module.py:126, src/cluster_erp/modules/parties/module.py:324-357
sorguyu yanıtlar CountPartyChannels _handle_count_party_channels src/cluster_erp/modules/parties/module.py:127
sorguyu yanıtlar GetPartyContactValues party_contact_values src/cluster_erp/modules/parties/module.py:154-157
abone olur ResolveEntityEmails _handle_resolve_emails src/cluster_erp/modules/parties/module.py:128, src/cluster_erp/modules/parties/module.py:489-536
abone olur CustomerCreated _handle_customer_created src/cluster_erp/modules/parties/module.py:129, src/cluster_erp/modules/parties/module.py:445-487
abone olur PartyRoleSet _handle_party_role_set src/cluster_erp/modules/parties/module.py:130
abone olur DescribeAnalyticsFacts describe_analytics_facts src/cluster_erp/modules/parties/module.py:134-139
abone olur CollectSubjectData, AnonymiseSubject collect_subject_data, anonymise_subject src/cluster_erp/modules/parties/module.py:159-166

Yetkiler

İzin anahtarı Kullanan Kaynak
party.read, party.create, party.update, party.delete, party.bulk_delete taraf uçları ve fotoğraf uçları src/cluster_erp/modules/parties/parties/routes.py:46-237
address.read, .create, .update, .delete, .bulk_delete adres uçları src/cluster_erp/modules/parties/addresses/routes.py:36-160
channel.read, .create, .update, .delete, .bulk_delete kanal uçları src/cluster_erp/modules/parties/communication_channels/routes.py:118-228
channel_type.read, .create, .update, .delete, .bulk_delete, .seed kanal türü uçları src/cluster_erp/modules/parties/communication_channels/routes.py:37-100
person_language.read, .create, .update, .delete, .bulk_delete dil uçları src/cluster_erp/modules/parties/person_languages/routes.py:25-86
country.read, .create, .update, .delete, .bulk_delete, .seed ülke uçları src/cluster_erp/modules/parties/settings/routes.py:41-136
address_level.*, address_level_value.* adres seviyesi uçları src/cluster_erp/modules/parties/settings/routes.py:157-280
party.create; customer.create, supplier.create, employee.create rehberli oluşturma; rol etkinleştirme src/cluster_erp/server/routes/party_composite.py:57, src/cluster_erp/server/routes/party_roles.py:62-106

İzin kodlarının nasıl tohumlandığı ve denetlendiği roller ve izinler sayfasında açıklanır.

Gizlilik, saklama ve geçmiş

privacy_handlers.py, privacy modülünün iki yayılım olayını bu modülün tabloları için yanıtlar (src/cluster_erp/modules/parties/privacy_handlers.py:1-10). collect_subject_data tarafın, bireysel ve kurumsal ayrıntılarının, adreslerinin, kanallarının ve dillerinin bir kopyasını döndürür (src/cluster_erp/modules/parties/privacy_handlers.py:69-100). anonymise_subject tanımlayıcı değerlerin üzerine talebin işaretini yazar, vergi alanlarını ve notları temizler, kişisel kiracı alanlarını siler, satırları talebin nedeniyle kullanımdan kaldırır ve dosyayı privacy modülünün kaldırması için fotoğraf ekini bildirir (src/cluster_erp/modules/parties/privacy_handlers.py:234-291). GetPartyContactValues tarafın canlı kanallarındaki e-posta adreslerini ve telefon numaralarını döndürür (src/cluster_erp/modules/parties/privacy_handlers.py:35-66). Genel akış gizlilik ve ilgili kişi talepleri sayfasındadır. Değişiklikler değişiklik geçmişi tarafından kaydedilir.

Analitik olguları

analytics_facts.py, parties_parties üzerinde tek bir olgu kümesi, party, bildirir; boyutları taraf türü, üç rol bayrağı, aktif ve oluşturulma tarihidir, tek ölçüsü party_count'tur (src/cluster_erp/modules/parties/analytics_facts.py:17-72). Modül DescribeAnalyticsFacts olayını bununla yanıtlar (src/cluster_erp/modules/parties/analytics_facts.py:75-77).

Ayarlar ve başvuru verileri

Ülkeler, adres seviyeleri, adres seviyesi değerleri ve kanal türleri veritabanındaki başvuru verileridir. Ülkeler pycountry paketinin ISO 3166 listesinden gelir ve başlangıçta tohumlanır; var olan satırların üzerine yazılmaz (src/cluster_erp/modules/parties/settings/services.py:38-86). Ayrıntılar ayarlar ve başvuru verileri sayfasındadır.

Testler

web-client/ içinde dosya adıyla ve tests/ içinde modules.parties için grep ile bulundu.

Tür Dosya Kapsam
pytest tests/test_party_form_contract.py taraf formu metadata'sı, şemalar, hata kataloğu ve modül bağlantısı (8 test)
pytest tests/test_tenant_fields.py, tests/test_tenant_field_catalog.py, tests/test_fresh_install_contract.py taraf modellerini ve metadata'sını daha geniş sözleşmelerin parçası olarak içe aktarır
e2e web-client/_e2e_parties.mjs taraflar uygulaması: listeler, CRUD, ayrıntı bölümleri, kuruluş ayrıntısı
e2e web-client/_e2e_parties_supplier.mjs bileşik uçla oluşturulan ve rol süzgeciyle bulunan bir tedarikçi taraf
e2e web-client/_e2e_party_form_fixes.mjs canlı sunucuya karşı taraf formu
e2e web-client/_e2e_party_photo.mjs taraf fotoğrafının yüklenmesi, değiştirilmesi ve kaldırılması

Tutarsızlıklar

Tanıtılan terimler

Terim Kod tanımlayıcısı Tanım Türkçe terim Kaynak
party Party Şirketin ilişkide olduğu, tek kart olarak tutulan bir kişi veya kuruluş. Taraf src/cluster_erp/modules/parties/parties/models.py:18
party type party_type Bir tarafın individual mı yoksa organisation mı olduğu. Taraf türü src/cluster_erp/modules/parties/parties/schemas.py:17-19
role flag is_customer, is_supplier, is_employee Tarafın bir rol oynadığını söyleyen ve rol kaydıyla güncel tutulan bir mantıksal değer. Rol src/cluster_erp/modules/parties/parties/models.py:33-35

İlgili sayfalar


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

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