DİA E-Fatura Tasarım Değişikliği: Kapsamlı XSLT Rehberi
DİA e-Fatura XSLT tasarımlarında firma bilgisi, logo, kaşe-imza, banka, kolon, seri-lot, iskonto, adres ve alt toplam düzenlemelerini 92 ekran görüntüsüyle inceleyin.
Tüm içeriklere dönDİA e-Fatura ve e-Arşiv tasarımları XSLT yapısındadır. Firma bilgileri, logo, kaşe-imza, banka alanları, ürün kolonları, seri-lot, iskonto, adres ve alt toplam gibi bölümler uygun bir kod düzenleyiciyle değiştirilebilir. Bu kapsamlı rehber, kaynak dokümandaki bütün işlem başlıklarını ve 92 ekran görüntüsünü bir araya getirir.
Önemli: XSLT dosyanızın değişiklik öncesi yedeğini alın. Etiketlerin eksik kapatılması tasarımın çalışmamasına neden olabilir. Düzenleme için Atom, Visual Studio Code veya Notepad++ gibi bir kod düzenleyici kullanabilirsiniz.
1. Firma genel bilgileri
Unvan, vergi numarası, adres, telefon, internet sitesi, e-posta ve faks gibi alanlar DİA firma kartından gelir. Bu bilgiler değiştiğinde önce Firmalar ekranındaki ilgili firma kartını güncelleyin; tasarım, güncel kart bilgilerini kullanacaktır.

MERSİS ve ticaret sicil numarası
XSLT dosyasında Ctrl+F ile “mersis” veya “sicil” ifadelerini arayın. İlgili sabit metnin yanındaki değeri şirket bilgilerinizle değiştirip dosyayı kaydedin.




2. Firma logosunu değiştirme
Logoyu JPG veya PNG biçiminde hazırlayın; genişliğin yaklaşık 260 pikseli aşmaması önerilir. Görseli Base64 biçimine dönüştürdükten sonra XSLT içinde img araması yapın. İlk görsel DİA/e-Fatura logosu olduğundan değiştirilmemeli; firma logosuna ait ikinci img etiketindeki src değeri yeni Base64 verisiyle değiştirilmelidir.





Kaşe ve imza görseli ekleme
Kaşe-imza görselini yaklaşık 150–200 piksel ölçüsünde hazırlayıp Base64 değerine dönüştürün. Tasarımda uygun tablo satırına bir hücre ve görsel etiketi ekleyin:
<td width="25%">
<img style="margin-top:20px" align="middle"
alt="Firma İmzası" src="BASE64_DEĞERİ"/>
</td>




3. Banka bilgileri
XSLT içinde “banka” ifadesini arayın. Üst bölümde banka alanlarının başlıkları, alt bölümde bunların değerleri bulunur. Kullanılmayacak bir alan <td></td> olarak boş bırakılabilir. Mevcut bilgiyi değiştirmek için değer satırını düzenleyin; yeni hesap adı, IBAN, şube kodu, şube adı veya hesap numarası için hem başlık hem karşılık hücresi ekleyin. Silme işleminde iki bölümdeki ilgili hücreleri birlikte kaldırın.












4. Fatura satır kolonları
Kolon ekleme
Önce BAŞLIKLAR bölümüne kolon başlığını, sonra SATIR DEĞERLERİ bölümünde aynı sıraya veriyi getirecek hücreyi ekleyin. Örnek açıklama kolonu:
<td id="lineTableTd" style="width:18%" align="center">
<span style="font-weight:bold;"><xsl:text>Açıklama</xsl:text></span>
</td>
<td id="lineTableTd">
<xsl:value-of select="./cac:Item/cbc:BrandName"/>
</td>
efa.02.01–efa.02.07 sistem parametrelerinde tanımlanan değerler de fatura kalemlerine taşınabilir.
Kolon silme, genişlik ve ondalık hassasiyet
Kolon silerken hem başlık hücresini hem satır değerini kaldırın. Kolon genişliği width yüzdesiyle ayarlanır. Birim fiyat ve miktar hane sayısı, format-number deseninde virgülden sonraki sıfırlar artırılıp azaltılarak değiştirilir.
<xsl:value-of select="format-number(./cac:Price/cbc:PriceAmount, '###.##0,0000', 'european')"/>
<xsl:value-of select="format-number(./cbc:InvoicedQuantity, '###.##0,000', 'european')"/>



















5. Seri, lot, varyant ve ürün bilgileri
Seri ve lot numaraları ItemInstance içinden; varyant değeri AdditionalItemProperty içinden okunur. İlgili satır hücresine aşağıdaki yollar eklenebilir:
<xsl:for-each select="./cac:Item/cac:ItemInstance/cbc:SerialID">
<xsl:value-of select="."/><br/>
</xsl:for-each>
<xsl:for-each select="./cac:Item/cac:ItemInstance/cac:LotIdentification/cbc:LotNumberID">
<xsl:value-of select="."/><br/>
</xsl:for-each>
<xsl:for-each select="./cac:Item/cac:ItemInstance/cac:AdditionalItemProperty[cbc:ID='Varyant']/cbc:Value">
<xsl:value-of select="."/>
</xsl:for-each>
GTİP, menşei ve son birim fiyat
Başlık hücresi oluşturulduktan sonra GTİP için CommodityClassification/ItemClassificationCode, menşei için OriginCountry/Name kullanılır. Son birim fiyat veya benzeri özel değerler, fatura notlarındaki belirleyici ön eklerden okunabilir.
<xsl:value-of select="./cac:Item/cac:CommodityClassification/cbc:ItemClassificationCode"/>
<xsl:value-of select="./cac:Item/cac:OriginCountry/cbc:Name"/>
İskonto kolonları
İskonto-1’den İskonto-5’e kadar her değer için başlık ve satır hücresi eklenir. Sistem parametresi/not içindeki iskor1, iskor2 gibi ön ekler starts-with ile bulunup substring ile görüntülenir.


















