Genel Bilgiler
SQL Server
Stored Procedure
✅ Etkilenmez
23.12.2025 07:15
23.12.2025 16:10
İstatistikler
0
Kod Analizi
107
Satır
2
Kullandığı
0
Kullanan
→ Kullandığı Nesneler (2)
USES_VIEW
REFERENCES
← Kullanan Nesneler (0)
Bu nesneyi kullanan yok
→ Bağımlılık Ağacı
- iskonto_oranlariREFERENCES
← Etki Ağacı
Bu nesneyi kullanan yok
Tam SQL Kodu
CREATE PROC [dbo].[ISKONTO_ORANLARI]
AS
BEGIN
SET NOCOUNT ON;
DECLARE @REF INT;
DECLARE @SAY INT = 1;
DECLARE @TOP INT;
DECLARE @TURU VARCHAR(250);
DECLARE @FIS DECIMAL(18,2) = 0;
DECLARE @PESIN DECIMAL(18,2) = 0;
----------------------------------------------------------------------------
-- 1) Öncelikle, döngüyle [EKISKONTO_ORANINA_GORE_SIRALI_CARI_LISTE]
-- tablosundaki kayitlari okuyup LG_XT1015_011'i güncelliyoruz.
----------------------------------------------------------------------------
SELECT @TOP = COUNT(*)
FROM dbo.[EKISKONTO_ORANINA_GORE_SIRALI_CARI_LISTE];
WHILE @SAY <= @TOP
BEGIN
SELECT
@REF = LOGICALREF,
@TURU = TURU
FROM dbo.[EKISKONTO_ORANINA_GORE_SIRALI_CARI_LISTE]
WHERE SIRA = @SAY;
-- Her kayit için varsayilanlari sifirla
SET @FIS = 0;
SET @PESIN = 0;
-- TURU bos degilse parse et
IF (@TURU IS NOT NULL AND LTRIM(RTRIM(@TURU)) <> '')
BEGIN
-- '+KDV' ifadesini çikar
SET @TURU = REPLACE(@TURU, '+KDV', '');
-- FIS:xx => FIS
IF CHARINDEX('FIS:', @TURU) > 0
BEGIN
SET @FIS = dbo.ufn_GET_NUMERIC_PORTION_AFTER_TAG(@TURU, 'FIS:');
END
ELSE IF CHARINDEX('FIS', @TURU) > 0
BEGIN
-- 'FIS' var ama sayi yoksa => 0
SET @FIS = 0;
END
-- PESIN:yy => PESIN
IF CHARINDEX('PESIN:', @TURU) > 0
BEGIN
SET @PESIN = dbo.ufn_GET_NUMERIC_PORTION_AFTER_TAG(@TURU, 'PESIN:');
END
ELSE IF CHARINDEX('PESIN', @TURU) > 0
BEGIN
-- 'PESIN' var ama sayi yoksa => 0
SET @PESIN = 0;
END
-- :X ISKONTO => eger ne FIS ne PESIN bulunmadiysa -> FIS'e yazalim
IF (@FIS = 0 AND @PESIN = 0 AND CHARINDEX('ISKONTO', @TURU) > 0)
BEGIN
SET @FIS = dbo.ufn_GET_NUMERIC_PORTION_BEFORE_TEXT(@TURU, 'ISKONTO');
END
END
-- Güncelleme: Bu REF (PARLOGREF) kaydi LG_XT1015_011 tablosunda set ediliyor
UPDATE dbo.LG_XT1015_011
SET TURU = @TURU, -- Isterseniz burada da TURU'yu saklayabilirsiniz
FIS = @FIS,
PESIN = @PESIN,
FIS2 = 0,
PESIN2= 0,
TUM = 0,
SART = 0
WHERE PARLOGREF = @REF;
SET @SAY = @SAY + 1;
END
----------------------------------------------------------------------------
-- 2) EKISKONTO_ORANINA_GORE_SIRALI_CARI_LISTE tablosunda OLMAYAN
-- (yani PARLOGREF eslesmesi olmayan) LG_XT1015_011 kayitlarini sifirla:
--
-- - TURU sütunu bos
-- - FIS, PESIN, FIS2, PESIN2, TUM, SART alanlari 0
----------------------------------------------------------------------------
UPDATE dbo.LG_XT1015_011
SET TURU = '', -- Bos yapiyoruz
FIS = 0,
PESIN = 0,
FIS2 = 0,
PESIN2= 0,
TUM = 0,
SART = 0
WHERE PARLOGREF NOT IN
(
SELECT LOGICALREF
FROM dbo.[EKISKONTO_ORANINA_GORE_SIRALI_CARI_LISTE]
);
END