taksitlendirme

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Kullanıcı avatarı
aydin038
Üye
Mesajlar: 75
Kayıt: 08 Eki 2003 05:58

taksitlendirme

Mesaj gönderen aydin038 »

herkese merhaba belki cok basit ama tikandim. if for break, falan kullandim. bazi bolumleri iyi fakat.

istedigim; 2. ay icerisinde ornegin adam taksit bedelinin daha fazlasini getirdi. getirdigi takside tekamul eden taksit bedelini aradan temizlemek istedim..

ornegin: sabit taksitler var 10.000 odemeye gore asagidaki gibi olacak.

---tarih-----/---borc--/--odenen
-----------------------------------------
21.01.2003-----10.000----10.000
21.02.2003-----35.000----35.000
21.03.2003------- 0------ 0 //silinecek
21.04.2003------- 0------ 0 // slinecek
21.05.2003------5.000---- // 5.000 eksilecek
21.06.2003-----10.000----
21.07.2003-----10.000----
21.08.2003-----10.000----

yardimlarinizi bekliyorum. herkese kolay gelsin..
sair
Kıdemli Üye
Mesajlar: 288
Kayıt: 16 Haz 2003 04:41
Konum: Kastamonu
İletişim:

Mesaj gönderen sair »

edit kutularının yanına birer chechbox koy. her edite ait bir checkbox olsun. Check box ı işaretli olan editleri hesaplamaya dahil etme ancak son toplama dahil et. Sorun çözülür.
Sevgiler
Kullanıcı avatarı
aydin038
Üye
Mesajlar: 75
Kayıt: 08 Eki 2003 05:58

Mesaj gönderen aydin038 »

sair ilginden dolayi tesekkur ederim..

taksitleri dbgird de tutuyorum. editi sadece giriş esnasinda kullaniyorum.
yanilmıyorsam table uzerinde bir dongu kurmam lazim ki edite girilen rakam eger taksit miktarindan buyuk ise ona gore islem yapsin.
bazi paket programlarda bunlar mevcut ornegin bir vega prg.da soyledigim gibi bir dongu kurmuslar.

kolay gelsin
Kullanıcı avatarı
mussimsek
Admin
Mesajlar: 7601
Kayıt: 10 Haz 2003 12:26
Konum: İstanbul
İletişim:

Mesaj gönderen mussimsek »

Bence en güzeli adamın borçlarını ve ödediklerini ayrı ayrı tutmakta fayda var. Ödediklerinin toplamı, borcunun toplamına eşit olduğu zamanda hesap sıfırlanır.

Belki ödediği kısma bir label koyup, daha önceki borçlarının ve ödediklerinin farkını da koyarsan ona göre eksik alınır. Mesela bu müşteri 15.000.000 TL fazla ödemiştir gibi.

Kolay gelsin.
Kullanıcı avatarı
aydin038
Üye
Mesajlar: 75
Kayıt: 08 Eki 2003 05:58

Mesaj gönderen aydin038 »

Mustafa Bey evvala tesekkur ederim..
ayrica siteniz gercekten baya guzel olmus emegi gecenlerin ellerine saglik.

- sizin soylediginiz gibi ben de dusundum. odenen ve borc kismini ayri tutmayi vs..

- taksitler sabit ama odeme sabit olmamasi durumunda diger taksitleri ona gore degisecek. bu sekilde olmasi gerekiyor.

for i := 1 to table1.RecordCount do
begin
if borc=odenen then

gibi donguler kurdum. bazi kisimlar ok. ama bazi yerlerde problem..

umarim kusuruma bakmazsiniz. kolay gelsin.
Kullanıcı avatarı
mussimsek
Admin
Mesajlar: 7601
Kayıt: 10 Haz 2003 12:26
Konum: İstanbul
İletişim:

Mesaj gönderen mussimsek »

Merhaba,

yaklaşımınız bana pek ideal gelmedi. Böyle toplam alıp, aradaki farkları da yazarsanız, bilgisayar başındaki kişi ödemeyi ayarlayacaktır. Bence en uygunu ödemeyi dengeleme işini, bilgisayar başındaki kişiye bırakmaktır.

Hatta kullanıcıya kalan farkları sıfırlama imkanı vermenizde iyi olur. Mesela adam 1 milyarlık mal almış, 995 milyon ödeme yapmış. Genelde kalan o 5 milyona pek bakılmaz.

Ama ille de yansıtacağım diyorsanız, ödemelere bir sıra numarası verin ve

if ödeme < alacak then
sonraki_ödemeyi_fark_kadar_artır_veya_eksilt

