Teknik Döküman - huginsdk/fpu GitHub Wiki

Teknik Döküman

GİRİŞ

Bu döküman, GMP entegrasyon protokolleri dahilindeki Yeni Nesil Hugin ÖKC'ler ile bilgisayar bağlantılı sistemler arasında iletişimi, Hugin arayüzleri ile sağlamak ve bu yapıların oluşturulmasına kılavuzluk etmek amacı ile hazırlanmıştır. Dökümanın ve dökümanda adı geçen ürünlerin tüm hakları HUGİN YAZILIM TEKNOLOJİLERİ A.Ş. firmasına aittir.

ENTEGRASYON KÜTÜPHANELERİ

Entegrasyon yapılacak kütüphanlere buradan erişebilirsiniz. C++, C#, Java, Delphi entegrasyon kütüphanleri link altında mevcuttur. Kablolu entegrasyon LAN(TCP/IP) ve RS232 protokolleri üzerinden gerçekleşmektedir. Genel itibari ile akış aşağıdaki şekilde gerçekleşmektedir.

sequenceDiagram

UYGULAMA ->> KÜTÜPHANE: (1)Fiş başlat!
KÜTÜPHANE ->>YNÖKC: (2)Fiş Başlat!
YNÖKC->>KÜTÜPHANE: (3)Fiş Başlatıldı!
KÜTÜPHANE->>UYGULAMA: (4)Fiş Başlatıldı!

Loading

Tüm kütüphanelerde kullanılan arayüzler aynıdır. Methodların aldığı argümanlar ve dönüş değerleri aynı yapıdadır. Bu dönüş değerleri boolean ya da string yapıdadır.

Method dönüş değerleri string formatta, araya '|' karakteri konularak birleştirilip tek bir string olarak dönmektedir.

<String1>|<String2>|<String3>|................

Bu değerlerden, ilk iki string değeri Hata Kodu ve ÖKC Durum Kodu dur.

<ErrorCode>|<StatusValue>|<Parameter1>|<Parameter2>|................

HATA KODLARI

Hata Kodu Enum Değer Açıklama
Detay
1 ERR_DATA_CORRUPT Kayıp ya da eksik data (Uzunluk kadar gelmeli)
Methodu tekrar çağır
2 ERR_CRC Data değişmiş
Methodu tekrar çağır
3 ERR_INVALID_STATE ÖKC durumu uygun değil
Çağırılan method ÖKC durumu için uygun değil. Örneğin Örneğin ÖKC ödeme durumunda iken belge başlat ya da ürün yazdır methodları çağırılamaz.
4 ERR_INVALID_CMD Geçersiz komut
ÖKC ilgili method komutunu desteklememektedir
5 ERR_INVALID_PRM Geçersiz parametre
Methoda verilen parametre(ler) geçersiz.
6 ERR_OPERATION_FAILED İşlem başarısız
Methodu tekrar çağır
7 ERR_CLEAR_REQUIRED Hata ya da durum sonrası devam onayı
ÖKC işleme devam edebilmesi için onay bekler. Genelde rulo kağıt bitimi sonrası yeni rulo takıldığında ya da 24 saat Z raporu sonrası fırlatılır.
8 ERR_NO_PAPER Kağıt yok
ÖKC rulosunda kağıt kalmayınca bu hatayı döner. Yeni kağıt rulosu takıldıktan sonra ÖKC hata kodu 7 ye dönecektir. Sizden işleme devam edebilmek için onay isteyecektir. ClearError methodunu çağırarak işleme devam edebilirsiniz.
9 ERR_MATCH_ERROR Eşleme hatası
Eşlenmiş cihaz bulunmamaktadır ya da başarısız eşleme
--- --- ---
---
11 ERR_FM_LOAD_ERROR Mali bellek yüklenirken hata oluştu
ÖKC bloklanır, servis çağırılmaldır.
12 ERR_FM_REMOVED Mali bellek bağlantısı bulunamadı
ÖKC bloklanır, servis çağırılmalıdır.
13 ERR_FM_MISMATCH Mali bellek uyuşmazlığı
Servis çağırılmalıdır.
14 ERR_NEW_FM Yeni mali bellek, formatlanmalı
ÖKC bloklanır, servis çağırılmalıdır.
15 ERR_FM_INIT MAli bellek formatlanırken hata oluştu
ÖKC bloklanır, servis çağırılmalıdır.
16 ERR_FM_FISCALIZE Mali bellek malileştirme başarısız
ÖKC bloklanır, servis çağırılmalıdır.
17 ERR_FM_DAILY_LIMIT Günlük Z limiti
* Günlük Z Raporu limitiniz dolduysa bu hata fırlatılır. Z Raporu almak için bir sonraki gün beklenir.*
18 ERR_FM_FULL Mali bellek dolu
ÖKC bloklanır, servis çağırılmalıdır.
19 ERR_FM_FORMATTED Mali bellek önceden formatlanmış
ÖKC bloklanır, servis çağırılmalıdır.
20 ERR_FM_CLOSED Mali bellek kapalı
ÖKC bloklanır, servis çağırılmalıdır
21 ERR_FM_INVALID Geçersiz mali bellek
ÖKC bloklanır, servis çağırılmalıdır.
22 ERR_FM_SAM_CARD SAM karttan sertifika alınamıyor
ÖKC bloklanır, servis çağırılmalıdır.
--- --- ---
---
31 ERR_EJ_LOAD EKÜ yüklenirken hata oluştu
Servis çağırılmalıdır.
32 ERR_EJ_REMOVED EKÜ çıkarıldı
EKÜ çıkarılmıştır. yeniden takılıp ClearError methodu çağırılmalıdır.
33 ERR_EJ_MISMATCH EKÜ uyuşmazlığı
Farklı bir EKÜ takıldığında bu hata oluşur.
34 ERR_EJ_OLD EKÜ eski
Eski EKÜ takıldığında alınır. Sadece EKÜ raporları alınabilir.
35 ERR_NEW_EJ Yeni EKÜ
Yeni EKÜ yü onayla ve ClearError methodunu çağır.
36 ERR_EJ_ZREQUIRED EKÜ değiştirilemedi, Z raporu gerekli
EKÜ üzerinde değişiklik için Z raporu alınmalıdır. Yeni EKÜ takmak için de son belge Z raporu olmalıdır
37 ERR_EJ_INIT EKÜ başlatılamadı
Farklı bir EKÜ tak. EKÜ sorunlu ya da bozuk olabilir.
38 ERR_EJ_FULL EKÜ dolu
Z raporu almalı ve yeni bir EKÜ takmalısın.
39 ERR_EJ_FORMATTED EKÜ daha önce formatlanmış
yeni EKÜ formatla
--- --- ---
---
51 ERR_RCPT_TOTAL_LIMIT Fiş limiti aşıldı
Aratoplam fiş limitini aşarsa bu hata alınır.
52 ERR_RCPT_SALE_COUNT Fişteki satış kalemi sayısı aşıldı
Maksimum satış kalemi sayısı 128. Ödeme alınıp belge kapatılmalıdır.
53 ERR_INVALID_SALE Geçersiz satış
Satış tutarı 0 olduğu zaman bu hata alınır.
54 ERR_INVALID_VOID Geçersiz iptal işlemi
İptal edilecek satış yok ise bu hata alınır.
55 ERR_INVALID_CORR Geçersiz düzeltme işlemi
Eğer son işlem düzeltilebilir bir işlem değil ise bu hata alınır. Örnek olarak son işlem ödeme ise.
56 ERR_INVALID_ADJ Geçersiz indirim/arttırım
inidirm/arttırım değerinizi kontrol ediniz.
57 ERR_INVALID_PAYMENT Geçersiz ödeme
Ödeme parametrelerinizi kontrol ediniz
58 ERR_PAYMENT_LIMIT Ödeme kalem limiti aşıldı
Maksimum parçalı ödeme sayısı 10 dur
59 ERR_DAILY_PLU_LIMIT Günlük satış limiti aşıldı
Aynı ürün için günlük satış adedi 9999999 dur. Aynı üründen satışa devam etmek için Z raporu alınmalıdır.
--- --- ---
---
71 ERR_VAT_NOT_DEFINED KDV oranı tanımlı değil
KDV oranını tanımlamalısınız
72 ERR_SECTION_NOT_DEFINED Kısım tanımlı değil
Önce kısım tanımlamalısınız.
73 ERR_PLU_NOT_DEFINED PLU tanımlı değil
İlk önce PLU tanımlamalısınız
74 ERR_CREDIT_NOT_DEFINED Kredi tanımlı değil
Kredi tanımlamalısınız.
75 ERR_CURRENCY_NOT_DEFINED Döviz tipi tanımlı değil
Döviz tipini tanımlamılısınız.
76 ERR_EJSEARCH_NO_RESULT EKÜ de kayıt bulunamadı.
Parametrelerinizi kontrol ediniz.
77 ERR_FMSEARCH_NO_RESULT Mali bellekte kayıt bulunamadı
Parametrelerinizi kontrol ediniz.
78 ERR_SUBCAT_NOT_DEFINED Geçersiz alt-kategori
Alt-kategori tanımlamalısınız
79 ERR_FILESEARCH_NO_RESULT Dosya aramasında sonuç bulunamadı
Parametrelerinizi kontrol ediniz.
--- --- ---
---
91 ERR_CASHIER_AUTH Kasiyer yetkisi yetersiz
Yetkili kasiyer girişi yapmalısınız
92 ERR_HAS_SALE Satış var
Örneğin satışı olan KDV değerini değiştirmeye çalıştığınızda alırsınız, öncesinde Z raporu alınmalıdır.
93 ERR_HAS_RECEIPT Fiş var , Z Raporu gerekli
Örneğin son belge Z raporu değil ise Logo değiştirilemez.
94 ERR_NOT_ENOUGH_MONEY Çekmecede yeterli nakit yok
Örnek: çekmecede 20 lira var ise 21 lira paraüstü veremezsiniz ya da 21 lira nakit çıktı yapamazsınız.
95 ERR_DAILY_RCPT_COUNT Günlük fiş limiti aşıldı
Z raporu almalısınız yoksa yeni fiş başlatamazsınız.
96 ERR_DAILY_TOTAL_LIMIT Günlük TOTAL limiti aşıldı
Z raporu almalısınız, yeni fiş başlatılamaz.
97 ERR_ECR_NONFISCAL ÖKC mali değil
Mali işlem yapmak için ÖKC mali konuma alınmalıdır.
--- --- ---
---
111 ERR_LINE_LEN Satır uzunluğu fazla
Parametrelerinizi kontrol ediniz.
112 ERR_INVALID_VATRATE Geçersiz KDV oranı
Geçerli KDV oranı tanımla
113 ERR_INVALID_DEPTNO Geçersiz kısım
Kısım tanımla
114 ERR_INVALID_PLUNO Geçersiz PLU numarası
PLU tanımla
115 ERR_INVALID_NAME Geçersiz tanım(ürün ismi, PLU ismi, kısım ismi,....)
Parametrelerinizi kontrol ediniz
116 ERR_INVALID_BARCODE Geçersiz barkod
Parametrelerinizi kontrol ediniz.
117 ERR_INVALID_OPTION Geçersiz seçenek
Parametrelerinizi kontrol ediniz.
119 ERR_INVALID_QUANTITY Geçersiz adet
Parametrelerinizi kontrol ediniz.
120 ERR_INVALID_AMOUNT Geçersiz tutar
Parametrelerinizi kontrol ediniz.
--- --- ---
---
131 ERR_BLK_COVER_OPEN Kapaklar açıldı
ÖKC bloklanır, servis çağırınız.
132 ERR_BLK_FM_MESH Mali bellek mesh zarar gördü
ÖKC bloklanır, servis çağırılmalı.
133 ERR_BLK_HUB_MESH HUB mesh zarar gördü
ÖKC bloklanır, servis çağırılmalı.
134 ERR_BLK_Z_REQUIRED Z Raporu Alınmalı(24 Saat)
ÖKC Z raporu almak için onayınızı bekler, ClearError çağrılmalıdır.
135 ERR_BLK_EJ_INVALID Geçersiz EKÜ
*EKÜ tak ve ÖKC yi yeniden başlat. *
136 ERR_BLK_NOT\ _LOAD_CERTIFICATE Sertifikalar yüklenemedi.
ÖKC bloklanır, servis çağırınız.
137 ERR_BLK_DT Tarih Zaman ayarlanmalı
ÖKC bloklanır, servis çağırınız.
138 ERR_BLK_DAILY_FISCAL Günlük ile mali bellek uyuşmazlığı
ÖKC bloklanır servis çağırınız.
139 ERR_BLK_DB Veritabanı hatası
ÖKC bloklanır servis çağırınız.
140 ERR_BLK_LOG Log hatası
ÖKC bloklanır servis çağırınız
141 ERR_BLK_SRAM SRAM hatası
ÖKC bloklanır servis çağırınız.
142 ERR_BLK_CERT_MISMATCH Sertifika uyuşmazlığı
ÖKC bloklanır servis çağırınız
143 ERR_BLK_VERSION Versiyon hatası
ÖKC bloklanır servis çağırınız.
144 ERR_BLK_DAILY_LOG_OVER Günlük log limiti aşıldı
ÖKC bloklanır servis çağırınız
145 ERR_BLK_RESTART_ECR Yeniden başlat ECR
Güç kapanıp açılır
146 ERR_BLK_LOCK_SIGN_IN Hatalı şifre giriş hakkı doldu
*24 saat geçmesini bekelyiniz ve ya başka bir kasiyer ile deneyiniz *
148 ERR_BLK_RETRY_TO_ CONNECT_RAD GİB Sunucularına bağlanamıyor, tekrar deneyiniz
ÖKC ethernet bağlantınızı kontrol ediniz ve ClearError komutunu çağırınız.
170 ERR_EFT_NOT_CONNECT Bağlı EFT cihazı bulunmamaktaır.
EFT-POS cihazı ile olan bağlantınızı kontrol ediniz, bağlı cihazınız yok ise servis menüsünden cihaz eşleyiniz.
171 ERR_EFT_INVALID_STATE Geçersiz EFT-POS cihaz durumu
EFT-POS cihazınızın durumunu kontrol ediniz ve tekrar deneyiniz
172 ERR_EFT_INCORRECT_CARD Geçersiz kart
Kullanılan kart EFT-POS tarafında desteklenmemektedir
173 ERR_EFT_DIFFERENT_AMOUNT Farklı tutar desteklenmıyor
Kart bilgisi aldıysanız farklı bir tutar girişi yapamazsınız.
174 ERR_EFT_NO_PROVISION Provizyon yok
Banka provizyon vermemiştir işleme
175 ERR_EFT_UNSUPPORTED _INSTALLMENT Desteklenmeyen taksit
Farklı bir taksit değeri giriniz
176 ERR_EFT_VOID_FAIL EFT ödeme iptali başarısız
Ödeme iptal edilemeiyor

Note: Hata kodu 0 (sıfır) ise işlem başarılıdır.


DURUM KODLARI

Durum Kodu Enum Değer Açıklama Operasyonlar
1 ST_IDLE ÖKC üzerinde satış yoktur Belge Başlat, Rapor Al, Nakit girdi-çıktı, Programlama, Servis Operasyonları, Kasiyer giriş-çıkış
2 ST_SELLING Satış konumunda Satış, İndirim/arttırım, Satış iptal, Belge İptal, Ödeme.
3 ST_SUBTOTAL Aratoplam hesaplandı Aratoplam İndirim/Arttırım, Belge İptal, Ödeme
4 ST_PAYMENT Ödeme Bekleniyor (Satış yapılamaz) Ödeme, Ödeme İptal
5 ST_OPEN_SALE Ödeme tamamlandı. Belge kapatılmalı. Yorum satırı ekle, Belge Kapat
6 ST_INFO_RCPT Bilgi Fişi alınıyor Yorum satırı ekle, mali olmayan belge kapat
7 ST_CUSTOM_RCPT Custom Belge Yorum satırı yazdır, Mali olmayan belge kapat.
8 ST_IN_SERVICE Kasa servis konumunda Servis operasyonları, Servis çıkış
9 ST_SRV_REQUIRED Servis gerekli Servis girişi
10 ST_LOGIN Kasiyer girişi Kasiyer giriş
11 ST_NONFISCAL ÖKC mali değil (Ör: EKÜ raporları alınamaz) Mali olmayan belge başlat, mali olmayan rapor al, Programlama
12 ST_ON_PWR_RCOVR İptal için bekleyen belge var Belge iptal
13 ST_INVOICE Fatura Satış, Ödeme, Belge iptal
14 ST_CONFIRM_REQUIRED ÖKC onay için bekliyor ClearError()

KÜTÜPHANE FONKSİYONLARI

