|
Unutmayayım diye yazdıklarım... |
Logo Unity API (Lobject.dll)04.10.2009 tarihinde oğuzhan tarafından yazıldı.En son geliştirdiğim CMS projesinde web üzerinden gerçekleşen olayların (sipariş, kredi kartı işlemi, yeni kullanıcı gibi) Logo programına aktarılması özelliğini eklerken Logo ile tanıştım. Gayet güzel, belirli disiplinlere göre yazılmış bir ERP programı Logo.Logo'da ki belirli modüllere nasıl verileri aktarırız diye düşünürken Logo'nun COM+ olarak dağıtılan API'sinin olduğunu keşfettik ve projemize logo entegrasyonunu bu API ile gerçekleştirmeye karar verik. Gerçi başka şansımızda yoktu hani ;) API'yi kullanmaya karar verdikten sonra yaşadığımız ilk sıkıntı döküman ve kullanım ile ilgili çeşitli örneklerin çok kısıtlı olması oldu. Bu duruma hayret ederken meğerse işin görünmeyen kısımlarınında var olduğunu öğrendik. Logo bu API'yi sadece çözüm ortaklarına veriyormuş ve çözüm ortağı olabilmek içinde Logo tarafından verilen API eğitimini alıp, eğitim sonunda yapılacak sınavdan'da en az 70 (Kesin bir bilgi değil bir çözüm ortağından duydum.) almanız gerekiyormuş. Daha sonra bu API'yi kullanmaya hak kazanıyormuşuz. Birde işin Lisanslama tarafı var. Logo paketine API'nin kullanılması için ek bir lisans alınması gerekiyormuş. Ayrıca bu API'yi kullanarak bir yazılım geliştiriyorsan birde Geliştirme Lisansı alıyormuşsun (sanırım 500$ civarındaydı) ve sonra yasal olarak bu API'yi kullanabiliyorsun. Başka bir enteresan nokta ise Logo API sadece logo'nun çalıştığı makina üzerinde iş görüyor ve logo'ya bağlantı sağlıyor. Başka bir sunucu üzerinde çalıştıramıyorsunuz. Biz tasarlarken internet üzerindeki ki sunucumuzda bu api'yi kullanıp uzaktaki logo'ya api ile bağlanıp kullanırız diye düşünmüştük ama olmadı.. (Gerçi teknik olarak başka bir makina üzerinde 'de çalıştırabiliyorsun gerekli düzenlemeleri yaptıktan sonra ama biraz illegal oluyor.) API son derece başarılı ve kullanımı kolay (Yazının ilerleyen kısımlarıda bir kaç örnek değineceğim) bir Nesne olarak tasarlanmış ve full xml desteği var, ayrıca veritabanından bağımsız olarak çalışıyor ve API'deki gerekli nesneleri kullanırsanız sizin yazdığınız programınızda veritabanı bağımsız çalışmış oluyor. Benim burda dikkatimi çeken ve hoşuma gitmeyen şey ise Çözüm Ortaklarının (Tabi hepsi değil benim karşılaştıklarım) bu API'ye bir öcü gibi bakması ve herhangi bir API yardımında işi abartıp faiş fiyatlar istemesiydi. Kim'den yardım istesek ya yanlış yönlendirildik ya da yardımcı olmak istemediler. Sonuc olarak Logo API'si programcıya teknik açıdan her işinizi görebileceğiniz bir programlama arayüzü sunuyor fakat kullanabilmeniz için bir sürü brokratik işlerle uğraşmanız gerekiyor. Şimdi gelelim örneklere. Logo'ya bağlanmak, yeni cari açmak için örnek vereceğim. Projemize COM tabındaki UnityObjects Library referansını ekleyelim. COM tabında UnityObject'i göremediyseniz büyük ihtimal sisteme register edilmemiştir. Logo'nun çalışma klasörü içindeki Lobject.dll'i bulup Regsvr32 komutu ile register etmelisiniz (Başlat > Çalıştır > Regsvr32 lobject.dll) Logo API ile Logo'ya Bağlantı: UnityApplication giris = new UnityApplication(); if (giris.Connect()) { if (giris.UserLogin("kullanici", "sifre")) { if (giris.CompanyLogin(1)) //Logo şirket numarası { //Logoya bağlanıldı giris.CompanyLogout(); } giris.UserLogout(); } giris.Disconnect(); } Logo API ile Yeni Cari Kartı: Data ek = unity.NewDataObject(DataObjectType.doAccountsRP); ek.New(); ek.DataFields.FieldByName("ACCOUNT_TYPE").Value = 3; ek.DataFields.FieldByName("CODE").Value = "Firma Kodu"; ek.DataFields.FieldByName("TITLE").Value = "Firma Adı"; ek.DataFields.FieldByName("ADDRESS1").Value = "Adres 1"; ek.DataFields.FieldByName("ADDRESS2").Value = "Adres 2"; ek.DataFields.FieldByName("DISTRICT").Value = "Mahalle"; ek.DataFields.FieldByName("TOWN").Value = "İlçe"; ek.DataFields.FieldByName("CITY").Value = "Şehir"; ek.DataFields.FieldByName("COUNTRY").Value = "Ülke"; ek.DataFields.FieldByName("POSTAL_CODE").Value = "Posta Kodu"; ek.DataFields.FieldByName("TELEPHONE1").Value = "Telefon 1"; ek.DataFields.FieldByName("TELEPHONE2").Value = "Telefon 2"; ek.DataFields.FieldByName("FAX").Value = "Fax"; ek.DataFields.FieldByName("TAX_ID").Value = "Vergi No"; ek.DataFields.FieldByName("TAX_OFFICE").Value = "Vergi Dairesi"; ek.DataFields.FieldByName("TAX_OFFICE_CODE").Value = "Veri Dairesi Kodu"; ek.DataFields.FieldByName("CONTACT").Value = "İsim Soyisim"; ek.DataFields.FieldByName("E_MAIL").Value = "E- Posta"; ek.DataFields.FieldByName("WEB_URL").Value = "www web sitesi"; ek.DataFields.FieldByName("GL_CODE").Value = "Muhasebe Numarası"; ek.DataFields.FieldByName("SUBSCRIBER_EXT").Value = "Ekstra bilgi"; ek.DataFields.FieldByName("LOGOID").Value = "Firma Kodu"; ValidateErrors err = ek.ValidateErrors; if (ek.Post()) { Console.WriteLine("{0} firması eklendi.", "Firma Adı"); } else { Console.WriteLine("{0} firması eklenemedi.", "Firma Adı"); for (int i = 0; i < err.Count; i++) { Console.WriteLine("{0} - {1};", err[i].Error, err[i].ID); } } Logo API ile Sipariş Girişi: Data siparis = unity.NewDataObject(DataObjectType.doSalesOrderSlip); siparis.New(); siparis.DataFields.FieldByName("NUMBER").Value = "Sipariş No"; siparis.DataFields.FieldByName("DATE").Value = "Tarih"; siparis.DataFields.FieldByName("TIME").Value = "Zaman"; siparis.DataFields.FieldByName("ARP_CODE").Value = "Firma Kodu"; siparis.DataFields.FieldByName("TOTAL_NET").Value = "Toplam Tutar"; siparis.DataFields.FieldByName("SALESMAN_CODE").Value = "Satıcı Kodu"; siparis.DataFields.FieldByName("NOTES1").Value = "Not 1"; siparis.DataFields.FieldByName("NOTES2").Value = "Not 2"; siparis.DataFields.FieldByName("NOTES3").Value = "Not 3"; siparis.DataFields.FieldByName("NOTES4").Value = "Not 4"; siparis.DataFields.FieldByName("ORDER_STATUS").Value = 4; //ÖDeme siparis.DataFields.FieldByName("WITH_PAYMENT").Value = 1 ; //ÖDeme Lines detay = siparis.DataFields.FieldByName("TRANSACTIONS").Lines; if (detay.AppendLine()) { detay[0].FieldByName("TYPE").Value = 4; // Hizmet detay[0].FieldByName("MASTER_CODE").Value = "Ürün Kodu"; detay[0].FieldByName("QUANTITY").Value = "Sayıs"; detay[0].FieldByName("PRICE").Value = "Tutar"; detay[0].FieldByName("TOTAL").Value = "Toplam Tutar"; detay[0].FieldByName("UNIT_CODE").Value = "Adet"; detay[0].FieldByName("PC_PRICE").Value = "Tutar"; detay[0].FieldByName("TOTAL_NET").Value = "Toplam Tutar"; detay[0].FieldByName("VAT_RATE").Value = "KDV"; detay[0].FieldByName("VAT_INCLUDED").Value = 1; //KDV Dahil } siparis.DataFields.FieldByName("ITEXT").Value = "Ekstra bilgi alanı"; ValidateErrors err = siparis.ValidateErrors; if (siparis.Post()) { Console.WriteLine("Sipariş Eklendi"); } else { Console.WriteLine("Sipariş Eklenemedi"); for (int i = 0; i < err.Count; i++) { Console.WriteLine("{0} - {1};", err[i].Error, err[i].ID); } } Bir Kaç Tavsiye
#Sunay Şener-, 04.10.2009 23:42:25 tarihinde demiş ki... Valla harikasın...#Mustafa S.+, 14.10.2009 16:36:15 tarihinde demiş ki... Merhaba;#Oğuzhan-, 14.10.2009 17:08:46 tarihinde demiş ki... Büyük ihtimal. Çünkü Not Allowed dediğine göre lisans ile alakalı bir durum sanırım. Normal lisans haricinde birde bu API'nin lisansını alman gerekiyor.#Å�ükran+, 04.11.2009 13:26:54 tarihinde demiş ki... Merhaba, kod icin cok tesekkurler. Bende "x kodlu muhasebe hesabi bulunamadi"(513 nolu hata) hatasi veriyor. Nasil cozebilirim?#Oğuzhan-, 04.11.2009 15:03:37 tarihinde demiş ki... X kodunda bir muhasebe hesabı yoksa açmaz. Geçerli olan bir kod girmen lazım GL_CODE alanına.#mehmet-, 08.11.2009 11:49:57 tarihinde demiş ki... merrhaba oğuzhan, işime çok yarayacağını düşündüğüm bir blog bu..çok teşekkürler..eywallah..#sansar+, 09.12.2009 16:47:14 tarihinde demiş ki... kardeş tekrar merhaba.bende Mustafa arkadaşımızın aldığı hatayı alıyorum. bununla ilgili ne yapabiliriz. LOBJECTS.DLL dosyasını register ettim. fakat No Allowded hatası alıyorum. Benim kullandığım DEMO DEĞİL.#oğuzhan-, 09.12.2009 17:40:53 tarihinde demiş ki... @sansar demo olmaması bu durumu çözmüyor. Birde Lobject.dll'i kullanmak için ek bir lisans gerekldir. Bu aldığın pakette olmayabilir. yoksa not allowed hatası almadım hiç.#Şükran+, 29.12.2009 09:56:37 tarihinde demiş ki... Merhaba Oğuzhan Bey, öncelikle cevabınız için çok teşekkürler. VS.NET 2005 ile yaptığım proje de arada bir unity'e bağlanırken "Çok Zararlı Hata" uyarısı veriyor. Ne yapmam gerekir bu hatayı almamak için?#Oğuzhan-, 29.12.2009 21:56:24 tarihinde demiş ki... @şükran bu hatayı bende sürekli alıyorum özellikle programdan çıkarken. COM objesinden dönen bir hata olduğu için sanırım Lobject.dll'i ya yanlış çalıştırıyoruz, yada gerçekten COM kendi içinde hata döndürüyor bende çözebilmiş değilim bunu.#serkan+, 01.01.2010 01:06:59 tarihinde demiş ki... merhaba arkadaşlar#alim demir-, 14.01.2010 10:30:08 tarihinde demiş ki... sqlclause kullanimina bir örnek verebilir misin?#Oğuzhan-, 14.01.2010 14:20:55 tarihinde demiş ki... Query qr = unity.NewQuery();#Oğuzhan-, 14.01.2010 16:34:22 tarihinde demiş ki... Ek olarak konu ile ilgili yeni bir yazı ekledim siteye ;)#Emre-, 27.01.2010 13:57:28 tarihinde demiş ki... Yazi icin tesekkurler.#Emre+, 27.01.2010 18:07:35 tarihinde demiş ki... Isletim sistemi 64 bit oldugu icin sorun cikiyormus. 32 bit'te sorunsuz calisiyor.#aspsrc@gmail.com-, 27.01.2010 18:18:34 tarihinde demiş ki... @Emre, Bu herkesin başına gelen kronik bir problem ;)#Hawa-, 06.02.2010 12:47:57 tarihinde demiş ki... Merhaba#Emre+, 26.04.2010 14:12:07 tarihinde demiş ki... Merhaba Oğuzhan Bey#Mehmet Sinan Şahin+, 29.04.2010 10:21:04 tarihinde demiş ki... Java örneği isteyen varsa gönderebilirim.#Ahmet Özgün Özcan+, 25.06.2010 16:49:25 tarihinde demiş ki... Öncelikle paylaşım için çok teşekkürler.#Göksu+, 29.07.2010 14:43:12 tarihinde demiş ki... Merhaba, uygulama giris.Connect() kısmında false değeri döndürüyor fakat arkasından bahsedildiği gibi GetLastErrorString metni "no allowded." olmuyor.False döndükten sonra "Can not make basic connection" oluyor.Yardımcı olabilir misiniz?#Ahmet+, 30.07.2010 15:40:55 tarihinde demiş ki... Line daki satırı silmek için DeleteLine() komutu çalıştırılmalı.#Serdar+, 09.08.2010 15:35:45 tarihinde demiş ki... Merhaba;#Yunus Emre+, 10.08.2010 11:25:44 tarihinde demiş ki... projeyi derlerken 64 bit olarak ayarladınız mı Serdar bey ?#Serdar+, 11.08.2010 10:36:20 tarihinde demiş ki... sorunumun 32bit yada 64bit sorunu olmadığını iis 7.5 olduğunu windows7 32 bit sistem üzerinde de aynı sorunla karşılaşarak anlamış bulunmaktayım :)#Ahmet-, 11.08.2010 15:53:04 tarihinde demiş ki... web confige bu kodu ekleyip denermisin. User yetkili biri olmalı.#Oğuzhan-, 11.08.2010 16:00:27 tarihinde demiş ki... Bence Lobjects.dll'i sadece Logo'nun kurulu olduğu sunucuda çalıştır. Araya proxy tadında bir web services koy. Bütün mantıksal işleri o yapsın. Yani logo ile webserver arasındaki konuşmayı webservices yönetsin. Böylece sunucuyla alakalı problemlerden etkilenmez, bakımı daha kolay, katmanlı bir mimarin olmuş olur. Ayrıca logo'nun sunucusu değiştiği zaman herhangi bir şey yapmanada gerek kalmaz. lgold.ini'den de kurtulmuş olursun.#Serdar+, 11.08.2010 18:44:37 tarihinde demiş ki... @Ahmet, yazdığın satırı ekledim ama değişen birşey yok. hala bekliyor,bekliyor :) ve sayfa görüntülenemedi diyor...#Oğuzhan-, 11.08.2010 18:56:54 tarihinde demiş ki... @Serdar,#Serdar+, 12.08.2010 10:17:19 tarihinde demiş ki... Siteyi YouWebit ile çalıştırdığımda da sorun yok. site iis 7.5 dışında heryerde çalışıyor :) iis 7.5 sevemedi gitti..#şerafettin+, 26.08.2010 15:23:03 tarihinde demiş ki... Merhaba,#AKIN+, 02.09.2010 12:14:43 tarihinde demiş ki... Oğuzhan bey merhaba, peki siz sonuç olarak bu objects.dll i satın aldınızmı?, aldıysanız nasıl nerden satın aldınız?, Aynı şekilde bizim de bir otomasyon projemiz var projenin muhasebe entegrasyonunda müşteri Tiger2 kullandığı için sadece fatura girişi yapmamız gerekiyor Tiger2 deki cari hesaplara. bunu bu Lobjects.dll ile yapabilirmiyiz#Oğuzhan-, 02.09.2010 12:48:53 tarihinde demiş ki... @AKIN Lisanslamasını tam hatırlamıyorum ama Tiger2'nin içinde hazır vardı ekstra bir ücret ödemedik (Belki satın alınırken en başta bu özellik için ek ücret ödenmiştir). Fatura işlemlerini rahatlıkla yapabiliyorsunuz. Döküman sıkıntısı var sadece. |
En çok ilgi görenler... HP IPAQ 914c Rastgele birşeyler... Yine Plesk!... Şebeke WHT, Fıroİş, Denizİş, Serkan, Semih, Sewgi, Beşir, İzgençvos, Erkan, Mumin, Aliİş, Lütfü, Alper, Yusuf |
|
2003 - Oğuzhan YILMAZ Web Hosting Sponsor Vargonen Technologiies |