Fatura hareketlerinin Update edilmesi

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
kuntay
Üye
Mesajlar: 86
Kayıt: 08 Tem 2003 09:41
Konum: İçel
İletişim:

Fatura hareketlerinin Update edilmesi

Mesaj gönderen kuntay »

Aslında ben bu konuyu yazdım sonra kayboldu inşallah garip biryerlere gitmemiştir yazdığım konu
Eğer öyle oldu ise sayın forum yönetimim af ola :)

Bir program çalışması yapıyorum

fatura
fatura hareketleri

stok fiyat tablosu

şimdi standart fatura sisteminde ne var fatura üst bilgilerini gireriz sonra hareket dbgrid içerisinde hareketleri gireriz sattığımız ürünler yani
eee peki stok kartından bu ürünleri de çektik bize ne kaldı geriye ürün adetini ve fiyatını girmek
Tamam ürün adetini gir ama ürünün fiyatı belli değil ürünü satıyoruz ürün gidiyor ama o gün akşama kadar yapılan tüm satışların tüm ürünlerin fiyatı
akşam belirlenecek fiyat tablosunda tarih stok adı fiyatı alanları var tüm ürünler buraya çekilip fiyatlandırılacak

şimdi hadi bunu bugün kestiğimiz tüm faturalara yansıtalım yansıtmakla bitmiyor ara tutarlar kdv hesaplamaları bunlar yapılacak

ee ben tek tek faturaları açıp yazsam sorun yok ama faturahareket tablosundaki ürünlerin fiyat alanlarını bir seferde doldurmayı hedefliyorum peki
satır bazında da aratutar kdv hesabı ne olacak
ya fatura tablosunda genel toplam ne olacak

Yardım arkadaşlar takıldım kaldım

