Koşullu For & Foreach Döngüsü
-
Merhaba arkadaşlar.
Borç Tahsilatı ile ilgili bir sorunum var.
Müşteri Borcunu önce taksitlendiriyor.
01.01.2022 100TL
01.02.2022 100TL
01.03.2022 100TL
01.04.2022 100TL
01.05.2022 100TL
01.06.2022 100TLgibi.
Fakat 450 tl şeklinde toplu tahsilat yapıyor.
Şuan ki sistemde kullanıcı bu tahsilat işlemini 5 ayrı işlemde yapabiliyor.
4. aya kadar borçları tahsil ediyor. sonra 5. ayın borcunu da 50 tl şeklinde parçalı tahsil ediyor.istediğim ve kafamda kuramadığım döngü şu;
Kullanıcı 450 tl tahsilat yaparken tahsil edilen tutarı girdiğinde tek işlemde
sistem 4 taksiti tam tahsil edip 5. ayın borcundan arta kalan 50tl yi düşmesi.Beynim bu saat itibariyle yanmış durumda.
Bir el atın şakirtler.. :) -
borclar = [(date, amount, remaining)]
odeme = 450
kalan = odeme
yeni_liste = []
for borc in borclar:
if kalan >= borc[2]:
borc[2] = 0
kalan -= borc[2]
elif kalan > 0 :
borc[2] -= kalan
kalan = 0
yeni_liste.append(borc)
-
debits={ '20220101':100, '20220201':100, '20220301':100, '20220401':100, '20220501':100, '20220601':100, '20220701':100 }; payment=425; for(var key in debits) { var amount = debits[key]; if(payment >= amount) { delete debits[key]; payment-=amount; } else { debits[key]=amount-payment; break; } }
-
100
100
100
100
50
Yerine
100
100
100
150
Mi yapsın diyorsun?
-
wert bunu yazdı
debits={ '20220101':100, '20220201':100, '20220301':100, '20220401':100, '20220501':100, '20220601':100, '20220701':100 }; payment=425; for(var key in debits) { var amount = debits[key]; if(payment >= amount) { delete debits[key]; payment-=amount; } else { debits[key]=amount-payment; break; } }
sanırım böyle bir şey istiyorum. Bunu bir deneyeceğim. Anladığım kadarıyla borçları list olarak çekip
sonra koşul durumuna göre ortadan kaldırmam ya da tutar borçdan daha az ise eksiltmem gerekiyor.
deneyip sonucu yazacağım.
-
olayı aşağıdaki gibi çözdüm. Cevap yazan herkese teşekkürler.
Döngüyü kurmamda fikir vermiş oldunuz.
foreach (var item in sx.ToList()) { decimal amount = item.BorcTutar.Value; if (TahsilatTutar >= amount) { sx.Where(x=>x.DebtID==item.DebtID).ToList().ForEach(x => { x.Paid = true; }); db.SubmitChanges(); TahsilatTutar -= amount; } else { sx.Where(x => x.DebtID == item.DebtID).ToList().ForEach(x => x.BorcTutar -= TahsilatTutar); db.SubmitChanges(); break; } }