Faturada stok giriş formülleri nasıl olmalı?

mutluluk

Femtopat
Katılım
17 Ocak 2022
Mesajlar
4
Daha fazla  
Cinsiyet
Erkek
Hazırlamakta olduğum c++ Ön Muhasebe Programının fatura kayıt yapıyorum. Fakat VW_STOKHAREKETLERİ ( Normalde stok devir kayıt işlemlerinde görülmesine rağmen ) Fatura kaydı olan Stok Giren yada Çıkan görülmüyor. Kayıt esnasındaki formülleri aşağıya ekliyorum. Ayrıca Fatura dizayn formumu ekledim. Bu forma göre nerede yanlış yaptığım konusunda bilgisi olan varsa lütfen yardımcı olurlar ise sevinirim.
Kod:
              Fonksiyonlar.TBL_STOKHAREKET[] StokHareket = new Fonksiyonlar.TBL_STOKHAREKET[gridView1.RowCount];

                for (int i = 0; i < gridView1.RowCount; i++)

                {

                    StokHareket = new Fonksiyonlar.TBL_STOKHAREKET();

                    StokHareket.STOKID = StokID;

                    StokHareket.FATURAID = FaturaID;

                    StokHareket.CARIID = CariID;

                    StokHareket.EVRAKID = FaturaID;

                    StokHareket.STOKKODU = gridView1.GetRowCellValue(i, "STOKKODU").ToString();

                    StokHareket.STOKADI = gridView1.GetRowCellValue(i, "STOKADI").ToString();

                    StokHareket.TARIH = DateTime.Now;

                    StokHareket.EVRAKNO = txtFaturaNo.Text;

                    StokHareket.ACIKLAMA = txtAciklama.Text;

                    StokHareket.CARIKODU = txtCariKodu.Text;

                    StokHareket.CARIADI = txtCariAdi.Text;

                    StokHareket.BIRIM = gridView1.GetRowCellValue(i, "BIRIM").ToString();

                    StokHareket.MIKTAR = (gridView1.GetRowCellValue(i, "MIKTAR").ToString());

                    StokHareket.BIRIMFIYATI = decimal.Parse(gridView1.GetRowCellValue(i, "BIRIMFIYATI").ToString());

                    StokHareket.STOKKODU = gridView1.GetRowCellValue(i, "STOKKODU").ToString();

                    StokHareket.STOKADI = gridView1.GetRowCellValue(i, "STOKADI").ToString();

                    StokHareket.KDV = gridView1.GetRowCellValue(i, "KDV").ToString();

                    StokHareket.ISK = gridView1.GetRowCellValue(i, "ISK").ToString();

                    //StokHareket.TOPLAM = decimal.Parse(gridView1.GetRowCellValue(i, "TOPLAM").ToString());



                    if (txtFaturaTürü.SelectedIndex == 0)

                    {

                        StokHareket.ISLEMTURU = "ALIŞ FATURASI";

                        if (txtFaturaTürü.SelectedIndex == 0) StokHareket.GCKODU = "G";

                        StokHareket.GIREN = StokHareket.MIKTAR;

                    }

                    if (txtFaturaTürü.SelectedIndex == 1)

                    {

                        StokHareket.ISLEMTURU = "SATIŞ FATURASI";

                        if (txtFaturaTürü.SelectedIndex == 1) StokHareket.GCKODU = "C";

                        StokHareket.CIKAN = StokHareket.MIKTAR;

                    }

                    StokHareket.SAVEDATE = DateTime.Now;

                    StokHareket.SAVEUSER = AnaForm.UserID;

                    DB.TBL_STOKHAREKETs.InsertOnSubmit(StokHareket);

                    DB.SubmitChanges();

                }
 

Dosya Ekleri

  • 1.png
    1.png
    141,7 KB · Görüntüleme: 49
Öncelikle bu C++ değil, C#.
Sen bu kodun çalıştığına emin misin. Syntax hatan mevcut. StokHareket değişkenini array olarak tanımlıyorsun sonra normal bir nesne initialize ediyorsun. C# bunu desteklemiyor.

Bir sınıf bu kadar prop değer alması hiç clean bir yaklaşım değil. Sınıfı alt sınıflara bölmelisin.
Ayrıca bazı değişkenler döngü boyunca hep aynı. Bunları döngü dışına alsan daha iyi olur. Sadece ilgili yeri değiştirmen yeterli.
Ayrıca if içlerine yazdığın if ler boş yere yazılmış. Yazdığın ilk if bloğu zaten ikinci if koşulunu sağlıyor. Kısaca içerideki if bloklarına gerek yok.
 