şeklinde yapmanız gerekir. Bunu da sıra no ile yapabilirsiniz. Mesela fark 15 milyon ve sıra no 4 olsun. O zaman 5 numaralı ödemeyi değiştirmeniz lazım. Tabi artırılacak mı, eksiltilecek mi ona da dikkat etmelisiniz. Şuna benzer bir SQL cümlesi işiniz görür :

UPDATE TAKSIT_TABLOSU
SET ALACAK=ALACAK + 15000000
WHERE ABONE_NO=ABONENİN_NUMARASI
AND SIRA_NO=5

Kolay gelsin.
Kullanıcı avatarı
aydin038
Üye
Mesajlar: 75
Kayıt: 08 Eki 2003 05:58

Mesaj gönderen aydin038 »

selam.

tesekkur ederim..

soylediginiz gibi yapmaya calisayim..


kolay gelsin.
sair
Kıdemli Üye
Mesajlar: 288
Kayıt: 16 Haz 2003 04:41
Konum: Kastamonu
İletişim:

Mesaj gönderen sair »

aynı şekide bu işlemi de yapabilirsin.
gridde ödemesi borcuna eşit olmayanları hesaplamaya dahil etme ancak son toplama dahil et. Yani iki ayrı döngü kur. önce hesaplamayı yaptır. Borç ile ödeme arasında fark varsa hesaplamaya dahil etme. ikinci döngüde ise bütün hepsini toplama dahil et.
sevgiler...
hakkus
Üye
Mesajlar: 160
Kayıt: 18 Haz 2003 12:02
Konum: Konya

Mesaj gönderen hakkus »

merhaba,
benim kullandığım basit bir döngü işine yarayabilir..

Kod: Tümünü seç

var odetutar:real;
begin
ayrtb.first;
while not ayrtb.Eof do
begin
    if AyrtbKalan.value=0 then
        begin
        ayrtb.Next;
        continue;
        end;
     if odeTutar<=AyrtbKalan.value then
        begin
        ayrtb.edit;
        ayrtbKalan.value:=ayrtbKalan.value-odeTutar;
        ayrTbOdenen.value:=odeTutar;
        break;
        end else
     if (ayrtbKalan.value>0) and (odeTutar>ayrtbKalan.value)  then
       begin
       dusen:=ayrtbKalan.value;
       ayrtb.edit;
       ayrtbKalan.value:=ayrtbKalan.value-ayrtbKalan.value;
       ayrtbOdenen.value:=dusen;

         ayrtb.Next;
         odeTutar:=odeTutar-dusen;
      end;
   if odeTutar>0 then continue;
ayrtb.Next;
end;
//
saygılar
Kullanıcı avatarı
mehmet_turecan_cakmak
Üye
Mesajlar: 132
Kayıt: 02 Tem 2003 01:08
Konum: Afyon
İletişim:

taksitli

Mesaj gönderen mehmet_turecan_cakmak »

selamlar...

hocam senin dediğin özellikte benim yaptığım bir program var kaynak amaçlı istersen gönderebilirim...

kolay gele...
sair
Kıdemli Üye
Mesajlar: 288
Kayıt: 16 Haz 2003 04:41
Konum: Kastamonu
İletişim:

Mesaj gönderen sair »

Bakın sevgili arkadaşlar. Soru soran arkadaşlara kod göndermeyin.
Sadece yöntemi anlatın. Yol gösterin. Gerisini kendisi çözsün. İnanın bunun ızdırabını o kadar çok yaşadım ki anlatamam. birisi bir kod göndermiş ve bu kod sizin işinize yaramışsa bir daha asla o konuyu öğrenemiyorsunuz. Ben delphi ye ilk başladığım yıllarda enter tuşunu tab tuşu olarak kullanmak için bi kod gönderdiler bana. Şimdi sorsanız inanın yapamam. Çünkü yaptığım projelerin hepsinde de o kodu copy paste yaparak kullandım. ve öğrenmedim. Hatta çalışma sistemini bile bilmiyorum. Kod göndererek o konuyu o arkadaşa öğretniyorsunuz. Tembelliğe ve başkalarının sırtından geçinmeye alıştırıyorsunuz. Kod yerine nasıl yapması gerektiğini izah edin. Ki o insan o yöntemi kullanarak kendisi çözsün olayı. Çünkü diğer yazacağı programlar da da aynı sorunlarla karşılaşacaktır.
Sevgiler...
Kullanıcı avatarı
aydin038
Üye
Mesajlar: 75
Kayıt: 08 Eki 2003 05:58

Mesaj gönderen aydin038 »

sevgili arkadaslar ilginizden dolayi herkese ayri ayri tesekkur ederim..