Son bir soru bir faturayı sildiğiniz zaman hareketlerini nasıl siliyorsunuz bir de bu işte :(
Ol deyince olduran Gönüllerimizi imanla dolduran
Yüce Allahın doksandokuz ismi ile.. Selamın Aleyküm
Kullanıcı avatarı
conari
Üye
Mesajlar: 2102
Kayıt: 27 Nis 2006 03:10
Konum: İstanbul & Gebze Karışık

Re: Fatura hareketlerinin Update edilmesi

Mesaj gönderen conari »

Stok hareketlerinin olduğu tabloda faturatipi,belgenumarası alanları olmalı zorunlu alanlar tabi fatura silindiğinde üst bilgi ile bu satırları yakalayarak bu satırlarıda sileceksiniz.
Kesilmiş bir faturanın fiyatları(tabi basılmış ise) ve tabi fatura üzerinde değişiklik olmaz.
Bir kelimenin anlamını öğretsen bile yeter..
ResimResim
Kullanıcı avatarı
kuntay
Üye
Mesajlar: 86
Kayıt: 08 Tem 2003 09:41
Konum: İçel
İletişim:

Re: Fatura hareketlerinin Update edilmesi

Mesaj gönderen kuntay »

Fatura ve fatura hareket tabloları master detail bağlı
Fatura : F_bilno , Cari kod, Cari Ad, F_no, F_tarih, Ara Tutar, Kdv Tutar, Genel Toplam
Fatura hareket : FH_Bilno, F_Bilno, Stok Kod, Stok Ad, Stok brim, Stok Miktar, fiyat, Kdv, Kdv Tutarı, Ara Tutar, Tarih

Tablo yukardaki şekilde F_Bilno ile birbirine bağlanıyor firebird veritabanı. Peki hangi kod hem fatura tablosundaki aktif kaydı hemde hareket tablosundaki
bağlantılı kayıtları silecek.

Hareket tablosunda neden tarih var derseniz o tarih tablodan çekilip o tarihteki ürünlerin fiyatları
Urün fiyat tablosundan güncellenecek
Urun_fiyat : Tarih, Stok Kod, Atok Ad, Fiyat

işte bu tarihteki hareketleri güncelledik peki ara tutar - kdv tutar ve fatura üstbilgilerindeki toplam tutar genel tutar hesapları nasıl güncellenir.

Ben programı hal müdürlüğü için yapıyorum faturalar basılmıyor ve yasal olarak ürünler fiyatsız sevk ediliyor akşam raic fiyatları belirlenince hareketlere yansıtılıyor zaten müdürlük takip amaçlı giriyor faturaları gerçekte faturalar komisyoncular tarafından işleniyor orası bizi ilgilendirmeyen kısım
Ol deyince olduran Gönüllerimizi imanla dolduran
Yüce Allahın doksandokuz ismi ile.. Selamın Aleyküm
Kullanıcı avatarı
conari
Üye
Mesajlar: 2102
Kayıt: 27 Nis 2006 03:10
Konum: İstanbul & Gebze Karışık

Re: Fatura hareketlerinin Update edilmesi

Mesaj gönderen conari »

Sadece satışsa,

Kod: Tümünü seç

where F_bilno='xxxx' 
ile iki tabloyuda silersin.
veya bir trigger yazıp Fatura on delete de

Kod: Tümünü seç

delete Fatura_hareket where F_bilno='xxxx'
ile detayı da silersin.

fatura harekette bu alanlar olmaz Kdv, Kdv Tutarı, Ara Tutar
KDV oranı olabilir. bu alanlar Viewlerde veya gösterimde hesaplatılır.
İskonto falan olmadığı için işin biraz daha basit gibi.
Bir kelimenin anlamını öğretsen bile yeter..
ResimResim
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Re: Fatura hareketlerinin Update edilmesi

Mesaj gönderen aslangeri »

s.a.
önce ikinci soru.
silme işlemini öncelikle vt yi belirtmemişsin bu durumda bir kaç yöntem önereceğim. uygun olanı seçersin.
1.si triger ile yapabilirsin.(trigerları destekleyenlerde)
faturanın before delete trigerinda faturahareketler tablosuna faturaid sine göre bir delete sql çekersin.
2.eğer vt trigerları desteklemiyorsa bu işlemi delphitarafında faturayı delete etmeden önce aynı sql i çalıştırarak yapabilrsin.
2. foreign key tanımlarken delete action a cascade dersin. (bu forumda var biraz araştırırsan görürsün.)

Gelelim asıl soruna.
Bunun için vt yapın hakkında biraz bilgi sahibi olmamız lazım.
hangi tabloda hangi alanlar var istediğin işlemlerin yapılabilmesi için hangi alanların eklenmesi lazım bi değerlendirme yapılmalı.
ama ben olsam malzemelerin günlük fiyatlarını takip etmek için ayrı bir tablo oluştururdum.
id,stokid,tarih,fiyat alanları olan.
akşam bu tabloya malzemelerin fiyatlarını yazardım.
satır bazında kdv yazmak için her malzemenin kdv oranı stok kartları tablosunda yazar o tablodan malzemenin kdv oranını bulurum.
için bir view oluşturur malzeme fiyatını günlük fiyatlar tablosundan alır kullanıcıyada kdv oranı, iskonto oranı miktar alanlarına göre satırın toplamını bulur bu viewdan çektiğim kayıtları kullanıcıya gösterirdim.
Faturanı toplamı içinde ayrı bir view hazırlar, stok hareketler için hazırladığım view a bir sql çekip sonuçları görürüm.
Bu arada kdv oranlarını stok hareket tablosuna yazdırmak daha akıllıca olabilir binaenaleyh malzemelerin kdv oranları değişirse bizim eski fatura toplamlarıda değişir.
kolay gelsin.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Kullanıcı avatarı
kuntay
Üye
Mesajlar: 86
Kayıt: 08 Tem 2003 09:41
Konum: İçel
İletişim:

Re: Fatura hareketlerinin Update edilmesi

Mesaj gönderen kuntay »

Sayın Aslangari kardeşim verdiğin bilgiler için çok saol aslında soruma tam bakamamışsın

Ben aşağıda biraz daha detay bilgi verdim ilk sorumdan sonra:
  • Fatura ve fatura hareket tabloları master detail bağlı
    Fatura : F_bilno , Cari kod, Cari Ad, F_no, F_tarih, Ara Tutar, Kdv Tutar, Genel Toplam
    Fatura hareket : FH_Bilno, F_Bilno, Stok Kod, Stok Ad, Stok brim, Stok Miktar, fiyat, Kdv, Kdv Tutarı, Ara Tutar, Tarih

    Tablo yukardaki şekilde F_Bilno ile birbirine bağlanıyor firebird veritabanı.
    Hareket tablosunda neden tarih var derseniz o tarih tablodan çekilip o tarihteki ürünlerin fiyatları
    Urün fiyat tablosundan güncellenecek

    Urun_fiyat : Tarih, Stok Kod, Atok Ad, Fiyat
Veritabanımı belirtmiştim Firebird diye tablo yapılarımıda kısaltarak yazdım

FAtura - diye bir tablom var bu tablo fatura genel bilgileri üst bilgileri tutan
fatura hareket - Bu tablo stok hareketlerini işlediğim tablo
urun fiyat - bu tablo günlük fiyatları girmeyi düşündüğüm tablo

şimdi Aslangari normal bir program düşün satış faturası sadece ve fatura girişi yapıyorsun
hesaplama fatura giriş ve kaydetme anında yapılıyor sorun yok

peki sonra fatura hareket tablosundaki fiyat değerlerini değiştirirsem ozaman yaptığım hesaplamalar nasıl bundan etkilenecek
Bu arada ben hiç view gibi bir mantık kullanmadım nasıl bilmiyorum şimdi araştıracağım
Ol deyince olduran Gönüllerimizi imanla dolduran
Yüce Allahın doksandokuz ismi ile.. Selamın Aleyküm
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Re: Fatura hareketlerinin Update edilmesi

Mesaj gönderen aslangeri »

s.a.
sanırım ben mesaj yazarken sen ikinci mesajını atmışsın ondan görmedim. Mesajlara toplu halde baktığım için böyle bir sıkıntı oldu sanırım.
@conarinin mesajını gördüm ancak senin mesajını farketmedim.

soruya dönecek olursak
faturanın aratoplam,kdv,tutar,aratutar alanlarını calculated alan olarak yaparsan fatura toplamı ile ilgili bir problemin kalmaz.
aynı şekilde fatura hareketleri tablosunda da birimfiyat,kdvtutari ,ara tutar alanlarinida calc yaptığın zaman sanırım problem hallolur.
dur bak bi deneme yapıyım ben bitince haber veririm.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Re: Fatura hareketlerinin Update edilmesi

Mesaj gönderen aslangeri »

s.a.
evet dediğim şekilde oluyor. gerçi birim fiyatını alırken direk tablodan cekemedim onun yerine bir sp yapıp ordan çektim.
önce birim fiyatları almak için bir sp yapalım.

Kod: Tümünü seç

CREATE PROCEDURE BF_VER (
    STOKID INTEGER,
    TARIH DATE)
RETURNS (
    FIYAT DOUBLE PRECISION)
AS
begin
  SELECT FIYAT FROM GUNLUKFIYATLAR
  WHERE TARIH=:TARIH AND STOKID=:STOKID
  INTO :FIYAT;
  suspend;
end
sonra faturahareketleri tablosundaki alanlarımızı oluşturalım.
ben ddl ini gönderiyorum

Kod: Tümünü seç

BIRIMFIYATI  COMPUTED BY ((SELECT FIYAT FROM BF_VER(STOKID,TARIH))),
    ARATUTAR     COMPUTED BY (BIRIMFIYATI*MIKTAR),
    KDVTUTAR     COMPUTED BY ((ARATUTAR*KDVORANI)/100),
    TOPLAM       COMPUTED BY (ARATUTAR+KDVTUTAR)
aslında ilk başta birimfiyatını

Kod: Tümünü seç

BIRIMFIYATI  COMPUTED BY ((select g.fiyat
from gunlukfiyatlar g
where g.tarih=tarih and g.stokid=stokid))
şeklinde almıştım ama bu nedense tüm malzemeler için aynı fiyatı dönderdi bende sp yaptım.
sonrada fatura tablosunda değişikliğimizi yapıyoruz.

Kod: Tümünü seç

    ARATUTAR  COMPUTED BY ((SELECT SUM(ARATUTAR) FROM FATURAHAREKET
WHERE FATURAID=ID)),
    KDVTUTAR  COMPUTED BY ((SELECT SUM(KDVTUTAR)FROM FATURAHAREKET
WHERE FATURAID=ID)),
    TOPLAM    COMPUTED BY ((SELECT SUM(TOPLAM) FROM FATURAHAREKET
WHERE FATURAID=ID))
işlem tamam.
artık fiyatlarımız otomatik olarak hesaplanıyor.
şimdi önceden yazdığım programlarda bunu niye kullanmadım diye düşünüp duruyorum.

Unutmaman gereken bir nokta var oda güncellemeler. fiyatlarda yaptığın değişikliği anında görebilmek için tabloyu bi refresh yapman lazım.
kolay gelsin.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Kullanıcı avatarı
kuntay
Üye
Mesajlar: 86
Kayıt: 08 Tem 2003 09:41
Konum: İçel
İletişim:

Re: Fatura hareketlerinin Update edilmesi

Mesaj gönderen kuntay »

fiyatları aldığın sp yi nerde tetikletiyorsun
onu bir türlü analayamadım

şimdi bende bir deneme yapacam

hatta eğer örneği kendi programın üzerinde değilde geçici bir şey yazıp yaptıysan incelemem mümkün mü
Ol deyince olduran Gönüllerimizi imanla dolduran
Yüce Allahın doksandokuz ismi ile.. Selamın Aleyküm
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Re: Fatura hareketlerinin Update edilmesi

Mesaj gönderen aslangeri »

fatura hareketleri tablosundaki birimfiyatı alanında onu kullanıyorum.
bunları bir test fdb sinde yaptım.
dur onuda ekleyim yalnız onda birim fiyatı ile biraz uğraşmıştım karışık olabilir.
calculated alan üzerinde sonradan değişiklik yapamadım. bende yeni alan oluşturdum. sen enson bf2 yi kullan test fdbsinde.
Dosya ekleri
TEST.rar
(35.23 KiB) 110 kere indirildi
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Kullanıcı avatarı
kuntay
Üye
Mesajlar: 86
Kayıt: 08 Tem 2003 09:41
Konum: İçel
İletişim:

Re: Fatura hareketlerinin Update edilmesi

Mesaj gönderen kuntay »

S.A.
Aslangari kardeşim süper bir çalışma olmuş eline sağlık.

Bir şey üzerinde çalışıyorum şimfi fiyat alanı calculated alan yaptık ama oldu ya faturanın birinde elle müdehale etmek istedik ozaman
ne olacak yani standart bir fatura kesme işlemi yapacak olsak fiyatı elle giremeyeceğiz

dünden beri uğraşıyorum hatta elle girince akşam fiyat güncellemesi yaptığımda nasıl bir kontrol yaparak eğer harekette fiyat işlendiyse
o harekete dokunma gibi bir işlem yaparım diye
Ol deyince olduran Gönüllerimizi imanla dolduran
Yüce Allahın doksandokuz ismi ile.. Selamın Aleyküm
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Re: Fatura hareketlerinin Update edilmesi

Mesaj gönderen aslangeri »

o zaman birim şöyle bir şey yaparız.
tabloya manuel fiyat diye bir alan ekleriz. birim fiyatı alanının değişiminide şöyle yaparız.

Kod: Tümünü seç

(coalesce(manuelfiyat,
(SELECT FIYAT FROM BF_VER(STOKID,TARIH))
))
yalnız burda kullanıcı birim fiyatını iptal etmek istediği zaman manuel fiyat alanını null a set etmemiz lazım.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Kullanıcı avatarı
kuntay
Üye
Mesajlar: 86
Kayıt: 08 Tem 2003 09:41
Konum: İçel
İletişim:

Re: Fatura hareketlerinin Update edilmesi

Mesaj gönderen kuntay »

aslangari arkadaşım merhaba şimdi senin dediğin gibi manuelfiyat diye bir alan tanımladım
gayet güzelde oldu

ve birim fiyat alanını

Kod: Tümünü seç

(coalesce(manuelfiyat,
(SELECT FIYAT FROM BF_VER(STOKID,TARIH))
))
bu şekilde düzenledim.

Bir sorun var fatura üst bilgilerinde hesaplama yaparken mesela Aratutar

Kod: Tümünü seç

ARATUTAR  COMPUTED BY ((SELECT SUM(ARATUTAR) FROM FATURAHAREKET
WHERE FATURAID=ID)),
burda diyoruz ki faturaid ile hareket tablosundaki FK alanını eşleştir ve hareket tablosundaki aratutarları topla fatura tablosundaki faturaid ile eşleşen kayda
yaz ama tüm hareketleri topluyor faturaid ile hareket teki fk id ye hiç bakmıyor gibi

ve bunu

Kod: Tümünü seç

ARATUTAR  COMPUTED BY ((SELECT SUM(ARATUTAR) FROM FATURAHAREKET
WHERE FATURAID=ID)),
    KDVTUTAR  COMPUTED BY ((SELECT SUM(KDVTUTAR)FROM FATURAHAREKET
WHERE FATURAID=ID)),
    TOPLAM    COMPUTED BY ((SELECT SUM(TOPLAM) FROM FATURAHAREKET
WHERE FATURAID=ID))
tümünde aynı şekilde yapıyor hareket tablosundaki tüm kayıtlardan toplam çekiyor
buda tüm faturaların fatura üst bilgi değerlerini yanlış hesaplamasına neden oldu

ama kodlarda hata yok sorun nerde

Bu arada hareket tabloları gayet güzel işliyor
Ol deyince olduran Gönüllerimizi imanla dolduran
Yüce Allahın doksandokuz ismi ile.. Selamın Aleyküm
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Re: Fatura hareketlerinin Update edilmesi

Mesaj gönderen aslangeri »

s.a.
alan isimlerinden kaynaklanıyordur. faturada ve fatura hareketler tablosunda aynı isimli alanlar olduğu zaman karşıtırabilri.
alanların önüne hangi tablodan alınacağını belirtirseniz büyük ihtimalle sorun hallolur.
kolay gelsin.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Cevapla