Erp Asistanı Erp Asistanı
Mikro SQL

Mikro v16 Tablo Yapısı: Guid Kimlikler, uid Bağları ve Temel Tablolar Rehberi

Mikro v16 veritabanı tablo haritası: stok, cari, sipariş ve hareket tabloları, Guid kimlikler, sth_fat_uid ile fatura bağı, kod sözlükleri, v16 fonksiyon imzaları ve gerçek v16 veritabanında çalıştırılmış örnek SQL'ler.

Erp Asistanı Erp Asistanı Editör ekibi 11 dk okuma
Mikro v16 Tablo Yapısı: Guid Kimlikler, uid Bağları ve Temel Tablolar Rehberi

Mikro v16, satır kimliklerinin Guid'e geçtiği sürümdür: v15'in RECno düzeni gider, tablolar birbirine uid kolonlarıyla bağlanır. v17 ise bunun üstüne yeni kolonlar ekler. Yani v16 için yazılmış bir sorgu ne v15'te ne de her zaman v17'de aynen çalışır. Bu rehber yalnızca Mikro v16 veritabanını anlatır: tablo haritası, kimlik ve bağ kolonları, kod sözlükleri, v16 fonksiyon imzaları ve örnek sorgular. Yazıdaki kolon adları ve sorgular, içinde gerçek veri bulunan bir v16 veritabanında çalıştırılarak doğrulanmıştır.

Önce: veritabanınız gerçekten v16 mı?

Sürümü veritabanının kendisinden okuyun. Mikro'da sürüm, cari kart tablosundaki iki kolonun varlığıyla ayrılır:

SELECT CASE WHEN COL_LENGTH('dbo.CARI_HESAPLAR', 'cari_VersionNo') IS NOT NULL THEN 'v17'
            WHEN COL_LENGTH('dbo.CARI_HESAPLAR', 'cari_Guid')      IS NOT NULL THEN 'v16'
            WHEN OBJECT_ID('dbo.CARI_HESAPLAR')                    IS NOT NULL THEN 'v15'
       END AS MikroSurumu;

v16'nın işareti şudur: cari_Guid vardır, cari_VersionNo yoktur. Sonuç v15 çıkarsa Mikro v15 tablo yapısı, v17 çıkarsa Mikro v17 tablo yapısı rehberine bakın.

Mikro v16 adlandırma mantığı

Kolonlar tabloya özgü önekle başlar: STOKLAR → sto_, STOK_HAREKETLERI → sth_, CARI_HESAPLAR → cari_, CARI_HESAP_HAREKETLERI → cha_, SIPARISLER → sip_, DEPOLAR → dep_. Bunun üstüne v16'da her tabloda aynı son ekler tekrar eder:

Son ek Anlamı Örnek
_Guid Satırın benzersiz kimliği sth_Guid, cha_Guid, sip_Guid
_DBCno Veritabanı numarası sto_DBCno
_iptal İptal bayrağı sth_iptal, cha_iptal
_hidden Gizli kayıt sto_hidden
_create_date / _lastup_date Oluşturma ve son değişiklik zamanı sto_create_date, sto_lastup_date
_evrakno_seri / _evrakno_sira Evrak numarası sth_evrakno_seri, cha_evrakno_sira

İncelediğimiz v16 veritabanında Guid taşıyan 400 tablo vardır; v15'in RECid çiftini taşıyan tablo sayısı sıfırdır. Stok kartında birincil anahtar sto_kod'dur, hareket tablolarında ise Guid'in kendisidir (sth_Guid, cha_Guid, sip_Guid).

Önemli bir ayrıntı: Guid sıralı bir değer değildir. "En son kayıt" için ORDER BY sth_Guid yazmak anlamlı bir sıra vermez; tarih ve evrak sıra numarasını kullanın.

En çok kullanılan Mikro v16 tabloları

