예제 #1
0
        public ActionResult AttivitaRiepilogoVoci(decimal idTrasferimento)
        {
            try
            {
                using (dtTrasferimento dtt = new dtTrasferimento())
                {
                    var tr = dtt.GetTrasferimentoById(idTrasferimento);
                    using (dtDipendenti dtd = new dtDipendenti())
                    {
                        var d = dtd.GetDipendenteByIDTrasf(idTrasferimento);
                        if (tr != null && tr.HasValue())
                        {
                            ViewBag.idTrasferimento = tr.idTrasferimento;
                        }
                        else
                        {
                            throw new Exception("Nessun trasferimento per la matricola (" + d.matricola + ")");
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                return(PartialView("ErrorPartial", new MsgErr()
                {
                    msg = ex.Message
                }));
            }



            return(PartialView());
        }
예제 #2
0
        public ActionResult MessaggioAnnullaProvvidenzeScolastiche(decimal idTrasfProvScolastiche)
        {
            ModelloMsgMail msg = new ModelloMsgMail();

            try
            {
                using (dtDipendenti dtd = new dtDipendenti())
                {
                    using (dtTrasferimento dtt = new dtTrasferimento())
                    {
                        using (dtUffici dtu = new dtUffici())
                        {
                            var t = dtt.GetTrasferimentoByIDProvvScolastiche(idTrasfProvScolastiche);

                            if (t?.idTrasferimento > 0)
                            {
                                var dip = dtd.GetDipendenteByID(t.idDipendente);
                                var uff = dtu.GetUffici(t.idUfficio);

                                msg.corpoMsg = string.Format(Resources.msgEmail.MessaggioAnnullaRichiestaProvvidenzeScolastiche, uff.descUfficio + " (" + uff.codiceUfficio + ")", t.dataPartenza);
                            }
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                return(PartialView("ErrorPartial", new MsgErr()
                {
                    msg = ex.Message
                }));
            }
            return(PartialView(msg));
        }
        public ActionResult MessaggioAnnullaMF(decimal idAttMagFam)
        {
            ModelloMsgMail msg = new ModelloMsgMail();

            try
            {
                using (dtDipendenti dtd = new dtDipendenti())
                {
                    using (dtTrasferimento dtt = new dtTrasferimento())
                    {
                        using (dtUffici dtu = new dtUffici())
                        {
                            var t = dtt.GetTrasferimentoByIdAttMagFam(idAttMagFam);

                            if (t?.idTrasferimento > 0)
                            {
                                var dip = dtd.GetDipendenteByID(t.idDipendente);
                                var uff = dtu.GetUffici(t.idUfficio);

                                msg.corpoMsg            = string.Format(Resources.msgEmail.MessaggioAnnullaRichiestaMaggiorazioniFamiliari, uff.descUfficio + " (" + uff.codiceUfficio + ")", t.dataPartenza.ToShortDateString());
                                ViewBag.idTrasferimento = t.idTrasferimento;
                            }
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                return(PartialView("ErrorPartial", new MsgErr()
                {
                    msg = ex.Message
                }));
            }
            return(PartialView(msg));
        }
예제 #4
0
        public ActionResult MessaggioAnnullaTV(decimal idTitoliViaggio)
        {
            ModelloMsgMail msg = new ModelloMsgMail();

            try
            {
                using (ModelDBISE db = new ModelDBISE())
                {
                    using (dtTitoliViaggi dttv = new dtTitoliViaggi())
                    {
                        using (dtDipendenti dtd = new dtDipendenti())
                        {
                            using (dtTrasferimento dtt = new dtTrasferimento())
                            {
                                using (dtUffici dtu = new dtUffici())
                                {
                                    var t = dtt.GetTrasferimentoByIdTitoloViaggio(idTitoliViaggio);

                                    if (t?.idTrasferimento > 0)
                                    {
                                        var dip = dtd.GetDipendenteByID(t.idDipendente);
                                        var uff = dtu.GetUffici(t.idUfficio);

                                        var    conta_attivazioni = dttv.GetNumAttivazioniTV(idTitoliViaggio, db);
                                        string messaggioAnnulla  = "";

                                        if (conta_attivazioni == 1)
                                        {
                                            messaggioAnnulla = Resources.msgEmail.MessaggioAnnullaRichiestaInizialeTitoloViaggio;
                                        }
                                        else
                                        {
                                            messaggioAnnulla = Resources.msgEmail.MessaggioAnnullaRichiestaSuccessivaTitoloViaggio;
                                        }
                                        msg.corpoMsg            = string.Format(messaggioAnnulla, uff.descUfficio + " (" + uff.codiceUfficio + ")", t.dataPartenza.ToShortDateString());
                                        ViewBag.idTrasferimento = t.idTrasferimento;
                                        ViewBag.idTitoliViaggio = idTitoliViaggio;
                                    }
                                }
                            }
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                return(PartialView("ErrorPartial", new MsgErr()
                {
                    msg = ex.Message
                }));
            }
            return(PartialView(msg));
        }
예제 #5
0
        public JsonResult PrelevaMatricole(string search)
        {
            List <Select2Model>    ls2   = new List <Select2Model>();
            List <DipendentiModel> ldipm = new List <DipendentiModel>();


            try
            {
                using (dtDipendenti dtd = new dtDipendenti())
                {
                    ldipm = dtd.GetDipendentiAnyTrasf().ToList();


                    foreach (var dipm in ldipm)
                    {
                        Select2Model s2 = new Select2Model()
                        {
                            id   = dipm.idDipendente.ToString(),
                            text = dipm.Nominativo + " (" + dipm.matricola + ")",
                        };

                        ls2.Add(s2);
                    }

                    if (search != null && search != string.Empty)
                    {
                        ls2 = ls2.Where(a => a.text.ToUpper().Contains(search.ToUpper())).ToList();
                    }
                }
            }
            catch (Exception ex)
            {
                return(Json(new { results = new List <Select2Model>(), err = ex.Message }));
            }

            return(Json(new { results = ls2, err = "" }));
        }
예제 #6
0
        public ActionResult DipendentiGepe(string matricola = "")
        {
            var  rMatricola            = new List <SelectListItem>();
            var  rNominativo           = new List <SelectListItem>();
            bool admin                 = false;
            List <DipendentiModel> ldm = new List <DipendentiModel>();
            DipendentiModel        dm  = new DipendentiModel();
            AccountModel           ac  = new AccountModel();

            try
            {
                admin = Utility.Amministratore(out ac);

                using (dtDipendenti dtd = new dtDipendenti())
                {
                    if (!admin)
                    {
                        ldm.Add(dtd.GetDipendenteByMatricola(Convert.ToInt16(ac.utente)));
                    }
                    else if (matricola != string.Empty && admin == false)
                    {
                        ldm.Add(dtd.GetDipendenteByMatricola(Convert.ToInt16(matricola)));
                    }
                    else
                    {
                        ldm = dtd.GetDipendenti().ToList();
                    }

                    if (ldm.Count > 0)
                    {
                        foreach (var item in ldm)
                        {
                            rMatricola.Add(new SelectListItem()
                            {
                                Text  = item.matricola.ToString(),
                                Value = item.matricola.ToString()
                            });

                            rNominativo.Add(new SelectListItem()
                            {
                                Text  = item.Nominativo + " (" + item.matricola.ToString() + ")",
                                Value = item.matricola.ToString()
                            });
                        }

                        rMatricola.Insert(0, new SelectListItem()
                        {
                            Text = "", Value = ""
                        });

                        rNominativo.Insert(0, new SelectListItem()
                        {
                            Text = "", Value = ""
                        });

                        if (matricola == string.Empty)
                        {
                            rMatricola.First().Selected  = true;
                            rNominativo.First().Selected = true;
                        }
                        else
                        {
                            foreach (var item in rMatricola)
                            {
                                if (matricola == item.Value)
                                {
                                    item.Selected = true;
                                }
                            }

                            foreach (var item in rNominativo)
                            {
                                if (matricola == item.Value)
                                {
                                    item.Selected = true;
                                }
                            }
                        }
                    }
                }


                if (matricola != string.Empty)
                {
                    dm = ldm.Where(a => a.matricola == Convert.ToInt16(matricola)).First();

                    using (dtCDCGepe dtcdcg = new dtCDCGepe())
                    {
                        dm.cdcGepe = dtcdcg.GetCDCGepe(dm.idDipendente);
                    }

                    using (dtLivelliDipendente dtpl = new dtLivelliDipendente())
                    {
                        dm.livelloDipendenteValido = dtpl.GetLivelloDipendente(dm.idDipendente, DateTime.Now.Date);
                    }
                }


                //ViewBag.ListDipendentiGepeMatricola = rMatricola.OrderBy(a=>a.Text);
                ViewBag.ListDipendentiGepeNominativo = rNominativo.OrderBy(a => a.Text);
                ViewBag.Amministratore = admin;
                ViewBag.Matricola      = dm.matricola;
                ViewBag.Nominativo     = dm.Nominativo;
            }
            catch (Exception ex)
            {
                return(PartialView("ErrorPartial", new MsgErr()
                {
                    msg = ex.Message
                }));
            }

            return(PartialView(dm));
        }
예제 #7
0
        public JsonResult ConfermaModificaRichiamo(decimal idTrasferimento, decimal idFasciaFKM, string dataRichiamo, decimal idRichiamo)
        {
            using (ModelDBISE db = new ModelDBISE())
            {
                db.Database.BeginTransaction();

                string errore = "";
                var    lstr   = new List <SelectListItem>();


                try
                {
                    ViewData["idTrasferimento"] = idTrasferimento;
                    ViewData["idFKm"]           = idFasciaFKM;
                    DateTime dataPartenza = new DateTime();

                    CaricaComboFKM(idFasciaFKM, idFasciaFKM);
                    using (dtRichiamo dtric = new dtRichiamo())
                    {
                        dataPartenza = dtric.Restituisci_DataPartenza(idTrasferimento, db);
                    }
                    ViewData["dataPartenza"] = dataPartenza;
                    try
                    {
                        RichiamoModel ri = new RichiamoModel();
                        ri.DataRichiamo      = Convert.ToDateTime(dataRichiamo);
                        ri.DataAggiornamento = DateTime.Now;
                        ri.CoeffKm           = idFasciaFKM;
                        ri.idTrasferimento   = idTrasferimento;
                        using (dtRichiamo dtric = new dtRichiamo())
                        {
                            decimal idCoeffIndRichiamo  = dtric.Restituisci_ID_CoeffIndRichiamo_Da_Data(ri, db);
                            decimal idCoeffMaggRichiamo = dtric.Restituisci_ID_CoeffMagIndRichiamo_Da_Data(ri, db);
                            decimal IDPFKM = dtric.Restituisci_ID_PercentualeFKM_Da_Data(ri, db);
                            if (idCoeffIndRichiamo == 0 || IDPFKM == 0 || idCoeffMaggRichiamo == 0)
                            {
                                errore             = "Non esistono coefficenti corrispondenti ai criteri del Richiamo";
                                ViewData["errore"] = errore;
                            }
                            ri.IDPFKM = IDPFKM;

                            DateTime dataRientroPrecedente = dtric.Restituisci_Data_Rientro(idTrasferimento);
                            DateTime DataRientro           = Convert.ToDateTime(dataRichiamo).AddDays(-1);

                            ri.DataRientro = DataRientro;

                            if (idRichiamo != 0)
                            {
                                ViewData["dataRichiamo"] = ri.DataRichiamo.ToShortDateString();
                                ViewData["dataRientro"]  = ri.DataRientro.ToShortDateString();
                                ViewData["idRichiamo"]   = idRichiamo;

                                if (DataRientro < dataPartenza)
                                {
                                    errore = "Data Rientro (" + DataRientro.ToShortDateString() + ") non può essere inferiore alla data Partenza (" + dataPartenza.ToShortDateString() + " )";
                                }
                                else
                                {
                                    idRichiamo = dtric.EditRichiamo(ri, idCoeffIndRichiamo, idCoeffMaggRichiamo, IDPFKM, DataRientro, idRichiamo, db);
                                    errore     = "";
                                    lstr       = AggiornaViewBag_Lista_Trasferimenti(idTrasferimento, db);

                                    //using (dtVariazioniMaggiorazioneFamiliare dtvmf = new dtVariazioniMaggiorazioneFamiliare())
                                    //{
                                    //    dtvmf.TerminaMaggiorazioniFamiliariByDataFineTrasf(idTrasferimento, ri.DataRientro, db);
                                    //}
                                    //using (dtVariazioniMaggiorazioneAbitazione dtvmab = new dtVariazioniMaggiorazioneAbitazione())
                                    //{
                                    //    dtvmab.TerminaMABbyDataFineTrasf(idTrasferimento, ri.DataRientro, db);
                                    //}

                                    using (dtDipendenti dtd = new dtDipendenti())
                                    {
                                        dtd.DataInizioRicalcoliDipendente(idTrasferimento, ri.DataRientro, db, true);
                                    }

                                    string sede           = dtric.DeterminaSede(idTrasferimento);
                                    string oggetto        = Resources.msgEmail.OggettoRichiamoModifica;
                                    string corpoMessaggio = string.Format(Resources.msgEmail.MessaggioRichiamoModifica, sede, dataRientroPrecedente.ToShortDateString(), ri.DataRientro.ToShortDateString());

                                    InviaMailRichiamo(idTrasferimento, db, corpoMessaggio, oggetto);
                                }
                            }
                            else
                            {
                                ViewData["errore"] = "Errore riscontrato nell'inserimento del Richiamo";
                                errore             = "Non esistono coefficenti corrispondenti ai criteri del Richiamo";
                                //  return PartialView("Richiamo");
                                // return PartialView("ErrorPartial", new MsgErr() { msg = "Errore riscontrato nell'inserimento del Richiamo" });
                            }
                        }
                    }
                    catch (Exception ex)
                    {
                        ViewData["errore"] = ex.Message;
                        // return PartialView("Richiamo");
                        //  return PartialView("ErrorPartial", new MsgErr() { msg = ex.Message });
                        errore = ex.Message;
                    }
                    db.Database.CurrentTransaction.Commit();
                }
                catch (Exception ex)
                {
                    db.Database.CurrentTransaction.Rollback();
                    throw ex;
                }
                return(Json(new { err = errore, list = lstr }));
            }
        }
예제 #8
0
        public JsonResult ConfermaInserisciRichiamo(decimal idTrasferimento, decimal idFasciaFKM, string dataRichiamo)
        {
            using (ModelDBISE db = new ModelDBISE())
            {
                db.Database.BeginTransaction();

                string errore = "";
                var    lstr   = new List <SelectListItem>();

                try
                {
                    ViewData["idTrasferimento"] = idTrasferimento;
                    ViewData["idFKm"]           = idFasciaFKM;
                    CaricaComboFKM(idFasciaFKM, idFasciaFKM);
                    DateTime dataPartenza = new DateTime();
                    using (dtRichiamo dtric = new dtRichiamo())
                    {
                        dataPartenza = dtric.Restituisci_DataPartenza(idTrasferimento, db);
                    }
                    ViewData["dataPartenza"] = dataPartenza;
                    decimal idRichiamo = 0;
                    try
                    {
                        RichiamoModel ri = new RichiamoModel();
                        ri.DataRichiamo      = Convert.ToDateTime(dataRichiamo);
                        ri.DataAggiornamento = DateTime.Now;
                        ri.CoeffKm           = idFasciaFKM;
                        ri.idTrasferimento   = idTrasferimento;
                        using (dtRichiamo dtric = new dtRichiamo())
                        {
                            decimal idCoeffIndRichiamo    = dtric.Restituisci_ID_CoeffIndRichiamo_Da_Data(ri, db);
                            decimal idCoeffMagIndRichiamo = dtric.Restituisci_ID_CoeffMagIndRichiamo_Da_Data(ri, db);
                            decimal IDPFKM = dtric.Restituisci_ID_PercentualeFKM_Da_Data(ri, db);
                            //var r = new List<SelectListItem>();
                            if (idCoeffIndRichiamo == 0 || IDPFKM == 0 || idCoeffMagIndRichiamo == 0)
                            {
                                ViewData["errore"] = "Non esistono coefficenti corrispondenti ai criteri del Richiamo";
                                errore             = "Non esistono coefficenti corrispondenti ai criteri del Richiamo";
                                throw new Exception("Non esistono coefficenti corrispondenti ai criteri del Richiamo");
                            }



                            ri.IDPFKM = IDPFKM;
                            DateTime DataRientro = Convert.ToDateTime(dataRichiamo).AddDays(-1);
                            ri.DataRientro = DataRientro;

                            ViewData["dataRichiamo"] = ri.DataRichiamo.ToShortDateString();
                            ViewData["dataRientro"]  = ri.DataRientro.ToShortDateString();
                            ViewData["idRichiamo"]   = idRichiamo;

                            if (DataRientro < dataPartenza)
                            {
                                errore = "Data Rientro " + DataRientro.ToShortDateString() + " non può essere inferiore alla data Partenza " + dataPartenza.ToShortDateString();
                            }
                            else
                            {
                                idRichiamo             = dtric.SetRichiamo(ri, idCoeffIndRichiamo, IDPFKM, idCoeffMagIndRichiamo, DataRientro, db);
                                ViewData["idRichiamo"] = idRichiamo;
                                errore = "";
                            }

                            lstr = AggiornaViewBag_Lista_Trasferimenti(idTrasferimento, db);
                            string sede           = dtric.DeterminaSede(idTrasferimento);
                            string oggetto        = Resources.msgEmail.OggettoRichiamoInserisci;
                            string corpoMessaggio = string.Format(Resources.msgEmail.MessaggioRichiamoInserisci, sede, ri.DataRientro.ToShortDateString());

                            using (dtDipendenti dtd = new dtDipendenti())
                            {
                                dtd.DataInizioRicalcoliDipendente(idTrasferimento, ri.DataRientro, db, true);
                            }

                            InviaMailRichiamo(idTrasferimento, db, corpoMessaggio, oggetto);
                        }
                    }
                    catch (Exception ex)
                    {
                        ViewData["errore"] = ex.Message;
                        errore             = ex.Message;
                    }
                    db.Database.CurrentTransaction.Commit();
                }
                catch (Exception ex)
                {
                    db.Database.CurrentTransaction.Rollback();
                    throw ex;
                }
                return(Json(new { err = errore, list = lstr }));
            }
        }
예제 #9
0
        public ActionResult InserisciRuoloDipendente(VariazioneRuoloDipendenteModel vrdm, decimal idTrasferimento)
        {
            try
            {
                using (ModelDBISE db = new ModelDBISE())
                {
                    using (dtRuoloDipendente dtrd = new dtRuoloDipendente())
                    {
                        if (ModelState.IsValid)
                        {
                            db.Database.BeginTransaction();
                            try
                            {
                                #region verifica data inizio
                                try
                                {
                                    dtrd.VerificaDataInizioValiditaRuoloDipendente(idTrasferimento, vrdm, db);
                                }
                                catch (Exception ex)
                                {
                                    using (dtTrasferimento dtt = new dtTrasferimento())
                                    {
                                        using (dtRuoloUfficio dtru = new dtRuoloUfficio())
                                        {
                                            using (dtLivelliDipendente dtld = new dtLivelliDipendente())
                                            {
                                                var t = dtt.GetTrasferimentoById(idTrasferimento);

                                                var livelloDipendenteValido = dtld.GetLivelloDipendente(t.idDipendente, vrdm.ut_dataInizioValidita.Value);

                                                var lru = dtru.GetListRuoloUfficioByLivello(livelloDipendenteValido.idLivello);

                                                List <SelectListItem> lRuoli = new List <SelectListItem>();

                                                var r = new List <SelectListItem>();

                                                if (lru != null && lru.Count > 0)
                                                {
                                                    foreach (var ru in lru)
                                                    {
                                                        SelectListItem s2 = new SelectListItem()
                                                        {
                                                            Value = ru.idRuoloUfficio.ToString(),
                                                            Text  = ru.DescrizioneRuolo.ToString()
                                                        };
                                                        r.Add(s2);
                                                    }
                                                }

                                                lRuoli                  = r;
                                                ViewBag.lRuoli          = lRuoli;
                                                ViewBag.idTrasferimento = idTrasferimento;

                                                var rd = dtrd.GetRuoloDipendenteByIdTrasferimento(idTrasferimento, DateTime.Now);


                                                ViewBag.RuoloAttuale = rd.RuoloUfficio.DescrizioneRuolo;

                                                ModelState.AddModelError("", ex.Message);
                                                return(PartialView("NuovoRuoloDipendente", vrdm));
                                            }
                                        }
                                    }
                                }
                                #endregion

                                vrdm.dataAggiornamento = DateTime.Now;

                                #region modello ruolo dipendente
                                RuoloDipendenteModel rdm = new RuoloDipendenteModel()
                                {
                                    idTrasferimento    = idTrasferimento,
                                    idRuolo            = vrdm.idRuolo,
                                    dataInizioValidita = vrdm.ut_dataInizioValidita.Value,
                                    annullato          = false,
                                    dataAggiornamento  = vrdm.dataAggiornamento
                                };
                                #endregion

                                #region inserisce ruolo
                                if (vrdm.chkAggiornaTutti == false)
                                {
                                    dtrd.SetVariazioneRuoloDipendente(rdm, idTrasferimento, db);
                                }
                                else
                                {
                                    //inserisce periodo e annulla i periodi successivi (fino al primo buco temporale o fino a dataRientro)
                                    dtrd.SetVariazioneRuoloDipendente_AggiornaTutti(rdm, idTrasferimento, db);
                                }
                                #endregion

                                using (dtDipendenti dtd = new dtDipendenti())
                                {
                                    dtd.DataInizioRicalcoliDipendente(idTrasferimento, rdm.dataInizioValidita, db, false);
                                }

                                Utility.SetLogAttivita(EnumAttivitaCrud.Inserimento, "Inserimento nuovo ruolo dipendente (" + rdm.idRuolo + ")", "RUOLODIPENDENTE", db, idTrasferimento, rdm.idRuoloDipendente);

                                db.Database.CurrentTransaction.Commit();
                            }
                            catch (Exception ex)
                            {
                                db.Database.CurrentTransaction.Rollback();
                                throw ex;
                            }
                        }
                        else
                        {
                            using (dtTrasferimento dtt = new dtTrasferimento())
                            {
                                using (dtRuoloUfficio dtru = new dtRuoloUfficio())
                                {
                                    using (dtLivelliDipendente dtld = new dtLivelliDipendente())
                                    {
                                        var t = dtt.GetTrasferimentoById(idTrasferimento);

                                        var livelloDipendenteValido = dtld.GetLivelloDipendente(t.idDipendente, vrdm.ut_dataInizioValidita.Value);

                                        var lru = dtru.GetListRuoloUfficioByLivello(livelloDipendenteValido.idLivello);

                                        List <SelectListItem> lRuoli = new List <SelectListItem>();

                                        var r = new List <SelectListItem>();

                                        if (lru != null && lru.Count > 0)
                                        {
                                            foreach (var ru in lru)
                                            {
                                                SelectListItem s2 = new SelectListItem()
                                                {
                                                    Value = ru.idRuoloUfficio.ToString(),
                                                    Text  = ru.DescrizioneRuolo.ToString()
                                                };
                                                r.Add(s2);
                                            }
                                        }

                                        lRuoli                  = r;
                                        ViewBag.lRuoli          = lRuoli;
                                        ViewBag.idTrasferimento = idTrasferimento;

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


            return(RedirectToAction("ElencoRuoliDipendente", new { idTrasferimento = idTrasferimento }));
        }
예제 #10
0
        public JsonResult InviaFlussiMensili(decimal idAnnoMeseElaborato)
        {
            List <DIPENDENTI> lDip = new List <DIPENDENTI>();

            try
            {
                using (ModelDBISE db = new ModelDBISE())
                {
                    //var te =
                    //    db.TEORICI.Where(a => a.ANNULLATO == false && a.ELABINDSISTEMAZIONE.IDLIVELLO == 1).ToList();


                    db.Database.BeginTransaction();

                    using (dtElaborazioni dte = new dtElaborazioni())
                    {
                        try
                        {
                            List <decimal> lTeorici = new List <decimal>();


                            #region Lettura dati Prima sistemazione
                            List <decimal> lt1 = (from t in db.TEORICI
                                                  where t.ANNULLATO == false &&
                                                  t.IDMESEANNOELAB == idAnnoMeseElaborato &&
                                                  t.ELABINDSISTEMAZIONE.ANNULLATO == false &&
                                                  (t.VOCI.IDVOCI == (decimal)EnumVociCedolino.Sistemazione_Lorda_086_380 ||
                                                   t.VOCI.IDVOCI == (decimal)EnumVociCedolino.Sistemazione_Richiamo_Netto_086_383 ||
                                                   t.VOCI.IDVOCI == (decimal)EnumVociCedolino.Detrazione_086_384 ||
                                                   t.VOCI.IDVOCI == (decimal)EnumVociContabili.Ind_Prima_Sist_IPS) &&
                                                  t.DIRETTO == false && t.INSERIMENTOMANUALE == false
                                                  select t.IDTEORICI).ToList();

                            if (lt1?.Any() ?? false)
                            {
                                lTeorici.AddRange(lt1);
                            }
                            #endregion

                            #region Lettura dati indennità sede estera
                            List <decimal> lt2 = (from t in db.TEORICI
                                                  where t.ANNULLATO == false && t.INSERIMENTOMANUALE == false &&
                                                  t.IDMESEANNOELAB == idAnnoMeseElaborato &&
                                                  t.ELABINDENNITA.Any(b => b.ANNULLATO == false) &&
                                                  t.DIRETTO == false &&
                                                  t.VOCI.IDTIPOLIQUIDAZIONE == (decimal)EnumTipoLiquidazione.Contabilità &&
                                                  t.VOCI.IDVOCI == (decimal)EnumVociContabili.Ind_Sede_Estera
                                                  select t.IDTEORICI).ToList();


                            if (lt2?.Any() ?? false)
                            {
                                lTeorici.AddRange(lt2);
                            }
                            #endregion


                            #region Lettura dei dati trasporto effetti
                            List <decimal> lt3 = (from t in db.TEORICI
                                                  where t.ANNULLATO == false && t.INSERIMENTOMANUALE == false &&
                                                  t.IDMESEANNOELAB == idAnnoMeseElaborato &&
                                                  t.ELABTRASPEFFETTI.ANNULLATO == false &&
                                                  t.VOCI.IDTIPOLIQUIDAZIONE == (decimal)EnumTipoLiquidazione.Paghe &&
                                                  t.VOCI.IDTIPOVOCE == (decimal)EnumTipoVoce.Software &&
                                                  t.VOCI.IDVOCI == (decimal)EnumVociCedolino.Trasp_Mass_Partenza_Rientro_162_131 &&
                                                  t.DIRETTO == false
                                                  select t.IDTEORICI).ToList();


                            if (lt3?.Any() ?? false)
                            {
                                lTeorici.AddRange(lt3);
                            }
                            #endregion

                            #region Lettura dei dati MAB
                            List <decimal> lt4 = (from a in db.TEORICI
                                                  where a.ANNULLATO == false && a.INSERIMENTOMANUALE == false &&
                                                  a.IDMESEANNOELAB == idAnnoMeseElaborato &&
                                                  a.VOCI.IDTIPOLIQUIDAZIONE == (decimal)EnumTipoLiquidazione.Contabilità &&
                                                  a.VOCI.IDVOCI == (decimal)EnumVociContabili.MAB &&
                                                  a.DIRETTO == false &&
                                                  a.ELABMAB.Any(b => b.ANNULLATO == false)
                                                  select a.IDTEORICI).ToList();

                            if (lt4?.Any() ?? false)
                            {
                                lTeorici.AddRange(lt4);
                            }
                            #endregion

                            #region Lettura dati voci manuali

                            List <decimal> lt5 = (from a in db.TEORICI
                                                  where a.ANNULLATO == false && a.INSERIMENTOMANUALE == true &&
                                                  a.IDMESEANNOELAB == idAnnoMeseElaborato &&
                                                  (a.VOCI.IDTIPOLIQUIDAZIONE == (decimal)EnumTipoLiquidazione.Paghe ||
                                                   a.VOCI.IDTIPOLIQUIDAZIONE == (decimal)EnumTipoLiquidazione.Contabilità) &&
                                                  a.DIRETTO == false &&
                                                  a.ELABORATO == false
                                                  select a.IDTEORICI).ToList();

                            if (lt5?.Any() ?? false)
                            {
                                lTeorici.AddRange(lt5);
                            }
                            #endregion

                            #region Lettura dati Richiamo
                            List <decimal> lt6 = (from t in db.TEORICI
                                                  where t.ANNULLATO == false &&
                                                  t.IDMESEANNOELAB == idAnnoMeseElaborato &&
                                                  t.ELABINDRICHIAMO.ANNULLATO == false &&
                                                  (t.VOCI.IDVOCI == (decimal)EnumVociCedolino.Rientro_Lordo_086_381 ||
                                                   t.VOCI.IDVOCI == (decimal)EnumVociCedolino.Sistemazione_Richiamo_Netto_086_383 ||
                                                   t.VOCI.IDVOCI == (decimal)EnumVociCedolino.Detrazione_086_384 ||
                                                   t.VOCI.IDVOCI == (decimal)EnumVociContabili.Ind_Richiamo_IRI) &&
                                                  t.DIRETTO == false && t.INSERIMENTOMANUALE == false
                                                  select t.IDTEORICI).ToList();

                            if (lt6?.Any() ?? false)
                            {
                                lTeorici.AddRange(lt6);
                            }
                            #endregion

                            lTeorici = lTeorici.OrderBy(a => a).ToList();

                            List <ElencoDipendentiDaCalcolareModel> ledcm = new List <ElencoDipendentiDaCalcolareModel>();

                            ledcm = dte.PrelevaDipendentiDaElaborare(idAnnoMeseElaborato).ToList();
                            if (ledcm?.Any() ?? false)
                            {
                                lDip = dte.EstrapolaDipendentiDaTeorici(lTeorici, db).ToList();

                                foreach (var edcm in ledcm)
                                {
                                    if (!lDip?.Any(a => a.IDDIPENDENTE == edcm.idDipendente) ?? false)
                                    {
                                        throw new Exception("Prima di inviare i flussi è necessario effettuare l'elaborazione di tutti i dipendenti interessati al calcolo mensile.");
                                    }
                                }

                                foreach (decimal teorico in lTeorici)
                                {
                                    using (ModelDBISE db2 = new ModelDBISE())
                                    {
                                        var dip = dte.EstrapolaDipendenteDaTeorico(teorico, db2);

                                        if (!dip.ELABORAZIONI?.Any(a => a.IDMESEANNOELAB == idAnnoMeseElaborato) ?? false)
                                        {
                                            dte.InviaFlussiMensiliCedoCont(idAnnoMeseElaborato, teorico, db2);
                                        }
                                    }
                                }

                                using (dtInvioFileFTP dtFile = new dtInvioFileFTP())
                                {
                                    dtFile.FlUpload(lTeorici);
                                }

                                using (dtDipendenti dtd = new dtDipendenti())
                                {
                                    foreach (var dip in lDip)
                                    {
                                        dte.SetPeriodoElaborazioniDipendente(dip.IDDIPENDENTE, idAnnoMeseElaborato, db);
                                        dtd.SetLastMeseElabDataInizioRicalcoli(dip.IDDIPENDENTE, idAnnoMeseElaborato, db, true);
                                    }
                                }
                                dte.ChiudiPeridoElaborazione(idAnnoMeseElaborato, db);
                                dte.EliminaTeoriciAnnullati(3);
                            }

                            db.Database.CurrentTransaction.Commit();
                        }
                        catch (Exception ex)
                        {
                            db.Database.CurrentTransaction.Rollback();
                            throw ex;
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                return(Json(new { msg = "", err = ex.Message }));
            }

            return(Json(new { msg = "I flussi mensili sono stati inviati.", err = "" }));
        }