Konuyu Oyla:
  • Derecelendirme: 5/5 - 1 oy
  • 1
  • 2
  • 3
  • 4
  • 5
ENTEGRATOR ile E-FATURA (elektronik dönüşüm) UYGULAMASI
#11
(08-07-2020, Saat: 11:22)guverdik Adlı Kullanıcıdan Alıntı:
Entegratör (Firma ve Devlet arasındaki iş/işlemleri düzenleyen) firmalar https://ebelge.gib.gov.tr/efaturaozelent...stesi.html adresinde yayınlanmaktadır. Yazılımcı ile GİB arasındaki FİRMA dır. Test hesap ve portal ları ile manuel olarak E-Fatura vs olaylarını inceleyebilirsiniz. Kodlama aşamasında oldukça ÖNEMLİ bir yeri vardır. Bu makalede Adana Hızlı Bilişim Teknolojileri.A.Ş.’ne ait https://www.hizliteknoloji.com.tr/Home/Referans ALT YAPI larını kullanarak uygulamamızı gerçekleştireceğiz. Kısaca bundan sonra adı ENTEGRATÖR olarak geçecektir. Uygulamamız iki ana kısımdan oluşacaktır. GİDEN ve GELEN faturalar. Entegratörün Web servislerini kullanacağız
HizliService.pas               : Entegratör servisi için kullanılan prosüdür ve fonksiyonları barındıran DELPHI dosyası.
Kullanıcı Adı      hizli
Şifre                      rWBDkoA6
Test Vergi No    4620553774 (Vergi No kısaca VKN diye söyleniyor)
Mail                      defaultgb@hizlibilisimteknolojileri.net (Yazılım sahibinin mail adresi)
Fatura No yapısı: Özel bir yapısı vardır. On altı karakterli olmalıdır. Örnek fatura no PRM2020000000017. ÖN EK                üç karakterli olmalıdır (PRM gibi). Sonra dört karakterli 2020 YIL ile devam eder. Kalan 9 karakter ise fatura SIRA NO dur. Bu sıra no veritabanı tarafından verilmeli ve benzersiz olmalıdır.
HTTPRIO1 Bileşeni: Entegratöre gönderilen XML yapılarını yönetir. Gelen CEVAP bilgisini de bu bileşen yönetir.
VirtualTable1 Bileşeni: Gelen veya Giden Faturaların SORGU sonuçları için kullanılır. Tipleri aşağıdadır. UniDAC

image-2-1024x647.png

DBGrid Bileşeni: VirtualTable ile alınan bilgileri göstermek için kullanılır. Uygulamanın TASARIM görüntüsü.

image-3.png
image-4.png

Kodlarımızın tamamı aşağıdadır.

unit Unit1;



interface



uses

 Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,

 Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.ExtCtrls, ShellApi, Vcl.ComCtrls,

 Data.DB, MemDS, VirtualTable, Vcl.Grids, Vcl.DBGrids, Vcl.Menus,



 Soap.Rio, Soap.SOAPHTTPClient, Soap.InvokeRegistry, System.Net.URLClient, HizliService, XSBuiltIns;



type

 TForm1 = class(TForm)

   Label1: TLabel;

   Panel1: TPanel;

   Label2: TLabel;

   Edit1: TEdit;

   Label3: TLabel;

   Edit2: TEdit;

   Label4: TLabel;

   Edit3: TEdit;

   HTTPRIO1: THTTPRIO;

   MemoLog: TMemo;

   Panel2: TPanel;

   Label5: TLabel;

   Label6: TLabel;

   Label7: TLabel;

   ComboBox1: TComboBox;

   ComboBox2: TComboBox;

   ComboBox3: TComboBox;

   Panel3: TPanel;

   ComboBox4: TComboBox;

   DateTimePicker1: TDateTimePicker;

   DateTimePicker2: TDateTimePicker;

   RadioButton1: TRadioButton;

   RadioButton2: TRadioButton;

   Button1: TButton;

   Button3: TButton;

   Button4: TButton;

   Label8: TLabel;

   Button2: TButton;

   VirtualTable1: TVirtualTable;

   VirtualTable1AppType: TStringField;

   VirtualTable1DocumentCurrency: TStringField;

   VirtualTable1DocumentId: TStringField;

   VirtualTable1DocumentTypeCode: TStringField;

   VirtualTable1EnvelopeExp: TStringField;

   VirtualTable1EnvelopeStatus: TStringField;

   VirtualTable1EnvelopeUUID: TStringField;

   VirtualTable1IsAccount: TBooleanField;

   VirtualTable1IsArchive: TBooleanField;

   VirtualTable1IsInternetSale: TBooleanField;

   VirtualTable1IsPrinted: TBooleanField;

   VirtualTable1IsRead: TBooleanField;

   VirtualTable1IsTransferred: TBooleanField;

   VirtualTable1LocalReferenceId: TStringField;

   VirtualTable1Message: TStringField;

   VirtualTable1PayableAmount: TStringField;

   VirtualTable1ProfileId: TStringField;

   VirtualTable1SendType: TStringField;

   VirtualTable1Status: TStringField;

   VirtualTable1StatusExp: TStringField;

   VirtualTable1TargetAlias: TStringField;

   VirtualTable1TargetIdentifier: TStringField;

   VirtualTable1TargetTitle: TStringField;

   VirtualTable1TaxTotal: TStringField;

   VirtualTable1UUID: TStringField;

   VirtualTable1CancelDate: TDateTimeField;

   VirtualTable1CreateDate: TDateTimeField;

   VirtualTable1IssueDate: TDateTimeField;

   DataSource1: TDataSource;

   DBGrid1: TDBGrid;

   procedure FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);

   procedure HTTPRIO1AfterExecute(const MethodName: string; SOAPResponse: TStream);

   procedure LogEkle(Str1: String);

   procedure HTTPRIO1BeforeExecute(const MethodName: string; SOAPRequest: TStream);

   procedure FormShow(Sender: TObject);

   procedure Button1Click(Sender: TObject);

   procedure Button3Click(Sender: TObject);

   procedure Button4Click(Sender: TObject);

   procedure Button2Click(Sender: TObject);



 private

   { Private declarations }

 public

   { Public declarations }

 end;



var

 Form1: TForm1;



implementation



{$R *.dfm}



procedure TForm1.Button1Click(Sender: TObject);

var

 Servis: IHizliService;

 Cevap: DocumentList2;

 AppType, I: Integer;

 StartDate: TXSDateTime;

 EndDate: TXSDateTime;

 TarihTipi: String;



begin

 MemoLog.Lines.Clear;



 HTTPRIO1.HTTPWebNode.GetHTTPReqResp.UserName := Edit2.Text;

 HTTPRIO1.HTTPWebNode.GetHTTPReqResp.Password := Edit3.Text;

 Servis := GetIHizliService(False, Edit1.Text, HTTPRIO1);



 if RadioButton1.Checked then

   TarihTipi := 'CreatedDate'

 else if RadioButton2.Checked then

   TarihTipi := 'IssueDate';



 StartDate := TXSDateTime.Create;

 EndDate := TXSDateTime.Create;

 StartDate.AsDateTime := DateTimePicker1.DateTime;

 EndDate.AsDateTime := DateTimePicker2.DateTime;



 Cevap := Servis.GetDocumentList(ComboBox4.ItemIndex + 1, TarihTipi, StartDate, EndDate, False, False,

   False, 'ALL');



 VirtualTable1.Close;

 VirtualTable1.Clear;

 VirtualTable1.Open;

 I := 0;



 TRY

   While length(Cevap.documents[I].DocumentId) <> 0 do

   begin

     VirtualTable1.Append;

     VirtualTable1AppType.AsInteger := Cevap.documents[I].AppType;

     // VirtualTable1CancelDate.AsDateTime := Cevap.documents[I].CancelDate.AsDateTime;

     VirtualTable1CreateDate.AsDateTime := Cevap.documents[I].CreatedDate.AsDateTime;

     VirtualTable1DocumentCurrency.AsString := Cevap.documents[I].DocumentCurrencyCode;

     VirtualTable1DocumentId.AsString := Cevap.documents[I].DocumentId;

     VirtualTable1DocumentTypeCode.AsString := Cevap.documents[I].DocumentTypeCode;

     VirtualTable1EnvelopeExp.AsString := Cevap.documents[I].EnvelopeExp;

     VirtualTable1EnvelopeStatus.AsInteger := Cevap.documents[I].EnvelopeStatus;

     VirtualTable1EnvelopeUUID.AsString := Cevap.documents[I].UUID;

     VirtualTable1IsAccount.AsBoolean := Cevap.documents[I].IsAccount;

     VirtualTable1IsArchive.AsBoolean := Cevap.documents[I].IsAccount;

     VirtualTable1IsInternetSale.AsBoolean := Cevap.documents[I].IsInternetSale;

     VirtualTable1IsPrinted.AsBoolean := Cevap.documents[I].IsPrinted;

     VirtualTable1IsRead.AsBoolean := Cevap.documents[I].IsRead;

     VirtualTable1IsTransferred.AsBoolean := Cevap.documents[I].IsTransferred;

     VirtualTable1IssueDate.AsDateTime := Cevap.documents[I].IssueDate.AsDate;

     VirtualTable1LocalReferenceId.AsString := Cevap.documents[I].LocalReferenceId;

     VirtualTable1Message.AsString := Cevap.documents[I].Messsage;

     VirtualTable1ProfileId.AsString := Cevap.documents[I].ProfileID;

     VirtualTable1SendType.AsString := Cevap.documents[I].SendType;

     VirtualTable1Status.AsInteger := Cevap.documents[I].Status;

     VirtualTable1TargetAlias.AsString := Cevap.documents[I].TargetAlias;

     VirtualTable1TargetIdentifier.AsString := Cevap.documents[I].TargetIdentifier;

     VirtualTable1TargetTitle.AsString := Cevap.documents[I].TargetTitle;

     VirtualTable1PayableAmount.AsString := Cevap.documents[I].PayableAmount.DecimalString;

     VirtualTable1TaxTotal.AsString := Cevap.documents[I].TaxTotal.DecimalString;

     VirtualTable1UUID.AsString := Cevap.documents[I].UUID;

     VirtualTable1.Post;

     Inc(I);

   end;

 EXCEPT

 END;

 VirtualTable1.Cancel;

 VirtualTable1.First;