Öncelikle bu C++ değil, C#.
Sen bu kodun çalıştığına emin misin. Syntax hatan mevcut. StokHareket değişkenini array olarak tanımlıyorsun sonra normal bir nesne initialize ediyorsun. C# bunu desteklemiyor.

Bir sınıf bu kadar prop değer alması hiç clean bir yaklaşım değil. Sınıfı alt sınıflara bölmelisin.
Ayrıca bazı değişkenler döngü boyunca hep aynı. Bunları döngü dışına alsan daha iyi olur. Sadece ilgili yeri değiştirmen yeterli.
Ayrıca if içlerine yazdığın if ler boş yere yazılmış. Yazdığın ilk if bloğu zaten ikinci if koşulunu sağlıyor. Kısaca içerideki if bloklarına gerek yok.
Cevabın için teşekkür ederim. Bu kodlar kayıt sırasında çalışıyor ve kaydediyor. SQL Databases de bulunan TBL_STOKHAREKET inde fatura kayıtları görünüyor. Fakat VW_STOKHAREKET inde görülmüyor. Böyle olunca da VW_DURUM da giriş ve çıkışlar görülmediği gibi stok bakiyeyi de etkilemiyor. İf konusuna gelince, aynı tabloyu hem alış ve hem de satış faturası olarak kullanmak üzere formüller yazıldı ve çalışıyor. Faturada bulunan stok hatasının aynısı caride de vardı ama bir şekilde çözdüm. Fakat stok da bir türlü yapamadım. "Sınıfı alt sınıflara bölmelisin" ve Syntax hatası yazmışsınız ama nasıl yapacağım konusunda doğru formülleri yazarsanız memnun olurum.
VW_STOKHAREKETLERI formülleri doğru olmasa stok devir kayıtları görülmez diye düşünüyorum.

VW_STOKHAREKETLERI Tablosu
SELECT dbo.TBL_STOKHAREKET.ID, dbo.TBL_STOKHAREKET.STOKID, dbo.TBL_STOKHAREKET.CARIID, dbo.TBL_STOKHAREKET.FATURAID, dbo.TBL_STOKHAREKET.ISLEMTURU, dbo.TBL_STOKHAREKET.EVRAKID, dbo.TBL_STOKLAR.STOKKODU, dbo.TBL_STOKLAR.STOKADI,
dbo.TBL_CARILER.CARIKODU, dbo.TBL_CARILER.CARIADI, dbo.TBL_STOKHAREKET.EVRAKNO, dbo.TBL_STOKHAREKET.TARIH, dbo.TBL_STOKHAREKET.ACIKLAMA, (CASE WHEN dbo.TBL_STOKHAREKET.GCKODU = 'G' THEN dbo.TBL_STOKHAREKET.MIKTAR ELSE 0 END)
AS GIREN, (CASE WHEN dbo.TBL_STOKHAREKET.GCKODU = 'C' THEN dbo.TBL_STOKHAREKET.MIKTAR ELSE 0 END) AS CIKAN
FROM dbo.TBL_STOKHAREKET LEFT OUTER JOIN
dbo.TBL_STOKLAR ON dbo.TBL_STOKHAREKET.STOKID = dbo.TBL_STOKLAR.ID LEFT OUTER JOIN
dbo.TBL_CARILER ON dbo.TBL_STOKHAREKET.CARIID = dbo.TBL_CARILER.ID LEFT OUTER JOIN
dbo.TBL_FATURALAR ON dbo.TBL_STOKHAREKET.FATURAID = dbo.TBL_FATURALAR.ID

VW_DURUM Tablosu
SELECT dbo.TBL_STOKLAR.ID, SUM(CASE WHEN TBL_STOKHAREKET.GCKODU = 'G' THEN TBL_STOKHAREKET.MIKTAR ELSE 0 END) AS GIREN, SUM(CASE WHEN TBL_STOKHAREKET.GCKODU = 'C' THEN TBL_STOKHAREKET.MIKTAR ELSE 0 END) AS CIKAN,
SUM(CASE WHEN TBL_STOKHAREKET.GCKODU = 'G' THEN TBL_STOKHAREKET.MIKTAR ELSE 0 END) - SUM(CASE WHEN TBL_STOKHAREKET.GCKODU = 'C' THEN TBL_STOKHAREKET.MIKTAR ELSE 0 END) AS MEVCUT
FROM dbo.TBL_STOKLAR LEFT OUTER JOIN
dbo.TBL_STOKHAREKET ON dbo.TBL_STOKLAR.ID = dbo.TBL_STOKHAREKET.STOKID
GROUP BY dbo.TBL_STOKLAR.ID
 

Technopat Haberler

Yeni konular

Geri
Yukarı