Пример #1
0
        /// <summary>
        /// The Hesapla
        /// </summary>
        /// <param name="form">The <see cref="MainWindow"/></param>
        /// <param name="maaşonay">The <see cref="bool"/></param>
        public static void Hesapla(MainWindow form, bool maaşonay)
        {
            if (!Geçerli(form.GridGenelVeriler))
            {
                MessageBox.Show("Genel Veriler Sekmesindeki Kırmızı Alanları Düzelt.", "Ayarlar", MessageBoxButton.OK,
                                MessageBoxImage.Exclamation);
                form.TabCtrlSubSözleşmeli.SelectedItem = form.TabGenel;
                return;
            }
            KontrolleriEtkinleştir(form, false);
            var maaşverileri = new MaaşSorgulamalar().MaaşlarVeri;

            form.ProgressTamamlanma.DataContext = Progress;
            IcraVerileri.Clear();
            Sendikabordro.Clear();
            Besbordro.Clear();
            Veritabanımaaşlartablosu.Clear();
            Fastreportbordro.Clear();
            GeçenDönemPersonel(form, maaşverileri);
            GeçenDönemTahakkuk(maaşverileri);
            Task.Factory.StartNew(() =>
            {
                if (maaşonay)
                {
                    Yedekleİcra();
                }
                foreach (Kisiler kişi in form.MaaşdataGrid.ItemsSource)
                {
                    if (kişi.KisiSecili == true && !maaşverileri.AsParallel().Any(z => z.Ay == Ay - 1 && z.KisiID == kişi.KisiID &&
                                                                                  z.MaasTipi == kişi.KisiMaasTipi && z.Yil == Yıl))
                    {
                        AgiAileÇocukYardımHesapla(kişi);
                        ÇocukKontrol(kişi);
                        HesaplaMaaş(ref _sozlesmeUcreti, ref _esYardimi, ref _cocukYardimi, ref _ekTazminat, ref _sakatlıkIndirimi,
                                    kişi, ref _sendikaYardimi, ref _sgkMatrah, out _dvMatrah, out _damgaVergisi, ref _sendikaKesinti, out _malYaslilikisveren,
                                    out _gssSigortaisveren, out _kisaVadeliSigortaPrimi, out _malYaslilikisci, out _gssSigortaisci, out _gvMatrah,
                                    out _süregelenmatrah, ref maaşverileri, out _gelirVergisi, out _tahakkukToplam, ref _besKesinti, out _kesintiler,
                                    ref _agitutar, ref _icrakesintisi, out _nafakakesinti, out _kirakesinti, ref _dönem, ref _yil);
                        _icrakesintisi = IcraHesabı(maaşonay, kişi, _cocukYardimi, _esYardimi, _tahakkukToplam, _kesintiler,
                                                    _agitutar);
                        var toplamKesinti  = (_kesintiler + _icrakesintisi).İkiRakam();
                        var eleGecen       = (_tahakkukToplam - toplamKesinti - _besKesinti).İkiRakam();
                        var odenenTutar    = (eleGecen + _agitutar).İkiRakam();
                        var öğrenimkatsayı = KatsayıHesapla(kişi);
                        BordroOluştur(kişi, toplamKesinti, eleGecen, odenenTutar, öğrenimkatsayı);
                        Progress.Progress++;
                    }
                }
            }).ContinueWith(task =>
            {
                if (maaşonay)
                {
                    try
                    {
                        foreach (var item in Veritabanımaaşlartablosu)
                        {
                            maaşverileri.Add(item);
                        }
                        using (var worker = new BackgroundWorker())
                        {
                            form.DisableCloseButton(true);
                            form.ProgressTamamlanma.IsIndeterminate = true;
                            worker.DoWork             += Worker_DoWork;
                            worker.RunWorkerCompleted += Worker_RunWorkerCompleted;
                            worker.RunWorkerAsync();
                        }
                    }
                    catch (Exception ex)
                    {
                        MessageBox.Show(ex.Message);
                    }
                }
                else
                {
                    new Raporla("MaaşHesap.Rapor.bordro.frx", Fastreportbordro, "Bordro");
                }
            }, TaskScheduler.FromCurrentSynchronizationContext());
        }