end;



procedure TForm1.Button2Click(Sender: TObject);

var

 Servis: IHizliService;

 Giris: ArrayOfInputInvoiceModel;

 Cevap: ArrayOfOutputInvoiceModel;

 Sayac: Integer;

 Irsaliye: ArrayOfDespatchs;

 FaturaKalem: ArrayOfInvoiceLine;

 KalemVergi: ArrayOfLineTax;

 LineExtensionAmount: TXSDecimal;

 AllowanceTotalAmount: TXSDecimal;

 TaxInclusiveAmount: TXSDecimal;

 PayableAmount: TXSDecimal;

 CalculationRate: TXSDecimal;

 Quantity_Amount: TXSDecimal;

 Price_Amount: TXSDecimal;

 Allowance_Percent: TXSDecimal;

 Allowance_Amount: TXSDecimal;

 Price_Total: TXSDecimal;

 Tax_Base: TXSDecimal;

 Tax_Perc: TXSDecimal;

 Tax_Amnt: TXSDecimal;

 AppType, I: Integer;

 GUIDList: ArrayOfstring;

 Uid: TGuid;

 ETTN: String;



begin



 try



   MemoLog.Lines.Clear;



   HTTPRIO1.HTTPWebNode.GetHTTPReqResp.UserName := Edit2.Text;

   HTTPRIO1.HTTPWebNode.GetHTTPReqResp.Password := Edit3.Text;

   Servis := GetIHizliService(False, Edit1.Text, HTTPRIO1);



   SetLength(Giris, 1);

   Giris[0] := InputInvoiceModel2.Create;



   if ComboBox1.ItemIndex = 0 then

     Giris[0].AppType := 1 // 1 efatura

   else

     Giris[0].AppType := 3; // 3 earşivfatura



   Giris[0].DestinationIdentifier := '4620553774';

   Giris[0].DestinationUrn := 'urn:mail:' + 'mehmetguverdik@gmail.com';

   Giris[0].SourceUrn := 'urn:mail:' + 'defaultgb@hizlibilisimteknolojileri.net';

   Giris[0].IsDraft := False;

   Giris[0].IsDraftSend := False;

   Giris[0].LocalId := '';

   Giris[0].UpdateDocument := False;

   Giris[0].InvoiceModel := InvoiceModel2.Create;

   Giris[0].InvoiceModel.invoiceheader := InvoiceHeader2.Create;



   CreateGuid(Uid);

   ETTN := GuidToString(Uid);

   ETTN := StringReplace(ETTN, '{', '', [rfReplaceAll]);

   ETTN := StringReplace(ETTN, '}', '', [rfReplaceAll]);

   Giris[0].InvoiceModel.invoiceheader.UUID := ETTN;



   Giris[0].InvoiceModel.invoiceheader.Invoice_ID := 'PRM' + '2020' + FormatFloat('000000000', random(1000));

   Giris[0].InvoiceModel.invoiceheader.IssueDate := FormatDateTime('yyyy-mm-dd', DateTimePicker1.DateTime);

   Giris[0].InvoiceModel.invoiceheader.IssueTime := FormatDateTime('yyyy-mm-dd hh:mm:ss',

     DateTimePicker1.DateTime);

   Giris[0].InvoiceModel.invoiceheader.ProfileID := ComboBox2.Text;

   Giris[0].InvoiceModel.invoiceheader.InvoiceTypeCode := ComboBox3.Text;

   Giris[0].InvoiceModel.invoiceheader.DocumentCurrencyCode := 'TRY';



   // **** FATURA ALT TOPLAM  ******************

   LineExtensionAmount := TXSDecimal.Create;

   LineExtensionAmount.AsBcd := 5169.49; // Tutar



   AllowanceTotalAmount := TXSDecimal.Create;

   AllowanceTotalAmount.AsBcd := 2203.39; // İskonto toplam



   TaxInclusiveAmount := TXSDecimal.Create;

   TaxInclusiveAmount.AsBcd := 5169.49; // Vergi Dahil Tutar



   PayableAmount := TXSDecimal.Create;

   PayableAmount.AsBcd := 3500; // Ödenecek tutar

   // ******************************************************************************************



   CalculationRate := TXSDecimal.Create;

   CalculationRate.AsBcd := 1; // kur TL için çarpan..



   Giris[0].InvoiceModel.invoiceheader.LineExtensionAmount := LineExtensionAmount; // Tutar

   Giris[0].InvoiceModel.invoiceheader.AllowanceTotalAmount := AllowanceTotalAmount; // iskonto toplamı

   Giris[0].InvoiceModel.invoiceheader.TaxInclusiveAmount := TaxInclusiveAmount; // vergi dahil tutar

   Giris[0].InvoiceModel.invoiceheader.PayableAmount := PayableAmount; // Ödenecek tutar

   Giris[0].InvoiceModel.invoiceheader.CalculationRate := CalculationRate; // döviz kuru

   Giris[0].InvoiceModel.invoiceheader.Note := 'Fatura AÇIKLAMA Bilgisi';

   Giris[0].InvoiceModel.invoiceheader.OrderReferenceId := 'İrsaliye No 001';

   Giris[0].InvoiceModel.invoiceheader.OrderReferenceDate :=

     FormatDateTime('yyyy-mm-dd', DateTimePicker1.DateTime); // İrsaliye Tarih..

   Giris[0].InvoiceModel.customer := Customer2.Create;

   Giris[0].InvoiceModel.customer.IdentificationID := '4620553774'; // Vergi No = VKN ..

   Giris[0].InvoiceModel.customer.PartyName := 'Firma Adı MEHMET GÜVERDİK';

   Giris[0].InvoiceModel.customer.TaxSchemeName := 'Vergi Daire SEYHAN';

   Giris[0].InvoiceModel.customer.CountryName := 'Ülke TÜRKİYE';

   Giris[0].InvoiceModel.customer.CityName := 'ADANA';

   Giris[0].InvoiceModel.customer.CitySubdivisionName := 'SEYHAN';

   Giris[0].InvoiceModel.customer.StreetName := 'Adres SEYHAN - ADANA';

   Giris[0].InvoiceModel.customer.ElectronicMail := 'mehmetguverdik@gmail.com';

   Giris[0].InvoiceModel.customer.WebsiteURI := 'www.guverdik.com';

   Giris[0].InvoiceModel.customer.Telefax := '+90 5XX XXX XX XX';

   Giris[0].InvoiceModel.customer.Telephone := '+90 5XX XXX XX XX';

   Giris[0].InvoiceModel.customer.Person_FirstName := 'MEHMET';

   Giris[0].InvoiceModel.customer.Person_FamilyName := 'GÜVERDİK';



   SetLength(Irsaliye, 1);

   Irsaliye[0] := Despatchs.Create;

   Irsaliye[0].DespatchDocumentID := 'İrsaliye No 001'; // İrsaliye Tarih..

   Irsaliye[0].DespatchDocumentIssueDate := FormatDateTime('yyyy-mm-dd', DateTimePicker1.DateTime);

   Giris[0].InvoiceModel.Despatchs := Irsaliye;



   // ****  FATURA KALEMLERİ  *********************************************

   SetLength(FaturaKalem, 2); // Fatura Kalemi 2 ADET olduğu için ..



   // *******************************************************************************************************

   // 1.SATIR FATURA KALEMİ  ***********

   Quantity_Amount := TXSDecimal.Create;

   Quantity_Amount.AsBcd := 1; // MIKTAR ..

   Price_Amount := TXSDecimal.Create;

   Price_Amount.AsBcd := 2966.102; // TUTAR ..

   Allowance_Percent := TXSDecimal.Create;

   Allowance_Percent.AsBcd := 42.62; // İSKONTO YUZDE ..

   Allowance_Amount := TXSDecimal.Create;

   Allowance_Amount.AsBcd := 1264.24; // ISKONTO TUTAR ..

   Price_Total := TXSDecimal.Create;

   Price_Total.AsBcd := 2008.20; // TOPLAM ..



   Tax_Base := TXSDecimal.Create;

   Tax_Base.AsBcd := 2966.102 - 1264.24; // TUTAR - ISKONTO_TUTAR ..

   Tax_Perc := TXSDecimal.Create;

   Tax_Perc.AsBcd := 18; // KDV YUZDE ..

   Tax_Amnt := TXSDecimal.Create;

   Tax_Amnt.AsBcd := 306.34; // KDV TUTAR ..

   SetLength(KalemVergi, 1); // Satırda ikinci bir VERGI varsa. O Zaman 2 ..

   KalemVergi[0] := LineTax.Create;

   KalemVergi[0].Tax_Code := '0015'; // VERGI KODU, 2. Vergi ÖRNEK ÖTV = 9015 ..

   KalemVergi[0].Tax_Name := 'KDV'; // VERGI ADI ..

   KalemVergi[0].Tax_Base := Tax_Base; // VERGI MATRAH ..

   KalemVergi[0].Tax_Perc := Tax_Perc; // VERGI ORAN ..

   KalemVergi[0].Tax_Amnt := Tax_Amnt; // VERGI TUTAR ..

   KalemVergi[0].Tax_Exem_Code := ''; // istisna kodu KDV TUTARI  0 ise doldurulmaz

   KalemVergi[0].Tax_Exem := ''; // istisna açıklması KDV TUTARI  0 ise doldurulmalı



   FaturaKalem[0] := InvoiceLine.Create;

   FaturaKalem[0].ID := 1; // FATURA KALEM SATIR NO ..

   FaturaKalem[0].Item_Name := 'FLOPPY DISK';

   FaturaKalem[0].Quantity_Amount := Quantity_Amount; // miktar

   FaturaKalem[0].Price_Amount := Price_Amount; // fiyat

   FaturaKalem[0].Quantity_Unit_User := 'C62'; // birim  AC62 = ADET ..

   FaturaKalem[0].Allowance_Percent := Allowance_Percent; // iskonto oranı

   FaturaKalem[0].Allowance_Amount := Allowance_Amount; // iskonto tutarı

   FaturaKalem[0].Price_Total := Price_Total; // toplam tutar

   FaturaKalem[0].lineTaxes := KalemVergi;

   // 1.SATIR FATURA KALEMİ SONU ***********

   // *******************************************************************************************************



   // *******************************************************************************************************

   // 2.SATIR FATURA KALEMİ  ***********

   Quantity_Amount := TXSDecimal.Create;

   Quantity_Amount.AsBcd := 1; // MIKTAR ..

   Price_Amount := TXSDecimal.Create;

   Price_Amount.AsBcd := 2203.39; // TUTAR ..

   Allowance_Percent := TXSDecimal.Create;

   Allowance_Percent.AsBcd := 42.62; // İSKONTO YUZDE ..

   Allowance_Amount := TXSDecimal.Create;

   Allowance_Amount.AsBcd := 939.15; // ISKONTO TUTAR ..

   Price_Total := TXSDecimal.Create;

   Price_Total.AsBcd := 1491.80; // TOPLAM ..



   Tax_Base := TXSDecimal.Create;

   Tax_Base.AsBcd := 2203.39 - 939.15; // TUTAR - ISKONTO_TUTAR ..

   Tax_Perc := TXSDecimal.Create;

   Tax_Perc.AsBcd := 18; // KDV YUZDE ..

   Tax_Amnt := TXSDecimal.Create;

   Tax_Amnt.AsBcd := 227.56; // KDV TUTAR ..

   SetLength(KalemVergi, 1); // Satırda ikinci bir VERGI varsa. O Zaman 2 ..

   KalemVergi[0] := LineTax.Create;

   KalemVergi[0].Tax_Code := '0015'; // VERGI KODU, 2. Vergi ÖRNEK ÖTV = 9015 ..

   KalemVergi[0].Tax_Name := 'KDV'; // VERGI ADI ..

   KalemVergi[0].Tax_Base := Tax_Base; // VERGI MATRAH ..

   KalemVergi[0].Tax_Perc := Tax_Perc; // VERGI ORAN ..

   KalemVergi[0].Tax_Amnt := Tax_Amnt; // VERGI TUTAR ..

   KalemVergi[0].Tax_Exem_Code := ''; // istisna kodu KDV TUTARI  0 ise doldurulmaz

   KalemVergi[0].Tax_Exem := ''; // istisna açıklması KDV TUTARI  0 ise doldurulmalı



   FaturaKalem[1] := InvoiceLine.Create;

   FaturaKalem[1].ID := 1; // FATURA KALEM SATIR NO ..

   FaturaKalem[1].Item_Name := 'HARD DISK';

   FaturaKalem[1].Quantity_Amount := Quantity_Amount; // miktar

   FaturaKalem[1].Price_Amount := Price_Amount; // fiyat

   FaturaKalem[1].Quantity_Unit_User := 'C62'; // birim  AC62 = ADET ..

   FaturaKalem[1].Allowance_Percent := Allowance_Percent; // iskonto oranı

   FaturaKalem[1].Allowance_Amount := Allowance_Amount; // iskonto tutarı

   FaturaKalem[1].Price_Total := Price_Total; // toplam tutar

   FaturaKalem[1].lineTaxes := KalemVergi;

   // 2.SATIR FATURA KALEMİ SONU ***********

   // *******************************************************************************************************



   Giris[0].InvoiceModel.invoiceLines := FaturaKalem;

   Cevap := Servis.SendInvoiceModel(Giris);

   ShowMessage(Cevap[0].Message_);



   AppType := 3; // e Arşiv ..

   SetLength(GUIDList, 1);

   GUIDList[0] := ETTN; // '00AA0586-5437-48DF-941C-D6DECCBDC8EE';



 finally

   for Sayac := 0 to length(Giris) - 1 do

     Giris[Sayac].Free;

   for Sayac := 0 to length(Cevap) - 1 do

     Cevap[Sayac].Free;

 end;



