E-Fatura önizleme nasıl yapabilirim ?

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
mmg
Üye
Mesajlar: 120
Kayıt: 20 Haz 2014 12:47

E-Fatura önizleme nasıl yapabilirim ?

Mesaj gönderen mmg »

Merhaba,

E-fatura oluşturup web servisleri kullanarak entegratör üzerinden GIB'e gönderme işlemini yapıyorum. Fakat kullanıcılar satış faturasını oluşturduktan sonra GIB'e göndermeden önce ubl (xml) dosyasını oluşturduktan sonra kontrol amaçlı yazılım üzerinde önizleme yapmak istiyorlar. Bunu yapan başka uygulamalar var görüyorum. Nasıl yapılabileceğiyle ilgili araştırma yaptım fakat açıkçası çok net bir bilgiye ulaşamadım. Ubl (xml) datayı nasıl önizleme yapabilirim ? Bu konuda tecrübesi olan arkadaşlar yardımcı olabilirlerse çok sevinirim. Şimdiden çok teşekkür ediyorum.
mkysoft
Kıdemli Üye
Mesajlar: 3103
Kayıt: 26 Ağu 2003 12:35
Konum: Berlin
İletişim:

Re: E-Fatura önizleme nasıl yapabilirim ?

Mesaj gönderen mkysoft »

En kolay tarayiciyi kullanarak yaparsiniz. e-fatura icinde ek olarak xslt dilinde hazirlanmis gorsel bulunur. tarayicilar xslt dilini destekler. ubl icine gorseli siz mi koyuyorsunuz bilmiyorum. koymuyorsaniz bile entegratordeki bir ubl icinden gorsel ekini alabilirsiniz.sonrasinda bunu tarayicida cagirmaniz yeterli olacaktir.
Fatura xml'inin ilk satirindan sonra fatura gorsel dosyasinin adini belirtmeniz gerekir.

Kod: Tümünü seç

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl "href="Gorsel.xslt" ?>
mmg
Üye
Mesajlar: 120
Kayıt: 20 Haz 2014 12:47

Re: E-Fatura önizleme nasıl yapabilirim ?

Mesaj gönderen mmg »

mkysoft merhaba,

Öncelikle cevabınız için çok teşekkür ediyorum. Dediğiniz gibi yaptım 1 tane xslt şablonunu xml datanın olduğu klasöre attım. Sonra dediğiniz
satırı ilk satırın altına ekledim fakat xml datayı tarayıcı ile açtığımda hala aşağıda görüldüğü şekilde geliyor önizleme gelmiyor. Yalnız tarayıcı nedenini anlayamadığım bir hata veriyor "This XML file does not appear to have any style information associated with it. The document tree is shown below". Aşağıda xml datanın üst kısmını ve tarayıcıda açılan halini paylaşıyorum.

XML Data

Kod: Tümünü seç

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl "href="Default.xslt" ?>
<Invoice xsi:schemaLocation="urn:oasis:names:specification:ubl:schema:xsd:Invoice-2 UBL-Invoice-2.1.xsd" xmlns="urn:oasis:names:specification:ubl:schema:xsd:Invoice-2" xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2" xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2" xmlns:ccts="urn:un:unece:uncefact:documentation:2" xmlns:ext="urn:oasis:names:specification:ubl:schema:xsd:CommonExtensionComponents-2" xmlns:sbc="urn:oasis:names:specification:ubl:schema:xsd:SignatureBasicComponents-2" xmlns:sac="urn:oasis:names:specification:ubl:schema:xsd:SignatureAggregateComponents-2" xmlns:qdt="urn:oasis:names:specification:ubl:schema:xsd:QualifiedDataTypes-2" xmlns:ubltr="urn:oasis:names:specification:ubl:schema:xsd:TurkishCustomizationExtensionComponents" xmlns:udt="urn:oasis:names:specification:ubl:schema:xsd:UnqualifiedDataTypes-2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xades="http://uri.etsi.org/01903/v1.3.2#" xmlns:n0="urn:oasis:names:specification:ubl:schema:xsd:CommonSignatureComponents-2" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:ccts-cct="urn:un:unece:uncefact:data:specification:CoreComponentTypeSchemaModule:2">
	<ext:UBLExtensions>
		<ext:UBLExtension>
			<ext:ExtensionContent></ext:ExtensionContent>
		</ext:UBLExtension>
	</ext:UBLExtensions>
	<cbc:UBLVersionID>2.1</cbc:UBLVersionID>
	<cbc:CustomizationID>TR1.2</cbc:CustomizationID>
	<cbc:ProfileID>TICARIFATURA</cbc:ProfileID>
