예제 #1
0
        public decimal CalcolaImportoPercepito(decimal idAttivitaAnticipi, decimal percRichiesta)
        {
            try
            {
                decimal importoPercepito;

                using (ModelDBISE db = new ModelDBISE())
                {
                    var t = db.ATTIVITAANTICIPI.Find(idAttivitaAnticipi).PRIMASITEMAZIONE.TRASFERIMENTO;
                    var idTrasferimento = t.IDTRASFERIMENTO;

                    using (CalcoliIndennita ci = new CalcoliIndennita(idTrasferimento, t.DATAPARTENZA))
                    {
                        var lteorici = t.TEORICI.Where(x =>
                                                       x.VOCI.IDTIPOLIQUIDAZIONE == (decimal)EnumTipoLiquidazione.Contabilità &&
                                                       //x.ELABORATO &&
                                                       x.DIRETTO &&
                                                       x.IDVOCI == (decimal)EnumVociContabili.Ind_Prima_Sist_IPS &&
                                                       x.INSERIMENTOMANUALE == false &&
                                                       x.ANNULLATO == false &&
                                                       x.ELABINDSISTEMAZIONE.CONGUAGLIO == false &&
                                                       x.ELABINDSISTEMAZIONE.ANTICIPO &&
                                                       x.ANNORIFERIMENTO == t.DATAPARTENZA.Year &&
                                                       x.MESERIFERIMENTO == t.DATAPARTENZA.Month)
                                       .ToList();

                        decimal importoPrevisto = 0;
                        if (lteorici?.Any() ?? false)
                        {
                            importoPrevisto = lteorici.First().IMPORTOLORDO;
                        }
                        else
                        {
                            importoPrevisto = ci.IndennitaSistemazioneAnticipabileLorda;
                        }

                        importoPercepito = Math.Round((importoPrevisto * (percRichiesta / 100)), 2);
                    }
                }

                return(importoPercepito);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
예제 #2
0
        public ActionResult DatiTrasferimentoDipendente(decimal idTeorico)
        {
            TrasferimentoModel tm = new TrasferimentoModel();
            DatiTrasferimentoDipendenteModel dtdm = new DatiTrasferimentoDipendenteModel();

            try
            {
                using (dtTrasferimento dtt = new dtTrasferimento())
                {
                    tm = dtt.GetTrasferimentoByIdTeorico(idTeorico);

                    using (CalcoliIndennita ci = new CalcoliIndennita(tm.idTrasferimento))
                    {
                        dtdm = new DatiTrasferimentoDipendenteModel()
                        {
                            Dipendente        = tm.Dipendente.Nominativo,
                            TipoTrasferimento = tm.TipoTrasferimento.descTipoTrasf,
                            Ufficio           = tm.Ufficio.descUfficio + " (" + tm.Ufficio.codiceUfficio + ")",
                            DataPartenza      = tm.dataPartenza.ToShortDateString(),
                            DataRientro       = tm.dataRientro.HasValue ? tm.dataRientro.Value == Convert.ToDateTime("31/12/9999") ? "In corso..." : tm.dataRientro.Value.ToShortDateString() : "In corso...",
                            Livello           = ci.Livello.LIVELLO,
                            Ruolo             = ci.RuoloUfficio.DESCRUOLO,
                            Coan       = string.IsNullOrEmpty(tm.coan) ? tm.TipoCoan.idTipoCoan == 1 ? "S.I." : "S.P." : tm.TipoCoan.descrizione + " (" + tm.coan + ")",
                            FasciaKM_P = string.IsNullOrEmpty(ci.FasciaKM_P.KM) ? "-" : ci.FasciaKM_P.KM + " (" + ci.PercentualeFKMPartenza.ToString() + "%)",
                            FasciaKM_R = string.IsNullOrEmpty(ci.FasciaKM_R.KM) ? "-" : ci.FasciaKM_R.KM + " (" + ci.PercentualeFKMRientro.ToString() + "%)",
                        };
                    }
                }
            }
            catch (Exception ex)
            {
                return(PartialView("ErrorPartial", new MsgErr()
                {
                    msg = ex.Message
                }));
            }

            return(PartialView(dtdm));
        }
예제 #3
0
        public IList <StoriaDipendenteNewModel> GetStoriaDipendenteNew(decimal Nominativo, ModelDBISE db)
        {
            List <StoriaDipendenteNewModel> rim = new List <StoriaDipendenteNewModel>();

            var lDipendenti =
                db.DIPENDENTI.Where(
                    a =>
                    a.MATRICOLA == Nominativo).ToList();

            if (lDipendenti?.Any() ?? false)
            {
                var d = lDipendenti.First();

                var ltr = d.TRASFERIMENTO.Where(a => a.IDSTATOTRASFERIMENTO == (decimal)EnumStatoTraferimento.Attivo || a.IDSTATOTRASFERIMENTO == (decimal)EnumStatoTraferimento.Terminato).OrderByDescending(a => a.IDTRASFERIMENTO).ToList();

                foreach (var tr in ltr)
                {
                    var dataPartenza = tr.DATAPARTENZA;
                    var dataRientro  = tr.DATARIENTRO;

                    var lliv = d.LIVELLIDIPENDENTI.Where(a =>
                                                         a.ANNULLATO == false &&
                                                         a.DATAFINEVALIDITA >= dataPartenza &&
                                                         a.DATAINIZIOVALIDITA <= dataRientro)
                               .OrderByDescending(a => a.IDLIVDIPENDENTE)
                               .ToList();
                    List <DateTime> lDateVariazioni = new List <DateTime>();

                    if (lliv?.Any() ?? false)
                    {
                        foreach (var liv in lliv)
                        {
                            DateTime dtVar = new DateTime();

                            #region data variazione livello
                            if (liv.DATAINIZIOVALIDITA < tr.DATAPARTENZA)
                            {
                                dtVar = tr.DATAPARTENZA;
                            }
                            else
                            {
                                dtVar = liv.DATAINIZIOVALIDITA;
                            }

                            #endregion

                            var uf = tr.UFFICI;

                            #region indennita prima sistemazione
                            var Primaindennita = tr.PRIMASITEMAZIONE.INDENNITASISTEMAZIONE
                                                 .Where(a => a.ANNULLATO == false &&
                                                        a.IDTIPOTRASFERIMENTO == tr.IDTIPOTRASFERIMENTO &&
                                                        a.DATAINIZIOVALIDITA <= tr.DATARIENTRO &&
                                                        a.DATAFINEVALIDITA >= tr.DATAPARTENZA)
                                                 .OrderByDescending(a => a.IDINDSIST)
                                                 .ToList();

                            if (!Primaindennita?.Any() ?? false)
                            {
                                throw new Exception("Errore: Indennita Base non trovata");
                            }

                            //var rPrimaindennita = Primaindennita.First();
                            #endregion

                            #region valuta ufficio
                            var lvalutaufficio = uf.VALUTAUFFICIO
                                                 .Where(a => a.ANNULLATO == false &&
                                                        a.DATAINIZIOVALIDITA <= tr.DATARIENTRO &&
                                                        a.DATAFINEVALIDITA >= tr.DATAPARTENZA)
                                                 .OrderByDescending(a => a.DATAINIZIOVALIDITA)
                                                 .ToList();
                            if (!lvalutaufficio?.Any() ?? false)
                            {
                                throw new Exception("Errore: Valuta Ufficio non trovata");
                            }

                            var valutaufficio = lvalutaufficio.First();
                            #endregion

                            #region Variazioni di indennità di base
                            var ind        = tr.INDENNITA;
                            var lindennita = ind.INDENNITABASE
                                             .Where(a => a.ANNULLATO == false &&
                                                    a.IDLIVELLO == liv.IDLIVELLO &&
                                                    a.DATAINIZIOVALIDITA <= tr.DATARIENTRO &&
                                                    a.DATAFINEVALIDITA >= tr.DATAPARTENZA)
                                             .OrderByDescending(a => a.IDINDENNITABASE)
                                             .ToList();

                            if (!lindennita?.Any() ?? false)
                            {
                                throw new Exception("Errore: Indennita Base non trovata");
                            }

                            //var indennita = lindennita.First();

                            foreach (var ib in lindennita)
                            {
                                if (ib.DATAINIZIOVALIDITA < tr.DATAPARTENZA)
                                {
                                    dtVar = tr.DATAPARTENZA;
                                }
                                else
                                {
                                    dtVar = ib.DATAINIZIOVALIDITA;
                                }

                                if (!lDateVariazioni.Contains(dtVar))
                                {
                                    lDateVariazioni.Add(dtVar);
                                    lDateVariazioni.Sort();
                                }
                            }
                            #endregion

                            #region Variazioni del coefficiente di sede
                            var lcs = uf.COEFFICIENTESEDE
                                      .Where(a => a.ANNULLATO == false &&
                                             a.DATAINIZIOVALIDITA <= tr.DATARIENTRO &&
                                             a.DATAFINEVALIDITA >= tr.DATAPARTENZA)
                                      .OrderBy(a => a.DATAINIZIOVALIDITA)
                                      .ToList();

                            if (!lcs?.Any() ?? false)
                            {
                                throw new Exception("Errore: Coefficente di Sede non trovata");
                            }
                            //var coeff = lcoeff.First();

                            //var lrd = ind.COEFFICIENTESEDE
                            //    .Where(a => a.ANNULLATO == false &&
                            //                a.DATAINIZIOVALIDITA <= tr.DATARIENTRO &&
                            //                a.DATAFINEVALIDITA >= tr.DATAPARTENZA)
                            //    .OrderBy(a => a.DATAINIZIOVALIDITA)
                            //    .ToList();

                            foreach (var cs in lcs)
                            {
                                if (cs.DATAINIZIOVALIDITA < tr.DATAPARTENZA)
                                {
                                    dtVar = tr.DATAPARTENZA;
                                }
                                else
                                {
                                    dtVar = cs.DATAINIZIOVALIDITA;
                                }

                                if (!lDateVariazioni.Contains(dtVar))
                                {
                                    lDateVariazioni.Add(dtVar);
                                    lDateVariazioni.Sort();
                                }
                            }
                            #endregion

                            #region Variazioni percentuale di disagio
                            var lperc = uf.PERCENTUALEDISAGIO
                                        .Where(a => a.ANNULLATO == false &&
                                               a.DATAINIZIOVALIDITA <= tr.DATARIENTRO &&
                                               a.DATAFINEVALIDITA >= tr.DATAPARTENZA)
                                        .OrderByDescending(a => a.DATAINIZIOVALIDITA)
                                        .ToList();

                            if (!lperc?.Any() ?? false)
                            {
                                throw new Exception("Errore: Percentuale di Disagio non trovata");
                            }
                            //var perc = lperc.First();

                            foreach (var pd in lperc)
                            {
                                if (pd.DATAINIZIOVALIDITA < tr.DATAPARTENZA)
                                {
                                    dtVar = tr.DATAPARTENZA;
                                }
                                else
                                {
                                    dtVar = pd.DATAINIZIOVALIDITA;
                                }

                                if (!lDateVariazioni.Contains(dtVar))
                                {
                                    lDateVariazioni.Add(dtVar);
                                    lDateVariazioni.Sort();
                                }
                            }
                            #endregion

                            #region Variazioni percentuale maggiorazione familiari
                            var mf = tr.MAGGIORAZIONIFAMILIARI;

                            var lattivazioneMF =
                                mf.ATTIVAZIONIMAGFAM.Where(
                                    a =>
                                    a.ANNULLATO == false && a.RICHIESTAATTIVAZIONE == true &&
                                    a.ATTIVAZIONEMAGFAM == true)
                                .OrderByDescending(a => a.IDATTIVAZIONEMAGFAM).ToList();

                            if (lattivazioneMF?.Any() ?? false)
                            {
                                #region Coniuge e Pensioni
                                var lc =
                                    mf.CONIUGE.Where(a =>
                                                     a.IDSTATORECORD == (decimal)EnumStatoRecord.Attivato &&
                                                     a.DATAINIZIOVALIDITA <= tr.DATARIENTRO &&
                                                     a.DATAFINEVALIDITA >= tr.DATAPARTENZA)
                                    .OrderBy(a => a.DATAINIZIOVALIDITA)
                                    .ToList();

                                if (lc?.Any() ?? false)
                                {
                                    foreach (var c in lc)
                                    {
                                        if (c.DATAINIZIOVALIDITA < tr.DATAPARTENZA)
                                        {
                                            dtVar = tr.DATAPARTENZA;
                                        }
                                        else
                                        {
                                            dtVar = c.DATAINIZIOVALIDITA;
                                        }

                                        if (!lDateVariazioni.Contains(dtVar))
                                        {
                                            lDateVariazioni.Add(dtVar);
                                        }

                                        var dtIni = (c.DATAINIZIOVALIDITA < tr.DATAPARTENZA) ? tr.DATAPARTENZA : c.DATAINIZIOVALIDITA;
                                        var dtFin = (c.DATAFINEVALIDITA > tr.DATARIENTRO) ? tr.DATARIENTRO : c.DATAFINEVALIDITA;

                                        var lpmc = c.PERCENTUALEMAGCONIUGE
                                                   .Where(a =>
                                                          a.ANNULLATO == false &&
                                                          a.IDTIPOLOGIACONIUGE == c.IDTIPOLOGIACONIUGE &&
                                                          a.DATAINIZIOVALIDITA <= dtFin &&
                                                          a.DATAFINEVALIDITA >= dtIni)
                                                   .OrderBy(a => a.DATAINIZIOVALIDITA)
                                                   .ToList();
                                        //.OrderByDescending(a => a.DATAINIZIOVALIDITA).ToList();

                                        if (lpmc?.Any() ?? false)
                                        {
                                            foreach (var pmc in lpmc)
                                            {
                                                if (pmc.DATAINIZIOVALIDITA < dtIni)
                                                {
                                                    dtVar = dtIni;
                                                }
                                                else
                                                {
                                                    dtVar = pmc.DATAINIZIOVALIDITA;
                                                }

                                                if (!lDateVariazioni.Contains(dtVar))
                                                {
                                                    lDateVariazioni.Add(dtVar);
                                                }
                                            }
                                        }

                                        var lpensioni = c.PENSIONE
                                                        .Where(a =>
                                                               a.IDSTATORECORD == (decimal)EnumStatoRecord.Attivato &&
                                                               a.NASCONDI == false &&
                                                               a.DATAINIZIO <= tr.DATARIENTRO &&
                                                               a.DATAFINE >= tr.DATAPARTENZA)
                                                        .OrderBy(a => a.DATAINIZIO)
                                                        .ToList();

                                        if (lpensioni?.Any() ?? false)
                                        {
                                            foreach (var pensioni in lpensioni)
                                            {
                                                if (pensioni.DATAINIZIO < tr.DATAPARTENZA)
                                                {
                                                    dtVar = tr.DATAPARTENZA;
                                                }
                                                else
                                                {
                                                    dtVar = pensioni.DATAINIZIO;
                                                }

                                                if (!lDateVariazioni.Contains(dtVar))
                                                {
                                                    lDateVariazioni.Add(dtVar);
                                                }
                                            }
                                        }
                                    }
                                }
                                #endregion

                                #region Figli
                                var lf = mf.FIGLI
                                         .Where(a =>
                                                a.IDSTATORECORD == (decimal)EnumStatoRecord.Attivato &&
                                                a.DATAINIZIOVALIDITA <= tr.DATARIENTRO &&
                                                a.DATAFINEVALIDITA >= tr.DATAPARTENZA)
                                         .OrderBy(a => a.DATAINIZIOVALIDITA)
                                         .ToList();

                                if (lf?.Any() ?? false)
                                {
                                    foreach (var f in lf)
                                    {
                                        if (f.DATAINIZIOVALIDITA < tr.DATAPARTENZA)
                                        {
                                            dtVar = tr.DATAPARTENZA;
                                        }
                                        else
                                        {
                                            dtVar = f.DATAINIZIOVALIDITA;
                                        }

                                        if (!lDateVariazioni.Contains(dtVar))
                                        {
                                            lDateVariazioni.Add(dtVar);
                                        }

                                        var dtIni = (f.DATAINIZIOVALIDITA < tr.DATAPARTENZA) ? tr.DATAPARTENZA : f.DATAINIZIOVALIDITA;
                                        var dtFin = (f.DATAFINEVALIDITA > tr.DATARIENTRO) ? tr.DATARIENTRO : f.DATAFINEVALIDITA;

                                        var lpmf = f.PERCENTUALEMAGFIGLI
                                                   .Where(a =>
                                                          a.ANNULLATO == false &&
                                                          a.DATAINIZIOVALIDITA <= dtFin &&
                                                          a.DATAFINEVALIDITA >= dtIni)
                                                   .OrderBy(a => a.DATAINIZIOVALIDITA)
                                                   .ToList();

                                        if (lpmf?.Any() ?? false)
                                        {
                                            foreach (var pmf in lpmf)
                                            {
                                                if (pmf.DATAINIZIOVALIDITA < dtIni)
                                                {
                                                    dtVar = dtIni;
                                                }
                                                else
                                                {
                                                    dtVar = pmf.DATAINIZIOVALIDITA;
                                                }

                                                if (!lDateVariazioni.Contains(dtVar))
                                                {
                                                    lDateVariazioni.Add(dtVar);
                                                }
                                            }
                                        }
                                    }
                                }
                                #endregion
                            }

                            #endregion

                            lDateVariazioni.Add(new DateTime(9999, 12, 31));

                            if (lDateVariazioni?.Any() ?? false)
                            {
                                #region cicla date variazione
                                for (int j = 0; j < lDateVariazioni.Count; j++)
                                {
                                    DateTime dv = lDateVariazioni[j];

                                    if (dv < Utility.DataFineStop())
                                    {
                                        DateTime dvSucc = lDateVariazioni[(j + 1)].AddDays(-1);

                                        using (CalcoliIndennita ci = new CalcoliIndennita(tr.IDTRASFERIMENTO, dv, db))
                                        {
                                            #region modello
                                            StoriaDipendenteNewModel ldvm = new StoriaDipendenteNewModel()
                                            {
                                                nome                   = d.COGNOME + " " + d.NOME + " (" + d.MATRICOLA + ")",
                                                dataAssunzione         = d.DATAASSUNZIONE,
                                                dataLettera            = tr.DATALETTERA,
                                                Ufficio                = uf.DESCRIZIONEUFFICIO,
                                                dataVariazione         = dv,
                                                valore                 = ci.CoefficienteDiSede,
                                                percentuale            = ci.PercentualeDisagio,
                                                IdLivello              = liv.IDLIVELLO,
                                                DescLivello            = liv.LIVELLI.LIVELLO,
                                                dataPartenza           = tr.DATAPARTENZA,
                                                dataRientro            = tr.DATARIENTRO,
                                                indennita              = ci.IndennitaDiBase,
                                                ValutaUfficio          = valutaufficio.VALUTE.DESCRIZIONEVALUTA,
                                                IndennitaBase          = ci.IndennitaDiBase,
                                                IndennitaPersonale     = ci.IndennitaPersonale,
                                                IndennitaServizio      = ci.IndennitaDiServizio,
                                                PensioneConiuge        = ci.PensioneConiuge,
                                                MaggiorazioniFamiliari = ci.MaggiorazioniFamiliari,
                                                PrimaSistemazione      = ci.IndennitaSistemazioneLorda
                                            };
                                            rim.Add(ldvm);

                                            #endregion
                                        }
                                    }
                                }
                                #endregion
                            }
                        }
                    }
                }
            }
            return(rim);
        }
예제 #4
0
        public IList <IndennitaServizioModel> GetIndennitaServizio2(decimal idTrasferimento)
        {
            List <IndennitaServizioModel> lism = new List <IndennitaServizioModel>();

            try
            {
                using (ModelDBISE db = new ModelDBISE())
                {
                    var trasferimento = db.TRASFERIMENTO.Find(idTrasferimento);
                    var indennita     = trasferimento.INDENNITA;

                    List <DateTime> lDateVariazioni = new List <DateTime>();

                    #region Lettura Variazioni di indennità di base

                    var ll =
                        db.TRASFERIMENTO.Find(idTrasferimento).INDENNITA.INDENNITABASE.Where(
                            a =>
                            a.ANNULLATO == false).OrderBy(a => a.IDLIVELLO)
                        .ThenBy(a => a.DATAINIZIOVALIDITA)
                        .ThenBy(a => a.DATAFINEVALIDITA).ToList();

                    foreach (var ib in ll)
                    {
                        DateTime dtVar = new DateTime();

                        if (ib.DATAINIZIOVALIDITA < trasferimento.DATAPARTENZA)
                        {
                            dtVar = trasferimento.DATAPARTENZA;
                        }
                        else
                        {
                            dtVar = ib.DATAINIZIOVALIDITA;
                        }


                        if (!lDateVariazioni.Contains(dtVar))
                        {
                            lDateVariazioni.Add(dtVar);
                        }
                    }

                    #endregion

                    #region Lettura Variazioni del coefficiente di sede

                    var lrd = db.TRASFERIMENTO.Find(idTrasferimento).INDENNITA.COEFFICIENTESEDE.Where(a => a.ANNULLATO == false).OrderBy(a => a.IDCOEFFICIENTESEDE).ThenBy(a => a.DATAINIZIOVALIDITA).ThenBy(a => a.DATAFINEVALIDITA).ToList();

                    foreach (var cs in lrd)
                    {
                        DateTime dtVar = new DateTime();

                        if (cs.DATAINIZIOVALIDITA < trasferimento.DATAPARTENZA)
                        {
                            dtVar = trasferimento.DATAPARTENZA;
                        }
                        else
                        {
                            dtVar = cs.DATAINIZIOVALIDITA;
                        }

                        if (!lDateVariazioni.Contains(dtVar))
                        {
                            lDateVariazioni.Add(dtVar);
                        }
                    }

                    #endregion

                    #region Lettura Variazioni percentuale di disagio

                    var perc = db.TRASFERIMENTO.Find(idTrasferimento).INDENNITA.PERCENTUALEDISAGIO.Where(a => a.ANNULLATO == false).ToList();

                    foreach (var pd in perc)
                    {
                        DateTime dtVar = new DateTime();

                        if (pd.DATAINIZIOVALIDITA < trasferimento.DATAPARTENZA)
                        {
                            dtVar = trasferimento.DATAPARTENZA;
                        }
                        else
                        {
                            dtVar = pd.DATAINIZIOVALIDITA;
                        }

                        if (!lDateVariazioni.Contains(dtVar))
                        {
                            lDateVariazioni.Add(dtVar);
                        }
                    }

                    #endregion


                    if (lDateVariazioni?.Any() ?? false)
                    {
                        lDateVariazioni =
                            lDateVariazioni.OrderBy(a => a.Year).ThenBy(a => a.Month).ThenBy(a => a.Day).ToList();

                        for (int j = 0; j < lDateVariazioni.Count; j++)
                        {
                            DateTime dv = lDateVariazioni[j];

                            using (CalcoliIndennita ci = new CalcoliIndennita(trasferimento.IDTRASFERIMENTO, dv, db))
                            {
                                //ELABINDENNITA ei = new ELABINDENNITA()
                                //{
                                //    IDTRASFINDENNITA = trasferimento.IDTRASFERIMENTO,
                                //    INDENNITABASE = ci.IndennitaDiBase,
                                //    COEFFICENTESEDE = ci.CoefficienteDiSede,
                                //    PERCENTUALEDISAGIO = ci.PercentualeDisagio,
                                //    PERCENTUALEMAGCONIUGE = ci.PercentualeMaggiorazioneConiuge,
                                //    PENSIONECONIUGE = ci.PensioneConiuge,
                                //    DATAOPERAZIONE = DateTime.Now,
                                //    ANNULLATO = false
                                //};

                                //    indennita.ELABINDENNITA.Add(ei);

                                var pd = new IndennitaServizioModel
                                {
                                    IndennitaBase     = ci.IndennitaDiBase,
                                    percentuale       = ci.PercentualeDisagio,
                                    valore            = ci.CoefficienteDiSede,
                                    IndennitaServizio = ci.IndennitaDiServizio
                                };

                                lism.Add(pd);
                            }
                        }
                    }
                }

                return(lism);
            }
            catch (Exception)
            {
                throw;
            }
        }
예제 #5
0
        public IList <IndennitaBaseModel> GetIndennitaPersonale(decimal idTrasferimento)
        {
            List <IndennitaBaseModel> libm = new List <IndennitaBaseModel>();

            try
            {
                using (ModelDBISE db = new ModelDBISE())
                {
                    var trasferimento = db.TRASFERIMENTO.Find(idTrasferimento);
                    var indennita     = trasferimento.INDENNITA;

                    //var ll = db.TRASFERIMENTO.Find(idTrasferimento).INDENNITA.INDENNITABASE
                    //    .Where(a => a.ANNULLATO == false)
                    //    .OrderBy(a => a.IDLIVELLO)
                    //    .ThenBy(a => a.DATAINIZIOVALIDITA)
                    //    .ThenBy(a => a.DATAFINEVALIDITA).ToList();

                    var ll = db.TRASFERIMENTO.Find(idTrasferimento).INDENNITA.INDENNITABASE
                             .Where(a => a.ANNULLATO == false).ToList();


                    using (dtTrasferimento dttrasf = new dtTrasferimento())
                    {
                        using (CalcoliIndennita ci = new CalcoliIndennita(trasferimento.IDTRASFERIMENTO))
                        {
                            dipInfoTrasferimentoModel dipInfoTrasf = dttrasf.GetInfoTrasferimento(idTrasferimento);

                            libm = (from e in ll
                                    select new IndennitaBaseModel()
                            {
                                idIndennitaBase = e.IDINDENNITABASE,
                                idLivello = e.IDLIVELLO,
                                dataInizioValidita = e.DATAINIZIOVALIDITA,
                                dataFineValidita = e.DATAFINEVALIDITA == Utility.DataFineStop() ? new DateTime?() : e.DATAFINEVALIDITA,
                                valore = e.VALORE,
                                valoreResponsabile = e.VALORERESP,
                                dataAggiornamento = e.DATAAGGIORNAMENTO,
                                annullato = e.ANNULLATO,
                                dipInfoTrasferimento = new dipInfoTrasferimentoModel
                                {
                                    Decorrenza = dipInfoTrasf.Decorrenza,
                                    indennitaPersonale = dipInfoTrasf.indennitaPersonale,
                                    indennitaServizio = dipInfoTrasf.indennitaServizio,
                                    maggiorazioniFamiliari = dipInfoTrasf.maggiorazioniFamiliari
                                },
                                EvoluzioneIndennita = new EvoluzioneIndennitaModel
                                {
                                    IndennitaServizio = ci.IndennitaDiServizio,
                                    //MaggiorazioniFamiliari = ci.MaggiorazioniFamiliari,
                                    IndennitaPersonale = ci.IndennitaPersonale
                                }
                            }).ToList();
                        }
                    }

                    return(libm);
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
예제 #6
0
        public IList <OpDipEsteroModel> GetOpDipEsteroNew(DateTime dtRif, decimal idUfficio, ModelDBISE db)
        {
            List <OpDipEsteroModel> rim    = new List <OpDipEsteroModel>();
            List <TRASFERIMENTO>    ltrasf = new List <TRASFERIMENTO>();

            if (idUfficio > 0)
            {
                ltrasf = db.TRASFERIMENTO.Where(a => a.IDSTATOTRASFERIMENTO != (decimal)EnumStatoTraferimento.Annullato &&
                                                a.IDSTATOTRASFERIMENTO != (decimal)EnumStatoTraferimento.Da_Attivare &&
                                                a.DATAPARTENZA <= dtRif &&
                                                a.DATARIENTRO >= dtRif &&
                                                a.IDUFFICIO == idUfficio).ToList();
            }
            else
            {
                ltrasf = db.TRASFERIMENTO.Where(a => a.IDSTATOTRASFERIMENTO != (decimal)EnumStatoTraferimento.Annullato &&
                                                a.IDSTATOTRASFERIMENTO != (decimal)EnumStatoTraferimento.Da_Attivare &&
                                                a.DATAPARTENZA <= dtRif &&
                                                a.DATARIENTRO >= dtRif)
                         .ToList();
            }


            if (ltrasf?.Any() ?? false)
            {
                foreach (var t in ltrasf)
                {
                    #region Valuta Ufficio alla dataRif
                    var lv = t.UFFICI.VALUTAUFFICIO
                             .Where(a => a.ANNULLATO == false &&
                                    a.DATAINIZIOVALIDITA <= dtRif &&
                                    a.DATAFINEVALIDITA >= dtRif)
                             .OrderBy(a => a.DATAINIZIOVALIDITA)
                             .ToList();

                    if (!lv?.Any() ?? false)
                    {
                        throw new Exception("Errore: Valuta Ufficio non trovata");
                    }
                    var rv         = lv.First();
                    var descValuta = rv.VALUTE.DESCRIZIONEVALUTA;
                    //var rufficio = ufficio.First();
                    #endregion

                    #region livello alla dataRif
                    var dip     = t.DIPENDENTI;
                    var llivdip = t.DIPENDENTI.LIVELLIDIPENDENTI
                                  .Where(a =>
                                         a.ANNULLATO == false &&
                                         a.DATAINIZIOVALIDITA <= dtRif &&
                                         a.DATAFINEVALIDITA >= dtRif)
                                  .OrderByDescending(a => a.DATAINIZIOVALIDITA)
                                  .ToList();

                    var livdip      = llivdip.First();
                    var descLivello = livdip.LIVELLI.LIVELLO;

                    #endregion

                    using (CalcoliIndennita ci = new CalcoliIndennita(t.IDTRASFERIMENTO, dtRif, db))
                    {
                        OpDipEsteroModel ldvm = new OpDipEsteroModel()
                        {
                            sede               = t.UFFICI.DESCRIZIONEUFFICIO,
                            valuta             = descValuta,
                            matricola          = t.DIPENDENTI.MATRICOLA,
                            nominativo         = t.DIPENDENTI.COGNOME + " " + t.DIPENDENTI.NOME + " (" + t.DIPENDENTI.MATRICOLA + ")",
                            data_trasferimento = Convert.ToDateTime(t.DATAPARTENZA).ToShortDateString(),
                            //qualifica = qualif.LIVELLI.LIVELLO,
                            qualifica          = descLivello,
                            IndennitaPersonale = ci.IndennitaPersonale,
                            PercMaggConiuge    = ci.PercentualeMaggiorazioneConiuge,
                            PercNumFigli       = ci.PercentualeMaggiorazioneFigli,
                            MaggConiuge        = ci.MaggiorazioneConiuge,
                            MaggFigli          = ci.MaggiorazioneFigli
                        };
                        rim.Add(ldvm);
                    }
                }
            }

            return(rim);
        }
예제 #7
0
        public AnticipiViewModel GetAnticipi(decimal idAttivitaAnticipi, ModelDBISE db)
        {
            try
            {
                AnticipiViewModel avm = new AnticipiViewModel();
                ANTICIPI          a   = new ANTICIPI();

                var t = db.ATTIVITAANTICIPI.Find(idAttivitaAnticipi).PRIMASITEMAZIONE.TRASFERIMENTO;
                var idTrasferimento = t.IDTRASFERIMENTO;

                using (CalcoliIndennita ci = new CalcoliIndennita(idTrasferimento, t.DATAPARTENZA))
                {
                    //verifica se è l'importo è stato gia pagato

                    var lteorici = t.TEORICI.Where(x =>
                                                   x.VOCI.IDTIPOLIQUIDAZIONE == (decimal)EnumTipoLiquidazione.Contabilità &&
                                                   //x.ELABORATO &&
                                                   x.DIRETTO &&
                                                   x.IDVOCI == (decimal)EnumVociContabili.Ind_Prima_Sist_IPS &&
                                                   x.INSERIMENTOMANUALE == false &&
                                                   x.ANNULLATO == false &&
                                                   x.ELABINDSISTEMAZIONE.CONGUAGLIO == false &&
                                                   x.ELABINDSISTEMAZIONE.ANTICIPO &&
                                                   x.ANNORIFERIMENTO == t.DATAPARTENZA.Year &&
                                                   x.MESERIFERIMENTO == t.DATAPARTENZA.Month)
                                   .ToList();

                    decimal importoPrevisto = 0;
                    if (lteorici?.Any() ?? false)
                    {
                        var teorici = lteorici.First();
                        importoPrevisto = teorici.IMPORTOLORDO;
                    }
                    else
                    {
                        importoPrevisto = Math.Round(ci.IndennitaSistemazioneAnticipabileLorda, 2);
                    }

                    var al = db.ANTICIPI.Where(x => x.IDATTIVITAANTICIPI == idAttivitaAnticipi).ToList();

                    if (al?.Any() ?? false)
                    {
                        a = al.First();

                        avm = new AnticipiViewModel()
                        {
                            idAttivitaAnticipi           = a.IDATTIVITAANTICIPI,
                            idTipologiaAnticipi          = a.IDTIPOLOGIAANTICIPI,
                            dataAggiornamento            = a.DATAAGGIORNAMENTO,
                            annullato                    = a.ANNULLATO,
                            ImportoPrevisto              = importoPrevisto,
                            PercentualeAnticipoRichiesto = a.PERCENTUALEANTICIPO
                        };
                    }
                    else
                    {
                        a = this.CreaAnticipi(idAttivitaAnticipi, db);

                        var new_avm = new AnticipiViewModel()
                        {
                            idAttivitaAnticipi           = a.IDATTIVITAANTICIPI,
                            idTipologiaAnticipi          = a.IDTIPOLOGIAANTICIPI,
                            dataAggiornamento            = a.DATAAGGIORNAMENTO,
                            annullato                    = a.ANNULLATO,
                            ImportoPrevisto              = importoPrevisto,
                            PercentualeAnticipoRichiesto = a.PERCENTUALEANTICIPO
                        };

                        avm = new_avm;
                    }
                }

                return(avm);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        public ActionResult VariazioneTEP(decimal idTEPartenza)
        {
            try
            {
                using (ModelDBISE db = new ModelDBISE())
                {
                    using (dtVariazioneTrasportoEffetti dtvte = new dtVariazioneTrasportoEffetti())
                    {
                        using (dtTrasferimento dtt = new dtTrasferimento())
                        {
                            bool    richiestaTE       = false;
                            bool    attivazioneTE     = false;
                            bool    DocAttestazione   = false;
                            bool    trasfAnnullato    = false;
                            bool    siAnticipo        = false;
                            bool    rinunciaTE        = false;
                            decimal anticipoPercepito = 0;

                            VariazioneTEPartenzaModel vtepm = new VariazioneTEPartenzaModel();

                            var atep = dtvte.GetUltimaAttivazioneTEPartenza(idTEPartenza, db);

                            dtvte.SituazioneTEPartenza(idTEPartenza,
                                                       out richiestaTE,
                                                       out attivazioneTE,
                                                       out DocAttestazione,
                                                       out siAnticipo,
                                                       out anticipoPercepito,
                                                       out rinunciaTE,
                                                       out trasfAnnullato);

                            var tm = dtt.GetTrasferimentoByIdTEPartenza(idTEPartenza);

                            var t = dtt.GetTrasferimento(tm.idTrasferimento, db);

                            //legge indennita PS su TEORICI
                            var lteorici = t.TEORICI.Where(x =>
                                                           x.VOCI.IDTIPOLIQUIDAZIONE == (decimal)EnumTipoLiquidazione.Paghe &&
                                                           //x.ELABORATO &&
                                                           x.DIRETTO == false &&
                                                           x.IDVOCI == (decimal)EnumVociCedolino.Trasp_Mass_Partenza_Rientro_162_131 &&
                                                           x.INSERIMENTOMANUALE == false &&
                                                           x.ANNULLATO == false &&
                                                           x.ELABTRASPEFFETTI.CONGUAGLIO == false &&
                                                           x.ELABTRASPEFFETTI.SALDO &&
                                                           x.ELABTRASPEFFETTI.IDTEPARTENZA > 0 &&
                                                           x.ANNORIFERIMENTO == t.DATAPARTENZA.Year &&
                                                           x.MESERIFERIMENTO == t.DATAPARTENZA.Month)
                                           .ToList();

                            decimal indennitaPS            = 0;
                            decimal percentualeFKMPartenza = 0;
                            decimal contributoLordo        = 0;

                            if (lteorici?.Any() ?? false)
                            {
                                var teorici = lteorici.First();
                                indennitaPS            = teorici.IMPORTOLORDO;
                                percentualeFKMPartenza = teorici.ELABTRASPEFFETTI.PERCENTUALEFK;
                                contributoLordo        = indennitaPS * percentualeFKMPartenza / 100;
                            }
                            else
                            {
                                CalcoliIndennita ci = new CalcoliIndennita(tm.idTrasferimento, tm.dataPartenza);

                                indennitaPS            = ci.IndennitaSistemazioneLorda;
                                percentualeFKMPartenza = ci.PercentualeFKMPartenza;
                                //contributoLordo = ci.TotaleContributoOmnicomprensivoPartenza;
                                contributoLordo = indennitaPS * percentualeFKMPartenza / 100;
                            }

                            vtepm.indennitaPrimaSistemazione = Math.Round(indennitaPS, 2);
                            vtepm.percKM            = percentualeFKMPartenza;
                            vtepm.contributoLordo   = Math.Round(contributoLordo, 2);
                            vtepm.anticipoPercepito = anticipoPercepito;
                            vtepm.saldo             = Math.Round(vtepm.contributoLordo - vtepm.anticipoPercepito, 2);

                            //se ho rinunciato imposto la form con dati a zero e blocco l'inserimento di documenti
                            if (rinunciaTE)
                            {
                                siAnticipo = false;
                                vtepm.anticipoPercepito = 0;
                                vtepm.saldo             = 0;
                            }

                            vtepm.siAnticipo = siAnticipo;

                            ViewData.Add("richiestaTE", richiestaTE);
                            ViewData.Add("rinunciaTE", rinunciaTE);
                            ViewData.Add("attivazioneTE", attivazioneTE);
                            ViewData.Add("DocAttestazione", DocAttestazione);
                            ViewData.Add("idTEPartenza", idTEPartenza);

                            return(PartialView(vtepm));
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                return(PartialView("ErrorPartial", new MsgErr()
                {
                    msg = ex.Message
                }));
            }
        }
        public ActionResult TrasportoEffettiRientro(decimal idTERientro)
        {
            try
            {
                using (ModelDBISE db = new ModelDBISE())
                {
                    using (dtTrasportoEffetti dtte = new dtTrasportoEffetti())
                    {
                        using (dtTrasferimento dtt = new dtTrasferimento())
                        {
                            bool richiestaTER      = false;
                            bool attivazioneTER    = false;
                            bool DocContributo     = false;
                            bool trasfAnnullato    = false;
                            bool rinunciaTERientro = false;

                            TrasportoEffettiRientroModel term = new TrasportoEffettiRientroModel();

                            var atep = dtte.GetUltimaAttivazioneTERientro(idTERientro);

                            dtte.SituazioneTERientro(idTERientro,
                                                     out richiestaTER, out attivazioneTER,
                                                     out DocContributo,
                                                     out trasfAnnullato, out rinunciaTERientro);

                            var tm = dtt.GetTrasferimentoByIdTERientro(idTERientro);

                            var t = dtt.GetTrasferimento(tm.idTrasferimento, db);

                            //legge indennita PS su TEORICI
                            var lteorici = t.TEORICI.Where(x =>
                                                           x.VOCI.IDTIPOLIQUIDAZIONE == (decimal)EnumTipoLiquidazione.Paghe &&
                                                           //x.ELABORATO &&
                                                           x.DIRETTO == false &&
                                                           x.IDVOCI == (decimal)EnumVociCedolino.Trasp_Mass_Partenza_Rientro_162_131 &&
                                                           x.INSERIMENTOMANUALE == false &&
                                                           x.ANNULLATO == false &&
                                                           x.ELABTRASPEFFETTI.CONGUAGLIO == false &&
                                                           x.ELABTRASPEFFETTI.ANTICIPO &&
                                                           x.ELABTRASPEFFETTI.IDTERIENTRO > 0 &&
                                                           x.ANNORIFERIMENTO == t.DATARIENTRO.Year &&
                                                           x.MESERIFERIMENTO == t.DATARIENTRO.Month)
                                           .ToList();

                            decimal indennitaRichiamo     = 0;
                            decimal percentualeFKMRientro = 0;
                            decimal percentualeAnticipoTE = 0;
                            decimal contributoLordo       = 0;

                            if (lteorici?.Any() ?? false)
                            {
                                var teorici = lteorici.First();
                                indennitaRichiamo     = teorici.IMPORTOLORDO;
                                percentualeFKMRientro = teorici.ELABTRASPEFFETTI.PERCENTUALEFK;
                                contributoLordo       = indennitaRichiamo * percentualeFKMRientro / 100;
                                percentualeAnticipoTE = teorici.ELABTRASPEFFETTI.PERCENTUALEANTICIPOSALDO;
                            }
                            else
                            {
                                CalcoliIndennita ci = new CalcoliIndennita(tm.idTrasferimento, tm.dataRientro);

                                indennitaRichiamo     = ci.IndennitaRichiamoLordo;
                                percentualeFKMRientro = ci.PercentualeFKMRientro;
                                contributoLordo       = indennitaRichiamo * percentualeFKMRientro / 100;
                                percentualeAnticipoTE = dtte.GetPercentualeAnticipoTERientro(idTERientro, (decimal)EnumTipoAnticipoTE.Rientro).PERCENTUALE;
                            }

                            term.indennitaRichiamo = Math.Round(indennitaRichiamo, 2);
                            term.percKM            = percentualeFKMRientro;
                            term.contributoLordo   = Math.Round(contributoLordo, 2);
                            term.percAnticipo      = percentualeAnticipoTE;
                            term.anticipo          = Math.Round(term.percAnticipo * term.contributoLordo / 100, 2);

                            ViewData.Add("rinunciaTERientro", rinunciaTERientro);
                            ViewData.Add("richiestaTER", richiestaTER);
                            ViewData.Add("attivazioneTER", attivazioneTER);
                            ViewData.Add("DocContributo", DocContributo);
                            ViewData.Add("idTERientro", idTERientro);

                            return(PartialView(term));
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                return(PartialView("ErrorPartial", new MsgErr()
                {
                    msg = ex.Message
                }));
            }
        }