Ingenico Yeni nesil akıllı yazarkasa (ÖKC) entegrasyon Delphi bileşeni

Paket programlarınızın tanıtımını bu forumda yapabilirsiniz. Bu foruma soru sormayın!
ertank
Kıdemli Üye
Mesajlar: 1650
Kayıt: 12 Eyl 2015 12:45

Ingenico Yeni nesil akıllı yazarkasa (ÖKC) entegrasyon Delphi bileşeni

Mesaj gönderen ertank »

Merhaba,

Kendi geliştirdiğim Delphi 2009 ve sonrası sürümler ile çalışan IngenicoGmp.dll dosyasını (en son versiyon P12.19) direk kullanan kodları bir bileşen haline çevirdim. Bileşen sadece editör üzerinden kod yazarak kullanılabiliyor ("Tool Palette" içine fare kullanımı için eklenmiyor).

Bileşen kodu içinde kullanılan birden fazla özellik maalesef Delphi 7 ile kullanılmasını engellemektedir. Bu sebeple sadece Delphi 2009 ve sonrası sürümlerde kullanılabilir durumda.

Ücreti karşılığında bileşeni hedef Delphi sürümü DCU dosyaları olarak (iki adet dcu dosyasından oluşmaktadır) ve örnek kullanım projesi kaynak kodu ile birlikte temin edebilirim. Bileşen 1 yıllık destek ile satılıyor olacak. Alım tarihiden itibaren bir yıllık süre boyunca çıkacak ana sürüm güncellemeleri ücretsiz temin edilecektir.

İlgilenenler özel mesaj göndererek bağlantıya geçebilir.

Bileşen özellikleri:
- Eşleşme (Pairing)
- Kdv bilgilerini okuma (TLV data)
- Başlangıç testi (ilk eşleşme sonrası cihazda yarım kalmış fiş var mı kontrolü)
- Echo (cihaz bağlantısında sorun var mı kontrolü)
- Z Raporu alma (ÖKC cihazı üzerindeki kullanıcı şifresi standart kabul edilmiştir. İhtiyaca göre güncellenebilir)
- X Raporu alma (ÖKC cihazı üzerindeki kullanıcı şifresi standart kabul edilmiştir. İhtiyaca göre güncellenebilir)
- Çekmece açma özelliği
- Nakit ödeme fiş kesme
- Kredi kartı ödemeli fiş kesme
- Nakit+Kredi kartı ödemeli fiş kesme
- Fiş keserken fiş satırlarını "Batch Mode" olarak yazdırma (Batch Mode yazdırma tekil komut yazdırmadan daha hızlıdır. Ancak çok satırlı fişlerde ÖKC cihaz hafıza limiti sebebi ile sorun çıkarabilmektedir)
- KDV eşleştirmesini Kısım (Departman) adına göre yapma
- KDV eşleştirmesini Orana göre yapma
- Fiş satırı bazında tanımlanabilenler
* Barkod (opsiyonel)
* Ürün adı
* Birim
* Miktar
* Tutar (kdv dahil)
* Kdv Oranı
* Kdv Kısım (Departman) Adı
* İndirim yazısı (opsiyonel)

Fiş Geneli için tanımlanabilenler
* Barkod ön eki, Barkod son eki
* Fiş nakit tutarı
* Fiş kredi tutarı
* Fiş indirim tutarı (fiş genel toplamı üzerinden)
* Fiş indirim yazısı (Gmp DLL özelliği sebebi ile sadece tekil mod ile çalışmaktadır)
* Dip not 1 (siyah zemin üzeri beyaz yazı)
* Dip not 1 ön eki
* Dip not 2 (beyaz zemin üzeri siyah yazı - normal yazı)
* Dip not 2 son eki

Genel özellikleri:
* Log dosya adı isteğe göre tanımlanabilir.
* Log işlemi açık/kapalı hale getirilebilir.
* Kullanılan DLL versiyonu öğrenilebilir.
* Fiş başarılı şekilde yazdırıldıktan sonra; EKU (mali hafıza), Z Numarası, Fiş Numarası, Rasmi Fiş tarih ve saati, ÖKC Fiş UniqueID, Fiş toplam kdv tutarı, Kredi kartı ödemelerinde kart banka adı bilgileri bileşen özelliklerinden okunabilir.
* İsteğe göre fiş kesildiği zaman bilgisayar tarih ve saati ÖKC tarih ve saatine ayarlanabilir (uzun süreli çalışmalarda bilgisayar saati ileri/geri kalabilir. Bunun önüne geçmek için)
* Kesilen son fiş ile ilgili yazdırma süresi milisaniye cinsinden öğrenilebilir. (İlerleyen zamanlarda ÖKC cihazı daha yavaş yazmaya başlayabilir. Bu satır sayısı bilgisi ile birlikte database içine kaydedilerek ilerleyen zamanlardaki performans hesaplanabilir)
* ÖKC cihazı seri numarası bileşen üzerinden okunabilir. Bu bilgi database içine kaydedilerek birden fazla ÖKC kullanılan iş yerlerinde fişin hangi ÖKC ile kesildiği rahatlıkla belirlenebilir.
* Otomatik hata kontolü vardır. Fiş kesimi sırasında hata oluşur ise fiş otomatik iptal edilir. Bileşen üzerinden "LastError" parametresi ile hatanın ne olduğu öğrenilebilir.
* Manuel hata kontrolü mümkündür. "OnPrintError()", "OnVatNotFound()" olayları kullanılarak fiş yazdırma sırasında oluşabilecek hatalar ile ilgili ekrana özel mesajlar göstermek mümkündür.


