Erp Asistanı Erp Asistanı
Netsis SQL

Netsis Dövizli Fatura ve Kur Farkı Matrahı Analizi SQL

Netsis TBLFATUIRS ve TBLCAHAR tablolarında dövizli fatura dökümü, dövizli cari bakiye ve kur farkı matrahı analizi yapabileceğiniz hazır SQL sorguları.

Erp Asistanı Erp Asistanı Editör ekibi 8 dk okuma
Netsis Dövizli Fatura ve Kur Farkı Matrahı Analizi SQL

Netsis veritabanında dövizli işlemler takip edilirken en sık karşılaşılan zorluk, yerel para birimi (TL) karşılıkları ile döviz bakiyelerinin aynı raporda doğru şekilde konsolide edilememesidir. Satış veya alış faturasının kesildiği günkü işlem kuru ile tahsilat veya ödeme günündeki kur arasındaki fark, işletmeler için kur farkı faturası matrahını oluşturur. Dövizli hareketlerin dökümünü almak ve potansiyel kur farkını hesaplamak için TBLFATUIRS ve TBLCAHAR tablolarındaki döviz kolonlarını doğru sorgulamak gerekir.

Bu rehberde, Netsis üzerinde dövizli fatura listeleme, cari hesap döviz bakiyesi çıkarma ve kur farkı potansiyelini analiz etme adımlarını hazır SQL sorgularıyla ele alıyoruz. Genel mimariyi incelemek için Netsis tablo yapısı rehberi yazımıza da göz atabilirsiniz.

1. Netsis Döviz Mimarisi: Fatura ve Cari Hareket Alanları

Netsis fatura başlıklarında ve cari hareket kayıtlarında döviz bilgilerini farklı kolon isimleriyle saklar. Bu iki tabloyu birleştirirken veya bağımsız sorgularken kolon adlarına dikkat edilmelidir:

Bilgi Türü Fatura Başlığı (TBLFATUIRS) Cari Hareket (TBLCAHAR) Açıklama
Döviz Cinsi DOVIZTIP DOVIZ_TURU 0 = Yerel Para Birimi (TL), diğer değerler döviz tipi
Döviz Tutarı DOVIZTUT DOVIZ_TUTAR Belgenin orijinal döviz cinsi tutarı
TL Tutar GENELTOPLAM BORC / ALACAK Belgenin muhasebeleşen yerel tutarı
Şube Kodu SUBE_KODU SUBE_KODU Çok şubeli yapılarda kayıt ayrımı
Belge Türü FTIRSIP HAREKET_TURU Satış/Alış fatura veya fiş ayrımı

2. Dövizli Faturalar Listesi ve Fatura Kuru (TBLFATUIRS)

Fatura başlığında doğrudan bir döviz kuru alanı aranması sık yapılan bir hatadır. Netsis dövizli faturalarda toplam TL karşılığını GENELTOPLAM, döviz tutarını ise DOVIZTUT alanında tutar. Faturanın işlem kurunu bulmak için bu iki alanın oranlanması gerekir.

Aşağıdaki sorgu, dövizli satış ve alış faturalarını listeler ve fatura bazında gerçekleşen kuru hesaplar:

SELECT
    f.SUBE_KODU,
    f.FATIRS_NO AS [FaturaNo],
    f.TARIH AS [FaturaTarihi],
    f.CARI_KODU AS [CariKodu],
    c.CARI_ISIM AS [CariUnvani],
    CASE f.FTIRSIP 
        WHEN '1' THEN 'Satış Faturası'
        WHEN '2' THEN 'Alış Faturası'
        ELSE 'Diğer'
    END AS [FaturaTuru],
    f.DOVIZTIP AS [DovizTipi],
    f.DOVIZTUT AS [DovizTutari],
    f.GENELTOPLAM AS [GenelToplamTL],
    CASE 
        WHEN f.DOVIZTUT <> 0 THEN ROUND(f.GENELTOPLAM / f.DOVIZTUT, 4)
        ELSE 0 
    END AS [HesaplananKur]
FROM TBLFATUIRS f
INNER JOIN TBLCASABIT c ON c.CARI_KOD = f.CARI_KODU
WHERE f.DOVIZTIP <> 0
  AND f.FTIRSIP IN ('1', '2')
  AND f.SUBE_KODU = 0
ORDER BY f.TARIH DESC, f.FATIRS_NO DESC;

3. Cari Bazında Dövizli Bakiye ve Ağırlıklı Kur (TBLCAHAR)

