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ı
Editör ekibi
11 dk okuma
İçindekiler
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 bunlarInvalid 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_vergivesth_vergi_pntrbir 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 = 0yazılmazsa iptal edilmiş evraklar rapora karışır. - Cari bakiyeyi süzmeden toplamak:
CARI_HESAP_HAREKETLERIkasa ve banka hareketlerini de taşır; müşteri bakiyesi içincha_cari_cins = 0şartı gerekir. - Dövizli hareketi TL gibi toplamak:
cha_meblaghareketin kendi para birimindedir; TL karşılığı içincha_d_kurile çarpın. cha_vadekolonunu 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 tarihinidbo.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.
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.