$itibar_tarihi = sqlDate($hakedis->itibar_tarihi);
$hakedisItibarTarihi = Carbon::parse($itibar_tarihi);
$hakedisAy = $hakedisItibarTarihi->month;
$hakedisYil = $hakedisItibarTarihi->year;
$odenekDilimler = FiyatFarkiProjeOdenekDilimAylar::where('projes_id', $proje->id)
->where('ay', '>=', $hakedisAy) // Hakediş ayından sonraki dilimler
->where('yil', $hakedisYil)
->orderBy('yil', 'asc')
->orderBy('ay', 'asc')
->get();
// Hakediş tutarı ve avans tutarı
$hakedisTutari = $hakedis->hakedis_tutari;
$avansTutari = $hakedis->avans_mahsup_tutari;
$toplamFiyatFarkiTutari = 0;
if ($hakedisTutari > 0) {
}
foreach ($odenekDilimler as $odenekDilim) {
$odenekAy = $odenekDilim->ay;
$odenekYil = $odenekDilim->yil;
$baslangicTarihi = Carbon::create($odenekYil, $odenekAy, 1)->startOfMonth();
$bitisTarihi = Carbon::create($odenekYil, $odenekAy, 1)->endOfMonth();
if ($hakedisItibarTarihi->between($baslangicTarihi, $bitisTarihi)) {
$odenekTutari = $odenekDilim->aylik_odenek_tutari;
$kullanilanTutar = min($hakedisTutari - $avansTutari, $odenekTutari);
$fiyatFarkiTutari = FiyatFarkiProjeFiyatFarkiTutarlar::where('projes_id', $proje->id)
->where('proje_hakedis_id', $hakedisId)
->where('odenek_yil', $odenekYil)
->where('odenek_ay', $odenekAy)
->first();
if ($fiyatFarkiTutari) {
$fiyatFarkiTutari->projes_id = $proje->id;
$fiyatFarkiTutari->proje_hakedis_id = $hakedisId;
$fiyatFarkiTutari->odenek_yil = $odenekYil;
$fiyatFarkiTutari->odenek_ay = $odenekAy;
$fiyatFarkiTutari->imalat_yil = $hakedisYil;
$fiyatFarkiTutari->imalat_ay = $hakedisAy;
$fiyatFarkiTutari->ff_esas_net_tutar = $kullanilanTutar;
$fiyatFarkiTutari->ff_esas_brut_tutar = $hakedisTutari;
$fiyatFarkiTutari->b_katsayisi = 0.90;
$fiyatFarkiTutari->pn_degeri = $pn;
$fiyatFarkiTutari->save();
$ff_tutar = $fiyatFarkiTutari->ff_esas_net_tutar * $fiyatFarkiTutari->b_katsayisi * ($fiyatFarkiTutari->pn_degeri - 1);
$fiyatFarkiTutari->ff_tutar = $ff_tutar;
$fiyatFarkiTutari->save();
} else {
$fiyatFarkiTutari = new FiyatFarkiProjeFiyatFarkiTutarlar();
$fiyatFarkiTutari->projes_id = $proje->id;
$fiyatFarkiTutari->proje_hakedis_id = $hakedisId;
$fiyatFarkiTutari->odenek_yil = $odenekYil;
$fiyatFarkiTutari->odenek_ay = $odenekAy;
$fiyatFarkiTutari->imalat_yil = $hakedisYil;
$fiyatFarkiTutari->imalat_ay = $hakedisAy;
$fiyatFarkiTutari->ff_esas_net_tutar = $kullanilanTutar;
$fiyatFarkiTutari->ff_esas_brut_tutar = $hakedisTutari;
$fiyatFarkiTutari->b_katsayisi = 0.90;
$fiyatFarkiTutari->pn_degeri = $pn;
$fiyatFarkiTutari->save();
$ff_tutar = $fiyatFarkiTutari->ff_esas_net_tutar * $fiyatFarkiTutari->b_katsayisi * ($fiyatFarkiTutari->pn_degeri - 1);
$fiyatFarkiTutari->ff_tutar = $ff_tutar;
$fiyatFarkiTutari->save();
}
$hakedisTutari -= $kullanilanTutar;
}
if ($hakedisTutari <= 0) {
break;
}
}
Merhaba herkese, yukarıdaki döngümde bir hesaplama yapıyorum. Bu hesap sonucunda kalan tutara göre bir sonraki aydan veri çekmem gerekecek. For döngüsü ile yapmak istedim ancak sadece bir kez hesaplama yapıp döngüyü sonlandırıyor. Tam döngüyü de kuramadım mantık aşağıdaki gibi aslında hakedisTutari değişkenine atanan veri odenektutari değişkenine atanan veriden çıkarıldığında hala kalan bir tutar var ise odenekDilimleri tablosundan bir sonraki ayın odenekTutari ni alması gerekiyor ancak şuan kurduğum for döngüsü sadece birkez çalışıp sonlanıyor 2-3.. aylara geçmiyor.
Örnek:
Hakediş İtibar Tarihi (01 nolu hakediş) 15.03.2024
Hakediş Tutarı 1.500.000,00TL olarak da girilmesi durumunda.
Bu durumda fiyat farkı hesaplama tablosuna Hakediş İtibar Tarihi olarak 15.03.2024 yazılacak.
Uygulama ayı olarak yer teslim tarihinden itibaren hakediş konusu imalatların gerçekleştirildiği aylar olan "Kasım 2023, Aralık 2023, Ocak 2024, Şubat 2024 ve Mart 2024" olmak üzere 5 satır açılacak.
Aylık hakediş tutarları aydaki gün sayısına göre aşağıdaki tablodaki örnekte olduğu gibi hesaplanacak.
Aylık hakediş tutarları 2 (iki) ondalık hasasiyetli olarak hesaplanacak.
Aylık Hakediş Tutarlarının dip toplamı ile hakediş tutarı birbiri ile uyumlu olmaz ise (eksik veya fazla olması) aradaki fark son aya (bu örnek Mart 2024 ayına) ait tutara eklenecek.
Kasım hakediş tutarı 196721,31 TL, aylıködenek tutarı 350.000,00 TL, hakediş tutarının tamamı Kasım ayı (kendi diliminden) ödeneğinden kullanıldı.
Kasım ödeneğinin kullanılmayan 153.278,69 TL si kaldı. Bu Ödenek Aralık 2023 uygulama ayında kullanıldı.
Aralık Hakediş tutarı 381.147,54 TL, Bu tutarın 153.278,69 TL TL si Kasım 2023 ayı ödeneğinden, 227.868,85 TL si Aralık 2023 ödeneğinden kullanıldı.
Aralık 2023 ödeneğinin kullanılmayan 172.131,15 TL si kaldı. Bu Ödenek Ocak 2024 uygulama ayında kullanıldı.
Ocak hakediş tutarı 381.147,54 TL, bu tutarın 172.131,15 TL sini Aralık ödeneğinden kullanacak. Kalan 209.016,39 TL ödenek Ocak 2024 ödenek ayından kullanılacak
Şubat hakediş tutarı 356.557,38 TL, bu tutarın 240.983,61 TL sini Ocak ödeneğinden kullanacak. Kalan 115.573,77 TL ödenek Şubat 2024 ödenek ayından kullanılacak
Mart hakediş tutarının184.426,23 TL si Şubat 2024 ödeneğinden kullanılacak.