Başlarken

Logo Object Designer ayarlarının bu bağlantıdan LOD Açılış İşlemleri yapılması gerekmektedir.

Logo Object Designer, Logo Objects gibi ERP ürününün kurulu olduğu klasör içerisinde  LOD klasörü altında LOD.exe olarak bulunur.

Lod.exe versiyon bağımsızdır. Ancak TPL bağımlı çalışır. UPL(TPL) klasörü ürünün arayüz tanımlarını içerir.

Bu klasör içerisinde ReadMe.txt dosyasının içerisinde yazan versiyon bilgisi ile LENGINE1.exe nin versiyonu aynı olmalıdır. 

Aksi halde yeni bir versiyona daha eski form ve tablo tanımlarıyla eski bir uyarlama ile hatalı işlem yapılabilir.

Genel Görünüm

LOD ile neler yapılabilir?

Tiger ekranlarının görünüm ve davranışlarını değiştirebileceğiniz gibi yeni bir modülde geliştirebilirsiniz.

LOD ve UPL(TPL) Arasındaki ilişki nedir?

LOD klasöründe uyarlama yapacağımız araç (LOD.EXE) yer almaktadır.
UPL(TPL) klasörü ise uyarlama yapacağımız ürünün LOD projesi ile ilgili arayüz tanımlarını içeren klasördür.
Bu klasör içeirisinde, iligli versiyona ait aşağıdaki tanımlar yer alır;

  • Form tanımları (Malzeme Kartı görüntüsü, Satış faturası görüntüsü gibi)
  • Tablo tanımları (_ITEMS, _CLCARD, _ORFICHE gibi tablo ve tablo alan tanımları)
  • Menü ağacı (Modül ve alt modul yerleşimleri)
  • LVSL Kod kütüphanesi

LOD ile Uyarlama Formuna Bağlı Ek  Bilgi Formu

Malzeme kartına bağlı ek bilgi formu oluşturma adımları

  1. Önce Form  tasarım işlemini gerçekleştirilir.
  2. Sonra tablo oluşturulur.
  3. Form ile tablo arasında ilişki kurulur.
    1. Tablo oluşturma işleminde Table Nr. Önemli  çakışma yaşanmamalıdır.
    2. Veri tabanında bu numaraya göre isimlendirilmektedir.
  4. Ek bilgi Formunda kod yazılmasına gerek yoktur. Tablo alanları componentlere bağlanarak veri tabanına kayıt sağlanır.

Malzeme Kartına Arayüz Uyarlama

  • Arayüz uyarlamanın Ek Bilgi Formundan tek farkı
    • formlardan veri girişi sağlanıp bu alanların browserda’da gösterilmesidir.
  • Ek Bilgi Formu sadece sağ tuş menüsü ile açılan formdan veri girişi sağlanıp bunlar browserda gösterilmez.
  • Hem arayüz uyarlamanın çalışması hemde LOD ile yapılan uyarlamanın çalışması için AllowCustomizeForm() methodu kullanılır.
  • Arayüz uyarlamaya Ürün destek kısmı destek vermektedir.
    • Burada anlatılmasının nedeni Ek bilgi formu ile arayüz uyarlamanın arasındaki farkları göstermek içindir.

Malzeme Kartını Uyarlama

Aşağıdaki tasarımda gösterildiği gibi ürün malzeme kartına ek tab ve alanlar tanımlanabilir.

Sub FormShow()
	AllowCustomizeForm() 
	AppTables[1].GetIntFieldR(RecHandle, "LOGICALREF", intLRef)
     CustTables[1].Search(2, 2, intLRef)
     if DBErr <> 0 then
       CustTables[1].NewRecord()
       CustTables[1].SetIntField("PARLOGREF", intLRef)
     end if
     CustTables[1].SetIntField("A_NUM", 999)
     CustTables[1].SetTxtField("A_STR", "Patates")
     CustTables[1].UpdateRecord()
End Sub
Sub ButtonClick(ctrl as String)
    if ctrl = "LButton1" then
     GetTextVal("LTextEdit8", strTxt)
     warn(strTxt)
     SetTextVal("LTextEdit8", "Domates")
     'SetIntVal("LNumEdit4", 999)
     SetNumProp("LTextEdit8", 27, 0)
  end if
if ctrl = "LButton2" then
   p=POS("t","umutcan")
    warn(p) 
  end if  
End Sub
Sub BeforeSave(proceed as Integer)
   GetTextVal("LTextEdit8", strTxt)
   if strTxt = "" then
      warn("Text alanı boş geçilemez.")
      proceed = 0
   end if
End Sub
Sub AfterSave()
    AppTables[1].GetIntFieldR(RecHandle, "LOGICALREF", intLRef)
    warn(intLRef)
End Sub

Parametre

