Logo Objects ile Fatura Kesmek Yöntem 1

Merhaba yoğun taleb ve verdiğim sözler nedeniyle bu örneği yazmam farz oldu.
Bu işe başlamadan önce biraz logoyu, gerek kullanımı, tablo yapısı gibi özelliklerini inceleyin.
anlatma kabiliyetim biraz zayıftır şimdiden özür dilerim.
Lisansınız yoksa yormayın kendinizi !!!!
örnekteki amacım sizin işinizi yapmak değil size küçük bir örnekle yardımcı olmak balık tutumayı öğretmek gibi düşünün bu nedenle yazılım bilginiz konu için yetmiyorsa (zamanla oda olur kimse anasının karnında öğrenmedi) ne olur beni üzmeyin ben sadece 1 adet fatura örneği vereceğim farklı fişler yapma istiyorsanız kartları veya hareketleri dışarı xml olarak atarak xml dosyaları inceyin emin olun çok kısa sürede olayı kavrayacaksınız şimdi bir fatura xml ile başlayaım örnekle bereber xml yi anlayacasınız.

<?xml version="1.0" encoding="ISO-8859-9"?>
<SALES_INVOICES>
  <INVOICE DBOP="INS" >
    <TYPE>8</TYPE>
    <NUMBER>A00001</NUMBER>
    <DATE>22.02.2017</DATE>
    <TIME>202116096</TIME>
    <DOC_NUMBER>A00001</DOC_NUMBER>
    <AUXIL_CODE>AUTO</AUXIL_CODE>
    <ARP_CODE>CR-001</ARP_CODE>
    <POST_FLAGS>247</POST_FLAGS>
    <TOTAL_DISCOUNTED>15</TOTAL_DISCOUNTED>
    <TOTAL_VAT>2.7</TOTAL_VAT>
    <TOTAL_GROSS>15</TOTAL_GROSS>
    <TOTAL_NET>17.7</TOTAL_NET>
    <TC_XRATE>1</TC_XRATE>
    <TC_NET>17.7</TC_NET>
    <CREATED_BY>2</CREATED_BY>
    <DATE_CREATED>22.02.2017</DATE_CREATED>
    <HOUR_CREATED>20</HOUR_CREATED>
    <MIN_CREATED>14</MIN_CREATED>
    <SEC_CREATED>18</SEC_CREATED>
    <DATA_REFERENCE>5</DATA_REFERENCE>
    <PAYMENT_LIST>
    </PAYMENT_LIST>
    <ORGLOGOID></ORGLOGOID>
    <GENIUSFLDSLIST>
    </GENIUSFLDSLIST>
    <DEDUCTIONPART1>2</DEDUCTIONPART1>
    <DEDUCTIONPART2>3</DEDUCTIONPART2>
    <GUARANTOR1_FICHETYPE>1</GUARANTOR1_FICHETYPE>
    <GUARANTOR1_NR>1</GUARANTOR1_NR>
    <GUARANTOR2_FICHETYPE>1</GUARANTOR2_FICHETYPE>
    <GUARANTOR2_NR>2</GUARANTOR2_NR>
    <AFFECT_RISK>1</AFFECT_RISK>
    <DOC_DATE>22.02.2017</DOC_DATE>
    <PROFILE_ID>2</PROFILE_ID>
    <GUID>93EC47CC-90CE-4E82-8567-3DF50A694525</GUID>
    <EDURATION_TYPE>0</EDURATION_TYPE>
    <EXIMVAT>0</EXIMVAT>
    <EARCHIVEDETR_INTPAYMENTTYPE>0</EARCHIVEDETR_INTPAYMENTTYPE>
    <OKCINFO_LIST>
      <OKCINFO>
      </OKCINFO>
    </OKCINFO_LIST>
  </INVOICE>
</SALES_INVOICES>

XML dosyamız yerinde dursun şimdilik biz logoda bir kaç işlem yapalım.

1- Logo klasörünün içinde bulunan register.bat dosyamızı çalıştırıyoruz ve logonun terminelimizde gerekli registerleri yapmasını sağlıyoruz.

2- sys den terminal kaydımız yapıyoruz.

3- artık logonun kendisi sorunsuz terminal pc de çalışıyor olması gerekiyor. şimdi örneğimiz için gereken kartları açalım.

4-evet şimdi delphiyi açıyoruz ve UnityObjects i import ediyoruz.

5-importa devammm..

6- ve yazamaya geçebiliriz.

  LogoBaglantisi : UnityApplication; 

adı aldında global bir nesne tanımlayın yeri size ait birden fazla tanımlarsanız. her nesneyi 1 kullanıcı sayar bilginize.

7- 1 defaya mahsus nesnemizi yaratıyor (bu deyimide sevmiyorum ama)

 LogoBaglantisi := CoUnityApplication.Create; 

unutmadan işimiz bitince firmadan çıkmayı unutmayalım sonra herp bağlı kalırız 🙂

 LogoBaglantisi.CompanyLogout;
LogoBaglantisi.Disconnect;

