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ı
Editör ekibi
8 dk okuma
İçindekiler
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ığı:
TBLFATUIRStablosundaDOVIZTIPveDOVIZTUTkullanılırken,TBLCAHARtablosundaDOVIZ_TURUveDOVIZ_TUTARkullanı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
DOVIZTIPveyaDOVIZ_TURUdeğeri0olur. Filtre konulmadığında TL işlemler de dövizmiş gibi toplanarak kur hesabını bozar. - Döviz Tutarında Yön Eksikliği:
TBLCAHARtablosundakiDOVIZ_TUTARher zaman pozitiftir. Borç/alacak ayrımı yapmadan doğrudanSUM(DOVIZ_TUTAR)almak bakiyeyi değil, toplam hacmi verir. - Şube Kodu Filtresinin Atlanması: Çok şubeli Netsis kurulumlarında
SUBE_KODUfiltresi 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 <> 0kontrolü 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.
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.