end;



procedure TForm1.Button3Click(Sender: TObject);

var

 Servis: IHizliService;

 Cevap: DocumentContent2;

 ETTN: String;

 dosyayaz: TFileStream;

begin



 MemoLog.Lines.Clear;



 HTTPRIO1.HTTPWebNode.GetHTTPReqResp.UserName := Edit2.Text;

 HTTPRIO1.HTTPWebNode.GetHTTPReqResp.Password := Edit3.Text;

 Servis := GetIHizliService(False, Edit1.Text, HTTPRIO1);



 ETTN := VirtualTable1UUID.AsString;

 Cevap := Servis.GetDocumentFile(ComboBox4.ItemIndex + 1, ETTN, 'PDF', False);



 if Cevap.IsSucceeded then

 begin

   dosyayaz := TFileStream.Create(ExtractFilePath(Application.ExeName) + ETTN + '.' + 'PDF', fmCreate);

   dosyayaz.Write(Cevap.DocumentFile, length(Cevap.DocumentFile));

   dosyayaz.Free;

   ShellExecute(Handle, 'open', PWideChar(ExtractFilePath(Application.ExeName) + ETTN + '.' + 'PDF'), nil,

     nil, SW_SHOWNORMAL);

 end else begin

   ShowMessage('Baaşrısız');

 end;



end;



procedure TForm1.Button4Click(Sender: TObject);

var

 Servis: IHizliService;

 Cevap: DocumentContent2;

 ETTN: String;

 dosyayaz: TFileStream;