-sevigili "sair" gercekten haklisin dedigin gibi insani tembellige itiyor. ancak hangimiz bu isi kaynak kodlar olmadan soktu. tamam dedigin gibi kod gonderilmesin. peki neden her delphi sitesinde kaynak kodlar bolumu var.

-bir iki gundur bu taksit muhabbetine kafa patlattim. biliyorum basit birsey ama yine de bazi ufak tefek yerlerde hesap ta proglem cikiyor.

-sevigili "mehmet_turecan_cakmak" eger kaynak kodlari gonderirsen sevinirim. (aydin038@hotmail.com)


herkese iyi calismalar
Kullanıcı avatarı
ogarip
Üye
Mesajlar: 1
Kayıt: 01 Eki 2003 01:16

Mesaj gönderen ogarip »

bence taksitler için veritabanında yer ayırmayın, taksit formülü ve ödenen miktar olsun, geri kalanı açldığında otomatik olarak hesaplansın.
Kullanıcı avatarı
Kuri_YJ
Moderator
Mesajlar: 2248
Kayıt: 06 Ağu 2003 12:07
Konum: İstanbul
İletişim:

Mesaj gönderen Kuri_YJ »

aydin038 arkadaşımız taksitlendirme işi ve oluşan taksitlerin editlenmesi kolay bir iş değildir.

Sanırım sen Table nesnesi kullanmışsın.

Ben mantığı konusunda biraz algoritma vereyim sen bunu kafanda tasarlayıp koda dökersin. Zira değişken isimleri field'lar ve ekran tasarımın nasıl bilmiyorum.

Taksit ödeme ekranına girdiğinde önce satış tutarını (toplam taksit tutarını, taksit sayısını ve ödemelerin toplam tutarını biryerlerde tut.) Çünkü adam taksit tutarını değiştirdiğnde senin toplam rakam üzerinden diğer satırları ayarlaman gerekecek)

Daha sonra kullanıcıya taksiti ödemesine eşit olan kayıtları (mümkünse disable getir.)

Yani
Taksit Ödeme
10,000 10,000 (Disable)
10,000 10,000 (Dsiable)
10,000 5,000 (Enable)
10,000 (Enable)
10,000 (Enable)

Kullanıcı taksiti girdiğinde önce girilen tutarın kalan toplam ödemeden büyük olup olmadığını kontrol etmelisin. Ardından girilen miktar normal ödenmesi gereken miktardan büyük ise, normal ödenmesi gereken miktardan daha fazla ödenen tutarı (bu farkı bir değişkene al) daha sonra bu miktarı kalan diğer kayıtlar üzerinde harcayarak (yani adam tuttu 25,000 girdi) önce 5 bini (örneğimizdeki 3. satıra) kalan parayı (20,000'i)
diğer kayıtlara harca.

Harcama şeklinde şu biçimde olsun.

sonraki kayda taksit kaydına git,
Elimde ne kadar fazla ödeme var? (20,000)
taksit tutarından büyük mü? (Evet) (***)
O zaman fazlalık tutardan 10,000 TL'sini bu taksit kaydına yedir. (Fazlalık taksiti harcadığım kadar düşür 20,000 - 10,000, şimdi kalan fazlalık tutar 10,000)
döngüde başa dön

(***)
Bu bölümde aslında 3 kontrolun olacak

Taksit Tutarı Kalan Fazlalık Tutardan Büyük mü
Değilse
Taksit Tutarı Kalan Fazlalık Tutardan Küçük mü
Değilse
Taksit Tutarı Kalan Fazlalık Tutara Eşittir

gibi bir If Then Else Blokları kurman gerekir aksi takdirde kontrolunu yapamazsın, kaçar gider.

Umarım anlatabilmişimdir.

Kolay gelsin.
Kuri Yalnız Jedi
Harbi Özgürlük İçin Pisi http://www.pisilinux.org/
Kullanıcı avatarı
aydin038
Üye
Mesajlar: 75
Kayıt: 08 Eki 2003 05:58

Mesaj gönderen aydin038 »

selam 'Kuri The Lonely Jedi...'

evvala ilginden dolayi tessekkur ederim. ellerine saglik sizin gibi bilgi sahibi ve bilgisini paylasmaktan korkmayan insanlara ayri ayri tesekkuru bir borc bilirim.

soyledigine benzer bir mantikla problemi cozdum. sadece ufak bir "next" komutunu yanlis yere yazmisim. :oops: tabi biraz ugrasinca problemi cozmek hicde imkansiz degil.

ayrica "sair" arkadasimiza tesekkur ederim. cunki dedigi gibi hazira konmak insanlari ilerletmiyor oldugu yerde saydiriyor. once olabildigince insan kendini zorlamali.

Herkese kolay gelsin....
Cevapla