Kime: ERPGOLD'u zaten kullanan/destekleyen personel (şartname §19). L0–L4 bilgisi varsayılır; burada doğru bilinen yanlışlar, az kullanılan riskli işlevler, SQL ile veri teşhisi ve escalation kuralları toplanır. SQL örnekleri yalnız SELECT, salt okunur bağlantıyla; kolon adları tablo makalelerinden doğrulanmıştır.
Öğrenme hedefi
- Kod tarafında doğrulanmış ileri iş kurallarını ve dokümanla çelişen noktaları (CTR) bilir.
- Müşteri varyasyonlarını (döviz/kuyumcu; müşteri-özel şemalar) ayırır ve genellemez.
- 48 ACTIVE_CRITICAL ekranı ve az kullanılan riskli işlevleri (Devir, BalanceRepair, silme onayı, seri işlemler) tanır.
- Beş hazır SELECT ile bakiye/stok/geçmiş teşhisi yapar.
- Sistem ayarlarını, entegrasyon arıza biçimlerini ve escalation eşiklerini uygular.
Teorik anlatım
İleri iş kuralları (kod tarafı esas)
| Konu | Kural | Kaynak |
|---|---|---|
| Defter üretimi | "Peşin ise stok, cari ise bakiye" yanlış; iki eksen bağımsız; V2 cari %1,4 / KUYUMCU %60,3 stok üretir | BR-DEFTER-URETIMI, CTR-038 |
| RESMİ/MAHSUP | tip 11/12 operasyonel stok/bakiye kaydı üretmez; A-Z 1.8 tablosu yanlış | CTR-003/004, BR-TIP-004 |
| NAKİT bakiye | BakiyeId daima 0; yalnız karşılık birimi satırı | CTR-025, BR-BAKIYE-002 |
| Düzeltme | Tarih/FisNo/Kasa/Hesap değişmez; kur yeniden çekilmez; virman/parite/e-belgeli düzeltilmez | BR-DUZELTME-008, BR-KUR-003, CTR-021 |
| Gün sınırı | ekran >= SilGun uyarır, DeleteAt > SilGun talebe çevirir (1 günlük tutarsızlık) |
CTR-023, BR-IPTAL-003 |
| Limit | IslemKodu 1/2/3 ÇIKIŞ, tip≠PEŞİN, Sube.IsLimitControl açık → FN.GetCariLimit |
BR-BAKIYE-016, PB-047, CTR-014 |
| Yetki | istemci tarafında; DB'de grup kontrolü yok; ÇEŞNİ için Takoz bayrağı okunur | SEC-AUTHZ |
| Vadeli −2 | VADELİ ARBİTRAJ seçimi, devir ayracı değil | CTR-028 |
| Parite tip | NAKİT'te "EMANET" etiketi PARİTE yazabilir | CTR-027, H-058 |
| Takoz | girişte çeşni bakiyeye eklenir; raporsuz XRF/0,600; raporsuz giriş güvenlik kontrollerinden muaf | BR-BAKIYE-010, BR-BAKIYE-009, BR-DUZELTME-003 |
Müşteri varyasyonları
Döviz kurulumu peşin çalışır (%83), kuyumcu cari (%55); kuyumcuda PEŞİN ve RESMİ tip hiç kullanılmamış (INST-ERPGOLDV2, INST-KUYUMCU). Müşteri-özel şemalar (MüşteriŞemasıD; MüşteriŞemasıA/MüşteriŞemasıB/MüşteriŞemasıC) ve 5. tetikleyici NilKuyumIslemFiyatlari çekirdek davranış değildir (TD-41/43); kişi adı taşıyan rapor başlıkları (RPT-79, RPT-80, RPT-81) MüşteriŞemasıD şemasına bağlıdır. Kural: bir kurulumda görülen davranış müşteriye "ürün özelliği" diye anlatılmaz (VARIANT_MATRIX).
Kritik ekranlar (_lifecycle.json ACTIVE_CRITICAL, 48)
Giriş/çerçeve: FrmLoginForm, FrmMainForm, iScreen, iFormBase, iFTransaction. İşlem: iFMaden, iFHurda, iFNakit, iFDoviz, iFCevir, iFVadeli, iFVirman, iFHizmet, iFTas, iFPirlanta, iFModel, iFGenel, iFEmtia, iFCesni, iFBorc, iFTakozGiris, ifTakozCikis, iFSeriIslem, FrmSeriIslem, GiseEkrani, FrmTakozGiris/FrmTakozCikisi. Tanım: FrmSirketEkle, FrmSubeEkle, FrmKasaEkle, FrmBirimEkle, FrmMadenEkle, FrmNakitEkle, FrmHizmetEkle, FrmCariHesapEkle, FrmCariKartEkle, FrmKullaniciEkle, FrmAddUserGroup, FrmGlobalSettings, FrmKurGirisEkrani. Operasyon: FrmTransfer, FrmIptalOnayListesi, Mutabakat, MutabakatOnay, FrmFaturaEkle, FrmPozisyon, FrmReportList, FrmDevir. Bu ekranlarda yapılan değişiklik/yanlış anlatım tüm müşterileri etkiler.
Az kullanılan ama riskli işlevler
- Devir (SCR-FRMDEVIR, SP-SISTEM.DEVIR): TRUNCATE + INSERT, transaction yok (TD-29); yalnız 5 tablo boşaltılır (TD-42); Shift+D ile açılır; ön koşullar WF-YIL-SONU-DEVIR. Senaryo: SCN-DEVIR.
- BalanceRepair / StokRepair (SP-REPAIR.BALANCEREPAIR, TD-30): 2017'de dondurulmuş, tetikleyiciden 11 maddede sapmış; devir/transfer satırlarını (~80.033) yok eder, tip 11/12'ye bakiye yazar. Hiçbir koşulda çalıştırılmaz.
- Silme talebi/onayı (WF-SILME-TALEBI-ONAY): onaylanan talep
Sistem.SilOnay'dan fiziksel silinir (BR-IPTAL-011). - Seri işlemler (FrmSeriIslem, WF-SERI-ISLEM, FrmSeriTakozCikis): barkod okutunca anında kayıt (H-074); "İşlemin Karşılığı Bulunamadı" (PB-064).
- Tetikleyiciyi kapatmak (
DISABLE TRIGGER): yalnız devir prosedürü içinde; demo kopyasında kapalı kalması (TD-32) bakiye/stok üretmeyen işlemlere yol açar (PB-029). - Aifa Developer Studio serbest SQL (TD-10): üretimde yazma amaçlı kullanılmaz.
Raporlama
Rapor yazım kuralları DOC-REPORT-GUIDE; metrikler METRIC_DICTIONARY; "Divide by zero" (PB-051), zaman aşımı (PB-052), ALACAK/BORÇ süzgeci boş (PB-054). Has raporunda IslemKodu IN (0,1,2) süzgeci; adetli üründe milyem adet başı has (Ek C.1). Çeşni (14) kod tablosunda olmadığından INNER JOIN'lu raporlarda düşer (TD-44).
Veri teşhisi — SELECT örnekleri (salt okunur)
Kolonlar: TBL-CARI.ISLEMLER, TBL-CARI.BAKIYEISLEM, TBL-STOK.STOKHARAKETLERI, TBL-CARI.HISTORY.
-- 1) Bir işlemin ürettiği defter satırları (bakiye "tutmuyor" çağrısı, PB-028 adım 8+)
SELECT I.Id, I.FisNo, I.Tarih, I.IslemKodu, I.IslemTuru, I.IslemTipi, I.BakiyeId,
I.StokId, I.Kodu, I.Miktar, I.AuMilyem, I.BirimId, I.Birim, I.Tutar, I.IsDeleted
FROM Cari.Islemler I WHERE I.Id = @IslemId;
SELECT B.BirimId, B.Bakiye, B.Tarih FROM Cari.BakiyeIslem B WHERE B.IslemId = @IslemId;
SELECT S.Bolum, S.StokTipi, S.StokId, S.Adet, S.Miktar, S.Has, S.KasaId
FROM Stok.StokHaraketleri S WHERE S.IslemId = @IslemId;
-- 2) Hesabın birim bazında bakiyesi (artı = müşteri borçlu, eksi = alacaklı)
SELECT B.BirimId, SUM(B.Bakiye) AS Bakiye
FROM Cari.BakiyeIslem B WHERE B.HesapId = @HesapId GROUP BY B.BirimId;
-- 3) İşlem geçmişi izi (düzeltmede yeni hâl, iptalde eski hâl)
SELECT H.LogType, H.LogDate, H.IslemTuru, H.IslemTipi, H.Miktar, H.Tutar, H.IsDeleted
FROM Cari.History H WHERE H.TransactionId = @IslemId ORDER BY H.LogDate;
-- 4) Tetikleyici kapalı mı (PB-029)
SELECT name, is_disabled FROM sys.triggers WHERE parent_id = OBJECT_ID('Cari.Islemler');
-- 5) Devir tutarsızlığı: açılış satırları ve tarihi boş defter satırları (PB-034 adım 3)
SELECT COUNT(*) AS DevirSatiri FROM Cari.BakiyeIslem WHERE IslemId = -1;
SELECT COUNT(*) AS TarihsizBakiye FROM Cari.BakiyeIslem WHERE Tarih IS NULL;
SELECT COUNT(*) AS TarihsizStok FROM Stok.StokHaraketleri WHERE Tarih IS NULL;
-- 6) Çift bacak kontrolü (parite/virman/karşı hesap): aynı RefNo veya VaryantId bağı
SELECT Id, HesapId, IslemKodu, IslemTuru, Kodu, Miktar, Tutar, VaryantId, IsDeleted
FROM Cari.Islemler WHERE RefNo = @RefNo OR VaryantId = @IslemId OR Id = @IslemId;
Her sorguda IsDeleted süzgecine dikkat; hesaplanan sütunlara (Yon, SMiktar, SHas, Kar, IsArbitiraj) yazılmaz, yalnız okunur. Bulunan fark elle düzeltilmez; Cari.Islemler üzerinden DÜZELT/İPTAL ile yeniden tetiklenir.
Sistem ayarları (destek için ilk 10)
CONFIGURATION: DuzeltmeGun/SilGun, ModifyPermission/DeletePermission (Serbest / PIN / Eski tarihe yapılamaz), MutabakatPermission, DuzeltmeAciklama, PesinKurTipi (CTR-007), IslemKurFarki (%, uyarı H-041), BSMV/BsmvTipi (CTR-010), Provizyon, DFIslemTipi (resmi kasada varsayılan tip), şube IsResmi/RsAktar/IsLimitControl/e-belge alanları, kasa ResmiKasa, kullanıcı Fis/Etiket/Fatura yazıcıları, OtoFisBas, seri alanları. Ayar değişikliği sonrası kullanıcı yeniden giriş yapmalı (grup izinleri girişte yüklenir, SEC-AUTHZ).
Entegrasyonlar — tipik arıza
11_Integrations/INDEX: e-fatura entegratör reddi/ETTN kilidi (PB-020); istatistik kodu boş (PB-021); BTrans aylık (PB-022); EDS kur akışı durdu (PB-061); lisans (PB-007, PB-008); yazıcı/etiket/terazi (PB-023–PB-027); RDP parola süresi (PB-014); provizyon döngüsü (INT-SUBELER-ARASI-PROVIZYON-RSAKTAR); MASAK yasaklı (PB-062).
Bilinen kusurlar (personelin "normal" sanmaması gerekenler)
TxtTarih → Vade (TD-40, H-081); satışta alış kuru (TD-21, H-045); GetMadenMaliyeti TOP 50 → maliyet sıçraması (TD-23, H-122); fiş no yarışı (TD-02, H-102); cursor sızıntısı (TD-03, H-005); boş catch — hatalar yutulur (TD-12; PIRLANTA/EMTİA Validate sonucu kontrol edilmez); negatif stok engellenmez (H-123); negatif/aşırı milyem kontrolü yok (GAP-SEC-MILYEM-01); resmi stok listesinin kaynağı belirsiz (CTR-005).
Escalation
Yazılımcıya devir eşiği: playbook adımları tükenmiş ve (a) tetikleyici/prosedür davranışı şüpheli, (b) veri tutarsızlığı SELECT ile kanıtlanmış, (c) müşteri-özel şema/entegrasyon (MüşteriŞemasıD, Nil*, MT4, NetEkstre) söz konusu. Paket: CUST-id, kurulum profili (döviz/kuyumcu), sürüm etiketi, hesap/tarih/fiş/IslemId, yukarıdaki 1–3 nolu sorgu çıktıları, İşlem Geçmişi görüntüsü, o gün değişen ayar. Üretim DB'sinde yazma yalnız yazılımcı ve yedek sonrası.
ERPGOLD bağlantısı
Ekran yaşam döngüsü sınıfları 05_Screens/_lifecycle.json'dan; UNUSED_CANDIDATE ekranlar (ör. FrmFaturaBas, FrmIptalTalepFormu) müşteriye anlatılmaz. Ekran-alan-kolon eşlemeleri her SCR makalesinde; kitapçık §8.5 tutarsızlık listesi.
Örnek
Vaka (anonim, PB-034 deseni): devir sonrası bir hesabın DEVİR satırı arşivdeki son bakiyeden farklı. Sorgu 5 ile tarihsiz satır sayısı bulundu; fark DEVİR hesabından elle giriş/çıkışla kapatıldı; BalanceRepair önerisi reddedildi. Vaka (PB-032 deseni): "Karşı Hesaba İşlem Yapılamadı." sonrası tek satır kalan virman; sorgu 6 ile RefNo eşleşmesi doğrulandı, tek satır iptal + yeniden giriş. Vaka (H-006/PB-029): demo kopyasından türetilen kurulumda tetikleyici kapalı; sorgu 4 ile tespit, ENABLE + DÜZELT-kaydet ile yeniden işletme.
Uygulamalı senaryo
- SCN-DUZELTME kaydında sorgu 1 ve 3'ü çalıştırıp "Düzeltme" izinin yeni değer taşıdığını gösterin.
- SCN-PARITE çiftinde sorgu 6 ile VaryantId bağını doğrulayın; tek satırı iptal edip PB-048 akışını uygulayın.
- SCN-DEVIR sonrası sorgu 5; farkı DEVİR hesabından kapatma planı yazın (BalanceRepair'siz).
- SCN-RESMI-ISLEM satırı için sorgu 1: sıfır defter satırını gösterip CTR-003'ü müşteriye açık dille (tablo adı vermeden) anlatın.
Quiz
- (ÇS) Cari işlemlerin stok üretme oranı kuyumcu kurulumunda? a) %1,4 b) %60,3 c) %0 d) %100
- (KC) BalanceRepair çalıştırılırsa hangi iki veri grubu kaybolur?
- (ÇS) Devir prosedüründe kaç tablo boşaltılır? a) 2 b) 5 c) 12 d) tümü
- (KC)
Cari.BakiyeIslem.Bakiyetoplamı −120.000 TL: müşteri borçlu mu alacaklı mı? - (ÇS) NAKİT NORMAL girişte EUR bakiye satırı beklemek neden yanlış? a) kur yok b) BakiyeId daima 0 c) EUR birim değil d) tetikleyici kapalı
- (KC) Tetikleyicinin kapalı olduğunu hangi sorguyla anlarsınız?
- (ÇS) Hangi işlem grubu düzeltilebilir? a) virman b) parite (X) c) ETTN dolu satış d) NORMAL maden çıkışı
- (KC) RPT-79/80/81 raporları neden çekirdek özellik değildir?
- (ÇS) Ayar değişikliği sonrası kullanıcı için gereken? a) Ctrl+F5 b) yeniden giriş c) devir d) lisans
- (KC) Escalation paketinde hangi sorgu çıktıları bulunur?
Cevap anahtarı
| # | Cevap | Kaynak |
|---|---|---|
| 1 | b | BR-DEFTER-URETIMI |
| 2 | devir açılış satırları (IslemId −1) ve transfer stok satırları (Bolum 2) | TD-30 |
| 3 | b | TD-42, TD-29 |
| 4 | alacaklı (biz borçluyuz) | TBL-CARI.BAKIYEISLEM |
| 5 | b | CTR-025 |
| 6 | sys.triggers … is_disabled (sorgu 4) |
PB-029 |
| 7 | d | BR-DUZELTME-006, H-080, BR-DUZELTME-010 |
| 8 | MüşteriŞemasıD müşteri-özel şeması | VARIANT_MATRIX, TD-43 |
| 9 | b | SEC-AUTHZ |
| 10 | sorgu 1–3 (işlem, defter satırları, geçmiş) | bu rehber "Escalation"; PB-028 |
Minimum başarı kriteri
- Quiz: 10 sorudan en az 8 doğru; 2 ve 6 zorunlu doğru.
- Uygulamalı senaryo: 4 adımın tamamı; sorgular salt okunur bağlantıda çalıştırılmış, çıktılar senaryo beklentisiyle eşleşmiş; 4. adımda müşteriye açık anlatımda tablo/tetikleyici adı geçmiyor (eğitmen onayı).