AppTables : Uygulama tarafından oluşturulan ve açılan tüm tablo nesnelerine bu özellik ile ulaşılabilir.

GetIntFieldR : İlgili kaydın belirteci yerine harici bir kayıt belirtecinde (record handle) çalışmasıdır.

Search : Belirtilen anahtar değerine ve koşula sahip kaydı arar.

Parametreleri :1. Kullanılacak indeksi belirler. 2. Koşul  0 Küçük,1 Küçük veya eşit

2 Eşit,4 Büyük veya eşit,5 Büyük 3. Anahtar değeri. Tek bir indeks için birden fazla alan

birleştirilecekse, değerler noktalı virgül ile ayrılmalıdır.

SetIntField : İlgili kaydın belirtilen alanı için tamsayı (integer) değeri atar.

GetTextVal : Form nesnesine ait bir görsel denetiminde düzenlenen metni döndürür.

SetNumProp : Form nesnesine ait bir görsel denetimin numerik özellik değerini belirler.

POS : Metin içerisindeki pozisyon indeksini verir.

Free Form Oluşturma

Sub FormShow()
  SetPopup("LTextEdit1", "LPopupMenu1")
  MNAddItem("LPopupMenu1", "Değiştir", 2)
  MNAddItem("LPopupMenu1", "Sil", 3)
  
End Sub
Sub DoubleClick(ctrl as String, index as Integer)
  if ctrl = "LTextEdit1" then
     Application.CreateAppForm(1017, 0, 0, 0, 0, 2, 1, 1, intLRef, tmpFrm)
     if intLRef <> 0 then
        AppTables[1].SearchByRef(intLRef)
        if DBErr = 0 then
           AppTables[1].GetTxtField("CODE", strCode)
           setTextVal("LTextEdit1",strCode)
        end if
     end if
  end if
End Sub
Sub ButtonClick(ctrl as String)
  if ctrl = "LButton1" then
     ShellExecuteX("Notepad.exe", "", "C:\\WINDOWS")
  end if
if ctrl = "LButton2" then
     mgrid = "LGridList1"     
   tbrt=Application.GetTableName(1,Application.CompanyId,Application.FiscPerdId)
    sqlTxt = "SELECT CODE, NAME FROM "+tbrt+" WHERE CARDTYPE <> 22"
    CreateQuery(qry)
    qry.SetSqlText(sqlTxt)
    qry.executeDirect()
    i=0
    if qry.ready = 1 then
       res = qry.First()
       do while res = 1
         qry.GetFieldValue(1, 4, strItmCode)
         qry.GetFieldValue(2, 4, strItmName)
         SetMGridRow(mgrid, i)
         InsertGridRow(mgrid, 1)
         SetCellText(mgrid, i, 10001, strItmCode)
         SetCellText(mgrid, i, 10002, strItmName)
         InvalidateGrid(mgrid)
         RefreshControl(mgrid, 1)
         i=i+1
         res = qry.next()
       loop
    end if
  end if
Sub ...
if ctrl = "LButton3" then
     UnityApp = OleObject("UnityObjects.UnityApplication")
     if UnityApp.Login("","",1) = true then
     end if
          ADO = OleObject("ADODB.Connection")
  end if
End Sub
Sub PopupMenuClick(ctrl as String, index as Integer, result as Integer)
  if ctrl = "LPopupMenu1" and index = 3 then
     warn("Sil tıklandı....")
  end if
End Sub

SetPopup : Popup menüyü ayarlar.

MNAddItem :  Popup menüsüne öğe (item) ekler.

CreateAppForm : Uygulama formunu açar.

Parametreleri;

1.Uygulama Tablosu ID bilgisi
2.Tablodaki kaydın referansı
3.Tablodaki kaydın içerisinde konumlanılacak olan referans.
4.Kayıt türü
5.Kullanımda / Kullanım Dışı ( 0 / 1 )
6.İşlem: Yeni (1)/ Güncelle (2)/ Kopyala (4)/ Oku (5)
7.Modülasyon değer ( 1 = Modal)
8.Referans seçer.
9.Seçilen değer referansını döndürür.
10.Form nesnesini döndürür.

SearchByRef: Verilen referansa göre sorgu sonuçlarını araştırır.

GetTxtField: İlgili kaydın belirtilen alanına ait metin değerini getirir.

ShellExecuteX: Shell, diğer uygulamaları etkinleştiren bir uygulamadır.

GetFieldValue:İlgili satırda yer alan bir alanın değerini okur.

Parametreleri;

1.Alanın Select ifadesindeki sırası.
2.Alan türü. 1 Integer 2 Date(Logo formatı tarih ) 3 Float 4 Text
3.Alanın değeri .

SetMGridRow: Memory grid kontrolünün ilgili satırını ayarlar .

