private (decimal brutIndirim, decimal kistDonemDusulenIndirim) IndirimHesapla(long IndirimId, long hizmetId)//2 değişken geriye döndürür (3/6 27.video) 34:15 { decimal HizmetToplamiAl(bool iptalEdildi) { var hizmetToplami = ((TahakkukEditForm)OwnerForm).hizmetBilgileriTable.Tablo.DataController.ListSource.Cast <HizmetBilgileriL>().Where(x => x.HizmetId == hizmetId && x.IptalEdildi == iptalEdildi && !x.Delete).Sum(x => x.BrutUcret); var indirimToplami = tablo.DataController.ListSource.Cast <IndirimBilgileriL>().Where(x => x.HizmetId == hizmetId && !x.ManuelGirilenTutar && x.IptalEdildi == iptalEdildi && !x.Delete).Sum(x => x.BrutIndirim); return(hizmetToplami == 0 ? 0 : hizmetToplami - indirimToplami); } using (var bll = new IndiriminUygulanacagiHizmetBilgileriBll()) { var hizmetSource = bll.List(x => x.IndirimId == IndirimId && x.HizmetId == hizmetId).Cast <IndiriminUygulanacagiHizmetBilgileriL>().FirstOrDefault(); if (hizmetSource == null) { return(0, 0); } var egitimBitisTarihi = AnaForm.DonemParametreleri.DonemBitisTarihi; var hizmetEntity = ((TahakkukEditForm)OwnerForm).hizmetBilgileriTable.Tablo.DataController.ListSource.Cast <HizmetBilgileriL>().First(x => x.HizmetId == hizmetId && !x.Delete); var indirimEntity = Tablo.DataController.ListSource.Cast <IndirimBilgileriL>().FirstOrDefault(x => x.IndirimId == IndirimId && x.HizmetId == hizmetId && !x.Delete); var hizmetToplami = hizmetEntity.IptalEdildi ? HizmetToplamiAl(true) : HizmetToplamiAl(false); var toplamGunSayisi = hizmetEntity.EgitimDonemiGunSayisi; var hizmetGunSayisi = indirimEntity?.IptalTarihi == null ? (int)(egitimBitisTarihi - hizmetEntity.BaslamaTarihi).TotalDays + 1 : (int)(indirimEntity.IptalTarihi - hizmetEntity.BaslamaTarihi).Value.TotalDays + 1; var brutIndirim = hizmetSource.IndirimTutari > 0 ? hizmetSource.IndirimTutari : hizmetToplami * hizmetSource.IndirimOrani / 100; var gunlukIndirim = brutIndirim / toplamGunSayisi; var kistDonemDusulenIndirim = (toplamGunSayisi - hizmetGunSayisi) * gunlukIndirim; brutIndirim = Math.Round(brutIndirim, AnaForm.DonemParametreleri.IndirimTahakkukKurusKullan ? 2 : 0); kistDonemDusulenIndirim = Math.Round(kistDonemDusulenIndirim, AnaForm.DonemParametreleri.IndirimTahakkukKurusKullan ? 2 : 0); return(brutIndirim, kistDonemDusulenIndirim); } }
protected override void HareketEkle() { bool HizmetAlindi(long hizmetId) { var hizmetToplami = ((TahakkukEditForm)OwnerForm).hizmetBilgileriTable.Tablo.DataController.ListSource.Cast <HizmetBilgileriL>().Where(x => x.HizmetId == hizmetId && !x.IptalEdildi && !x.Delete).Sum(x => x.BrutUcret); //(3/6)(27.video) 21:00 var indirimToplami = tablo.DataController.ListSource.Cast <IndirimBilgileriL>().Where(x => x.HizmetId == hizmetId && !x.ManuelGirilenTutar && !x.IptalEdildi && !x.Delete).Sum(x => x.BrutIndirim); return(hizmetToplami == 0 ? false : hizmetToplami - indirimToplami > 0); } bool AyniHizmetKartinaAyniIndirimUygulandi(IndiriminUygulanacagiHizmetBilgileriL hizmet) { return(tablo.DataController.ListSource.Cast <IndirimBilgileriL>().Any(x => x.HizmetId == hizmet.HizmetId && x.IndirimId == hizmet.IndirimId && !x.ManuelGirilenTutar && !x.IptalEdildi && !x.Delete)); } var indirimList = ShowListForms <IndirimListForm> .ShowDialogListForm(KartTuru.Indirim, true).EntityListConvert <IndirimL>(); if (indirimList == null) { return; } using (var iuhBll = new IndiriminUygulanacagiHizmetBilgileriBll()) { var source = tablo.DataController.ListSource; var sabitTutarliIndirimGirildi = false; var eklenenKayitSayisi = 0; foreach (var indirim in indirimList) { var hizmetList = iuhBll.List(x => x.IndirimId == indirim.Id && x.SubeId == AnaForm.SubeId && x.DonemId == AnaForm.DonemId).Cast <IndiriminUygulanacagiHizmetBilgileriL>(); foreach (var hizmet in hizmetList) { if (!HizmetAlindi(hizmet.HizmetId)) { continue; } if (AyniHizmetKartinaAyniIndirimUygulandi(hizmet)) { continue; } if (!sabitTutarliIndirimGirildi) { sabitTutarliIndirimGirildi = hizmet.IndirimTutari > 0; } var(brutIndirim, kistDonemDusulenIndirim) = IndirimHesapla(hizmet.IndirimId, hizmet.HizmetId); var row = new IndirimBilgileriL { TahakkukId = OwnerForm.Id, IndirimId = indirim.Id, IndirimAdi = indirim.IndirimAdi, HizmetId = hizmet.HizmetId, HizmetAdi = hizmet.HizmetAdi, IslemTarihi = DateTime.Now.Date, BrutIndirim = brutIndirim, KistDonemDusulenIndirim = kistDonemDusulenIndirim, NetIndirim = brutIndirim - kistDonemDusulenIndirim, OranliIndirim = hizmet.IndirimOrani > 0, ManuelGirilenTutar = hizmet.IndirimOrani == 0 && hizmet.IndirimTutari == 0, //hata olabilir Insert = true }; source.Add(row); eklenenKayitSayisi++; if (hizmet.IndirimOrani == 0 && hizmet.IndirimTutari == 0) { tablo.FocusedColumn = colBrutIndirim; } } } if (eklenenKayitSayisi == 0) { return; } if (sabitTutarliIndirimGirildi) { TopluIndirimHesapla(); } } tablo.Focus(); tablo.RefreshDataSource(); tablo.FocusedRowHandle = tablo.DataRowCount - 1; insUptNavigator.Navigator.Buttons.DoClick(insUptNavigator.Navigator.Buttons.EndEdit); ButonEnabledDurumu(true); }