public void DelIndennitaPrimoSegretario(decimal idIndPrimoSegr) { INDENNITAPRIMOSEGRETARIO precedenteIB = new INDENNITAPRIMOSEGRETARIO(); INDENNITAPRIMOSEGRETARIO delIB = new INDENNITAPRIMOSEGRETARIO(); using (ModelDBISE db = new ModelDBISE()) { try { db.Database.BeginTransaction(); var lib = db.INDENNITAPRIMOSEGRETARIO.Where(a => a.IDINDPRIMOSEGR == idIndPrimoSegr); if (lib.Count() > 0) { delIB = lib.First(); delIB.ANNULLATO = true; RendiAnnullatoUnRecord(delIB.IDINDPRIMOSEGR, db); precedenteIB = RestituisciIlRecordPrecedente(idIndPrimoSegr); RendiAnnullatoUnRecord(precedenteIB.IDINDPRIMOSEGR, db); var NuovoPrecedente = new INDENNITAPRIMOSEGRETARIO() { DATAINIZIOVALIDITA = precedenteIB.DATAINIZIOVALIDITA, DATAFINEVALIDITA = delIB.DATAFINEVALIDITA, // ALIQUOTA = precedenteIB.ALIQUOTA, //COEFFICIENTERICHIAMO = precedenteIB.COEFFICIENTERICHIAMO, //COEFFICIENTEINDBASE = precedenteIB.COEFFICIENTEINDBASE, INDENNITA = precedenteIB.INDENNITA, DATAAGGIORNAMENTO = DateTime.Now,// precedenteIB.DATAAGGIORNAMENTO, ANNULLATO = false }; db.INDENNITAPRIMOSEGRETARIO.Add(NuovoPrecedente); db.SaveChanges(); using (DtRicalcoloParametri dtrp = new DtRicalcoloParametri()) { dtrp.AssociaFigli_IPS(NuovoPrecedente.IDINDPRIMOSEGR, db, delIB.DATAINIZIOVALIDITA); } } using (objLogAttivita log = new objLogAttivita()) { log.Log(enumAttivita.Eliminazione, "Eliminazione parametro di Idennità Primo Segretario.", "INDENNITAPRIMOSEGRETARIO", idIndPrimoSegr); } db.Database.CurrentTransaction.Commit(); } catch (Exception ex) { db.Database.CurrentTransaction.Rollback(); throw ex; } } }
public void DelIndennitaPrimoSegretario(decimal idPercCond) { PERCENTUALECONDIVISIONE precedenteIB = new PERCENTUALECONDIVISIONE(); PERCENTUALECONDIVISIONE delIB = new PERCENTUALECONDIVISIONE(); using (ModelDBISE db = new ModelDBISE()) { try { db.Database.BeginTransaction(); var lib = db.PERCENTUALECONDIVISIONE.Where(a => a.IDPERCCOND == idPercCond); if (lib.Count() > 0) { delIB = lib.First(); delIB.ANNULLATO = true; RendiAnnullatoUnRecord(delIB.IDPERCCOND, db); precedenteIB = RestituisciIlRecordPrecedente(idPercCond); RendiAnnullatoUnRecord(precedenteIB.IDPERCCOND, db); var NuovoPrecedente = new PERCENTUALECONDIVISIONE() { DATAINIZIOVALIDITA = precedenteIB.DATAINIZIOVALIDITA, DATAFINEVALIDITA = delIB.DATAFINEVALIDITA, // ALIQUOTA = precedenteIB.ALIQUOTA, //COEFFICIENTERICHIAMO = precedenteIB.COEFFICIENTERICHIAMO, //COEFFICIENTEINDBASE = precedenteIB.COEFFICIENTEINDBASE, PERCENTUALE = precedenteIB.PERCENTUALE, DATAAGGIORNAMENTO = DateTime.Now,// precedenteIB.DATAAGGIORNAMENTO, ANNULLATO = false }; db.PERCENTUALECONDIVISIONE.Add(NuovoPrecedente); db.SaveChanges(); using (DtRicalcoloParametri dtrp = new DtRicalcoloParametri()) { dtrp.AssociaPagatoCondivisoMAB(NuovoPrecedente.IDPERCCOND, db, delIB.DATAINIZIOVALIDITA); } using (objLogAttivita log = new objLogAttivita()) { log.Log(enumAttivita.Eliminazione, "Eliminazione parametro di Idennità Primo Segretario.", "PERCENTUALECONDIVISIONE", idPercCond); } } db.Database.CurrentTransaction.Commit(); } catch (Exception ex) { db.Database.CurrentTransaction.Rollback(); throw ex; } } }
public void DelRiduzioni(decimal idMagCon) { RIDUZIONI precedenteIB = new RIDUZIONI(); RIDUZIONI delIB = new RIDUZIONI(); using (ModelDBISE db = new ModelDBISE()) { try { db.Database.BeginTransaction(); var lib = db.RIDUZIONI.Where(a => a.IDRIDUZIONI == idMagCon); if (lib.Count() > 0) { delIB = lib.First(); delIB.ANNULLATO = true; RendiAnnullatoUnRecord(delIB.IDRIDUZIONI, db); precedenteIB = RestituisciIlRecordPrecedente(idMagCon); RendiAnnullatoUnRecord(precedenteIB.IDRIDUZIONI, db); var NuovoPrecedente = new RIDUZIONI() { IDFUNZIONERIDUZIONE = precedenteIB.IDFUNZIONERIDUZIONE, DATAINIZIOVALIDITA = precedenteIB.DATAINIZIOVALIDITA, DATAFINEVALIDITA = delIB.DATAFINEVALIDITA, //ALIQUOTA = precedenteIB.ALIQUOTA, PERCENTUALE = precedenteIB.PERCENTUALE, DATAAGGIORNAMENTO = DateTime.Now,// precedenteIB.DATAAGGIORNAMENTO, ANNULLATO = false }; db.RIDUZIONI.Add(NuovoPrecedente); db.SaveChanges(); using (DtRicalcoloParametri dtrp = new DtRicalcoloParametri()) { dtrp.AssociaCoefficienteRichiamo_Riduzioni(NuovoPrecedente.IDRIDUZIONI, db, delIB.DATAINIZIOVALIDITA); dtrp.AssociaIndennitaBase_Riduzioni(NuovoPrecedente.IDRIDUZIONI, db, delIB.DATAINIZIOVALIDITA); dtrp.AssociaIndennitaSistemazione_Riduzioni(NuovoPrecedente.IDRIDUZIONI, db, delIB.DATAINIZIOVALIDITA); } using (objLogAttivita log = new objLogAttivita()) { log.Log(enumAttivita.Eliminazione, "Eliminazione parametro di Percentuale Maggiorazione figli.", "PERCENTUALE", idMagCon); } } db.Database.CurrentTransaction.Commit(); } catch (Exception ex) { db.Database.CurrentTransaction.Rollback(); throw ex; } } }
public void DelCoeffFasciaKm(decimal IDPFKM) { PERCENTUALEFKM precedenteIB = new PERCENTUALEFKM(); PERCENTUALEFKM delIB = new PERCENTUALEFKM(); using (ModelDBISE db = new ModelDBISE()) { try { db.Database.BeginTransaction(); var lib = db.PERCENTUALEFKM.Where(a => a.IDPFKM == IDPFKM); if (lib.Count() > 0) { delIB = lib.First(); delIB.ANNULLATO = true; RendiAnnullatoUnRecord(delIB.IDPFKM, db); precedenteIB = RestituisciIlRecordPrecedente(IDPFKM); RendiAnnullatoUnRecord(precedenteIB.IDPFKM, db); var NuovoPrecedente = new PERCENTUALEFKM() { IDFKM = precedenteIB.IDFKM, DATAINIZIOVALIDITA = precedenteIB.DATAINIZIOVALIDITA, DATAFINEVALIDITA = delIB.DATAFINEVALIDITA, COEFFICIENTEKM = precedenteIB.COEFFICIENTEKM, DATAAGGIORNAMENTO = DateTime.Now,// precedenteIB.DATAAGGIORNAMENTO, ANNULLATO = false }; db.PERCENTUALEFKM.Add(NuovoPrecedente); db.SaveChanges(); using (objLogAttivita log = new objLogAttivita()) { log.Log(enumAttivita.Eliminazione, "Eliminazione parametro di Percentuala KM.", "PERCENTUALEFKM", IDPFKM); } using (DtRicalcoloParametri dtrp = new DtRicalcoloParametri()) { dtrp.AssociaPrimaSistemazione_PKM(NuovoPrecedente.IDPFKM, db, delIB.DATAINIZIOVALIDITA); dtrp.AssociaRichiamo_PKM(NuovoPrecedente.IDPFKM, db, delIB.DATAINIZIOVALIDITA); } } db.Database.CurrentTransaction.Commit(); } catch (Exception ex) { db.Database.CurrentTransaction.Rollback(); throw ex; } } }
public void DelTfr(decimal idMagCon) { 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 == idMagCon); if (lib.Count() > 0) { delIB = lib.First(); delIB.ANNULLATO = true; RendiAnnullatoUnRecord(delIB.IDTFR, db); precedenteIB = RestituisciIlRecordPrecedente(idMagCon); RendiAnnullatoUnRecord(precedenteIB.IDTFR, db); var NuovoPrecedente = new TFR() { IDVALUTA = precedenteIB.IDVALUTA, DATAINIZIOVALIDITA = precedenteIB.DATAINIZIOVALIDITA, DATAFINEVALIDITA = delIB.DATAFINEVALIDITA, //ALIQUOTA = precedenteIB.ALIQUOTA, TASSOCAMBIO = precedenteIB.TASSOCAMBIO, DATAAGGIORNAMENTO = DateTime.Now,// precedenteIB.DATAAGGIORNAMENTO, ANNULLATO = false }; db.TFR.Add(NuovoPrecedente); db.SaveChanges(); using (DtRicalcoloParametri dtrp = new DtRicalcoloParametri()) { dtrp.AssociaCanoneMAB_TFR(NuovoPrecedente.IDTFR, db, delIB.DATAINIZIOVALIDITA); dtrp.AssociaIndennita_TFR(NuovoPrecedente.IDTFR, db, delIB.DATAINIZIOVALIDITA); } using (objLogAttivita log = new objLogAttivita()) { log.Log(enumAttivita.Eliminazione, "Eliminazione parametro di Percentuale TFR", "TFR", idMagCon); } } db.Database.CurrentTransaction.Commit(); } catch (Exception ex) { db.Database.CurrentTransaction.Rollback(); throw ex; } } }
public void AssociaConiuge_PMCTest() { try { using (ModelDBISE db = new ModelDBISE()) { using (DtRicalcoloParametri dtrp = new DtRicalcoloParametri()) { dtrp.AssociaConiuge_PMC(2, db); } } } catch (Exception ex) { Assert.Fail(ex.Message); } }
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; } } }
public void DelPercentualeDisagio(decimal idPercDisagio) { PERCENTUALEDISAGIO precedenteIB = new PERCENTUALEDISAGIO(); PERCENTUALEDISAGIO delIB = new PERCENTUALEDISAGIO(); using (ModelDBISE db = new ModelDBISE()) { try { db.Database.BeginTransaction(); var lib = db.PERCENTUALEDISAGIO.Where(a => a.IDPERCENTUALEDISAGIO == idPercDisagio); if (lib.Count() > 0) { delIB = lib.First(); delIB.ANNULLATO = true; var lprecIB = db.PERCENTUALEDISAGIO.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 PERCENTUALEDISAGIO() { IDUFFICIO = precedenteIB.IDUFFICIO, DATAINIZIOVALIDITA = precedenteIB.DATAINIZIOVALIDITA, DATAFINEVALIDITA = delIB.DATAFINEVALIDITA, //DATAFINEVALIDITA = Utility.DataFineStop(), PERCENTUALE = precedenteIB.PERCENTUALE, ANNULLATO = false }; db.PERCENTUALEDISAGIO.Add(ibOld1); db.SaveChanges(); using (DtRicalcoloParametri dtrp = new DtRicalcoloParametri()) { dtrp.AssociaIndenita_PD(ibOld1.IDPERCENTUALEDISAGIO, db, delIB.DATAINIZIOVALIDITA); } using (objLogAttivita log = new objLogAttivita()) { log.Log(enumAttivita.Eliminazione, "Eliminazione parametro di percentuale di disagio.", "PERCENTUALEDISAGIO", idPercDisagio); } } db.Database.CurrentTransaction.Commit(); } } catch (Exception ex) { db.Database.CurrentTransaction.Rollback(); throw ex; } } }
public void DelIndennitaDiBase(decimal idIndbase) { INDENNITABASE precedenteIB = new INDENNITABASE(); INDENNITABASE delIB = new INDENNITABASE(); using (ModelDBISE db = new ModelDBISE()) { try { db.Database.BeginTransaction(); var lib = db.INDENNITABASE.Where(a => a.IDINDENNITABASE == idIndbase); if (lib.Count() > 0) { delIB = lib.First(); delIB.ANNULLATO = true; var lprecIB = db.INDENNITABASE.Where(a => a.DATAFINEVALIDITA < delIB.DATAINIZIOVALIDITA && a.ANNULLATO == false && a.IDLIVELLO == delIB.IDLIVELLO).OrderByDescending(a => a.IDINDENNITABASE).ToList();//corretto if (lprecIB.Count > 0) { precedenteIB = lprecIB.Where(a => a.DATAFINEVALIDITA == lprecIB.Max(b => b.DATAFINEVALIDITA)).First(); precedenteIB.ANNULLATO = true; delIB.ANNULLATO = true;//corretto var ibOld1 = new INDENNITABASE() { IDLIVELLO = precedenteIB.IDLIVELLO, // DATAINIZIOVALIDITA = precedenteIB.DATAFINEVALIDITA, DATAINIZIOVALIDITA = precedenteIB.DATAINIZIOVALIDITA,//corretto DATAFINEVALIDITA = delIB.DATAFINEVALIDITA, VALORE = precedenteIB.VALORE, VALORERESP = precedenteIB.VALORERESP, ANNULLATO = false }; db.INDENNITABASE.Add(ibOld1); db.SaveChanges(); using (DtRicalcoloParametri dtrp = new DtRicalcoloParametri()) { dtrp.AssociaIndennitaBase_IB(ibOld1.IDINDENNITABASE, db, delIB.DATAINIZIOVALIDITA); dtrp.AssociaRiduzioniIB(ibOld1.IDINDENNITABASE, db, delIB.DATAINIZIOVALIDITA); } } using (objLogAttivita log = new objLogAttivita()) { log.Log(enumAttivita.Eliminazione, "Eliminazione parametro di indennità di base.", "INDENNITABASE", idIndbase); } db.Database.CurrentTransaction.Commit(); } } catch (Exception ex) { db.Database.CurrentTransaction.Rollback(); throw ex; } } }
public void SetIndennitaDiBase(IndennitaBaseModel ibm, bool aggiornaTutto) { List <INDENNITABASE> libNew = new List <INDENNITABASE>(); //INDENNITABASE ibPrecedente = new INDENNITABASE(); INDENNITABASE ibNew1 = new INDENNITABASE(); INDENNITABASE ibNew2 = new INDENNITABASE(); //List<INDENNITABASE> lArchivioIB = new List<INDENNITABASE>(); List <string> lista = new List <string>(); DateTime dataVariazione = ibm.dataInizioValidita; using (ModelDBISE db = new ModelDBISE()) { bool giafatta = false; try { using (dtParIndennitaBase dtal = new dtParIndennitaBase()) { //Se la data variazione coincide con una data inizio esistente lista = dtal.DataVariazioneCoincideConDataInizio(ibm.dataInizioValidita, ibm.idLivello); 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 aliquotaFirst = Convert.ToDecimal(lista[3]); //decimal valoreFirst = Convert.ToDecimal(lista[3]); //decimal valoreRespFirst = Convert.ToDecimal(lista[4]); ibNew1 = new INDENNITABASE() { DATAINIZIOVALIDITA = dataInizioFirst, DATAFINEVALIDITA = dataFineFirst, VALORE = ibm.valore, VALORERESP = ibm.valoreResponsabile, DATAAGGIORNAMENTO = DateTime.Now, IDLIVELLO = ibm.idLivello, }; if (aggiornaTutto) { ibNew1 = new INDENNITABASE() { DATAINIZIOVALIDITA = dataInizioFirst, DATAFINEVALIDITA = Utility.DataFineStop(), VALORE = ibm.valore, VALORERESP = ibm.valoreResponsabile, // ALIQUOTA = ibm.aliquota, DATAAGGIORNAMENTO = DateTime.Now, IDLIVELLO = ibm.idLivello, }; //qui annullo tutti i record rimanenti dalla data inizio inserita libNew = db.INDENNITABASE.Where(a => a.ANNULLATO == false && a.IDLIVELLO == ibm.idLivello).ToList().Where(a => a.DATAINIZIOVALIDITA > dataInizioFirst).ToList(); foreach (var elem in libNew) { RendiAnnullatoUnRecord(Convert.ToDecimal(elem.IDINDENNITABASE), db); } } db.Database.BeginTransaction(); db.INDENNITABASE.Add(ibNew1); db.SaveChanges(); RendiAnnullatoUnRecord(Convert.ToDecimal(idIntervalloFirst), db); using (DtRicalcoloParametri dtrp = new DtRicalcoloParametri()) { dtrp.AssociaIndennitaBase_IB(ibNew1.IDINDENNITABASE, db, ibm.dataInizioValidita); dtrp.AssociaRiduzioniIB(ibNew1.IDINDENNITABASE, 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, ibm.idLivello); 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 valoreLast = Convert.ToDecimal(lista[3]); decimal valoreRespLast = Convert.ToDecimal(lista[4]); ibNew1 = new INDENNITABASE() { DATAINIZIOVALIDITA = dataInizioLast, DATAFINEVALIDITA = dataFineLast.AddDays(-1), VALORE = valoreLast, VALORERESP = valoreRespLast, DATAAGGIORNAMENTO = DateTime.Now, IDLIVELLO = ibm.idLivello, }; ibNew2 = new INDENNITABASE() { DATAINIZIOVALIDITA = ibm.dataInizioValidita, DATAFINEVALIDITA = ibm.dataInizioValidita,//è uguale alla data Inizio VALORE = ibm.valore, VALORERESP = ibm.valoreResponsabile, DATAAGGIORNAMENTO = DateTime.Now, IDLIVELLO = ibm.idLivello, }; if (aggiornaTutto) { ibNew2 = new INDENNITABASE() { DATAINIZIOVALIDITA = ibm.dataInizioValidita, DATAFINEVALIDITA = Utility.DataFineStop(), VALORE = ibm.valore, VALORERESP = ibm.valoreResponsabile, DATAAGGIORNAMENTO = DateTime.Now, IDLIVELLO = ibm.idLivello, }; libNew = db.INDENNITABASE.Where(a => a.ANNULLATO == false && a.IDLIVELLO == ibm.idLivello).ToList().Where(a => a.DATAINIZIOVALIDITA > ibm.dataInizioValidita).ToList(); foreach (var elem in libNew) { RendiAnnullatoUnRecord(Convert.ToDecimal(elem.IDINDENNITABASE), db); } } libNew.Add(ibNew1); libNew.Add(ibNew2); libNew = libNew.OrderBy(a => a.DATAINIZIOVALIDITA).ToList(); db.Database.BeginTransaction(); db.INDENNITABASE.AddRange(libNew); db.SaveChanges(); //annullare l'intervallo trovato RendiAnnullatoUnRecord(Convert.ToDecimal(idIntervalloLast), db); using (DtRicalcoloParametri dtrp = new DtRicalcoloParametri()) { foreach (var ib in libNew) { dtrp.AssociaIndennitaBase_IB(ib.IDINDENNITABASE, db, ibm.dataInizioValidita); dtrp.AssociaRiduzioniIB(ib.IDINDENNITABASE, 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, ibm.idLivello); 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 aliquota = Convert.ToDecimal(lista[3]); decimal valore = Convert.ToDecimal(lista[3]); decimal valoreResp = Convert.ToDecimal(lista[4]); DateTime NewdataFine1 = ibm.dataInizioValidita.AddDays(-1); ibNew1 = new INDENNITABASE() { DATAINIZIOVALIDITA = dataInizio, DATAFINEVALIDITA = NewdataFine1, // ALIQUOTA = aliquota, VALORE = valore, VALORERESP = valoreResp, DATAAGGIORNAMENTO = DateTime.Now, IDLIVELLO = ibm.idLivello, }; ibNew2 = new INDENNITABASE() { DATAINIZIOVALIDITA = ibm.dataInizioValidita, DATAFINEVALIDITA = dataFine, // ALIQUOTA = ibm.aliquota, VALORE = ibm.valore, VALORERESP = ibm.valoreResponsabile, DATAAGGIORNAMENTO = DateTime.Now, IDLIVELLO = ibm.idLivello, }; if (aggiornaTutto) { ibNew2 = new INDENNITABASE() { DATAINIZIOVALIDITA = ibm.dataInizioValidita, DATAFINEVALIDITA = Utility.DataFineStop(), // ALIQUOTA = ibm.aliquota, VALORE = ibm.valore, VALORERESP = ibm.valoreResponsabile, DATAAGGIORNAMENTO = DateTime.Now, IDLIVELLO = ibm.idLivello, }; libNew = db.INDENNITABASE.Where(a => a.ANNULLATO == false && a.LIVELLI.IDLIVELLO == ibm.idLivello).ToList().Where(a => a.DATAINIZIOVALIDITA > ibm.dataInizioValidita).ToList(); foreach (var elem in libNew) { RendiAnnullatoUnRecord(Convert.ToDecimal(elem.IDINDENNITABASE), db); } } libNew.Add(ibNew1); libNew.Add(ibNew2); libNew = libNew.OrderBy(a => a.DATAINIZIOVALIDITA).ToList(); db.Database.BeginTransaction(); db.INDENNITABASE.AddRange(libNew); db.SaveChanges(); //annullare l'intervallo trovato RendiAnnullatoUnRecord(Convert.ToDecimal(idIntervallo), db); using (DtRicalcoloParametri dtrp = new DtRicalcoloParametri()) { foreach (var ib in libNew) { dtrp.AssociaIndennitaBase_IB(ib.IDINDENNITABASE, db, ibm.dataInizioValidita); dtrp.AssociaRiduzioniIB(ib.IDINDENNITABASE, db, ibm.dataInizioValidita); } } db.Database.CurrentTransaction.Commit(); } } //CASO DELL'ULTIMA RIGA CON LA DATA FINE UGUALE A 31/12/9999 if (giafatta == false) { lista = dtal.RestituisciLaRigaMassima(ibm.idLivello); //Attenzione qui se la lista non contiene nessun elemento //significa che non esiste nessun elemento corrispondentemente al livello selezionato if (lista.Count == 0) { ibNew1 = new INDENNITABASE() { DATAINIZIOVALIDITA = ibm.dataInizioValidita, DATAFINEVALIDITA = Convert.ToDateTime(Utility.DataFineStop()), VALORE = ibm.valore, VALORERESP = ibm.valoreResponsabile, DATAAGGIORNAMENTO = DateTime.Now, IDLIVELLO = ibm.idLivello, }; libNew.Add(ibNew1); db.Database.BeginTransaction(); db.INDENNITABASE.Add(ibNew1); db.SaveChanges(); using (DtRicalcoloParametri dtrp = new DtRicalcoloParametri()) { dtrp.AssociaIndennitaBase_IB(ibNew1.IDINDENNITABASE, db, ibm.dataInizioValidita); dtrp.AssociaRiduzioniIB(ibNew1.IDINDENNITABASE, 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 aliquotaUltimo = Convert.ToDecimal(lista[3]); decimal valoreUltimo = Convert.ToDecimal(lista[3]); decimal valoreRespUltimo = Convert.ToDecimal(lista[4]); if (dataInizioUltimo == ibm.dataInizioValidita) { ibNew1 = new INDENNITABASE() { DATAINIZIOVALIDITA = dataInizioUltimo, DATAFINEVALIDITA = dataFineUltimo, //ALIQUOTA = ibm.aliquota,//nuova aliquota rispetto alla vecchia registrata VALORE = ibm.valore, VALORERESP = ibm.valoreResponsabile, DATAAGGIORNAMENTO = DateTime.Now }; libNew.Add(ibNew1); db.Database.BeginTransaction(); db.INDENNITABASE.Add(ibNew1); db.SaveChanges(); RendiAnnullatoUnRecord(Convert.ToDecimal(idIntervalloUltimo), db); using (DtRicalcoloParametri dtrp = new DtRicalcoloParametri()) { dtrp.AssociaIndennitaBase_IB(ibNew1.IDINDENNITABASE, db, ibm.dataInizioValidita); dtrp.AssociaRiduzioniIB(ibNew1.IDINDENNITABASE, 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 INDENNITABASE() { DATAINIZIOVALIDITA = dataInizioUltimo, DATAFINEVALIDITA = ibm.dataInizioValidita.AddDays(-1), // ALIQUOTA = aliquotaUltimo, VALORE = valoreUltimo, VALORERESP = valoreRespUltimo, DATAAGGIORNAMENTO = DateTime.Now, IDLIVELLO = ibm.idLivello, }; ibNew2 = new INDENNITABASE() { DATAINIZIOVALIDITA = ibm.dataInizioValidita, DATAFINEVALIDITA = Utility.DataFineStop(), //ALIQUOTA = ibm.aliquota,//nuova aliquota rispetto alla vecchia registrata VALORE = ibm.valore, VALORERESP = ibm.valoreResponsabile, DATAAGGIORNAMENTO = DateTime.Now, IDLIVELLO = ibm.idLivello, }; libNew.Add(ibNew1); libNew.Add(ibNew2); libNew = libNew.OrderBy(a => a.DATAINIZIOVALIDITA).ToList(); db.Database.BeginTransaction(); db.INDENNITABASE.AddRange(libNew); db.SaveChanges(); RendiAnnullatoUnRecord(Convert.ToDecimal(idIntervalloUltimo), db); using (DtRicalcoloParametri dtrp = new DtRicalcoloParametri()) { foreach (var ib in libNew) { dtrp.AssociaIndennitaBase_IB(ib.IDINDENNITABASE, db, ibm.dataInizioValidita); dtrp.AssociaRiduzioniIB(ib.IDINDENNITABASE, db, ibm.dataInizioValidita); } } db.Database.CurrentTransaction.Commit(); } } } // db.Database.CurrentTransaction.Commit(); } } catch (Exception ex) { db.Database.CurrentTransaction.Rollback(); throw ex; } } }
public void SetPercAnticipoTE(PercAnticipoTEModel ibm, bool aggiornaTutto) { List <PERCENTUALEANTICIPOTE> libNew = new List <PERCENTUALEANTICIPOTE>(); //PERCENTUALEANTICIPOTE ibPrecedente = new PERCENTUALEANTICIPOTE(); PERCENTUALEANTICIPOTE ibNew1 = new PERCENTUALEANTICIPOTE(); PERCENTUALEANTICIPOTE ibNew2 = new PERCENTUALEANTICIPOTE(); //List<PERCENTUALEANTICIPOTE> lArchivioIB = new List<PERCENTUALEANTICIPOTE>(); List <string> lista = new List <string>(); using (ModelDBISE db = new ModelDBISE()) { bool giafatta = false; try { using (dtParPercAnticipoTE dtal = new dtParPercAnticipoTE()) { //Se la data variazione coincide con una data inizio esistente lista = dtal.DataVariazioneCoincideConDataInizio(ibm.dataInizioValidita, Convert.ToDecimal(ibm.idTipoAnticipo)); 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 PERCENTUALEANTICIPOTE() { IDTIPOANTICIPOTE = Convert.ToDecimal(ibm.idTipoAnticipo), DATAINIZIOVALIDITA = dataInizioFirst, DATAFINEVALIDITA = dataFineFirst, // ALIQUOTA = ibm.aliquota, PERCENTUALE = ibm.percentuale, DATAAGGIORNAMENTO = DateTime.Now, }; if (aggiornaTutto) { ibNew1 = new PERCENTUALEANTICIPOTE() { IDTIPOANTICIPOTE = Convert.ToDecimal(ibm.idTipoAnticipo), DATAINIZIOVALIDITA = dataInizioFirst, DATAFINEVALIDITA = Utility.DataFineStop(), // ALIQUOTA = ibm.aliquota, PERCENTUALE = ibm.percentuale, DATAAGGIORNAMENTO = DateTime.Now, }; //qui annullo tutti i record rimanenti dalla data inizio inserita libNew = db.PERCENTUALEANTICIPOTE.Where(a => a.ANNULLATO == false).ToList() .Where(a => a.DATAINIZIOVALIDITA > dataInizioFirst && a.IDTIPOANTICIPOTE == Convert.ToDecimal(ibm.idTipoAnticipo)).ToList(); foreach (var elem in libNew) { RendiAnnullatoUnRecord(Convert.ToDecimal(elem.IDPERCANTICIPOTM), db); } } db.Database.BeginTransaction(); db.PERCENTUALEANTICIPOTE.Add(ibNew1); db.SaveChanges(); RendiAnnullatoUnRecord(Convert.ToDecimal(idIntervalloFirst), db); using (DtRicalcoloParametri dtrp = new DtRicalcoloParametri()) { switch ((EnumTipoAnticipoTE)ibNew1.IDTIPOANTICIPOTE) { case EnumTipoAnticipoTE.Partenza: dtrp.AssociaPercentualeAnticipoTEP(ibNew1.IDPERCANTICIPOTM, db, ibm.dataInizioValidita); break; case EnumTipoAnticipoTE.Rientro: dtrp.AssociaPercentualeAnticipoTER(ibNew1.IDPERCANTICIPOTM, db, ibm.dataInizioValidita); break; default: throw new ArgumentOutOfRangeException(); } } 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.idTipoAnticipo)); 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 PERCENTUALE = Convert.ToDecimal(lista[3]); ibNew1 = new PERCENTUALEANTICIPOTE() { IDTIPOANTICIPOTE = Convert.ToDecimal(ibm.idTipoAnticipo), DATAINIZIOVALIDITA = dataInizioLast, DATAFINEVALIDITA = dataFineLast.AddDays(-1), PERCENTUALE = PERCENTUALE, DATAAGGIORNAMENTO = DateTime.Now, }; ibNew2 = new PERCENTUALEANTICIPOTE() { IDTIPOANTICIPOTE = Convert.ToDecimal(ibm.idTipoAnticipo), DATAINIZIOVALIDITA = ibm.dataInizioValidita, DATAFINEVALIDITA = ibm.dataInizioValidita,//è uguale alla data Inizio PERCENTUALE = ibm.percentuale, DATAAGGIORNAMENTO = DateTime.Now }; if (aggiornaTutto) { ibNew2 = new PERCENTUALEANTICIPOTE() { IDTIPOANTICIPOTE = Convert.ToDecimal(ibm.idTipoAnticipo), DATAINIZIOVALIDITA = ibm.dataInizioValidita, DATAFINEVALIDITA = Utility.DataFineStop(), PERCENTUALE = ibm.percentuale, DATAAGGIORNAMENTO = DateTime.Now }; libNew = db.PERCENTUALEANTICIPOTE.Where(a => a.IDTIPOANTICIPOTE == Convert.ToDecimal(ibm.idTipoAnticipo) && a.ANNULLATO == false).ToList().Where(a => a.DATAINIZIOVALIDITA > ibm.dataInizioValidita).ToList(); foreach (var elem in libNew) { RendiAnnullatoUnRecord(Convert.ToDecimal(elem.IDPERCANTICIPOTM), db); } } libNew.Add(ibNew1); libNew.Add(ibNew2); libNew = libNew.OrderBy(a => a.DATAINIZIOVALIDITA).ToList(); db.Database.BeginTransaction(); db.PERCENTUALEANTICIPOTE.AddRange(libNew); db.SaveChanges(); //annullare l'intervallo trovato RendiAnnullatoUnRecord(Convert.ToDecimal(idIntervalloLast), db); using (DtRicalcoloParametri dtrp = new DtRicalcoloParametri()) { foreach (var pa in libNew) { switch ((EnumTipoAnticipoTE)pa.IDTIPOANTICIPOTE) { case EnumTipoAnticipoTE.Partenza: dtrp.AssociaPercentualeAnticipoTEP(pa.IDPERCANTICIPOTM, db, ibm.dataInizioValidita); break; case EnumTipoAnticipoTE.Rientro: dtrp.AssociaPercentualeAnticipoTER(pa.IDPERCANTICIPOTM, db, ibm.dataInizioValidita); break; default: throw new ArgumentOutOfRangeException(); } } } 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.idTipoAnticipo)); 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 PERCENTUALE = Convert.ToDecimal(lista[3]); DateTime NewdataFine1 = ibm.dataInizioValidita.AddDays(-1); ibNew1 = new PERCENTUALEANTICIPOTE() { IDTIPOANTICIPOTE = Convert.ToDecimal(ibm.idTipoAnticipo), DATAINIZIOVALIDITA = dataInizio, DATAFINEVALIDITA = NewdataFine1, //ALIQUOTA = aliquota, PERCENTUALE = PERCENTUALE, DATAAGGIORNAMENTO = DateTime.Now, }; ibNew2 = new PERCENTUALEANTICIPOTE() { IDTIPOANTICIPOTE = Convert.ToDecimal(ibm.idTipoAnticipo), DATAINIZIOVALIDITA = ibm.dataInizioValidita, DATAFINEVALIDITA = dataFine, // ALIQUOTA = ibm.aliquota, PERCENTUALE = ibm.percentuale, DATAAGGIORNAMENTO = DateTime.Now }; if (aggiornaTutto) { ibNew2 = new PERCENTUALEANTICIPOTE() { IDTIPOANTICIPOTE = Convert.ToDecimal(ibm.idTipoAnticipo), DATAINIZIOVALIDITA = ibm.dataInizioValidita, DATAFINEVALIDITA = Utility.DataFineStop(), // ALIQUOTA = ibm.aliquota, PERCENTUALE = ibm.percentuale, DATAAGGIORNAMENTO = DateTime.Now }; decimal tmpii = Convert.ToDecimal(ibm.idTipoAnticipo); libNew = db.PERCENTUALEANTICIPOTE.Where(a => a.IDTIPOANTICIPOTE == tmpii && a.ANNULLATO == false).ToList().Where(a => a.DATAINIZIOVALIDITA > ibm.dataInizioValidita).ToList(); foreach (var elem in libNew) { RendiAnnullatoUnRecord(Convert.ToDecimal(elem.IDPERCANTICIPOTM), db); } } libNew.Add(ibNew1); libNew.Add(ibNew2); libNew = libNew.OrderBy(a => a.DATAINIZIOVALIDITA).ToList(); db.Database.BeginTransaction(); db.PERCENTUALEANTICIPOTE.AddRange(libNew); db.SaveChanges(); //annullare l'intervallo trovato RendiAnnullatoUnRecord(Convert.ToDecimal(idIntervallo), db); using (DtRicalcoloParametri dtrp = new DtRicalcoloParametri()) { foreach (var pa in libNew) { switch ((EnumTipoAnticipoTE)pa.IDTIPOANTICIPOTE) { case EnumTipoAnticipoTE.Partenza: dtrp.AssociaPercentualeAnticipoTEP(pa.IDPERCANTICIPOTM, db, ibm.dataInizioValidita); break; case EnumTipoAnticipoTE.Rientro: dtrp.AssociaPercentualeAnticipoTER(pa.IDPERCANTICIPOTM, db, ibm.dataInizioValidita); break; default: throw new ArgumentOutOfRangeException(); } } } 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.idTipoAnticipo)); if (lista.Count == 0) { ibNew1 = new PERCENTUALEANTICIPOTE() { DATAINIZIOVALIDITA = ibm.dataInizioValidita, DATAFINEVALIDITA = Convert.ToDateTime(Utility.DataFineStop()), PERCENTUALE = ibm.percentuale, IDTIPOANTICIPOTE = Convert.ToDecimal(ibm.idTipoAnticipo), DATAAGGIORNAMENTO = DateTime.Now, }; libNew.Add(ibNew1); db.Database.BeginTransaction(); db.PERCENTUALEANTICIPOTE.Add(ibNew1); db.SaveChanges(); using (DtRicalcoloParametri dtrp = new DtRicalcoloParametri()) { switch ((EnumTipoAnticipoTE)ibNew1.IDTIPOANTICIPOTE) { case EnumTipoAnticipoTE.Partenza: dtrp.AssociaPercentualeAnticipoTEP(ibNew1.IDPERCANTICIPOTM, db, ibm.dataInizioValidita); break; case EnumTipoAnticipoTE.Rientro: dtrp.AssociaPercentualeAnticipoTER(ibNew1.IDPERCANTICIPOTM, db, ibm.dataInizioValidita); break; default: throw new ArgumentOutOfRangeException(); } } 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 PERCENTUALEANTICIPOTE() { IDTIPOANTICIPOTE = Convert.ToDecimal(ibm.idTipoAnticipo), DATAINIZIOVALIDITA = dataInizioUltimo, DATAFINEVALIDITA = dataFineUltimo, // ALIQUOTA = ibm.aliquota,//nuova aliquota rispetto alla vecchia registrata PERCENTUALE = ibm.percentuale, DATAAGGIORNAMENTO = DateTime.Now }; libNew.Add(ibNew1); db.Database.BeginTransaction(); db.PERCENTUALEANTICIPOTE.Add(ibNew1); db.SaveChanges(); RendiAnnullatoUnRecord(Convert.ToDecimal(idIntervalloUltimo), db); using (DtRicalcoloParametri dtrp = new DtRicalcoloParametri()) { switch ((EnumTipoAnticipoTE)ibNew1.IDTIPOANTICIPOTE) { case EnumTipoAnticipoTE.Partenza: dtrp.AssociaPercentualeAnticipoTEP(ibNew1.IDPERCANTICIPOTM, db, ibm.dataInizioValidita); break; case EnumTipoAnticipoTE.Rientro: dtrp.AssociaPercentualeAnticipoTER(ibNew1.IDPERCANTICIPOTM, db, ibm.dataInizioValidita); break; default: throw new ArgumentOutOfRangeException(); } } 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 PERCENTUALEANTICIPOTE() { IDTIPOANTICIPOTE = Convert.ToDecimal(ibm.idTipoAnticipo), DATAINIZIOVALIDITA = dataInizioUltimo, DATAFINEVALIDITA = ibm.dataInizioValidita.AddDays(-1), PERCENTUALE = percentualeUltimo, DATAAGGIORNAMENTO = DateTime.Now }; ibNew2 = new PERCENTUALEANTICIPOTE() { IDTIPOANTICIPOTE = Convert.ToDecimal(ibm.idTipoAnticipo), DATAINIZIOVALIDITA = ibm.dataInizioValidita, DATAFINEVALIDITA = Utility.DataFineStop(), PERCENTUALE = ibm.percentuale,//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.PERCENTUALEANTICIPOTE.AddRange(libNew); db.SaveChanges(); RendiAnnullatoUnRecord(Convert.ToDecimal(idIntervalloUltimo), db); using (DtRicalcoloParametri dtrp = new DtRicalcoloParametri()) { foreach (var pa in libNew) { switch ((EnumTipoAnticipoTE)pa.IDTIPOANTICIPOTE) { case EnumTipoAnticipoTE.Partenza: dtrp.AssociaPercentualeAnticipoTEP(pa.IDPERCANTICIPOTM, db, ibm.dataInizioValidita); break; case EnumTipoAnticipoTE.Rientro: dtrp.AssociaPercentualeAnticipoTER(pa.IDPERCANTICIPOTM, db, ibm.dataInizioValidita); break; default: throw new ArgumentOutOfRangeException(); } } } db.Database.CurrentTransaction.Commit(); } } } } } catch (Exception ex) { db.Database.CurrentTransaction.Rollback(); throw ex; } } }
public void DelPercAnticipoTE(decimal idMagCon) { PERCENTUALEANTICIPOTE precedenteIB = new PERCENTUALEANTICIPOTE(); PERCENTUALEANTICIPOTE delIB = new PERCENTUALEANTICIPOTE(); using (ModelDBISE db = new ModelDBISE()) { try { db.Database.BeginTransaction(); var lib = db.PERCENTUALEANTICIPOTE.Where(a => a.IDPERCANTICIPOTM == idMagCon); if (lib.Count() > 0) { delIB = lib.First(); delIB.ANNULLATO = true; RendiAnnullatoUnRecord(delIB.IDPERCANTICIPOTM, db); precedenteIB = RestituisciIlRecordPrecedente(idMagCon); RendiAnnullatoUnRecord(precedenteIB.IDPERCANTICIPOTM, db); var NuovoPrecedente = new PERCENTUALEANTICIPOTE() { IDTIPOANTICIPOTE = precedenteIB.IDTIPOANTICIPOTE, DATAINIZIOVALIDITA = precedenteIB.DATAINIZIOVALIDITA, DATAFINEVALIDITA = delIB.DATAFINEVALIDITA, //ALIQUOTA = precedenteIB.ALIQUOTA, PERCENTUALE = precedenteIB.PERCENTUALE, DATAAGGIORNAMENTO = DateTime.Now,// precedenteIB.DATAAGGIORNAMENTO, ANNULLATO = false }; db.PERCENTUALEANTICIPOTE.Add(NuovoPrecedente); db.SaveChanges(); using (DtRicalcoloParametri dtrp = new DtRicalcoloParametri()) { switch ((EnumTipoAnticipoTE)NuovoPrecedente.IDTIPOANTICIPOTE) { case EnumTipoAnticipoTE.Partenza: dtrp.AssociaPercentualeAnticipoTEP(NuovoPrecedente.IDPERCANTICIPOTM, db, delIB.DATAINIZIOVALIDITA); break; case EnumTipoAnticipoTE.Rientro: dtrp.AssociaPercentualeAnticipoTER(NuovoPrecedente.IDPERCANTICIPOTM, db, delIB.DATAINIZIOVALIDITA); break; default: throw new ArgumentOutOfRangeException(); } } } using (objLogAttivita log = new objLogAttivita()) { log.Log(enumAttivita.Eliminazione, "Eliminazione parametro di Percentuale.", "PERCENTUALE", idMagCon); } db.Database.CurrentTransaction.Commit(); } catch (Exception ex) { db.Database.CurrentTransaction.Rollback(); throw ex; } } }
///// <summary> ///// ///// </summary> ///// <param name="ibm"></param> public void SetCoeffFasciaKm(CoeffFasciaKmModel ibm, bool aggiornaTutto) { List <PERCENTUALEFKM> libNew = new List <PERCENTUALEFKM>(); //PERCENTUALEFKM ibPrecedente = new PERCENTUALEFKM(); PERCENTUALEFKM ibNew1 = new PERCENTUALEFKM(); PERCENTUALEFKM ibNew2 = new PERCENTUALEFKM(); //List<PERCENTUALEFKM> lArchivioIB = new List<PERCENTUALEFKM>(); List <string> lista = new List <string>(); using (ModelDBISE db = new ModelDBISE()) { bool giafatta = false; try { using (dtParCoefficienteKm dtal = new dtParCoefficienteKm()) { //Se la data variazione coincide con una data inizio esistente lista = dtal.DataVariazioneCoincideConDataInizio(ibm.dataInizioValidita, ibm.idDefKm); 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 aliquotaFirst = Convert.ToDecimal(lista[3]); ibNew1 = new PERCENTUALEFKM() { IDFKM = ibm.idDefKm, DATAINIZIOVALIDITA = dataInizioFirst, DATAFINEVALIDITA = dataFineFirst, COEFFICIENTEKM = ibm.coefficienteKm, DATAAGGIORNAMENTO = DateTime.Now, }; if (aggiornaTutto) { ibNew1 = new PERCENTUALEFKM() { IDFKM = ibm.idDefKm, DATAINIZIOVALIDITA = dataInizioFirst, DATAFINEVALIDITA = Utility.DataFineStop(), COEFFICIENTEKM = ibm.idDefKm, DATAAGGIORNAMENTO = DateTime.Now, }; //qui annullo tutti i record rimanenti dalla data inizio inserita libNew = db.PERCENTUALEFKM.Where(a => a.IDFKM == ibm.idDefKm && a.ANNULLATO == false).ToList().Where(a => a.DATAINIZIOVALIDITA > dataInizioFirst).ToList(); foreach (var elem in libNew) { RendiAnnullatoUnRecord(Convert.ToDecimal(elem.IDPFKM), db); } } db.Database.BeginTransaction(); db.PERCENTUALEFKM.Add(ibNew1); db.SaveChanges(); RendiAnnullatoUnRecord(Convert.ToDecimal(idIntervalloFirst), db); using (DtRicalcoloParametri dtrp = new DtRicalcoloParametri()) { dtrp.AssociaPrimaSistemazione_PKM(ibNew1.IDPFKM, db, ibm.dataInizioValidita); dtrp.AssociaRichiamo_PKM(ibNew1.IDPFKM, 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, ibm.idDefKm); 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 aliquotaLast = Convert.ToDecimal(lista[3]); ibNew1 = new PERCENTUALEFKM() { IDFKM = ibm.idDefKm, DATAINIZIOVALIDITA = dataInizioLast, DATAFINEVALIDITA = dataFineLast.AddDays(-1), COEFFICIENTEKM = aliquotaLast, DATAAGGIORNAMENTO = DateTime.Now, }; ibNew2 = new PERCENTUALEFKM() { IDFKM = ibm.idDefKm, DATAINIZIOVALIDITA = ibm.dataInizioValidita, DATAFINEVALIDITA = ibm.dataInizioValidita,//è uguale alla data Inizio COEFFICIENTEKM = ibm.coefficienteKm, DATAAGGIORNAMENTO = DateTime.Now }; if (aggiornaTutto) { ibNew2 = new PERCENTUALEFKM() { IDFKM = ibm.idDefKm, DATAINIZIOVALIDITA = ibm.dataInizioValidita, DATAFINEVALIDITA = Utility.DataFineStop(), COEFFICIENTEKM = ibm.coefficienteKm, DATAAGGIORNAMENTO = DateTime.Now }; libNew = db.PERCENTUALEFKM.Where(a => a.IDFKM == ibm.idDefKm && a.ANNULLATO == false).ToList().Where(a => a.DATAINIZIOVALIDITA > ibm.dataInizioValidita).ToList(); foreach (var elem in libNew) { RendiAnnullatoUnRecord(Convert.ToDecimal(elem.IDPFKM), db); } } libNew.Add(ibNew1); libNew.Add(ibNew2); libNew = libNew.OrderBy(a => a.DATAINIZIOVALIDITA).ToList(); db.Database.BeginTransaction(); db.PERCENTUALEFKM.AddRange(libNew); db.SaveChanges(); //annullare l'intervallo trovato RendiAnnullatoUnRecord(Convert.ToDecimal(idIntervalloLast), db); using (DtRicalcoloParametri dtrp = new DtRicalcoloParametri()) { foreach (var cfkm in libNew) { dtrp.AssociaPrimaSistemazione_PKM(cfkm.IDPFKM, db, ibm.dataInizioValidita); dtrp.AssociaRichiamo_PKM(cfkm.IDPFKM, 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, ibm.idDefKm); 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 aliquota = Convert.ToDecimal(lista[3]); DateTime NewdataFine1 = ibm.dataInizioValidita.AddDays(-1); ibNew1 = new PERCENTUALEFKM() { IDFKM = ibm.idDefKm, DATAINIZIOVALIDITA = dataInizio, DATAFINEVALIDITA = NewdataFine1, COEFFICIENTEKM = aliquota, DATAAGGIORNAMENTO = DateTime.Now, }; ibNew2 = new PERCENTUALEFKM() { IDFKM = ibm.idDefKm, DATAINIZIOVALIDITA = ibm.dataInizioValidita, DATAFINEVALIDITA = dataFine, COEFFICIENTEKM = ibm.coefficienteKm, DATAAGGIORNAMENTO = DateTime.Now }; if (aggiornaTutto) { ibNew2 = new PERCENTUALEFKM() { IDFKM = ibm.idDefKm, DATAINIZIOVALIDITA = ibm.dataInizioValidita, DATAFINEVALIDITA = Utility.DataFineStop(), COEFFICIENTEKM = ibm.coefficienteKm, DATAAGGIORNAMENTO = DateTime.Now }; libNew = db.PERCENTUALEFKM.Where(a => a.IDFKM == ibm.idDefKm && a.ANNULLATO == false).ToList().Where(a => a.DATAINIZIOVALIDITA > ibm.dataInizioValidita).ToList(); foreach (var elem in libNew) { RendiAnnullatoUnRecord(Convert.ToDecimal(elem.IDPFKM), db); } } libNew.Add(ibNew1); libNew.Add(ibNew2); libNew = libNew.OrderBy(a => a.DATAINIZIOVALIDITA).ToList(); db.Database.BeginTransaction(); db.PERCENTUALEFKM.AddRange(libNew); db.SaveChanges(); //annullare l'intervallo trovato RendiAnnullatoUnRecord(Convert.ToDecimal(idIntervallo), db); using (DtRicalcoloParametri dtrp = new DtRicalcoloParametri()) { foreach (var cfkm in libNew) { dtrp.AssociaPrimaSistemazione_PKM(cfkm.IDPFKM, db, ibm.dataInizioValidita); dtrp.AssociaRichiamo_PKM(cfkm.IDPFKM, 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(ibm.idDefKm); if (lista.Count == 0) { ibNew1 = new PERCENTUALEFKM() { DATAINIZIOVALIDITA = ibm.dataInizioValidita, DATAFINEVALIDITA = Convert.ToDateTime(Utility.DataFineStop()), COEFFICIENTEKM = ibm.coefficienteKm, DATAAGGIORNAMENTO = DateTime.Now, IDFKM = ibm.idDefKm, }; libNew.Add(ibNew1); db.Database.BeginTransaction(); db.PERCENTUALEFKM.Add(ibNew1); int i = db.SaveChanges(); if (i > 0) { using (DtRicalcoloParametri dtrp = new DtRicalcoloParametri()) { dtrp.AssociaPrimaSistemazione_PKM(ibNew1.IDPFKM, db, ibm.dataInizioValidita); dtrp.AssociaRichiamo_PKM(ibNew1.IDPFKM, db, ibm.dataInizioValidita); } db.Database.CurrentTransaction.Commit(); } else { throw new Exception("Errore nella fase di inserimento della percentuale di fascia chilometrica."); } } 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 aliquotaUltimo = Convert.ToDecimal(lista[3]); if (dataInizioUltimo == ibm.dataInizioValidita) { ibNew1 = new PERCENTUALEFKM() { IDFKM = ibm.idDefKm, DATAINIZIOVALIDITA = dataInizioUltimo, DATAFINEVALIDITA = dataFineUltimo, COEFFICIENTEKM = ibm.coefficienteKm,//nuova aliquota rispetto alla vecchia registrata DATAAGGIORNAMENTO = DateTime.Now }; libNew.Add(ibNew1); db.Database.BeginTransaction(); db.PERCENTUALEFKM.Add(ibNew1); db.SaveChanges(); RendiAnnullatoUnRecord(Convert.ToDecimal(idIntervalloUltimo), db); using (DtRicalcoloParametri dtrp = new DtRicalcoloParametri()) { dtrp.AssociaPrimaSistemazione_PKM(ibNew1.IDPFKM, db, ibm.dataInizioValidita); dtrp.AssociaRichiamo_PKM(ibNew1.IDPFKM, 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 PERCENTUALEFKM() { IDFKM = ibm.idDefKm, DATAINIZIOVALIDITA = dataInizioUltimo, DATAFINEVALIDITA = ibm.dataInizioValidita.AddDays(-1), COEFFICIENTEKM = aliquotaUltimo, DATAAGGIORNAMENTO = DateTime.Now }; ibNew2 = new PERCENTUALEFKM() { IDFKM = ibm.idDefKm, DATAINIZIOVALIDITA = ibm.dataInizioValidita, DATAFINEVALIDITA = Utility.DataFineStop(), COEFFICIENTEKM = ibm.coefficienteKm,//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.PERCENTUALEFKM.AddRange(libNew); db.SaveChanges(); RendiAnnullatoUnRecord(Convert.ToDecimal(idIntervalloUltimo), db); using (DtRicalcoloParametri dtrp = new DtRicalcoloParametri()) { foreach (var cfkm in libNew) { dtrp.AssociaPrimaSistemazione_PKM(cfkm.IDPFKM, db, ibm.dataInizioValidita); dtrp.AssociaRichiamo_PKM(cfkm.IDPFKM, db, ibm.dataInizioValidita); } } db.Database.CurrentTransaction.Commit(); } } } // db.Database.CurrentTransaction.Commit(); } } catch (Exception ex) { db.Database.CurrentTransaction.Rollback(); throw ex; } } }
public void SetIndennitaPrimoSegretario(IndennitaPrimoSegretModel ibm, bool aggiornaTutto) { List <INDENNITAPRIMOSEGRETARIO> libNew = new List <INDENNITAPRIMOSEGRETARIO>(); //INDENNITAPRIMOSEGRETARIO ibPrecedente = new INDENNITAPRIMOSEGRETARIO(); INDENNITAPRIMOSEGRETARIO ibNew1 = new INDENNITAPRIMOSEGRETARIO(); INDENNITAPRIMOSEGRETARIO ibNew2 = new INDENNITAPRIMOSEGRETARIO(); //List<INDENNITAPRIMOSEGRETARIO> lArchivioIB = new List<INDENNITAPRIMOSEGRETARIO>(); List <string> lista = new List <string>(); using (ModelDBISE db = new ModelDBISE()) { bool giafatta = false; try { using (dtIndPrimoSegr dtal = new dtIndPrimoSegr()) { //Se la data variazione coincide con una data inizio esistente lista = dtal.DataVariazioneCoincideConDataInizio(ibm.dataInizioValidita); 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 COEFFICIENTERICHIAMO = Convert.ToDecimal(lista[3]); // decimal COEFFICIENTEINDBASE = Convert.ToDecimal(lista[4]); ibNew1 = new INDENNITAPRIMOSEGRETARIO() { DATAINIZIOVALIDITA = dataInizioFirst, DATAFINEVALIDITA = dataFineFirst, INDENNITA = ibm.indennita, DATAAGGIORNAMENTO = DateTime.Now, }; if (aggiornaTutto) { ibNew1 = new INDENNITAPRIMOSEGRETARIO() { DATAINIZIOVALIDITA = dataInizioFirst, DATAFINEVALIDITA = Utility.DataFineStop(), INDENNITA = ibm.indennita, DATAAGGIORNAMENTO = DateTime.Now, }; //qui annullo tutti i record rimanenti dalla data inizio inserita libNew = db.INDENNITAPRIMOSEGRETARIO.Where(a => a.ANNULLATO == false).ToList().Where(a => a.DATAINIZIOVALIDITA > dataInizioFirst).ToList(); foreach (var elem in libNew) { RendiAnnullatoUnRecord(Convert.ToDecimal(elem.IDINDPRIMOSEGR), db); } } db.Database.BeginTransaction(); db.INDENNITAPRIMOSEGRETARIO.Add(ibNew1); db.SaveChanges(); RendiAnnullatoUnRecord(Convert.ToDecimal(idIntervalloFirst), db); using (DtRicalcoloParametri dtrp = new DtRicalcoloParametri()) { dtrp.AssociaFigli_IPS(ibNew1.IDINDPRIMOSEGR, 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); 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 aliquotaLast = Convert.ToDecimal(lista[3]); ibNew1 = new INDENNITAPRIMOSEGRETARIO() { DATAINIZIOVALIDITA = dataInizioLast, DATAFINEVALIDITA = dataFineLast.AddDays(-1), //COEFFICIENTEKM = aliquotaLast, INDENNITA = aliquotaLast, }; ibNew2 = new INDENNITAPRIMOSEGRETARIO() { DATAINIZIOVALIDITA = ibm.dataInizioValidita, DATAFINEVALIDITA = ibm.dataInizioValidita,//è uguale alla data Inizio //COEFFICIENTEKM = ibm.coefficienteKm, INDENNITA = ibm.indennita, DATAAGGIORNAMENTO = DateTime.Now }; if (aggiornaTutto) { ibNew2 = new INDENNITAPRIMOSEGRETARIO() { DATAINIZIOVALIDITA = ibm.dataInizioValidita, DATAFINEVALIDITA = Utility.DataFineStop(), // COEFFICIENTEKM = ibm.coefficienteKm, INDENNITA = ibm.indennita, DATAAGGIORNAMENTO = DateTime.Now }; libNew = db.INDENNITAPRIMOSEGRETARIO.Where(a => a.ANNULLATO == false).ToList().Where(a => a.DATAINIZIOVALIDITA > ibm.dataInizioValidita).ToList(); foreach (var elem in libNew) { RendiAnnullatoUnRecord(Convert.ToDecimal(elem.IDINDPRIMOSEGR), db); } } libNew.Add(ibNew1); libNew.Add(ibNew2); libNew = libNew.OrderBy(a => a.DATAINIZIOVALIDITA).ToList(); db.Database.BeginTransaction(); db.INDENNITAPRIMOSEGRETARIO.AddRange(libNew); db.SaveChanges(); //annullare l'intervallo trovato RendiAnnullatoUnRecord(Convert.ToDecimal(idIntervalloLast), db); using (DtRicalcoloParametri dtrp = new DtRicalcoloParametri()) { foreach (var ips in libNew) { dtrp.AssociaFigli_IPS(ips.IDINDPRIMOSEGR, 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); 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 aliquota = Convert.ToDecimal(lista[3]); decimal indennita = Convert.ToDecimal(lista[3]); // decimal COEFFICIENTEINDBASE = Convert.ToDecimal(lista[4]); DateTime NewdataFine1 = ibm.dataInizioValidita.AddDays(-1); ibNew1 = new INDENNITAPRIMOSEGRETARIO() { DATAINIZIOVALIDITA = dataInizio, DATAFINEVALIDITA = NewdataFine1, // COEFFICIENTEKM = aliquota, INDENNITA = indennita, DATAAGGIORNAMENTO = DateTime.Now, }; ibNew2 = new INDENNITAPRIMOSEGRETARIO() { DATAINIZIOVALIDITA = ibm.dataInizioValidita, DATAFINEVALIDITA = dataFine, //COEFFICIENTEKM = ibm.coefficienteKm, INDENNITA = ibm.indennita, // COEFFICIENTEINDBASE = ibm.coefficienteIndBase, DATAAGGIORNAMENTO = DateTime.Now }; if (aggiornaTutto) { ibNew2 = new INDENNITAPRIMOSEGRETARIO() { DATAINIZIOVALIDITA = ibm.dataInizioValidita, DATAFINEVALIDITA = Utility.DataFineStop(), // COEFFICIENTEKM = ibm.coefficienteKm, INDENNITA = ibm.indennita, // COEFFICIENTEINDBASE = ibm.coefficienteIndBase, DATAAGGIORNAMENTO = DateTime.Now }; libNew = db.INDENNITAPRIMOSEGRETARIO.Where(a => a.ANNULLATO == false).ToList().Where(a => a.DATAINIZIOVALIDITA > ibm.dataInizioValidita).ToList(); foreach (var elem in libNew) { RendiAnnullatoUnRecord(Convert.ToDecimal(elem.IDINDPRIMOSEGR), db); } } libNew.Add(ibNew1); libNew.Add(ibNew2); libNew = libNew.OrderBy(a => a.DATAINIZIOVALIDITA).ToList(); db.Database.BeginTransaction(); db.INDENNITAPRIMOSEGRETARIO.AddRange(libNew); db.SaveChanges(); //annullare l'intervallo trovato RendiAnnullatoUnRecord(Convert.ToDecimal(idIntervallo), db); using (DtRicalcoloParametri dtrp = new DtRicalcoloParametri()) { foreach (var ips in libNew) { dtrp.AssociaFigli_IPS(ips.IDINDPRIMOSEGR, 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(); if (lista.Count == 0) { ibNew1 = new INDENNITAPRIMOSEGRETARIO() { DATAINIZIOVALIDITA = ibm.dataInizioValidita, DATAFINEVALIDITA = Convert.ToDateTime(Utility.DataFineStop()), INDENNITA = ibm.indennita, DATAAGGIORNAMENTO = DateTime.Now, }; libNew.Add(ibNew1); db.Database.BeginTransaction(); db.INDENNITAPRIMOSEGRETARIO.Add(ibNew1); db.SaveChanges(); using (DtRicalcoloParametri dtrp = new DtRicalcoloParametri()) { dtrp.AssociaFigli_IPS(ibNew1.IDINDPRIMOSEGR, 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 aliquotaUltimo = Convert.ToDecimal(lista[3]); decimal INDENNITA_Ultimo = Convert.ToDecimal(lista[3]); // decimal COEFFICIENTEINDBASE_Ultimo = Convert.ToDecimal(lista[4]); if (dataInizioUltimo == ibm.dataInizioValidita) { ibNew1 = new INDENNITAPRIMOSEGRETARIO() { DATAINIZIOVALIDITA = dataInizioUltimo, DATAFINEVALIDITA = dataFineUltimo, // COEFFICIENTEKM = ibm.coefficienteKm,//nuova aliquota rispetto alla vecchia registrata INDENNITA = ibm.indennita, // COEFFICIENTEINDBASE = ibm.coefficienteIndBase, DATAAGGIORNAMENTO = DateTime.Now }; libNew.Add(ibNew1); db.Database.BeginTransaction(); db.INDENNITAPRIMOSEGRETARIO.Add(ibNew1); db.SaveChanges(); RendiAnnullatoUnRecord(Convert.ToDecimal(idIntervalloUltimo), db); using (DtRicalcoloParametri dtrp = new DtRicalcoloParametri()) { dtrp.AssociaFigli_IPS(ibNew1.IDINDPRIMOSEGR, 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 INDENNITAPRIMOSEGRETARIO() { DATAINIZIOVALIDITA = dataInizioUltimo, DATAFINEVALIDITA = ibm.dataInizioValidita.AddDays(-1), // COEFFICIENTEKM = aliquotaUltimo, INDENNITA = INDENNITA_Ultimo, // COEFFICIENTEINDBASE = COEFFICIENTEINDBASE_Ultimo, DATAAGGIORNAMENTO = DateTime.Now }; ibNew2 = new INDENNITAPRIMOSEGRETARIO() { DATAINIZIOVALIDITA = ibm.dataInizioValidita, DATAFINEVALIDITA = Utility.DataFineStop(), // COEFFICIENTEKM = ibm.coefficienteKm,//nuova aliquota rispetto alla vecchia registrata INDENNITA = ibm.indennita, // COEFFICIENTEINDBASE = ibm.coefficienteIndBase, DATAAGGIORNAMENTO = DateTime.Now }; libNew.Add(ibNew1); libNew.Add(ibNew2); libNew = libNew.OrderBy(a => a.DATAINIZIOVALIDITA).ToList(); db.Database.BeginTransaction(); db.INDENNITAPRIMOSEGRETARIO.AddRange(libNew); db.SaveChanges(); RendiAnnullatoUnRecord(Convert.ToDecimal(idIntervalloUltimo), db); using (DtRicalcoloParametri dtrp = new DtRicalcoloParametri()) { foreach (var ips in libNew) { dtrp.AssociaFigli_IPS(ips.IDINDPRIMOSEGR, db, ibm.dataInizioValidita); } } db.Database.CurrentTransaction.Commit(); } } } //INSERIMENTO DATI NELLA TABELLA CIR_R PER LE RELAZIONI MOLTI A MOLTI //decimal idIndPrimoSegr = ibNew1.IDINDPRIMOSEGR; // decimal idRiduzione1 = dataInizioValiditaAccettataPerRiduzione(ibNew1.DATAINIZIOVALIDITA).First().idRiduzioni; // this.Associa_Riduzione_CoeffIndRichiamo(idRiduzione1, idCoeffIndRichiamo1, db); //if (ibNew2.IDCOEFINDRICHIAMO != 0) //{ // decimal idCoeffIndRichiamo2 = ibNew2.IDCOEFINDRICHIAMO; // decimal idRiduzione2 = dataInizioValiditaAccettataPerRiduzione(ibNew2.DATAINIZIOVALIDITA).First().idRiduzioni; // this.Associa_Riduzione_CoeffIndRichiamo(idRiduzione2, idCoeffIndRichiamo2, db); //} } } catch (Exception ex) { db.Database.CurrentTransaction.Rollback(); throw ex; } } }
public void DelMaggiorazioneAnnuale(decimal idMagAnnuali) { MAGGIORAZIONIANNUALI precedenteIB = new MAGGIORAZIONIANNUALI(); MAGGIORAZIONIANNUALI delIB = new MAGGIORAZIONIANNUALI(); using (ModelDBISE db = new ModelDBISE()) { try { db.Database.BeginTransaction(); var lib = db.MAGGIORAZIONIANNUALI.Where(a => a.IDMAGANNUALI == idMagAnnuali); if (lib.Count() > 0) { delIB = lib.First(); delIB.ANNULLATO = true; var lprecIB = db.MAGGIORAZIONIANNUALI.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 MAGGIORAZIONIANNUALI() { IDUFFICIO = precedenteIB.IDUFFICIO, DATAINIZIOVALIDITA = precedenteIB.DATAINIZIOVALIDITA, DATAFINEVALIDITA = delIB.DATAFINEVALIDITA, ANNUALITA = precedenteIB.ANNUALITA, DATAAGGIORNAMENTO = precedenteIB.DATAAGGIORNAMENTO, ANNULLATO = false }; db.MAGGIORAZIONIANNUALI.Add(ibOld1); db.SaveChanges(); using (DtRicalcoloParametri dtrp = new DtRicalcoloParametri()) { dtrp.AssociaMaggiorazioniAbitazione_MA(ibOld1.IDMAGANNUALI, db, delIB.DATAINIZIOVALIDITA); } } using (objLogAttivita log = new objLogAttivita()) { log.Log(enumAttivita.Eliminazione, "Eliminazione parametro maggiorazioni annuali.", "MAGGIORAZIONIANNUALI", idMagAnnuali); } db.Database.CurrentTransaction.Commit(); } } catch (Exception ex) { db.Database.CurrentTransaction.Rollback(); throw ex; } } }
/// <summary> /// /// </summary> /// <param name="ibm"></param> public void SetMaggiorazioneAnnuale(MaggiorazioniAnnualiModel ibm, bool aggiornaTutto) { List<MAGGIORAZIONIANNUALI> libNew = new List<MAGGIORAZIONIANNUALI>(); //MAGGIORAZIONIANNUALI ibPrecedente = new MAGGIORAZIONIANNUALI(); MAGGIORAZIONIANNUALI ibNew1 = new MAGGIORAZIONIANNUALI(); MAGGIORAZIONIANNUALI ibNew2 = new MAGGIORAZIONIANNUALI(); //List<MAGGIORAZIONIANNUALI> lArchivioIB = new List<MAGGIORAZIONIANNUALI>(); List<string> lista = new List<string>(); using (ModelDBISE db = new ModelDBISE()) { bool giafatta = false; try { using (dtParMaggAnnuali dtal = new dtParMaggAnnuali()) { //Se la data variazione coincide con una data inizio esistente lista = dtal.DataVariazioneCoincideConDataInizio(ibm.dataInizioValidita, ibm.idUfficio); 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 aliquotaFirst = Convert.ToDecimal(lista[3]); ibNew1 = new MAGGIORAZIONIANNUALI() { IDUFFICIO = ibm.idUfficio, DATAINIZIOVALIDITA = dataInizioFirst, DATAFINEVALIDITA = dataFineFirst, ANNUALITA = ibm.annualita, DATAAGGIORNAMENTO = DateTime.Now, }; if (aggiornaTutto) { ibNew1 = new MAGGIORAZIONIANNUALI() { IDUFFICIO = ibm.idUfficio, DATAINIZIOVALIDITA = dataInizioFirst, DATAFINEVALIDITA = Utility.DataFineStop(), ANNUALITA = ibm.annualita, DATAAGGIORNAMENTO = DateTime.Now, }; //qui annullo tutti i record rimanenti dalla data inizio inserita libNew = db.MAGGIORAZIONIANNUALI.Where(a => a.IDUFFICIO == ibm.idUfficio && a.ANNULLATO == false).ToList().Where(a => a.DATAINIZIOVALIDITA > dataInizioFirst).ToList(); foreach (var elem in libNew) { RendiAnnullatoUnRecord(Convert.ToDecimal(elem.IDMAGANNUALI), db); } } db.Database.BeginTransaction(); db.MAGGIORAZIONIANNUALI.Add(ibNew1); db.SaveChanges(); RendiAnnullatoUnRecord(Convert.ToDecimal(idIntervalloFirst), db); using (DtRicalcoloParametri dtrp = new DtRicalcoloParametri()) { dtrp.AssociaMaggiorazioniAbitazione_MA(ibNew1.IDMAGANNUALI, 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, ibm.idUfficio); 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 COEFFICIENTELast = Convert.ToDecimal(lista[3]); ibNew1 = new MAGGIORAZIONIANNUALI() { IDUFFICIO = ibm.idUfficio, DATAINIZIOVALIDITA = dataInizioLast, DATAFINEVALIDITA = dataFineLast.AddDays(-1), ANNUALITA = ibm.annualita, DATAAGGIORNAMENTO = DateTime.Now, }; ibNew2 = new MAGGIORAZIONIANNUALI() { IDUFFICIO = ibm.idUfficio, DATAINIZIOVALIDITA = ibm.dataInizioValidita, DATAFINEVALIDITA = ibm.dataInizioValidita,//è uguale alla data Inizio ANNUALITA = ibm.annualita, DATAAGGIORNAMENTO = DateTime.Now }; if (aggiornaTutto) { ibNew2 = new MAGGIORAZIONIANNUALI() { IDUFFICIO = ibm.idUfficio, DATAINIZIOVALIDITA = ibm.dataInizioValidita, DATAFINEVALIDITA = Utility.DataFineStop(), ANNUALITA = ibm.annualita, DATAAGGIORNAMENTO = DateTime.Now }; libNew = db.MAGGIORAZIONIANNUALI.Where(a => a.IDUFFICIO == ibm.idUfficio && a.ANNULLATO == false).ToList().Where(a => a.DATAINIZIOVALIDITA > ibm.dataInizioValidita).ToList(); foreach (var elem in libNew) { RendiAnnullatoUnRecord(Convert.ToDecimal(elem.IDMAGANNUALI), db); } } libNew.Add(ibNew1); libNew.Add(ibNew2); libNew = libNew.OrderBy(a => a.DATAINIZIOVALIDITA).ToList(); db.Database.BeginTransaction(); db.MAGGIORAZIONIANNUALI.AddRange(libNew); db.SaveChanges(); //annullare l'intervallo trovato RendiAnnullatoUnRecord(Convert.ToDecimal(idIntervalloLast), db); using (DtRicalcoloParametri dtrp = new DtRicalcoloParametri()) { foreach (var ma in libNew) { dtrp.AssociaMaggiorazioniAbitazione_MA(ma.IDMAGANNUALI, 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, ibm.idUfficio); if (lista.Count != 0) { giafatta = true; decimal idIntervallo = Convert.ToDecimal(lista[0]); DateTime dataInizio = Convert.ToDateTime(lista[1]); DateTime dataFine = Convert.ToDateTime(lista[2]); //bool Annualita = Convert.ToBoolean(Convert.ToDecimal(lista[3])); DateTime NewdataFine1 = ibm.dataInizioValidita.AddDays(-1); ibNew1 = new MAGGIORAZIONIANNUALI() { IDUFFICIO = ibm.idUfficio, DATAINIZIOVALIDITA = dataInizio, DATAFINEVALIDITA = NewdataFine1, ANNUALITA = ibm.annualita, DATAAGGIORNAMENTO = DateTime.Now, }; ibNew2 = new MAGGIORAZIONIANNUALI() { IDUFFICIO = ibm.idUfficio, DATAINIZIOVALIDITA = ibm.dataInizioValidita, DATAFINEVALIDITA = dataFine, ANNUALITA = ibm.annualita, DATAAGGIORNAMENTO = DateTime.Now }; if (aggiornaTutto) { ibNew2 = new MAGGIORAZIONIANNUALI() { IDUFFICIO = ibm.idUfficio, DATAINIZIOVALIDITA = ibm.dataInizioValidita, DATAFINEVALIDITA = Utility.DataFineStop(), ANNUALITA = ibm.annualita, DATAAGGIORNAMENTO = DateTime.Now }; libNew = db.MAGGIORAZIONIANNUALI.Where(a => a.IDUFFICIO == ibm.idUfficio && a.ANNULLATO == false).ToList().Where(a => a.DATAINIZIOVALIDITA > ibm.dataInizioValidita).ToList(); foreach (var elem in libNew) { RendiAnnullatoUnRecord(Convert.ToDecimal(elem.IDMAGANNUALI), db); } } libNew.Add(ibNew1); libNew.Add(ibNew2); libNew = libNew.OrderBy(a => a.DATAINIZIOVALIDITA).ToList(); db.Database.BeginTransaction(); db.MAGGIORAZIONIANNUALI.AddRange(libNew); db.SaveChanges(); //annullare l'intervallo trovato RendiAnnullatoUnRecord(Convert.ToDecimal(idIntervallo), db); using (DtRicalcoloParametri dtrp = new DtRicalcoloParametri()) { foreach (var ma in libNew) { dtrp.AssociaMaggiorazioniAbitazione_MA(ma.IDMAGANNUALI, 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(ibm.idUfficio); if (lista.Count == 0) { ibNew1 = new MAGGIORAZIONIANNUALI() { DATAINIZIOVALIDITA = ibm.dataInizioValidita, DATAFINEVALIDITA = Convert.ToDateTime(Utility.DataFineStop()), ANNUALITA = ibm.annualita, DATAAGGIORNAMENTO = DateTime.Now, IDUFFICIO = ibm.idUfficio, }; libNew.Add(ibNew1); db.Database.BeginTransaction(); db.MAGGIORAZIONIANNUALI.Add(ibNew1); db.SaveChanges(); using (DtRicalcoloParametri dtrp = new DtRicalcoloParametri()) { dtrp.AssociaMaggiorazioniAbitazione_MA(ibNew1.IDMAGANNUALI, 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]); bool AnnualitaUltimo = Convert.ToBoolean(Convert.ToDecimal(lista[3])); if (dataInizioUltimo == ibm.dataInizioValidita) { ibNew1 = new MAGGIORAZIONIANNUALI() { IDUFFICIO = ibm.idUfficio, DATAINIZIOVALIDITA = dataInizioUltimo, DATAFINEVALIDITA = dataFineUltimo, ANNUALITA = ibm.annualita, DATAAGGIORNAMENTO = DateTime.Now }; libNew.Add(ibNew1); db.Database.BeginTransaction(); db.MAGGIORAZIONIANNUALI.Add(ibNew1); db.SaveChanges(); RendiAnnullatoUnRecord(Convert.ToDecimal(idIntervalloUltimo), db); using (DtRicalcoloParametri dtrp = new DtRicalcoloParametri()) { dtrp.AssociaMaggiorazioniAbitazione_MA(ibNew1.IDMAGANNUALI, 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 MAGGIORAZIONIANNUALI() { IDUFFICIO = ibm.idUfficio, DATAINIZIOVALIDITA = dataInizioUltimo, DATAFINEVALIDITA = ibm.dataInizioValidita.AddDays(-1), ANNUALITA = AnnualitaUltimo, DATAAGGIORNAMENTO = DateTime.Now }; ibNew2 = new MAGGIORAZIONIANNUALI() { IDUFFICIO = ibm.idUfficio, DATAINIZIOVALIDITA = ibm.dataInizioValidita, DATAFINEVALIDITA = Utility.DataFineStop(), ANNUALITA = ibm.annualita, DATAAGGIORNAMENTO = DateTime.Now }; libNew.Add(ibNew1); libNew.Add(ibNew2); libNew = libNew.OrderBy(a => a.DATAINIZIOVALIDITA).ToList(); db.Database.BeginTransaction(); db.MAGGIORAZIONIANNUALI.AddRange(libNew); db.SaveChanges(); RendiAnnullatoUnRecord(Convert.ToDecimal(idIntervalloUltimo), db); using (DtRicalcoloParametri dtrp = new DtRicalcoloParametri()) { foreach (var ma in libNew) { dtrp.AssociaMaggiorazioniAbitazione_MA(ma.IDMAGANNUALI, db, ibm.dataInizioValidita); } } db.Database.CurrentTransaction.Commit(); } } } // db.Database.CurrentTransaction.Commit(); } } catch (Exception ex) { db.Database.CurrentTransaction.Rollback(); throw ex; } } }
public void DelIndennitaSistemazione(decimal idIndSist) { INDENNITASISTEMAZIONE precedenteIB = new INDENNITASISTEMAZIONE(); INDENNITASISTEMAZIONE delIB = new INDENNITASISTEMAZIONE(); using (ModelDBISE db = new ModelDBISE()) { try { db.Database.BeginTransaction(); var lib = db.INDENNITASISTEMAZIONE.Where(a => a.IDINDSIST == idIndSist); if (lib.Count() > 0) { delIB = lib.First(); delIB.ANNULLATO = true; var lprecIB = db.INDENNITASISTEMAZIONE.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 INDENNITASISTEMAZIONE() { IDTIPOTRASFERIMENTO = precedenteIB.IDTIPOTRASFERIMENTO, DATAINIZIOVALIDITA = precedenteIB.DATAINIZIOVALIDITA, DATAFINEVALIDITA = delIB.DATAFINEVALIDITA, COEFFICIENTE = precedenteIB.COEFFICIENTE, DATAAGGIORNAMENTO = precedenteIB.DATAAGGIORNAMENTO, ANNULLATO = false }; db.INDENNITASISTEMAZIONE.Add(ibOld1); db.SaveChanges(); using (DtRicalcoloParametri dtrp = new DtRicalcoloParametri()) { dtrp.AssociaPrimaSistemazione_IS(ibOld1.IDINDSIST, db, delIB.DATAINIZIOVALIDITA); dtrp.AssociaRiduzioni_IS(ibOld1.IDINDSIST, db, delIB.DATAINIZIOVALIDITA); } } using (objLogAttivita log = new objLogAttivita()) { log.Log(enumAttivita.Eliminazione, "Eliminazione parametro di indennità di sistemazione.", "INDENNITASISTEMAZIONE", idIndSist); } db.Database.CurrentTransaction.Commit(); } } catch (Exception ex) { db.Database.CurrentTransaction.Rollback(); throw ex; } } }