public ActionResult AttivitaMAB(decimal idTrasferimento)
        {
            List <MABViewModel> mavml = new List <MABViewModel>();
            MABViewModel        mavm  = new MABViewModel();
            //MaggiorazioneAbitazioneModel mam = new MaggiorazioneAbitazioneModel();
            MAB                 mab  = new MAB();
            PERIODOMAB          pmab = new PERIODOMAB();
            ATTIVAZIONEMAB      am   = new ATTIVAZIONEMAB();
            AttivazioneMABModel amm  = new AttivazioneMABModel();
            ANTICIPOANNUALEMAB  aa   = new ANTICIPOANNUALEMAB();
            CANONEMAB           cm   = new CANONEMAB();

            using (ModelDBISE db = new ModelDBISE())
            {
                try
                {
                    db.Database.BeginTransaction();

                    bool soloLettura = false;
                    bool siDati      = false;
                    EnumStatoTraferimento statoTrasferimento = 0;
                    using (dtTrasferimento dtt = new dtTrasferimento())
                    {
                        using (dtMaggiorazioneAbitazione dtma = new dtMaggiorazioneAbitazione())
                        {
                            var t = dtt.GetTrasferimentoById(idTrasferimento);

                            amm = dtma.GetAttivazionePartenzaMAB(idTrasferimento);

                            if (amm != null && amm.idAttivazioneMAB > 0)
                            {
                                if (amm.notificaRichiesta)
                                {
                                    soloLettura = true;
                                }
                            }
                            mavm.idAttivazioneMAB = amm.idAttivazioneMAB;

                            mab = dtma.GetMABPartenza(idTrasferimento, db);

                            pmab = dtma.GetPeriodoMABPartenza(mab.IDMAB, db);

                            mavm.idMAB        = mab.IDMAB;
                            mavm.idPeriodoMAB = pmab.IDPERIODOMAB;

                            mavm.rinunciaMAB = mab.RINUNCIAMAB;

                            cm = dtma.GetCanoneMABPartenza(mab, db);

                            aa = dtma.GetAnticipoAnnualeMABPartenza(mab, db);
                            mavm.importo_canone = cm.IMPORTOCANONE;
                            mavm.dataInizioMAB  = pmab.DATAINIZIOMAB;
                            mavm.dataFineMAB    = pmab.DATAFINEMAB > t.dataRientro ? t.dataRientro.Value : pmab.DATAFINEMAB;
                            if (aa.IDANTICIPOANNUALEMAB > 0)
                            {
                                mavm.anticipoAnnuale = aa.ANTICIPOANNUALE;
                            }
                            else
                            {
                                mavm.anticipoAnnuale = false;

                                aa = dtma.CreaAnticipoAnnualePartenza(mavm, db);
                            }

                            mavm.id_Valuta = cm.IDVALUTA;

                            using (dtValute dtv = new dtValute())
                            {
                                var v = dtv.GetValutaModel(mavm.id_Valuta, db);
                                mavm.descrizioneValuta = v.descrizioneValuta;
                            }

                            var lpc = dtma.GetListPagatoCondivisoMABPartenza(mavm);

                            if (lpc.Count() > 0)
                            {
                                var pc = lpc.First();
                                mavm.canone_pagato    = pc.PAGATO;
                                mavm.canone_condiviso = pc.CONDIVISO;
                            }

                            mavml.Add(mavm);

                            siDati = true;

                            statoTrasferimento = t.idStatoTrasferimento;
                            if (statoTrasferimento == EnumStatoTraferimento.Annullato)
                            {
                                soloLettura = true;
                            }

                            if (mab.RINUNCIAMAB)
                            {
                                soloLettura = true;
                            }

                            ViewData.Add("soloLettura", soloLettura);
                            ViewData.Add("siDati", siDati);
                            ViewData.Add("idAttivazioneMAB", amm.idAttivazioneMAB);
                            ViewData.Add("idMAB", mab.IDMAB);
                            ViewData.Add("idTrasferimento", idTrasferimento);
                        }
                    }

                    db.Database.CurrentTransaction.Commit();
                }

                catch (Exception ex)
                {
                    db.Database.CurrentTransaction.Rollback();
                    return(PartialView("ErrorPartial", new MsgErr()
                    {
                        msg = ex.Message
                    }));
                }
            }

            return(PartialView(mavml));
        }