Tip: STORED PROCEDURE · Şema: Repair · Modül: MOD-DIGER · Temizlik sınıfı: UNUSED_HIGH_CONFIDENCE (kategori E, güven 95) · Kapsam: ERPGOLD_CORE / ALL
Kullanım haritası (13.09.2026)
| Kategori | F — MANUAL REVIEW · F-POSSIBLE_JOB_OR_MANUAL_TOOL |
| Güven | 50 |
| Gerekçe | Referanssız yordam: SQL Agent job / bakım aracı / kurulum betiği olabilir; msdb kontrol edilemedi (Express: Agent yok; üretim Standard). ERPGOLD kodunda, DB içi rapor/tasarım SQL'inde (V2 demo), dinamik SQL kalıplarında, tetikleyici/FK/computed/cross-db bağlarında ve gerekli nesnelerin bağımlılık grafında referans yok |
Bkz. Database Usage Map · Manual Review. Hiçbir DB değişikliği yapılmadı; SAFETY > CLEANUP.
Temizlik kanıtı
| Kontrol | Sonuç |
|---|---|
| app | NO |
| report | NO |
| config | NO |
| dynamic | NO |
| db_in | NO |
| db_out | YES |
| trigger | NO |
| fk | NO |
| computed | NO |
| crossdb | NO |
| runtime | UNKNOWN |
| external | NO |
Gerekçe: Hiçbir kaynakta referans bulunamadı
KB-v1 gövdesi (2026-09-10 · kısmi kod kapsamı — kaynağı kadar güvenilir)
Tür: PROCEDURE (P) · Modül: MOD-SISTEM · Uzunluk: 329 satır
Özet
⚠ ÇALIŞTIRILMAMASI GEREKEN prosedür. Türetilmiş defterleri (Cari.BakiyeIslem, Stok.StokHaraketleri) TRUNCATE edip yeniden kurmaya çalışır; 2017'de dondurulmuş ve trigger'dan 11 maddede sapmıştır. Kalıcı veri kaybı yapar.
Bağımlılıklar (bu nesne → hedef)
| İlişki | Hedef | Tip |
|---|---|---|
| WRITES | Cari.BakiyeIslem | TABLE |
| READS | Cari.Islemler | TABLE |
| CALLS | FN.Bol | FUNCTION |
| READS | Sistem.Birimler | TABLE |
| READS | Sistem.Settings | TABLE |
| WRITES | Stok.StokHaraketleri | TABLE |
İlgili iş kuralları
- Türetilmiş defterlerin tamamını TRUNCATE edip yeniden üretir; devir açılış bakiyeleri (34.600), devir stok (33) ve transfer stok (45.400) satırları yok olur — toplam ~80.033 kalıcı kayıp (kitapcik 2.10; az/08-teknik.md 8.2)
- Fatura işlemlerine olmaması gereken bakiye yazar (24.376) (kitapcik 2.10)
- Üretimde çalıştırılmaz (az/08-teknik.md 8.6.7)
SQL tanımı (AS-IMPLEMENTED, örnek DB)
CREATE Proc [Repair].[BalanceRepair]
as
Declare @IslemId int
Declare @Tarih Date
Declare @SubeId int
Declare @KasaId int
Declare @RefNo Nvarchar(36)
Declare @IslemKodu int
Declare @IslemTuru int
Declare @IslemTipi int
Declare @HesapType int
Declare @HesapId int
Declare @BakiyeId int
Declare @AyarEviId int
Declare @RaporNo Nvarchar(50)
Declare @StokId int
Declare @Adet int
Declare @Miktar Decimal(18,2)
Declare @AuMilyem Decimal(18,5)
Declare @Has as Decimal(18,5)
Declare @AgMilyem Decimal(18,5)
Declare @PltMilyem Decimal(18,5)
Declare @PldMilyem decimal(18,5)
Declare @HasIsc Decimal(18,5)
Declare @HasIscBirimId int
Declare @GumIsc Decimal(18,5)
Declare @GumIscBirimId int
Declare @IscilikDurumu int
Declare @GumusDurumu int
Declare @PlatinDurumu int
Declare @PalladiumDurumu int
Declare @IsRapor bit
Declare @IsExtra bit
Declare @HasKur Decimal(18,5)
Declare @GumKur Decimal(18,5)
Declare @PltKur Decimal(18,5)
Declare @PldKur Decimal(18,5)
Declare @IscKur Decimal(18,5)
Declare @HasIscBirimKur Decimal(18,5)
Declare @GumIscBirimKur Decimal(18,5)
Declare @Tutar Decimal(18,5)
Declare @Birim Nvarchar(Max)
Declare @BirimId int
Declare @StokIsc Decimal(18,2)
Declare @StokIscKur Decimal(18,5)
Declare @StokIscBirimId int
Declare @IsDeleted bit
Declare @InsertDate date
Declare @IsError int =0
Truncate Table Cari.BakiyeIslem
Truncate Table Stok.StokHaraketleri
--<Takoz Stoklarındaki Milyemleri Kullanarak hesaplamak için>
--DECLARE IslemCursor CURSOR FOR Select I.Id,I.KasaId,I.RefNo,I.HesapType,I.IslemKodu,I.IslemTuru,I.IslemTipi,I.HesapId,I.BakiyeId,I.AyarEviId,I.RaporNo,I.StokId,I.Adet,I.Miktar,I.AuMilyem,I.Miktar * Case When I.AuMilyem=0 Then 1 else I.AuMilyem end as Has,T.AgMilyem,T.PltMilyem,T.PldMilyem,I.HasIsc,I.HasIscBirimId,I.GumIsc,I.GumIscBirimId,I.IscilikDurumu,I.GumusDurumu,I.PlatinDurumu,I.PalladiumDurumu,T.IsRapor,T.IsExtra,I.Tutar,I.Birim,I.BirimId,I.IsDeleted,I.HasKur,I.GumKur,I.PltKur,I.PldKur,I.IscilikBirimKur,I.HasIscBirimKur,I.GumIscBirimKur,I.InsertDate From Inserted I Left Join Stok.Takoz T on I.IslemKodu=0 And T.Id=I.StokId
--***********************************************************
DECLARE IslemCursor CURSOR FOR Select Id,Tarih,SubeId,KasaId,RefNo,HesapType,IslemKodu,IslemTuru,IslemTipi,HesapId,BakiyeId,AyarEviId,RaporNo,StokId,Adet,Miktar,AuMilyem,Miktar * Case When AuMilyem=0 Then 1 else AuMilyem end as Has,AgMilyem,PltMilyem,PldMilyem,HasIsc,HasIscBirimId,GumIsc,GumIscBirimId,IscilikDurumu,GumusDurumu,PlatinDurumu,PalladiumDurumu,IsRapor,IsExtra,Tutar,Birim,BirimId,IsDeleted,HasKur,GumKur,PltKur,PldKur,IscilikBirimKur,HasIscBirimKur,GumIscBirimKur,Iscilik,IscilikBirimId,IscilikBirimKur ,InsertDate From Cari.Islemler Where IsDeleted='False'
OPEN IslemCursor
FETCH NEXT FROM IslemCursor INTO @IslemId,@Tarih,@SubeId,@KasaId,@RefNo,@HesapType,@IslemKodu,@IslemTuru,@IslemTipi,@HesapId,@BakiyeId,@AyarEviId,@RaporNo,@StokId,@Adet,@Miktar,@AuMilyem,@Has,@AgMilyem,@PltMilyem,@PldMilyem,@HasIsc,@HasIscBirimId,@GumIsc,@GumIscBirimId,@IscilikDurumu,@GumusDurumu,@PlatinDurumu,@PalladiumDurumu,@IsRapor,@IsExtra,@Tutar,@Birim,@BirimId,@IsDeleted,@HasKur,@GumKur,@PltKur,@PldKur,@IscKur ,@HasIscBirimKur,@GumIscBirimKur,@StokIsc,@StokIscBirimId,@StokIscKur ,@InsertDate
WHILE @@FETCH_STATUS =0
BEGIN
if @IsDeleted='False' And @IsError=0
BEGIN
/*****************************STOK HARAKET DOSYASINA KAYIT ET************************************************************************/
if @IslemKodu=1 or @IslemKodu=2 --- MADEN İŞLEMİ İSE/
BEGIN
Insert Into Stok.StokHaraketleri(IslemId,IslemTuru,Tarih,SubeId,KasaId,StokTipi,StokId,Adet,Miktar,Milyem,Has,Maliyet)
Values(@IslemId,@IslemTuru,@Tarih,@SubeId,@KasaId,1,@StokId,Case When @IslemTuru=0 Then @Adet When @IslemTuru=1 Then 0-@Adet End,Case When @IslemTuru=0 Then @Miktar When @IslemTuru=1 Then 0-@Miktar End,@AuMilyem,Case When @IslemTuru=0 Then (@AuMilyem * @Miktar) When @IslemTuru=1 Then 0-(@AuMilyem * @Miktar) End ,Case When @IslemTuru=0 Then Convert(Decimal(18,2), @StokIsc * @StokIscKur ) Else 0 End)
END
if @IslemKodu=0 ---TAKOZ ISLEMI ISE
BEGIN
Insert Into Stok.StokHaraketleri(IslemId,IslemTuru,Tarih,SubeId,KasaId,StokTipi,StokId,Adet,Miktar,Milyem,Has,Maliyet)
Values(@IslemId,@IslemTuru,@Tarih,@SubeId,@KasaId,3,@StokId,Case When @IslemTuru=0 Then 1 When @IslemTuru=1 Then -1 End,0,0,0,0)
END
if @IslemKodu=3 ---NAKİT İŞLEMİ İSE
BEGIN
Insert Into Stok.StokHaraketleri(IslemId,IslemTuru,Tarih,SubeId,KasaId,StokTipi,StokId,Adet,Miktar,Milyem,Has,Maliyet)
Values(@IslemId,@IslemTuru,@Tarih,@SubeId,@KasaId,2,@StokId,0,Case When @IslemTuru=0 Then @Miktar When @IslemTuru=1 Then 0-@Miktar End,0,0,0)
END
if @IslemTipi=1 ---PEŞİN İŞLEM İSE
BEGIN
Insert Into Stok.StokHaraketleri(IslemId,IslemTuru,Tarih,SubeId,KasaId,StokTipi,StokId,Adet,Miktar,Milyem,Has,Maliyet)
Values(@IslemId,@IslemTuru,@Tarih,@SubeId,@KasaId,2,@BirimId,0,Case When @IslemTuru=0 Then 0-@Tutar When @IslemTuru=1 Then @Tutar End,0,0,0)
END
---////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
--************************************************************************************************************************************
--************************************************************************************************************************************
--*****************************EGER ISLEM MADEN ISLEMI ISE (MADEN/HURDA)**************************************************************
--************************************************************************************************************************************
--************************************************************************************************************************************
if @IslemKodu=1 or @IslemKodu=2
BEGIN
if @IslemTuru=0 OR @IslemTuru =2 or @IslemTuru=4 ---ISLEM EGER GIRIS/ALIS/ALACAK ISE BAKIYE ALACAKLI OLUR
BEGIN
Set @Has=0-abs(@Has)
Set @Tutar=0-abs(@Tutar)
END
if @IslemTuru=1 OR @IslemTuru=3 or @IslemTuru=5 ---ISLEM EGER CIKIS/SATIS/BORC ISE BAKIYE BORCLU OLUR
BEGIN
Set @Has=abs(@Has)
Set @Tutar=abs(@Tutar)
END
if @BakiyeId>0 and @Miktar<>0 ---EGER ISLEM BEDELLI VEYA PESIN DEGIL ISE VE ISLEM MADEN VEYA HURDA ISE BAKIYEID <>0 DEGIL ISE
BEGIN
Insert Into Cari.BakiyeIslem(Tarih,HesapType,HesapId,KasaId,IslemId,BirimId,Bakiye)
Values(@InsertDate,@HesapType,@HesapId,@KasaId,@IslemId,@BakiyeId,@Has)
END
if @IslemTipi<>1 and @Tutar<>0 ---EGER ISLEM PESIN DEGIL ISE TUTAR BAKIYESINI YAZ
BEGIN
Insert Into Cari.BakiyeIslem(Tarih,HesapType,HesapId,KasaId,IslemId,BirimId,Bakiye)
Values(@InsertDate,@HesapType,@HesapId,@KasaId,@IslemId,@BirimId,@Tutar)
END
END
---////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
---////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
---////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
---////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
---////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
ELSE if @IslemKodu=4 or @IslemKodu=6
--************************************************************************************************************************************
--************************************************************************************************************************************
--***************************** EGER ISLEM CEVIR VEYA VADELI ISLEMI ISE **************************************************************
--************************************************************************************************************************************
--************************************************************************************************************************************
BEGIN
if @IslemTuru=0 OR @IslemTuru =2 or @IslemTuru=4 ---ISLEM EGER GIRIS/ALIS/ALACAK ISE BAKIYE ALACAKLI OLUR
BEGIN
Set @Has=abs(@Has)
Set @Tutar=0-abs(@Tutar)
END
if @IslemTuru=1 OR @IslemTuru=3 or @IslemTuru=5 ---ISLEM EGER CIKIS/SATIS/BORC ISE BAKIYE BORCLU OLUR
BEGIN
Set @Has=0-abs(@Has)
Set @Tutar=abs(@Tutar)
END
if @BakiyeId>0 and @Miktar<>0 ---EGER ISLEM BEDELLI VEYA PESIN DEGIL ISE VE ISLEM MADEN VEYA HURDA ISE BAKIYEID <>0 DEGIL ISE
BEGIN
Insert Into Cari.BakiyeIslem(Tarih,HesapType,HesapId,KasaId,IslemId,BirimId,Bakiye)
Values(@InsertDate,@HesapType,@HesapId,@KasaId,@IslemId,@BakiyeId,@Has)
END
if @IslemTipi<>1 and @Tutar<>0 ---EGER ISLEM PESIN DEGIL ISE TUTAR BAKIYESINI YAZ
BEGIN
Insert Into Cari.BakiyeIslem(Tarih,HesapType,HesapId,KasaId,IslemId,BirimId,Bakiye)
Values(@InsertDate,@HesapType,@HesapId,@KasaId,@IslemId,@BirimId,@Tutar)
END
END
---////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
---////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
---////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
---////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
---////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
ELSE IF @IslemKodu<>0 and @IslemKodu<>1 AND @IslemKodu<>2
--************************************************************************************************************************************
--************************************************************************************************************************************
--****************************************** EGER ISLEM STOK ISLEMI ISE **************************************************************
--************************************************************************************************************************************
--************************************************************************************************************************************
BEGIN
if @IslemTuru=0 OR @IslemTuru =2 or @IslemTuru=4 ---ISLEM EGER GIRIS/ALIS/ALACAK ISE BAKIYE ALACAKLI OLUR
BEGIN
Set @Tutar=0-abs(@Tutar)
END
if @IslemTuru=1 OR @IslemTuru=3 or @IslemTuru=5 ---ISLEM EGER CIKIS/SATIS/BORC ISE BAKIYE BORCLU OLUR
BEGIN
Set @Tutar=abs(@Tutar)
END
if @IslemTipi<>1 and @Tutar<>0 ---EGER ISLEM PESIN DEGIL ISE TUTAR BAKIYESINI YAZ
BEGIN
Insert Into Cari.BakiyeIslem(Tarih,HesapType,HesapId,KasaId,IslemId,BirimId,Bakiye)
Values(@InsertDate,@HesapType,@HesapId,@KasaId,@IslemId,@BirimId,@Tutar)
END
END
---////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
---////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
---////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
---////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
---////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
ELSE IF @IslemKodu=0
BEGIN
--************************************************************************************************************************************
--************************************************************************************************************************************
--****************************************** EGER ISLEM TAKOZ ISLEMI ISE **************************************************************
--************************************************************************************************************************************
--************************************************************************************************************************************
Declare @HasBirimId int = (Select Id From Sistem.Birimler Where IsDeleted='False' And Kodu = (Select HasSymbol From Sistem.Settings))
Declare @GumBirimId int = (Select Id From Sistem.Birimler Where IsDeleted='False' And Kodu = (Select GumSymbol From Sistem.Settings))
Declare @PltBirimId int = (Select Id From Sistem.Birimler Where IsDeleted='False' And Kodu = (Select PltSymbol From Sistem.Settings))
Declare @PldBirimId int = (Select Id From Sistem.Birimler Where IsDeleted='False' And Kodu = (Select PldSymbol From Sistem.Settings))
-- [MADEN DURUM] [ISCLIK DURUM]
-- (0) Madeni Ver (0) Altından Düş
-- (1) Altına Cevir (1) Para İle
-- (2) Işçilikten Düş
-- (3) Madeni Bırak
Declare @HasBakiye Decimal(18,5) = (@Miktar * @AuMilyem)
Declare @GumBakiye Decimal(18,5) = 0
Declare @PltBakiye Decimal(18,5) = 0
Declare @PldBakiye Decimal(18,5) = 0
Declare @IscilikBakiye Decimal(18,5) =0
Declare @HasIscilik Decimal(18,5) = (@HasIsc * (@Miktar * @AuMilyem))
Declare @GumIscilik Decimal(18,5) = (@GumIsc * (@Miktar * @AgMilyem))
Declare @Iscilik Decimal(18,2) = Fn.Bol((@HasIscilik * @HasIscBirimKur),@IscKur) + Fn.Bol((@GumIscilik * @GumIscBirimKur) ,@IscKur)
if @GumusDurumu=0 --Madeni Ver
BEGIN
Set @GumBakiye += @Miktar * @AgMilyem
END
ELSE IF @GumusDurumu=1 --Altına Çevir
BEGIN
Set @HasBakiye += Fn.Bol(((@Miktar * @AgMilyem) * @GumKur),@HasKur)
END
ELSE IF @GumusDurumu=2 --İşçiliktenDüş
BEGIN
Set @IscilikBakiye +=Fn.Bol(((@Miktar * @AgMilyem) * @GumKur),@IscKur)
END
if @PlatinDurumu=0 --Madeni Ver
BEGIN
Set @PltBakiye += @Miktar * @PltMilyem
END
ELSE IF @PlatinDurumu=1 --Altına Çevir
BEGIN
Set @HasBakiye += Fn.Bol(((@Miktar * @PltMilyem) * @PltKur),@HasKur)
END
ELSE IF @PlatinDurumu=2 --İşçiliktenDüş
BEGIN
Set @IscilikBakiye +=Fn.Bol(((@Miktar * @PltMilyem) * @PltKur),@IscKur)
END
if @PalladiumDurumu=0 --Madeni Ver
BEGIN
Set @PldBakiye += @Miktar * @PldMilyem
END
ELSE IF @PalladiumDurumu=1 --Altına Çevir
BEGIN
Set @HasBakiye += Fn.Bol(((@Miktar * @PldMilyem) * @PldKur),@HasKur)
END
ELSE IF @PalladiumDurumu=2 --İşçiliktenDüş
BEGIN
Set @IscilikBakiye +=Fn.Bol(((@Miktar * @PldMilyem) * @PldKur),@IscKur)
END
--if @BirimId=@HasBirimId
-- BEGIN
-- Set @HasBakiye +=@IscilikBakiye
-- set @IscilikBakiye=0
-- END
if @IsRapor=1
BEGIN
if IsNull(@Iscilik,0)<>0 ----İşçiliği Yaz
BEGIN
Insert Into Cari.BakiyeIslem(Tarih,HesapType,HesapId,KasaId,IslemId,BirimId,Bakiye)
Values(@InsertDate,@HesapType,@HesapId,@KasaId,@IslemId,@BirimId,Case When @IslemTuru=0 Then @Iscilik Else 0-@Iscilik End)
END
if IsNull(@HasBakiye,0)<>0
BEGIN
Insert Into Cari.BakiyeIslem(Tarih,HesapType,HesapId,KasaId,IslemId,BirimId,Bakiye)
Values(@InsertDate,@HesapType,@HesapId,@KasaId,@IslemId,@HasBirimId,Case When @IslemTuru=0 Then 0-@HasBakiye Else @HasBakiye End)
END
if IsNull(@GumBakiye,0)<>0
BEGIN
Insert Into Cari.BakiyeIslem(Tarih,HesapType,HesapId,KasaId,IslemId,BirimId,Bakiye)
Values(@InsertDate,@HesapType,@HesapId,@KasaId,@IslemId,@GumBirimId, Case When @IslemTuru=0 Then 0-@GumBakiye Else @GumBakiye End)
END
if IsNull(@PltBakiye,0)<>0
BEGIN
Insert Into Cari.BakiyeIslem(Tarih,HesapType,HesapId,KasaId,IslemId,BirimId,Bakiye)
Values(@InsertDate,@HesapType,@HesapId,@KasaId,@IslemId,@PltBirimId,Case When @IslemTuru=0 Then 0-@PltBakiye Else @PltBakiye End)
END
if IsNull(@PldBakiye,0)<>0
BEGIN
Insert Into Cari.BakiyeIslem(Tarih,HesapType,HesapId,KasaId,IslemId,BirimId,Bakiye)
Values(@InsertDate,@HesapType,@HesapId,@KasaId,@IslemId,@PldBirimId,Case When @IslemTuru=0 Then 0-@PldBakiye Else @PldBakiye End)
END
if IsNull(@IscilikBakiye,0)<>0
BEGIN
Insert Into Cari.BakiyeIslem(Tarih,HesapType,HesapId,KasaId,IslemId,BirimId,Bakiye)
Values(@InsertDate,@HesapType,@HesapId,@KasaId,@IslemId,@BirimId,Case When @IslemTuru=0 Then 0-@IscilikBakiye Else @IscilikBakiye End)
END
END
ELSE
BEGIN
Insert Into Cari.BakiyeIslem(Tarih,HesapType,HesapId,KasaId,IslemId,BirimId,Bakiye)
Values(@InsertDate,@HesapType,@HesapId,@KasaId,@IslemId,-1,Case When @IslemTuru=0 Then 0-@Miktar Else @Miktar End)
END
END
END
FETCH NEXT FROM IslemCursor INTO @IslemId,@Tarih,@SubeId,@KasaId,@RefNo,@HesapType,@IslemKodu,@IslemTuru,@IslemTipi,@HesapId,@BakiyeId,@AyarEviId,@RaporNo,@StokId,@Adet,@Miktar,@AuMilyem,@Has,@AgMilyem,@PltMilyem,@PldMilyem,@HasIsc,@HasIscBirimId,@GumIsc,@GumIscBirimId,@IscilikDurumu,@GumusDurumu,@PlatinDurumu,@PalladiumDurumu,@IsRapor,@IsExtra,@Tutar,@Birim,@BirimId,@IsDeleted,@HasKur,@GumKur,@PltKur,@PldKur,@IscKur ,@HasIscBirimKur,@GumIscBirimKur,@StokIsc,@StokIscBirimId,@StokIscKur ,@InsertDate
END
CLOSE IslemCursor
DEALLOCATE IslemCursor
Kaynaklar
- SRC-DB-MODULES —
sys.sql_modulestanımı (salt okunur); gizli sabitler[REDACTED_SECRET]ile değiştirildi.
Bilinmeyenler
- Hangi sürümde eklendiği:
createdDB tarihi bir kurulumun tarihidir, ürün sürümü değil (GAP-VERSION-02).