begin



 MemoLog.Lines.Clear;



 HTTPRIO1.HTTPWebNode.GetHTTPReqResp.UserName := Edit2.Text;

 HTTPRIO1.HTTPWebNode.GetHTTPReqResp.Password := Edit3.Text;

 Servis := GetIHizliService(False, Edit1.Text, HTTPRIO1);



 ETTN := VirtualTable1UUID.AsString;

 Cevap := Servis.GetDocumentFile(ComboBox4.ItemIndex + 1, ETTN, 'XML', False);



 if Cevap.IsSucceeded then

 begin

   dosyayaz := TFileStream.Create(ExtractFilePath(Application.ExeName) + ETTN + '.' + 'XML', fmCreate);

   dosyayaz.Write(Cevap.DocumentFile, length(Cevap.DocumentFile));

   dosyayaz.Free;

   ShellExecute(Handle, 'open', PWideChar(ExtractFilePath(Application.ExeName) + ETTN + '.' + 'XML'), nil,

     nil, SW_SHOWNORMAL);

 end else begin

   ShowMessage('Baaşrısız');

 end;



end;



procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);

begin

 if Key = VK_ESCAPE then

   Close;

end;



procedure TForm1.FormShow(Sender: TObject);

begin

 DateTimePicker1.Date := Now - 5;

 DateTimePicker2.Date := Now;

end;



procedure TForm1.HTTPRIO1AfterExecute(const MethodName: string; SOAPResponse: TStream);

var

 Str: string;

 Sl: TStringList;

begin

 Sl := TStringList.Create;

 try

   SOAPResponse.Seek(0, soFromBeginning);

   Sl.LoadFromStream(SOAPResponse);

   Str := Sl.Text;

 finally

   FreeAndNil(Sl);

 end;

 LogEkle('CEVAP OLARAK GELEN XML KODLARI' + #13#10#13#10 + Str + #13#10);

end;



procedure TForm1.HTTPRIO1BeforeExecute(const MethodName: string; SOAPRequest: TStream);

var

 StrList1: TStringList;

begin

 inherited;

 StrList1 := TStringList.Create;

 try

   SOAPRequest.Position := 0;

   StrList1.LoadFromStream(SOAPRequest);

   LogEkle('GÖNDERİLECEK XML KODLARI' + #13#10#13#10 + StringReplace(StrList1.Text, '><', '>' + #13#10 + '<',

     [rfReplaceAll]) + #13#10);

 finally

   StrList1.Free;

 end;

end;



procedure TForm1.LogEkle(Str1: String);

begin

 MemoLog.Lines.Add(FormatDateTime('hh:nn:ss', Now) + ' ' + Str1);

end;


end.

Test Portal adres : http://portaltest.hizliteknoloji.com.tr/...ting/login yukarıdaki kullanıcı adı ve şifre girilir.

image-5.png

image-6.png
PDF Göster butonu ile alınan ekran görüntüsü.

image-7-1024x781.png
XML İndir butonu ile alınan ekran görüntüsü

HizliService.pas dosyasını ve EXE dosyasını indirin.

Merhabalar,

Hocam elinize kolunuza sağlık.
Acaba zahmet olmaz ise lütfen .dfm dosyalarını da paylaşma gibi bir durumunuz söz konusu olabilir mi?
Bizim de acil olarak geçiş yapmamız gerekli sisteme.

Teşekkür ederim.
Amaç, bilginin de/aklın da zekat'ını vermek.
Cevapla
#12
(23-11-2020, Saat: 13:52)hi_selamlar Adlı Kullanıcıdan Alıntı:
(08-07-2020, Saat: 11:22)guverdik Adlı Kullanıcıdan Alıntı:
Entegratör (Firma ve Devlet arasındaki iş/işlemleri düzenleyen) firmalar https://ebelge.gib.gov.tr/efaturaozelent...stesi.html adresinde yayınlanmaktadır. Yazılımcı ile GİB arasındaki FİRMA dır. Test hesap ve portal ları ile manuel olarak E-Fatura vs olaylarını inceleyebilirsiniz. Kodlama aşamasında oldukça ÖNEMLİ bir yeri vardır. Bu makalede Adana Hızlı Bilişim Teknolojileri.A.Ş.’ne ait https://www.hizliteknoloji.com.tr/Home/Referans ALT YAPI larını kullanarak uygulamamızı gerçekleştireceğiz. Kısaca bundan sonra adı ENTEGRATÖR olarak geçecektir. Uygulamamız iki ana kısımdan oluşacaktır. GİDEN ve GELEN faturalar. Entegratörün Web servislerini kullanacağız
HizliService.pas               : Entegratör servisi için kullanılan prosüdür ve fonksiyonları barındıran DELPHI dosyası.
Kullanıcı Adı      hizli
Şifre                      rWBDkoA6
Test Vergi No    4620553774 (Vergi No kısaca VKN diye söyleniyor)
Mail                      defaultgb@hizlibilisimteknolojileri.net (Yazılım sahibinin mail adresi)
Fatura No yapısı: Özel bir yapısı vardır. On altı karakterli olmalıdır. Örnek fatura no PRM2020000000017. ÖN EK                üç karakterli olmalıdır (PRM gibi). Sonra dört karakterli 2020 YIL ile devam eder. Kalan 9 karakter ise fatura SIRA NO dur. Bu sıra no veritabanı tarafından verilmeli ve benzersiz olmalıdır.
HTTPRIO1 Bileşeni: Entegratöre gönderilen XML yapılarını yönetir. Gelen CEVAP bilgisini de bu bileşen yönetir.
VirtualTable1 Bileşeni: Gelen veya Giden Faturaların SORGU sonuçları için kullanılır. Tipleri aşağıdadır. UniDAC

image-2-1024x647.png

DBGrid Bileşeni: VirtualTable ile alınan bilgileri göstermek için kullanılır. Uygulamanın TASARIM görüntüsü.

image-3.png
image-4.png

Kodlarımızın tamamı aşağıdadır.

unit Unit1;



interface



uses

 Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,

 Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.ExtCtrls, ShellApi, Vcl.ComCtrls,

 Data.DB, MemDS, VirtualTable, Vcl.Grids, Vcl.DBGrids, Vcl.Menus,



 Soap.Rio, Soap.SOAPHTTPClient, Soap.InvokeRegistry, System.Net.URLClient, HizliService, XSBuiltIns;



type

 TForm1 = class(TForm)

   Label1: TLabel;

   Panel1: TPanel;

   Label2: TLabel;

   Edit1: TEdit;

   Label3: TLabel;

   Edit2: TEdit;

   Label4: TLabel;

   Edit3: TEdit;

   HTTPRIO1: THTTPRIO;

   MemoLog: TMemo;

   Panel2: TPanel;

   Label5: TLabel;

   Label6: TLabel;

   Label7: TLabel;

   ComboBox1: TComboBox;

   ComboBox2: TComboBox;

   ComboBox3: TComboBox;

   Panel3: TPanel;

   ComboBox4: TComboBox;

   DateTimePicker1: TDateTimePicker;

   DateTimePicker2: TDateTimePicker;

   RadioButton1: TRadioButton;

   RadioButton2: TRadioButton;

   Button1: TButton;

   Button3: TButton;

   Button4: TButton;

   Label8: TLabel;

   Button2: TButton;

   VirtualTable1: TVirtualTable;

   VirtualTable1AppType: TStringField;

   VirtualTable1DocumentCurrency: TStringField;

   VirtualTable1DocumentId: TStringField;

   VirtualTable1DocumentTypeCode: TStringField;

   VirtualTable1EnvelopeExp: TStringField;

   VirtualTable1EnvelopeStatus: TStringField;

   VirtualTable1EnvelopeUUID: TStringField;

   VirtualTable1IsAccount: TBooleanField;

   VirtualTable1IsArchive: TBooleanField;

   VirtualTable1IsInternetSale: TBooleanField;

   VirtualTable1IsPrinted: TBooleanField;

   VirtualTable1IsRead: TBooleanField;

   VirtualTable1IsTransferred: TBooleanField;

   VirtualTable1LocalReferenceId: TStringField;

   VirtualTable1Message: TStringField;

   VirtualTable1PayableAmount: TStringField;

   VirtualTable1ProfileId: TStringField;

   VirtualTable1SendType: TStringField;

   VirtualTable1Status: TStringField;

   VirtualTable1StatusExp: TStringField;

   VirtualTable1TargetAlias: TStringField;

   VirtualTable1TargetIdentifier: TStringField;

   VirtualTable1TargetTitle: TStringField;

   VirtualTable1TaxTotal: TStringField;

   VirtualTable1UUID: TStringField;

   VirtualTable1CancelDate: TDateTimeField;

   VirtualTable1CreateDate: TDateTimeField;

   VirtualTable1IssueDate: TDateTimeField;

   DataSource1: TDataSource;

   DBGrid1: TDBGrid;

   procedure FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);

   procedure HTTPRIO1AfterExecute(const MethodName: string; SOAPResponse: TStream);

   procedure LogEkle(Str1: String);

   procedure HTTPRIO1BeforeExecute(const MethodName: string; SOAPRequest: TStream);

   procedure FormShow(Sender: TObject);

   procedure Button1Click(Sender: TObject);

   procedure Button3Click(Sender: TObject);

   procedure Button4Click(Sender: TObject);

   procedure Button2Click(Sender: TObject);



 private

   { Private declarations }

 public

   { Public declarations }

 end;