8- logoya bağlanalım

   if LogoBaglantisi.Login('kullanıcıadı','şifre',2,0) then
  begin
  Memo1.lines.Add( 'Logo Bağlantısı Kuruldu ' + LogoBaglantisi.Version);
  end else  Memo1.lines.Add( 'Logo Bağlantısı Kurulamadı' + LogoBaglantisi.GetLastErrorString);

burada 2 firma numarası 0 ise aktif dönem anlamına geliyor.

9- form tasarımı düğme felanonlar sizin işiniz

10- evetttt dananın kuyruğunun koptuğu yere geldik

var
Fatura: IData;
FaturaSatirlari: UnityObjects_TLB.ILines;
Saat: OleVariant;
SonucStr :string;
i: integer;
begin
Fatura := LogoBaglantisi.NewDataObject(doSalesInvoice);
  Fatura.New;
      Fatura.DataFields.FieldByName('TYPE').Value := 8;
      Fatura.DataFields.FieldByName('NUMBER').Value := 'A00001' ;
      Fatura.DataFields.FieldByName('DOC_NUMBER').Value := 'A00001';
      Fatura.DataFields.FieldByName('AUXIL_CODE').Value := 'AUTO';
      Fatura.DataFields.FieldByName('DATE').Value := '22.02.2017';
      Fatura.DataFields.FieldByName('DOC_DATE').Value := '22.02.2017';
      LogoBaglantisi.PackTime(12, 12, 12, Saat);
      Fatura.DataFields.FieldByName('TIME').Value := Saat;
      Fatura.DataFields.FieldByName('ARP_CODE').Value := 'CR-001';
      FaturaSatirlari := Fatura.DataFields.FieldByName('TRANSACTIONS').Lines;
      FaturaSatirlari.AppendLine;
      FaturaSatirlari[0].FieldByName('TYPE').Value := 0;
      FaturaSatirlari[0].FieldByName('MASTER_CODE').Value := 'STK-001'   ;
      FaturaSatirlari[0].FieldByName('QUANTITY').Value := 5  ;
      FaturaSatirlari[0].FieldByName('PRICE').Value := 3      ;
      FaturaSatirlari[0].FieldByName('UNIT_CODE').Value := 'ADET';
      FaturaSatirlari[0].FieldByName('VAT_RATE').Value := 18   ;
  if Fatura.Post then
  begin
    SonucStr := 'Abi Kestim Faturayı Referans No :'+ VarToStr(Fatura.DataFields.FieldByName('INTERNAL_REFERENCE').Value);
  end
  else
  begin
      SonucStr := 'Sıçtık : ' + Fatura.ErrorDesc + IntToStr(Fatura.ErrorCode)
  end;
Fatura.ExportToXML('SALES_INVOICES',ExtractFilePath(Vcl.Forms.Application.ExeName) +'fatura.xml');
Memo1.Lines.Add(SonucStr) 

ve sonuç

Çok kısa bir anlatım oldu ama ben bu kadar becerebiliyorum. dikkat ederseniz baştakı xml ile sondaki kodarımız aynı yöntem 1 deme nedenine gelirsek web servis olarakta bu işlemi yapa biliyoruz. dua ile olurmu bilmem ama çalıştığım kurumda çok yoğun çalışıyorum işlerimin yoğunluğu azalarısa onada basit bir örnek yazarız. projenin kodlarını https://github.com/lazymule/LogoObjectsSample adresine atıyorum vakti olan arkadaşların örneklerinide burada toplayabiliriz. alıntı yapan arkadaşlarım bir kuble olsada bizi belirtirlerse sevinirim belirmeselerde canları sağolsun hadi kolay gele

unutmadan örnekte delphi xe7 ve logo tiger 3 kullandım

Aktif Forum Konusu https://www.delphican.com/showthread.php?tid=692

benden tembelleride varmış 🙂  http://forum.logo.com.tr/?page=xml-code-converter

 

5 Replies to “Logo Objects ile Fatura Kesmek Yöntem 1”

  1. allah razı olsun arkadaşım
    bırazdan test edıp bılgı verecegım bu logocular okadar katıkı bilgi paylaşıldıkça güzeldir konusu uzak onlara malesef ama bu parayla verilen bir eğitimse bizede yol açmalılar neyse verelım sıkıntı yok ama sansurlemek yanlış inşallah bir sürü insan senin blogundan faydalanacak
    seniz azıcık zorladım gerçe 🙂

    • evet payın büyük ama unutma bu L ‘si inan ben LOB ‘dayımdır 🙁 tecrübe gerek

  2. Merhaba kolay gelsin object ten sipariş yazdırmatya çalışıyorum

    Siparis := LogoBaglantisi.NewDataObject(doSalesOrderSlip);
    Siparis.New; // burda takılıyor Acces violation hatası veriyo ‘ntdll.dll’
    Siparis.DataFields.FieldByName(‘TRCODE’).Value := 1 ;

    Yadımcı olablir misiniz

    • merhaba 2.50 den sonra Object yeniden import etmeniz gerekiyor , onun harici küçük bir örnek mail atın bakayım kemalbayat – gmail.com