Erp Asistanı Erp Asistanı
Logo SQL

Logo Tablo Yapısı (GO 3/Tiger): LG_ Önekleri, LOGICALREF ve Temel Tablolar Rehberi

6 dk okuma Erp Asistanı
Logo Tablo Yapısı (GO 3/Tiger): LG_ Önekleri, LOGICALREF ve Temel Tablolar Rehberi

Logo (Tiger, GO 3, GO Plus) veritabanına ilk kez SQL ile bakan herkes aynı yerde takılır: tablo adları neden LG_323_01_STLINE gibi rakamlı? "Cari" tablosu nerede, bakiye hangi kolonda, neden hiçbir tabloda düz CODE ile eşleşme yapamıyorum? Bu rehber Logo'nun tablo adlandırma mantığını, firma/dönem önek sistemini ve tabloları birbirine bağlayan LOGICALREF anahtarını anlatır. Tüm örnekler gerçek bir Logo GO 3 veritabanında test edilmiştir.

Logo tablo adları neden rakamlı? Firma ve dönem öneki

Logo, her firmanın ve her mali dönemin verisini ayrı tablolarda tutar. Bir tablonun gerçek (fiziksel) adı üç parçadan oluşur:

  • LG_{firma} — 3 haneli firma numarası. Örneğin 323 numaralı firma → LG_323_.
  • {dönem} — 2 haneli mali dönem. Örneğin 1. dönem → 01.
  • Mantıksal adITEMS, CLCARD, STLINE gibi.

İki tür tablo vardır ve öneki bu belirler:

Tür Önek deseni Örnek İçerik
Firma-master (döneme bağlı değil) LG_{firma}_ LG_323_CLCARD, LG_323_ITEMS Cari ve stok kartları — tüm dönemlerde ortak
Dönemsel (her mali döneme ayrı) LG_{firma}_{dönem}_ LG_323_01_STFICHE, LG_323_01_CLFLINE Hareketler, fişler, faturalar — döneme özel

Yani stok kartı LG_323_ITEMS'te (dönemsiz), o stoğun hareketi LG_323_01_STLINE'da (dönemli) durur. Kendi kurulumunuzda firma ve dönem numaranızı Logo'da "Firma / Dönem" ekranından görebilirsiniz.

En sık hata: Fonksiyonlar da önekli. GETUNITCOEF ve GETSTTRANSCOEF gibi Logo fonksiyonları düz dbo.GETUNITCOEF değil, dbo.LG_323_01_GETUNITCOEF şeklinde çağrılır. Öneki unutursanız "Cannot find ... object" (Msg 2812/4121) alırsınız.

Bu yazıdaki sorgularda tabloları mantıksal adlarıyla (ITEMS, STLINE) gösteriyoruz; kendi sorgunuzda başına LG_{firma}_ veya LG_{firma}_{dönem}_ eklemeniz yeterli.

En çok kullanılan Logo tabloları

Mantıksal ad Önek türü Ne tutar Öne çıkan kolonlar
ITEMS firma Stok kartları LOGICALREF, CODE, NAME, VAT, ACTIVE
CLCARD firma Cari (müşteri/tedarikçi) kartları LOGICALREF, CODE, DEFINITION_, CITY, TAXNR, ACTIVE
STFICHE dönem Stok fişi başlıkları (irsaliye vb.) LOGICALREF, FICHENO, DATE_, TRCODE, IOCODE, CLIENTREF, NETTOTAL
STLINE dönem Stok fişi kalemleri (satış/alış satırları) STOCKREF, AMOUNT, TRCODE, LINETYPE, UINFO1, UINFO2, CANCELLED
CLFLINE dönem Cari hareket satırları CLIENTREF, AMOUNT, SIGN, TRCODE, DATE_, CANCELLED
INVOICE dönem Fatura başlıkları LOGICALREF, FICHENO, TRCODE, CLIENTREF, NETTOTAL, GROSSTOTAL
ORFICHE / ORFLINE dönem Sipariş başlık / kalem FICHENO, CLIENTREF, STOCKREF, AMOUNT, SHIPPEDAMOUNT, CLOSED
GNTOTST dönem Ambar/dönem bazında stok toplamları (hızlı bakiye) STOCKREF, INVENNO, ONHAND, ONORDER

Kritik kural: ilişkiler CODE ile değil LOGICALREF ile kurulur

Logo'da her tablonun birincil anahtarı LOGICALREF adında bir sayıdır. Tablolar birbirine kod ile değil bu sayı ile bağlanır. Yabancı anahtarlar ...REF ile biter:

  • STFICHE.CLIENTREFCLCARD.LOGICALREF (fiş → cari)
  • STLINE.STOCKREFITEMS.LOGICALREF (kalem → stok)
  • CLFLINE.CLIENTREFCLCARD.LOGICALREF (cari hareket → cari)
  • ORFLINE.ORDFICHEREFORFICHE.LOGICALREF (sipariş kalemi → başlık)