Tarayıcıda açılmış hali

Kod: Tümünü seç

This XML file does not appear to have any style information associated with it. The document tree is shown below.

<?xml-stylesheet type="text/xsl "href="Default.xslt" ?>
<Invoice xmlns="urn:oasis:names:specification:ubl:schema:xsd:Invoice-2" xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2" xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2" xmlns:ccts="urn:un:unece:uncefact:documentation:2" xmlns:ext="urn:oasis:names:specification:ubl:schema:xsd:CommonExtensionComponents-2" xmlns:sbc="urn:oasis:names:specification:ubl:schema:xsd:SignatureBasicComponents-2" xmlns:sac="urn:oasis:names:specification:ubl:schema:xsd:SignatureAggregateComponents-2" xmlns:qdt="urn:oasis:names:specification:ubl:schema:xsd:QualifiedDataTypes-2" xmlns:ubltr="urn:oasis:names:specification:ubl:schema:xsd:TurkishCustomizationExtensionComponents" xmlns:udt="urn:oasis:names:specification:ubl:schema:xsd:UnqualifiedDataTypes-2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xades="http://uri.etsi.org/01903/v1.3.2#" xmlns:n0="urn:oasis:names:specification:ubl:schema:xsd:CommonSignatureComponents-2" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:ccts-cct="urn:un:unece:uncefact:data:specification:CoreComponentTypeSchemaModule:2" xsi:schemaLocation="urn:oasis:names:specification:ubl:schema:xsd:Invoice-2 UBL-Invoice-2.1.xsd">
<ext:UBLExtensions>
<ext:UBLExtension>
<ext:ExtensionContent/>
</ext:UBLExtension>
</ext:UBLExtensions>
<cbc:UBLVersionID>2.1</cbc:UBLVersionID>
<cbc:CustomizationID>TR1.2</cbc:CustomizationID>
<cbc:ProfileID>TICARIFATURA</cbc:ProfileID>
mkysoft
Kıdemli Üye
Mesajlar: 3103
Kayıt: 26 Ağu 2003 12:35
Konum: Berlin
İletişim:

Re: E-Fatura önizleme nasıl yapabilirim ?

Mesaj gönderen mkysoft »

Selam,
copy-paste yaparkern hata olmus, ek bosluk olmus.

<?xml-stylesheet type="text/xsl" href="Default.xslt" ?>

Bu arada chrome'da deniyorsunuz local dosyayi guvenlik nedeniyle yuklemiyor, tarayici consolundan gorebilirsiniz guvenlik uyarisini. Diger tarayicilar ile deneyebilirsiniz.

Full ornek.
xml

Kod: Tümünü seç

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="test.xslt" ?>
<catalog>
  <cd>
    <title>Empire Burlesque</title>
    <artist>Bob Dylan</artist>
    <country>USA</country>
    <company>Columbia</company>
    <price>10.90</price>
    <year>1985</year>
  </cd>
</catalog>
xslt

Kod: Tümünü seç

<?xml version="1.0" encoding="UTF-8"?>

<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:template match="/">
  <html>
  <body>
  <h2>My CD Collection</h2>
  <table border="1">
    <tr bgcolor="#9acd32">
      <th>Title</th>
      <th>Artist</th>
    </tr>
    <xsl:for-each select="catalog/cd">
    <tr>
      <td><xsl:value-of select="title"/></td>
      <td><xsl:value-of select="artist"/></td>
    </tr>
    </xsl:for-each>
  </table>
  </body>
  </html>
</xsl:template>

</xsl:stylesheet>
mmg
Üye
Mesajlar: 120
Kayıt: 20 Haz 2014 12:47

Re: E-Fatura önizleme nasıl yapabilirim ?