Cari hareketlerin dökümünde DOVIZ_TURU alanı sıfırdan büyük olan kayıtlar dövizli işlemleri temsil eder. Ancak borç ve alacak toplamları TL bazında BORC ve ALACAK sütunlarında tutulurken, döviz tutarı yön bilgisi olmadan DOVIZ_TUTAR sütununda pozitiftir. Bu nedenle döviz yönünü borç/alacak ayrımına göre CASE şartı ile belirlemek gerekir.

Cari hesapların döviz cinsi bazında bakiyesini ve o bakiyeyi oluşturan ağırlıklı ortalama kuru veren sorgu:

SELECT
    h.CARI_KOD AS [CariKodu],
    c.CARI_ISIM AS [CariUnvani],
    h.DOVIZ_TURU AS [DovizTuru],
    SUM(h.BORC) AS [ToplamBorcTL],
    SUM(h.ALACAK) AS [ToplamAlacakTL],
    SUM(h.BORC) - SUM(h.ALACAK) AS [BakiyeTL],
    SUM(CASE WHEN h.BORC > 0 THEN h.DOVIZ_TUTAR ELSE 0 END) AS [BorcDoviz],
    SUM(CASE WHEN h.ALACAK > 0 THEN h.DOVIZ_TUTAR ELSE 0 END) AS [AlacakDoviz],
    SUM(CASE WHEN h.BORC > 0 THEN h.DOVIZ_TUTAR ELSE -h.DOVIZ_TUTAR END) AS [BakiyeDoviz],
    CASE 
        WHEN SUM(CASE WHEN h.BORC > 0 THEN h.DOVIZ_TUTAR ELSE -h.DOVIZ_TUTAR END) <> 0 
        THEN ROUND((SUM(h.BORC) - SUM(h.ALACAK)) / SUM(CASE WHEN h.BORC > 0 THEN h.DOVIZ_TUTAR ELSE -h.DOVIZ_TUTAR END), 4)
        ELSE 0 
    END AS [OrtalamaIslemKuru]
FROM TBLCAHAR h
INNER JOIN TBLCASABIT c ON c.CARI_KOD = h.CARI_KOD
WHERE h.SUBE_KODU = 0
  AND h.DOVIZ_TURU <> 0
GROUP BY h.CARI_KOD, c.CARI_ISIM, h.DOVIZ_TURU
HAVING SUM(CASE WHEN h.BORC > 0 THEN h.DOVIZ_TUTAR ELSE -h.DOVIZ_TUTAR END) <> 0
ORDER BY h.CARI_KOD, h.DOVIZ_TURU;

Cari hesap ekstreleri ile ilgili daha detaylı filtreleme kalıpları için Netsis cari ekstre ve bakiye SQL yazımızı inceleyebilirsiniz.

4. Fatura ve Tahsilat Arasındaki Kur Değişimi Analizi

Kur farkı matrahının incelenmesinde carinin dövizli hareket satırlarının tek tek işlem kuru üzerinden izlenmesi gerekir. TBLCAHAR üzerindeki hareket türü (HAREKET_TURU) alanı B olduğunda fatura, D veya K olduğunda ise kasa/dekont hareketini gösterir.

Belirli bir cari hesabın dövizli işlemlerini kronolojik sırada kur değişimleriyle veren sorgu:

SELECT
    h.INC_KEY_NUMBER AS [SiraNo],
    h.TARIH AS [IslemTarihi],
    h.BELGE_NO AS [BelgeNo],
    CASE h.HAREKET_TURU
        WHEN 'A' THEN 'Devir'
        WHEN 'B' THEN 'Fatura'
        WHEN 'C' THEN 'İade Faturası'
        WHEN 'D' THEN 'Kasa İşlemi'
        WHEN 'K' THEN 'Dekont'
        ELSE 'Diğer'
    END AS [IslemTuru],
    h.ACIKLAMA AS [Aciklama],
    h.DOVIZ_TURU AS [DovizTuru],
    h.DOVIZ_TUTAR AS [DovizTutari],
    h.BORC AS [BorcTL],
    h.ALACAK AS [AlacakTL],
    CASE 
        WHEN h.DOVIZ_TUTAR <> 0 THEN ROUND((h.BORC + h.ALACAK) / h.DOVIZ_TUTAR, 4)
        ELSE 0 
    END AS [HareketKuru]
FROM TBLCAHAR h
WHERE h.CARI_KOD = 'M-001'
  AND h.SUBE_KODU = 0
  AND h.DOVIZ_TURU <> 0
ORDER BY h.TARIH ASC, h.INC_KEY_NUMBER ASC;

5. Döviz Cinsine Göre Genel Değerleme ve Matrah Özeti

