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
                }));
            }
        }