Mesaj gönderen mmg »

Selam,

Dediğiniz gibi boşluktan dolayı hata veriyormuş, boşluğu kaldırınca hata vermedi. Yöntemi anladım öncelikle yardımlarınız için çok teşekkür ediyorum. Yalnız ben chrome kullanmıyorum microsoft edge'de açıyorum xml datayı fakat sayfa boş geldi. Bunun üzerine Ayarlar-->Varsayılan Tarayıcılar--> Sitelerin internet explorer modunda yeniden yüklenmesine izin ver seçeneğine "İzin ver" seçerek sayfayı görüntüleyebiliyorum. Edge ile doğrudan görüntüleme yapmayı başaramadım. Bu seçeneği işaretleyince siteyi (efatura adresini) kaydediyor ve bir sonraki seferde otomatik açıyor ama her seferinde efatura datası değiştiği için bu durumda faturayı görüntüleyebilmek için her seferinde her data için bu ayarı yapmak gerekiyor. Bir yerde bir yanlışlık var sanırım veya edgede bir ayar yapılması gerekiyor ama bulamadım. Umarım bununda bir çözümü vardır, eğer bu sorunda kalkarsa işimiz çözülmüş olacak.
ertank
Kıdemli Üye
Mesajlar: 1650
Kayıt: 12 Eyl 2015 12:45

Re: E-Fatura önizleme nasıl yapabilirim ?

Mesaj gönderen ertank »

Merhaba,

EDGE artık Chromium tabanlı. Internet Explorer artık geliştirilmiyor.

Tavsiye edilen yöntem aslen Internet Explorer ile çalışır. Ancak Chromium tabanlı uygulamalar için günümüzde XML + XSLT -> HTML dönüşümü yaparak browser üzerinde HTML dosyayı göstermeniz gerekiyor. Aşağıdaki bağlantıda bunu nasıl yapabileceğinize dair örnek bulabilirsiniz. Kabul edilmiş cevabı incelemeniz yeterli.

https://stackoverflow.com/questions/540 ... ng-an-xslt
mkysoft
Kıdemli Üye
Mesajlar: 3103
Kayıt: 26 Ağu 2003 12:35
Konum: Berlin
İletişim:

Re: E-Fatura önizleme nasıl yapabilirim ?

Mesaj gönderen mkysoft »

@ertank'nin paylastigi sekilde html donusumunu siz yaparak tarayicida gosterebilirsiniz. Paylasilan link gordugum kadariyla msxml engine'i kullaniyor. Ne kadar guncel bilmiyorum ama bu fatura tasarimini yapanlar genelde tarayici uzerinde deneme yaparak gelisitiyor ve genelde hatalarla dolu. Bu nedenle kullanilan ceviriciden ceviriciye farkliliklar olabiliyor. Ya da surekli ayni dosya adini gosterebilirsiniz. Chrome ile sanki command line'da hatayi yok sayarak acmanin bir yolu vardi: https://stackoverflow.com/questions/382 ... local-file
mmg
Üye
Mesajlar: 120
Kayıt: 20 Haz 2014 12:47

Re: E-Fatura önizleme nasıl yapabilirim ?

Mesaj gönderen mmg »

ertank yazdı: 02 Şub 2023 04:30 Merhaba,

EDGE artık Chromium tabanlı. Internet Explorer artık geliştirilmiyor.

Tavsiye edilen yöntem aslen Internet Explorer ile çalışır. Ancak Chromium tabanlı uygulamalar için günümüzde XML + XSLT -> HTML dönüşümü yaparak browser üzerinde HTML dosyayı göstermeniz gerekiyor. Aşağıdaki bağlantıda bunu nasıl yapabileceğinize dair örnek bulabilirsiniz. Kabul edilmiş cevabı incelemeniz yeterli.

https://stackoverflow.com/questions/540 ... ng-an-xslt
Merhaba,

Belirttiğiniz kodu inceledim ve uyguladım fakat çalıştıramadım. mkysoft'un örnek olarak verdiği ve explorer ile açılan Test.xml ve Test.xslt kullandım. E_FATURAGOSTER düğmesine bastığımda aşağıda ki hatayı veriyor.
  • "Stil sayfası bir belge öğesi içermiyor. Stil sayfası boş olabilir veya düzgün biçimli bir XML belgesi olmayabilir."