-- Satış irsaliyeleri: fiş başlığı + cari adı (LOGICALREF ile bağ)
SELECT F.DATE_, F.FICHENO, C.CODE AS cari_kod, C.DEFINITION_ AS cari_ad, F.NETTOTAL
FROM STFICHE F
JOIN CLCARD C ON C.LOGICALREF = F.CLIENTREF   -- kod değil, LOGICALREF!
WHERE F.TRCODE = 8 AND F.IOCODE = 3 AND F.CANCELLED = 0
ORDER BY F.DATE_ DESC;

C.CODE = F.CLIENTREF yazarsanız sorgu hiçbir satır döndürmez; CLIENTREF bir kod değil, satır numarasıdır.

Belge tipini TRCODE + IOCODE belirler

Satış, alış, irsaliye ve fatura kalemlerinin hepsi aynı hareket tablolarında yaşar; onları işlem tipi kodu ayırır. Stok tarafında TRCODE (işlem tipi) ve IOCODE (giriş/çıkış yönü) birlikte okunur:

Kolon Değer Anlamı (standart Logo)
IOCODE 1 Giriş (alış yönü)
IOCODE 3 Çıkış (satış yönü)
TRCODE 8 Toptan satış (en yaygın satış tipi)
TRCODE 1 Mal alım
CANCELLED 0 İptal edilmemiş (daima filtreleyin)

TRCODE değerleri kurulum ve modüle göre çeşitlenir; kendi verinizde SELECT TRCODE, IOCODE, COUNT(*) FROM STLINE GROUP BY TRCODE, IOCODE ile dağılımı görüp doğrulayın. Stok yönünü (giriş +, çıkış −) tek başına IOCODE'dan çıkarmak yerine GETSTTRANSCOEF fonksiyonuna güvenmek en sağlamıdır (ayrı yazıda ele alıyoruz).

Logo'ya özgü üç tuzak

  • ACTIVE = 0 aktif demektir. Logo'da bayrak terstir: ACTIVE = 0 kart aktif, 1 pasiftir. "Aktif carileri getir" derken WHERE ACTIVE = 1 yazmak listeyi ters çevirir.
  • Kolon adlarında alt çizgi. Cari ünvanı DEFINITION değil DEFINITION_; tarih DATE değil DATE_; sipariş zamanı TIME_. DATE ve TIME SQL'de ayrılmış kelime olduğu için Logo sona alt çizgi ekler.
  • Bakiye ve stok miktarı bir kolonda durmaz. Cari bakiye CLFLINE satırlarından, stok miktarı STLINE hareketlerinden hesaplanır (ya da GNTOTST özet tablosundan okunur). Kart tablolarında hazır bir "bakiye" alanı aramayın.

Sık sorulanlar

Logo tablo adlarındaki 323 ve 01 nedir? LG_323_01_STLINE adında 323 firma numarası, 01 mali dönem numarasıdır. Kart tabloları (LG_323_ITEMS, LG_323_CLCARD) yalnız firma önekli, hareket/fiş tabloları hem firma hem dönem önekli olur. Kendi firma ve dönem numaranızı Logo firma/dönem ekranından öğrenirsiniz.

Logo'da cari ünvanı hangi kolonda? CLCARD.DEFINITION_ (sonda alt çizgiyle). Cari kodu CODE, vergi numarası TAXNR, şehir CITY kolonlarındadır.

Neden CODE ile join yapınca sonuç boş geliyor? Logo tabloları birbirine LOGICALREF (sayısal birincil anahtar) ile bağlanır. STFICHE.CLIENTREF, CLCARD.LOGICALREF'e eşittir; cari koduna değil. Join'i ON C.LOGICALREF = F.CLIENTREF şeklinde kurun.

Logo fonksiyonlarını çağırırken hata alıyorum. GETUNITCOEF, GETSTTRANSCOEF gibi fonksiyonlar da firma/dönem önekli tanımlıdır: dbo.LG_323_01_GETUNITCOEF(...). Öneki eklemezseniz nesne bulunamaz hatası alırsınız.

Fatura ile irsaliye aynı tabloda mı? Hayır — irsaliye/stok fişi başlıkları STFICHE, fatura başlıkları INVOICE tablosundadır; ikisinin kalemleri de STLINE'da tutulur. Fişleri TRCODE/IOCODE ile ayırırsınız.


Bu tablo yapısını ezberlemek zorunda değilsiniz: Erp Asistanı ile Türkçe "bu dönem en çok satan 10 ürünü getir" yazarsınız, sistem Logo şemasına (LG önekleri, LOGICALREF bağları, doğru TRCODE'lar dahil) uygun çalışan SQL'i üretir.

Mikro'da SQL ve raporu konuşarak alın

Türkçe sorunuzu yazın, şemanıza uygun çalışan SQL'i ya da hazır uygulamanızı saniyeler içinde alın. Kredi kartı gerekmez.