Tip: TRIGGER · Şema: Cari · Modül: MOD-CARI · Temizlik sınıfı: INDIRECTLY_USED (kategori C, güven 0) · Kapsam: ERPGOLD_CORE / ALL
Kullanım haritası (13.09.2026)
| Kategori | B — INDIRECT DEPENDENCY · B-TRIGGER |
| Güven | 95 |
| Derinlik / kök | 1 · Cari.Islemler |
| DependencyPath | ERPGOLD → Cari.Hesap → Cari.Islemler → Cari.AcceptTransaction |
| Bağlı tablo | Cari.Islemler |
Bkz. Database Usage Map · Core Database Objects. 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 | YES |
| db_out | YES |
| trigger | YES |
| fk | NO |
| computed | NO |
| crossdb | NO |
| runtime | UNKNOWN |
| external | NO |
Gerekçe: Cari.Islemler → Cari.AcceptTransaction (trigger (tablo→tetikleyici))
KB-v1 gövdesi (2026-09-10 · kısmi kod kapsamı — kaynağı kadar güvenilir)
Tür: TRIGGER (TR) · Modül: MOD-CARI · Uzunluk: 569 satır
Tablo: Cari.Islemler · Olay: INSERT,UPDATE,DELETE
Özet
Cari.Islemler üzerinde INSERT/UPDATE/DELETE sonrası çalışan ana tetikleyici. Bakiye defterini (Cari.BakiyeIslem) ve stok defterini (Stok.StokHaraketleri) IslemId bazında sil-yeniden-yaz mantığıyla üreten tek nesnedir.
Ayrıntı
ÇEŞNİ (14) HAS ve GUM bakiyesi yazar; NAKİT EMANET (3+tip10) miktar yazar; TAKOZ (0) altın/gümüş/platin/paladyum milyem durumlarına göre çok satırlı bakiye üretir; raporsuz takoz XRF milyemiyle (XRF=0 ise 0,600) hesaplanır.
Bağımlılıklar (bu nesne → hedef)
| İlişki | Hedef | Tip |
|---|---|---|
| WRITES | Cari.BakiyeIslem | TABLE |
| CALLS | Cari.GetGerekliEvraklar | FUNCTION |
| WRITES | Cari.Hesaplar | TABLE |
| READS | Cari.IslemDetaylari | TABLE |
| CALLS | FN.Bol | FUNCTION |
| CALLS | FN.GetKur | FUNCTION |
| WRITES | Sistem.Activity | TABLE |
| READS | Sistem.Birimler | TABLE |
| READS | Sistem.Settings | TABLE |
| READS | Sistem.Subeler | TABLE |
| CALLS | Stok.GetTakozAdet | FUNCTION |
| READS | Stok.Model | TABLE |
| WRITES | Stok.StokHaraketleri | TABLE |
| WRITES | Stok.Takoz | TABLE |
Ürettiği hata mesajları
- "ISLEMLERI DIREK SILEMEZSINIZ ?."
- "SUBE PASIF HALDE. ISLEM YAPAMAZSINIZ..."
- "E-DOVIZ FATURASI GONDERILMIS ISLEMLER DUZELTILEMEZ ..."
- "BU HESABIN ZORUNLU EVRAKLARI EKSIKTIR. ISLEM YAPAMAZSINIZ."
- "HESABA AİT ADRES VE TELEFON BİLGİLERİ GİRİLMEDEN İŞLEM YAPILAMAZ."
- "SUBE,KASA VEYA HESAP SECILMEDI. ISLEM YAPAMAZSINIZ?."
- "BU TAKOZA AIT ISLEMLER VAR. IPTAL EDEMEZSINIZ ?."
- "BU TAKOZ STOGUNUZDA YOK.ISLEM YAPAMAZSINIZ."
- "BU TAKOZA AIT ISLEMLER VAR. IPTAL EDEMEZSINIZ ?."
- "BU TAKOZ STOGUNUZDA YOK.ISLEM YAPAMAZSINIZ."
İlgili iş kuralları
- IslemId bazında önce eski türetilmiş satırları siler (Delete Cari.BakiyeIslem WHERE IslemId=@x; Delete Stok.StokHaraketleri WHERE IslemId=@x AND Bolum=0), sonra IslemKodu'na göre dallanıp yeniden yazar (Cari.AcceptTransaction.md satır 318-320)
- Sırasıyla kontrol: (1) yalnız DELETE ise 'ISLEMLERI DIREK SILEMEZSINIZ'; (2) Şube pasifse ROLLBACK+RETURN; (3) ETTN dolu ve mutabakat/silme değilse 'E-DOVIZ FATURASI...' ROLLBACK+RETURN; (4) eksik evrak varsa ROLLBACK (RETURN YOK); (5) Sube/Kasa/Hesap 0 ise ROLLBACK (satır 119-245)
- IslemTipi 11/12 ise defter üretmeden çıkar (@IsDeleted=False AND @IsError=0 AND IslemTipi<>11 AND <>12) (satır 323)
- GİRİŞ/ALACAK/ALIŞ (0/2/4) satırında has/tutar alacaklı (negatif) yazılır, ÇIKIŞ/SATIŞ/BORÇ (1/3/5) borçlu (pozitif) — MADEN/HURDA/MODEL dalı (satır 392-417)
- PEŞİN (IslemTipi=1) hariç BakiyeId>0 ve Miktar<>0 ise mal bakiyesi; IslemTipi<>1 ve Tutar<>0 ise para bakiyesi yazılır (satır 406-416)
- Global IslemCursor kullanır; hata dallarında CLOSE/DEALLOCATE yok — bağlantı havuzunda 'cursor already exists' riski (kitapcik 2.7)
- Eksik evrak dalında ROLLBACK sonrası RETURN olmadığından kalan ifadeler transaction dışında koşar (kitapcik 2.7)
SQL tanımı (AS-IMPLEMENTED, örnek DB)
CREATE Trigger [Cari].[AcceptTransaction] ON [Cari].[Islemler] AFTER INSERT,UPDATE,DELETE
AS
BEGIN
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 @VaryantId int
Declare @Adet int
Declare @Miktar Decimal(18,2)
Declare @CesniMiktar 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 @FiyatTipi int
Declare @StokIsc Decimal(18,2)
Declare @StokIscKur Decimal(18,5)
Declare @StokIscBirimId int
Declare @SubeIsActive bit
Declare @IsDeleted bit
Declare @InsertDate date
Declare @IsError int =0
Declare @Satis as decimal(18,2)
Declare @Adres nvarchar(Max)=''
Declare @ETTN nvarchar(Max)=''
if (Select count(*) From Inserted) = 0 and (Select count(*) From deleted) > 0
BEGIN
RAISERROR('ISLEMLERI DIREK SILEMEZSINIZ ?. ',16,1)
ROLLBACK
END
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))
--<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 I.FiyatTipi, I.Id,I.Tarih,I.SubeId,I.KasaId,I.RefNo,I.HesapType,I.IslemKodu,I.IslemTuru,I.IslemTipi,I.HesapId,I.BakiyeId,I.AyarEviId,I.RaporNo,
I.StokId,I.VaryantId,I.Adet,I.Miktar,I.CesniMiktar,I.AuMilyem,I.Miktar * Case When AuMilyem=0 Then 1 else AuMilyem end as Has,I.AgMilyem,I.PltMilyem,I.PldMilyem,I.HasIsc,I.HasIscBirimId,I.GumIsc,
I.GumIscBirimId,I.IscilikDurumu,I.GumusDurumu,I.PlatinDurumu,I.PalladiumDurumu,I.IsRapor,I.IsExtra,I.Tutar,I.Birim,I.BirimId,I.IsDeleted,I.HasKur,I.GumKur,I.PltKur,I.PldKur,I.IscilikBirimKur,
I.HasIscBirimKur,I.GumIscBirimKur,I.Iscilik,I.IscilikBirimId,I.IscilikBirimKur ,I.Tarih,S.IsActive,I.Satis,D.ETTN
From Inserted I
Left Join Sistem.Subeler S on S.Id=I.SubeId
Left Join Cari.IslemDetaylari D on D.IslemId=I.Id
OPEN IslemCursor
FETCH NEXT FROM IslemCursor INTO @FiyatTipi,@IslemId,@Tarih,@SubeId,@KasaId,@RefNo,@HesapType,@IslemKodu,@IslemTuru,@IslemTipi,@HesapId,@BakiyeId,@AyarEviId,@RaporNo,@StokId,@VaryantId,@Adet,@Miktar,@CesniMiktar,@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,@SubeIsActive,@Satis,@ETTN
WHILE @@FETCH_STATUS =0
BEGIN
-- _____ _______ _____ _______ __ __ _ _____ _____ _______ _____ ____ _ _
-- / ____|__ __|/\ | __ \__ __| \ \ / /\ | | |_ _| __ \ /\|__ __|_ _/ __ \| \ | |
--| (___ | | / \ | |__) | | | \ \ / / \ | | | | | | | | / \ | | | || | | | \| |
-- \___ \ | | / /\ \ | _ / | | \ \/ / /\ \ | | | | | | | |/ /\ \ | | | || | | | . ` |
-- ____) | | |/ ____ \| | \ \ | | \ / ____ \| |____ _| |_| |__| / ____ \| | _| || |__| | |\ |
--|_____/ |_/_/ \_\_| \_\ |_| \/_/ \_\______|_____|_____/_/ \_\_| |_____\____/|_| \_|
Set @IsError=0
if @SubeIsActive='False'
BEGIN
RAISERROR('SUBE PASIF HALDE. ISLEM YAPAMAZSINIZ... ',16,1)
Set @IsError=1
ROLLBACK
RETURN
END
if @ETTN<>'' and not UPDATE (Mutabakat) and not UPDATE (IsDeleted)
BEGIN
RAISERROR('E-DOVIZ FATURASI GONDERILMIS ISLEMLER DUZELTILEMEZ ... ',16,1)
Set @IsError=1
ROLLBACK
RETURN
END
--////////////////////////////////////////////EKSİK EVRAK KONTROLÜ////////////////////////////////////////////
if (SELECT COUNT(*) FROM Cari.GetGerekliEvraklar(@SubeId,@HesapId, 'True') WHERE (Gun IS NULL OR Gun < 0))>0
BEGIN
Declare @EksikEvraklar AS Nvarchar(MAX) -- It must not be MAX if you have few numbers
SELECT @EksikEvraklar = COALESCE(@EksikEvraklar + ',', '') + DocumentName From
(
SELECT DISTINCT DocumentName
FROM Cari.GetGerekliEvraklar(@SubeId,@HesapId, 'True') WHERE Gun IS NULL OR Gun < 0
) X
RAISERROR('BU HESABIN ZORUNLU EVRAKLARI EKSIKTIR. ISLEM YAPAMAZSINIZ.',16,1)
RAISERROR(@EksikEvraklar,16,2)
Set @IsError=1
ROLLBACK
END
--/////////////////////////////////////////////////////////////////////////////////////////////////////////////
-------------------------------------------------------------------
--if @Adres is null
--Begin
-- RAISERROR ('HESABA AİT ADRES VE TELEFON BİLGİLERİ GİRİLMEDEN İŞLEM YAPILAMAZ.',16,1)
-- SET @IsError=1
-- ROLLBACK
-- RETURN
--End
--Declare @MusteriTemsilcisi nvarchar(max)=(Select Temsilci1 from Cari.Hesaplar Where Id=@HesapId)
--if @MusteriTemsilcisi in (Select combovalue from Sistem.DbCombo where Id in (478,479,480,481,482)) and (Select BSMV from Cari.Islemler Where HesapId=@HesapId and Id=@IslemId and @IslemTuru%2=1 and @IslemTipi=11)>0 and @IsDeleted=0
--BEGIN
-- RAISERROR ('BSMV''DEN MUAF BİR HESAP SEÇTİNİZ. LÜTFEN İŞLEMİNİZİ KONTROL EDİNİZ.',16,1)
-- SET @IsError=1
-- ROLLBACK
-- RETURN
--END
--if @MusteriTemsilcisi is null and (Select BSMV from Cari.Islemler Where HesapId=@HesapId and Id=@IslemId and (@IslemTuru%2=1 and @IslemTipi=11))=0 and @IsDeleted=0
--Begin
--RAISERROR ('BSMV''DEN MUAF OLMAYAN BİR HESAP SEÇTİNİZ. LÜTFEN İŞLEMİNİZİ KONTROL EDİNİZ.',16,1)
-- SET @IsError=1
-- ROLLBACK
-- RETURN
--END
-------------------------------------------------------------------
----limit kontrolü MADEN/HURDA/NAKİT ÇIKIŞ PEŞİN OLMAYAN İŞLEMLERDE ANKARA MARAŞ DOĞUDOVIZ ŞUBELERİNDE
--if (@IslemKodu=1 or @IslemKodu=2 or @IslemKodu=3) AND @IslemTuru=1 And @IslemTipi<>1 AND (@SubeId in (2,3,10,12,13,15)) and @IsDeleted='False'
--BEGIN
-- Declare @Balance decimal(18,2) = Fn.Bol(@Satis,@HasKur)
-- Declare @AvaibleLimit Decimal(18,2)=[FN].[GetCariLimit](@HesapId)
-- Declare @message as nvarchar(max)='Hesap Limiti Aşılıyor. İşlemi Kayıt Edemezsiniz..! Kalan Müşteri Limiti ' + Convert(nvarchar(max),@AvaibleLimit) + ' HAS'
-- if @Balance > @AvaibleLimit
-- BEGIN
-- RAISERROR(@message ,16,1)
-- Set @IsError=1
-- ROLLBACK
-- END
--END
if @SubeId=0 or @KasaId=0 or @HesapId=0
BEGIN
RAISERROR('SUBE,KASA VEYA HESAP SECILMEDI. ISLEM YAPAMAZSINIZ?. ',16,1)
Set @IsError=1
ROLLBACK
END
------YAPILAN ISLEMLERDE ACTIVITY DATE YAZILIYOR
MERGE INTO [Sistem].[Activity] AS Target USING (SELECT @subeId AS ActivitySubeId, GETDATE AS LastDate) AS Source
ON Target.ActivitySubeId = Source.ActivitySubeId
WHEN MATCHED THEN UPDATE SET Target.LastDate = Source.LastDate
WHEN NOT MATCHED BY TARGET THEN INSERT (ActivitySubeId, LastDate)
VALUES (Source.ActivitySubeId, Source.LastDate);
---------------------------------------------------------------
---/////// TAKOZ KONTROLU DEĞİŞTİ
--if @IslemKodu=0 And @IslemTuru=0 and @IsDeleted='True' --TAKOZ CIKIS ISLEMINDE TAKOZUN STOGUNU KONTROL ET
--BEGIN
-- if (Select Sum(SAdet) as Adet From Cari.Islemler Where IsDeleted='False' AND IslemKodu=0 And StokId=@StokId And Id<>@IslemId)<>0
-- BEGIN
-- RAISERROR('BU TAKOZA AIT ISLEMLER VAR. IPTAL EDEMEZSINIZ ?. ',16,1)
-- Set @IsError=1
-- ROLLBACK
-- END
-- ELSE
-- BEGIN
-- Update Stok.Takoz Set IsDeleted='True' Where Id=@StokId
-- END
--END
--if (@IslemKodu=0 And @IslemTuru=1 And @IsDeleted='False')
-- BEGIN
-- if (Select Sum(SAdet) as Adet From Cari.Islemler Where IsDeleted='False' And KasaId=@KasaId And IslemKodu=0 And StokId=@StokId And Id<>@IslemId)=0
-- BEGIN
-- RAISERROR('BU TAKOZ STOGUNUZDA YOK.ISLEM YAPAMAZSINIZ. ',16,1)
-- Set @IsError=1
-- ROLLBACK
-- END
-- END
---///////////////////////////////////////////////////////////////
if @IslemKodu=0 And @IslemTuru=0 and @IsDeleted='True' --TAKOZ CIKIS ISLEMINDE TAKOZUN STOGUNU KONTROL ET
BEGIN
if (Select Stok.GetTakozAdet(@StokId,@IslemId)) <>0
BEGIN
RAISERROR('BU TAKOZA AIT ISLEMLER VAR. IPTAL EDEMEZSINIZ ?. ',16,1)
Set @IsError=1
ROLLBACK
END
ELSE
BEGIN
Update Stok.Takoz Set IsDeleted='True' Where Id=@StokId
END
END
if (@IslemKodu=0 And @IslemTuru=1 And @IsDeleted='False')
BEGIN
if (Select Stok.GetTakozAdet(@StokId,@IslemId)) =0
BEGIN
RAISERROR('BU TAKOZ STOGUNUZDA YOK.ISLEM YAPAMAZSINIZ. ',16,1)
Set @IsError=1
ROLLBACK
END
END
-- ______ _ _ _____ __ __ _ _____ _____ _______ _____ ____ _ _
--| ____| \ | | __ \ \ \ / /\ | | |_ _| __ \ /\|__ __|_ _/ __ \| \ | |
--| |__ | \| | | | | \ \ / / \ | | | | | | | | / \ | | | || | | | \| |
--| __| | . ` | | | | \ \/ / /\ \ | | | | | | | |/ /\ \ | | | || | | | . ` |
--| |____| |\ | |__| | \ / ____ \| |____ _| |_| |__| / ____ \| | _| || |__| | |\ |
--|______|_| \_|_____/ \/_/ \_\______|_____|_____/_/ \_\_| |_____\____/|_| \_|
if @IsError=0
BEGIN
Delete From Cari.BakiyeIslem Where IslemId =@IslemId
Delete From Stok.StokHaraketleri Where IslemId =@IslemId and Bolum =0
END
if @IsDeleted='False' And @IsError=0 AND (@IslemTipi <>11 AND @IslemTipi<>12)
BEGIN
Update Cari.Hesaplar Set LastDate=Getdate Where Id=@HesapId
/*****************************STOK HARAKET DOSYASINA KAYIT ET************************************************************************/
---STOKTİPİ (1)-Maden (2)-Nakit (3)-Takoz (4)-Pırlanta
if @IslemKodu=1 or @IslemKodu=2 --- MADEN İŞLEMİ İSE/
BEGIN
Insert Into Stok.StokHaraketleri(Bolum,IslemId,IslemTuru,Tarih,SubeId,KasaId,StokTipi,StokId,VaryantId,Adet,Miktar,Milyem,Has,Maliyet)
Values(0,@IslemId,@IslemTuru,@Tarih,@SubeId,@KasaId,1,@StokId,IsNull(@VaryantId,0),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(Bolum,IslemId,IslemTuru,Tarih,SubeId,KasaId,StokTipi,StokId,Adet,Miktar,Milyem,Has,Maliyet)
Values(0,@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 And @IslemTipi <>4 ---NAKİT İŞLEMİ İSE
BEGIN
Insert Into Stok.StokHaraketleri(Bolum,IslemId,IslemTuru,Tarih,SubeId,KasaId,StokTipi,StokId,Adet,Miktar,Milyem,Has,Maliyet)
Values(0,@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(Bolum,IslemId,IslemTuru,Tarih,SubeId,KasaId,StokTipi,StokId,Adet,Miktar,Milyem,Has,Maliyet)
Values(0,@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
if @IslemKodu=8 ---PIRLANTA İŞLEMİ İSE
BEGIN
Declare @Maliyet decimal(18,2) =@Tutar * Fn.GetKur(@BirimId)
Insert Into Stok.StokHaraketleri(Bolum,IslemId,IslemTuru,Tarih,SubeId,KasaId,StokTipi,StokId,Adet,Miktar,Milyem,Has,Maliyet)
Values(0,@IslemId,@IslemTuru,@Tarih,@SubeId,@KasaId,4,@StokId,Case When @IslemTuru=0 Then @Adet When @IslemTuru=1 Then 0-@Adet End,0,0,0,@Maliyet)
END
if @IslemKodu=9 ----MODEL ISE
BEGIN
Declare @AyarId int =(Select Top 1 StokId From Stok.Model Where Id=@StokId)
Insert Into Stok.StokHaraketleri(Bolum,IslemId,IslemTuru,Tarih,SubeId,KasaId,StokTipi,StokId,VaryantId,Adet,Miktar,Milyem,Has,Maliyet)
Values(0,@IslemId,@IslemTuru,@Tarih,@SubeId,@KasaId,1,@AyarId,IsNull(@VaryantId,0),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
---////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
--************************************************************************************************************************************
--************************************************************************************************************************************
--*****************************EGER ISLEM MADEN ISLEMI ISE (MADEN/HURDA)**************************************************************
--************************************************************************************************************************************
--************************************************************************************************************************************
IF @IslemKodu=14 ---ÇEŞNİ İSE
BEGIN
Insert Into Cari.BakiyeIslem(Tarih,HesapType,HesapId,KasaId,IslemId,BirimId,Bakiye)
Values(@InsertDate,@HesapType,@HesapId,@KasaId,@IslemId,@HasBirimId,@Miktar * @AuMilyem )
Insert Into Cari.BakiyeIslem(Tarih,HesapType,HesapId,KasaId,IslemId,BirimId,Bakiye)
Values(@InsertDate,@HesapType,@HesapId,@KasaId,@IslemId,@GumBirimId,@Miktar * @AgMilyem )
END
IF @IslemKodu =3 And @IslemTipi =10 ---NAKIT EMANET ISLEMI ISE MIKTARI YAZ (#SONRADAN EKLENDI)
BEGIN
if @IslemTuru =0
BEGIN
Insert Into Cari.BakiyeIslem(Tarih,HesapType,HesapId,KasaId,IslemId,BirimId,Bakiye)
Values(@InsertDate,@HesapType,@HesapId,@KasaId,@IslemId,@BakiyeId,@Miktar *-1)
END
ELSE
BEGIN
Insert Into Cari.BakiyeIslem(Tarih,HesapType,HesapId,KasaId,IslemId,BirimId,Bakiye)
Values(@InsertDate,@HesapType,@HesapId,@KasaId,@IslemId,@BakiyeId,@Miktar )
END
END
if @IslemKodu=1 or @IslemKodu=2 or @IslemKodu =9
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 And @IslemTipi <>1 ---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
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 or @IslemKodu =5
--************************************************************************************************************************************
--************************************************************************************************************************************
--***************************** 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
if @IslemKodu =3 and @IslemTipi =10 ----NAKIT PARITE ISLEMI ICIN SONRADAN EKLENDI ORJINAL SATIR ELSE SATIRI
BEGIN
Insert Into Cari.BakiyeIslem(Tarih,HesapType,HesapId,KasaId,IslemId,BirimId,Bakiye)
Values(@InsertDate,@HesapType,@HesapId,@KasaId,@IslemId,@BirimId,@Tutar *-1)
END
ELSE
BEGIN
Insert Into Cari.BakiyeIslem(Tarih,HesapType,HesapId,KasaId,IslemId,BirimId,Bakiye)
Values(@InsertDate,@HesapType,@HesapId,@KasaId,@IslemId,@BirimId,@Tutar)
END
END
END
---////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
---////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
---////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
---////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
---////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
ELSE IF @IslemKodu=0
BEGIN
--************************************************************************************************************************************
--************************************************************************************************************************************
--****************************************** EGER ISLEM TAKOZ ISLEMI ISE **************************************************************
--************************************************************************************************************************************
--************************************************************************************************************************************
-- [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
if @IsRapor =0 ------------ EGER TAKOZ RAPORSUZ ISE XRF MILYEMLERINI OKU
BEGIN
Select @AuMilyem =XRFAuMilyem,@AgMilyem =XRFAgMilyem from stok.Takoz where Id=@StokId
END
if @IslemTuru=0 SET @Miktar +=@CesniMiktar --EĞER TAKOZ GİRİŞ İŞLEMİ İSE BAKİYEYE ÇEŞNİ MİKTARINI DA EKLE.
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 OR (@IsRapor =0 And (@AuMilyem<>0 or @AgMilyem <>0 ))
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 @FiyatTipi, @IslemId,@Tarih,@SubeId,@KasaId,@RefNo,@HesapType,@IslemKodu,@IslemTuru,@IslemTipi,@HesapId,@BakiyeId,@AyarEviId,@RaporNo,@StokId,@VaryantId,@Adet,@Miktar,@CesniMiktar,@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,@SubeIsActive,@Satis,@ETTN
END
CLOSE IslemCursor
DEALLOCATE IslemCursor
END
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).