var

 Form1: TForm1;



implementation



{$R *.dfm}



procedure TForm1.Button1Click(Sender: TObject);

var

 Servis: IHizliService;

 Cevap: DocumentList2;

 AppType, I: Integer;

 StartDate: TXSDateTime;

 EndDate: TXSDateTime;

 TarihTipi: String;



begin

 MemoLog.Lines.Clear;



 HTTPRIO1.HTTPWebNode.GetHTTPReqResp.UserName := Edit2.Text;

 HTTPRIO1.HTTPWebNode.GetHTTPReqResp.Password := Edit3.Text;

 Servis := GetIHizliService(False, Edit1.Text, HTTPRIO1);



 if RadioButton1.Checked then

   TarihTipi := 'CreatedDate'

 else if RadioButton2.Checked then

   TarihTipi := 'IssueDate';



 StartDate := TXSDateTime.Create;

 EndDate := TXSDateTime.Create;

 StartDate.AsDateTime := DateTimePicker1.DateTime;

 EndDate.AsDateTime := DateTimePicker2.DateTime;



 Cevap := Servis.GetDocumentList(ComboBox4.ItemIndex + 1, TarihTipi, StartDate, EndDate, False, False,

   False, 'ALL');



 VirtualTable1.Close;

 VirtualTable1.Clear;

 VirtualTable1.Open;

 I := 0;



 TRY

   While length(Cevap.documents[I].DocumentId) <> 0 do

   begin

     VirtualTable1.Append;

     VirtualTable1AppType.AsInteger := Cevap.documents[I].AppType;

     // VirtualTable1CancelDate.AsDateTime := Cevap.documents[I].CancelDate.AsDateTime;

     VirtualTable1CreateDate.AsDateTime := Cevap.documents[I].CreatedDate.AsDateTime;

     VirtualTable1DocumentCurrency.AsString := Cevap.documents[I].DocumentCurrencyCode;

     VirtualTable1DocumentId.AsString := Cevap.documents[I].DocumentId;

     VirtualTable1DocumentTypeCode.AsString := Cevap.documents[I].DocumentTypeCode;

     VirtualTable1EnvelopeExp.AsString := Cevap.documents[I].EnvelopeExp;

     VirtualTable1EnvelopeStatus.AsInteger := Cevap.documents[I].EnvelopeStatus;

     VirtualTable1EnvelopeUUID.AsString := Cevap.documents[I].UUID;

     VirtualTable1IsAccount.AsBoolean := Cevap.documents[I].IsAccount;

     VirtualTable1IsArchive.AsBoolean := Cevap.documents[I].IsAccount;

     VirtualTable1IsInternetSale.AsBoolean := Cevap.documents[I].IsInternetSale;

     VirtualTable1IsPrinted.AsBoolean := Cevap.documents[I].IsPrinted;

     VirtualTable1IsRead.AsBoolean := Cevap.documents[I].IsRead;

     VirtualTable1IsTransferred.AsBoolean := Cevap.documents[I].IsTransferred;

     VirtualTable1IssueDate.AsDateTime := Cevap.documents[I].IssueDate.AsDate;

     VirtualTable1LocalReferenceId.AsString := Cevap.documents[I].LocalReferenceId;

     VirtualTable1Message.AsString := Cevap.documents[I].Messsage;

     VirtualTable1ProfileId.AsString := Cevap.documents[I].ProfileID;

     VirtualTable1SendType.AsString := Cevap.documents[I].SendType;

     VirtualTable1Status.AsInteger := Cevap.documents[I].Status;

     VirtualTable1TargetAlias.AsString := Cevap.documents[I].TargetAlias;

     VirtualTable1TargetIdentifier.AsString := Cevap.documents[I].TargetIdentifier;

     VirtualTable1TargetTitle.AsString := Cevap.documents[I].TargetTitle;

     VirtualTable1PayableAmount.AsString := Cevap.documents[I].PayableAmount.DecimalString;

     VirtualTable1TaxTotal.AsString := Cevap.documents[I].TaxTotal.DecimalString;

     VirtualTable1UUID.AsString := Cevap.documents[I].UUID;

     VirtualTable1.Post;

     Inc(I);

   end;

 EXCEPT

 END;

 VirtualTable1.Cancel;

 VirtualTable1.First;



end;



procedure TForm1.Button2Click(Sender: TObject);

var

 Servis: IHizliService;

 Giris: ArrayOfInputInvoiceModel;

 Cevap: ArrayOfOutputInvoiceModel;

 Sayac: Integer;

 Irsaliye: ArrayOfDespatchs;

 FaturaKalem: ArrayOfInvoiceLine;

 KalemVergi: ArrayOfLineTax;

 LineExtensionAmount: TXSDecimal;

 AllowanceTotalAmount: TXSDecimal;

 TaxInclusiveAmount: TXSDecimal;

 PayableAmount: TXSDecimal;

 CalculationRate: TXSDecimal;

 Quantity_Amount: TXSDecimal;

 Price_Amount: TXSDecimal;

 Allowance_Percent: TXSDecimal;

 Allowance_Amount: TXSDecimal;

 Price_Total: TXSDecimal;

 Tax_Base: TXSDecimal;

 Tax_Perc: TXSDecimal;

 Tax_Amnt: TXSDecimal;

 AppType, I: Integer;

 GUIDList: ArrayOfstring;

 Uid: TGuid;

 ETTN: String;



