protected override void TaksitOlustur()
        {
            if (_faturaPlaniKartlari != null)
            {
                TopluFaturaPlani();
                return;
            }

            var tahakkukId        = _alinanHizmetlerSource.Select(x => x.TahakkukId).First();
            var alinanHizmetler   = _alinanHizmetlerSource.Select(x => x.HizmetAdi).ToList();
            var hizmetlerToplami  = _alinanHizmetlerSource.Sum(x => x.BrutUcret);
            var indirimlerToplami = _alinanHizmetlerSource.Sum(x => x.Indirim);

            var ilkFaturaTarih = txtIlkFaturaTarih.DateTime.Date;
            var faturaAdet     = (int)txtAdet.Value;
            var sabitTutar     = txtSabitTutar.Value;
            var ozelTahakkuk   = txtOzetTahakkuk.Text.GetEnum <EvetHayir>();
            var ozetAciklama   = txtOzetTahakkukAciklama.Text;

            var girilenBrutTutarToplami    = _faturaPlaniSource.Cast <FaturaPlaniL>().Where(x => !x.Delete).Sum(x => x.PlanTutar);
            var girilenIndirimTutarToplami = _faturaPlaniSource.Cast <FaturaPlaniL>().Where(x => !x.Delete).Sum(x => x.PlanIndirimTutar);

            var girilecekBrutTutar    = sabitTutar > 0 ? sabitTutar : Math.Round((hizmetlerToplami - girilenBrutTutarToplami) / faturaAdet, AnaForm.DonemParametreleri.FaturaTahakkukKurusKullan ? 2 : 0);
            var girilecekIndirimTutar = sabitTutar > 0 ? 0 : Math.Round((indirimlerToplami - girilenIndirimTutarToplami) / faturaAdet, AnaForm.DonemParametreleri.FaturaTahakkukKurusKullan ? 2 : 0);
            var girilecekNetTutar     = (girilecekBrutTutar - girilecekIndirimTutar);

            if (girilecekBrutTutar <= 0)
            {
                Messages.UyariMesaji("Verilen Hizmetler Toplamı Kadar Fatura Planı Zaten Oluşturulmuş.");
                return;
            }

            for (int i = 0; i < faturaAdet; i++)
            {
                var row = new FaturaPlaniL
                {
                    TahakkukId       = tahakkukId,
                    Aciklama         = ozelTahakkuk == EvetHayir.Evet ? ozetAciklama : AlinanHizmetler(alinanHizmetler) + " Bedeli",
                    PlanTarih        = ilkFaturaTarih.AddMonths(i),
                    PlanTutar        = girilecekBrutTutar,
                    PlanIndirimTutar = girilecekIndirimTutar,
                    PlanNetTutar     = girilecekNetTutar,
                    Insert           = true,
                };

                if (txtOzetTahakkuk.Text.GetEnum <EvetHayir>() == EvetHayir.Evet)
                {
                    row.Aciklama = ozetAciklama;
                }

                if (txtAyBilgisi.Text.GetEnum <EvetHayir>() == EvetHayir.Evet)
                {
                    var ay = (Aylar)row.PlanTarih.Month;
                    row.Aciklama = ay.ToName() + "-" + row.PlanTarih.Year + " Ayı" + row.Aciklama;
                }

                if (i + 1 == faturaAdet && sabitTutar == 0)
                {
                    row.PlanTutar        = hizmetlerToplami - _faturaPlaniSource.Cast <FaturaPlaniL>().Where(x => !x.Delete).Sum(x => x.PlanTutar);
                    row.PlanIndirimTutar = indirimlerToplami - _faturaPlaniSource.Cast <FaturaPlaniL>().Where(x => !x.Delete).Sum(x => x.PlanIndirimTutar);
                    row.PlanNetTutar     = row.PlanTutar - row.PlanIndirimTutar;
                }

                _faturaPlaniSource.Add(row);
            }
            DialogResult = DialogResult.OK;
            Close();
        }
        private void TopluFaturaPlani()
        {
            if (Messages.HayirSeciliEvetHayir("Toplu Fatura Planı Oluşturulacaktır. Onaylıyor musunuz?", "Onay") != DialogResult.Yes)
            {
                return;
            }
            var ilkFaturaTarih = txtIlkFaturaTarih.DateTime.Date;
            var faturaAdet     = (int)txtAdet.Value;
            var sabitTutar     = txtSabitTutar.Value;
            var ozelTahakkuk   = txtOzetTahakkuk.Text.GetEnum <EvetHayir>();
            var ozetAciklama   = txtOzetTahakkukAciklama.Text;
            var position       = 0.0;

            using (var faturaBll = new FaturaBll())
            {
                using (var hizmetBilgileriBll = new HizmetBilgileriBll())
                {
                    _faturaPlaniKartlari.ForEach(x =>
                    {
                        var yuzde = 100.0 / _faturaPlaniKartlari.Count;
                        position += yuzde;

                        var hizmetTutar     = x.HizmetTutar;
                        var hizmetIndirim   = x.HizmetIndirim;
                        var planTutar       = x.PlanTutar;
                        var planIndirim     = x.PlanIndirim;
                        var alinanHizmetler = AlinanHizmetler(hizmetBilgileriBll.FaturaPlaniList(y => y.TahakkukId == x.Id).Select(y => y.HizmetAdi).ToList());

                        var girilecekBrutTutar    = sabitTutar > 0 ? sabitTutar : Math.Round((hizmetTutar - planTutar) / faturaAdet, AnaForm.DonemParametreleri.FaturaTahakkukKurusKullan ? 2 : 0);
                        var girilecekIndirimTutar = sabitTutar > 0 ? 0 : Math.Round((hizmetIndirim - planIndirim) / faturaAdet, AnaForm.DonemParametreleri.FaturaTahakkukKurusKullan ? 2 : 0);
                        var girilecekNetTutar     = (girilecekBrutTutar - girilecekIndirimTutar);

                        if (hizmetTutar == 0 || hizmetTutar == planTutar & hizmetIndirim == planIndirim)
                        {
                            progressBarControl.Position = 100;
                            return;
                        }

                        for (int i = 0; i < faturaAdet; i++)
                        {
                            var row = new FaturaPlaniL
                            {
                                TahakkukId       = x.Id,
                                Aciklama         = ozelTahakkuk == EvetHayir.Evet ? ozetAciklama : alinanHizmetler + " Bedeli",
                                PlanTarih        = ilkFaturaTarih.AddMonths(i),
                                PlanTutar        = girilecekBrutTutar,
                                PlanIndirimTutar = girilecekIndirimTutar,
                                PlanNetTutar     = girilecekNetTutar,
                                Insert           = true,
                            };

                            if (txtOzetTahakkuk.Text.GetEnum <EvetHayir>() == EvetHayir.Evet)
                            {
                                row.Aciklama = ozetAciklama;
                            }

                            if (txtAyBilgisi.Text.GetEnum <EvetHayir>() == EvetHayir.Evet)
                            {
                                var ay       = (Aylar)row.PlanTarih.Month;
                                row.Aciklama = ay.ToName() + "-" + row.PlanTarih.Year + " Ayı" + row.Aciklama;
                            }

                            if (i + 1 == faturaAdet && sabitTutar == 0)
                            {
                                row.PlanTutar        = (hizmetTutar - planTutar) - (girilecekBrutTutar * i);
                                row.PlanIndirimTutar = (hizmetIndirim - planIndirim) - (girilecekIndirimTutar * i);
                                row.PlanNetTutar     = row.PlanTutar - row.PlanIndirimTutar;
                            }

                            if (!faturaBll.InsertSingle(row))
                            {
                                return;
                            }
                            progressBarControl.Position = (int)position;
                            progressBarControl.Update();
                        }
                    });
                }
            }
            Messages.BilgiMesaji("Fatura Planı Oluşturma İşlemi Başarılı Bir Şekilde Tamamlanmıştır.");
            DialogResult = DialogResult.OK;
            Close();
        }