Tablo Ne tutar Öne çıkan kolonlar Kolon sayısı
STOKLAR Stok kartları sto_kod, sto_isim, sto_kisa_ismi, sto_birim1_ad, sto_anagrup_kod, sto_marka_kodu, sto_resim_url 215
STOK_HAREKETLERI Tüm stok giriş/çıkışları (fatura ve irsaliye kalemleri dahil) sth_tarih, sth_stok_kod, sth_miktar, sth_tutar, sth_tip, sth_evraktip, sth_fat_uid, sth_sip_uid 138
CARI_HESAPLAR Cari kartlar cari_kod, cari_unvan1, cari_unvan2, cari_vdaire_adi, cari_VergiKimlikNo, cari_EMail, cari_CepTel 183
CARI_HESAP_HAREKETLERI Parasal hareketler ve fatura başlıkları cha_tarihi, cha_kod, cha_meblag, cha_tip, cha_cinsi, cha_evrak_tip, cha_vade, cha_ebelge_turu 176
SIPARISLER Sipariş kalemleri (ayrı başlık tablosu yoktur) sip_tarih, sip_musteri_kod, sip_stok_kod, sip_miktar, sip_teslim_miktar, sip_tip, sip_kapat_fl, sip_teklif_uid 129
DEPOLAR Depo tanımları dep_no, dep_adi, dep_tipi 72
BARKOD_TANIMLARI Barkodlar bar_kodu, bar_stokkodu, bar_birimpntr 30
STOK_SATIS_FIYAT_LISTELERI Stok × liste × depo × birim fiyatı sfiyat_stokkod, sfiyat_listesirano, sfiyat_deposirano, sfiyat_birim_pntr, sfiyat_fiyati 28
KASALAR / BANKALAR Kasa ve banka tanımları kas_kod, kas_isim · ban_kod, ban_ismi, ban_IBANKodu 25 / 90
ODEME_PLANLARI Ödeme planları odp_no, odp_adi 23
STOK_HAREKETLERI_OZET Dönem ve depo bazında stok özeti sho_StokKodu, sho_Depo 42

Kolon sayıları gerçek bir v16 veritabanından sayılmıştır. Aynı veritabanında 632 tablo, 940 görünüm (view) ve 1.201 fonksiyon bulunur.

Mikro'da ayrı bir FATURALAR tablosu yoktur: faturanın başlığı CARI_HESAP_HAREKETLERI'nde, kalemleri STOK_HAREKETLERI'ndedir. Ayrıntı: Mikro'da fatura hangi tabloda?

v16'da tablolar birbirine nasıl bağlanır? uid kolonları

v15'in iki kolonlu RECid bağları v16'da tek kolona iner. Bağ kolonunun adı _uid ile biter ve karşı tablonun Guid'ini tutar:

Bağ Kolon Karşılığı
Fatura kalemi → fatura başlığı sth_fat_uid cha_Guid
Stok hareketi → sipariş satırı sth_sip_uid sip_Guid
Sipariş → teklif sip_teklif_uid teklif satırının Guid'i
Cari hareket → sipariş cha_sip_uid sip_Guid

Bir faturayı kalemleriyle birlikte okumak için STOK_HAREKETLERI.sth_fat_uid = CARI_HESAP_HAREKETLERI.cha_Guid eşitliği yeterlidir (aşağıda örneği var).

Kod sözlükleri

STOK_HAREKETLERI:

Kolon Değerler
sth_tip (yön) 0: Giriş · 1: Çıkış · 2: Depo transferi
sth_cins (sınıf) 0: Toptan · 1: Perakende · 4: Fire · 5: Sarf · 7: Üretim · 10: Sayım · 11: Açılış
sth_evraktip (evrak) 1: Çıkış irsaliyesi · 3: Giriş (alış) faturası · 4: Çıkış (satış) faturası · 13: Giriş irsaliyesi · 2: Depo transfer fişi · 12: Depo giriş fişi
sth_normal_iade 0: Normal · 1: İade

CARI_HESAP_HAREKETLERI:

Kolon Değerler
cha_tip (yön) 0: Borç · 1: Alacak
cha_cinsi (sınıf) 0: Nakit · 1: Müşteri çeki · 2: Müşteri senedi · 5: Dekont · 6: Toptan fatura · 7: Perakende fatura · 8: Hizmet faturası
cha_evrak_tip (evrak) 0: Alış faturası · 63: Satış faturası · 1: Tahsilat makbuzu · 64: Tediye makbuzu · 29: Açılış fişi
cha_cari_cins (hesap türü) 0: Cari · 2: Banka · 4: Kasa

SIPARISLER: sip_tip 0 alınan (müşteri) siparişi, 1 verilen (tedarikçi) siparişidir.

Satış cirosunun güvenli tanımı: sth_iptal = 0 AND sth_tip = 1 AND sth_evraktip IN (1, 4) AND sth_normal_iade = 0. Satış iadesi giriş yönünde durur (sth_tip = 0, sth_evraktip IN (3, 13), sth_normal_iade = 1); net satış için iadeyi ayrıca düşün.

v16 fonksiyonları ve imzaları

