Delphi Can
E fatura okuma hakkında - Baskı Önizleme

+- Delphi Can (https://www.delphican.com)
+-- Forum: Delphi (https://www.delphican.com/forumdisplay.php?fid=3)
+--- Forum: Genel Programlama (https://www.delphican.com/forumdisplay.php?fid=6)
+--- Konu Başlığı: E fatura okuma hakkında (/showthread.php?tid=1394)

Sayfalar: 1 2


E fatura okuma hakkında - cinarbil - 05-10-2017

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.


E fatura okuma hakkında - Emrah Karagöz - 05-10-2017

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



Cvp: E fatura okuma hakkında - cinarbil - 05-10-2017

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ı


E fatura okuma hakkında - Abdullah ILGAZ - 05-10-2017

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?


Cvp: E fatura okuma hakkında - cinarbil - 05-10-2017

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.


E fatura okuma hakkında - Abdullah ILGAZ - 06-10-2017

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


Cvp: E fatura okuma hakkında - esistem - 06-10-2017

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;



Cvp: E fatura okuma hakkında - cinarbil - 06-10-2017

Cevaplar için teşekkür ederim pazartesi deneyeceğim inşallah.


E fatura okuma hakkında - enes6635 - 27-11-2018

E-Fatura Xml inden bazı verileri şu şekilde çektim ancak aşağıdaki resimde olduğu gibi VKN ve ona benzer alt düğümlerin cbc parametrelerini nasıl alabilirim.

procedure ChangeNode(parent:IXMLNode;name:String; namespace:String;value:String);
var                          
node:IXMLNode;                             
begin
  node:=parent.ChildNodes.FindNode(name,namespace);
  if node=nil then
  exit;
  if value='' then
  begin
    parent.ChildNodes.Remove(node);
    exit;
  end;
  node.Text:=value;
end;
function ChangeSearch(parent:IXMLNode;name:String; namespace:String):String;
var
node:IXMLNode;
begin
  node:=parent.ChildNodes.FindNode(name,namespace);
  if node=nil then
  exit;
  if node.Text='' then
  begin
    parent.NextSibling;

    //exit;
  end;
  donen:=node.Text;
  Result:=donen;
procedure TForm2.Button1Click(Sender: TObject);
var
doc:IXMLDocument;
parent:IXMLNode;
begin
doc:= LoadXMLDocument('C:\Users\Leaked\Desktop\bugün\XML GİB Fatura\XML_OKUMA\TemelFaturaOrnegi.xml');
parent:=doc.DocumentElement;
Edit1.Text:= ChangeSearch(parent,'ProfileID',NS_cbc);
Edit2.Text:= ChangeSearch(parent,'ID',NS_cbc);
Edit3.Text:= ChangeSearch(parent,'CopyIndicator',NS_cbc);
Edit4.Text:= ChangeSearch(parent,'UUID',NS_cbc);
Edit5.Text:= ChangeSearch(parent,'IssueDate',NS_cbc);
Edit6.Text:= ChangeSearch(parent,'IssueTime',NS_cbc);
Edit7.Text:= ChangeSearch(parent,'InvoiceTypeCode',NS_cbc);
Edit8.Text:= ChangeSearch(parent,'DocumentCurrencyCode',NS_cbc);
end;
E-fatura xmli:
1.png


E fatura okuma hakkında - esistem - 27-11-2018

Yukarıda daha önce vermiş olduğum kod ile XML nin içersindeki değerleri okuyabiliyormusunuz önce onu deneyin, okuyabilirseniz (ki bende okuyor) gerisi zaten çok kolay, hangi kısım hangi kısmın içerisinde göreceksiniz zaten ona göre de gerisini çözebilirsiniz.