Bileşen kullanımına örnek kod aşağıdaki gibidir:
Form içinde tanımı:

Kod: Tümünü seç

uses
  uIngenicoGmp;
  
type
  TForm1 = class(TForm)
  //...
  private
    { Private declarations }
    Pos: TIngenicoGmp;

    procedure NotFinishedOperation(Sender: TObject; var CancelOldOperation: Boolean);
    procedure PrintError(Sender: TObject; var Continue: Boolean);
    procedure VatNotFound(Sender: TObject; const ItemIndex: SmallInt; const Barcode, VatOnDeviceName: string; const VatAmount: Double);
Kullanıma hazırlık:

Kod: Tümünü seç

procedure TForm1.FormCreate(Sender: TObject);
var
  I: Integer;
begin
  Pos := nil;
  Pos := TIngenicoGmp.Create();

  Pos.LogFile := FormatDateTime('yyyy-mm-dd', Now()) + '.log';
  Pos.Logging := True;

  Pos.InterfaceToUse := 1;  // XML bağlantı ayar dosyası içindeki ilk tanımı kullan
  Pos.ReadInterfaces();  // XML dosyasındaki interface bilgilerini bileşen hafızasına yükle

  Pos.BatchMode := True;

  Pos.OnNotFinishedOperation := NotFinishedOperation;  // Yarım kalmış fiş var ise tetiklenecek olay (olay içinde ne yapılacağına karar verilecek)
  Pos.OnPrintError := PrintError; // Fiş yazdırılır iken hata oluşur ise tetiklenecek olay (KDV uyuşmadı, kağıt bitti, vs)
  Pos.OnVatNotFound := VatNotFound; // ÖKC içinde tanımlı KDV bilgileri ile PrintReceipt() fonksiyonuna parametre olarak gönderilen yazdırılacak fiş satırları içindeki KDV bilgileri eşleştirilemez ise
                                    // tek bir satırın KDV bilgisi dahi eşleştirilemese bu olay çalıştırılacak *ve* fiş iptal edilecektir

  Log('DLL version: ' + Pos.DllFileVersion);

  for I := 0 to Pred(Pos.Interfaces.Count) do
  begin
    Log('Interface[' + I.ToString() + ']: ' + Pos.Interfaces[I]);
  end;
end;
Eşleştirme örnek kodu:

Kod: Tümünü seç

procedure TForm1.btnPairClick(Sender: TObject);
begin
  if Pos.Pair() then
  begin
    Log('Pairing OK');
    Log('ÖKC Seri No: ' + Pos.Serial);
  end
  else
  begin
    Log('Pairing hatası: ' + Pos.LastError);
  end;
end;
Echo örnek kodu:

Kod: Tümünü seç

procedure TForm1.btnEchoClick(Sender: TObject);
begin
  if Pos.Echo() then
  begin
    Log('Echo OK');
    Log('ÖKC tarih saat: ' + FormatDateTime('yyyy-mm-dd hh:nn:ss', Pos.DeviceDateTimeAtEcho));
  end
  else
  begin
    Log('Echo hatası: ' + Pos.LastError);
  end;
end;
Tek satır nakit fiş yazdırma örnek kodu:

Kod: Tümünü seç

procedure TForm1.btnCashOnlyReceiptClick(Sender: TObject);
var
  Tutar: Double;
  Indirim: Double;
  KdvOran: Single;
  Baslik: TReceiptHeader;  // TIngenicoGmp sınıfı içinde tanımlanan record türü.
  Detay: TReceiptLines;  // TIngenicoGmp sınıfı içinde tanımlanan record türü.