Fonksiyon v16'da parametre Diğer sürümler
fn_EldekiMiktar 1 (stok kodu) Üç sürümde 1
fn_DepodakiMiktar 3 (stok kodu, depo no, tarih) Üç sürümde 3
fn_StokSatisFiyati 4 (stok kodu, fiyat listesi, depo, birim) v15'te 3
fn_CariHesapBakiye 11 v15'te 7, v17'de 12
fn_CariHesapAnaDovizBakiye 13 v15'te 9, v17'de 14
fn_OpVadeTarih 2 (vade kodu, referans tarih) Üç sürümde 2
fn_VergiYuzde 1 (vergi sıra numarası) Üç sürümde 1

Parametre sayısı tutmayan çağrı "An insufficient number of arguments were supplied" hatası verir. İnternetten aldığınız bir bakiye sorgusu çalışmıyorsa ilk bakacağınız yer burasıdır.

İki tuzak daha:

  • Ana veritabanı bağımlılığı. v16 fonksiyon ve görünümlerinin bir bölümü ana Mikro veritabanına (MikroDB_V16) adıyla başvurur. Firma veritabanını tek başına başka bir sunucuya taşıdığınızda bunlar Invalid object name 'MikroDB_V16.dbo…' hatasıyla durur. Hızlı teşhis: SELECT DB_ID('MikroDB_V16') boş dönüyorsa ana veritabanı o sunucuda yoktur.
  • KDV kolonları oran değildir. sto_toptan_vergi, sto_perakende_vergi ve sth_vergi_pntr bir sıra numarası tutar; oranı dbo.fn_VergiYuzde(sıra) verir ve numara–oran eşleşmesi kuruluma göre değişir.

Gerçek v16 veritabanında çalıştırılmış dört sorgu

-- 1) Eldeki stok
SELECT sto_kod AS [Stok Kodu], sto_isim AS [Stok Adı],
       dbo.fn_EldekiMiktar(sto_kod) AS [Eldeki Miktar]
FROM STOKLAR
WHERE sto_iptal = 0 AND sto_hidden = 0
ORDER BY sto_kod;
-- 2) En borçlu 15 müşteri (yalnız cari hesaplar, dövizli hareket kuruyla TL'ye çevrilir)
WITH bakiye AS (
  SELECT c.cha_kod AS kod,
         SUM(CASE WHEN c.cha_tip = 0 THEN 1 ELSE -1 END
             * c.cha_meblag
             * CASE WHEN ISNULL(c.cha_d_kur, 0) BETWEEN 0.01 AND 500 THEN c.cha_d_kur ELSE 1 END) AS tl
  FROM CARI_HESAP_HAREKETLERI c
  WHERE c.cha_iptal = 0 AND c.cha_cari_cins = 0
  GROUP BY c.cha_kod
)
SELECT TOP 15 ISNULL(ch.cari_unvan1, b.kod) AS [Müşteri],
       CAST(b.tl AS decimal(18,2)) AS [Bize Borcu (TL)]
FROM bakiye b
LEFT JOIN CARI_HESAPLAR ch ON ch.cari_kod = b.kod
WHERE b.tl > 0
ORDER BY b.tl DESC;
-- 3) Satış faturaları kalemleriyle (v16: uid bağı, birim fiyat tutardan türetilir)
SELECT TOP 50
       cha.cha_tarihi AS [Tarih], cha.cha_evrakno_seri AS [Seri], cha.cha_evrakno_sira AS [Sıra],
       cha.cha_kod AS [Cari Kodu], sth.sth_stok_kod AS [Stok Kodu], sth.sth_miktar AS [Miktar],
       sth.sth_tutar / NULLIF(sth.sth_miktar, 0) AS [Birim Fiyat], sth.sth_tutar AS [Tutar]
FROM CARI_HESAP_HAREKETLERI cha
JOIN STOK_HAREKETLERI sth ON sth.sth_fat_uid = cha.cha_Guid
WHERE cha.cha_iptal = 0 AND sth.sth_iptal = 0
  AND cha.cha_evrak_tip = 63 AND cha.cha_normal_Iade = 0
ORDER BY cha.cha_tarihi DESC, cha.cha_evrakno_sira DESC, sth.sth_satirno;
-- 4) Bekleyen müşteri siparişleri
SELECT sip_evrakno_seri AS [Seri], sip_evrakno_sira AS [Sıra], sip_musteri_kod AS [Cari Kodu],
       sip_stok_kod AS [Stok Kodu], sip_miktar AS [Sipariş], sip_teslim_miktar AS [Teslim],
       sip_miktar - sip_teslim_miktar AS [Kalan]
