
IADE ve TEVKIFATIADE e-Faturalarında kaynak fatura bilgisi zorunlu. Mali dönem bağımlı Logo Tiger ve Go firmalarında önceki döneme ait faturaya iade için tanımlı alan ve script kural ile çözüm.
28 Mart 2025 tarihli e-Fatura paketi ve UBL kod listesi güncellemesiyle birlikte, IADE ve TEVKIFATIADE tipindeki e-Faturalarda en az bir iade edilen (kaynak) fatura bilgisinin bulunması zorunlu hale geldi. Kaynak fatura numarası ve tarihi olmayan iade faturası e-Fatura sisteminden geçmez.
Logo, bu zorunluluk için gerekli geliştirmeyi 2.99.00.00 sürümünde yaptı. Bu sürüme geçemeyen kullanıcılar için, özellikle mali dönem bağımlı çalışıp önceki mali döneme ait bir satınalma faturasına iade kesen firmalarda, kaynak fatura bilgisinin e-Faturaya taşınması gerekir. Bu rehberde Logo'nun önerdiği çözüm adımlarını, dikkat edilmesi gereken noktalarla birlikte anlatıyoruz.
Sorun Neden Oluşuyor?
Mali dönem bağımlı firmalarda her mali dönemin hareketleri ayrı tablolarda tutulur (ör. 2025 için LG_001_01_INVOICE, 2026 için LG_001_02_INVOICE). Yeni dönemde kesilen iade faturası ile önceki dönemin tablosundaki satınalma faturası arasında doğrudan bağ kurulamadığı için kaynak fatura numarası ve tarihinin e-Faturaya ayrıca taşınması gerekir.
Çözümün mantığı şudur: Kaynak fatura bilgisi iade faturasına tanımlı alanlar aracılığıyla elle girilir, e-Fatura gönderilirken çalışan bir script kural bu bilgileri okuyup e-Faturanın iade bilgisi alanlarına yazar.
1. Adım: Fatura Satırı İçin Tanımlı Alanları Ekleyin
- Sistem İşletmeni'ni açın.
- Kuruluş Bilgileri → Tanımlı Alanlar altında Fatura'yı seçin.
- Açılan pencerede Kayıt sütunu Satır olan boş bir satıra Kaynak Belge No adında, türü Metin olan bir alan ekleyin.
- Bir alttaki satıra Kaynak Fatura Tarihi adında, türü yine Metin olan ikinci alanı ekleyin.
- Firma sütununa bu alanları kullanacak firma numarasını yazın ve Kaydet'e tıklayın.
Tanımlı alanlar veritabanında nerede tutulur?
Fatura satırı tanımlı alanlarının değerleri LG_001_01_DEFNFLDSTRANV tablosuna yazılır. Metin türündeki alanlar TEXTFLDS1, TEXTFLDS2… sütunlarında tutulur. Logo'nun örneğinde, daha önce tanımlanmış bir metin alanı TEXTFLDS1'i kullandığı için yeni eklenen Kaynak Belge No TEXTFLDS2'ye, Kaynak Fatura Tarihi ise TEXTFLDS3'e karşılık gelir.
Sizin kurulumunuzda hangi sütunun kullanıldığını kesinleştirmek için bir test iade faturası girip şu sorguyla kontrol edin:
SELECT TOP 10 OWNERREF, TEXTFLDS1, TEXTFLDS2, TEXTFLDS3, TEXTFLDS4
FROM LG_001_01_DEFNFLDSTRANV
ORDER BY LOGICALREF DESCGirdiğiniz belge numarası ve tarihin hangi TEXTFLDS sütununda göründüğünü not edin; 2. adımdaki script'te bu sütun adlarını kullanacaksınız.
2. Adım: Script Kuralını Tanımlayın
- e-Devlet → Tanımlamalar → Kurallar menüsünü açın ve yeni bir Script Kural ekleyin.
- Açıklama alanına anlaşılır bir ad yazın (ör. e-Fatura İade).
- Doküman olarak e-Fatura (Giden), Olay olarak Gönderildiğinde seçin ve Statüsü'nü Aktif yapın.
- Script bölümüne aşağıdaki kodu yapıştırın ve kendi bilgilerinize göre düzenleyin.
Sub ProcessEvent(App)
' --- SQL Server bağlantı bilgileri (kendi bilgilerinizle değiştirin) ---
strDBUser = "kullanici_adi"
strDBPass = "sifre"
strDBServer = "SUNUCU\SQLEXPRESS"
strDBName = "LOGODB"
Set conn = CreateObject("ADODB.Connection")
conn.ConnectionString = "Provider=SQLOLEDB.1;Persist Security Info=False;User ID=" & strDBUser & ";Password=" & strDBPass & ";Initial Catalog=" & strDBName & ";Data Source=" & strDBServer
conn.Open
Set rs = CreateObject("ADODB.Recordset")
rOk = App.Doc.FirstRoot
While rOk
ok1 = App.Doc.FirstChild("TRANSACTIONS.TRANSACTION")
While ok1
strInvoiceRef = CStr(App.Doc.FieldAsInteger("DATA_REFERENCE"))
' Tablo adındaki firma (001) ve dönem (01) numarasını,
' TEXTFLDS sütunlarını 1. adımda tespit ettiğiniz alanlarla değiştirin.
' İlk sütun: Kaynak Fatura Tarihi, ikinci sütun: Kaynak Belge No
strQuery = "SELECT TEXTFLDS3, TEXTFLDS2 FROM LG_001_01_DEFNFLDSTRANV WHERE OWNERREF = " & strInvoiceRef
rs.Open strQuery, conn
If Not rs.EOF Then
App.Doc.ModifyData "RETURN_DATE", rs.Fields(0).Value
App.Doc.ModifyData "RETURN_DOCNO", rs.Fields(1).Value
End If
rs.Close
ok1 = App.Doc.NextChild
Wend
rOk = App.Doc.NextRoot
Wend
conn.Close
Set rs = Nothing
Set conn = Nothing
App.Doc.SaveData
End SubScript'te değiştirmeniz gereken yerler:
| Değiştirilecek | Açıklama |
|---|---|
strDBUser, strDBPass | SQL Server kullanıcı adı ve şifresi |
strDBServer | SQL Server adı (ör. SUNUCU\SQLEXPRESS) |
strDBName | Logo veritabanının adı |
LG_001_01_ | Kendi firma ve dönem numaranız |
TEXTFLDS3, TEXTFLDS2 | 1. adımda tespit ettiğiniz tarih ve belge no sütunları |
Salt okunur SQL kullanıcısının nasıl açılacağını Excel rehberimizde adım adım anlattık:
3. Adım: Kural Kullanımını Açın
e-Devlet → Parametreler → Genel Parametreler altında Kural Kullan seçeneğini işaretleyin. Bu seçenek kapalıysa tanımladığınız kural çalışmaz.
4. Adım: İade Faturasında Kaynak Bilgileri Girin
- Satınalma iade faturasını her zamanki gibi oluşturun ve malzeme satırlarını girin.
- Fatura satırındayken F9 menüsünden Tanımlı Alanlar'ı açın.
- Kaynak Belge No alanına iade edilen satınalma faturasının numarasını, Kaynak Fatura Tarihi alanına tarihini yazın (ör.
03.02.2025). - Kaydet'e tıklayın ve faturayı kaydedin.
5. Adım: e-Faturayı Gönderin
İade faturasını e-Fatura olarak gönderdiğinizde kural otomatik çalışır; tanımlı alanlara girdiğiniz kaynak fatura numarası ve tarihi e-Faturanın iade bilgisi alanlarına aktarılır.
Tarih Alanını Tarih Türünde Eklediyseniz
Kaynak fatura tarihi alanını Tarih türünde eklediyseniz değer NUMFLDS sütunlarına sayısal olarak yazılır. Bu durumda:
- Logo'nun
LG_INTTODATESQL fonksiyonunu veritabanınıza kurmanız gerekir (kurulum betiği için Logo iş ortağınıza başvurun). - Script'teki sorguyu tarih sayısal alandan dönüştürülerek okunacak şekilde değiştirin. Logo'nun örneğinde bu satır şöyledir:
SELECT [dbo].[LG_INTTODATE](NUMFLDS2), TEXTFLDS1 FROM LG_005_03_DEFNFLDSTRANV WHERE OWNERREF =Bu ek adımlarla uğraşmamak için tarih alanını baştan Metin türünde tanımlamanızı öneririz.
Sık Sorulan Sorular
Bu adımlar kimler için gerekli?
2.99.00.00 veya daha yeni bir sürüm kullanıyorsanız bu adımlara gerek yoktur. Eski sürümde kalıp IADE veya TEVKIFATIADE e-Faturası kesen, özellikle önceki mali döneme ait faturalara iade düzenleyen firmalar bu yöntemi kullanabilir.
Kural çalışmıyor, ne kontrol etmeliyim?
- Genel Parametreler'de Kural Kullan işaretli mi?
- Kuralın Statüsü Aktif, Doküman e-Fatura (Giden), Olay Gönderildiğinde mi?
- Script'teki SQL bağlantı bilgileri, firma ve dönem numarası doğru mu?
TEXTFLDSsütun numaraları, 1. adımdaki kontrol sorgusunda gördüklerinizle aynı mı?
TEVKIFATIADE faturalarında da geçerli mi?
Evet. 28.03.2025 tarihli düzenlemeyle zorunluluk hem IADE hem TEVKIFATIADE tipindeki e-Faturalar için getirilmiştir.
Bu rehber Logo'nun resmî destek dokümanındaki çözüm adımlarına dayanmaktadır. e-Fatura iade süreçleri, sürüm güncellemesi veya script kural kurulumu için Logo iş ortağı olarak ekibimiz destek verebilir.