Forum
Kolay Gelsin.
c# de bir işlem yaptıramadım
yardımcı olursanız sevinirim.
db içinde iki kolunum var
hesapkesimterihi 10
sonodemegunu 21
taksitli kredi kartımdan para çektim ödeme günlerini hesaplamak isrtiyorum
04.04.2014 tarihinde 1000 tl 5 taksitle ödeme yaptım
1000/5 =200
ödeme günü 04 hesap kesim tarihim 10 küçük olduğundan ilk taksitim o ay
21.04.2014 200
21.05.2014 200
21.06.2014 200
21.07.2014 200
21.08.2014 200
işlemi 11 inde yapmışsam
21.05.2014 200
21.06.2014 200
21.07.2014 200
21.08.2014 200
21.09.2014 200
olması lazım
taksit yok ise aynı şekilde 10 undan önce ise o ay sonra ise bir sonraki ay tarihini vermesi lazım
DataRow GunRow = Classlar.BankaKartVadeSec(BankaAdi, KartTanimi, KartNo);
Hesapkesimgunu = Convert.ToInt32(GunRow["HESKES_GUNU"]);
SonOdemeGun = Convert.ToInt32(GunRow["SONODM_GUNU"
for (int j = 0; j < TaksitSayisi; j++)
{
}
Merhaba,
Bu işlemi if kontrolleri ile yapmayı denediniz mi ? İlk şartınız taksitsiz bir işlem ise tarih kontrolü yaparak bahsettiğiniz hesap hesim tarihine göre tek satır işlem yaptırmak, eğer ki taksitli bir işlem ise de döngünüz ile dönüp aynı mantıkta işlem yaptırabilirsiniz.
denedim gibi ama başarılı olamadım taksit yok ise yaptığım işlemde tek sefer yapıyor döngü
biraz saçma oldu yaptığım işlem sanırım ama
decimal mpara = (Odeme > 0) ? Odeme : 0;
decimal TaksitSayisi = (Taksit > 0) ? Taksit : 1;
decimal Hesapkesimgunu = 0;
int SonOdemeGun = 0;
decimal Kacincitaksit = 0;
decimal odenecek = mpara / TaksitSayisi;
decimal Erteleme = (Ertele > 0) ? Ertele : 0;
DateTime IslemTarihi = Convert.ToDateTime(tarihi);
DateTime OdemeTarihi;
DataRow GunRow = Classlar.BankaKartVadeSec(BankaAdi, KartTanimi, KartNo);
Hesapkesimgunu = Convert.ToInt32(GunRow["HESKES_GUNU"]);
SonOdemeGun = Convert.ToInt32(GunRow["SONODM_GUNU"]);
if (IslemTarihi.Day <= Hesapkesimgunu)
{
IslemTarihi = new DateTime(IslemTarihi.Year, IslemTarihi.Month, SonOdemeGun);
IslemTarihi = IslemTarihi.AddMonths(- 1);
}
else
{
IslemTarihi = new DateTime(IslemTarihi.Year, IslemTarihi.Month, SonOdemeGun);
}
for (int j = 0; j < TaksitSayisi; j++)
{
}
Merhaba,
Yapmak istediğiniz işlemde ufak bir mantık hatası var.
Öncelik ile yapınızın şu şekilde olması daha doğru olur.
Yani kod yazılımından önce işleminizin mantık olarak çalışıyor olması lazım.
Gerekli veri yapısı
[Sipariş Tablo] (müşteri,ürün, adet, birim fiyat, toplam, kdv,sipariş tarihi)
[Borç Tablo] (sipariş,toplam borç ,taksit sayısı,vade başlangıç tarihi)
[Alacak Tablo] (borç,taksit tarihi,taksit sayısı,tutar,ödeme durumu,ödeme tarihi)
Senaryo
Sipariş durumuna göre borç tablosuna girilen kayıt taksit sayısı 1 ise alacak tabloya hiç bir işlem yapmadan toplan tutar ve borç tarihi girilerek müşteri borçlandırılır.
Eğer taksit sayısı 1 den büyük ise yapılacak işlem;
taksit tutarı = toplan tutar / taksit sayısı
Taksit sayısı kadar döngü açılır.
döngü içinde tahsilat tarihi 30 gün arttırılarak taksit tutarı ve diğer bilgiler alacak tablosuna eklenir.
Ödeme yapıldığında alacak tablosu güncellenir.
Benim o dediğin paneller hazır onlarda bir sıkıntı yok kart işlemi benim yaptığım ödemeler kartının hesap kesim tarihini veriyorum ve hesap kesim tarihine bağlı ödeme günüm var hafta sonuna geliyorsa birgün önce birgün sonra ya ayarlıyor ödeme tarihi o şekilde yapmamız sebebi o cari hareketlerini tuttuğu bir alan var oraya tarih yapılan ödeme kime yaptığım tek bir satır olarak kayıt ediliyor banka kart detayı da bu işlemle aylara bölerek ekleniyor bu işlemle işi biraz uzatarak olsa çözdüm şu an için fena bir haftada çalışıyor ilginiz için tşkler. ..