Kütüphanelerde yer alan methodları işlevlerine göre 5 ana başlık altında toplayabiliriz.

  • Programlama Fonksiyonları
  • Satış Fonksiyonları
  • Rapor Fonksiyonları
  • Yardımcı Fonksiyonlar
  • Kütüphane Özelikleri

1. PROGRAMLAMA FONKSİYONLARI

YNÖKC üzerinde satış işlemlerine başlayabilmek adına, öncesinde bazı zorunlu ya da mükellefe göre değişen ayarları ayarlamanız gerekir. Bunun için öncelikle programlama yetkisi bulunan kasiyer ile giriş yapılmalıdır. Aksi halde hata kodu 91, "Kasiyer Yetkisi Yetersiz" hatası alınacaktır. Ayarlara göre sağlamanız gereken durumlar olabilir. YNÖKC sizi bu durumlarda uyaracaktır. Örneğin; Üzerinde satış bulunan departman(kısım) bilgisini değiştirmeden önce sizi Z raporu almaya zorlayacaktır. Öncelikli programlanması gereken ayarları Logo bilgileri, KDV bilgileri, Departman(kısım) bilgileri, PLU bilgileri(eğer kısım satışı yapılmayacak ise), kredi bilgileri, döviz bilgileri, ana/alt kategori bilgileri, kasiyer bilgileri, grafik logo bilgileri, fiş sonu bilgileri şeklinde sıralayabiliriz.
Programlama sırasında sık karşılaşılabilecek hatalar aşağıdaki şekildedir.

Hata Kodu Enum Değer Açıklama
3 ERR_INVALID_STATE Uygun olmayan YNÖKC durumu
5 ERR_INVALID_PRM Geçersiz Parametre
91 ERR_CASHIER_AUTH Kasiyer yetkisi yetersiz

1.1. string SetLogo(int index, string line)

YNÖKC üzerindeki logo satırlarını set eder. Logo alanı 6 satırdan oluşmaktadır.

NOT: 6. yani son satır sadece nümerik (0-9) karakterlerden oluşmalıdır. Vergi kimlik numarası gibi.


Parametreler:

parametre adı tanım data tipi
index logo indeks değeri Int(0-5)
line logo satırı String(FT202 ve Vx675 modelleri için 32, FP300 modeli için maksimum 48 karakter)

Dönüş Değerleri:

<HataKodu>|<Durumkodu>|<LogoSatırı>

1.2. string GetLogo (int index)

YNÖKC üzerinde kayıtlı bulunan logo satırlarını getirir.

Parametreler:

parametre adı tanım data tipi
index logo indeks değeri Int(0-5)

Dönüş Değerleri:

<HataKodu>|<Durumkodu>|<LogoSatırı>

1.3. string SetVATRate (int index, decimal vatRate)

YNÖKC üzerinde KDV oranlarını set eder. maksimum 8 adet KDV değeri tanımlanabilir.

NOT: Kullanılmayan KDV indekslerini geçersiz olarak tanımlamak için vatRate değeri -1 olarak gönderilebilir. Ayrıca iki farklı indekse aynı KDV değeri tanımlanamaz. Bir değer sadece bir KDV indeksine tanımlanabilir.


Parametreler:

parametre adı tanım data tipi
index KDV indeksi Int(0-7)
vatRate KDV değeri decimal(0-99)

Dönüş Değerleri:

<HataKodu>|<DurumKodu>|<KDVDeğeri>

1.3.1. string SetVATRate(int index, int taxRate)

Bir önceki metod ile aynı özelliklere sahiptir, tek farkı decimal olan parametre yerine int değer alan parametre yer almaktadır.


1.4. string GetVATRate (int index)

YNÖKC üzerinde tanımlı KDV değerlerini getirir.


Parametreler:

parametre adı tanım data tipi
index KDV indeksi Int(0-7)

Dönüş Değerleri:

<HataKodu>|<DurumKodu>|<KDVDeğeri>

1.5. string SetDepartment (int id, string name, int vatId, decimal price, int weighable)

YNÖKC üzerindeki departman değerleri set edilir. Bazı kesimlerde "kısım" olarak da tanımlanır. YNÖKC'ler satışları direkt olarak KDV değerlerinden satmanıza izin vermez. KDV değerleri departmanlara bağlanır ya da tanımlanır diyebiliriz. Her KDV değeri bir departmana tanımlanmak zorunda değildir fakat her departmanın tanımlı bir KDV değeri olmalıdır. Ayrıca birden fazla departman aynı KDV değerine de tanımlanabilir.


Parametreler:

parametre adı tanım data tipi
id departman ID numarası Int(1-8)
name departman ismi String(20)
vatId departman KDV grup ID Int(1-8)
price fiyat Decimal Max(999.999,99)
weighable tartılabilirlik Int (0 -> tartılamaz, 1 -> tartılabilir)

Dönüş Değerleri:

<HataKodu>|<DurumKodu>|<DepartmanAdı>|<KDVGrupID>|<Fiyat>|<Tartılabilirlik>

Olası Hatalar:

Hata Kodu Enum Değer Açıklama
71 ERR_VAT_NOT_DEFINED Tanımsız KDV. Departmana tanımlanan KDV grubunda tanımlı bir KDV değeri bulunmamaktadır.
92 ERR_HAS_SALE Departman üzerinde satış bulunmaktadır. Bu yüzden departman değerleri değiştirilemez. Değiştirmek için Z raporu alınmalıdır.
113 ERR_INVALID_DEPTNO Geçersiz departman numarası
115 ERR_INVALID_NAME Geçersiz departman adı

1.5.1. string SetDepartment(int id, string name, int vatId, int price, int weighable)

Bir önceki metod ile aynı özelliklere sahiptir, tek farkı decimal olan parametre yerine int değer alan parametre yer almaktadır.


1.6. string SetDepartment (int id, string name, int vatId, decimal price, int weighable, decimal limit)

Bir önceki method ile aynı özelliklere sahiptir. Sadece bir parametre fazla almaktadır. limit parametresi departman üzerinden yapılabilecek maksimum satış tutarını belirlemek için kullanılır. Örnek olarak, departmana ait ürün birim fiyatı 50, siz de departman limitini 500 olarak set ettiniz ise o üründen maksimum 10 adet satabilirsiniz.


Parametreler:

parametre adı tanım data tipi
id departman ID numarası Int(1-8)
name departman adı String(20)
vatId departman KDV grup ID Int(1-8)
price fiyat Decimal Max(999.999,99)
weighable tartılabilirlik Int (0 -> tartılamaz, 1 -> tartılabilir)
limit departman limit değeri Decimal (999.999,99)

Dönüş Değerleri:

<HataKodu>|<DurumKodu>|<DepartmanAdı>|<KDVGrupID>|<Fiyat>|<Tartılabilirlik>|<Limit>

Olası Hatalar:

Hata Kodu Enum Değer Açıklama
71 ERR_VAT_NOT_DEFINED Tanımsız KDV. Departmana tanımlanan KDV grubunda tanımlı bir KDV değeri bulunmamaktadır.
92 ERR_HAS_SALE Departman üzerinde satış bulunmaktadır. Bu yüzden departman değerleri değiştirilemez. Değiştirmek için Z raporu alınmalıdır.
113 ERR_INVALID_DEPTNO Geçersiz departman numarası
115 ERR_INVALID_NAME Geçersiz departman adı

1.6.1 string SetDepartment(int id, string name, int vatId, int price, int weighable, int limit)

Bir önceki metod ile aynı özelliklere sahiptir, tek farkı decimal olan parametre yerine int değer alan parametre yer almaktadır.


1.7. string GetDepartment (int deptId)

YNÖKC üzerinde tanımlı departman bilgilerin getirilmesini sağlar.


Parametreler:

parametre adı tanım data tipi
deptId Bilgileri getirilicek departman id değeri Int(1-8)

Dönüş Değerleri :

<HataKodu>|<DurumKodu>|<DepartmanAdı>|<KDVGrupID>|<Fiyat>|<Tartılabilirlik>|<Limit>

Olası Hatalar:

Hata Kodu Enum Değer Açıklama
113 ERR_INVALID_DEPTNO Geçersiz departman id değeri

1.8. string SetCreditInfo (int id, string name)

YNÖKC üzerinde kredi bilgilerini kaydetmek için kullanılır. Kredili ödemeler genelde YNÖKC'lere bağlı olmayan EFT-POS cihazlarından alınan ödemelerden sonra ve hediye, ticket gibi ödemelerde kullanılır.

NOT: FT202 ve FP300 modellerinde maksmum 8 adet, Vx675 modelinde ise maksimum 4 adet kredi bilgisi tanımlanabilir.


Parametreler:

parametre adı tanım data tipi
id kredi ID numarası FP300,FT202: Int(0-7), Vx675: Int(0-3)
name kredi adı String(15)

Dönüş Değerleri:

<HataKodu>|<DurumKodu>|<KrediAdı>

Olası Hatalar:

Hata Kodu Enum Değer Açıklama
92 ERR_HAS_SALE Kredi üzerinden ödemesi alınmış satış bulunmaktadır. Z raporu alınmalıdır.
115 ERR_INVALID_NAME Geçersiz kredi ismi

1.9. string GetCreditInfo(int id)

YNÖKC üzerinde kayıtlı kredi bilgilerini getirmek için kullanılır.


Parametreler:

parametre adı tanım data tipi
id kredi ID numarası FP300,FT202: Int(0-7), Vx675: Int(0-3)

Dönüş Değerleri:

<HataKodu>|<DurumKodu>|<KrediAdı>

1.10. string SetCurrencyInfo (int id, string name, decimal exchangeRate)

YNÖKC üzerinde tanımlı döviz bilgilerini kaydetmek için kullanılır.

NOT: Maksimum 4 adet döviz bilgisi tanımlanabilir.


Parametreler:

parametre adı tanım data tipi
id döviz ID numarası Int(0-3)
name döviz adı String(15)
exchangeRate döviz kuru Decimal(999.999,99)

Dönüş Değerleri:

<HataKodu>|<DurumKodu>|<DövizAdı>|<DövizKuru>

Olası Hatalar:

Hata Kodu Enum Değer Açıklama
92 ERR_HAS_SALE Ödeme bilgisi üzerinde satş vardır. Değişiklik yapmak için Z raporu alınması gerekir.
115 ERR_INVALID_NAME Geçersiz isim
120 ERR_INVALID_AMOUNT Geçersiz tutar bilgisi

1.10.1. string SetCurrencyInfo(int id, string name, int exchangeRate)

Bir önceki metod ile aynı özelliklere sahiptir, tek farkı decimal olan parametre yerine int değer alan parametre yer almaktadır.


1.11. string GetCurrencyInfo(int id)

YNÖKC üzerinde tanımlı döviz bilgilerini getirmek için kullanılır.

Parametreler:

parametre adı tanım data tipi
id döviz ID numarası Int(0-3)

Dönüş Değerleri :

<HataKodu>|<DurumKodu>|<DövizAdı>|<DövizKuru>

1.12. string SaveCashier (int cashierId, string cashierName, string cashierPass)

YNÖKC üzerinde kasiyer bilgilerini kaydetmek için kullanılır.


Parametreler:

parametre adı tanım data tipi
cashierId kasiyer ID numarası Int(1-9)
cashierName kasiyer adı String(15)
cashierPass kasiyer şifresi String(6)

Dönüş Değerleri:

<HataKodu>|<DurumKodu>|<KasiyerAdı>

Errors:

Hata Kodu Enum Değer Açıklama
115 ERR_INVALID_NAME Geçersiz kasiyer ismi

1.13. string GetCashier (int cashierId)

YNÖKC üzerinde tanımlı kasiyer bilgisini getirir.


Parametreler:

parametre adı tanım data tipi
cashierId kasiyer ID numarası Int(1-9)

Dönüş Değerleri:

<HataKodu>|<DurumKodu>|<KasiyerAdı>

1.14. string SaveProduct (int pluNo, string productName, int deptId, decimal price, int weighable, string barcode, int subCatId)

YNÖKC üzerine ürün bilgisi kaydetmek için kullanılır.


Parametreler:

parametre adı tanım data tipi
pluNo ürün ID numarası Int(1-200000)
productName ürün ismi String(20)
deptId departman ID numarası Int(1-8)
price ürün fiyatı Decimal(999.999,99)
weighable tartılabilirlik (1 veya 0) 0,1
barcode ürün barkod bilgisi String(15)
subCatId alt kategori ID numarası Int(1-250)

Dönüş Değerleri:

<HataKodu>|<DurumKodu>|<DepartmanAdı>|<DepartmanID>|<Fiyat>|<Tartılabilirlik>|<Barkod>|<AltKategori>

Olası Hatalar:

Hata Kodu Enum Değer Açıklama
72 ERR_SECTION_NOT_DEFINED Tanımsız departman
92 ERR_HAS_SALE Değiştirilmek istenen ürün üzerinde satış bulunmaktadır. Değiştirmek için Z raporu alınmalıdır.
113 ERR_INVALID_DEPTNO Geçersiz departman numarası
114 ERR_INVALID_PLUNO Geçersiz ürün numarası
115 ERR_INVALID_NAME Geçersiz ürün adı
116 ERR_INVALID_BARCODE Geçersiz barkod bilgisi

1.14.1. string SaveProduct(int productId, string productName, int deptId, int price,int weighable, string barcode, int subCatId)

Bir önceki metod ile aynı özelliklere sahiptir, tek farkı decimal olan parametre yerine int değer alan parametre yer almaktadır.


1.15. string GetProduct (int pluNo)

YNÖKC üzerinde ilgili numaraya tanımli ürün bilgisini getirmek için kullanılır.


Parametreler :

parametre adı tanım data tipi
pluNo ürün id numarası Int(1-200000)

Dönüş Değerleri:

<HataKodu>|<DurumKodu>|<DepartmanAdı>|<DepartmanID>|<Fiyat>|<Tartılabilirlik>|<Barkod>|<AltKategoriID>

Olası Hatalar:

Hata Kodu Enum Değer Açıklama
114 ERR_INVALID_PLUNO Geçersiz PLU numarası

1.16 string LoadGraphicLogo (System.Drawing.Image imageObject)

YNÖKC üzerine bitmap grafik logo yüklemek için kullanılır.


Parametreler:

parametre adı tanım data tipi
imageObject yüklenecek grafik logo Monochrome bitmap(Width:570px, Height:120px)

Dönüş Değerleri:

<HataKodu>|<DurumKodu>

Olası Hatalar:

Hata Kodu Enum Değer Açıklama
6 ERR_OPERATION_FAILED Grafik logo yükleme işlemi başarısız. (Geçersiz grafik logo format olabilir)

1.17. string SaveProgramOptions (int progName, string progValue)

YNÖKC üzerinde bazı ayarların set edilme işlemleri bu method ile yapılır.


Parametreler:

parametre adı tanım data tipi
progName YNÖKC ayarları enum değerler:
0 : Kağıt Kesici
1 : EFT ile ödeme
2 : Fiş Limiti
3 : Grafik Logo
4 : Fiş Barkodu
5 : EFT Yönetimi
progValue programlanan değer Int

  • Kağıt Kesici için; 0 değeri kapalı, 1 değeri açık
  • EFT ile Ödeme için; 0 değeri kapalı, 1 değeri açık
  • Fiş Limiti değeri için decimal(double) değer verilir. Ör: 900,00 veya 850,45 gibi
  • Grafik Logo için; 0 değeri kapalı, 1 değeri açık
  • Fiş barkodu için; 0 değeri kapalı, 1 değeri açık
  • EFT yönetimi için; 0 ise YNÖKC tarafında yapılır, 1 ise EFT-POS tarafında yapılır.

Dönüş Değerleri :

<HataKodu>|<DurumKodu>|<ProgramlananDeğer>

Olası Hatalar:

Hata Kodu Enum Değer Açıklama
117 ERR_INVALID_OPTION İşlem başarısız

1.18. string GetProgramOptions (int progName)

YNÖKC üzerinde tanımlı ayarları getirir.


Parametreler:

parametre adı tanım data tipi
progName YNÖKC ayarları enum değerler:
0 : Kağıt Kesici
1: Pay with EFT
2 : Receipt Limit
3 : Graphic Logo
4 : Receipt Barcode
5 : EFT Yönetimi

Dönüş Değerleri:

<HataKodu>|<DurumKodu>|<ProgramlananDeger>

1.19. string GetEndOfReceiptNote (int index)

YNÖKC üzerinde tanımlı fiş sonu notlarını verilen indeks değerine göre getirir.

NOT: Maksimum 6 satır fiş sonu notu tanımlanabilir.


Parametreler:

parametre adı tanım data tipi
index satır indeksi int(1-6)

Dönüş Değerleri:

<HataKodu>|<DurumKodu>|<SatırIcerigi>    

1.20. string SetEndOfReceiptNote (int index, string line)

YNÖKC üzerinde fiş sonu notu tanımlamak için kullanılır.


Parametreler:

parametre adı tanım data tipi
index satır indeksi int(1-6)
line satır içeriği string(FP300 için 48, FT202 ve Vx675 için maksimum 32 karakter)

Dönüş Değerleri:

<HataKodu>|<DurumKodu>|<SatırIcerigi>

2. SATIŞ FONKSİYONLARI

2.1. string PrintDocumentHeader ()

YNÖKC üzerinde fiş belgesini başlatır

Dönüş Değerleri:

<HataKodu>|<DurumKodu>|<FişNo>

Olası Hatalar:

Hata Kodu Enum Değer Açıklama
3 ERR_INVALID_STATE Geçersiz ÖKC durumu (ÖKC yeni belge başlatılabilir, IDLE konumda olmalıdır.)
20 ERR_FM_CLOSED Mali bellek kapalı ya da takılı değil
91 ERR_CASHIER_AUTH Belge başlatmak için yetersiz kasiyer yetkisi
38 ERR_EJ_FULL EKÜ dolu
95 ERR_DAILY_RCPT_COUNT Günlük fiş limiti aşıldı

2.2. string PrintDocumentHeader (string tckn_vkn, decimal amount, int docType)

Bilgi fişlerini başlatmak için kullanılır.

Kullanıcılar aşağıdaki sebeplerden ötürü bilgi fişi kullanmaya ihtiyaç duyabilirler;

  1. Eğer fiş toplamı fiş limitini aşarsa, belge tipi fatura, e-fatura ya da e-arşiv olmalıdır..Türkiye'deki güncel fiş limiti 1000,00 TL'dir.
  2. Eğer müşteri fatura isterse ve müşteri e-fatura mükellefi ise kasiyer e-fatura düzenlemek zorundadır.
  3. Müşteriler fatura yerine E-arşiv isteyebilirler.
  4. Eğer müşteri yemek kartı ile ödeme yapmak isterse, yemek bilgi fişi başlatılmak zorundadır. Yemek fişinde sadece yemek grubu için belirlenen standart KDV değeri yer alır. Bu ödeme yemek restaurantlarında geçerlidir.
  5. Otoparklar otopark bilgi fişi başlatmalıdır.
  6. Eğer müşteri alışverişten önce ödeme yapmak isterse Avans bilgi fişi başlatılmalıdır.

Belge Tipleri:

  1. Fatura: Uygulama yazılımı tarafından hazırlanır. YNÖKC üzerinden bilgi fişi basılır. Fatura yazıcısından fatura yazdırılır.
  2. E-Fatura : Elektronik faturadır. Mükellef firmalar için düzenlenir.
  3. E-Arşiv : Elektronik faturalardır. E-Fatura mükellefi olmayanlar için düzenlenir.
  4. Yemek Fişi : Yemek kartı ile ödeme almak için düzenlenir.
  5. Otopark Fişi : Otoparklar kullanır.
  6. Avans Fişi : Müşteri avans ödemesi yapar

NOT: TCKN 11 krakterden VKN ise 10 karakterden oluşur. Uymayan durumlarda parametre hatası alınır.


Parametreler:

parametre adı tanım data tipi
tckn_vkn Müşteri TCKN ya da VKN si (Fatura, E-Fatura ve E-Arşiv için zorunludur) String(11 veya 10)
amount Bilgi fişi tutarı (4,5,6 belge tipleri için zorunludur) Decimal(999.999,99)
docType belge tipi Int(1-6)

Dönüş Değerleri:

<HataKodu>|<DurumKodu>|<BelgeNo> 

Olası Hatalar:

Hata Kodu Enum Değer Açıklama
3 ERR_INVALID_STATE Geçersiz ÖKC durumu, Belge başlatılabilir, IDLE konumda olmalıdır
20 ERR_FM_CLOSED Mali bellek kapalı
91 ERR_CASHIER_AUTH Kasiyer Yetkisi yetersiz
38 ERR_EJ_FULL EKÜ dolu
95 ERR_DAILY_RCPT_COUNT Günlük fiş limiti aşılmış

2.2.1. string PrintDocumentHeader(string tckn_vkn, int amount, int docType)

Bir önceki metod ile aynı özelliklere sahiptir, tek farkı decimal olan parametre yerine int değer alan parametre yer almaktadır.


2.3. string PrintDocumentHeader (int docType, string tckn_vkn, string docSerial, DateTime docDateTime)

Fatura, e-fatura, e-arşiv belgelerini başlatmak için kullanılır.

Parametreler:

parametre adı tanım data tipi
tckn_vkn müşteri TCKN veya VKN numarası String(11)
docType belge tipi Int(1-6)
docSerial belge seri string(11)
docDateTime düzenleme tarihi DateTime

Belge Tipleri:

  1. Fatura: Satış uygulaması hazırlar
  2. E-Invoce : Elektronik fatura, e-fatura mükellefleri için düzenlenir
  3. E-Archive : Elektronik arşiv, e-fatura mükellefi olmayanlar için düzenlenir.

Dönüş Değerleri:

<HataKodu>|<DurumKodu>|<BelgeNo> 

Olası Hatalar:

Hata Kodu Enum Değer Açıklama
5 ERR_INVALID_PRM Geçersiz parametre, parametreleri kontrol ediniz
71 ERR_VAT_NOT_DEFINED Tanımsız KDV, tanımlı KDV kullanınız
95 ERR_DAILY_RCPT_COUNT Günlük fiş limiti aşıldı

2.4. string PrintAdvanceDocumentHeader (string tckn, string name, decimal amount)

Avans bilgi fişi başlatır.


Parametreler:

parametre adı tanım data tipi
tckn müşteri TCKN veya VKN String(11)
name müşteri adı String(22)
amount avans tutarı decimal(999.999,99)

Dönüş Değerleri:

<HataKodu>|<DurumKodu>|<BelgeNo> 

Olası Hatalar:

Hata Kodu Enum Değer Açıklama
5 ERR_INVALID_PRM Geçersiz parametre, parametreleri kontrol ediniz
71 ERR_VAT_NOT_DEFINED Tanımsız KDV, tanımlı KDV kullanınız
95 ERR_DAILY_RCPT_COUNT Günlük fiş limiti aşıldı

2.4.1. string PrintAdvanceDocumentHeader(string tckn, string name, int amount)

Bir önceki metod ile aynı özelliklere sahiptir, tek farkı decimal olan parametre yerine int değer alan parametre yer almaktadır.


2.5. string PrintCollectionDocumentHeader (string invoiceSerial, DateTime invoiceDate, decimal amount, string subscriberNo, string institutionName, decimal comissionAmount)

Fatura tahsilat bilgi fişi yazdırır.


parametre adı tanım data tipi
invoiceSerial fatura seri numarası (alfa-nümerik) ÖR: AA123456 string(11)
invoiceDate düzenleme tarihi Datetime
amount ödenecek tutar Decimal(999.999,99)
subscriberNo abone numarası string(15)
instutionName kurum adı string(22)
comissionAmount komisyon tutarı Decimal(9.999,99)

Dönüş Değerleri:

<HataKodu>|<DurumKodu>|<BelgeNo> 

Olası Hatalar:

Hata Kodu Enum Değer Açıklama
5 ERR_INVALID_PRM Geçersiz parametre
71 ERR_VAT_NOT_DEFINED Tanımsız KDV
95 ERR_DAILY_RCPT_COUNT Günlük fiş limiti aşıldı

2.5.1. string PrintCollectionDocumentHeader(string invoiceSerial, DateTime invoiceDate, int amount, string subscriberNo, string institutionName, int comissionAmount)

2.6. string PrintFoodDocumentHeader ()

Yemek bilgi fişini başlatır.

Dönüş Değerleri:

<HataKodu>|<DurumKodu>|<BelgeNo> 

Olası Hatalar:

Hata Kodu Enum Değer Açıklama
71 ERR_VAT_NOT_DEFINED Tanımsız KDV
95 ERR_DAILY_RCPT_COUNT Günlük fiş limiti aşıldı

2.7. string PrintParkDocument (string plate, DateTime entrenceDate)

Otopark bilgi fişi başlatır.


Parametreler:

parametre adı tanım data tipi
plate araç plakası string(11)
entranceDate giriş tarih/zaman DateTime

Dönüş Değerleri:

<HataKodu>|<DurumKodu>|<BelgeNo> 

Olası Hatalar:

Hata Kodu Enum Değer Açıklama
5 ERR_INVALID_PRM Geçersiz parametre, parametrelerinizi kontrol ediniz
95 ERR_DAILY_RCPT_COUNT Günlük fiş limiti aşıldı

2.8. PrintItem (int PLUNo, decimal quantity, decimal amount, string name, string barcode, int deptId, int weighable)

Satış ürününü yazdırır.

NOT: "deptId", "amount", "name", "weighable" parametreleri eğer PLU satışı yapacaksanız gereksizdir. (Eğer PLU daha önceden kaydedilmiş ise). Bu parametreler için "-1" değeri gönderebilirsiniz. (name->null). Bu sayede kütüphane YNÖKC cihazına bu parametreleri göndermeyecektir. Ayrıca bu fonksiyon ile, YNÖKC programlanabilir modda ise (programlama yetkisine sahip kasiyer girişi mevcutsa) satış ile birlikte PLU kaydı da yapabilirsiniz.


Parametreler:

parametre adı tanım data tipi
PLUno ürün PLU nuamrası Int (1-200000)
quantity miktar/adet Decimal(999,99)
amount ürün fiyatı Decimal(999999,99)
name ürün adı String(20)
barcode ürün barkod bilgisi String(15)
deptId ürünün ait olduğu departman ID Int(1-8)
weighable tartılabilirlik Int(0-1)

Dönüş Değerleri:

<HataKodu>|<DurumKodu>|<Aratoplam>

Olası Hatalar:

Hata Kodu Enum Değer Açıklama
3 ERR_INVALID_STATE Geçersiz YNÖKC durumu, cihaz satış konumunda olmalıdır
51 ERR_RCPT_TOTAL_LIMIT Fiş Tutar Limiti aşımı
52 ERR_RCPT_SALE_COUNT Satış kalem aşımı hatası (Maksimum 128 kalem satış yapılabilir)
53 ERR_INVALID_SALE Geçersiz satış
59 ERR_DAILY_PLU_LIMIT Günlük PLU satışı aşımı
72 ERR_SECTION_NOT_DEFINED Tanımsız departman

2.8.1. string PrintItem(int PLUNo, int quantity, int amount, string name, string barcode, int deptId, int weighable)

Bir önceki metod ile aynı özelliklere sahiptir, tek farkı decimal olan parametre yerine int değer alan parametre yer almaktadır.


2.9. string PrintDepartment (int deptId, decimal quantity, decimal amount, string name, int weighable)

Ürün satışını yazdırır. Satışı departman üzerinden yapar. PLU kullanmaz. PLU satışına göre daha hızlı ve efektif bir çözüm sunar.


Parametreler:

parametre adı tanım data tipi
deptId departman ID int(1-8)
quantity miktar/adet decimal(999,99)
amount tutar decimal(999999,99)
name ürün adı string(20)
weighable tartılabilirlik, opsiyonel int(0-1)

Dönüş Değerleri:

<HataKodu>|<DurumKodu>|<Aratoplam>

Olası Hatalar:

Hata Kodu Enum Değer Açıklama
3 ERR_INVALID_STATE Uygun olmayan ÖKC durumu, ÖKC satış durumunda olmalıdır.
51 ERR_RCPT_TOTAL_LIMIT Fiş toplamı aşıldı hatası
52 ERR_RCPT_SALE_COUNT Maksimum Satış kalemi aşıldı
53 ERR_INVALID_SALE Geçersiz satış
59 ERR_DAILY_PLU_LIMIT Günlük PLU satış limiti aşımı
60 ERR_OVER_DEPT_LIMIT Departman limiti aşıldı
72 ERR_SECTION_NOT_DEFINED Tanımsız departman
73 ERR_PLU_NOT_DEFINED Tanımsız PLU
96 ERR_DAILY_TOTAL_LIMIT günlük toplam limiti aşımı
119 ERR_INVALID_QUANTITY geçersiz miktar
120 ERR_INVALID_AMOUNT geçersiz tutar

2.9.1. string PrintDepartment(int deptId, int quantity, int amount, string name, int weighable)

Bir önceki metod ile aynı özelliklere sahiptir, tek farkı decimal olan parametre yerine int değer alan parametre yer almaktadır.


2.10. string PrintAdjustment (int adjustmentType, decimal amount, int percentage)

Satışı yapılan son ürüne indirim/arttırım uygular, indirim/arttırım satırını yazdırır. Son işlem ürün satışı ya da aratoplam olmalıdır. Son işlem ürün satışı ise sadece o ürüne uygulanır, aratoplam ise belge toplamına uygulanır.


Parametreler:

parametre adı tanım data tipi
adjustmentType indirim/arttırım türü 0 : tutar arttırım
1 : yüzde arttırım
2 : tutar indirim
3: yüzde indirim
amount eğer tutar indirim ya da tutar arttırım ise işlemin tutarı Decimal(999999,98)
percentage eğer yüzde indirim ya da yüzde arttırım ise yüzde miktarı Int(1-99)

Dönüş Değerleri:

<HataKodu>|<DurumKodu>|<Aratoplam>

Olası Hatalar:

Hata Kodu Enum Değer Açıklama
3 ERR_INVALID_STATE Uygunsuz ÖKC durumu, belge başlatılmış olup satış ya da aratoplam durumlarında olmalıdır
56 ERR_INVALID_ADJ geçersiz indirim/arttırım, parametrelerinizi kontrol ediniz
52 ERR_RCPT_SALE_COUNT satış kalemi aşıldı
51 ERR_RCPT_TOTAL_LIMIT belge toplamı aşıldı
96 ERR_DAILY_TOTAL_LIMIT günlük toplam aşıldı

2.10.1 string public string PrintAdjustment(int adjustmentType, int amount, int percentage)

Bir önceki metod ile aynı özelliklere sahiptir, tek farkı decimal olan parametre yerine int değer alan parametre yer almaktadır.


2.11. string Correct ()

Son yapılan işlemi geri alır (satış, indirim, arttırım..)


Dönüş Değerleri:

<HataKodu>|<DurumKodu>|<Aratoplam>

Olası Hatalar:

Hata Kodu Enum Değer Açıklama
3 ERR_INVALID_STATE Uygun olmayan ÖKC durumu
52 ERR_RCPT_SALE_COUNT satış kalemi aşıldı
55 ERR_INVALID_CORR Geçersiz düzeltme işlemi

2.12. string Void (int PLUNo, decimal quantity)

Belge üzerinde PLU satışı yapılmış bir ürünü verilen miktar kadar iptal eder.

NOT: Ürün birden fazla kalemde yer alıyor ise, son kalemden iptal işlemine başlar.


Parametreler:

parametre adı tanım data tipi
PLUNo Ürün PLU numarası Int(1-200000)
quantity miktar Decimal(999,99)

Dönüş Değerleri:

<HataKodu>|<DurumKodu>|<Aratoplam>

Olası Hatalar:

Hata Kodu Enum Değer Açıklama
3 ERR_INVALID_STATE Uygunsuz ÖKC durumu
52 ERR_RCPT_SALE_COUNT Satış kalemi aşıldı
54 ERR_INVALID_VOID Geçersiz iptal işlemi
73 ERR_PLU_NOT_DEFINED Tanımsız PLU

2.12.1 string Void(int PLUNo, int quantity)

Bir önceki metod ile aynı özelliklere sahiptir, tek farkı decimal olan parametre yerine int değer alan parametre yer almaktadır.


2.13. string VoidDepartment (int deptId, string deptName, decimal quantity)

Yapılan departman satışını iptal eder.


Parametreler:

parametre adı tanım data tipi
deptId departman ID numarası int(1-8)
deptName departman ismi string(20)
quantity iptal edilecek miktar decimal(999,99)

Dönüş Değeri:

<HataKodu>|<DurumKodu>|<Aratoplam>

2.13.1 string VoidDepartment(int deptId, string deptName, int quantity)

Bir önceki metod ile aynı özelliklere sahiptir, tek farkı decimal olan parametre yerine int değer alan parametre yer almaktadır.


2.14. string PrintSubtotal (bool hardcopy)

YNÖKC üzerinde o an açık olan dökümanın aratoplamını yazdırmanızı ya da sadece değerini çekmenizi sağlar.


Parametreler:

parametre adı tanım data tipi
harcopy aratoplamı yazdır ya da sadece değerini çek boolean(true: yazdır)

Dönüş Değerleri:

<HataKodu>|<DurumKodu>|<Aratoplam>|<ÖdemeToplamı>

Olası Hatalar:

Hata Kodu Enum Değer Açıklama
3 ERR_INVALID_STATE Uygunsuz ÖKC durumu

2.15. string PrintPayment (int paymentType, int index, decimal paidTotal)

Ödeme bilgilerini yazdırır. Eğer parçalı ödeme yapıyorsanız, ödeme tutarları toplamı aratoplama eşit olana kadar bekler. Eşit olunca tüm ödemeleri birlikte yazdırır.


Parametreler:

parametre adı tanım data tipi
paymentType ödeme tipi 0 : Nakit
1 : Kredi
2 : Çek
3: Döviz
5: Yemek Kartı
index indeks parametresinin kullanım amacı ödeme tipine göre değişklik gösterir. Nakit ile ödemede kullanılmaz. Kredi ile ödeme de ÖKC üzerinde tanımlı kredi tiplerinin ID sine göre seçiminde kullanılır. Döviz için de aynı şekilde ÖKC üzerinde tanımlı döviz birimlerinin seçiminde kullanılır. Çek ile ödemede ise çek nuamrası gönderilir, fakat zorunlu değildir. Int
paidTotal ödeme tutarı Decimal(999999,99)

Dönüş Değerleri:

<HataKodu>|<DurumKodu>|<Aratoplam>|<ÖdenenTutar>

Olası Hatalar:

Hata Kodu Enum Değer Açıklama
3 ERR_INVALID_STATE Uygun olmayan ÖKC durumu
57 ERR_INVALID_PAYMENT Geçersiz ödeme
58 ERR_PAYMENT_LIMIT Ödeme limiti aşıldı
74 ERR_CREDIT_NOT_DEFINED Tanımsız kredi tipi
75 ERR_CURRENCY_NOT_DEFINED Tanımsız döviz
94 ERR_NOT_ENOUGH_MONEY Çekmecede yeterli para yok (paraüstü için)

2.15.1. string PrintPayment(int paymentType, int index, int paidTotal)

Bir önceki metod ile aynı özelliklere sahiptir, tek farkı decimal olan parametre yerine int değer alan parametre yer almaktadır.


2.16. string GetEFTCardInfo (decimal amount)

Kart bilgisini çekmek için kullanılır. EFT ödemesinden önce kullanılabilir.


Parametreler:

parametre adı tanım data tipi
amount sorgulanacak ödeme tutarı Decimal(999999,99)

Dönüş Değeri:

<HataKodu>|DurumKodu>|<Hgnccid>|<Hgnccname>|<CardHolderName>|<CardNumber>|<DiscountEnable>
Dönüş Değeri tanım data tipi
Hgnccid Kart tipinin HUGIN ID karşılığı Int(8)
Hgnccname Kart ismi WORLD, MAXIMUM, GARANTİ PLAY gibi String(20)
CardHolderName kart sahibinin ismi String(20)
CardNumber BIN String(16)
DiscountEnable Bu kartla ödemeye devam ederken GetEFTAuthorisation çağrıldığında ödeme tutarı farklı olabilir boolean(true/false)

Olası Hatalar:

Hata Kodu Enum Değer Açıklama
3 ERR_INVALID_STATE Uygun olmayan ÖKC durumu
74 ERR_CREDIT_NOT_DEFINED Tanımlı olmayan kredi
172 ERR_EFT_INCORRECT_CARD Hatalı kart

2.17. string GetEFTAuthorisation (decimal amount, int installment, string cardNumber)

Bağlı olan EFT-POS cihazından ödeme almak için kullanılır. EFT-POS cihazı YNÖKC ile daha önceden eşlenmiş durumda olmalıdır. Ödeme toplamı aratoplama eşit olduğunda EFT ödemesi yazdırılır.


Parametreler:

parametre adı tanım data tipi
amount ödeme tutarı Decimal(999999,99)
installment taksit sayısı Int(99)
cardNumber GetCardInfo() ile alınan kart numarasının ilk 6 hanesi, bu alan opsiyoneldir, zorunlu değildir String(6)

Dönüş Değerleri:

<HataKodu>|DurumKodu>|<Aratoplam>|<ProvisionID>|<Tutar>|<OnaylananTaksitSayısı>|<AcquirerId>|<BIN>|<IssuerId>|<AltİşlemTipi>|<BatchNo(GrupNo)>|<StanNo(SıraNo)>|<TotalPaidAmount>

Dönüş Değeri tanım data tipi
Subtotal Belge aratoplamı Decimal(999999,99)
ProvisionID gerçekleştirilen işlemin banka provision ID Int
Amount EFT tarafından yapılan ödeme miktarı Decimal(999999,99)
AppliedInstallment Ödemede kabul edilen taksit sayısı. Taksit sayısı bazen methodda verilen değerden farklı olabilir çünkü bazı bankalar sadece EFT cihazı üzerinden girilen taksit değerlerini kabul eder. Int(99)
AcquirerId Acquirer bank id String(3)
BIN Kart ilk 6 hanesi String(6)
IssuerId Issuer bank id String(3)
AltİşlemTipi Altişlem tipi oalrak enum değer döner (Sadece Vx675 modelleri için, diğer cihazlarda 0 döner) Int(3)
BatchNo EFT Ödeme batch(grup) numarası Int(3)
StanNo EFT Ödeme standing(sıra) numarası Int(3)
TotalPaidAmount Ödenen toplam tutar Decimal(999999,99)

ALT İŞLEM TİPLERİ:
{
SATIS = 1, "Sale"
YBELGE = 10, "New document"
TAKSITLI_SATIS = 04, "Installment sales"
VADE_FARKLI_SATIS = 16, "Maturity different sales "
E_IADE = 20, "return document"
KISMI_IADE = 22,"partial return document"
KONTOR_SATIS = 13, "credits sale"
PUAN_SORGU = 14, "point query"
KK_BORC_ODEME = 05, "credit card debt payment"
PREPAID_NAKIT_YUKLEME = 29, "pre-paid cash load"
PREPAID_KARTLI_YUKLEME = 30, "pre-paid loading with payment card"
CASHBACK = 12, "cash back"
}

Olası Hatalar:

Hata Kodu Enum Değer Açıklama
3 ERR_INVALID_STATE Uygunsuz ÖKC durumu
57 ERR_INVALID_PAYMENT Geçersiz ödeme
58 ERR_PAYMENT_LIMIT Ödeme limiti aşımı
74 ERR_CREDIT_NOT_DEFINED Tanımsız kredi

2.18. string VoidEFTPayment (int acquierID, int batchNo, int stanNo)

EFT-POS tarafından alınmış ödemeyi POS üzerinden iptal eder. Bu method, fiş kapatıldıktan sonra ilgili bilgileri verilen EFT ödemesinin tüm tutarını iptal eder.


Parametreler:

parametre adı tanım data tipi
acquierID Kredi kartı ve debit kart ödemelerinde bankayı tanımlayan id değeridir.
EFT ödeme iptalinden önce uygulama GetBankListOnEFT() methodunu çağırarak uygun banka id sini kullanmalıdır. int(9999)
batchNo batch no ya da grup no slip üzerinde yer alır. İptal edilmek istenen ödememnin yer aldığı slipteki bu değer girilmelidir. int(9999)
stanNo stanno ya da sıra no slip üzerinde yer alır. İptal edlmek istenen ödemenin yer aldığı slipteki bu değer girilmelidir. int(9999)

Dönüş Değerleri:

<HataKodu>|<DurumKodu>|<Tutar>|<AcquierID>|<IssuerID>|<KartNumarası>

Olası Hatalar:

Hata Kodu Enum Değer Açıklama
3 ERR_INVALID_STATE Uygun olmayan ÖKC durumu
5 ERR_INVALID_PRM Geçersiz parametre, parametrelerinizi kontrol ediniz
176 ERR_EFT_VOID_FAIL Başarısız EFT iptal işlemi

2.19. string RefundEFTPayment (int acquierID, decimal amount)

EFT-POS cihazı üzerinde iade işlemi başlatır. Bu method fiş kapandıktan sonra, miktarsal olarak EFT iade alınmasını sağlar.


Parametreler:

parametre adı tanım data tipi
acquierID Kredi kartı ve debit kart ödemelerinde bankayı tanımlayan id değeridir.
EFT ödeme iadeden önce uygulama GetBankListOnEFT() methodunu çağırarak uygun banka id sini kullanmalıdır. int(9999)
amount iade miktarı decimal(999999,99)

Dönüş Değerleri:

<HataKodu>|<DurumKodu>|<Tutar>|<AcquierID>|<IssuerID>|<KartNumarası>

Olası Hatalar:

Hata Kodu Enum Değer Açıklama
3 ERR_INVALID_STATE Uygunsuz ÖKC durumu
5 ERR_INVALID_PRM Geçersiz parametre, parametrelerinizi kontrol ediniz
177 ERR_EFT_RETURN_FAIL Başarısız EFT iade işlemi

2.20. string GetEFTSlipCopy (int acquierID, int batchNo, int stanNo, int zNo, int receiptNo)

EFT slip kopyası almanızı sağlar. Slip Z no - Fiş no ikilisi ya da batch(grup) no - stan(sıra) no ikilisi kullanıalrak çağıralabilir. Acquier ID her iki çağırım için de zorunludur.

Not: Kullanılmayan ikili için 0 (sıfır) değeri gönderebilirsiniz.


Parametreler:

parametre adı tanım data tipi
acquierID Banka acquier id nuamrası, banka listesinde yer alan int(9999)
batchNo slip batch(grup) no int(9999)
stanNo slip stan(sıra) no int(9999)
zNo slip Z numarası int(999)
receiptNo slip belge no int(9999)

Dönüş Değerleri:

<HataKodu>|<DurumKodu>

Olası Hatalar:

Hata Kodu Enum Değer Açıklama
3 ERR_INVALID_STATE Uygunsuz ÖKC durumu
5 ERR_INVALID_PRM Geçersiz parametre, parametrelerinizi kontrol ediniz

2.21. string GetBankListOnEFT ()

EFT-POS üzerinde kayıtlı banka listesini getirir. Banka listesinde yer alan banka bilgileri acquier ID ve banka ismi bilgisinden oluşur.

String BankInfo = Banka Acquier ID (4) + Banka İsmi


Dönüş Değerleri:

<HataKodu>|<DurumKodu> |<BankInfo_1>|<BankInfo_2>|<BankInfo_3>|......|<BankInfo_N> 

Olası Hatalar:

Hata Kodu Enum Değer Açıklama
3 ERR_INVALID_STATE Uygunsuz ÖKC durumu

2.22. string GetSalesInfo ()

İçinde bulunan satış durumunun bilgilerini getirir.


Dönüş Değerleri:

<HataKodu>|<DurumKodu> |<BelgeNo>|<ZNo>|<BelgeTipi>|<Tarih>|<Zaman>|<Aratoplam>|Ödemeler(<ÖdemeTipi>|<Ödemeİndeksi>|<Tutar>|<Not>)|KDV Bloğu(<KdvOranı>|<Tutar>|<KDVTutarı>)

BELGE TİPLERİ: 0. Z Raporu

  1. Fiş
  2. İptal Fişi
  3. Bilgi Raporu, X Raporu, Departman Satış raporu gibi..
  4. Mali Rapor
  5. EKÜ periyodik raporu
  6. Elektrik kesinitisi sonrası iptal fişi
  7. Mali olmayan belge
  8. not in use,
  9. İptal mali olmayan belge,
  10. Fatura
  11. E-Fatura, E-Arşiv
  12. E-Fatura, E-Arşiv iptali

Olası Hatalar:

Hata Kodu Enum Değer Açıklama
3 ERR_INVALID_STATE Uygunsuz ÖKC durumu

2.23. string VoidPayment (int paymentSequenceNo)

Ödeme iptal edilmesini sağlar. Dikkat edilmesi gereken nokta ödemelerin yazdırılmamış olması gerektiğidir.


Parametreler:

parametre adı tanım data tipi
paymentSequenceNo Gönderilen ödemelerin sıra numarası. İlk gönderilen ödeme sıra numarası 0 dır. Int(0-8)

Dönüş Değerleri:

<HataKodu>|<DurumKodu>

Olası Hatalar:

Hata Kodu Enum Değer Açıklama
3 ERR_INVALID_STATE Uygunsuz ÖKC durumu
54 ERR_INVALID_VOID Geçersiz iptal
176 ERR_EFT_VOID_FAIL Geçersiz EFT iptali

2.24. string CloseReceipt (bool slipCopy)

Belgeyi kapatır.


Parametreler:

parametre adı tanım data tipi
slipCopy Eğer ödemelerde EFT ödemesi var ise kapatılan belgenin ardına slip kopyasının yazdırılmasını sağlar. boolean(true; slip kopya yazdır).

Dönüş Değerleri:

<HataKodu>|<DurumKodu>|<BelgeNo>

Olası Hatalar:

Hata Kodu Enum Değer Açıklama
3 ERR_INVALID_STATE Uygun olmayan ÖKC durumu

2.25. string VoidReceipt ()

Başlatılmış olan belgeyi iptal eder.


Dönüş Değerleri:

<HataKodu>|<DurumKodu>|<BelgeNo>

Olası Hatalar:

Hata Kodu Enum Değer Açıklama
3 ERR_INVALID_STATE Uygun olmayan ÖKC durumu

2.26. string PrintReceiptBarcode (string barcode)

Ödemelerden sonra belgenin footer kısmında barkod yazdırır. Barkod formatı code128 olmalıdır. Bir belge dahilinde sadece bir kez barkod yazdırılabilir. Bu method sadece FP300 modellerinde desteklenir.


Parametreler:

parametre adı tanım data tipi
barcode yazdırılacak barkod (code128) String(17)

Dönüş Değerleri:

<HataKodu>|<DurumKodu>

Olası Hatalar:

Hata Kodu Enum Değer Açıklama
3 ERR_INVALID_STATE Uygun Olmayan ÖKC durumu

2.27. string PrintRemarkLine (string[] lines)

Not(yorum) satırı yazdırır. ÖKC, SELLING(satış) ya da OPEN_SALE (ödeme sonrası belge kapatılmadan önce) durumlarında olmalıdır.


Parametreler:

parametre adı tanım data tipi
lines yazdırılıcak satır String Array(Satır maksimum uzunluk: FP300-> 45, FT202,Vx675-> 29)

Dönüş Değerleri:

<HataKodu>|<DurumKodu>

Olası Hatalar:

Error Code Title
3 ERR_INVALID_STATE

2.28. string PrintJSONDocument (string jsonStr)

JSON formatta hazırlanan Hugin Satış Belgesini yazdırır. PLU satışı yapar. Bu yüzden ürünler satılırken aynı zamanda kaydedilmesi için 9 kasiyer ile giriş yapılmış olmalıdır.


Parametreler:

parametre adı tanım data tipi
jsonStr Hugin JSONDocument satış belgesi nesnesi JSON string değeri String

HUGIN JSON PLU Satış Döküman Nesnesi :
	
	enum PaymentType
	{
		CASH,
		CREDIT,
		CHECK,
		F_CURRENCY
	}
	enum AdjustmentType : sbyte
	{
		FEE,
		PERCENT_FEE,
		DISCOUNT,
		PERCENT_DISCOUNT
	}
	
	class Adjustment
    {
        public AdjustmentType Type = AdjustmentType.Discount;
        public decimal Amount = 0m;
        public int percentage = 0;
        public string NoteLine1;
        public string NoteLine2;
    }
    class PaymentInfo
    {
        public PaymentType Type = 0;
        public int Index = 0;
        public decimal PaidTotal = 0.00m;
    }
    class JSONItem
    {
        public int Id;
        public decimal Quantity;
        public decimal Price;
        public string Name;
        public string Barcode;
        public int DeptId;
        public int Status;
        public Adjustment Adj = null;
        public string NoteLine1;
        public string NoteLine2;
    }
	class EndOfReceipt
	{
		public bool CloseReceiptFlag = true;
		public bool BarcodeFlag = false;
		public string Barcode;	
	} 
	
    class JSONDocument
    {
        public List<JSONItem> FiscalItems = new List<JSONItem>();
        public List<Adjustment> Adjustments = new List<Adjustment>();
        public List<PaymentInfo> Payments = new List<PaymentInfo>();
        public List<String> FooterNotes = new List<string>();
    }

NOT : JSONItem ve Adjustment içindeki NoteLine1 ve NoteLine2 alanları sadece PrintJSONDocumentDeptOnly vePrintSalesDocument methodlarında kullanılır.

