예제 #1
0
        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);
            }
        }
예제 #2
0
        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);
        }