begin



 try



   MemoLog.Lines.Clear;



   HTTPRIO1.HTTPWebNode.GetHTTPReqResp.UserName := Edit2.Text;

   HTTPRIO1.HTTPWebNode.GetHTTPReqResp.Password := Edit3.Text;

   Servis := GetIHizliService(False, Edit1.Text, HTTPRIO1);



   SetLength(Giris, 1);

   Giris[0] := InputInvoiceModel2.Create;



   if ComboBox1.ItemIndex = 0 then

     Giris[0].AppType := 1 // 1 efatura

   else

     Giris[0].AppType := 3; // 3 earşivfatura



   Giris[0].DestinationIdentifier := '4620553774';

   Giris[0].DestinationUrn := 'urn:mail:' + 'mehmetguverdik@gmail.com';

   Giris[0].SourceUrn := 'urn:mail:' + 'defaultgb@hizlibilisimteknolojileri.net';

   Giris[0].IsDraft := False;

   Giris[0].IsDraftSend := False;

   Giris[0].LocalId := '';

   Giris[0].UpdateDocument := False;

   Giris[0].InvoiceModel := InvoiceModel2.Create;

   Giris[0].InvoiceModel.invoiceheader := InvoiceHeader2.Create;



   CreateGuid(Uid);

   ETTN := GuidToString(Uid);

   ETTN := StringReplace(ETTN, '{', '', [rfReplaceAll]);

   ETTN := StringReplace(ETTN, '}', '', [rfReplaceAll]);

   Giris[0].InvoiceModel.invoiceheader.UUID := ETTN;



   Giris[0].InvoiceModel.invoiceheader.Invoice_ID := 'PRM' + '2020' + FormatFloat('000000000', random(1000));

   Giris[0].InvoiceModel.invoiceheader.IssueDate := FormatDateTime('yyyy-mm-dd', DateTimePicker1.DateTime);

   Giris[0].InvoiceModel.invoiceheader.IssueTime := FormatDateTime('yyyy-mm-dd hh:mm:ss',

     DateTimePicker1.DateTime);

   Giris[0].InvoiceModel.invoiceheader.ProfileID := ComboBox2.Text;

   Giris[0].InvoiceModel.invoiceheader.InvoiceTypeCode := ComboBox3.Text;

   Giris[0].InvoiceModel.invoiceheader.DocumentCurrencyCode := 'TRY';



   // **** FATURA ALT TOPLAM  ******************

   LineExtensionAmount := TXSDecimal.Create;

   LineExtensionAmount.AsBcd := 5169.49; // Tutar



   AllowanceTotalAmount := TXSDecimal.Create;

   AllowanceTotalAmount.AsBcd := 2203.39; // İskonto toplam



   TaxInclusiveAmount := TXSDecimal.Create;

   TaxInclusiveAmount.AsBcd := 5169.49; // Vergi Dahil Tutar



   PayableAmount := TXSDecimal.Create;

   PayableAmount.AsBcd := 3500; // Ödenecek tutar

   // ******************************************************************************************



   CalculationRate := TXSDecimal.Create;

   CalculationRate.AsBcd := 1; // kur TL için çarpan..



   Giris[0].InvoiceModel.invoiceheader.LineExtensionAmount := LineExtensionAmount; // Tutar

   Giris[0].InvoiceModel.invoiceheader.AllowanceTotalAmount := AllowanceTotalAmount; // iskonto toplamı

   Giris[0].InvoiceModel.invoiceheader.TaxInclusiveAmount := TaxInclusiveAmount; // vergi dahil tutar

   Giris[0].InvoiceModel.invoiceheader.PayableAmount := PayableAmount; // Ödenecek tutar

   Giris[0].InvoiceModel.invoiceheader.CalculationRate := CalculationRate; // döviz kuru

   Giris[0].InvoiceModel.invoiceheader.Note := 'Fatura AÇIKLAMA Bilgisi';

   Giris[0].InvoiceModel.invoiceheader.OrderReferenceId := 'İrsaliye No 001';

   Giris[0].InvoiceModel.invoiceheader.OrderReferenceDate :=

     FormatDateTime('yyyy-mm-dd', DateTimePicker1.DateTime); // İrsaliye Tarih..

   Giris[0].InvoiceModel.customer := Customer2.Create;

   Giris[0].InvoiceModel.customer.IdentificationID := '4620553774'; // Vergi No = VKN ..

   Giris[0].InvoiceModel.customer.PartyName := 'Firma Adı MEHMET GÜVERDİK';

   Giris[0].InvoiceModel.customer.TaxSchemeName := 'Vergi Daire SEYHAN';

   Giris[0].InvoiceModel.customer.CountryName := 'Ülke TÜRKİYE';

   Giris[0].InvoiceModel.customer.CityName := 'ADANA';

   Giris[0].InvoiceModel.customer.CitySubdivisionName := 'SEYHAN';

   Giris[0].InvoiceModel.customer.StreetName := 'Adres SEYHAN - ADANA';

   Giris[0].InvoiceModel.customer.ElectronicMail := 'mehmetguverdik@gmail.com';

   Giris[0].InvoiceModel.customer.WebsiteURI := 'www.guverdik.com';

   Giris[0].InvoiceModel.customer.Telefax := '+90 5XX XXX XX XX';

   Giris[0].InvoiceModel.customer.Telephone := '+90 5XX XXX XX XX';

   Giris[0].InvoiceModel.customer.Person_FirstName := 'MEHMET';

   Giris[0].InvoiceModel.customer.Person_FamilyName := 'GÜVERDİK';



   SetLength(Irsaliye, 1);

   Irsaliye[0] := Despatchs.Create;

   Irsaliye[0].DespatchDocumentID := 'İrsaliye No 001'; // İrsaliye Tarih..

   Irsaliye[0].DespatchDocumentIssueDate := FormatDateTime('yyyy-mm-dd', DateTimePicker1.DateTime);

   Giris[0].InvoiceModel.Despatchs := Irsaliye;



   // ****  FATURA KALEMLERİ  *********************************************

   SetLength(FaturaKalem, 2); // Fatura Kalemi 2 ADET olduğu için ..



   // *******************************************************************************************************

   // 1.SATIR FATURA KALEMİ  ***********

   Quantity_Amount := TXSDecimal.Create;

   Quantity_Amount.AsBcd := 1; // MIKTAR ..

   Price_Amount := TXSDecimal.Create;

   Price_Amount.AsBcd := 2966.102; // TUTAR ..

   Allowance_Percent := TXSDecimal.Create;

   Allowance_Percent.AsBcd := 42.62; // İSKONTO YUZDE ..

   Allowance_Amount := TXSDecimal.Create;

   Allowance_Amount.AsBcd := 1264.24; // ISKONTO TUTAR ..

   Price_Total := TXSDecimal.Create;

   Price_Total.AsBcd := 2008.20; // TOPLAM ..



   Tax_Base := TXSDecimal.Create;

   Tax_Base.AsBcd := 2966.102 - 1264.24; // TUTAR - ISKONTO_TUTAR ..

   Tax_Perc := TXSDecimal.Create;

   Tax_Perc.AsBcd := 18; // KDV YUZDE ..

   Tax_Amnt := TXSDecimal.Create;

   Tax_Amnt.AsBcd := 306.34; // KDV TUTAR ..

   SetLength(KalemVergi, 1); // Satırda ikinci bir VERGI varsa. O Zaman 2 ..

   KalemVergi[0] := LineTax.Create;

   KalemVergi[0].Tax_Code := '0015'; // VERGI KODU, 2. Vergi ÖRNEK ÖTV = 9015 ..

   KalemVergi[0].Tax_Name := 'KDV'; // VERGI ADI ..

   KalemVergi[0].Tax_Base := Tax_Base; // VERGI MATRAH ..

   KalemVergi[0].Tax_Perc := Tax_Perc; // VERGI ORAN ..

   KalemVergi[0].Tax_Amnt := Tax_Amnt; // VERGI TUTAR ..

   KalemVergi[0].Tax_Exem_Code := ''; // istisna kodu KDV TUTARI  0 ise doldurulmaz

   KalemVergi[0].Tax_Exem := ''; // istisna açıklması KDV TUTARI  0 ise doldurulmalı



   FaturaKalem[0] := InvoiceLine.Create;

   FaturaKalem[0].ID := 1; // FATURA KALEM SATIR NO ..

   FaturaKalem[0].Item_Name := 'FLOPPY DISK';

   FaturaKalem[0].Quantity_Amount := Quantity_Amount; // miktar

   FaturaKalem[0].Price_Amount := Price_Amount; // fiyat

   FaturaKalem[0].Quantity_Unit_User := 'C62'; // birim  AC62 = ADET ..

   FaturaKalem[0].Allowance_Percent := Allowance_Percent; // iskonto oranı

   FaturaKalem[0].Allowance_Amount := Allowance_Amount; // iskonto tutarı

   FaturaKalem[0].Price_Total := Price_Total; // toplam tutar

   FaturaKalem[0].lineTaxes := KalemVergi;

   // 1.SATIR FATURA KALEMİ SONU ***********

   // *******************************************************************************************************



   // *******************************************************************************************************

   // 2.SATIR FATURA KALEMİ  ***********

   Quantity_Amount := TXSDecimal.Create;

   Quantity_Amount.AsBcd := 1; // MIKTAR ..

   Price_Amount := TXSDecimal.Create;

   Price_Amount.AsBcd := 2203.39; // TUTAR ..

   Allowance_Percent := TXSDecimal.Create;

   Allowance_Percent.AsBcd := 42.62; // İSKONTO YUZDE ..

   Allowance_Amount := TXSDecimal.Create;

   Allowance_Amount.AsBcd := 939.15; // ISKONTO TUTAR ..

   Price_Total := TXSDecimal.Create;

   Price_Total.AsBcd := 1491.80; // TOPLAM ..



   Tax_Base := TXSDecimal.Create;

   Tax_Base.AsBcd := 2203.39 - 939.15; // TUTAR - ISKONTO_TUTAR ..

   Tax_Perc := TXSDecimal.Create;

   Tax_Perc.AsBcd := 18; // KDV YUZDE ..

   Tax_Amnt := TXSDecimal.Create;

   Tax_Amnt.AsBcd := 227.56; // KDV TUTAR ..

   SetLength(KalemVergi, 1); // Satırda ikinci bir VERGI varsa. O Zaman 2 ..

   KalemVergi[0] := LineTax.Create;

   KalemVergi[0].Tax_Code := '0015'; // VERGI KODU, 2. Vergi ÖRNEK ÖTV = 9015 ..

   KalemVergi[0].Tax_Name := 'KDV'; // VERGI ADI ..

   KalemVergi[0].Tax_Base := Tax_Base; // VERGI MATRAH ..

   KalemVergi[0].Tax_Perc := Tax_Perc; // VERGI ORAN ..

   KalemVergi[0].Tax_Amnt := Tax_Amnt; // VERGI TUTAR ..

   KalemVergi[0].Tax_Exem_Code := ''; // istisna kodu KDV TUTARI  0 ise doldurulmaz

   KalemVergi[0].Tax_Exem := ''; // istisna açıklması KDV TUTARI  0 ise doldurulmalı



   FaturaKalem[1] := InvoiceLine.Create;

   FaturaKalem[1].ID := 1; // FATURA KALEM SATIR NO ..

   FaturaKalem[1].Item_Name := 'HARD DISK';

   FaturaKalem[1].Quantity_Amount := Quantity_Amount; // miktar

   FaturaKalem[1].Price_Amount := Price_Amount; // fiyat

   FaturaKalem[1].Quantity_Unit_User := 'C62'; // birim  AC62 = ADET ..

   FaturaKalem[1].Allowance_Percent := Allowance_Percent; // iskonto oranı

   FaturaKalem[1].Allowance_Amount := Allowance_Amount; // iskonto tutarı

   FaturaKalem[1].Price_Total := Price_Total; // toplam tutar

   FaturaKalem[1].lineTaxes := KalemVergi;

   // 2.SATIR FATURA KALEMİ SONU ***********

   // *******************************************************************************************************



   Giris[0].InvoiceModel.invoiceLines := FaturaKalem;

   Cevap := Servis.SendInvoiceModel(Giris);

   ShowMessage(Cevap[0].Message_);



   AppType := 3; // e Arşiv ..

   SetLength(GUIDList, 1);

   GUIDList[0] := ETTN; // '00AA0586-5437-48DF-941C-D6DECCBDC8EE';



 finally

   for Sayac := 0 to length(Giris) - 1 do

     Giris[Sayac].Free;

   for Sayac := 0 to length(Cevap) - 1 do

     Cevap[Sayac].Free;

 end;



