Fatura ve irsaliye
Netsis'te fatura, irsaliye, sipariş, teklif, talep, depolar arası transfer ve ambar fişi aynı nesneyle yazılır: Fatura. Belgenin türünü kernel.yeniFatura(sirket, TFaturaTip) çağrısındaki enum belirler.
| Belge | TFaturaTip |
Tablo |
|---|---|---|
| Satış faturası | ftSFat |
TBLFATUIRS (FTIRSIP=1) + TBLSTHAR |
| Alış faturası | ftAFat |
TBLFATUIRS (2) |
| Satış irsaliyesi | ftSIrs |
TBLFATUIRS (3) |
| Alış irsaliyesi | ftAIrs |
TBLFATUIRS (4) |
| Müşteri (satış) siparişi | ftSSip |
TBLSIPAMAS (6) + TBLSIPATRA |
| Satıcı (alış) siparişi | ftASip |
TBLSIPAMAS (7) |
| Satış teklifi | ftSatTeklif |
teklif tabloları |
| Lokal depolar arası transfer | ftLokalDepo |
TBLFATUIRS (8) |
| Ambar giriş / çıkış fişi | ftAmbarG / ftAmbarC |
TBLFATUIRS (9 / 8) |
Tam liste: Enum'lar.
Yeni belge: adım adım
Fatura fatura = kernel.yeniFatura(sirket, TFaturaTip.ftSFat);
// 1) Numara al. Parametre seri önekidir ("A", "ABC" ...)
string no = fatura.YeniNumara("ABC");
// 2) Başlık
FatUst ust = fatura.Ust();
ust.FATIRS_NO = no;
ust.CariKod = "120-01-001";
ust.Tarih = DateTime.Today;
ust.FiiliTarih = DateTime.Today;
ust.ENTEGRE_TRH = DateTime.Today;
ust.TIPI = TFaturaTipi.ft_Acik; // açık fatura
ust.KDV_DAHILMI = false;
ust.PLA_KODU = "01"; // plasiyer
ust.Proje_Kodu = "1";
ust.EKACK1 = "Sipariş: 4711"; // ek açıklama 1..16
// 3) Kalemler
FatKalem kalem = fatura.kalemYeni("STK001"); // stok kodu
kalem.DEPO_KODU = 1;
kalem.STra_GCMIK = 10; // miktar
kalem.STra_BF = 125.50; // brüt birim fiyat
kalem.STra_NF = 125.50; // net birim fiyat
kalem.STra_KDV = 20; // KDV oranı
kalem.STra_SatIsk = 5; // satır iskontosu 1 (%)
// 4) Kaydet
fatura.kayitYeni();
string kaydedilenNo = ust.FATIRS_NO; // Netsis numarayı değiştirmiş olabilir
Numara değişebilir.
YeniNumaraile alınan numara, kayıt anında başka bir kullanıcı aynı numarayı kullandıysa Netsis tarafından ilerletilir. Her zamankayitYeni()sonrasıust.FATIRS_NO'yu okuyun.
Hesaplama bayrakları
kayitYeni() öncesi Fatura nesnesinde ayarlanır:
| Özellik | Etkisi |
|---|---|
KosulluHesapla |
Koşul (kampanya, iskonto) tanımlarına göre hesapla |
FiyatSistemineGoreHesapla |
Fiyat listesinden fiyat getir |
StokKartinaGoreHesapla |
Stok kartındaki fiyat/KDV ile hesapla |
RiskKontrol |
Cari risk limitini kontrol et; aşılırsa kayıt hata verir |
Toplamları kaydetmeden görmek için fatura.HesaplamalariYap() çağrılır; sonra FatUst üzerindeki toplam alanları okunabilir.
FatUst alanları
| Alan | Tablo kolonu | Açıklama |
|---|---|---|
FATIRS_NO |
FATIRS_NO |
Belge no (15 karakter) |
GIB_FATIRS_NO |
GIB_FATIRS_NO |
GİB (e-fatura/e-arşiv) numarası, 16 karakter |
CariKod |
CARI_KODU |
Cari. Ambar fişinde masraf merkezi kodu yazılır |
CARI_KOD2 |
CARI_KOD2 |
Farklı teslim (teslim carisi) |
Tarih |
TARIH |
Belge tarihi |
FiiliTarih |
Fiili sevk/teslim tarihi | |
ENTEGRE_TRH |
Muhasebe entegrasyon tarihi | |
SIPARIS_TEST |
SIPARIS_TEST |
Sipariş teslim tarihi |
FIYATTARIHI, KOSULTARIHI, DovBazTarihi |
Fiyat, koşul ve döviz baz tarihleri | |
TIPI |
TIPI |
TFaturaTipi: açık, kapalı, iade, ihracat… |
KDV_DAHILMI |
KDV_DAHILMI |
Fiyatlar KDV dahil mi |
PLA_KODU |
PLA_KODU |
Plasiyer |
Proje_Kodu |
PROJE_KODU |
Proje |
KOD1, KOD2 |
KOD1, KOD2 |
Özel kodlar |
KOSVADEGUNU |
KOSVADEGUNU |
Vade günü |
EKACK1 … EKACK16 |
TBLFATUEK.ACIK1..16 |
Ek açıklamalar |
EIrsaliye |
true: e-irsaliye olarak işaretle |
|
EfaturaCarisiMi |
Salt okunur; cari e-fatura mükellefi mi | |
EFatOzelKod |
E-fatura istisna/özel kodu (ör. KDV istisna kodu) | |
AMBHARTUR |
Ambar hareket türü (TAmbarHarTur) |
|
CikisYeri |
Ambar çıkış yeri (TCikisYeri) |
|
FAT_ALTM1, FAT_ALTM2 |
FAT_ALTM1/2 |
Fatura alt maliyet tutarları |
FatKalem alanları
| Alan | Tablo kolonu | Açıklama |
|---|---|---|
(kurucu) kalemYeni(stokKodu) |
STOK_KODU |
Stok kodu |
STra_GCMIK |
STHAR_GCMIK |
Miktar |
STra_BF |
STHAR_BF |
Brüt birim fiyat |
STra_NF |
STHAR_NF |
Net birim fiyat |
STra_KDV |
STHAR_KDV |
KDV oranı |
STra_SatIsk, STra_SatIsk2 … STra_SatIsk6 |
STHAR_SATISK… |
Satır iskontoları |
STra_DOVTIP, STra_DOVFIAT |
STHAR_DOVTIP, STHAR_DOVFIAT |
Döviz tipi ve dövizli fiyat |
Olcubr |
OLCUBR |
Ölçü birimi sırası (1, 2, 3) |
DEPO_KODU |
DEPO_KODU |
Depo (çıkış deposu) |
Gir_Depo_Kodu |
Depolar arası transferde giriş deposu | |
ProjeKodu |
PROJE_KODU |
Kalem proje kodu |
MuhasebeKodu |
MUH_KODU |
Kalem muhasebe kodu (ambar fişlerinde) |
Ekalan, Ekalanneden |
EKALAN, EKALAN_NEDEN |
Ek alan. Ekalanneden = "1" iken Ekalan kalem açıklaması (ör. hizmet kartında satır adı) olarak basılır |
STra_SatIskilk iskontodur. NetsisQuick'in eski bir sürümünde üç iskonto daSTra_SatIsk'e yazılıp birbirini ezmişti; 2. ve 3. iskonto içinSTra_SatIsk2,STra_SatIsk3kullanın.
Barkoddan stok kodu bulmak
kalemYeni stok kodu ister. Elinizde barkod varsa önce SQL ile çevirin:
SELECT STOK_KODU FROM TBLSTSABIT WHERE BARKOD1 = @barkod
Mevcut belgeyi okumak
Fatura fatura = kernel.yeniFatura(sirket, TFaturaTip.ftSatTeklif);
fatura.OkuUst("000000000088886", "120-01-001"); // belge no, cari kod
fatura.OkuKalem();
FatUst ust = fatura.Ust();
for (int i = 0; i < fatura.KalemAdedi; i++)
{
FatKalem k = fatura.get_Kalem(i); // C#'ta indeksli özellik; VB/Delphi'de fatura.Kalem(i)
Console.WriteLine($"{k.StokKodu} {k.STra_GCMIK} x {k.STra_BF}");
}
OkuUst belge numarası ve cari kodu ister, çünkü aynı numara farklı carilerde tekrar edebilir. Belge bulunamazsa hata fırlar ve kernel.SonNetsisHata.Kod 401 olur (Hatalar).
Logo'nun örneğinde bu okuma deseniyle bir faturayı başka bir şirkete kopyalama da gösterilir: kaynak kalemlerden STra_GCMIK, STra_GCMIK2, CEVRIM, STra_TAR, STra_NF, STra_BF, STra_IAF, STra_KDV, DEPO_KODU hedef faturanın kalemYeni(stokKodu) satırına aktarılır.
Belgeyi silmek
Fatura irsaliye = kernel.yeniFatura(sirket, TFaturaTip.ftSIrs);
irsaliye.OkuUst(irsaliyeNo, cariKod);
irsaliye.OkuKalem();
irsaliye.kayitSil();
Silme, ekrandan silmede olduğu gibi belgeye bağlı stok ve cari hareketlerini de kaldırır. E-belgesi gönderilmiş ya da faturalanmış bir irsaliyeyi silmeyin; önce bağlı belgeyi ele alın.
Belgeyi düzeltmek
Okunan belgede alan değiştirip kayitDuzelt() çağrılır (metot NetsisQuick'te yorum satırı olarak geçer; davranışı doğrulanmadı):
fatura.OkuUst(no, cari);
fatura.OkuKalem();
fatura.Ust().Tarih = new DateTime(2024, 5, 1);
fatura.kayitDuzelt();
E-irsaliye olarak kaydetmek
E-irsaliye numarası farklı bir metotla alınır ve taşıma bilgisi eklenir:
Fatura irs = kernel.yeniFatura(sirket, TFaturaTip.ftSIrs);
FatUst ust = irs.Ust();
ust.EIrsaliye = true;
ust.FATIRS_NO = irs.YeniEIrsaliyeNumara("EIR"); // e-irsaliye serisi (TBLEIRSSERI)
ust.CariKod = cariKod;
ust.Tarih = DateTime.Today;
IEIrsEkBilgi ek = irs.EIrsaliyeEkYeni();
ek.PLAKA = "34ABC123";
ek.TASIYICIVKN = "1234567890";
ek.TASIYICIADI = "Taşıyıcı A.Ş.";
ek.TASIYICIIL = "İstanbul";
ek.TASIYICIILCE = "Tuzla";
ek.TASIYICIULKE = "TR";
ek.TASIYICIPOSTAKODU = "34940";
ek.SOFOR1ADI = "Ad"; ek.SOFOR1SOYADI = "Soyad"; ek.SOFOR1TCKN = "11111111111";
ek.SEVKTAR = DateTime.Now;
ek.DORSEPLAKA1 = "34XYZ99";
FatKalem k = irs.kalemYeni("STK001");
k.STra_GCMIK = 5; k.DEPO_KODU = 1;
irs.kayitYeni();
IEIrsEkBilgi ayrıca SOFOR2…, SOFOR3…, SOFOR1ACIKLAMA, DORSEPLAKA2, DORSEPLAKA3 alanlarını taşır. Taslak oluşturma ve gönderim için E-belge.
Excel'den toplu belge (NetsisQuick deseni)
NetsisQuick, Excel satırlarını kalemlere çevirir. Satır başına beklenen kolonlar:
| Excel kolonu | Hedef |
|---|---|
StokKodu ya da Barkod |
kalemYeni(...) |
Adet |
STra_GCMIK |
BrutFiyat, NetFiyat |
STra_BF, STra_NF |
Iskonto1..3 |
STra_SatIsk, STra_SatIsk2, STra_SatIsk3 |
StokAdi |
Ekalanneden = "1", Ekalan = StokAdi |
EkAck1..16 (ilk satır) |
FatUst.EKACK1..16 |
MuhasebeKodu |
MuhasebeKodu (ambar fişi) |
NetsisQuick yalnızca dolu hücreleri ilgili alana yazar. Boş fiyatı 0 olarak yazmak, Netsis'in stok kartından ya da fiyat listesinden getireceği fiyatı ezebilir.