Örnek JSON;

   {
	"FiscalItems":[{
	"Id":13,
	"Quantity":1.0,
	"Price":11.0,
	"Name":"LIPTON ÇAY",
	"DeptId":1,
	"Status":0,
	"Adj":null,
	"NoteLine1":"DEMLIK POŞET"
	},{
	"Id":7,
	"Quantity":25.0,
	"Price":0.70,
	"Name":"YUMURTA",
	"DeptId":3,
	"Status":0,
	"Adj":{"Type":3,"Amount":-0.88,"percentage":5},
	"NoteLine1":"DOĞAL KÖY YUMURTASI"
	},{
	"Id":9,
	"Quantity":2.0,
	"Price":1.2,
	"Name":"ÜLKER ÇİZİ",
	"DeptId":3,"Status":0,
	"Adj":null
	},{
	"Id":3,
	"Quantity":1.35,
	"Price":11.95,
	"Name":"BEYAZ PEYNİR",
	"DeptId":3,
	"Status":1,
	"Adj":null
	},{
	"Id":5,
	"Quantity":1.0,
	"Price":8.95,
	"Name":"YOĞURT",
	"DeptId":3,
	"Status":0,
	"Adj":{"Type":1,"Amount":0.45,"percentage":5,"NoteLine1":"SÜT HAFTASI ÖZEL İNDİRİMİ"}
	},{
	"Id":2,
	"Quantity":2.5,
	"Price":4.49,
	"Name":"BULGUR",
	"DeptId":2,
	"Status":1,
	"Adj":null
	}],
"Adjustments":[{
	"Type":3,
	"Amount":-10.02,
	"percentage":15,
	"NoteLine1":"ÖZEL MÜŞTERİ İNDİRİMİ"
	}],
"Payments":[{
	"Type":0,
	"Index":0,
	"PaidTotal":20.0,
	"SequenceNo":0
	},{
	"Type":1,
	"Index":0,
	"PaidTotal":36.76,
	"SequenceNo":1
	}],
"FooterNotes":[
	"ÜRÜN İNDİRİMİ  :    *0,43",
	"ARATOP İNDİRİMİ:   *10,02",
	"TOPLAM İNDİRİM :   *10,45",
	"   **** İYİ GÜNLER ****",
	" www.hugin.com.tr",
	" 0212 212 2121",
	" MERSİS NO: 121244112344123124"
	],
"EndOfReceiptInfo":{"CloseReceiptFlag":false,"BarcodeFlag":false,"Barcode":null}
}

Dönüş Değerleri:

<HataKodu>|<DurumKodu>

2.29. string PrintJSONDocumentDeptOnly (string jsonStr)

Hugin JSON satış belgesini yazdırır. JSON içerik de yer alan ürünler PLU değil departman bilgileri ile satılırlar. Bu yüzden yukarıda yer alan JSON PLU satışına istinaden daha efektif ve hızlı sonuç verir.

JSONItem ve Adjustment sınıflarında yer alan NoteLine1 ve NoteLine2 alanları bu methodda kullanılabilir. FP300 modeli için maksimum 48, FT202 ve Vx675 modelleri için 36 karakter olabilir.

NOT: Bu method çağırılmadan önce belgenin başlatılmış olması gereklidir. ÖKC satış(SELLING) durumunda olmalıdır.


Parametreler:

parametre tipi tanım data tipi
jsonStr Hugin satış belgesi JSON karşılığı String

Dönüş Değerleri:

<HataKodu>|<DurumKodu>

2.30. string PrintSalesDocument (string jsonStr)

Hugin JSON satış belgesini departman satışı ile yazdırır. PrintJSONDocumentDeptOnly methodundan farkı tek paket olarak ÖKC ye gönderim yapar bu yüzden daha hızlıdır.

NOT: Veriler tek paket halinde gönderildiği için, satış içeriği tamamlanmış halde olmalıdır. Yani ödeme bilgileri ile birlikte tamamlanmış bir belge olmalıdır. Uygulama tarafında oluşturulan JSON belgeniz yukarıda bahsedilen gibi tamamlanmış ise bu method ile gönderiniz, farklı bir durumda ise PrintJSONDocumentDeptOnly methodunu çağırınız.


Parametreler:

parametre adı tanım data tipi
jsonStr Hugin JSON satış nesnesi String

Dönüş Değerleri:

<HataKodu>|<DurumKodu>|<ZNo>|<FişNo>|<Tarih>|<Saat>|<BelgeTipi>|
Ödeme bloğu (Her ödeme için tekrarlar)
<ÖdemeTipi>|<İndeks>|<Tutar>|<Not>

2.31. string PrintCurrentAccountCollectionDocumentHeader (string tcknVkn, string customerName, string docSerial, DateTime docDate, decimal amount)

Cari hesap tahsilat fişini başlatır.


Parametreler:

parametre adı tanım data tipi
tcknVkn müşteri TCKN veya VKN string(10 veya 11)
customerName müşteri isim string(30)
docSerial belge seri string(30)
docDate belge tarih-zaman DateTime
amount belge tutarı Decimal(999.999,99)

Dönüş Değerleri:

<HataKodu>|<DurumKodu>|<BelgeNo>

2.31.1. string PrintCurrentAccountCollectionDocumentHeader(string tcknVkn, string customerName, string docSerial, DateTime docDate, int amount)

Bir önceki metod ile aynı özelliklere sahiptir, tek farkı decimal olan parametre yerine int değer alan parametre yer almaktadır.


2.32. string PrintReceiptBarcode (int barcodeType, string barcode)

Fiş sonunda seçilen barkod tipine göre barkod değerini yazdırır.

NOT: Bu method sadece Vx675 model ÖKC'lerde kullanılabilir.


BARKOD TİPLERİ: 1- EAN 2- QRN 3- C039 4- C128

Parametreler:

parametre tipi tanım data tipi
barcodeType barkod tipi int(1-4)
barcode barkod string

Dönüş Değerleri

<HataKodu>|<DurumKodu>

2.33. string PrintEDocumentCopy(int docType, string[] lines)

E-Arşiv ve E-Fatura belgelerini FP300 modeli ÖKC üzerinde yazdırır. Diğer modeller desteklememektedir.

Parametreler:

parametre adı tanım data tipi
docType belge tipi enum değer: E-Invoice = 2, E-Archieve = 3 int(2 veya 3)
_lines _ yazdırılacak satırlar string[]

Dönüş Değerleri:

<HataKodu>|<DurumKodu>

2.34. string PrintSlip(int type, string[] lines)