end;



procedure TForm1.Button3Click(Sender: TObject);

var

 Servis: IHizliService;

 Cevap: DocumentContent2;

 ETTN: String;

 dosyayaz: TFileStream;

begin



 MemoLog.Lines.Clear;



 HTTPRIO1.HTTPWebNode.GetHTTPReqResp.UserName := Edit2.Text;

 HTTPRIO1.HTTPWebNode.GetHTTPReqResp.Password := Edit3.Text;

 Servis := GetIHizliService(False, Edit1.Text, HTTPRIO1);



 ETTN := VirtualTable1UUID.AsString;

 Cevap := Servis.GetDocumentFile(ComboBox4.ItemIndex + 1, ETTN, 'PDF', False);



 if Cevap.IsSucceeded then

 begin

   dosyayaz := TFileStream.Create(ExtractFilePath(Application.ExeName) + ETTN + '.' + 'PDF', fmCreate);

   dosyayaz.Write(Cevap.DocumentFile, length(Cevap.DocumentFile));

   dosyayaz.Free;

   ShellExecute(Handle, 'open', PWideChar(ExtractFilePath(Application.ExeName) + ETTN + '.' + 'PDF'), nil,

     nil, SW_SHOWNORMAL);

 end else begin

   ShowMessage('Baaşrısız');

 end;



end;



procedure TForm1.Button4Click(Sender: TObject);

var

 Servis: IHizliService;

 Cevap: DocumentContent2;

 ETTN: String;

 dosyayaz: TFileStream;

begin



 MemoLog.Lines.Clear;



 HTTPRIO1.HTTPWebNode.GetHTTPReqResp.UserName := Edit2.Text;

 HTTPRIO1.HTTPWebNode.GetHTTPReqResp.Password := Edit3.Text;

 Servis := GetIHizliService(False, Edit1.Text, HTTPRIO1);



 ETTN := VirtualTable1UUID.AsString;

 Cevap := Servis.GetDocumentFile(ComboBox4.ItemIndex + 1, ETTN, 'XML', False);



 if Cevap.IsSucceeded then

 begin

   dosyayaz := TFileStream.Create(ExtractFilePath(Application.ExeName) + ETTN + '.' + 'XML', fmCreate);

   dosyayaz.Write(Cevap.DocumentFile, length(Cevap.DocumentFile));

   dosyayaz.Free;

   ShellExecute(Handle, 'open', PWideChar(ExtractFilePath(Application.ExeName) + ETTN + '.' + 'XML'), nil,

     nil, SW_SHOWNORMAL);

 end else begin

   ShowMessage('Baaşrısız');

 end;



end;



procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);

begin

 if Key = VK_ESCAPE then

   Close;

end;



procedure TForm1.FormShow(Sender: TObject);

begin

 DateTimePicker1.Date := Now - 5;

 DateTimePicker2.Date := Now;

end;



procedure TForm1.HTTPRIO1AfterExecute(const MethodName: string; SOAPResponse: TStream);

var

 Str: string;

 Sl: TStringList;