FROM SIPARISLER
WHERE sip_iptal = 0 AND sip_tip = 0 AND sip_kapat_fl = 0
  AND sip_miktar > sip_teslim_miktar
ORDER BY sip_tarih DESC;

Üçüncü sorguda birim fiyatın bölmeyle hesaplandığına dikkat edin: v16'da STOK_HAREKETLERI tablosunda hazır bir birim fiyat kolonu yoktur. v17'de sth_birimfiyat gelir; v16'da o kolonu seçen sorgu hata verir.

v16'ya özgü kolonlar: v15 ve v17 ile farkı

Kolon / nesne v15 v16 v17
<önek>_Guid Yok Var Var
sth_fat_uid, sth_sip_uid, sip_teklif_uid Yok Var Var
cha_vergi11 … cha_vergi20 Yok Var Var
sfiyat_birim_pntr Yok Var Var
sto_resim_url, sto_plu_no Yok Var Var
sth_teslim_tarihi, sip_Tevkifat_turu Yok Var Var
cha_disyazilimid Yok Var Yok
sto_beden_kodu, sto_renk_kodu Var Var Yok
sth_birimfiyat, cha_kdv_toplam, sip_miktar2 Yok Yok Var
cari_VersionNo, sto_VersionNo Yok Yok Var

Tablodan iki pratik sonuç çıkar. v16'dan v17'ye geçerken beden ve renk kolonlarını (sto_beden_kodu, sto_renk_kodu) kullanan raporlar bozulur, çünkü v17 bu bilgiyi varyant tablolarına taşır. v15'ten v16'ya geçerken ise RECno ve recid ile biten her kolon gider; o kolonlara dayanan raporların yeniden yazılması gerekir.

Sık yapılan hatalar

  • İptal filtresini unutmak: sth_iptal = 0, cha_iptal = 0, sip_iptal = 0 yazılmazsa iptal edilmiş evraklar rapora karışır.
  • Cari bakiyeyi süzmeden toplamak: CARI_HESAP_HAREKETLERI kasa ve banka hareketlerini de taşır; müşteri bakiyesi için cha_cari_cins = 0 şartı gerekir.
  • Dövizli hareketi TL gibi toplamak: cha_meblag hareketin kendi para birimindedir; TL karşılığı için cha_d_kur ile çarpın.
  • cha_vade kolonunu tarih sanmak: Bu kolon tam sayıdır. 0 peşin, negatif değer gün sayısı, 1–10000 arası ödeme planı numarası, daha büyük değer yıl-ay-gün biçiminde tarihtir. Gerçek vade tarihini dbo.fn_OpVadeTarih(cha_vade, cha_tarihi) verir. Ayrıntı: Mikro cari yaşlandırma raporu.

Sık sorulanlar

Mikro v16'da kaç tablo var? Kuruluma göre değişir; incelediğimiz v16 veritabanında 632 tablo ve 940 görünüm bulunuyor. Günlük raporların çoğu bu rehberdeki on kadar çekirdek tabloyla çıkar.

v16'da fatura kalemini başlığa nasıl bağlarım? STOK_HAREKETLERI.sth_fat_uid = CARI_HESAP_HAREKETLERI.cha_Guid eşitliğiyle. Satış faturası başlıkları cha_evrak_tip = 63 satırlarıdır.

v16 sorgum v17'de çalışır mı? Çoğu çalışır; v17 kolon kaldırmaktan çok kolon ekler. Bozulanlar beden/renk kolonlarını ve cha_disyazilimid'i kullananlar ile bakiye fonksiyonlarını v16'nın parametre sayısıyla çağıranlardır. Ayrıntı: Mikro v16 ve v17 farkları.

Tablo ve kod ezberlemeden v16 raporu alabilir miyim? Evet. Erp Asistanı'nda sorunuzu Türkçe yazarsınız; sistem sürümü bağlantınızdan algılar ve sorguyu v16 şemasına göre kurar.


Sürümlerin ortak yapısı için: Mikro tablo yapısı rehberi. Hazır sorgular için: Mikro hazır SQL sorguları.

Bu haritayı ezberlemek yerine kullanmak isterseniz Erp Asistanı'na ücretsiz üye olun, raporunuzu doğal dille isteyin; v16 şemanıza uygun SQL'i saniyeler içinde alın.

Ücretsiz üye olun, sorgunuzu doğal dille üretin →

Bu yazıyı paylaş
Konuşarak raporlayın

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.