İşletme genelinde açık olan dövizli bakiyelerin değerlemeye tabi tutulacak toplam döviz ve TL tutarlarını görmek için döviz tipi bazında icmal alınabilir. Ek hazır sorgulara Netsis hazır SQL sorguları rehberinden ulaşabilirsiniz.

SELECT
    h.DOVIZ_TURU AS [DovizTuru],
    COUNT(DISTINCT h.CARI_KOD) AS [CariSayisi],
    SUM(h.BORC - h.ALACAK) AS [ToplamBakiyeTL],
    SUM(CASE WHEN h.BORC > 0 THEN h.DOVIZ_TUTAR ELSE -h.DOVIZ_TUTAR END) AS [ToplamBakiyeDoviz],
    CASE 
        WHEN SUM(CASE WHEN h.BORC > 0 THEN h.DOVIZ_TUTAR ELSE -h.DOVIZ_TUTAR END) <> 0 
        THEN ROUND(SUM(h.BORC - h.ALACAK) / SUM(CASE WHEN h.BORC > 0 THEN h.DOVIZ_TUTAR ELSE -h.DOVIZ_TUTAR END), 4)
        ELSE 0 
    END AS [SistemAgirlikliOrtalamaKur]
FROM TBLCAHAR h
WHERE h.SUBE_KODU = 0
  AND h.DOVIZ_TURU <> 0
GROUP BY h.DOVIZ_TURU
ORDER BY h.DOVIZ_TURU;

Sık yapılan hatalar

  • Kolon Adı Karışıklığı: TBLFATUIRS tablosunda DOVIZTIP ve DOVIZTUT kullanılırken, TBLCAHAR tablosunda DOVIZ_TURU ve DOVIZ_TUTAR kullanılır. İsimlerin karıştırılması sorgunun hata vermesine sebep olur.
  • Sıfır Döviz Tipi Filtresinin Unutulması: Yerel para birimi (TL) olan hareketlerde DOVIZTIP veya DOVIZ_TURU değeri 0 olur. Filtre konulmadığında TL işlemler de dövizmiş gibi toplanarak kur hesabını bozar.
  • Döviz Tutarında Yön Eksikliği: TBLCAHAR tablosundaki DOVIZ_TUTAR her zaman pozitiftir. Borç/alacak ayrımı yapmadan doğrudan SUM(DOVIZ_TUTAR) almak bakiyeyi değil, toplam hacmi verir.
  • Şube Kodu Filtresinin Atlanması: Çok şubeli Netsis kurulumlarında SUBE_KODU filtresi verilmezse tüm şubelerin kayıtları birbirine karışır.
  • Sıfıra Bölme Hatası (Divide by Zero): Döviz kuru hesaplanırken CASE WHEN DOVIZTUT <> 0 kontrolü yapılmazsa döviz tutarı 0 olan kayıtlarda SQL motoru hata üretir.

Sık sorulanlar

Döviz cinsi kodlarının (1, 2, 3 vb.) hangi para birimine ait olduğunu nasıl anlarım? Netsis kurulumlarında döviz tipleri sabit değildir; şirket bazında tanımlanır. Bu nedenle doğrudan kodlara USD veya EUR gibi varsayımlarla yaklaşmak yerine kendi sisteminizdeki döviz sıra tanımlarını kontrol etmeniz gerekir.

Faturadaki KDV döviz tutarına dahil midir? TBLFATUIRS tablosundaki DOVIZTUT alanı fatura genel toplamının döviz karşılığıdır. Yani KDV dahil genel döviz tutarını yansıtır.

Cari bakiyesi sıfır olan caride kur farkı çıkar mı? Evet. Bir carinin döviz bakiyesi tamamen kapanmış (0 döviz) olsa dahi, fatura tarihindeki kur ile tahsilat tarihindeki kur farkından dolayı TL bakiye artı veya eksi verebilir. Bu bakiye doğrudan kur farkı matrahıdır.


Dövizli cari mutabakatlarını ve kur farkı hesaplamalarını SQL ile manuel yürütmek yerine dinamik paneller üzerinden yönetebilirsiniz. Erp Asistanı'na ücretsiz üye olarak şirketinize özel döviz ve cari analiz sorgularını doğal dille saniyeler içinde oluşturabilirsiniz.

Ücretsiz üye olun, istediğiniz sorguyu doğal dille alın →

Bu yazıyı paylaş
Konuşarak raporlayın

Netsis'te SQL ve raporu konuşarak alın

Türkçe sorunuzu yazın, şemanıza uygun çalışan SQL'i ya da hazır uygulamanızı saniyeler içinde alın. Kredi kartı gerekmez.