EEKSTRE - Banka Entegrasyonu Uygulaması
EEKSTRE
Banka Entegrasyonu Uygulaması
İÇİNDEKİLER
- EEKSTRE Nedir? MT940 Nedir?
- MT940 Uygulamasını Kullanmak İçin Nelere İhtiyaç Duyulur?
- MT940 Uygulamasını Kullanmak için Tanımlanması Gerekli Adımlar
- MT940 Dosya Format Tanımlaması ve Değer Anlamları
- QUERY Tanımı Nasıl Yapılır?
EEKSTRE Nedir?
Bankalardaki anlaşmalarınız kapsamında oluşturulan, tüm bankalardan alınabilen MT940 formatındaki dosya içerisinden IBAN eşleşmesi ile CARI20 uygulamalarına, banka ekstrelerinin aktarılmasına imkan sağlayan uygulamamızdır.
MT940 Nedir?
Kısaca, MT940 formatı 2000 senesinin başlarında ortaya çıkan uluslararası bir elektronik hesap ekstre formatıdır.
Tüm banka hesap hareketlerinize ait dökümleri standart bir formatta veya ihtiyacınıza göre uyarlanabilen farklı dijital formatlarda oluşturur. Oluşturulan hesap dökümlerini günlük, haftalık, aylık periyotlar ile elektronik posta ya da FTP aracılığıyla almanızı sağlar.
MT940 Uygulamasını Kullanmak için Nelere İhtiyaç Duyulur?
MT940 uygulamasını kullanmak için ihtiyacınız olan tek şey bankadan belirli aralıklarla ekstre dokümanlarını (MT940) almanız gerekir. Bu ekstre belgesini farklı yöntemlerle alabilirsiniz. Bu yöntemler; direkt bankadan manuel olarak almak, FTP ortamından indirmek veya entegratör aracılığıyla belirli aralıklarda almak. Hangi yöntemi kullandığınız hiçbir önemi yoktur sonuçta MT940 belgesi standart bir formatı olan belge türüdür. Bu belge türü içerisinde bankadan bankaya değişiklikler olabilir. Buna daha sonra değineceğiz.
MT940 Uygulamasını Kullanmak için Tanımlanması Gerekli Adımlar
- İlk yapılması gereken işlem bankalar için MT940 okuma dosyası tanımı oluşturmak olacaktır. Tanımlamalara ilişkin doküman aşağıda yer almaktadır.
- MT940 uygulamasını açarak banka tanımı seçilmeli.
- MT940 dosyası ilgili dizinden seçilmeli.
- Dosya okuma işlemi yapılmalı.
- Cari fişler oluşturulmalı.
MT940 Dosya Format Tanımlaması ve Değer Anlamları
Bankalardan elde edilen MT940 formatındaki verilerin sisteme aktarılması için, banka dosya deseninin sisteme girilmesi gereklidir. Desen bilgisi bankalardan elde edilmelidir. MT940 dosyasının globalde belirli bir hiyerarşisi olsa da bankadan bankaya hatta aynı bankada şubeden şubeye bile farklılıklar gösterebilir. Bu yüzden standart bir tanım yapıp paylaşılamamaktadır. Bankanız ile görüşerek bir tanım oluşturup bu tanımı “Banka Havale/EFT Entegrasyon Tanımları(MT940TN00)” uygulaması üzerinden tanımlamanız gerekmektedir.
Banka Havale/EFT Entegrasyon Tanımları |MT940TN00 uygulaması üzerinde yapılması gereken işlemler sırasıyla aşağıdaki gibidir:
- Yeni Butonu İle Yeni Belge Alınır
- “Sabit Tanımlar” sekmesinden;
- “Banka Kodu(MT940TN00.BANKA)” alanından banka kodu girilir (Zorunlu)
- “Şube (MT940TN00.SUBE)” alanından banka şube kodu girilir (Seçimli)
- “MT940 Dosya Kodlaması (MT940TN00.FILE_ENCODING) alanından dosya kodlaması seçilir.Eğer boş bırakılırsa UTF-8 olarak okumaya çalışır (Seçimli)
- “Lokal Server Dosya Dizini (MT940TN00.LOCALDIZIN)” alanından MT940 dosyalarını indirdiğiniz dizini girmeniz gerekir. (Zorunlu)
- “Lokal Server Arşiv Dosya Dizini (MT940TN00.LOCALDIZIN)” alanına aktarım işlemi yapıldıktan sonra dosyaların taşınacağı arşiv dizinini girmeniz gerekir. (Zorunlu)
- Eğer dosya okuma işlemi s-FTP üzerinden yapılacak ise;
- “sFTP Adresi (MT940TN00.SFTP_URL) (Zorunlu)
- “Hostkey (MT940TN00.HOSTKEY) (Zorunlu)
- “sFTP Kullanıcı Adı (MT940TN00.USERNAME) (Zorunlu)
- “sFTP Şifresi (MT940TN00.PASSWORD_1) (Zorunlu)
- “sFTP Server Dosya Dizini (MT940TN00.BANKADIZIN)” eğer dosyalar ftp serverda bir klasörde ise bu alandan klasör yolunu girebilirsiniz. ) (Seçimli)
- Ekstre Header/Footer Okuma Tanımları
Ektstre (MT940) dosyasında banka bilgileri,açılış tutar,hareket özeti,hareket detayı,kapanış şeklinde bir akış bulunur. “Ekstre Header/Footer Okuma Tanımları “ sekmesinde banka bilgileri, açılış, kapanış bilgilerini okuyabilmek için tanım yapmamız gerekmektedir.
- Tablodaki alanları tanıyalım;
- “Belge Bilgisi Alan Kodu (MT940TN00T1.ALANLAR)” Hakerekt kaydındaki verinin EEKSTRE uygulamasındaki karşılığı. (Zorunlu)
- “MT940 Belgesi Satır Kodu (LINE_CODE)” Hareketin MT940 dosyasında tutulduğu satır kodu. (Zorunlu)
Satır kodu her mt940 dosyasında bulunan ve ilgili satırın başında :20:, :25:, :61:, :86: vs. gibi değerler ile yazılır. Bu değerlerin mt940 dosya formatınca karşılığı tüm bankalarda ortaktır.
- “Veri Tipi (DATA_TYPE)” İlgili alandan okunan veri türü (T=”Text”,N=”Nümeric/Sayısal”,D=”Tarih/Farklı formatlarda okunabilir”) (Zorunlu)
- “Veri Arama Başlangıç Değeri (START_INDEX)” verinin ilgili satırda kaçında index’ten sonra başlayacağı belirtilir.Varsayılan olarak 1 gelir. (Zorunlu)
- “Veri Arama Koşulu (QUERY)” Verinin okunmasından kullanılan formatlama cümlesidir. Bu alan okuma tanımlarının ek kritik noktasıdır ve burada yapılacak hatalar dosyanın okunamamasına veya hatalı okunmasına neden olabilir. Bu alanın kullanımına aşağıda daha detaylı olarak değinilecektir. (Zorunlu)
- Eğer okuma işleminde QUERY alanı ile okuma yapamıyorsak veya yaptığımız okuma işlemi bazı özel işlemlerden geçirilecek ise makrolar kullanabilirsiniz. Makro kullanımında 2 tip çalışma sırası bulunmakta. (Makro kullanılmayacak ise boş, makro kullanılacak ise zorunlu)
- “Header/Footer Bilgileri Okunurken Çalışsın(CALC_OPT1)” Bu alan işaretlenir ise mt940 dosyası henüz okunuyorken ilgili alana veri yazılmadan makro çalıştırılarak değer makroda işlemden geçirilip ilgili alana yazılabilir.
- “Header/Footer Bilgileri Okunduktan Sonra Çalışsın (CALC_OPT2)” Bu alan işaretlenir ise mt940 dosyasının okuma işlemleri tamamlandıktan sonra tüm satırlar için belirtilen makro belirtilen parametreler ile çalışabilir.
- “Değer Hesaplamasında Kullanılacak Makro Modülü Kodu (CALC_MACRO_CODE)” Çalıştırılacak makro kodu
- “Değer Hesaplamasında Kullanılacak Makro Prosedür Adı (CALC_MACRO_PROCEDURE)” makro içerisinde çalıştırılacak function adı. Burada kesinlikle fonksiyon kullanılmalı. Eğer fonksiyon yerine procedure(sub) kullanırsanız hata veya boş değer alabilirisiniz.
- “Fonksiyon'a Gönderilecek Parametre Değeri (PROCEDURE_PAR1, PROCEDURE_PAR2, PROCEDURE_PAR3, PROCEDURE_PAR4, PROCEDURE_PAR5)” fonksiyona gönderilecek parametre değeri.
Burada kullanabileceğimiz bazı özel değerler mevcut. Bu özel değerler ile okunan değere veya tabloya ait değerler gönderebilir veya sabit değer gönderimi yapabilirsiniz.
- {MT940LINE} değeri yazarsanız mt940 dosyasındaki satırı olduğu gibi parametre olarak gönderir.
- {LINECODE} değeri ile mt940 dosyasındaki satır kodu değerini parametre olarak gönderebilirsiniz.
- {LINEQUERY} ile tanım tablosunda query sorgusunu parametre olarak gönderebilirsiniz.
- {LINEDATATYPE} ile tanım tablosunda veri tipimi parametre olarak gönderebilirsiniz.
- {STARTINDEX}} ile tanım tablosunda başlangıç değerini parametre olarak gönderebilirsiniz.
- [TABLOADI.ALANADI] değeri ile ilgili tablonun header için (EEKSTRT1 tablosu örnek verilebilir) ilgili tablonun alanındaki veri gönderilebilir.
- Örnek Görsel Tanımı
- Ekstre Satır Okuma Tanımları : Header/Footer Okuma tanımları ile aynı yapıdadır.
Ektstre (MT940) dosyasında banka bilgileri,açılış tutar,hareket özeti,hareket detayı,kapanış şeklinde bir akış bulunur. “Ekstre Satır Okuma Tanımları “ sekmesinde banka satır,satır detay bilgilerini okuyabilmek için tanım yapmamız gerekir.
- Tablodaki alanları tanıyalım;
- “Belge Bilgisi Alan Kodu (MT940TN00T1.ALANLAR)” Hakerekt kaydındaki verinin EEKSTRE uygulamasındaki karşılığı. (Zorunlu)
- “MT940 Belgesi Satır Kodu (LINE_CODE)” Hareketin MT940 dosyasında tutulduğu satır kodu. (Zorunlu)
Satır kodu her mt940 dosyasında bulunan ve ilgili satırın başında :20:, :25:, :61:, :86: vs. gibi değerler ile yazılır. Bu değerlerin mt940 dosya formatınca karşılığı tüm bankalarda ortaktır.
- “Veri Tipi (DATA_TYPE)” İlgili alandan okunan veri türü (T=”Text”,N=”Nümeric/Sayısal”,D=”Tarih/Farklı formatlarda okunabilir”) (Zorunlu)
- “Veri Arama Başlangıç Değeri (START_INDEX)” verinin ilgili satırda kaçında index’ten sonra başlayacağı belirtilir.Varsayılan olarak 1 gelir. (Zorunlu)
- “Veri Arama Koşulu (QUERY)” Verinin okunmasından kullanılan formatlama cümlesidir. Bu alan okuma tanımlarının ek kritik noktasıdır ve burada yapılacak hatalar dosyanın okunamamasına veya hatalı okunmasına neden olabilir. Bu alanın kullanımına aşağıda daha detaylı olarak değinilecektir. (Zorunlu)
- Eğer okuma işleminde QUERY alanı ile okuma yapamıyorsak veya yaptığımız okuma işlemi bazı özel işlemlerden geçirilecek ise makrolar kullanabilirsiniz. Makro kullanımında 3 tip çalışma sırası bulunmakta. (Makro kullanılmayacak ise boş.Makro kullanılacak ise Zorunlu)
- “Satır Bilgileri Okunurken Çalışsın(CALC_OPT1)” Bu alan işaretlenir ise mt940 dosyası henüz okunuyorken ilgili alana veri yazılmadan makro çalıştırılarak değer makroda işlemden geçirilip ilgili alana yazılabilir.
- “Satır Bilgileri Okunduktan Sonra Çalışsın (CALC_OPT2)” Bu alan işaretlenir ise mt940 dosyasının okuma işlemleri tamamlandıktan sonra tüm satırlar için belirtilen makro belirtilen parametreler ile çalışabilir.
- “Varsayılan Değerler Hesaplandıktan Sonra Çalıştırılsın (CALC_OPT3)” Bu alan işaretlenir ise mt940 dosyasının okuma işlemleri tamamlandıktan sonra makro çalıştırıldıktan sonra tanım dosyasından varsayılan değer okuma işlemleri gerçekleştirilir.Bu değerler hesaplandıktan sonra makro çalıştırılacak ise bu alan işeratlenir.
- “Değer Hesaplamasında Kullanılacak Makro Modülü Kodu (CALC_MACRO_CODE)” Çalıştırılacak makro kodu
- “Değer Hesaplamasında Kullanılacak Makro Prosedür Adı (CALC_MACRO_PROCEDURE)” makro içerisinde çalıştırılacak function adı. Burada kesinlikle fonksiyon kullanılmalı. Eğer fonksiyon yerine procedure(sub) kullanırsanız hata veya boş değer alabilirisiniz.
- “Fonksiyon'a Gönderilecek Parametre Değeri (PROCEDURE_PAR1, PROCEDURE_PAR2, PROCEDURE_PAR3, PROCEDURE_PAR4, PROCEDURE_PAR5)” fonksiyona gönderilecek parametre değeri.
Burada kullanabileceğimiz bazı özel değerler mevcut. Bu özel değerler ile okunan değere veya tabloya ait değerler gönderebilir veya sabit değer gönderimi yapabilirsiniz.
- {MT940LINE} değeri yazarsanız mt940 dosyasındaki satırı olduğu gibi parametre olarak gönderir.
- {LINECODE} değeri ile mt940 dosyasındaki satır kodu değerini parametre olarak gönderebilirsiniz.
- {LINEQUERY} ile tanım tablosunda query sorgusunu parametre olarak gönderebilirsiniz.
- {LINEDATATYPE} ile tanım tablosunda veri tipimi parametre olarak gönderebilirsiniz.
- {STARTINDEX}} ile tanım tablosunda başlangıç değerini parametre olarak gönderebilirsiniz.
- [TABLOADI.ALANADI] değeri ile ilgili tablonun header için (EEKSTRT1 tablosu örnek verilebilir) ilgili tablonun alanındaki veri gönderilebilir.
- Varsayılan Değer Tanımları :
MT940 dosyasında her hareketin bir işlem türü bulunur. Bu işlem türü siz istediğiniz taktirde mt940 dosyasında satıra yazılır. Eğer işlem türüne göre varsayılan değer ataması yapılacak ise bu tablodan varsayılan cari hesap kodu muhasebe kodu atayabiliriz.
- Banka/Cari Hesap Bağlantılar
Tanımını yaptığımız cari hesap kodunu bu sekmeden seçmemiz gerekir.
QUERY Tanımı Nasıl Yapılır?
Query tanımı mt940 dosyasının okunmasında kritik rol teşkil eder.Bu yüzden doğru ve dikatli yapılmalıdır.
Parametre; tekli ve çoklu olmak üzere iki şekilde kullanılır. Normal kelimelerden ayrılsın diye parametreler “[“ ile başlayıp “]” ile bitmelidir.
Parametre genel formatı : [AA@x999|y999|z]
Kıyaslamalı parametre formatı : IF[AA@x999|y999|z] ||[AA@x999|y999|z]|| [AA@x999|y999|z]
Parametre formatı genelde 3 kısımdan oluşur. Karşılaştırmalı aramalarda ayrıca karşılaştırmanın yapılacağı verinin girildiği 4. kısım vardır. Bunlar Arama Tipi (AA@), Arama Başlangıcı (x999), Arama Bitişi (y999) ve Karşılaştırma Kelimesi (z) kısımlarıdır.
Kıyaslamalı parametreler ise kıyaslamalı sonuçlar (IF) elde etmek için kullanılır. Aslında 3 parametrenin “||” karakterleri ile birleştirilmesi ile elde edilir. Kıyaslamalı parametreler, “IF” ile başlamalıdır. “IF” ibaresinden sonra ilk parametre koşul parametresidir. Koşul parametreleri (TS@ veya LN@) kullanılmalıdır. İkinci parametre koşul doğru ise geçerli olacak olan parametredir. Üçüncü parametre ise koşul yanlış ise geçerli olacak olan parametredir.
Parametreler de kullanılan kodlar ise;
- Arama tipleri (AA@)
- "SU@"; standart uzunluk. Arama metininde bir sayaçtan belirli bir uzunlukta veri elde etmede kullanılır. [SU@s1|l4] örneği, metindeki 1. (birinci) karakterden itibaren 4 (dört) karakterlik veri alınacağı anlamını taşır.
- "TU@"; text uzunluk. Arama metininde belirli bir metinden itibaren, yine bir metne veya sayaca göre bir veri elde etmede kullanılır. [TU@t-|t-] örneği, metindeki (birinci) “-“ karakterinden itibaren, ilk bulunan ikinci “-“ karakteri arasındaki verinin alınacağı anlamını taşır.
- "TS@"; metin karşılaştıran koşullu parametredir. Arama metininde bulunan verinin, istenilen veri ile karşılaştırılmasını sağlar. Karşılaştırma sonucuna göre “YES” veya “NO” olarak veri dönülür. Ek olarak karşılaştırılacak verinin girileceği bir parametre daha vardır. [TS@s7|l1|C] örneği, metindeki yedinci (7.) karakterden itibaren, bir karakterlik verinin “C” olup olmadığı sorulmuştur. Eğer bulunan veri “C” ise “YES, değilse de “NO” sonucu dönülür.
- "LN@"; metin uzunluğu karşılaştıran koşullu parametredir. Arama metininde bulunan verinin uzunluğunun, istenilen uzunluk ile karşılaştırılmasını sağlar. Karşılaştırma sonucuna göre “YES” veya “NO” olarak veri dönülür. Ek olarak karşılaştırılacak veri uzunluğunun girileceği bir parametre daha vardır. [LN@s29|t//|10] örneği, metindeki yirmi dokuzuncu (29.) karakterden itibaren, “//” karakter dizisine kadar olan verinin uzunluğunun 10 karakter olup olmadığı sorulmuştur. Eğer bulunan veri uzunluğu 10 karakter ise “YES, değilse de “NO” sonucu dönülür.
- "SV@"; sabit veri. Arama metinine bakmadan sabit değer üretmek için kullanılır. Bir alana sabit bir veri atamada kullanılır. [SV@aaa2] örneği, arama metnine bağlı kalmadan her zaman “aaa2” değerini geri döner.
2.Arama Başlangıcı (x999)
- "s"; sayısal veri. Aranan verinin başlangıcının, bu seçenekten sonra girilen sayıdan itibaren başladığını ifade eder. Sadece arama başlangıcında kullanılabilir. “s” den sonra muhakkak nümerik bir değer girilmelidir. Diğer veri girişlerinde fonksiyon boş değer geri döner. [SU@s1|l4] örneğinde, “s” den sonra girilen 1 rakamı veri başlangıcının 1. Karakterden itibaren başladığını ifade eder.
- "t"; metin (text) veri. Aranan verinin başlangıcının, bu seçenekten sonra girilen metinden itibaren başladığını ifade eder. Hem arama başlangıcında hem de arama bitişinde kullanılabilir. Eğer aranan metin arama satırında bulunamazsa fonksiyon boş değer döner. [TU@t-|t//] örneğinde, arama başlangıcında ki “t” den sonra ve arama bitişinde ki ”t” den metin veri girilmişti. Bu da ilk bulunan “-“ karakteri ile bundan sonra bulunan “//“ karakterleri arasındaki verinin geri dönüleceği anlamına gelir.
- “i”; metin aramalarda kaçıncı metinden itibaren okunacağını belirtir. Örnek olarak [TU@i5t//|e] yandaki formülde belirtildiği t// ile // dan itibaren okunacağını i5 ise 5. // dan sonra okunmaya başlanacağını belirtir.
3.Arama Bitişi (y999)
- "t"; metin (text) veri. Aranan veri, arama başlangıcından itibaren bu seçenekten bu seçenekten sonra girilen metine kadarki veriyi ifade eder. Hem arama başlangıcında hem de arama bitişinde kullanılabilir. Eğer aranan metin arama satırında bulunamazsa fonksiyon boş değer döner. [TU@t-|t//] örneğinde, arama başlangıcında ki “t” den sonra ve arama bitişinde ki ”t” den metin veri girilmişti. Bu da ilk bulunan “-“ karakteri ile bundan sonra bulunan “//“ karakterleri arasındaki verinin geri dönüleceği anlamına gelir.
- "l"; sabit uzunluktaki veri. Aranan veri, arama başlangıcından itibaren bu seçenekten sonra girilen nümerik bilgi uzunluğundaki veriyi ifade eder. Sadece arama bitişlerinde arama bitişinde kullanılabilir. [SU@s1|l4] örneğinde, “l” den sonra girilen 4 rakamı, aranan verinin 1 karakterden itibaren 4 (dört) karakterlik bir veri geri dönüleceğini ifade eder.
- "e"; satır sonuna kadarki veri. Aranan veri, arama başlangıcından itibaren satır sonuna kadarki veriyi ifade eder. Sadece arama bitişlerinde arama bitişinde kullanılabilir. [SU@s23|e] örneğinde, aranan verinin 23. karakterden itibaren satır sonuna kadarki verinin geri dönüleceğini ifade eder.
4.Karşılaştırma Verisi (z)
"z"; kullanıldığı arama tipine göre metin (text) veri veya nümerik veri olabilir.
Eğer “TS@” (metin koşulu) ile kullanılmış ise bu alandaki veri metin olarak kabul edilir. Fonksiyon sonucu dönülen veri bu metinle kıyaslanır. [TS@s7|l1|10] örneğinde, geri dönülen veri içerinde “10” karakterleri var ise koşul doğru olarak dönülür.
Eğer “LN@” (uzunluk koşulu) ile kullanılmış ise bu alandaki veri nümerik olarak kabul edilir. Fonksiyon sonucu dönülen verinin uzunluğu, bu nümerik değerle kıyaslanır. [LN@s7|l1|10] örneğinde, geri dönülen verinin uzunluğu 10 karakter ise koşul doğru olarak dönülür.