//public void DelTfr(decimal idTfr) //{ // TFR precedenteIB = new TFR(); // TFR delIB = new TFR(); // using (ModelDBISE db = new ModelDBISE()) // { // try // { // db.Database.BeginTransaction(); // var lib = db.TFR.Where(a => a.IDTFR == idTfr); // if (lib.Count() > 0) // { // delIB = lib.First(); // delIB.ANNULLATO = true; // var lprecIB = db.TFR.Where(a => a.DATAFINEVALIDITA < delIB.DATAINIZIOVALIDITA && a.ANNULLATO == false).ToList(); // if (lprecIB.Count > 0) // { // precedenteIB = lprecIB.Where(a => a.DATAFINEVALIDITA == lprecIB.Max(b => b.DATAFINEVALIDITA)).First(); // precedenteIB.ANNULLATO = true; // var ibOld1 = new TFR() // { // IDTFR = precedenteIB.IDTFR, // IDVALUTA = precedenteIB.IDVALUTA, // TASSOCAMBIO = precedenteIB.TASSOCAMBIO, // DATAINIZIOVALIDITA = precedenteIB.DATAINIZIOVALIDITA, // DATAFINEVALIDITA = delIB.DATAFINEVALIDITA, // DATAAGGIORNAMENTO = precedenteIB.DATAAGGIORNAMENTO, // ANNULLATO = false // }; // db.TFR.Add(ibOld1); // } // db.SaveChanges(); // using (objLogAttivita log = new objLogAttivita()) // { // log.Log(enumAttivita.Eliminazione, "Eliminazione parametro di TFR.", "TFR", idTfr); // } // db.Database.CurrentTransaction.Commit(); // } // } // catch (Exception ex) // { // db.Database.CurrentTransaction.Rollback(); // throw ex; // } // } //} public bool TFRAnnullate(TFRModel ibm) { using (ModelDBISE db = new ModelDBISE()) { return(db.TFR.Where(a => a.IDTFR == ibm.idTFR).First().ANNULLATO == true ? true : false); } }
public bool EsistonoMovimentiPrimaUguale(TFRModel ibm) { using (ModelDBISE db = new ModelDBISE()) { return(db.TFR.Where(a => a.DATAINIZIOVALIDITA <= ibm.dataInizioValidita && a.IDVALUTA == ibm.idValuta).Count() > 0 ? true : false); } }
public bool EsistonoMovimentiSuccessiviUguale(TFRModel ibm) { using (ModelDBISE db = new ModelDBISE()) { if (ibm.dataFineValidita.HasValue) { return(db.TFR.Where(a => a.DATAINIZIOVALIDITA >= ibm.dataFineValidita.Value && a.IDVALUTA == ibm.idValuta).Count() > 0 ? true : false); } else { return(false); } } }
public TFRModel GetTFRValido(decimal idUfficio, DateTime dt, ModelDBISE db) { TFRModel tfrm = new TFRModel(); using (dtUffici dtu = new dtUffici()) { UfficiModel ufm = dtu.GetUffici(idUfficio, db); ValuteModel vm = new ValuteModel(); if (ufm.pagatoValutaUfficio == false) { using (dtValute dtv = new dtValute()) { vm = dtv.GetValutaUfficiale(db); if (vm.HasValue()) { var ltfr = db.TFR.Where(a => a.ANNULLATO == false && a.IDVALUTA == vm.idValuta && dt >= a.DATAINIZIOVALIDITA && dt <= a.DATAFINEVALIDITA) .OrderByDescending(a => a.DATAINIZIOVALIDITA) .ToList(); if (ltfr != null && ltfr.Count > 0) { var tfr = ltfr.First(); tfrm = new TFRModel() { idTFR = tfr.IDTFR, idValuta = tfr.IDVALUTA, dataInizioValidita = tfr.DATAINIZIOVALIDITA, dataFineValidita = tfr.DATAFINEVALIDITA == Utility.DataFineStop() ? new DateTime?() : tfr.DATAFINEVALIDITA, dataAggiornamento = tfr.DATAAGGIORNAMENTO, tassoCambio = tfr.TASSOCAMBIO, Annullato = tfr.ANNULLATO }; } } else { throw new Exception("La valuta ufficiale non risulta registrata, provvedere prima di procedere."); } } } } return(tfrm); }
public List <TFRModel> GetListaTfrByValuta_RangeDate(TrasferimentoModel trm, decimal idValuta, DateTime dtIni, DateTime dtFin, ModelDBISE db) { List <TFRModel> ltfrm = new List <TFRModel>(); //using (dtUffici dtu = new dtUffici()) //{ //var t = db.TRASFERIMENTO.Find(trm.idTrasferimento); //UFFICI u = t.UFFICI; //UfficiModel ufm = dtu.GetUffici(u.IDUFFICIO, db); //if (ufm.pagatoValutaUfficio == false) //{ //using (dtValute dtv = new dtValute()) //{ var ltfr = db.TFR.Where(a => a.ANNULLATO == false && a.IDVALUTA == idValuta && a.DATAINIZIOVALIDITA <= dtFin && a.DATAFINEVALIDITA >= dtIni) .OrderByDescending(a => a.DATAINIZIOVALIDITA) .ToList(); if (ltfr != null && ltfr.Count > 0) { foreach (var tfr in ltfr) { TFRModel tfrm = new TFRModel() { idTFR = tfr.IDTFR, idValuta = tfr.IDVALUTA, dataInizioValidita = tfr.DATAINIZIOVALIDITA, dataFineValidita = tfr.DATAFINEVALIDITA, //== Utility.DataFineStop() ? new DateTime?() : tfr.DATAFINEVALIDITA, dataAggiornamento = tfr.DATAAGGIORNAMENTO, tassoCambio = tfr.TASSOCAMBIO, Annullato = tfr.ANNULLATO }; ltfrm.Add(tfrm); } } //} //} //} return(ltfrm); }
public ActionResult InserisciTFR(TFRModel ibm, bool escludiAnnullati = true, bool aggiornaTutto = false) { ViewBag.escludiAnnullati = escludiAnnullati; //var r = new List<SelectListItem>(); List <TFRModel> libm = new List <TFRModel>(); try { if (ModelState.IsValid) { using (dtTfr dtib = new dtTfr()) { dtib.SetTfr(ibm, aggiornaTutto); } decimal idLivello = CaricaComboFunzioniTFR(ibm.idValuta); using (dtTfr dtib = new dtTfr()) { ViewBag.idMinimoNonAnnullato = dtib.Get_Id_TFRPrimoNonAnnullato(idLivello); libm = dtib.getListTfr(idLivello, escludiAnnullati).OrderBy(a => a.dataInizioValidita).ThenBy(a => a.dataFineValidita).ToList(); } return(PartialView("TFR", libm)); } else { using (dtValute dtl = new dtValute()) { var lm = dtl.GetValute(ibm.idValuta); ViewBag.DescrizioneValuta = lm; } CaricaComboFunzioniTFR(ibm.idValuta); return(PartialView("NuovoTFR", ibm)); } } catch (Exception ex) { return(PartialView("ErrorPartial")); } }
public void SetTfr(TFRModel ibm, bool aggiornaTutto) { List <TFR> libNew = new List <TFR>(); //TFR ibPrecedente = new TFR(); TFR ibNew1 = new TFR(); TFR ibNew2 = new TFR(); //List<TFR> lArchivioIB = new List<TFR>(); List <string> lista = new List <string>(); using (ModelDBISE db = new ModelDBISE()) { bool giafatta = false; try { using (dtTfr dtal = new dtTfr()) { //Se la data variazione coincide con una data inizio esistente lista = dtal.DataVariazioneCoincideConDataInizio(ibm.dataInizioValidita, Convert.ToDecimal(ibm.idValuta)); if (lista.Count != 0) { giafatta = true; decimal idIntervalloFirst = Convert.ToDecimal(lista[0]); DateTime dataInizioFirst = Convert.ToDateTime(lista[1]); DateTime dataFineFirst = Convert.ToDateTime(lista[2]); //decimal percConiugeFirst = Convert.ToDecimal(lista[3]); ibNew1 = new TFR() { IDVALUTA = Convert.ToDecimal(ibm.idValuta), DATAINIZIOVALIDITA = dataInizioFirst, DATAFINEVALIDITA = dataFineFirst, // ALIQUOTA = ibm.aliquota, TASSOCAMBIO = ibm.tassoCambio, DATAAGGIORNAMENTO = DateTime.Now, }; if (aggiornaTutto) { ibNew1 = new TFR() { IDVALUTA = Convert.ToDecimal(ibm.idValuta), DATAINIZIOVALIDITA = dataInizioFirst, DATAFINEVALIDITA = Utility.DataFineStop(), // ALIQUOTA = ibm.aliquota, TASSOCAMBIO = ibm.tassoCambio, DATAAGGIORNAMENTO = DateTime.Now, }; //qui annullo tutti i record rimanenti dalla data inizio inserita libNew = db.TFR.Where(a => a.ANNULLATO == false).ToList() .Where(a => a.DATAINIZIOVALIDITA > dataInizioFirst && a.IDVALUTA == Convert.ToDecimal(ibm.idValuta)).ToList(); foreach (var elem in libNew) { RendiAnnullatoUnRecord(Convert.ToDecimal(elem.IDTFR), db); } } db.Database.BeginTransaction(); db.TFR.Add(ibNew1); db.SaveChanges(); RendiAnnullatoUnRecord(Convert.ToDecimal(idIntervalloFirst), db); using (DtRicalcoloParametri dtrp = new DtRicalcoloParametri()) { dtrp.AssociaCanoneMAB_TFR(ibNew1.IDTFR, db, ibm.dataInizioValidita); dtrp.AssociaIndennita_TFR(ibNew1.IDTFR, db, ibm.dataInizioValidita); } db.Database.CurrentTransaction.Commit(); } ///se la data variazione coincide con una data fine esistente(diversa da 31/12/9999) if (giafatta == false) { lista = dtal.DataVariazioneCoincideConDataFine(ibm.dataInizioValidita, Convert.ToDecimal(ibm.idValuta)); if (lista.Count != 0) { giafatta = true; decimal idIntervalloLast = Convert.ToDecimal(lista[0]); DateTime dataInizioLast = Convert.ToDateTime(lista[1]); DateTime dataFineLast = Convert.ToDateTime(lista[2]); decimal TASSOCAMBIO = Convert.ToDecimal(lista[3]); ibNew1 = new TFR() { IDVALUTA = Convert.ToDecimal(ibm.idValuta), DATAINIZIOVALIDITA = dataInizioLast, DATAFINEVALIDITA = dataFineLast.AddDays(-1), TASSOCAMBIO = TASSOCAMBIO, DATAAGGIORNAMENTO = DateTime.Now, }; ibNew2 = new TFR() { IDVALUTA = Convert.ToDecimal(ibm.idValuta), DATAINIZIOVALIDITA = ibm.dataInizioValidita, DATAFINEVALIDITA = ibm.dataInizioValidita,//è uguale alla data Inizio TASSOCAMBIO = ibm.tassoCambio, DATAAGGIORNAMENTO = DateTime.Now }; if (aggiornaTutto) { ibNew2 = new TFR() { IDVALUTA = Convert.ToDecimal(ibm.idValuta), DATAINIZIOVALIDITA = ibm.dataInizioValidita, DATAFINEVALIDITA = Utility.DataFineStop(), TASSOCAMBIO = ibm.tassoCambio, DATAAGGIORNAMENTO = DateTime.Now }; libNew = db.TFR.Where(a => a.IDVALUTA == Convert.ToDecimal(ibm.idValuta) && a.ANNULLATO == false).ToList().Where(a => a.DATAINIZIOVALIDITA > ibm.dataInizioValidita).ToList(); foreach (var elem in libNew) { RendiAnnullatoUnRecord(Convert.ToDecimal(elem.IDTFR), db); } } libNew.Add(ibNew1); libNew.Add(ibNew2); libNew = libNew.OrderBy(a => a.DATAINIZIOVALIDITA).ToList(); db.Database.BeginTransaction(); db.TFR.AddRange(libNew); db.SaveChanges(); //annullare l'intervallo trovato RendiAnnullatoUnRecord(Convert.ToDecimal(idIntervalloLast), db); using (DtRicalcoloParametri dtrp = new DtRicalcoloParametri()) { foreach (var tfr in libNew) { dtrp.AssociaCanoneMAB_TFR(tfr.IDTFR, db, ibm.dataInizioValidita); dtrp.AssociaIndennita_TFR(tfr.IDTFR, db, ibm.dataInizioValidita); } } db.Database.CurrentTransaction.Commit(); } } //Se il nuovo record si trova in un intervallo non annullato con data fine non uguale al 31/12/9999 if (giafatta == false) { lista = dtal.RestituisciIntervalloDiUnaData(ibm.dataInizioValidita, Convert.ToDecimal(ibm.idValuta)); if (lista.Count != 0) { giafatta = true; decimal idIntervallo = Convert.ToDecimal(lista[0]); DateTime dataInizio = Convert.ToDateTime(lista[1]); DateTime dataFine = Convert.ToDateTime(lista[2]); decimal TASSOCAMBIO = Convert.ToDecimal(lista[3]); DateTime NewdataFine1 = ibm.dataInizioValidita.AddDays(-1); ibNew1 = new TFR() { IDVALUTA = Convert.ToDecimal(ibm.idValuta), DATAINIZIOVALIDITA = dataInizio, DATAFINEVALIDITA = NewdataFine1, //ALIQUOTA = aliquota, TASSOCAMBIO = TASSOCAMBIO, DATAAGGIORNAMENTO = DateTime.Now, }; ibNew2 = new TFR() { IDVALUTA = Convert.ToDecimal(ibm.idValuta), DATAINIZIOVALIDITA = ibm.dataInizioValidita, DATAFINEVALIDITA = dataFine, // ALIQUOTA = ibm.aliquota, TASSOCAMBIO = ibm.tassoCambio, DATAAGGIORNAMENTO = DateTime.Now }; if (aggiornaTutto) { ibNew2 = new TFR() { IDVALUTA = Convert.ToDecimal(ibm.idValuta), DATAINIZIOVALIDITA = ibm.dataInizioValidita, DATAFINEVALIDITA = Utility.DataFineStop(), // ALIQUOTA = ibm.aliquota, TASSOCAMBIO = ibm.tassoCambio, DATAAGGIORNAMENTO = DateTime.Now }; decimal tmpii = Convert.ToDecimal(ibm.idValuta); libNew = db.TFR.Where(a => a.IDVALUTA == tmpii && a.ANNULLATO == false).ToList().Where(a => a.DATAINIZIOVALIDITA > ibm.dataInizioValidita).ToList(); foreach (var elem in libNew) { RendiAnnullatoUnRecord(Convert.ToDecimal(elem.IDTFR), db); } } libNew.Add(ibNew1); libNew.Add(ibNew2); libNew = libNew.OrderBy(a => a.DATAINIZIOVALIDITA).ToList(); db.Database.BeginTransaction(); db.TFR.AddRange(libNew); db.SaveChanges(); //annullare l'intervallo trovato RendiAnnullatoUnRecord(Convert.ToDecimal(idIntervallo), db); using (DtRicalcoloParametri dtrp = new DtRicalcoloParametri()) { foreach (var tfr in libNew) { dtrp.AssociaCanoneMAB_TFR(tfr.IDTFR, db, ibm.dataInizioValidita); dtrp.AssociaIndennita_TFR(tfr.IDTFR, db, ibm.dataInizioValidita); } } db.Database.CurrentTransaction.Commit(); } } //CASO DELL'ULTIMA RIGA CON LA DATA FINE UGUALE A 31/12/9999 if (giafatta == false) { //Attenzione qui se la lista non contiene nessun elemento //significa che non esiste nessun elemento corrispondentemente al livello selezionato lista = dtal.RestituisciLaRigaMassima(Convert.ToDecimal(ibm.idValuta)); if (lista.Count == 0) { ibNew1 = new TFR() { DATAINIZIOVALIDITA = ibm.dataInizioValidita, DATAFINEVALIDITA = Convert.ToDateTime(Utility.DataFineStop()), TASSOCAMBIO = ibm.tassoCambio, IDVALUTA = Convert.ToDecimal(ibm.idValuta), DATAAGGIORNAMENTO = DateTime.Now, }; libNew.Add(ibNew1); db.Database.BeginTransaction(); db.TFR.Add(ibNew1); db.SaveChanges(); using (DtRicalcoloParametri dtrp = new DtRicalcoloParametri()) { dtrp.AssociaCanoneMAB_TFR(ibNew1.IDTFR, db, ibm.dataInizioValidita); dtrp.AssociaIndennita_TFR(ibNew1.IDTFR, db, ibm.dataInizioValidita); } db.Database.CurrentTransaction.Commit(); } if (lista.Count != 0) { giafatta = true; //se il nuovo record rappresenta la data variazione uguale alla data inizio dell'ultima riga ( record corrispondente alla data fine uguale 31/12/9999) //occorre annullare il record esistente in questione ed aggiungere un nuovo con la stessa data inizio e l'altro campo da aggiornare con il nuovo decimal idIntervalloUltimo = Convert.ToDecimal(lista[0]); DateTime dataInizioUltimo = Convert.ToDateTime(lista[1]); DateTime dataFineUltimo = Convert.ToDateTime(lista[2]); decimal percentualeUltimo = Convert.ToDecimal(lista[3]); if (dataInizioUltimo == ibm.dataInizioValidita) { ibNew1 = new TFR() { IDVALUTA = Convert.ToDecimal(ibm.idValuta), DATAINIZIOVALIDITA = dataInizioUltimo, DATAFINEVALIDITA = dataFineUltimo, // ALIQUOTA = ibm.aliquota,//nuova aliquota rispetto alla vecchia registrata TASSOCAMBIO = ibm.tassoCambio, DATAAGGIORNAMENTO = DateTime.Now }; libNew.Add(ibNew1); db.Database.BeginTransaction(); db.TFR.Add(ibNew1); db.SaveChanges(); RendiAnnullatoUnRecord(Convert.ToDecimal(idIntervalloUltimo), db); using (DtRicalcoloParametri dtrp = new DtRicalcoloParametri()) { dtrp.AssociaCanoneMAB_TFR(ibNew1.IDTFR, db, ibm.dataInizioValidita); dtrp.AssociaIndennita_TFR(ibNew1.IDTFR, db, ibm.dataInizioValidita); } db.Database.CurrentTransaction.Commit(); } //se il nuovo record rappresenta la data variazione superiore alla data inizio dell'ultima riga ( record corrispondente alla data fine uguale 31/12/9999) if (ibm.dataInizioValidita > dataInizioUltimo) { ibNew1 = new TFR() { IDVALUTA = Convert.ToDecimal(ibm.idValuta), DATAINIZIOVALIDITA = dataInizioUltimo, DATAFINEVALIDITA = ibm.dataInizioValidita.AddDays(-1), TASSOCAMBIO = percentualeUltimo, DATAAGGIORNAMENTO = DateTime.Now }; ibNew2 = new TFR() { IDVALUTA = Convert.ToDecimal(ibm.idValuta), DATAINIZIOVALIDITA = ibm.dataInizioValidita, DATAFINEVALIDITA = Utility.DataFineStop(), TASSOCAMBIO = ibm.tassoCambio,//nuova aliquota rispetto alla vecchia registrata DATAAGGIORNAMENTO = DateTime.Now }; libNew.Add(ibNew1); libNew.Add(ibNew2); libNew = libNew.OrderBy(a => a.DATAINIZIOVALIDITA).ToList(); db.Database.BeginTransaction(); db.TFR.AddRange(libNew); db.SaveChanges(); RendiAnnullatoUnRecord(Convert.ToDecimal(idIntervalloUltimo), db); using (DtRicalcoloParametri dtrp = new DtRicalcoloParametri()) { foreach (var tfr in libNew) { dtrp.AssociaCanoneMAB_TFR(tfr.IDTFR, db, ibm.dataInizioValidita); dtrp.AssociaIndennita_TFR(tfr.IDTFR, db, ibm.dataInizioValidita); } } db.Database.CurrentTransaction.Commit(); } } } } } catch (Exception ex) { db.Database.CurrentTransaction.Rollback(); throw ex; } } }