begin
  if not TryStrToFloat(edtPrice.Text, Tutar) then
  begin
    ShowMessage('Fiş tutarı hatalı.');
    Exit();
  end;

  if not TryStrToFloat(edtKdvOran.Text, KdvOran) then
  begin
    ShowMessage('KDV Oranı hatalı.');
    Exit();
  end;

  if not TryStrToFloat(edtDiscount.Text, Indirim) then
  begin
    ShowMessage('İndirim tutarı hatalı.');
    Exit();
  end;

  Baslik.DiscountAmount := Indirim; // Sıfır bile olsa atama yapılmalı
  Baslik.DiscountText := AnsiString(edtDiscountText.Text);
  Baslik.TotalCash := Tutar - Indirim;
  Baslik.TotalCredit := 0; // Sıfır bile olsa atama yapılmalı

  SetLength(Detay, 1);  // Çok satır için yazdırılmak istenilen satır kadar rakam yazılıp array içindeki tüm satır bilgileri doldurulabilir.
  Detay[0].Barcode := edtBarcode.Text;
  Detay[0].Name := edtName.Text;
  Detay[0].Amount := Tutar;
  Detay[0].&Unit := edtBirim.Text;
  Detay[0].Count := 1;
  Detay[0].VATAmount := KdvOran;
  Detay[0].VATInDeviceName := edtKdvAdi.Text;
  Detay[0].DiscountText := edtIndirim.Text;

  Pos.BottomNote1 := edtDipNot1.Text;
  Pos.BottomNote1Prefix := EmptyStr;

  Pos.BottomNote2 := edtDipNot2.Text;
  Pos.BottomNote2Prefix := '!!! ';  // ikinci dip not için ön ek

  if Pos.PrintReceipt(Baslik, Detay) then
  begin
    Log('Nakit fiş yazdırıldı.');
  end
  else
  begin
    Log('Nakit fiş yazdırma hatası: ' + Pos.LastError);
  end;
end;
Bileşeni hafızadan silme:

Kod: Tümünü seç

procedure TForm1.FormDestroy(Sender: TObject);
begin
  Pos.Free();
end;
Kullanıcı avatarı
freeman35
Admin
Mesajlar: 2356
Kayıt: 12 Haz 2003 04:05
Konum: merkez camii yanı

Re: Ingenico Yeni nesil akıllı yazarkasa (ÖKC) entegrasyon Delphi bileşeni

Mesaj gönderen freeman35 »

Kod: Tümünü seç

private
    { Private declarations }
    Pos: TIngenicoGmp;
