sozsoft-platform/configs/seeds/docs/modules/App.Administration.md
2026-10-07 11:17:46 +03:00

20 KiB
Raw Blame History

Yönetim (App.Administration)

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.

Tanımlamalar (App.Administration.Definitions)

Sektörler, Diziler ve Ölçü Kategorileri wizard ekranı değildir (ListFormSeeder_Administration); burada yalnızca menü sırası için anılır.

1. Amaç ve kapsam

Satış ve satınalmanın ortak kullandığı Kontaklar kartı (müşteri ve tedarikçi; şirket ya da bireysel) ve onu sınıflandıran Kontak Etiketleri. İleride yapılacak Satış ve Satınalma belgeleri (teklif, sipariş, fatura) kontağı bu ekrandan seçer. Kart başlangıçta Satınalma › Tanımlamalar altında App.Prc.Supplier olarak üretildi; satış tarafı da kullanacağı için Yönetim modülüne taşındı.

2. Analiz ve kararlar

  • Modül Adm, tablo öneki Adm_T_, kod öneki App.Definitions. (Sektörler ile aynı aile). Eski adlardan karşılık: Prc_T_Supplier → Adm_T_Contact, Prc_T_SupplierContact → Adm_T_ContactPerson, Prc_T_SupplierBankAccount → Adm_T_ContactBankAccount, Prc_T_SupplierTag → Adm_T_ContactTag; alt tablolardaki bağ kolonu SupplierId → ContactId.
  • Ana liste "Kontaklar" olduğu için kartın kişi sekmesi İlgili Kişiler (App.Definitions.ContactPerson) adını aldı; iki ekranın adı çakışmaz.
  • Listede yalnızca firma/şahıs satırları durur; firmada çalışan kişiler İlgili Kişiler sekmesindedir.
  • "Adrese dayalı hesaplama" butonu yok (geocoding servisi yok). Enlem/boylam kolonları tabloda durur ama formdan kaldırıldı; ekranda girilmez.
  • Hesap planı tablosu olmadığından Alacak/Borç hesabı metin alanıdır; Fiyat Listesi para birimi seçimidir.
  • Etiketler Adm_T_ContactTag adlarından dxTagBox ile seçilir ve Tags kolonunda tutulur.
  • Enlem/boylam decimal(10,7) yerine float açıldı (create_table decimal'i 18,4 sabitler, koordinat hassasiyeti kaybolurdu).
  • Kart bölümleri (Satış, Satınalma, Mali Bilgi ve Diğer, Muhasebe, Notlar) Adm_T_Contact satırının kendisini düzenleyen menüsüz Form sekmeleridir (ilişki Id → Id), Sağlık Kartları'ndaki kalıp. İlgili Kişiler ve Banka Hesapları liste sekmesidir (Id → ContactId).
  • Satış/Satınalma sekmelerindeki ödeme koşulu, ödeme yöntemi, teslim yöntemi ve Incoterm seçenekleri Satınalma › Tanımlamalar tablolarından (Prc_T_*) gelir; bu tanımlar taşınmadı.
  • Adres, Kiracılar ekranıyla aynı zinciri kullanır: Ülke › Şehir › İlçe › Mahalle; mahalle seçimi posta kodunu doldurur.
  • Logo tek görseldir (multiple: false) ve formda 120×120 gösterilir.
  • Sektör (SectorId) Sektörler ekranının (App.Definitions.Sector, Adm_T_Sector) kiracıya ait aktif kayıtlarından seçilir. JobPosition kolonu tabloda kalır, ekranda yoktur.
  • Kontak telefonu (Phone) phoneCountry biçimindedir: maske seçilen ülkenin kodu ve numara kalıbıyla değişir, pattern ^[0-9]{4,15}$. Ülke alanı olmayan İlgili Kişiler telefonu phoneGlobal maskesi ve ^[0-9]{10}$ kuralı taşır; web sitesi pattern, e-posta email doğrulaması taşır.

3. Menü ve ekranlar

Yönetim (App.Administration) › Tanımlamalar (App.Administration.Definitions):

Sıra Ekran Kod Not
1 Sektörler App.Definitions.Sector kod seed'i
2 Kontaklar App.Definitions.Contact ana kart; sekmeler: Satış (App.Definitions.ContactSales), Satınalma (App.Definitions.ContactPurchasing), Mali Bilgi ve Diğer (App.Definitions.ContactFinancial), Muhasebe (App.Definitions.ContactAccounting), Notlar (App.Definitions.ContactNotes), İlgili Kişiler (App.Definitions.ContactPerson), Banka Hesapları (App.Definitions.ContactBankAccount) — hepsi menüsüz
3 Kontak Etiketleri App.Definitions.ContactTag tanım, demo veri
4 Diziler App.Definitions.Sequence kod seed'i
5 Ölçü Kategorileri App.Definitions.UomCategory kod seed'i

4. Veri modeli

Tüm tablolar kiracı (TenantId) + tam audit + soft delete taşır.

  • Adm_T_ContactTag (Name, Color, IsActive)
  • Adm_T_Contact — kimlik/adres (Country, City, District, Township, PostalCode)/vergi, satış ve satınalma koşulları (Prc_T_* tanım tablolarına Id ile), kullanıcılar (AbpUsers), para birimi (Sas_H_Currency.Name), sektör (Adm_T_Sector), dil (Sas_H_Language.CultureName), muhasebe alanları, Latitude/Longitude (float), Notes (HTML, nvarchar(MAX)), IsActive.
  • Adm_T_ContactPerson (ContactId → Adm_T_Contact.Id, Photo, Name, JobTitle, Email, Phone, Mobile, Notes)
  • Adm_T_ContactBankAccount (ContactId → Adm_T_Contact.Id, BankName, Iban, AccountHolder, Currency, IsDefault)

5. İş kuralları ve hesaplar

  • Tanım lookup'ları yalnızca IsActive = 1 ve silinmemiş kayıtları listeler.
  • Ülke › İl › İlçe › Mahalle cascade: üst alan değişince alttakiler temizlenir; mahalle seçilince posta kodu copy tarifiyle dolar.
  • Ana form yalnızca kimlik + adres alanlarını taşır. Satış, Satınalma, Mali Bilgi ve Diğer, Muhasebe ve Notlar sekmelerinde yalnızca düzenleme açıktır; yeni kontak önce ana formdan eklenir, sekmeler kayıttan sonra açılır.
  • IBAN doğrulaması: ^[A-Z]{2}[0-9]{2}[A-Z0-9]{11,30}$ (boşluksuz, büyük harf).
  • Yeni kayıtta Tür = Şirket, Grup Teklif Talebi = Sipariş Üzerine, Fatura onayı = 3 doğrulamadan sonra sor varsayılanları tablodan gelir.

6. Yetki ve görünürlük

Yetki ağacı: App.Administration grubu › App.Administration.Definitions › App.Definitions.Contact (sıra 2) ve App.Definitions.ContactTag (sıra 3), her biri + Create/Update/Delete/Export/Import/Note. Alt formların yetkisi App.Definitions.Contact altındadır: Satış, Satınalma, Mali Bilgi ve Diğer, Muhasebe, Notlar (7–11), İlgili Kişiler (12), Banka Hesapları (13). Modules = Sas|Adm, MultiTenancySide = Both. Yetkiler hiçbir role otomatik atanmaz. Widget'lar: Kontaklar ve Kontak Etiketleri'nde Toplam · Aktif · Pasif; alt formlarda widget yok.

7. Entegrasyonlar

Yok. Ülke/Şehir/İlçe, Para Birimi, Dil, Sektör, Kullanıcılar ve Satınalma tanımları yalnızca okunur.

8. Akış örneği

  1. Yönetim › Tanımlamalar › Kontak Etiketleri'nde "Vendor" aktif durur.
  2. Kontaklar'da "Acme Corporation" eklenir, Etiketler kutusundan Vendor seçilir.
  3. Satınalma sekmesinde Düzenle ile Ödeme Koşulu = 30 Gün seçilir.
  4. İlgili Kişiler sekmesinde Addison Olson eklenir; ContactId kartın Id'sinden yazılır.
  5. Banka Hesapları sekmesinde IBAN girilir ve Varsayılan işaretlenir.

9. Sık sorulanlar

  • Tedarikçiler ekranı nereye gitti? Bu ekrandır; müşteri ve tedarikçi aynı Kontaklar kartında tutulur.
  • Kişiler neden listede ayrı satır değil? Kişi kontak değildir; kartın İlgili Kişiler sekmesindedir.
  • Yeni kontakta Satış/Satınalma sekmeleri neden yok? Sekmeler kaydın kendisini düzenler; kayıt ana formdan eklendikten sonra görünür.
  • Sekme "Kayıt Bulunamadı" gösteriyor. Kullanıcının o sekmenin okuma yetkisi yoktur (App.Definitions.ContactSales vb.); yetkiler rol ekranından verilir.

10. Dosyalar ve geri alma

  • Tablolar: sql/object/Adm_T_Contact.sql, Adm_T_ContactPerson.sql, Adm_T_ContactBankAccount.sql, Adm_T_ContactTag.sql.
  • Wizard'lar: ContactTag.json, ContactPerson.json, ContactBankAccount.json, ContactSales.json, ContactPurchasing.json, ContactFinancial.json, ContactAccounting.json, ContactNotes.json, Contact.json.
  • Demo veri: data/App.Definitions.{ContactTag,Contact}.json.
  • Geri alma: önce Contact.json, sonra alt formlar ve ContactTag.json delete_wizard ile silinir; tablolar yalnızca açık onayla dropTables: true ile düşürülür.

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 (App.Administration.Definitions)

Kontaklar — App.Definitions.Contact

Özellik Değer
Wizard wizard/Contact.json
Yol Liste (Wizard)
Menü App.Administration.Definitions › App.Definitions.Contact (sıra 2)
Yetki App.Definitions.Contact + .Create, .Update, .Delete, .Export, .Import, .Note
Açıklama Kontaklar — satış ve satınalmanın ortak kullandığı şirket ya da bireysel kartlar (müşteri ve tedarikçiler): kimlik, adres, vergi no ve iletişim bilgileri.
Geliştirme talebi Satınalma Modülü
Kaynak Adm_T_Contact · 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 App.Definitions.ContactSales (Id → Id), App.Definitions.ContactPurchasing (Id → Id), App.Definitions.ContactFinancial (Id → Id), App.Definitions.ContactAccounting (Id → Id), App.Definitions.ContactNotes (Id → Id), App.Definitions.ContactPerson (Id → ContactId), App.Definitions.ContactBankAccount (Id → ContactId)
Widget'lar App.Widget.Total, App.Widget.Active, App.Widget.Passive
Form varsayılanları Country=Türkiye, IsActive=true
Veri aynası data/App.Definitions.Contact.json
Alan Başlık Editör Zorunlu Formda Kaynak
Logo Logo dxImageUpload ✓
Name Adı dxTextBox ✓ ✓
CompanyType Tür dxSelectBox ✓ ✓ liste: Company, Individual
Email E-Posta dxTextBox ✓
Phone Telefon dxTextBox ✓
Country Ülke dxSelectBox ✓ sorgu: Sas_H_Country
City İl / Eyalet dxSelectBox ✓ sorgu: Sas_H_City (← Country)
District Semt / İlçe dxSelectBox ✓ sorgu: Sas_H_District (← Country,City)
PostalCode Posta Kodu dxTextBox ✓
TaxNumber Vergi Kimlik Numarası dxTextBox ✓
TaxOffice Vergi Dairesi dxTextBox ✓
Address1 Adres dxTextBox ✓
Address2 Adres 2 dxTextBox ✓
SectorId Sektör dxSelectBox ✓ sorgu: Adm_T_Sector
Website Websitesi dxTextBox ✓
CultureName Dil dxSelectBox ✓ sorgu: Sas_H_Language
Tags Etiketler dxTagBox ✓ sorgu: Adm_T_ContactTag
IsActive Aktif dxCheckBox ✓ ✓

Kontak Etiketleri — App.Definitions.ContactTag

Özellik Değer
Wizard wizard/ContactTag.json
Yol Liste (Wizard)
Menü App.Administration.Definitions › App.Definitions.ContactTag (sıra 3)
Yetki App.Definitions.ContactTag + .Create, .Update, .Delete, .Export, .Import, .Note
Açıklama Kontak Etiketleri — kontakları sınıflandırmak için kullanılan etiketler (Vendor, Müşteri, Desk Manufacturers, Ofis Malzemeleri…).
Geliştirme talebi Satınalma Modülü
Kaynak Adm_T_ContactTag · 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 App.Widget.Total, App.Widget.Active, App.Widget.Passive
Veri aynası data/App.Definitions.ContactTag.json
Alan Başlık Editör Zorunlu Formda Kaynak
Name Ad dxTextBox ✓ ✓
Color Renk dxColorBox ✓
IsActive Aktif dxCheckBox ✓ ✓

İlgili Kişiler — App.Definitions.ContactPerson

Özellik Değer
Wizard wizard/ContactPerson.json
Yol Liste (Wizard)
Menü Menüsüz (alt form)
Yetki App.Definitions.ContactPerson + .Create, .Update, .Delete, .Export, .Import, .Note
Açıklama İlgili Kişiler — kontak firmada çalışan kişiler (satış temsilcisi, danışman, analist…).
Geliştirme talebi Satınalma Modülü
Kaynak Adm_T_ContactPerson · 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
ContactId Kontak dxSelectBox sorgu: Adm_T_Contact
Photo Fotoğraf dxImageUpload ✓
Name Ad Soyad dxTextBox ✓ ✓
JobTitle Görev dxTextBox ✓
Email E-Posta dxTextBox ✓
Phone Telefon dxTextBox ✓
Mobile Cep Telefonu dxTextBox ✓
Notes Notlar dxTextArea ✓

Banka Hesapları — App.Definitions.ContactBankAccount

Özellik Değer
Wizard wizard/ContactBankAccount.json
Yol Liste (Wizard)
Menü Menüsüz (alt form)
Yetki App.Definitions.ContactBankAccount + .Create, .Update, .Delete, .Export, .Import, .Note
Açıklama Kontak Banka Hesapları — kontağın ödeme ve tahsilatta kullanılan IBAN'ları.
Geliştirme talebi Satınalma Modülü
Kaynak Adm_T_ContactBankAccount · 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
ContactId Kontak dxSelectBox sorgu: Adm_T_Contact
BankName Banka dxTextBox ✓
Iban IBAN dxTextBox ✓ ✓
AccountHolder Hesap Sahibi dxTextBox ✓
Currency Para Birimi dxSelectBox ✓ sorgu: Sas_H_Currency
IsDefault Varsayılan dxCheckBox ✓

Kontak Muhasebe — App.Definitions.ContactAccounting

Özellik Değer
Wizard wizard/ContactAccounting.json
Yol Liste (Wizard)
Menü Menüsüz (alt form)
Yetki App.Definitions.ContactAccounting + .Create, .Update, .Delete, .Export, .Import, .Note
Açıklama Kontak Muhasebe — kontak kartının muhasebe ayarları.
Geliştirme talebi Satınalma Modülü
Kaynak Adm_T_Contact · 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
ReceivableAccount Alacak Hesabı dxTextBox ✓
PayableAccount Borç Hesabı dxTextBox ✓
InvoiceAutoApprove Faturaları Otomatik Onayla dxSelectBox ✓ liste: Never, AfterThree, Always
PaymentQrType Ödeme QR Kodu dxSelectBox ✓ liste: None, Sepa, Emv

Kontak Mali Bilgi ve Diğer — App.Definitions.ContactFinancial

Özellik Değer
Wizard wizard/ContactFinancial.json
Yol Liste (Wizard)
Menü Menüsüz (alt form)
Yetki App.Definitions.ContactFinancial + .Create, .Update, .Delete, .Export, .Import, .Note
Açıklama Kontak Mali Bilgi ve Diğer — kontak kartının mali durumu ve diğer tanımlayıcıları.
Geliştirme talebi Satınalma Modülü
Kaynak Adm_T_Contact · 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
FinancialStatus Mali Durum dxSelectBox ✓ liste: Good, Watch, Risky
Reference Referans dxTextBox ✓
Barcode Barkod dxTextBox ✓

Kontak Notları — App.Definitions.ContactNotes

Özellik Değer
Wizard wizard/ContactNotes.json
Yol Liste (Wizard)
Menü Menüsüz (alt form)
Yetki App.Definitions.ContactNotes + .Create, .Update, .Delete, .Export, .Import, .Note
Açıklama Kontak Notları — kontak kartında tutulan serbest notlar.
Geliştirme talebi Satınalma Modülü
Kaynak Adm_T_Contact · 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 ✓

Kontak Satınalma — App.Definitions.ContactPurchasing

Özellik Değer
Wizard wizard/ContactPurchasing.json
Yol Liste (Wizard)
Menü Menüsüz (alt form)
Yetki App.Definitions.ContactPurchasing + .Create, .Update, .Delete, .Export, .Import, .Note
Açıklama Kontak Satınalma — kontak kartının satınalma tarafındaki koşulları.
Geliştirme talebi Satınalma Modülü
Kaynak Adm_T_Contact · 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
RfqGrouping Grup Teklif Talebi dxSelectBox ✓ ✓ liste: OnOrder, Weekly, Always
BuyerUserId Alıcı dxSelectBox ✓ sorgu: AbpUsers
PurchasePaymentTermId Ödeme Koşulları (Satınalma) dxSelectBox ✓ sorgu: Prc_T_PaymentTerm
PurchasePaymentMethodId Ödeme Yöntemi (Satınalma) dxSelectBox ✓ sorgu: Prc_T_PaymentMethod
ReceiptReminder Alım Hatırlatıcısı dxSwitch ✓
ReminderDaysBefore Günler Önce Alındı dxNumberBox ✓
SupplierCurrency Tedarikçi Para Birimi dxSelectBox ✓ sorgu: Sas_H_Currency
PurchaseIncotermId Teslimat Koşulu (Satınalma) dxSelectBox ✓ sorgu: Prc_T_Incoterm
PurchaseIncotermLocation Incoterm Konumu (Satınalma) dxTextBox ✓

Kontak Satış — App.Definitions.ContactSales

Özellik Değer
Wizard wizard/ContactSales.json
Yol Liste (Wizard)
Menü Menüsüz (alt form)
Yetki App.Definitions.ContactSales + .Create, .Update, .Delete, .Export, .Import, .Note
Açıklama Kontak Satış — kontak kartının satış tarafındaki ticari koşulları.
Geliştirme talebi Satınalma Modülü
Kaynak Adm_T_Contact · 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
SalesUserId Satış Temsilcisi dxSelectBox ✓ sorgu: AbpUsers
SalesCurrency Fiyat Listesi dxSelectBox ✓ sorgu: Sas_H_Currency
SalesPaymentTermId Ödeme Koşulları (Satış) dxSelectBox ✓ sorgu: Prc_T_PaymentTerm
SalesPaymentMethodId Ödeme Yöntemi (Satış) dxSelectBox ✓ sorgu: Prc_T_PaymentMethod
DeliveryMethodId Teslim Yöntemi dxSelectBox ✓ sorgu: Prc_T_DeliveryMethod
SalesIncotermId Teslimat Koşulu (Satış) dxSelectBox ✓ sorgu: Prc_T_Incoterm
SalesIncotermLocation Incoterm Konumu (Satış) dxTextBox ✓