Konuyu Paylaş : facebook gplus twitter

Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
E fatura okuma hakkında
#1
Kendi kullandığımız Go3 Ticari programına muhtelif firmalardan gelen E faturaları aktarmak istiyorum.
E faturaları grid' de memo da veya başka bir bileşende nasıl gösterebilirim.
İmza kısmı ile ilgilenmiyorum e faturadan 
fatura trh, no , cari bilgiler, stok bilgileri fiyatlar gibi bilgileri almak istiyorum.


Delphican, Delhiturkiye  ve google 
Delphi  E fatura okuma ve Delphi XML okuma şeklinde arattım

Delphi E fatura okuma ile ilgili yazı örnek bulamadım tamamına yakını oluşturma imzalama ve iletme ile alakalı

Okuma ile ilgili soru çok cevap bulamadım.

Delphi XML okuma ile ilgili örnek çok bu örnekler ile E fatura okunamıyor.
"…De ki: "Hiç bilenlerle bilmeyenler bir olur mu? Şüphesiz, temiz akıl sahipleri öğüt alıp-düşünürler" (Zümer Suresi, 9)
Cevapla
#2
xml'i IXMLDocument ile açıp gerekli değerleri okuyabilirsin,

Örneğin :
var
  D : IXMLDocument;
  Node : IXMLNode;
begin
  D:= LoadXMLDocument('xyzgelenfatura.xml');
  Node  := D.DocumentElement;
  Node.ChildNodes.FindNode('AccountingSupplierParty').Text; // Müşteri
Cevapla
#3
Sayın emrahg Cevabınız için teşekkür ederim 

Yeni proje oluşturdum.
forma 
 Button ve  XMLDocument  
ekledin onclick olayına
procedure TForm1.Button1Click(Sender: TObject);
var
 D : IXMLDocument;
 Node : IXMLNode;
begin
 D:= LoadXMLDocument('C:\Users\CASPER17\Desktop\yazilim\test\KAE2017000025694.xml');
 Node  := D.DocumentElement;
 Node.ChildNodes.FindNode('AccountingSupplierParty').Text; // Müşteri

end;
  

yazdım çalıştırdığımda resimdeki hata Access Violation hatası veriyor. 

Birden fazla firmadan gelen fatura örneği ile denendi sonuç aynı


Ek Dosyalar Resimler
   
"…De ki: "Hiç bilenlerle bilmeyenler bir olur mu? Şüphesiz, temiz akıl sahipleri öğüt alıp-düşünürler" (Zümer Suresi, 9)
Cevapla
#4
Merhaba,

üstteki örneğe binaen UBL 2.1 standartlarındaki AccountingSupplierParty node'unun ana verisine erişmek için alacağınız field;

item.Invoice.AccountingSupplierParty.Party.PartyName.Name.Value;

InvoiceType > AccountingSupplierPartyType > PartyType > PartyNameType > NameType > Value(String)

Bence önce tam olarak XML dosyayı okuyup HTML verisi olarak Memo alanda listelemeniz. Daha sonra node ve level parçalamaları yaparak ham verileri toplayacağınız kod bloklarını yazarsınız. Veya ComplexType denilen özel tipleri oluşturarak WSDL standartındaki bir XML gibi davranıp nesneden dönen değeri doğrudan muadil bir nesneye aktararak işlem yapabilirsiniz. Hangi entegratör ile çalışıyorsunuz?
{ talk is cheap show me the code. }
Cevapla
#5
Abdullah bey cevabınız için teşekkür ederim.

Ben e-fatura veya e-Arşiv fatura kullanmıyorum.
Herhangi bir enteğratör ile çalışmıyoruz.

İlk mesajımda belirtiğim gibi bana gelen e-arşiv faturaları kullanmakta olduğumuz ticari programın fatura bölümüne aktarmak
istiyorum. Xml formatında farklı firmalardan gelen faturaları delphi de herhangi bir bileşene atarak 
görüntülemek şu an işimi görecektir.

Hayırlı akşamlar.
"…De ki: "Hiç bilenlerle bilmeyenler bir olur mu? Şüphesiz, temiz akıl sahipleri öğüt alıp-düşünürler" (Zümer Suresi, 9)
Cevapla
#6
Merhaba,

Aslında kod ilerlemesi olarak doğru yönde ilerlemişsiniz. Tek sıkıntı node olarak bulduğunuz AccountingSupplierParty (fatura gönderici bilgileri ana nesnesi)'nin içindeki diğer kırılımları da gezmeniz gerektiği.

Yani önce AccountingSupplierParty'yi node olarak bulun ve değişkene atayın. Daha sonra onun içinde yukarıdaki cevapta yazdığım değişkeni bulun. Sırayla en alt nesneye kadar ilerleyin. Sonra Value erişimi yapabilirsiniz. Bir deneyin eğer olmazsa buraya yazın ben akşam deneyip size demo proje atayım.

İyi günler
{ talk is cheap show me the code. }
Cevapla
#7
Selam,
Aşağıdaki kod, xml dosyasındaki node lar, text elementler nelerdir onları tek tek dökecektir. Görünce daha kolay işlem yapabilirsiniz.

var
 D : IXMLDocument;
IlkNode : IXMLNode;
begin
memo1.Lines.Clear;
D:= LoadXMLDocument('D:\BAF2017000003803UBL.xml');
D.Active := True ;
IlkNode:=D.DocumentElement.ChildNodes.First; // ilk node invoice tir
repeat
if (IlkNode.IsTextElement=true) then
Memo1.Lines.Add(IlkNode.NodeName+' - '+IlkNode.Text)
else
Memo1.Lines.Add('          ---- ChildNode : '+ IlkNode.NodeName);

IlkNode  := IlkNode.NextSibling;//bir sonraki node ya atla
until IlkNode=Nil;
Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
WWW
Cevapla
#8
Cevaplar için teşekkür ederim pazartesi deneyeceğim inşallah.
"…De ki: "Hiç bilenlerle bilmeyenler bir olur mu? Şüphesiz, temiz akıl sahipleri öğüt alıp-düşünürler" (Zümer Suresi, 9)
Cevapla

Konuyu Paylaş : facebook gplus twitter



Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  Puanların Önemi Hakkında... Tuğrul HELVACI 18 6.573 1 saat önce
Son Yorum: uparlayan
  webden json okuma hatası arsl01 3 100 25-06-2018, Saat: 15:17
Son Yorum: arsl01
Question SFTP Hakkında elixir84 3 134 25-06-2018, Saat: 10:02
Son Yorum: SimaWB
  Veritabanı hakkında mehmetalpgozbasi 4 209 19-06-2018, Saat: 12:57
Son Yorum: mehmetalpgozbasi
  JSON Veri Okuma elixir84 12 401 12-06-2018, Saat: 13:50
Son Yorum: elixir84



Konuyu Okuyanlar: 1 Ziyaretçi