begin

 Sl := TStringList.Create;

 try

   SOAPResponse.Seek(0, soFromBeginning);

   Sl.LoadFromStream(SOAPResponse);

   Str := Sl.Text;

 finally

   FreeAndNil(Sl);

 end;

 LogEkle('CEVAP OLARAK GELEN XML KODLARI' + #13#10#13#10 + Str + #13#10);

end;



procedure TForm1.HTTPRIO1BeforeExecute(const MethodName: string; SOAPRequest: TStream);

var

 StrList1: TStringList;

begin

 inherited;

 StrList1 := TStringList.Create;

 try

   SOAPRequest.Position := 0;

   StrList1.LoadFromStream(SOAPRequest);

   LogEkle('GÖNDERİLECEK XML KODLARI' + #13#10#13#10 + StringReplace(StrList1.Text, '><', '>' + #13#10 + '<',

     [rfReplaceAll]) + #13#10);

 finally

   StrList1.Free;

 end;

end;



procedure TForm1.LogEkle(Str1: String);

begin

 MemoLog.Lines.Add(FormatDateTime('hh:nn:ss', Now) + ' ' + Str1);

end;


end.

Test Portal adres : http://portaltest.hizliteknoloji.com.tr/...ting/login yukarıdaki kullanıcı adı ve şifre girilir.

image-5.png

image-6.png
PDF Göster butonu ile alınan ekran görüntüsü.

image-7-1024x781.png
XML İndir butonu ile alınan ekran görüntüsü

HizliService.pas dosyasını ve EXE dosyasını indirin.

Merhabalar,

Hocam elinize kolunuza sağlık.
Acaba zahmet olmaz ise lütfen .dfm dosyalarını da paylaşma gibi bir durumunuz söz konusu olabilir mi?
Bizim de acil olarak geçiş yapmamız gerekli sisteme.

Teşekkür ederim.

Yayında. TÜM SOURCE KODLAR la birlikte... Bununla birlilte zaten yukarıda SOURCE'lar yayındaydı.
Teknik Öğretmen
Bilgisayar Formatörü
WWW
Cevapla
#13
(23-11-2020, Saat: 15:41)guverdik Adlı Kullanıcıdan Alıntı:
(23-11-2020, Saat: 13:52)hi_selamlar Adlı Kullanıcıdan Alıntı: Merhabalar,

Hocam elinize kolunuza sağlık.
Acaba zahmet olmaz ise lütfen .dfm dosyalarını da paylaşma gibi bir durumunuz söz konusu olabilir mi?
Bizim de acil olarak geçiş yapmamız gerekli sisteme.

Teşekkür ederim.

Yayında. TÜM SOURCE KODLAR la birlikte... Bununla birlilte zaten yukarıda SOURCE'lar yayındaydı.

Zahmet verdik. Eksik olmayın hocam çok teşekkürler.

Kolay gelsin.
Amaç, bilginin de/aklın da zekat'ını vermek.
Cevapla
#14
(23-11-2020, Saat: 10:04)guverdik Adlı Kullanıcıdan Alıntı:
(23-11-2020, Saat: 08:34)akuyumcu63 Adlı Kullanıcıdan Alıntı: merhaba hocam;
öncelikle yaptığınız değerli çalıma için çok teşekkür ederim.
HizliService.pas dosyasını ve EXE dosyasını tekrar yükleyebilirmisiniz. dosyaları indiremiyoruz.



Güncellendi. Kolay gelsin.

Teşekkür ederim Hocam
WWW
Cevapla
#15
(23-11-2020, Saat: 15:41)guverdik Adlı Kullanıcıdan Alıntı:
(23-11-2020, Saat: 13:52)hi_selamlar Adlı Kullanıcıdan Alıntı: Merhabalar,

Hocam elinize kolunuza sağlık.
Acaba zahmet olmaz ise lütfen .dfm dosyalarını da paylaşma gibi bir durumunuz söz konusu olabilir mi?
Bizim de acil olarak geçiş yapmamız gerekli sisteme.

Teşekkür ederim.

Yayında. TÜM SOURCE KODLAR la birlikte... Bununla birlilte zaten yukarıda SOURCE'lar yayındaydı.

Mehmet hocanın gönderdiği pas dosyasında sorunsuz çalışan PDF oluşturma metodu, yeni wsdl ile oluşan pas dosyası pdf dosyasını bozuk oluşturuyor. Firma ile konu ile görüştüğümde delphi import ayarlarıyla ilgili olabileceğini söylediler, bu sorunu çözen var mı acaba.

Import WSDL adresi
Alıntı:https://econnecttest.hizliteknoloji.com....singleWsdl

Teşekkürler.

(26-11-2020, Saat: 11:40)pro_imaj Adlı Kullanıcıdan Alıntı:
(23-11-2020, Saat: 15:41)guverdik Adlı Kullanıcıdan Alıntı: Yayında. TÜM SOURCE KODLAR la birlikte... Bununla birlilte zaten yukarıda SOURCE'lar yayındaydı.

Mehmet hocanın gönderdiği pas dosyasında sorunsuz çalışan PDF oluşturma metodu, yeni wsdl ile oluşan pas dosyası pdf dosyasını bozuk oluşturuyor. Firma ile konu ile görüştüğümde delphi import ayarlarıyla ilgili olabileceğini söylediler, bu sorunu çözen var mı acaba.

Import WSDL adresi
Alıntı:https://econnecttest.hizliteknoloji.com....singleWsdl

Teşekkürler.

Çözüm;
Servisteki TByteSoapArray  kısmı TByteDynArray olarak değiştirerek çözüldü.
Kullanmak isteyenler için sorunsuz dosyayı ekliyorum.

İyi çalışmalar.


Ek Dosyalar
.zip   HizliService.zip (Dosya Boyutu: 34,84 KB / İndirme Sayısı: 28)
Cevapla
#16
(26-11-2020, Saat: 11:40)pro_imaj Adlı Kullanıcıdan Alıntı:
(23-11-2020, Saat: 15:41)guverdik Adlı Kullanıcıdan Alıntı: Yayında. TÜM SOURCE KODLAR la birlikte... Bununla birlilte zaten yukarıda SOURCE'lar yayındaydı.

Mehmet hocanın gönderdiği pas dosyasında sorunsuz çalışan PDF oluşturma metodu, yeni wsdl ile oluşan pas dosyası pdf dosyasını bozuk oluşturuyor. Firma ile konu ile görüştüğümde delphi import ayarlarıyla ilgili olabileceğini söylediler, bu sorunu çözen var mı acaba.

Import WSDL adresi
Alıntı:https://econnecttest.hizliteknoloji.com....singleWsdl

Teşekkürler.

(26-11-2020, Saat: 11:40)pro_imaj Adlı Kullanıcıdan Alıntı: Mehmet hocanın gönderdiği pas dosyasında sorunsuz çalışan PDF oluşturma metodu, yeni wsdl ile oluşan pas dosyası pdf dosyasını bozuk oluşturuyor. Firma ile konu ile görüştüğümde delphi import ayarlarıyla ilgili olabileceğini söylediler, bu sorunu çözen var mı acaba.

Import WSDL adresi

Teşekkürler.

Çözüm;
Servisteki TByteSoapArray  kısmı TByteDynArray olarak değiştirerek çözüldü.
Kullanmak isteyenler için sorunsuz dosyayı ekliyorum.

İyi çalışmalar.

Ellerinize (Klavyenize) sağlık.   Smile
Teknik Öğretmen
Bilgisayar Formatörü
WWW
Cevapla
#17
(26-11-2020, Saat: 11:40)pro_imaj Adlı Kullanıcıdan Alıntı:
(23-11-2020, Saat: 15:41)guverdik Adlı Kullanıcıdan Alıntı: Yayında. TÜM SOURCE KODLAR la birlikte... Bununla birlilte zaten yukarıda SOURCE'lar yayındaydı.

Mehmet hocanın gönderdiği pas dosyasında sorunsuz çalışan PDF oluşturma metodu, yeni wsdl ile oluşan pas dosyası pdf dosyasını bozuk oluşturuyor. Firma ile konu ile görüştüğümde delphi import ayarlarıyla ilgili olabileceğini söylediler, bu sorunu çözen var mı acaba.

Import WSDL adresi
Alıntı:https://econnecttest.hizliteknoloji.com....singleWsdl

Teşekkürler.

(26-11-2020, Saat: 11:40)pro_imaj Adlı Kullanıcıdan Alıntı: Mehmet hocanın gönderdiği pas dosyasında sorunsuz çalışan PDF oluşturma metodu, yeni wsdl ile oluşan pas dosyası pdf dosyasını bozuk oluşturuyor. Firma ile konu ile görüştüğümde delphi import ayarlarıyla ilgili olabileceğini söylediler, bu sorunu çözen var mı acaba.

Import WSDL adresi

Teşekkürler.

Çözüm;
Servisteki TByteSoapArray  kısmı TByteDynArray olarak değiştirerek çözüldü.
Kullanmak isteyenler için sorunsuz dosyayı ekliyorum.

İyi çalışmalar.

Hocam yüklediğiniz serviste zaten TByteSoapArray  kısmı [b]TByteSoapArray  şeklinde. [b]TByteDynArray  değiştirince hata devam ediyor.[/b][/b]
Cevapla
#18
(06-12-2020, Saat: 21:28)apachi2006 Adlı Kullanıcıdan Alıntı:
(26-11-2020, Saat: 11:40)pro_imaj Adlı Kullanıcıdan Alıntı: Mehmet hocanın gönderdiği pas dosyasında sorunsuz çalışan PDF oluşturma metodu, yeni wsdl ile oluşan pas dosyası pdf dosyasını bozuk oluşturuyor. Firma ile konu ile görüştüğümde delphi import ayarlarıyla ilgili olabileceğini söylediler, bu sorunu çözen var mı acaba.

Import WSDL adresi

Teşekkürler.


Çözüm;
Servisteki TByteSoapArray  kısmı TByteDynArray olarak değiştirerek çözüldü.
Kullanmak isteyenler için sorunsuz dosyayı ekliyorum.

İyi çalışmalar.

Hocam yüklediğiniz serviste zaten TByteSoapArray  kısmı [b]TByteSoapArray  şeklinde. [b]TByteDynArray  değiştirince hata devam ediyor.[/b][/b]

Merhaba,

Siz hiç bir şey'i değiştirmeyeceksiniz, eklediğim pas dosyasını direk projenize eklerseniz sorunsuz çalışması lazım.

İyi çalışmalar.
Cevapla
#19
(07-12-2020, Saat: 09:14)pro_imaj Adlı Kullanıcıdan Alıntı:
(06-12-2020, Saat: 21:28)apachi2006 Adlı Kullanıcıdan Alıntı: Hocam yüklediğiniz serviste zaten TByteSoapArray  kısmı [b]TByteSoapArray  şeklinde. [b]TByteDynArray  değiştirince hata devam ediyor.[/b][/b]

Merhaba,

Siz hiç bir şey'i değiştirmeyeceksiniz, eklediğim pas dosyasını direk projenize eklerseniz sorunsuz çalışması lazım.

İyi çalışmalar.

Aynen dediğiniz gibi pas dosyasını ekledim. Aynı hatayı veriyor. Pdf oluşturuyor ama açamıyor.
Cevapla
#20
(16-12-2020, Saat: 16:01)apachi2006 Adlı Kullanıcıdan Alıntı:
(07-12-2020, Saat: 09:14)pro_imaj Adlı Kullanıcıdan Alıntı: Merhaba,

Siz hiç bir şey'i değiştirmeyeceksiniz, eklediğim pas dosyasını direk projenize eklerseniz sorunsuz çalışması lazım.

İyi çalışmalar.

Aynen dediğiniz gibi pas dosyasını ekledim. Aynı hatayı veriyor. Pdf oluşturuyor ama açamıyor.

Lütfen cevaplarda hata mesajını veya resmini ekleyin. Hata ?
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  Multi Device uygulaması ile WEB SİTE'sinin html içerik bilgisini almak guverdik 0 159 24-04-2021, Saat: 11:59
Son Yorum: guverdik
  eFatura Entegratör Firmaları MuhammedYasir 6 768 05-04-2021, Saat: 21:41
Son Yorum: MuhammedYasir
  Fastreport e-fatura dizaynı yapmak btnClick 4 1.406 16-10-2020, Saat: 14:12
Son Yorum: delphicim
  Delphi ile e-Fatura Entegrasyon guverdik 37 11.065 29-06-2020, Saat: 21:04
Son Yorum: engerex
  Microsoft Outlook Takvim Uygulaması itsmylife38 2 1.337 05-12-2019, Saat: 16:08
Son Yorum: itsmylife38



Konuyu Okuyanlar: 1 Ziyaretçi