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
Shocked Çoklu Dil Desteği Hakkında SercanTEK 10 306 28-08-2018, Saat: 13:24
Son Yorum: uparlayan
Exclamation Derleyici Direktifleri Hakkında, yhackup 8 3.225 22-08-2018, Saat: 19:52
Son Yorum: boreas
  Uses Kullanım Hakkında hi_selamlar 2 174 02-08-2018, Saat: 23:42
Son Yorum: hi_selamlar
  Chart1 kullanımı hakkında cinarbil 2 173 31-07-2018, Saat: 12:31
Son Yorum: cinarbil
  TDevBroadcastDeviceInterface hakkında. seci20 4 232 30-07-2018, Saat: 09:08
Son Yorum: Tuğrul HELVACI



Konuyu Okuyanlar: 1 Ziyaretçi