EFT-POS yönetimi satış uygulaması tarafından yapıldığı durumlarda(EFT-POS ÖKC'ye bağlı olmadığı durumda), alınan EFT ödeme içeriğini fiş içerisinde yazdırmak için bu komut kullanılır. Müşteri kopyası, İşyeri Nüshası ve Hata slipleri basılır. Bu işlem sadece FP300 modeli ÖKC üzerinde yazdırır. Diğer modeller desteklememektedir.

Parametreler:

parametre adı tanım data tipi
type Slip tipi değeri:
1- Müşteri kopyası
2- İşyeri nüshası
3- Hata bilgisi
int
lines Slip içeriği. Satır başlarındaki ilk karakter font bilgisini içerir.
1- Normal
2- Medium
3- Bold
string[]

Dönüş Değerleri:

<HataKodu>|<DurumKodu>


Olası Hatalar:

Error Code Title
3 ERR_INVALID_STATE
Slipler ödeme başlayıp fiş kapatılmadan önce gönderilmelidir.
5 ERR_INVALID_PRM
111 ERR_LINE_LEN
Satır uzunluğu beklenenden fazla

2.35. string PrintInvoiceHeader(DateTime invoiceDT, string serial, string orderNo, Customer customerInfo)

Dahili yazıcıda fatura başlatır.


Parametreler:

parametre adı tanım data tipi
invoiceDT fatura tarihi DateTime
serial belge seri numarası string(10)
orderNo belge sıra numarası string(10)
customerInfo müşteri bilgileri Hugin.Common.Customer

Dönüş Değerleri:

<HataKodu>|<DurumKodu>|<BelgeNo>|<ZNo>|<KDVOranı>|<KDVTutarı>

2.36. string PrintReturnDocumentHeader(DateTime invoiceDT, string serial, string orderNo, Customer customerInfo)

İade belgesi (Gider Pusulası) başlatmak için kullanılır.


Parametreler:

parametre adı tanım data tipi
invoiceDT fatura tarihi DateTime
serial belge seri numarası string(10)
orderNo belge sıra numarası string(10)
customerInfo müşteri bilgileri Hugin.Common.Customer

Dönüş Değerleri:

<HataKodu>|<DurumKodu>|<BelgeNo>|<ZNo>|<KDVOranı>|<KDVTutarı>

2.37. string PrintSelfEmployementHeader(Customer customer, Service[] services)

Serbest Meslek Makbuzu başlatmak için kullanılır.


Parametreler:

parametre adı tanım data tipi
customerInfo müşteri bilgileri Hugin.Common.Customer
services hizmetlerin listesi Hugin.Common.Service[]

Dönüş Değerleri:

<HataKodu>|<DurumKodu>|<BelgeNo>|<ZNo>|<KDVOranı>|<KDVTutarı>

2.38 string PrintSubtotal(decimal stoppageAmount)

YNÖKC üzerindeki dökümanın aratoplam değerini stopaj miktarı kullanarak çekmenizi sağlar.


Parametreler:

parametre adı tanım data tipi
stoppageAmount stopaj miktarı Decimal(999999,98)

Dönüş Değerleri:

<HataKodu>|<DurumKodu>|<BelgeNo>|<ZNo>|<KDVOranı>|<KDVTutarı>

2.38.1 string PrintSubtotal(int stoppageAmount)

Bir önceki metod ile aynı özelliklere sahiptir, tek farkı decimal olan parametre yerine int değer alan parametre yer almaktadır.


2.39 string RefundEFTPayment(int acquierID)


Parametreler:

parametre adı tanım data tipi
acquierID Kredi kartı ve debit kart ödemelerinde bankayı tanımlayan id değeridir.

Dönüş Değerleri:

<HataKodu>|<DurumKodu>

Olası Hatalar:

Hata Kodu Enum Değer Açıklama
3 ERR_INVALID_STATE Uygunsuz ÖKC durumu
5 ERR_INVALID_PRM Geçersiz parametre, parametrelerinizi kontrol ediniz
177 ERR_EFT_RETURN_FAIL Başarısız EFT iade işlemi

3. RAPOR FONKSİYONLARI

Uygulama, ÖKC'yi rapor yazdırmak için tetikleyebilir. İlgili methodlar rapoarları kağıda yazdırabildiği gibi, yazdırmadan da içerik olarak alabilirler. copy parametresi bu amaç için kullanılır.

copy parametresi aşağıdaki değerleri alır;

değer tanım
1 Sadece içerik al (desteklenmiyor)
2 Sadece kağıda yazdır
3 Hem içerik al hem kağıda yazdır(desteklenmiyor)

Rapor fonksiyonlarında alınabilecek genel hatalar;

Hata Kodu Enum Değer Açıklama
3 ERR_INVALID_STATE Uygun olmayan ÖKC durumu
20 ERR_FM_CLOSED Mali bellek kapalı
91 ERR_CAHIER_AUTH Kasiyer yetkisi yetersiz, yetkili kasiyer girişi yapınız
8 ERR_NO_PAPER Kağıt yok
32 ERR_EJ_REMOVED EKÜ çıkarılmış
33 ERR_EJ_MISMATCH EKÜ uyuşmazlık hatası
34 ERR_EJ_OLD EKÜ eski
35 ERR_NEW_EJ EKÜ yeni
36 ERR_EJ_ZREQUIRED Z raporu alınmalı
38 ERR_EJ_FULL EKÜ dolu
5 ERR_INVALID_PRM Geçersiz parametre

3.1. string PrintXReport (int copy)

X raporunu yazdırır. X raporu, Z raporu ile aynı içeriği içerir fakat mali değildir. X raporu, hiç bir mali değeri sıfırlamadan, Z rapor içeriğini görmek için kullanılır.

Parametreler:

parametre adı tanım data tipi
copy içerik hedefi Int(1-3)

Return value:

<HataKodu>|<DurumKodu>|<BelgeNo>|<ZNo>

3.2. string PrintXPluReport (int firstPlu, int lastPlu, int copy)

Verilen PLU değerleri arasında X raporu yazdırır.

NOT: Verilen PLU aralığı 1000'den küçük olmalıdır.


Parametreler:

parametre adı tanım data tipi
firstPlu İlk PLU numarası Int(1-200000)
lastPlu Son PLU numarası Int(1-200000)
copy yazdırma opsiyonu Int(1-3)

Dönüş Değerleri:

<HataKodu>|<DurumKodu>|<DocNo>|<ZNo>

Olası Hatalar:

Hata Kodu Enum Değer Açıklama
59 ERR_DAILY_PLU_LIMIT PLU limit aşım hatası

3.3. PrintSystemInfoReport (int copy)

Sistem bilgi raporunu yazdırır. Bu rapor içinde, ÖKC sicil bilgisi, yazılım versiyon bilgileri, network bilgileri, KDV bilgileri, Departman bilgileri ve program ayarları yer alır.


Parametreler:

parametre adı tanım data tipi
copy yazdırma opsiyonu int değerler:
0 : Kağıt
1 : Ana Ünite
2 : İkisi

Dönüş Değerleri:

<HataKodu>|<DurumKodu>|<DocNo>|<Raporİçeriği>

3.4. PrintReceiptTotalReport (int copy)

Fiş özetleri raporunu yazdırır. Bu rapor fişler şeklinde gruplanmış olarak toplam satış bilgilerini içerir.


Parametreler:

parametre adı tanım data tipi
copy yazdırma opsiyonu Int(1-3)

Dönüş Değerleri:

<HataKodu>|<DurumKodu>|<DocNo>|<Raporİçeriği>

Olası Hatalar:

Hata Kodu Enum değer Açıklama
97 ERR_ECR_NONFISCAL ÖKC mali değil

3.5. string PrintZReport ()

Z Raporunu yazdırır. Z raporu bir çeşit gün sonu raporudur. Satılan ürünlerin departman ve toplam tutar bilgilerini içerir. Gün toplam değerlerini sıfırlar.


Dönüş Değerleri:

<HataKodu>|<DurumKodu>|<BelgeNo>|<ZNo>

Olası Hatalar:

Hata Kodu Enum Değer Açıklama
17 ERR_FM_DAILY_LIMIT Mali bellek günlük limit hatası
18 ERR_FM_FULL Mali bellek dolu

3.6. string PrintPeriodicDateReport (DateTime firstDay, DateTime lastDay, int copy, bool detail)

İki tarih arasında periyodik raporu yazdırır. Bu iki tarih arasındaki ödeme bilgilerini içerir.


Parametreler:

parametre adı tanım data tipi
firstDay ilk tarih DateTime(Fiscalization date to Last receipt date)
lastDay son tarih DateTime(Fiscalization date to Last receipt date)
copy yazdırma opsiyonu Int(1-3)
detail detaylı ya da değil boolean(true: her fişin toplam değeri raporda yer alsın)

Dönüş Değerleri:

<HataKodu>|<DurumKodu>|<BelgeNo>|<ZNo>

Olası Hatalar:

Hata Kodu Enum değer Açıklama
77 ERR_FMSEARCH_NO_RESULT Uygun sonuç bulunamadı
97 ERR_ECR_NONFISCAL ÖKC mali değil

3.7. string PrintPeriodicZZReport (int firstZ, int lastZ, int hardcopy, bool detail)

Tek Z ya da birden fazla Z içeriğinin yer aldığı periyodik raporu yazdırır.


Parametreler:

parametre adı tanım data tipi
firstZ İlk Z no Int(1-3650)
lastZ Son Z No Int(1-3650)
copy yazdırma opsiyonu Int(1-3)
detail detaylı veya değil boolean(true: her bir fiş için total değer yazdırılacak)

Dönüş Değerleri:

<HataKodu>|<DurumKodu>|<BelgeNo>|<ZNo>

Olası Hatalar:

Hata Kodu Enum Değer Açıklama
77 ERR_FMSEARCH_NO_RESULT Uygun sonuç bulunamadı
97 ERR_ECR_NONFISCAL ÖKC mali değil

3.8. string PrintEJPeriodic (DateTime day, int copy)

Günlük periyodik rapor yazdırır. Bu rapor sadece mali modda alınabilir.


Parametreler:

parametre adı tanım data tipi
day raporlanacak gün DateTime
copy yazdırma opsiyonu Int(1-3)

Dönüş Değerleri:

<HataKodu>|<DurumKodu>|<BelgeNo>|<ZNo>

3.9. string PrintEJPeriodic (DateTime startTime, DateTime endTime, int copy)

İki tarih arası periyodik raporu yazdırır. Bu rapor sadece mali modda alınabilir.


Parametreler:

parametre adı tanım data tipi
startTime Başlangıç tarihi DateTime(Fiscalization date to Last receipt date)
endTime Bitiş tarihi DateTime(Fiscalization date to Last receipt date)
copy yazdırma opsiyonu Int(1-3)

Dönüş Değerleri:

<HataKodu>|<DurumKodu>|<BelgeNo>|<ZNo>

3.10. string PrintEJPeriodic (int ZStartId, int docStartId, int ZEndId, int docEndId, int copy)

İki Z arası periyodik rapor yazdırır. Bu rapor sadece mali modda alınabilir.


parametre adı tanım data tipi
ZStartId Başlangıç Z numarası Int(1-3650)
docStartId Başlangıç belge no Int(9999)
ZEndId Bitiş Z numarası Int(1-3650)
docEndId Bitiş belge no Int(9999)
copy yazdırma opsiyonu Int(1-3)

Dönüş Değerleri:

<HataKodu>|<DurumKodu>|<BelgeNo>|<ZNo>

3.11. string PrintEJDetail (int copy)

Genel EKÜ kullanımı ile ilgili bilgileri içeren rapor yazdırır. EKÜ no, ilk Z no, son Z no, ilk fiş no, son fiş no, toplam EKÜ satırı, kullanılan EKÜ satırı gibi..


parametre adı tanım data tipi
copy yazdırma opsiyonu Int(1-3)

Dönüş Değerleri:

<HataKodu>|<DurumKodu>|<EKÜNo>|<İlkZno>|<İlkBelgeNo>|<SonZno>|<SonBelgeNo>|<ToplamEKÜSatırı>|<KullanılanEKÜSatırı>

3.12. string PrintEndDayReport ()

EFT-POS cihazı üzerinde gün sonu raporunu yazdırır.


Dönüş Değerleri:

<HataKodu>|<DurumKodu>

3.13. string PrintZReport(int copy)

Z Raporunu yazdırır. Z raporu bir çeşit gün sonu raporudur. Satılan ürünlerin departman ve toplam tutar bilgilerini içerir. Gün toplam değerlerini sıfırlar.


Parametreler:

parametre adı tanım data tipi
copy yazdırma opsiyonu int değerler:
0 : Kağıt
1 : Ana Ünite
2 : İkisi

Dönüş Değerleri:

<HataKodu>|<DurumKodu>|<BelgeNo>|<ZNo>

Olası Hatalar:

Hata Kodu Enum Değer Açıklama
17 ERR_FM_DAILY_LIMIT Mali bellek günlük limit hatası
18 ERR_FM_FULL Mali bellek dolu

3.14. string PrintZReport(int count, decimal amount, bool isAffectDrawer)


Parametreler :

parametre adı tanım data tipi
count yazdırma opsiyonu Int(1-3)
amount miktar decimal
isAffectDawer yazdırma opsiyonu boolean(true/false)

Dönüş Değerleri:

<HataKodu>|<DurumKodu>|<EKÜNo>|<İlkZno>|<İlkBelgeNo>|<SonZno>|<SonBelgeNo>|<ToplamEKÜSatırı>|<KullanılanEKÜSatırı>

3.15. string GetReportContent()

Son yazıdırılan raporun içeriğini getirmek için kullanılır.

Dönüş Değerleri:

<HataKodu>|<DurumKodu>|<BelgeNo>|<Zno>|<Raporİçeriği>

3.16. string PrintODocPeriodic(DateTime firstDate, DateTime lastDate, int oDocType)

İki tarih arasında diğer belgelerin (fatura,gider pusulası, serbest meslek makbuzu) ekü kopyasını almak için kullanılır.


Parametreler :

parametre adı tanım data tipi
firstDate Başlangıç tarihi DateTime
lastDate Bitiş tarihi DateTime
oDocType Belge tipi Int(0-2)

Dönüş Değerleri:

<HataKodu>|<DurumKodu>|<BelgeNo>|<ZNo>

3.17. string PrintODocPeriodic(int oDocType)

Diğer belgelerin (fatura,gider pusulası, serbest meslek makbuzu) ekü kopyasını almak için kullanılır.


Parametreler :

parametre adı tanım data tipi
oDocType Belge Tipi Int(0-2)

Dönüş Değerleri:

<HataKodu>|<DurumKodu>|<BelgeNo>|<ZNo>

YARDIMCI FONKSİYONLAR

ÖKC yöetiminde sıklıkla kullanılan, satış, programlama ve rapor harici fonksiyonlardır.


4.1. string CheckPrinterStatus ()

O anki ÖKC durumu hakkında bilgi verir. Satış uygulaması bu method ile ÖKC durumunu ya da ÖKC'yi bloklayan hata sebebini öğrenebilir. Hiçbir mali işlevi yoktur, sadece durum bilgisi öğrenilir.

NOT: Her ne kadar mali bir işlevi olmasa da, gerek olmayan durumlar dışında sürekli kasa durumunu sorgulatmak, satış uygulaması tarafında da işlem akışının yavaşlamasına sebep olacaktır.


Dönüş Değerleri:

<HataKodu>|<DurumKodu>|<Tarih>|<Zaman>|NULL|NULL|NULL|NULL|NULL

4.2. string SignInCashier (int id, string password)

ÖKC üzerinde kayıtlı olan bilgiler ile kasiyer girişini sağlar.


Parametreler:

parametre adı tanım data tipi
id kasiyer numarası Int(1-9)
password kasiyer şifresi (nümerik) String(5)

Dönüş Değerleri:

<HataKodu>|<DurumKodu>|NULL|NULL|<KasiyerAdı>|NULL|NULL|NULL|<YetkiSeviyesi>

Default Kasiyer Bilgilerir:

id şifre Yetki Seviyesi tanım
1,2,3,4,5 1234 Satış Bu kasiyerler sadece satış yapabilirler
6,7,8, 1357 Satış, Z Raporu Bu kasiyerler satış yapabilirler, Z raporu alabilirler.
9 14710 Satış, Z Raporu, Programlama Bu kasiyerler ÖKC üzerinde ayarları değiştirebilirler. Satış yapabilirler ve Z raporu alabilirler.

Olası Hatalar:

Hata Kodu Enum Değer Açıklama
91 ERR_CASHIER_AUTH Kasiyer Yetkisi yetersiz

4.3. CheckCashierIsValid (int id, string password)

Kasiyer şifresini kontrol etmek amacı ile kullanılır. Maksimum hatalı giriş sayısı günlük 5 kezdir. Bu sayının aşılması durumunda kasiyer 24 saat boyunca kilitlenir.


Parametreler:

parametre adı tanım data tipi
id kontrol edilecek kasiyer id Int(1-9)
password şifre (nümerik) String(5)

Dönüş Değerleri:

<HataKodu>|<DurumKodu>|NULL|NULL|<KasiyerID>|NULL|NULL| <HatalıGirişSayısı>|<YetkiSeviyesi>|

Olası Hatalar:

Hata Kodu Enum Değer Açıklama
91 ERR_CASHIER_AUTH Kasiyer yetki hatası

4.4. string CashIn (decimal amount)

ÖKC' ye nakit girdi yapar.


Parametreler:

parametre adı tanım data tipi
amount nakit girdi tutarı Decimal(999999,99)

Dönüş Değerleri:

<HataKodu>|<DurumKodu>|NULL|NULL|NULL|<Tutar>|NULL|NULL|NULL|

Olası Hatalar:

Hata Kodu Enum Değer Açıklama
96 ERR_DAILY_TOTAL_LIMIT Günlük toplam limit hatası

4.4.1 string CashIn(int amount)

Bir önceki metod ile aynı özelliklere sahiptir, tek farkı decimal olan parametre yerine int değer alan parametre yer almaktadır.


4.5. string CashOut (decimal amount)

ÖKC nakit çıktı yapar.


Parametreler:

parametre adı tanım data tipi
amount nakit miktarı Decimal(999999,99)

Dönüş Değerleri:

<HataKodu>|<DurumKodu>|NULL|NULL|NULL|<Tutar>|NULL|NULL|NULL|

Olası Hatalar:

Hata Kodu Enum Değer Açıklama
94 ERR_NOT_ENOUGH_MONEY Çekmecede yeterli nakit yok

4.5.1 string CashOut(int amount)

Bir önceki metod ile aynı özelliklere sahiptir, tek farkı decimal olan parametre yerine int değer alan parametre yer almaktadır.


4.6. bool Connect (Object connObj, Hugin.Common.DeviceInfo serverInfo)

ÖKC ile eşleşmeyi başlatır. Connected durumda olan connection nesnesi System.IO.Ports.SerialPort ya da System.Net.Sockets.Socket sınıflarından birine ait olmalıdır. DeviceInfo sınıfına Hugin.Common kütüphanesi üzerinden ulaşılabilinir.


Parametreler:

parametre adı tanım data tipi
connObj uygulama tarafındaki connection nesnesi
serverInfo server cihaz bilgileri

Dönüş Değerleri: true (eğer işlem başarılı ise) false(eğer işlem başarısız ise)


4.7. string GetDrawerInfo ()

ÖKC çekmece bilgilerini çeker.


Dönüş Değerleri:

 <HataKodu>|<DurumKodu>|<ToplamBelgeSayısı>|<ToplamTutar>|<MaliFişSayısı>| <MaliFişTutarları>|<İptalBelgeSayısı>|<İptalTutarı>|<ToplamİndirimTutarı>|<NakitGirişID>|<NakitGirişSayısı>|<NakitGirişMiktarı>|<NakitÇıkışID>|<NakitÇıkışSayısı>|<NakitÇıkışMiktarı>|<ÖdemeTipi>|<Index>|<Tutar>

Tekrarlanabilir Ödemeler Bloğu:

<ÖdemeTipi>|<Index>|<Tutar>

4.8. string GetLastDocumentInfo (bool lastZ)

ÖKC üzerinde yazılan son belge ile ilgili bilgileri getirir.


Parametreler:

parametre adı tanım data tipi
lastZ Son belge tipini belirtir, Z raporu mu? Normal Fiş mi? boolean(true: Son Z bilgisini getirir)

Dönüş Değerleri:

 <HataKodu>|<DurumKodu>|<BelgeNo>|<ZNo>|<EKÜNo>|<BelgeTipi>| <BelgeTarihi>| <BelgeZamanı>

4.9. string ClearError ()

Interruptable raporların durdurulmasını sağlar.(Rapor alınırken)

Buna ek olarak hata sonrası kasiyer onayı gibi bir görevi de vardır. Örneğin 24 saat geçmesi itibariyle ÖKC nin 24 Saat Z raporu uyarısı vermesinden sonra Z raporunu aldırmak için bu komut gönderilir.

ÖKC üzerinde kağıt rulo bitmesi sonrası yeni rulo takıldıktan sonra da ÖKC işleme devam etmek için sizden bu komutu bekler.


Dönüş Değerleri:

<HataKodu>|<DurumKodu>

4.10. string OpenDrawer ()

Çekmece açma komutu. ÖKC üzerinde entegre çekmece var ise bu komut ile açılır.


Dönüş Değerleri:

<HataKodu>|<DurumKodu>

4.11. string StartNFReceipt ()

ÖKC üzerinde mali değeri olmayan fiş başlatır. Free-text raporlar ve belgeler için kullanılabilinir.


Dönüş Değerleri:

<HataKodu>|<DurumKodu>

Olası Hatalar:

Hata Kodu Enum Değer Açıklama
95 ERR_DAILY_RCPT_COUNT Günlük Fiş sayısı limiti

4.12. string WriteNFLine (string[] lines)

Mali olmayan fişe, satır yazdırır.


Parametreler:

parametre adı tanım data tipi
lines yazdırılacak satıalr String Array (Line length is 48 for FP300, 32 for FT202 and Vx675 models)

Dönüş Değerleri:

<HataKodu>|<DurumKodu>

4.13. string CloseNFReceipt ()

Mali olmayan fişi kapatır.


Dönüş Değerleri:

<HataKodu>|<DurumKodu>

4.14. string GetLastLog ()

Kütüphane üzerinden son log bilgisini getirir.


Dönüş Değerleri:

<Komut>|<İşlemSıraNo>|<ÖKCDurum>|<HataKodu>|<HataMesajı>

4.15. string GetECRVersion ()

ÖKC versiyon bilgisini getirir.

Dönüş Değerleri:

	<VersiyonBilgisi>

4.16. string GetLastResponse()

ÖKC tarafından verilen son cevabı görüntüler.

Dönüş Değerleri:

	<HataKodu>|<DurumKodu>|Tarih|Zaman|NULL|NULL|NULL|NULL|NULL|

4.17. string GetDailySummary()

Gün içersinde yapılan işlemlerin belge bazında kdv dağılımı toplalarını ve ödeme toplamlarını almak için kullanılır.

Dönüş Değerleri: İşlem Başarılı ise Json formatında bilgiler gelir. Başarılı değilse hata kodu gelir.

Örnek Başarılı cevap

{
"summaries": [
	{
		"DocumentType": 13,
		"ValidCount": 3,
		"CancelledCount": 1,
		"ValidAmount": 117.0,
		"CancelledAmount": 64.0,
		"VatTotal": 0.16,
		"VatGroupSales": [
			{
				"VatRate": 0,
				"VatAmount": 0.0,
				"SaleAmount": 101.0
			},
			{
				"VatRate": 1,
				"VatAmount": 0.16,
				"SaleAmount": 16.0
			}
		],
		"Cash": 117.0,
		"Credit": 0.0,
		"Other": 0.0
	},
	{
		"DocumentType": 1,
		"ValidCount": 1,
		"CancelledCount": 0,
		"ValidAmount": 30.0,
		"CancelledAmount": 0.0,
		"VatTotal": 0.56,
		"VatGroupSales": [
			{
				"VatRate": 1,
				"VatAmount": 0.26,
				"SaleAmount": 26.0
			},
			{
				"VatRate": 8,
				"VatAmount": 0.3,
				"SaleAmount": 4.0
			}
		],
		"Cash": 30.0,
		"Credit": 0.0,
		"Other": 0.0
	},
	{
		"DocumentType": 2,
		"ValidCount": 1,
		"CancelledCount": 2,
		"ValidAmount": 40.0,
		"CancelledAmount": 165.0,
		"VatTotal": 6.1,
		"VatGroupSales": [
			{
				"VatRate": 18,
				"VatAmount": 6.1,
				"SaleAmount": 40.0
			}
		],
		"Cash": 40.0,
		"Credit": 0.0,
		"Other": 0.0
	},
	{
		"DocumentType": 3,
		"ValidCount": 1,
		"CancelledCount": 3,
		"ValidAmount": 45.0,
		"CancelledAmount": 45.0,
		"VatTotal": 0.45,
		"VatGroupSales": [
			{
				"VatRate": 1,
				"VatAmount": 0.45,
				"SaleAmount": 45.0
			}
		],
		"Cash": 45.0,
		"Credit": 0.0,
		"Other": 0.0
	},
	{
		"DocumentType": 4,
		"ValidCount": 1,
		"CancelledCount": 1,
		"ValidAmount": 50.0,
		"CancelledAmount": 15.0,
		"VatTotal": 0.0,
		"VatGroupSales": [
			{
				"VatRate": 0,
				"VatAmount": 0.0,
				"SaleAmount": 50.0
			}
		],
		"Cash": 50.0,
		"Credit": 0.0,
		"Other": 0.0
	}
],
"CummulativeTotal": 43173.53,
"CummulativeVat": 3631.13
}

Hatalı Cevap Formatı:

<Komut>|<İşlemSıraNo>|<ÖKCDurum>|<HataKodu>|<HataMesajı>

5. KÜTÜPHANE ÖZELİKLERİ

5.1. ICompactPrinter Printer

O anki static CompactPrinter instance değerini döner. Eğer bu özelik null ise, yeni instance oluşturulmalıdır.


5.2. string FiscalRegisterNo

Bu özelik ÖKC sicil numarasının kütüphaneye set edilmesi amacı ile kullanılır. Eşeleme sırasında Connect methodu çağrılmadan önce ÖKC sicil numarası bu method ile set edilmelidir. Ayrıca get ulaşımı da bulunduğu için set edilen sicil numarası öğrenilebilinir.


5.3. bool IsVx675

Eğer eşleme yapılan cihazın modeli Vx675 ise bu özellik true döner, diğer modellerde false döner. Yanlızca get ulaşımı bulunmaktadır.


5.4. string LogDirectory

Bu özellik ile kütüphane loglama dizinini belirleyebilir, set edebilirsiniz.

NOT: Java kütüphanesinde bu özeliğe karşılık gelen özelik -> "SetDebugFolder(string path)"


5.5. int LogerLevel

Loglama levelini belirlemenizde kullanılır. 6 log leveli bulunmaktadır.

	public enum LogLevel
    {
        FATAL = 1, 
        ERROR = 2,
        WARN = 3,
        INFO = 4,
        DEBUG = 5,
        HIDE_BUG = 6
    }

NOT: Java kütüphanesinde bu özeliğe karşılık gelen özelik -> "SetDebugLevel(int level)"


5.6. string LibraryVersion

Kütüphane versiyon bilgisini getirir.


5.7. int PrinterBufferSize

Seri port ve TCP/IP haberleşmeleri için kütüphane tarafından desteklenen buffer boyutu bilgisini getirir.


JSON SATIŞ BELGESİ

HUGIN JSON SATIŞ BELGESİ ALANLARI


ÖDEME TİPLERİ:

İNDEKS ENUM DEĞER AÇIKLAMA
0 CASH Nakit Ödeme tipi
1 CREDIT Kredi ile Ödeme Tipi
2 CHECK Çek ile Ödeme Tipi
3 F_CURRENCY Döviz ile Ödeme Tipi

İNDİRİM/ARTTIRIM TİPLERİ:

İNDEKS ENUM DEĞER AÇIKLAMA
0 FEE Tutarsal yapılan arttırım
1 PERCENT_FEE Yüzde ile yapılan arttırım
2 DISCOUNT Tutarsal yapılan indirim
3 PERCENT_FEE Yüzde ile yapılan indirim

JSONDocument

ALAN ADI TANIM VERİ TİPİ
FiscalItems[] Satılan ürünler bu alan altında JSONItem tipinde gönderilir. JSONItem(0..128)
Adjustments[] Belge toplamına yapılan indirim/arttırım bilgilerinin yer aldığı alan. Adjustment(0..1)
Payments[] Ödeme bilgilerinin yer aldığı alan PaymentInfo(0..10)
FooterNotes[] Fiş sonuna yazdırılmak istenen belge sonu notlarının yer aldığı alan. Bu alan kullanılırken ilgili cihazın bir satırda yer alabilecek maksimum karakter sayısına dikkat edilmelidir. String(0..10)
EndOfReceiptInfo Fiş sonu bilgileri ve ayarları içeren alandır. EndOfReceipt

JSONItem

ALAN ADI TANIM VERİ TİPİ
Id Ürün PLU numarasını belirtir. PLU satışlarında mutlaka uygun değer verilmelidir. Departman satışların da ise 0 gelebilir. Int(0..100.000)
Quantity Ürün tartılabilir ise kilogram cinsinden, tartılamaz ise adet cinsinden miktarını belirtir. Decimal (max. 999.999,99)
Price Birim ürüne ait liste fiyatı Decimal (max. 999.999,99)
Name Ürün adı String(max. 20 karakter)
Barcode Ürün barkod bilgisi. Sadece PLU satışında kullanılabilir. String(max. 20)
DeptId Ürün departman numarası. Int(1..8)
Status Ürün tartılabilirlik bilgisi. Tartılabilir ise 1, tartılamaz ise 0 gönderilmelidir. Int(0..1)
Adj Ürün üzerinde uygulanan indirim/arttırım bilgilerini içerir. Eğer uygulama tarafında birden fazla indirim ya da arttırım uygulanmış ise bunların genel toplamı sonucu oluşan indirim ya da arttırım bilgisi bu alana işlenir. Adjustment
NoteLine1 Üründen sonraki satırda herhangi bir bilgi yazdırılmak istenirse kullanılır. String(ÖKC modeline göre maksimum karakter sayısı)
NoteLine2 Üründen sonraki yazdırılan not satırı ardına 2.satır yazdırılmak istenirse kullanılır. String(ÖKC modeline göre maksimum karakter sayısı)

Adjustment

ALAN ADI TANIM VERİ TİPİ
Type Yapılan indirim ya da arttırım bilgisinin tipini belirtir AdjustmentType
Amount Yapılan indirim ya da arttırım bilgisinin tutarsal miktarı. Yüzdesel indirimlerde/arttırımlarda herhangi bir değer atamaya gerek yoktur. Decimal (max. 999.999,99)
percentage Yapılan indirim ya da arttırımın yüzdesel miktarı. Tutarsal indirim ya da arttırımlarda herhangi bir değer atamaya gerek yoktur. Int(1-99)
NoteLine1 İndirim/arttırım bilgisinden sonra herhangi bir açıklama ya da bilgi satırı girilicekse bu alan kullanılır. String(ÖKC modeline göre maksimum karakter sayısı)
NoteLine2 İndirim/arttırım bilgisinden sonra ikinci açıklama ya da bilgi satırı girilecekse bu alan kullanılır. String(ÖKC modeline göre maksimum karakter sayısı)

PaymentInfo

ALAN ADI TANIM VERİ TİPİ
PaymentType Ödeme bilgisinin tipini belirtir PaymentType
Index Ödeme tipine göre değişen amaçlarla kullanılır.Kredili ödeme ve Döviz ödemelerinde kasa üzerinde tanımlı alanların indeks değerini içerir, zorunludur. Çek ile ödemede çek numarası olarak kullanılır, zorunlu değildir. Int
PaidTotal Ödeme tutarı Decimal (max. 999.999,99)
viaByEFT Yapılan kredili ödemenin EFT-POS cihazının bağlı olması durumunda, cihaza yönlendirilmesini sağlar. Şu anda desteklenmemektedir. Boolean

EndOfReceipt

ALAN ADI TANIM VERİ TİPİ
CloseReceiptFlag JSON departman satışında (PrintJSONDocumentDeptOnly), ödeme sonrası fişin kapatılıp kapatılmayacağını belirtir. true ise fiş kapatılır, değil ise kapatılmaz. Boolean
BarcodeFlag Fiş sonu barkodunun basılıp basılmayacağını belirtir. Eğer true atanıp barkod basılmak isteniyor ise Barcode alanı da doldurulmalıdır. Boolean
Barcode BarcodeFlag true set edildikten sonra basılmak istenen fiş sonu barkod değeri bu alana girilir. String(20)

NOT: JSONItem ve Adjustment veri tiplerinde yer alan NoteLine1 ve NoteLine2 alanları sadece PrintJSONDocumentDeptOnly ve PrintSalesDocument methodlarında kullanılır.


HUGIN JSON PLU Satış Belgesi Nesnesi (C#):

	
	enum PaymentType
	{
		CASH,
		CREDIT,
		CHECK,
		F_CURRENCY
	}
	enum AdjustmentType
	{
		FEE,
		PERCENT_FEE,
		DISCOUNT,
		PERCENT_DISCOUNT
	}
	
	class Adjustment
    {
        public AdjustmentType Type = AdjustmentType.Discount;
        public decimal Amount = 0m;
        public int percentage = 0;
        public string NoteLine1;
        public string NoteLine2;
    }
    class PaymentInfo
    {
        public PaymentType Type = 0;
        public int Index = 0;
        public decimal PaidTotal = 0.00m;
        public bool viaByEFT = false;
    }
    class JSONItem
    {
        public int Id;
        public decimal Quantity;
        public decimal Price;
        public string Name;
        public string Barcode;
        public int DeptId;
        public int Status;
        public Adjustment Adj = null;
        public string NoteLine1;
        public string NoteLine2;
    }
	class EndOfReceipt
	{
		public bool CloseReceiptFlag = true;
		public bool BarcodeFlag = false;
		public string Barcode;	
	} 
	
    class JSONDocument
    {
        public List<JSONItem> FiscalItems = new List<JSONItem>();
        public List<Adjustment> Adjustments = new List<Adjustment>();
        public List<PaymentInfo> Payments = new List<PaymentInfo>();
        public List<String> FooterNotes = new List<string>();
        public EndOfReceipt EndOfReceiptInfo = new EndOfReceipt();
    }

JSON ÖRNEK:

   {
	"FiscalItems":[{
	"Id":13,
	"Quantity":1.0,
	"Price":11.0,
	"Name":"LIPTON ÇAY",
	"DeptId":1,
	"Status":0,
	"Adj":null,
	"NoteLine1":"DEMLIK POŞET"
	},{
	"Id":7,
	"Quantity":25.0,
	"Price":0.70,
	"Name":"YUMURTA",
	"DeptId":3,
	"Status":0,
	"Adj":{"Type":3,"Amount":-0.88,"percentage":5},
	"NoteLine1":"DOĞAL KÖY YUMURTASI"
	},{
	"Id":9,
	"Quantity":2.0,
	"Price":1.2,
	"Name":"ÜLKER ÇİZİ",
	"DeptId":3,"Status":0,
	"Adj":null
	},{
	"Id":3,
	"Quantity":1.35,
	"Price":11.95,
	"Name":"BEYAZ PEYNİR",
	"DeptId":3,
	"Status":1,
	"Adj":null
	},{
	"Id":5,
	"Quantity":1.0,
	"Price":8.95,
	"Name":"YOĞURT",
	"DeptId":3,
	"Status":0,
	"Adj":{"Type":1,"Amount":0.45,"percentage":5,"NoteLine1":"SÜT HAFTASI ÖZEL İNDİRİMİ"}
	},{
	"Id":2,
	"Quantity":2.5,
	"Price":4.49,
	"Name":"BULGUR",
	"DeptId":2,
	"Status":1,
	"Adj":null
	}],
"Adjustments":[{
	"Type":3,
	"Amount":-10.02,
	"percentage":15,
	"NoteLine1":"ÖZEL MÜŞTERİ İNDİRİMİ"
	}],
"Payments":[{
	"Type":0,
	"Index":0,
	"PaidTotal":20.0,
	"SequenceNo":0
	},{
	"Type":1,
	"Index":0,
	"PaidTotal":36.76,
	"SequenceNo":1
	}],
"FooterNotes":[
	"ÜRÜN İNDİRİMİ  :    *0,43",
	"ARATOP İNDİRİMİ:   *10,02",
	"TOPLAM İNDİRİM :   *10,45",
	"   **** İYİ GÜNLER ****",
	" www.hugin.com.tr",
	" 0212 212 2121",
	" MERSİS NO: 121244112344123124"
	],
"EndOfReceiptInfo":{"CloseReceiptFlag":false,"BarcodeFlag":false,"Barcode":null}
}


BANKA KODLARI

Banka Kodları ve İsimleri

Banka Kodu Banka İsmi
0010 TC ZIRAAT BANKASI
0100 ADABANK A.S.
0103 MILLENNIUM BANK A.S.
0106 WESTDEUTSCHE LANDESBANK GIROZENTRAL
0108 TURKLAND BANK A.S.
0109 TEKSTIL BANKASI A.S.
0111 FINANSBANK A.S.
0115 DEUTSCHE BANK A.S.
0116 TAIB YATIRIMBANK A.S.
0012 HALK BANKASI
0121 CALYON YATIRIM BANKASI TURK A.S.
0122 SOCIETE GENERALE
0123 HSBC BANK A.S.
0124 ALTERNATIFBANK A.S.
0125 EUROBANK TEKFEN A.S.
0129 MERRILL LYNCH YATIRIM BANK A.S.
0132 IMKB TAKAS VE SAKLAMA BANKASI
0134 DENIZ BANK A.S.
0135 ANADOLUBANK A.S.
0138 DİLER YATIRIM BANKASI A.S.
0139 GSD YATIRIM BANKASI A.S.
0014 T.SINAİ KALK. BANKASI A.S.
0141 NUROL YATIRIM BANKASI A.S.
0142 BANKPOZITIF KREDI VE KALK.BANK.A.S.
0143 AKTIF YATIRIM BANKASI A.S.
0015 T.VAKIFLAR BANKASI T.A.O.
0016 T.IHRACAT KREDI BANKASI A.S.
0017 T.KALKINMA BANKASI A.S.
0203 ALBARAKA TURK KATILIM BANKASI A.S.
0205 KUVEYT TURK KATILIM BANKASI A.S.
0206 TURKIYE FINANS KATILIM BANKASI A.S.
0208 ASYA KATILIM BANKASI A.S.
0029 BIRLESIK FON BANKASI A.S.
0032 T.EKONOMİ BANKASI A.S.
0004 İLLER BANKASI
0046 AKBANK T.A.S.
0059 ŞEKERBANK T.A.S.
0062 T.GARANTİ BANKASI A.S.
0064 T.IŞ BANKASI A.S.
0067 YAPI VE KREDI BANKASI A.S.
0071 FORTIS BANK A.S.
0087 BANCO DI ROMA
0088 ABN AMRO BANK N.V.
0091 ARAP TÜRK BANKASI A.S.
0092 CITIBANK A.S.
0096 TURKISHBANK
0098 JP MORGAN CHASE BANK NA MERK COL.OH
0099 ING BANK A.S.

ÖRNEK AKIŞLAR VE KODLAR

ÖKC İLE BAĞLANTI KURULMASI

ÖKC ile kütüphane üzerinden bağlantı kurmak için temel olarak

/// <summary>
       /// Starts matching with ECR
       /// </summary>
       /// <param name="commObj">connection object(SerialPort or TCP/IP)</param>
       /// <param name="serverInfo">device info object</param>
       /// <returns>true if operations are done successfully</returns>
        bool Connect(Object commObj, DeviceInfo serverInfo);

methodu kullanılacaktır. Göründüğ üzere methodun iki parametresi bulunmaktadır. Öncelikli olarak commObj olarak belirtilen connection nesnesi oluşturulmalıdır. Seriport ve TCP bağlantıları desteklendiği için bu nesne;

System.IO.Ports.SerialPort

ya da

System.Net.Sockets.Socket

sınıflarından türemiş olmalıdır. Öncelikle bu bağlantılar oluşturulmalıdır.

			if (tabConn.SelectedTab == tabComPort)
                    {
                        // Seri port bağlantısı oluşturulur
                        this.Connection = new SerialConnection(cmbPorts.Text, int.Parse(txtBaudrate.Text));
                    }
                    else
                    {
                        // TCP/IP bağlantı oluşturulur
                        int port = Convert.ToInt32(txtTcpPort.Text);
                        this.Connection = new TCPConnection(txtTCPIP.Text, port);
                    }

                    this.Log(FormMessage.CONNECTING + "... ("+FormMessage.PLEASE_WAIT+")");
                    this.Connection.Open();

                    errPrefix = FormMessage.MATCHING_ERROR + ": ";

                    // ÖKC ile eşleme adımı
                    MatchExDevice();

Örnek uygulama projesinde yer alan yukarıdaki kod bloğunda da bu işlem yapılmıştır. Öncelikle Seriport ve TCP bağlantıları kurulmuş daha sonra eşleme adımına geçilmiştir.

NOT: Java kütüphanesinde TCPConnect ve SerialConnect methodları mevcuttur. Bu methodlar üzerinden gerekli bağlantılar sağlanabilir. Devamında akış aynıdır.


Bağlantılar kurulduktan sonra Hugin.Common kütüphanesinde yer alan DeviceInfo sınıfının alanları doldurulmalıdır. Bu Connect methodunun ikinci parametresidir.

Bu alanlar eşleşme sağlayacak olan bilgisayar bağlantılı sistemin, IP adres bilgisi, port, IP protokolü, marka, model, sicil numarası, versiyon ve anakart serisi gibi alanlardır.

	// DeviceInfo sınıfı gerekli bilgiler ile doldurulur
            DeviceInfo serverInfo = new DeviceInfo();
            serverInfo.IP = System.Net.IPAddress.Parse(GetIPAddress());
            serverInfo.IPProtocol = IPProtocol.IPV4;

            serverInfo.Brand = "HUGIN";

            if (!String.IsNullOrEmpty(System.Configuration.ConfigurationManager.AppSettings["Brand"]))
            {
                serverInfo.Brand = System.Configuration.ConfigurationManager.AppSettings["Brand"];
            }
            
            serverInfo.Model = "HUGIN COMPACT";
            serverInfo.Port = Convert.ToInt32(txtTcpPort.Text);
            serverInfo.TerminalNo = txtFiscalId.Text.PadLeft(8, '0');
            serverInfo.Version = new FileInfo(System.Reflection.Assembly.GetExecutingAssembly().Location).LastWriteTime.ToShortDateString();
            try
            {
                // Motherboard serisi alınır
                serverInfo.SerialNum = CreateMD5(GetMBId()).Substring(0, 8);
            }
            catch
            {
                // Seri alınırken sıkıntı yaşanırsa default bir değer verilebilir
                serverInfo.SerialNum = "ABCD1234";
            }

Örnek uygulamada yer alan yukarıda kod blokunda örnek giriş gösterilmektedir. Anakart serisi tekillik sağlama amaçlıdır. İllaki anakart serisi olacak diye bir koşul yoktur.

Artık gerekli parametreler hazırdır ve Connect methodunu çağırabiliriz.

		if (isMatchedBefore)
                {
                    // Eğer önceden eşleme yapıldıysa sadece connection objesinin kütüphaneye set edlmesi yeterli olacaktır.
                    printer.SetCommObject(conn.ToObject());
                    return;
                }
                try
                {
                    printer = new CompactPrinter();

                    // Eşleme öncesi ÖKC sicil numarası kütüphane üzerinde ilgili alana set edilir.
                    printer.FiscalRegisterNo = fiscalId;

                    try
                    {
                        // Loglama yapılacak dizin ve log seviyesi istenirse set edilir. Opsiyonel seçeneklerdir. 
                        //Set edilmemesi durumunda default değerler kullanılır.
                        if (!String.IsNullOrEmpty(System.Configuration.ConfigurationManager.AppSettings["LogDirectory"]))
                        {
                            printer.LogDirectory = System.Configuration.ConfigurationManager.AppSettings["LogDirectory"];
                        }

                        printer.LogerLevel = int.Parse(System.Configuration.ConfigurationManager.AppSettings["LogLevel"]);
                    }
                    catch { }

                    // Eşleme başlatılır. Başarılı ise true, başarısız ise false döner.
                    if (!printer.Connect(conn.ToObject(), serverInfo))
                    {
                        throw new OperationCanceledException(FormMessage.UNABLE_TO_MATCH);
                    }

                    // ÖKC üzerinde desteklenen bağlantı kapasitesi kontrol edilir, oluşturulan connection ile farklı ise düzenleme yapılır.
                    // Check supported printer size and set if it is different
                    if (printer.PrinterBufferSize != conn.BufferSize)
                    {
                        conn.BufferSize = printer.PrinterBufferSize;
                    }
                    printer.SetCommObject(conn.ToObject());
                    isMatchedBefore = true;
                }
                catch (Exception ex)
                {
                    throw ex;
                }

Eğer daha önceden ÖKC ile eşleme sağlanmış ise, kurulan yeni bağlantının SetCommObject ile bağlantı nesnesinin set edilmesi yeterli olacaktır. Tekrar eşleme yapmaya ya da Connect methodu kullanmaya gerek yoktur.

Diğer durumda ise, öncelikel CompactPrinter instance edilir ve ilk iş olarak ÖKC sicil numarası FiscalRegisterNo alanına set edilir.

Opsiyonel olarak, log dosyalarının oluşturulacağı dizin ve log seviyesi set edilebilir. Bu alanlara ait gerekli bilgiler KÜTÜPHANE FONKSİYONLARI bölümünde mevcuttur. Herhangi bir işlem yapılmaması durumunda default dizin ve log seviyesi kullanılacaktır. Default log dizini uygulamanın çalıştığı dizin, default log seviyesi de INFO seviyesi yani 4. seviyedir.

Ardından hazır olan parametrelerimiz ile birlikte Connect methodu çağırılır. true dönerse eşleşme başarılıdır. false dönmesi halinde başarısız olmuştur.

NOT: İlk eşleme sırasında Connect methodu çağırılmadan önce, ÖKC servis konumunda ve harici cihaz eşleme başlatılmış olmalıdır. Servis menüsünden bir kere başarılı eşleme yapıldıktan sonra ikincisine gerek yoktur.

Başarılı eşlemeden sonra, CompactPrinter'ın PrinterBufferSize özeliğinden desteklenen bağlantı buffer boyutu alınarak kurulan bağlanıtının buffer boyutu ile karşılaştırma yapılır. Eğer aynı değil ise, mevcut bağlantının buffer boyutu printer buffer boyutu ile set edilir. Ardından SetCommObject ile güncellenen mevcut bağlantı tekrar printer bağlantısı olarak set edilir. İşleme ait örnek uygulamada yer alan kod bloğu aşağıdadır.

   		// ÖKC üzerinde desteklenen bağlantı kapasitesi kontrol edilir, oluşturulan connection ile farklı ise düzenleme yapılır.
                   // Check supported printer size and set if it is different
                   if (printer.PrinterBufferSize != conn.BufferSize)
                   {
                       conn.BufferSize = printer.PrinterBufferSize;
                   }
                   printer.SetCommObject(conn.ToObject());

Buraya kadar herhangi bir hata alınmamış ise bilgisayar bağlantılı harici sistem ÖKC ile başarılı bir şekilde eşleşmiştir.

BELGE BAŞLATILMASI, ÜRÜN SATIŞI, ÖDEME, BELGE KAPATIMI

ÖKC ile bağlantı kurulması sonucu ÖKC "KASİYER GİRİŞİ" durumunda olacaktır. Sizden kasiyer girişi yapılması beklenmektedir. SignInCashier methodu ile kasiyer girişi yapılır. ÖKC üzerinde yer alan default kasiyer bilgilerini ilgili birimlerimizden temin edebilirsiniz.

Kasiyer girişi sonrası ÖKC, IDLE yani bekleme durumuna geçecektir. Yazdıracağımız belge tipine göre uygun belge başlığı yazdırma methodu çağırılmalıdır. Bazı belgelerin kalem ürün yazdırma opsiyonu yoktur ve bu belge başlığı yazdırma methodunda gerekli tüm parametrelere sahiptir. Fatura tahsilatı, Avans gibi..

Fiş başlatılacak ise;

/// <summary>
        /// Starts fiscal receipt
        /// </summary>
        /// <returns>
        /// "ErrorCode"|"Status"|"ReceiptNo"
        /// </returns>
        string PrintDocumentHeader();

fatura, e-fatura ve e-arşiv bilgi fişleri başlatılacak ise ;

/// <summary>
        /// Starts  invoice, e-invoice, e-archive
        /// </summary>
        /// <param name="docType">doc type id</param>
        /// <param name="tckn_vkn">TCKN or VKN</param>
        /// <param name="docSerial">document serial number</param>
        /// <param name="docDateTime">documnet issue date and time</param>
        /// <returns>"ErrorCode"|"Status"|"DocumentNo"</returns>
        string PrintDocumentHeader(int docType, string tckn_vkn, string docSerial, DateTime docDateTime);

Avans belgesi bilgi fişi için;

/// <summary>
        /// Prints advance document
        /// </summary>
        /// <param name="tckn">customer TCKN</param>
        /// <param name="name">customer name</param>
        /// <param name="amount">advance amount</param>
        /// <returns>"ErrorCode"|"Status"|"DocumentNo"</returns>
        string PrintAdvanceDocumentHeader(string tckn, string name, decimal amount);

Fatura tahsilat bilgi fişi için;

/// <summary>
        /// Prints collection document
        /// </summary>
        /// <param name="invoiceNo">collection invoice number</param>
        /// <param name="amount">collection amount</param>
        /// <param name="subscriberNo">subscriber number</param>
        /// <param name="institutionName">instution name</param>
        /// <param name="comissionAmount">comission amount</param>
        /// <returns></returns>
        string PrintCollectionDocumentHeader(string invoiceSerial, DateTime invoiceDate, decimal amount, string subscriberNo, string institutionName, decimal comissionAmount);

Cari hesap tahsilat bilgi fişi için;

/// <summary>
        /// Prints Current Account Collection Document
        /// </summary>
        /// <param name="tcknVkn">TCKN/VKN</param>
        /// <param name="customerName">Customer name</param>
        /// <param name="docSerial">document serial</param>
        /// <param name="amount">document amount</param>
        /// <returns>"ErrorCode"|"Status"|"DocumentNo"</returns>
        string PrintCurrentAccountCollectionDocumentHeader(string tcknVkn, string customerName, string docSerial, DateTime docDate, decimal amount);

Yemek fişi için;

/// <summary>
        /// Starts food document
        /// </summary>
        /// <returns></returns>
        string PrintFoodDocumentHeader();

Otopark bilgi fişi için;

/// <summary>
        /// Prints otopark document
        /// </summary>
        /// <param name="plate">vehicle plate num</param>
        /// <param name="entrenceDate">entrence date-time</param>
        /// "ErrorCode"|"Status"|"InvoiceNo"
        string PrintParkDocument(string plate, DateTime entrenceDate);

methodları kullanılır. Methodlar ve aldıkları parametreler ile ilgili daha detaylı açıklamalar KÜTÜPHANE FONKSİYONLARI kısmında yer almaktadır.

ÖKC üzerinde iki çeşit satış yapılabilmektedir. PLU ya da departman(kısım) satışı. Belge başlatıldıktan sorna satışlar kalem kalem yazdırılabilir ya da JSON formatta uygun methodlar ile toplu halde ÖKC ye gönderilebilir. En hızlı belge gönderimi ve basımı, tutarlılık ve daha az problem için JSON formatta departman satışı yapılmasını önermekteyiz.

Tek Kalem PLU Satışı

/// <summary>
        /// Prints sale item 
        /// </summary>
        /// <param name="PLUNo">PLU number of item</param>
        /// <param name="quantity">item quantity</param>
        /// <param name="amount">item amount</param>
        /// <param name="name">item name</param>
        /// <param name="barcode">item barcode</param>
        /// <param name="deptId">department id of item</param>
        /// <returns>
        /// "ERrorCode"|"Status"|"SubTotal"
        /// </returns>
        string PrintItem(int PLUNo, decimal quantity, decimal amount, string name, string barcode, int deptId, int weighable);

Tek Kalem Departman Satışı

/// <summary>
        /// Prints sale item 
        /// </summary>
        /// <param name="deptId">department id </param>
        /// <param name="quantity">item quantity</param>
        /// <param name="amount">item amount</param>
        /// <param name="name">item name</param>
        /// <param name="weighable">item is weighable or not</param>
        /// <returns>
        /// "ErrorCode"|"Status"|"SubTotal"
        /// </returns>
        string PrintDepartment(int deptId, decimal quantity, decimal amount, string name, int weighable);

JSON PLU Çoklu Ürün Satışı

/// <summary>
        /// prints JSON DOC
        /// </summary>
        /// <param name="jsonStr"></param>
        /// <returns></returns>
        string PrintJSONDocument(string jsonStr);

JSON Departman Çoklu Ürün Satışı

/// <summary>
        /// Prints sales document which json format. ECR must be in selling state 
        /// it means StartDocument called before. 
        /// </summary>
        /// <param name="jsonStr"></param>
        /// <returns></returns>
        string PrintJSONDocumentDeptOnly(string jsonStr);

ya da

/// <summary>
        /// Send sale document to print 
        /// </summary>
        /// <param name="jsonStr">Sales document info in JSON format</param>
        /// <returns>returns printer response</returns>
        string PrintSalesDocument(string jsonStr);

Bu iki method aynı işi yapıyor gibi görünse de farklılıkları mevcuttur. PrintJSONDocumentDeptOnly ile sadece satışlar ya da sadece ödemeler gönderilebilir. Fakat PrintSalesDocument ile sadece tamamlanmış belgeler yani ödemesi ile birlikte kapatılmış belgeler gönderilebilir.

Hız bakımından departman satışları PLU satışlarına göre daha hızlıdır. PrintJSONDocumentDeptOnly methoduna göre de PrintSalesDocument methodu daha hızlıdır.

Belge kapatma;

/// <summary>
        /// Closes receipt
        /// </summary>
        /// <param name="slipCopy">prints slip copy </param>
        /// <returns>
        /// "ErrorCode"|"Status"|"ReceiptNumber"
        /// </returns>
        string CloseReceipt(bool slipCopy);

için yukarıdaki method kullanılabileceği gibi, JSON satışlarda ilgili JSON alanı ile de yapılabilir. Detaylar için JSON satış belgesi kısmını inceleyebilirsiniz.

ÜRÜN ve BELGE İNDİRİMLERİ/ARTTIRIMLARI

İndirim ve arttırımlar genel olarak ürüne yapılan ya da belge toplamına yapılan şekilde ikiye ayırlabilir. Kendi içlerinde de; yüzdesel indirim, yüzdesel arttırım, tutarsal indirim, tutarsal arttırım olarak dörde ayırabiliriz.

/// <summary>
        /// Prints adjustment
        /// </summary>
        /// <param name="adjustmentType">
        /// enum number having the following meanings
        /// {
        ///     0 : Fee
        ///     1 : Percent Fee
        ///     2 : Discount
        ///     3 : Percent Discount
        /// }
        /// </param>
        /// <param name="amount">amount of adjustment</param>
        /// <param name="percentage">percentage value if adjustment type is fee or discount</param>
        /// <returns>
        /// "ErrorCode"|"Status"|"SubTotal"
        /// </returns>
        string PrintAdjustment(int adjustmentType, decimal amount, int percentage);

İndirim/arttırım işlemleri için PrintAdjustment methodu kullanılır. Ürün satışından sonra çağırılırsa en son satılan ürüne uygulanır. Aratoplam alınır ve ondan sonra çağırılırsa belge toplamına uygulanır. Belge aratoplamı PrintSubtotal methodu ile alınır.

JSON satışlarında ise ilgili alanlar doldurulmalıdır. Adjustment sınıfı kullanılır. JSONItem dahilinde yer alırsa ilgili ürüne uygular, JSONDocument dahilindeki ise belge toplamına uygulanır.

	class Adjustment
    {
        public AdjustmentType Type = AdjustmentType.Discount;
        public decimal Amount = 0m;
        public int Percentage = 0;
        public string NoteLine1;
        public string NoteLine2;
    }

ÜRÜN ve BELGE İPTALİ

PLU satışı,

/// <summary>
        /// Voids a sold item on document
        /// </summary>
        /// <param name="PLUNo">PLU number of item</param>
        /// <param name="quantity">item quantity</param>
        /// <returns>
        /// "ErrorCode"|"Status"|"SubTotal"
        /// </returns>
        string Void(int PLUNo, decimal quantity);

departman satışı ise,

/// <summary>
        /// Voids a sold item on document
        /// </summary>
        /// <param name="deptId">Department id to be void</param>
        /// <param name="deptName">Department name to be void</param>
        /// <param name="quantity">item quantity</param>
        /// <returns>
        /// "ErrorCode"|"Status"|"SubTotal"
        /// </returns>
        string VoidDepartment(int deptId, string deptName, decimal quantity);

methodları kullanılarak iptal edilebilir.

Belge iptalinde ise

/// <summary>
        /// Voids receipt
        /// </summary>
        /// <returns>
        /// "ErrorCode"|"Status"|"ReceiptNumber"
        /// </returns>
        string VoidReceipt();

kullanılır. Bu methodlarda ÖKC durumuna dikkat edilmelidir. Bu işlemlerin gerçekleşebileceği uygun durumlarda olmalıdır, aksi takdirde hata alınır.

ÖKC ÜZERİNDE KAĞIT BİTMESİ DURUMU

ÖKC, IDLE konumda iken yani üzerinde bir işlem yok iken kağıt bitmesi ya da rulo değiştirilmesi durumunda herhangi bir işlem yapmaya gerek yoktur. İşlem sırasında kağıt bitmesi durumunda ÖKC ilgili hata kodunu fırlatır. Hata alındıktan sonra kasiyer yeni rulo takar. Bu adımdan sorna ÖKC "7" hata kodu ile SİLME GEREKLİ mesajı yollayacaktır. Rulo takıldıktan sonra CheckPrinterStatus komutu ile ÖKC durumunu kontrol etmekte fayda vardır. İlgili hata kodu alındıktan sonra

/// <summary>
        /// this function called if ECR returns error codes below
        /// 7	ERR_CLEAR_REQUIRED
        /// 35	ERR_NEW_EJ
        /// 134	ERR_BLK_Z_REQUIRED
        /// </summary>
        /// <returns>
        /// "ErrorCode"|"Status"
        /// </returns>
        string ClearError();

komutu ile SİLME işlemi gerçekleştirilir. Bu işlemin ardından ÖKC ile kaldığınız yerden çalışmaya devam edebilirsiniz. Ayrıca JSON belge satışı sırasında kağıt bitimi gerçekleşirse ve basılmayan ürünler mevcut ise bu komut ardına basılmayan kısımlar da basılarak belge kapatılır.

24 SAAT Z RAPORU HATASI

ÖKC üzerinde 24 saat dahilinde Z raporu alınmaması durumunda fırlatılır. Bu durumda dikkat edilmesi gereken nokta; bu hata alındıktan sonra PrintZReport methodu ile Z raporunu yazdıramazsınız. Z raporunun yazdırılabilmesi için ClearError komutu kullanılmalıdır. Devamında işlemlerinize devam edebilirsiniz.

/// <summary>
        /// this function called if ECR returns error codes below
        /// 7	ERR_CLEAR_REQUIRED
        /// 35	ERR_NEW_EJ
        /// 134	ERR_BLK_Z_REQUIRED
        /// </summary>
        /// <returns>
        /// "ErrorCode"|"Status"
        /// </returns>
        string ClearError();
⚠️ **GitHub.com Fallback** ⚠️