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 ad —
ITEMS,CLCARD,STLINEgibi.
İ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.
GETUNITCOEFveGETSTTRANSCOEFgibi Logo fonksiyonları düzdbo.GETUNITCOEFdeğ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.CLIENTREF→CLCARD.LOGICALREF(fiş → cari)STLINE.STOCKREF→ITEMS.LOGICALREF(kalem → stok)CLFLINE.CLIENTREF→CLCARD.LOGICALREF(cari hareket → cari)ORFLINE.ORDFICHEREF→ORFICHE.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 = 0aktif demektir. Logo'da bayrak terstir:ACTIVE = 0kart aktif,1pasiftir. "Aktif carileri getir" derkenWHERE ACTIVE = 1yazmak listeyi ters çevirir.- Kolon adlarında alt çizgi. Cari ünvanı
DEFINITIONdeğilDEFINITION_; tarihDATEdeğilDATE_; sipariş zamanıTIME_.DATEveTIMESQL'de ayrılmış kelime olduğu için Logo sona alt çizgi ekler. - Bakiye ve stok miktarı bir kolonda durmaz. Cari bakiye
CLFLINEsatırlarından, stok miktarıSTLINEhareketlerinden hesaplanır (ya daGNTOTSTö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.