Kod: Tümünü seç

uses
  msxml;

function Transform(const AXMLContent : string; const AXSLContent : string) : string;
var
  XML : IXMLDOMDocument;
  XSL : IXMLDOMDocument;
begin
  XML := CoDOMDocument.Create;
  XML.loadXML(AXMLContent);

  XSL := CoDOMDocument.Create;
  XSL.loadXML(AXSLContent);

  Result := XML.TransformNode(XSL);
end;

Kod: Tümünü seç

procedure LoadHTMLCode(AWebBrowser : TWebBrowser; const AHTMLCode: string);
var
  Doc: Variant;
begin
  if not Assigned(AWebBrowser.Document) then
    AWebBrowser.Navigate('about:blank');

  Doc := AWebBrowser.Document;
  Doc.Clear;
  Doc.Write(AHTMLCode);
  Doc.Close;
end;

Kod: Tümünü seç

procedure TAnaForm.E_FATURAGOSTERClick(Sender: TObject);
var
  XMLContent : string;
  XLSContent : string;
  HTMLCode : string;
begin
  //loading XML content
  XMLContent := 'C:\E-FATURA\Onizleme\Test.xml';

  //loading XLS content
  XLSContent := 'C:\E-FATURA\Onizleme\Test.xslt';

  //transforming
  HTMLCode := Transform(XMLContent, XLSContent);

  //displaying
  LoadHTMLCode(WebBrowser1, HTMLCode);

end;
XML DATA

Kod: Tümünü seç

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="test.xslt"?>
<catalog>
  <cd>
    <title>Empire Burlesque</title>
    <artist>Bob Dylan</artist>
    <country>USA</country>
    <company>Columbia</company>
    <price>10.90</price>
    <year>1985</year>
  </cd>
</catalog>
XSLT

Kod: Tümünü seç

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
  <html>
  <body>
  <h2>My CD Collection</h2>
  <table border="1">
    <tr bgcolor="#9acd32">
      <th>Title</th>
      <th>Artist</th>
    </tr>
    <xsl:for-each select="catalog/cd">
    <tr>
      <td><xsl:value-of select="title"/></td>
      <td><xsl:value-of select="artist"/></td>
    </tr>
    </xsl:for-each>
  </table>
  </body>
  </html>
</xsl:template>
</xsl:stylesheet>
ertank
Kıdemli Üye
Mesajlar: 1650
Kayıt: 12 Eyl 2015 12:45

Re: E-Fatura önizleme nasıl yapabilirim ?

Mesaj gönderen ertank »

Aşağıdaki kodunuz hatalı

Kod: Tümünü seç

  //loading XML content
  XMLContent :=  'C:\E-FATURA\Onizleme\Test.xml';
Fonksiyona XML verisini göndermeniz gerekir iken siz dosya adı gönderiyorsunuz. Aşağıdaki şekilde kodunuzu değiştirerek yeniden deneyin.

Kod: Tümünü seç

  XMLContent := TFile.ReadAllText( 'C:\E-FATURA\Onizleme\Test.xml', TEncoding.UTF8);
  XLSContent := TFile.ReadAllText( 'C:\E-FATURA\Onizleme\Test.xslt', TEncoding.UTF8);
  ...
mmg
Üye
Mesajlar: 120
Kayıt: 20 Haz 2014 12:47

Re: E-Fatura önizleme nasıl yapabilirim ?

Mesaj gönderen mmg »

ertank, Allah razı olsun, çok teşekkür ediyorum gerçekten çok büyük bir problemim çözüldü. Dediğiniz gibi kodu değiştirince mükemmel çalıştı. mkysoft sizede çok teşekkür ediyorum, emeğiniz için Allah razı olsun.
medmaster
Üye
Mesajlar: 1
Kayıt: 14 Kas 2023 04:08

Re: E-Fatura önizleme nasıl yapabilirim ?

Mesaj gönderen medmaster »

Uzun zamandır aradığım cevabı burda buldum sonunda, emeğinize sağlık..
Cevapla