Stok cari
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
-
- Üye
- Mesajlar: 28
- Kayıt: 22 Eki 2017 11:05
Stok cari
Merhaba Arkadaşlar Projemi Tekrar paylaşmak istiyorum
Yardımlarınıza ihtiyacım var
1.Fatura bölümünde kdv hesapladım ama bunu dip toplama atamadım atıyorum ama her girdiğimde tutar değişiyor
2. Faturanın genel toplamını carihareket işlemesini istiyorum Fatura Tarihi, Belge No, Gibi
Bu kısmı öğrenirsem ilerliyecegime inanıyorum Lütfen yardım edin
Veri tabanı Firbird
Fatura silme işlemini çözdüm faturayı sildigimde o faturada girilen stokları siliyor onu veri tabanı kısmında yaptım o faturaya id ait olan stokları siliyor
Yardımlarınıza ihtiyacım var
1.Fatura bölümünde kdv hesapladım ama bunu dip toplama atamadım atıyorum ama her girdiğimde tutar değişiyor
2. Faturanın genel toplamını carihareket işlemesini istiyorum Fatura Tarihi, Belge No, Gibi
Bu kısmı öğrenirsem ilerliyecegime inanıyorum Lütfen yardım edin
Veri tabanı Firbird
Fatura silme işlemini çözdüm faturayı sildigimde o faturada girilen stokları siliyor onu veri tabanı kısmında yaptım o faturaya id ait olan stokları siliyor
- Dosya ekleri
-
- PKTS.rar
- (209.88 KiB) 173 kere indirildi
Re: Stok cari
Merhaba,
* Fatura işlemlerinde trigger işinizi çok kolaylaştırır.
* Cari harekette KDV alanı ekleyin. Stok hareketlerinde KDV'yi 2 haneye yuvarlayarak ekleyin ve bunları toplayın. Toplam her seferinde değişmez. Eğer harekette değişiklik yaparsanız, yine gidip KDV'yi güncelleyin.
Kolay gelsin.
* Fatura işlemlerinde trigger işinizi çok kolaylaştırır.
* Cari harekette KDV alanı ekleyin. Stok hareketlerinde KDV'yi 2 haneye yuvarlayarak ekleyin ve bunları toplayın. Toplam her seferinde değişmez. Eğer harekette değişiklik yaparsanız, yine gidip KDV'yi güncelleyin.
Kolay gelsin.
-
- Üye
- Mesajlar: 28
- Kayıt: 22 Eki 2017 11:05
Re: Stok cari
Malesef hocam çözemedim yadimci olabilirmisiniz
-
- Üye
- Mesajlar: 28
- Kayıt: 22 Eki 2017 11:05
Re: Stok cari
Konu hakkında yardımlarınıza ihtiyacım var konu başında projem mevcut kaynak kodlar yazılı
-
- Üye
- Mesajlar: 28
- Kayıt: 22 Eki 2017 11:05
Re: Stok cari
Akdaslar yardımını bekliyorum projem ekli tam 5 gündür ne yaptıysam çözemedim
-
- Üye
- Mesajlar: 28
- Kayıt: 22 Eki 2017 11:05
Re: Stok cari
Yardım arkadaşlar fatura toplamını veremedim birde stok fatura başlığını cari harekete nasıl atarım bunla ilgi örnek bir yazılım varsa oda olur inceleme yapmam için
- Dosya ekleri
-
- PKTS.rar
- (209.88 KiB) 134 kere indirildi
Re: Stok cari
Database dosyasının SQL veya FirebirdSQL 3 uyumlu halini paylaşabilir misiniz?
-
- Üye
- Mesajlar: 28
- Kayıt: 22 Eki 2017 11:05
Re: Stok cari
Data dosya içerisinde mevcut
Re: Stok cari
Dosya içerisinde mevcut olan FirebirSQL 2.5 veya daha önceki sürümlere ait bir database dosyası.
- Database oluşturmak için gerekli SQL komutlarını içeren bir bilgi yok.
- Database dosyasının taşınabilir (transportable) yedeği yok.
- Database dosyasının FirebirdSQL 3.0 uyumlu hali yok.
FirebirdSQL 3.0 uyumlu datbase dosyası veya database dosyasını, GBAK ile oluşturulmuş database yedeği veya database'i sıfırdan oluşturmak için gerekli SQL komutlarını paylaşabilir misiniz?
- Database oluşturmak için gerekli SQL komutlarını içeren bir bilgi yok.
- Database dosyasının taşınabilir (transportable) yedeği yok.
- Database dosyasının FirebirdSQL 3.0 uyumlu hali yok.
FirebirdSQL 3.0 uyumlu datbase dosyası veya database dosyasını, GBAK ile oluşturulmuş database yedeği veya database'i sıfırdan oluşturmak için gerekli SQL komutlarını paylaşabilir misiniz?
-
- Üye
- Mesajlar: 28
- Kayıt: 22 Eki 2017 11:05
Re: Stok cari
TPL_CRHAREKET ve ilgili generator bilgileri dosya içinde mevcut değil. Bunun dışında unutulmuş tablo veya başka bir tanımda olabilir.
Mümkünse aşağıdaki komutu çalıştırıp oluşan dosyayı sıkıştırarak paylaşabilir misiniz?
Öncelikle DOS komut satırına girin. data.fdb olan dizine gelin. Aşağıdaki komutu çalıştırın.
gbak.exe dosyası search path içinde değil ise aşağıdaki gibi bir komut çalıştırmanız gerekebilir
Mümkünse aşağıdaki komutu çalıştırıp oluşan dosyayı sıkıştırarak paylaşabilir misiniz?
Öncelikle DOS komut satırına girin. data.fdb olan dizine gelin. Aşağıdaki komutu çalıştırın.
Kod: Tümünü seç
gbak -t -user SYSDBA -password masterkey DATA.FDB data.fbk
Kod: Tümünü seç
C:\Program Files\Firebird\Firebird_2_5\bin\gbak -t -user SYSDBA -password masterkey DATA.FDB data.fbk
-
- Üye
- Mesajlar: 28
- Kayıt: 22 Eki 2017 11:05
Re: Stok cari
Malesef hocam dediğiniz işlemleri yapamadım fazla bir tablo yok içerisinde yeniden oluşturan bilir yada başka veri tabanına geçebiliriz
Re: Stok cari
TPL_CRHAREKET tablosu SQL komutunu paylaşabilir misiniz?
-
- Üye
- Mesajlar: 28
- Kayıt: 22 Eki 2017 11:05
Re: Stok cari
Merhaba,
Uygulamanızda yapısal hatalar mevcut. Bunları yeniden kurgulamadan ilerlemeniz çok güç. İlk etapta gözüme çarpanlar:
1- Kullandığınız formların tamamını uygulama ilk çalıştığı anda otomatik oluşturuyorsunuz. Bu sizin kontrolünüzü oldukça zorlaştırır. Kullanıcı kayıt giriş işlemi ortasında iken işlemi yarıda bırakıp başka ekrana geçmesi ve geri gelmesi halinde mevcut kontrolleriniz çok yetersiz kalacak ve sorunlar yaşayacaksınız.
Bunun yerine otomatik oluşturulan form sadece ana form olup kullanmak istediği ekranı seçen kullanıcıya ilgili ekranı hafızada oluşturup gösterir iseniz ve kapattığında hafızadan siler iseniz şu anda kullanılan kodu yorumladığım kadarıyla sorun yaşadığınız transaction, kayıt giriş modunda olma vb. konularını çok rahat bir şekilde yönetebilirsiniz.
2- Uygulama açılır açılmaz bütün tabloları açıyorsunuz. Database kullanımı açısından sadece ihtiyacınız olan veriye erişim sağlamanız uygulamanın performansını ve database sisteminin çok daha sağlıklı çalışmasını sağlar. Bu kullanım alışkanlığınız yüksek ihtimalle yukarıdaki kullanım alışkanlığınızdan kaynaklanıyor. İkisini birden değiştirmenizde fayda var.
3- Database bileşeni olarak Query yerine Table tercih ediyorsunuz. Aslında SQL tabanlı database sistemleri için kullanılan Table bileşenleri arka planda Query bileşeni kullanır. Esas farkı ilgili tablo içindeki tüm veriyi açıyor olmasıdır. İlerleyen zamanlarda stok hareket tablosu kayıt sayısı arttıkça tablonun açılma süresi bir o derece yavaşlayacaktır. Mümkün olan her yerde Query bileşeni kullanmanızda fayda var. Query bileşenleri de (içindeki SQL komutu bu noktada önemlidir) sizin Append(), Edit(), Post(), Delete() metodlarını kullanmanıza izin verirler.
4- Master/Detail yapıyı anlayamamış gözüküyorsunuz. Zira Satış Faturası ekranında tblStok bileşeni DataSet bağlantısı DM.StokHRBaslik olarak seçilmiş. Ancak içine girilen kayıtlar ekranın altındaki DBGrid kayıtları. Diğer bir deyiş ile detay kayıtları. Yani detay ve başlık kayıtları karışmış gibi.
Öncelikle master/detail yapı nedir? Nasıl kullanılır? İki tablo arasındaki ilişki nasıl kurulur üzerine çalışmanızı öneririm. İlginç bir şekilde Database içinde master/detail için gerekli alt yapı kurulu olduğu halde uygulama içinde bunu oturtamamışsınız gözüküyor.
5- Günümüz uygulamalarında kaydet demeden önce kaydedililecek bilgilerin neler olduğunu kullanıcılar görmek isterler. Sizin uygulamanızda hesaplamalar kaydet butonu tıklandıktan sonra veya detay bilgi girilir iken ikinci satır bilgi girilmek istenildiği sırasında yapılıyor. DBGrid.DataSource.OnDataChange() olayını kullanarak aşağıdaki gibi hesaplamayı anlık yaptırmanız mümkün olabilir. Örnek içinde değerlerin sıfır olması veya NULL olması halinde gerekli kontroller yoktur. Bunları eklemeniz gerekir.
6- Kullanım alışkanlığınız "TDataSet.Field.Value" kullanarak değer okumak ve kaydetmek şeklinde. Bunu ilgili veri türlerine göre aşağıdaki gibi değiştirmenizde büyük faydalar var. Sadece NULL kullanımı gereken yerlerde VALUE kullanarak atama yapmanızı tavsiye ederim.
Bunlar dışında aşağıdaki konulara da dikkat etmelisiniz.
A- Ana form kapatılması kontrolü hatalı. Kapatmak *istemiyorum* seçildiği zaman uygulama kapatılıyor. Kodunuzu aşağıdaki şekilde düzeltebilirsiniz. Ekstra "C" değişkeni kullanmanıza gerek yok.
B- Kullandığınız TJvMemoryData bileşeni Delphi 10.2 ile sorun çıkarıyor (Access Violation hatası veriyor). Bunun yerine farklı bir Memory Table bileşeni kullanmanızı öneririm. En çok bilinenlerden bir tanesi kbmMemoryTable bileşenidir.
C- Kullandığınız Delphi sürümü günümüzde çok eski. Mümkün ise en son sürümlerden bir tanesine geçmenizde büyük faydalar var. Yeni sürümlerin belli "edition" seçeneğinde bulunan FireDAC bileşenleri birçok farklı database sistemine erişebilme dışında kullanabileceğiniz bir MemoryTable bileşeni de içermektedir.
D- Kullandığınız database sistemi yerine ETA, LOGO gibi firmaların da kullandıkları SQL Server Express (ticari kullanımı ücretsiz) database sistemi kullanabilirsiniz. SQL Server dünya genelinde en çok kullanılan database sistemleri içinde 2-3 sıralardadır. (Kaynak: https://db-engines.com/en/ranking) Bunun dışında PostgreSQL, MySQL gibi günümüzde daha çok tercih edilen ve özellik olarak daha ileri database sistemlerine geçebilirsiniz. Eğer alışkanlık ve bilgi birikimi olarak FirebirdSQL sizin için daha rahat ise en son sürüm olan 3.0 sürüme geçmenizi şiddetle tavsiye ederim.
Yukarıdaki tavsiyeler ışığında alt yapısı çok daha sağlıklı bir uygulama geliştirebilirsiniz.
Uygulamanızda yapısal sorunlar olması sebebi ile esas sorunuza cevap vermek mümkün olamıyor. Zira esas sorunuzu düzeltmek için uygulama arka plan kodlarını ciddi derecede değiştirmek gerekiyor ki bunu yapmak sizin göreviniz.
Son tavsiye olarak; sorularınızı mümkün olduğunca spesifik olarak sormanızda fayda var. Böylece bütün projeyi paylaşmadan (ki birçok kişi için bütün bir proje incelemek kavramı dahi sorunuza detaylı şekilde bakmasına engel olur) sadece ilgili bölümün kodunu paylaşarak ve her soru sorduğunuzda sorunun ne olduğunu, yaptığınız denemeleri, aldığınız hata mesajlarını, kullandığınız Delphi sürümü vb. bilgileri ekleyerek sormanızı öneririm.
Uygulamanızda yapısal hatalar mevcut. Bunları yeniden kurgulamadan ilerlemeniz çok güç. İlk etapta gözüme çarpanlar:
1- Kullandığınız formların tamamını uygulama ilk çalıştığı anda otomatik oluşturuyorsunuz. Bu sizin kontrolünüzü oldukça zorlaştırır. Kullanıcı kayıt giriş işlemi ortasında iken işlemi yarıda bırakıp başka ekrana geçmesi ve geri gelmesi halinde mevcut kontrolleriniz çok yetersiz kalacak ve sorunlar yaşayacaksınız.
Bunun yerine otomatik oluşturulan form sadece ana form olup kullanmak istediği ekranı seçen kullanıcıya ilgili ekranı hafızada oluşturup gösterir iseniz ve kapattığında hafızadan siler iseniz şu anda kullanılan kodu yorumladığım kadarıyla sorun yaşadığınız transaction, kayıt giriş modunda olma vb. konularını çok rahat bir şekilde yönetebilirsiniz.
2- Uygulama açılır açılmaz bütün tabloları açıyorsunuz. Database kullanımı açısından sadece ihtiyacınız olan veriye erişim sağlamanız uygulamanın performansını ve database sisteminin çok daha sağlıklı çalışmasını sağlar. Bu kullanım alışkanlığınız yüksek ihtimalle yukarıdaki kullanım alışkanlığınızdan kaynaklanıyor. İkisini birden değiştirmenizde fayda var.
3- Database bileşeni olarak Query yerine Table tercih ediyorsunuz. Aslında SQL tabanlı database sistemleri için kullanılan Table bileşenleri arka planda Query bileşeni kullanır. Esas farkı ilgili tablo içindeki tüm veriyi açıyor olmasıdır. İlerleyen zamanlarda stok hareket tablosu kayıt sayısı arttıkça tablonun açılma süresi bir o derece yavaşlayacaktır. Mümkün olan her yerde Query bileşeni kullanmanızda fayda var. Query bileşenleri de (içindeki SQL komutu bu noktada önemlidir) sizin Append(), Edit(), Post(), Delete() metodlarını kullanmanıza izin verirler.
4- Master/Detail yapıyı anlayamamış gözüküyorsunuz. Zira Satış Faturası ekranında tblStok bileşeni DataSet bağlantısı DM.StokHRBaslik olarak seçilmiş. Ancak içine girilen kayıtlar ekranın altındaki DBGrid kayıtları. Diğer bir deyiş ile detay kayıtları. Yani detay ve başlık kayıtları karışmış gibi.
Öncelikle master/detail yapı nedir? Nasıl kullanılır? İki tablo arasındaki ilişki nasıl kurulur üzerine çalışmanızı öneririm. İlginç bir şekilde Database içinde master/detail için gerekli alt yapı kurulu olduğu halde uygulama içinde bunu oturtamamışsınız gözüküyor.
5- Günümüz uygulamalarında kaydet demeden önce kaydedililecek bilgilerin neler olduğunu kullanıcılar görmek isterler. Sizin uygulamanızda hesaplamalar kaydet butonu tıklandıktan sonra veya detay bilgi girilir iken ikinci satır bilgi girilmek istenildiği sırasında yapılıyor. DBGrid.DataSource.OnDataChange() olayını kullanarak aşağıdaki gibi hesaplamayı anlık yaptırmanız mümkün olabilir. Örnek içinde değerlerin sıfır olması veya NULL olması halinde gerekli kontroller yoktur. Bunları eklemeniz gerekir.
Kod: Tümünü seç
procedure TFaturaSatis.dsDetayDataChange(Sender: TObject; Field: TField);
begin
if Field.DataSet.State in [dsEdit, dsInsert] then
begin
tblStokTOPLAM_TUTAR.Value := tblStokMIKTAR.Value * tblStokBIRIM_FIYAT.Value; // Burada Adet İle Birimi Çaptırdım
tblStokISKTUTAR.Value := tblStokTOPLAM_TUTAR.Value * (tblStokISKONTOYUZDESI.Value)/ 100 ; // Burada Toplam Ne kadar İskonto Yaptığını Gösterdim
tblStokTOPLAM_TUTAR.Value := tblStokTOPLAM_TUTAR.Value * (100 - tblStokISKONTOYUZDESI.Value)/ 100 ; // Burada İskontodan Sonra Kalan Tutar Çıktı
tblStokKDVTUTAR.Value := tblStokTOPLAM_TUTAR.Value *(tblStokKDV_YUZDESI.Value / 100); // Buda Ne Kadar Kdv Olduğunu Hesapladı
end;
end;
Kod: Tümünü seç
procedure TFaturaSatis.dsDetayDataChange(Sender: TObject; Field: TField);
begin
if Field.DataSet.State in [dsEdit, dsInsert] then
begin
tblStokTOPLAM_TUTAR.AsFloat := tblStokMIKTAR.AsFloat * tblStokBIRIM_FIYAT.AsFloat; // Burada Adet İle Birimi Çaptırdım
tblStokISKTUTAR.AsFloat := tblStokTOPLAM_TUTAR.AsFloat * (tblStokISKONTOYUZDESI.AsFloat) / 100 ; // Burada Toplam Ne kadar İskonto Yaptığını Gösterdim
tblStokTOPLAM_TUTAR.AsFloat := tblStokTOPLAM_TUTAR.AsFloat * (100 - tblStokISKONTOYUZDESI.AsFloat)/ 100 ; // Burada İskontodan Sonra Kalan Tutar Çıktı
tblStokKDVTUTAR.AsFloat := tblStokTOPLAM_TUTAR.AsFloat *(tblStokKDV_YUZDESI.AsFloat / 100); // Buda Ne Kadar Kdv Olduğunu Hesapladı
end;
end;
Bunlar dışında aşağıdaki konulara da dikkat etmelisiniz.
A- Ana form kapatılması kontrolü hatalı. Kapatmak *istemiyorum* seçildiği zaman uygulama kapatılıyor. Kodunuzu aşağıdaki şekilde düzeltebilirsiniz. Ekstra "C" değişkeni kullanmanıza gerek yok.
Kod: Tümünü seç
if Application.MessageBox('Program kapatılacak! Emin misiniz?',' Uyarı..?',mb_yesno) = mrYes then
begin
Close();
end;
C- Kullandığınız Delphi sürümü günümüzde çok eski. Mümkün ise en son sürümlerden bir tanesine geçmenizde büyük faydalar var. Yeni sürümlerin belli "edition" seçeneğinde bulunan FireDAC bileşenleri birçok farklı database sistemine erişebilme dışında kullanabileceğiniz bir MemoryTable bileşeni de içermektedir.
D- Kullandığınız database sistemi yerine ETA, LOGO gibi firmaların da kullandıkları SQL Server Express (ticari kullanımı ücretsiz) database sistemi kullanabilirsiniz. SQL Server dünya genelinde en çok kullanılan database sistemleri içinde 2-3 sıralardadır. (Kaynak: https://db-engines.com/en/ranking) Bunun dışında PostgreSQL, MySQL gibi günümüzde daha çok tercih edilen ve özellik olarak daha ileri database sistemlerine geçebilirsiniz. Eğer alışkanlık ve bilgi birikimi olarak FirebirdSQL sizin için daha rahat ise en son sürüm olan 3.0 sürüme geçmenizi şiddetle tavsiye ederim.
Yukarıdaki tavsiyeler ışığında alt yapısı çok daha sağlıklı bir uygulama geliştirebilirsiniz.
Uygulamanızda yapısal sorunlar olması sebebi ile esas sorunuza cevap vermek mümkün olamıyor. Zira esas sorunuzu düzeltmek için uygulama arka plan kodlarını ciddi derecede değiştirmek gerekiyor ki bunu yapmak sizin göreviniz.
Son tavsiye olarak; sorularınızı mümkün olduğunca spesifik olarak sormanızda fayda var. Böylece bütün projeyi paylaşmadan (ki birçok kişi için bütün bir proje incelemek kavramı dahi sorunuza detaylı şekilde bakmasına engel olur) sadece ilgili bölümün kodunu paylaşarak ve her soru sorduğunuzda sorunun ne olduğunu, yaptığınız denemeleri, aldığınız hata mesajlarını, kullandığınız Delphi sürümü vb. bilgileri ekleyerek sormanızı öneririm.