6. Alt toplam, kalem notları ve özel tutarlar
Dövizli tasarımda alt toplamlardaki TL değerleri
Önce efa.01.07 “Dövizli olarak e-Fatura oluşturulsun mu?” parametresini etkinleştirin. Ardından XSLT alt toplam bölümünde TL karşılıklarını oluşturan satırları bulun ve yalnızca kaldırmak istediğiniz alanları silin.



Fatura kalemi not bilgileri
efa.02.08–efa.02.13 parametrelerinden birine not1:[note] veya not2:[note2] ekleyin. Tasarımda ilgili kolonları açtıktan sonra notları ön eklerine göre okuyun:
<xsl:for-each select="./cbc:Note">
<xsl:if test="starts-with(., 'not1:')">
<xsl:value-of select="substring(., 6)"/>
</xsl:if>
</xsl:for-each>



İndirimsiz mal/hizmet tutarı
Kalem iskontosu uygulandığında indirimsiz tutarı göstermek için parametreye ttr:[tutari] ekleyin. SATIR DEĞERLERİ bölümündeki mevcut LineExtensionAmount hücresi yerine ttr: notunu okuyan hücreyi kullanın.


Sipariş fiş numarası
Parametre değerine sipfisno:[siparisfisno] ekleyin. BAŞLIKLAR bölümünde “Sipariş Fiş No” kolonu açın; satır değerinde sipfisno: ön ekli notu okuyun.



7. Adres ve cari açıklama alanları
Cari karttaki fatura adresi ile belgedeki sevk adresini birlikte göstermek için efa.01.12 değerini “Cari Ana Adresi” olarak ayarlayın. Firma unvanı bloğunun altına AccountingCustomerParty içindeki AgentParty/PostalAddress ve PostalAddress yollarını kullanan iki adres satırı ekleyin.


Cari kısa açıklaması
efa.01.01–efa.01.06 parametrelerinden birine kisa:[carikisaaciklama] ekleyin. XSLT’de kisa: ile başlayan notu okuyarak uygun satırda gösterin.
<xsl:for-each select="./cbc:Note">
<xsl:if test="starts-with(., 'kisa:')">
<xsl:value-of select="substring(., 6)"/>
</xsl:if>
</xsl:for-each>



Not alanındaki istenmeyen değerleri gizleme
Parametre notları başka bir alana taşındıysa footer/not bölümünde tekrar görünmesini engellemek için dışlanacak ön ekleri koşula ekleyin:
<xsl:for-each select="//n1:Invoice/cbc:Note">
<xsl:if test="not(starts-with(., 'deger1') or starts-with(., 'deger2'))">
<xsl:value-of select="."/><br/>
</xsl:if>
</xsl:for-each>
8. Ara toplam ve konaklama vergisi
Mal/hizmet toplamından iskonto toplamını düşen bir “Ara Toplam” satırı, toplam iskonto satırının kapanışından sonra eklenebilir. Dövizli belgelerde para birimi koşulu ayrıca korunmalıdır.



Konaklama vergisi alt toplamlarının düzenlenmesi
Mevcut tasarımı XML olarak kaydedip XSLT dosyasını açın. “Hesaplanan Toplam” bloğunu bulun, başlığı “Hesaplanan Toplam KDV” olarak değiştirin, kaynak dokümanda gösterilen eski satırları kaldırın ve vergi türü 0015 dışındaki vergileri hesaplayan yeni döngüyü ekleyin. Dosya kaydedildikten sonra tekrar DİA’ya yüklenebilir.





9. Stokların diğer birimini ekleme
Kalemlerde stok kartının ikinci birim adı ve miktarı gösterilebilir. Önce “Miktar2” başlığını ekleyin; ardından Miktar1: ve Birim1: ön ekli notları okuyacak satır hücresini oluşturun.
<td id="lineTableTd" align="right">
<xsl:for-each select="./cbc:Note">
<xsl:if test="starts-with(., 'Miktar1:')">
<xsl:value-of select="substring(., 10, string-length(.) - 12)"/>
</xsl:if>
</xsl:for-each>
<xsl:text> </xsl:text>
<xsl:for-each select="./cbc:Note">
<xsl:if test="starts-with(., 'Birim1:')">
<xsl:value-of select="substring(., 9)"/>
</xsl:if>
</xsl:for-each>
</td>





Kaynak ve teknik referans: DİA Akademi – E-Fatura Tasarım Değişikliği
Sorularınız için bize ulaşın
DİA kullanımı, eğitim ve destek ihtiyaçlarınız için ekibimizle doğrudan iletişime geçebilirsiniz.