InsertGridRow: Memory Gird'e ait ilgili satırın üstüne veya altına bir satır ekler.

SetCellText: Memory Grid kontrolünün belirlenen hücresinde saklanan metin değerini atar.

InvalidateGrid: Veri ızgarasını yeniler.

RefreshControl:Veritabanındaki değer değiştiyse, kontrolün değerini yeniler. (Özellikle de kayıt belirtecini kullanan SetIntFieldR gibi yordamlarla).

Custom Rapor Oluşturma

prints(2)
tblName = Application.GetTableName(1, Application.CompanyID, Application.FiscPerdId)
sqlTxt = "SELECT CODE, NAME FROM " + tblName + " WHERE CARDTYPE <> 22"
CreateQuery(qry)
qry.SetSqlText(sqlTxt)
qry.executeDirect()
if qry.ready = 1 then
   res = qry.First()
   do while res = 1
     qry.GetFieldValue(1, 4, strItmCode)
     qry.GetFieldValue(2, 4, strItmName)
     SetVarValue(4, strItmCode)
     SetVarValue(5, strItmName)
     prints(3)   'ilgili section yazdırmak için kullanılır.
     res = qry.next()
   loop
end if
Sub ReportCreate()
  SetHeaderSects([1])  'Üst başlık 
  SetFooterSects([4])  'Alt başlık 
End Sub
if FltActive(1) = true then
   if FltRange(1) = true then
      strBeg = FltStrBeg(1)  'Filtre başlangıç 
      strEnd = FltStrEnd(1)   'Filtre son
      sqlTxt = sqlTxt + " AND (CODE BETWEEN  '" + strBeg + "' AND '" + strEnd + "')"
   else
      strBeg = FltStrVal(1)
      sqlTxt = sqlTxt + " AND (CODE = '" + strBeg + "')"
   end if
end if

DataGrid kolon ekleme

Sub DBGPrepareQuery(ctrl as String, ID as Integer)
  DBGGetQuery("StDataGrid", qry)
  'viewName = Application.GetViewName(11 ,Application.CompanyID, Application.FiscPerdId)
  viewName = "LV_001_02_GNTOTST"
  qry.jointable("GNTOT", viewName, "LGMAIN", "LOGICALREF", "=", "STOCKREF", "GNTOT.INVENNO = 0", 1)
  qry.AddSelFieldAsc("GNTOT", "ONHAND", 1, 0, 10018)
  
End Sub
Sub DBGSetRow(ctrl as String, ID as Integer, row as Long)
DBGGETFetchMode("StDataGrid",ModeID)
if ctrl="StDataGrid" and ModeID=0 then
  qry.GetFieldValueAsc(10018, 1, intOnHand)
  DBGSetField("StDataGrid", row, 10018, intOnHand)
  end if
  
End Sub

DBGGetQuery: Bir veri ızgarasının sorgu ifadesini alır.

Jointable:Tabloları sorgu için birleştirir.

Parametreleri;

1.Kaynak tabloyla birleştirilecek olan tablonun takma adı
2.Kaynak tabloyla birleştirilecek tablonun adı.
3.Kaynak tablonun takma adı.
4.Kaynak alanın adı.
5.Tabloları birleştirmek için kullanılacak olan koşul değeri.
6.Kaynak alanla karşılaştırma için kullanılacak olan alanın adı
7.Ek şartları belirlediğimiz parametre
8.Birleştirme türü  (1 LEFT OUTER JOIN  2RIGHT OUTER JOIN )

AddSelFieldAsc:Bir veri ızgarasına ait (data grid) sorguya yeni bir alan ekler.

Parametreleri;

1.Sorgu dizgisinde kullanılacak olan tablonun takma adı
2.Sorguya eklenecek olan alanın adı
3.Alanın türü.(1 INTEGER  2DATE (Logo formata tarih) 3FLOAT 4 TEXT)
4.Alan türünün DATE (tarih) olarak belirlenmesi halinde 1 olarak belirlenmesi gereken değer
5.Alanın indeks değeri (Bu değer 10000'den fazla olmalıdır.)

GetFieldValueAsc:Bir veri ızgarasının (data grid) sorgusuna eklenen alanın değerini alır.

DBGSetField :Verilen metin değerini, veri ızgarasının bir hücresine atar.

LEFT OUTER JOIN LV_001_02_GNTOTST GNTOT ON(LGMAIN.LOGICALREF=GNTOT.STOCKREF) 
    AND (GNTOT.INVENNO=0)
GNTOT.ONHAND

Kaydet

Kaydet

Kaydet

Kaydet

Kaydet

Kaydet

Kaydet

Kaydet

Kaydet

Telif HakkıKullanım KoşullarıGizlilik
Copyright © 2018 Logo Yazılım