public ActionResult TabDocumentiVariazioneTERInseriti(decimal idTERientro, decimal idTipoDocumento)
        {
            List <VariazioneDocumentiModel> ldm = new List <VariazioneDocumentiModel>();

            string DescrizioneTE = "";

            try
            {
                using (dtVariazioneTrasportoEffetti dtvte = new dtVariazioneTrasportoEffetti())
                {
                    ldm = dtvte.GetDocumentiTERientro(idTERientro, idTipoDocumento);
                }


                using (dtDocumenti dtd = new dtDocumenti())
                {
                    DescrizioneTE = dtd.GetDescrizioneTipoDocumentoByIdTipoDocumento(idTipoDocumento);
                }
            }
            catch (Exception ex)
            {
                return(PartialView("ErrorPartial", new MsgErr()
                {
                    msg = ex.Message
                }));
            }
            ViewData.Add("DescrizioneTE", DescrizioneTE);
            ViewData.Add("idTipoDocumento", idTipoDocumento);
            ViewData.Add("idTERientro", idTERientro);

            return(PartialView(ldm));
        }
        public JsonResult ConfermaAnnullaRichiestaVariazioneTER(decimal idTERientro, string msg)
        {
            string errore = "";

            try
            {
                using (ModelDBISE db = new ModelDBISE())
                {
                    using (dtVariazioneTrasportoEffetti dtvte = new dtVariazioneTrasportoEffetti())
                    {
                        decimal idAttivazione_notificata = dtvte.GetUltimaAttivazioneTERientro(idTERientro, db).IDATERIENTRO;

                        dtvte.AnnullaRichiestaVariazioneTER(idAttivazione_notificata, msg, db);
                    }
                }
            }
            catch (Exception ex)
            {
                errore = ex.Message;
            }

            return
                (Json(
                     new
            {
                err = errore
            }));
        }
        public ActionResult ElencoDocumentiVariazioneTEP(decimal idTipoDocumento, decimal idTEPartenza)
        {
            try
            {
                string DescrizioneTE = "";
                bool   richiestaVariazioneTEPartenza   = false;
                bool   attivazioneVariazioneTEPartenza = false;
                //decimal NumAttivazioniTEPartenza = 0;
                decimal idStatoTrasferimento = 0;
                //bool rinunciaTEPartenza = false;

                using (dtTrasferimento dtt = new dtTrasferimento())
                {
                    var t = dtt.GetTrasferimentoByIdTEPartenza(idTEPartenza);
                    idStatoTrasferimento = (decimal)t.idStatoTrasferimento;
                }

                using (dtDocumenti dtd = new dtDocumenti())
                {
                    DescrizioneTE = dtd.GetDescrizioneTipoDocumentoByIdTipoDocumento(idTipoDocumento);
                }

                using (ModelDBISE db = new ModelDBISE())
                {
                    using (dtVariazioneTrasportoEffetti dtvte = new dtVariazioneTrasportoEffetti())
                    {
                        var atep = dtvte.GetUltimaAttivazioneTEPartenza(idTEPartenza, db);
                        if (atep.RICHIESTATRASPORTOEFFETTI && atep.ATTIVAZIONETRASPORTOEFFETTI == false)
                        {
                            richiestaVariazioneTEPartenza = true;
                        }
                        if (atep.RICHIESTATRASPORTOEFFETTI && atep.ATTIVAZIONETRASPORTOEFFETTI)
                        {
                            attivazioneVariazioneTEPartenza = true;
                            richiestaVariazioneTEPartenza   = true;
                        }

                        //NumAttivazioniTEPartenza = dtvte.GetNumAttivazioniTEPartenza(idTEPartenza);
                    }
                }

                ViewData.Add("DescrizioneTE", DescrizioneTE);
                ViewData.Add("idTipoDocumento", idTipoDocumento);
                ViewData.Add("idTEPartenza", idTEPartenza);
                ViewData.Add("idStatoTrasferimento", idStatoTrasferimento);
                ViewData.Add("richiestaVariazioneTEPartenza", richiestaVariazioneTEPartenza);
                ViewData.Add("attivazioneVariazioneTEPartenza", attivazioneVariazioneTEPartenza);
                //ViewData.Add("NumAttivazioniTEPartenza", NumAttivazioniTEPartenza);


                return(PartialView());
            }
            catch (Exception ex)
            {
                return(PartialView("ErrorPartial", new MsgErr()
                {
                    msg = ex.Message
                }));
            }
        }
        public JsonResult ConfermaNotificaRichiestaVariazioneTEP(decimal idTEPartenza)
        {
            string errore = "";

            try
            {
                using (ModelDBISE db = new ModelDBISE())
                {
                    using (dtVariazioneTrasportoEffetti dtvte = new dtVariazioneTrasportoEffetti())
                    {
                        decimal idAttivitaTEPartenza = dtvte.GetUltimaAttivazioneTEPartenza(idTEPartenza, db).IDATEPARTENZA;
                        dtvte.NotificaRichiestaVariazioneTEP(idAttivitaTEPartenza, db);
                    }
                }
            }
            catch (Exception ex)
            {
                errore = ex.Message;
            }

            return
                (Json(
                     new
            {
                err = errore
            }));
        }
        public JsonResult GestionePulsantiNotificaAttivaAnnullaVariazioneTER(decimal idTERientro)
        {
            bool    amministratore    = false;
            string  errore            = "";
            bool    richiestaTER      = false;
            bool    attivazioneTER    = false;
            bool    DocAttestazione   = false;
            bool    trasfAnnullato    = false;
            bool    siAnticipo        = false;
            bool    rinunciaTER       = false;
            decimal anticipoPercepito = 0;

            try
            {
                amministratore = Utility.Amministratore();

                using (dtVariazioneTrasportoEffetti dtvte = new dtVariazioneTrasportoEffetti())
                {
                    dtvte.SituazioneTERientro(idTERientro,
                                              out richiestaTER,
                                              out attivazioneTER,
                                              out DocAttestazione,
                                              out siAnticipo,
                                              out anticipoPercepito,
                                              out rinunciaTER,
                                              out trasfAnnullato);

                    ////TEST
                    //siAnticipo = true;
                    ////
                }
            }
            catch (Exception ex)
            {
                errore = ex.Message;
            }

            return
                (Json(
                     new
            {
                admin = amministratore,
                richiestaTER = richiestaTER,
                attivazioneTER = attivazioneTER,
                DocAttestazione = DocAttestazione,
                trasfAnnullato = trasfAnnullato,
                siAnticipo = siAnticipo,
                rinunciaTER = rinunciaTER,
                anticipoPercepito = anticipoPercepito,
                err = errore
            }));
        }
        public JsonResult EliminaDocumentoVariazioneTER(decimal idDocumento)
        {
            using (ModelDBISE db = new ModelDBISE())
            {
                db.Database.BeginTransaction();

                try
                {
                    using (dtVariazioneTrasportoEffetti dtvte = new dtVariazioneTrasportoEffetti())
                    {
                        dtvte.DeleteDocumentoVariazioneTER(idDocumento);
                    }
                    db.Database.CurrentTransaction.Commit();
                    return(Json(new { msg = "Il documento relativo al saldo trasporto effetti (rientro) è stato eliminato." }));
                }
                catch (Exception ex)
                {
                    db.Database.CurrentTransaction.Rollback();
                    return(Json(new { err = ex.Message }));
                }
            }
        }
        public ActionResult VariazioneTERientro(decimal idTrasferimento)
        {
            try
            {
                using (dtVariazioneTrasportoEffetti dtvte = new dtVariazioneTrasportoEffetti())
                {
                    var idTERientro = dtvte.GetTERientroByIdTrasferimento(idTrasferimento).idTERientro;
                    if (idTERientro > 0)
                    {
                        ViewData.Add("idTrasferimento", idTrasferimento);
                        ViewData.Add("idTERientro", idTERientro);
                    }

                    return(PartialView());
                }
            }
            catch (Exception ex)
            {
                return(PartialView("ErrorPartial", new MsgErr()
                {
                    msg = ex.Message
                }));
            }
        }
        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 JsonResult SalvaDocumentoVariazioneTER(decimal idTipoDocumento, decimal idTERientro)
        {
            using (ModelDBISE db = new ModelDBISE())
            {
                try
                {
                    db.Database.BeginTransaction();

                    foreach (string item in Request.Files)
                    {
                        HttpPostedFileBase file = Request.Files[item] as HttpPostedFileBase;

                        using (dtVariazioneTrasportoEffetti dtvte = new dtVariazioneTrasportoEffetti())
                        {
                            using (dtDocumenti dtd = new dtDocumenti())
                            {
                                DocumentiModel dm                      = new DocumentiModel();
                                bool           esisteFile              = false;
                                bool           gestisceEstensioni      = false;
                                bool           dimensioneConsentita    = false;
                                string         dimensioneMaxConsentita = string.Empty;

                                PreSetDocumentoTERientro(file, out dm, out esisteFile, out gestisceEstensioni,
                                                         out dimensioneConsentita, out dimensioneMaxConsentita, idTipoDocumento);

                                if (esisteFile)
                                {
                                    if (gestisceEstensioni == false)
                                    {
                                        throw new Exception(
                                                  "Il documento selezionato non è nel formato consentito. Il formato supportato è: pdf.");
                                    }

                                    if (dimensioneConsentita)
                                    {
                                        dtvte.SetDocumentoVariazioniTER(ref dm, idTERientro, db, idTipoDocumento);
                                    }
                                    else
                                    {
                                        throw new Exception(
                                                  "Il documento selezionato supera la dimensione massima consentita (" +
                                                  dimensioneMaxConsentita + " Mb).");
                                    }
                                }
                                else
                                {
                                    throw new Exception("Il documento è obbligatorio.");
                                }
                            }
                        }
                    }
                    db.Database.CurrentTransaction.Commit();
                    return(Json(new { }));
                }
                catch (Exception ex)
                {
                    db.Database.CurrentTransaction.Rollback();
                    return(Json(new { error = ex.Message }));
                };
            }
        }