Pos: bunu değiştirin, bu pascal da tanımlanmış bir isimdir.( http://docwiki.embarcadero.com/Librarie ... System.Pos ) yeni versiyonlarda derleyici hata vermiyor olsada, bu tip kullanımlardan kaçının.
ZAGOR TENAY TÜRK'tür... TÜRK kalacak...
Zoru başarırım, İmkansız zaman alır
FreeMan 35.5

Soru sormaya üşenmiyorsan, sorunun çözümünü yazmaya da üşenme !!!
ertank
Kıdemli Üye
Mesajlar: 1650
Kayıt: 12 Eyl 2015 12:45

Re: Ingenico Yeni nesil akıllı yazarkasa (ÖKC) entegrasyon Delphi bileşeni

Mesaj gönderen ertank »

freeman35 yazdı: 21 May 2018 05:04 Pos: bunu değiştirin, bu pascal da tanımlanmış bir isimdir.( http://docwiki.embarcadero.com/Librarie ... System.Pos ) yeni versiyonlarda derleyici hata vermiyor olsada, bu tip kullanımlardan kaçının.
Merhaba,

Konu ile ilgilenenler cihazları "pos" cihazı olarak adlandırdığı için benimsemesi daha kolay olur diye düşünerek örnek kodlarda bu adı tercih etmiştim. Yorumunuzda haklısınız. Kullanımı gösteren örnek uygulama kodu içindeki adını "IngenicoGmp" olarak değiştirdim.

Uyarı için teşekkürler.
Kullanıcı avatarı
mussimsek
Admin
Mesajlar: 7586
Kayıt: 10 Haz 2003 12:26
Konum: İstanbul
İletişim:

Re: Ingenico Yeni nesil akıllı yazarkasa (ÖKC) entegrasyon Delphi bileşeni

Mesaj gönderen mussimsek »

Bu tarz değişken tanımlarında genellikle başına "F" koymak adeti var. Sadece pos gibi kelimeler için değil, diğerleri içinde...

FPos
FKasa
FZRaporu
...

gibi kullanabilirsiniz.

Kolay gelsin.
BDogancay55
Üye
Mesajlar: 1
Kayıt: 02 Ara 2019 05:50

Re: Ingenico Yeni nesil akıllı yazarkasa (ÖKC) entegrasyon Delphi bileşeni

Mesaj gönderen BDogancay55 »

Merhba ertank
İletişim İçin mail yollarmısın bulentdogancay@gmail.com
evayazilim
Üye
Mesajlar: 3
Kayıt: 24 Eyl 2015 08:13

Re: Ingenico Yeni nesil akıllı yazarkasa (ÖKC) entegrasyon Delphi bileşeni

Mesaj gönderen evayazilim »

Ertank iletişim için mail gönderirmisiniz. ahmetipekci10[et]gmail.com
prest121
Üye
Mesajlar: 1
Kayıt: 23 Ara 2019 10:42

Re: Ingenico Yeni nesil akıllı yazarkasa (ÖKC) entegrasyon Delphi bileşeni

Mesaj gönderen prest121 »

c# ile yaptıgım projeyi ingenico ile dediginiz işlemleri yaptırmak istiyorum bu konuda bana ulaşabilir misniz ?
batuhanturk34[et]gmail.com
Kullanıcı avatarı
tolgaozb
Üye
Mesajlar: 70
Kayıt: 26 Ara 2003 12:22
Konum: Karşıyaka
İletişim:

Re: Ingenico Yeni nesil akıllı yazarkasa (ÖKC) entegrasyon Delphi bileşeni

Mesaj gönderen tolgaozb »

Merhabalar

İletişim bilgilerinizi tolgaozbaltalar@gmail.com adresine yollar mısınız.

Teşekkürler
İyi çalışmalar
T.Tolga Özbaltalar - http://www.veridizayn.com
Ahmet Bilgehan
Üye
Mesajlar: 10
Kayıt: 19 Nis 2016 11:00
Konum: izmir
İletişim:

Re: Ingenico Yeni nesil akıllı yazarkasa (ÖKC) entegrasyon Delphi bileşeni

Mesaj gönderen Ahmet Bilgehan »

Merhaba ben ahmet iletişim için mail yollarmısın
ahmetbilgehan35@gmail.com
kraker
Üye
Mesajlar: 1
Kayıt: 02 Kas 2020 11:28

Re: Ingenico Yeni nesil akıllı yazarkasa (ÖKC) entegrasyon Delphi bileşeni

Mesaj gönderen kraker »

merhaba

İngenico ide 280 cihazım var, entegrasyon için görüşmek istiyorum iletişim bilgilerini gönderebilirmisin.

teşekkurler..
Kullanıcı avatarı
kubilay59
Üye
Mesajlar: 3
Kayıt: 06 Kas 2020 11:53
Konum: Tekirdağ

Re: Ingenico Yeni nesil akıllı yazarkasa (ÖKC) entegrasyon Delphi bileşeni

Mesaj gönderen kubilay59 »

Merhaba ertank, öncelikle harika bir iş çıkarmışsınız, tebrik ediyorum. İletişim için mail adresinizi gönderebilir misiniz acaba? Entegrasyon ile ilgili birkaç sorum olacak. Bileşeni Yunanistan vatandaşlığı için danışmanlık şirketimizde kullanmak üzere görüşmek istiyorum.
aeyeci
Üye
Mesajlar: 5
Kayıt: 09 Ara 2015 09:42

Re: Ingenico Yeni nesil akıllı yazarkasa (ÖKC) entegrasyon Delphi bileşeni

Mesaj gönderen aeyeci »

merhaba aeyeci@hotmail.com adresine fiyat ve detay bilgiyi yazabilirmisiniz
mkkocabas
Üye
Mesajlar: 1
Kayıt: 13 Nis 2014 01:31

Re: Ingenico Yeni nesil akıllı yazarkasa (ÖKC) entegrasyon Delphi bileşeni

Mesaj gönderen mkkocabas »

mehmet , fiyat ve detay iletebilirmisiniz ? mehmetkocabas2@hotmail.com
kkkerem
Üye
Mesajlar: 1
Kayıt: 03 Haz 2022 12:11

Re: Ingenico Yeni nesil akıllı yazarkasa (ÖKC) entegrasyon Delphi bileşeni

Mesaj gönderen kkkerem »

Merhabalar

İletişim bilgilerinizi kerem@maxiva.net adresine yollar mısınız.

Teşekkürler
İyi çalışmalar
Kullanıcı avatarı
mcuyan
Üye
Mesajlar: 28
Kayıt: 04 Eki 2010 10:47

Re: Ingenico Yeni nesil akıllı yazarkasa (ÖKC) entegrasyon Delphi bileşeni

Mesaj gönderen mcuyan »

Merhabalar.
Konu hakkında görüşmek isterim.
mcuyan@hotmail.com
M.Cihan UYAN
SNC Tech&Soft
Cevapla