public ANTICIPI CreaAnticipi(decimal idAttivitaAnticipi, ModelDBISE db) { ANTICIPI new_a = new ANTICIPI() { IDATTIVITAANTICIPI = idAttivitaAnticipi, IDTIPOLOGIAANTICIPI = (decimal)EnumTipologiaAnticipi.Prima_Sistemazione, PERCENTUALEANTICIPO = 0, ANNULLATO = false, DATAAGGIORNAMENTO = DateTime.Now, }; db.ANTICIPI.Add(new_a); if (db.SaveChanges() <= 0) { throw new Exception(string.Format("Non è stato possibile creare un nuovo anticipo.")); } else { Utility.SetLogAttivita(EnumAttivitaCrud.Inserimento, "Inserimento di una nuovo anticipo.", "ANTICIPI", db, new_a.ATTIVITAANTICIPI.PRIMASITEMAZIONE.TRASFERIMENTO.IDTRASFERIMENTO, new_a.IDATTIVITAANTICIPI); } return(new_a); }
public void AnnullaRichiestaAnticipi(decimal idAttivitaAnticipi, string testoAnnulla) { using (ModelDBISE db = new ModelDBISE()) { db.Database.BeginTransaction(); try { var aa_Old = db.ATTIVITAANTICIPI.Find(idAttivitaAnticipi); if (aa_Old?.IDATTIVITAANTICIPI > 0) { if (aa_Old.NOTIFICARICHIESTA == true && aa_Old.ATTIVARICHIESTA == false && aa_Old.ANNULLATO == false) { aa_Old.ANNULLATO = true; aa_Old.DATAAGGIORNAMENTO = DateTime.Now; int i = db.SaveChanges(); if (i <= 0) { throw new Exception("Errore - Impossibile annullare la notifica della richiesta anticipo."); } else { Utility.SetLogAttivita(EnumAttivitaCrud.Modifica, "Annullamento della riga per il ciclo di attivazione della richiesta anticipo", "ATTIVITAANTICIPI", db, aa_Old.PRIMASITEMAZIONE.TRASFERIMENTO.IDTRASFERIMENTO, aa_Old.IDATTIVITAANTICIPI); ATTIVITAANTICIPI aa_New = new ATTIVITAANTICIPI() { IDPRIMASISTEMAZIONE = aa_Old.IDPRIMASISTEMAZIONE, NOTIFICARICHIESTA = false, ATTIVARICHIESTA = false, DATAAGGIORNAMENTO = DateTime.Now, ANNULLATO = false }; db.ATTIVITAANTICIPI.Add(aa_New); int j = db.SaveChanges(); if (j <= 0) { throw new Exception("Errore - Impossibile creare il nuovo ciclo di attivazione per richiesta anticipi."); } else { Utility.SetLogAttivita(EnumAttivitaCrud.Inserimento, "Inserimento di una nuova riga per il ciclo di attivazione relativo alla richiesta anticipo.", "ATTIVITAANTICIPI", db, aa_New.PRIMASITEMAZIONE.TRASFERIMENTO.IDTRASFERIMENTO, aa_New.IDATTIVITAANTICIPI); #region anticipo var ant_Old = aa_Old.ANTICIPI.Where( a => a.ANNULLATO == false && a.IDTIPOLOGIAANTICIPI == (decimal)EnumTipologiaAnticipi.Prima_Sistemazione).First(); if (ant_Old != null && ant_Old.IDATTIVITAANTICIPI > 0) { ANTICIPI ant_New = new ANTICIPI() { IDATTIVITAANTICIPI = aa_New.IDATTIVITAANTICIPI, IDTIPOLOGIAANTICIPI = ant_Old.IDTIPOLOGIAANTICIPI, PERCENTUALEANTICIPO = ant_Old.PERCENTUALEANTICIPO, DATAAGGIORNAMENTO = ant_Old.DATAAGGIORNAMENTO, ANNULLATO = ant_Old.ANNULLATO }; db.ANTICIPI.Add(ant_New); int y = db.SaveChanges(); if (y <= 0) { throw new Exception("Errore - Impossibile inserire il record relativo a richiesta anticipo."); } else { Utility.SetLogAttivita(EnumAttivitaCrud.Inserimento, "Inserimento di una nuova riga per la richiesta anticipo.", "ANTICIPI", db, aa_New.PRIMASITEMAZIONE.TRASFERIMENTO.IDTRASFERIMENTO, ant_New.IDATTIVITAANTICIPI); } } #endregion #region ricrea rinunciaAnticipi var ra_old = this.GetRinunciaAnticipi(idAttivitaAnticipi, db); RINUNCIAANTICIPI ra_new = new RINUNCIAANTICIPI() { IDATTIVITAANTICIPI = aa_New.IDATTIVITAANTICIPI, RINUNCIAANT = ra_old.rinunciaAnticipi, DATAAGGIORNAMENTO = DateTime.Now, }; db.RINUNCIAANTICIPI.Add(ra_new); if (db.SaveChanges() <= 0) { throw new Exception(string.Format("Non è stato possibile creare una nuova rinuncia anticipi durante il ciclo di annullamento.")); } else { Utility.SetLogAttivita(EnumAttivitaCrud.Inserimento, "Inserimento di una nuova rinuncia anticipi.", "RINUNCIAANTICIPI", db, ra_new.ATTIVITAANTICIPI.PRIMASITEMAZIONE.TRASFERIMENTO.IDTRASFERIMENTO, ra_new.IDATTIVITAANTICIPI); } #endregion } EmailTrasferimento.EmailAnnulla(aa_New.PRIMASITEMAZIONE.TRASFERIMENTO.IDTRASFERIMENTO, Resources.msgEmail.OggettoAnnullaRichiestaAnticipi, testoAnnulla, db); //this.EmailAnnullaRichiestaAnticipi(aa_New.IDATTIVITAANTICIPI, db); using (dtCalendarioEventi dtce = new dtCalendarioEventi()) { dtce.AnnullaMessaggioEvento(aa_New.PRIMASITEMAZIONE.TRASFERIMENTO.IDTRASFERIMENTO, EnumFunzioniEventi.RichiestaAnticipi, db); } } } } db.Database.CurrentTransaction.Commit(); } catch (Exception ex) { db.Database.CurrentTransaction.Rollback(); throw ex; } } }
public AnticipiViewModel GetAnticipi(decimal idAttivitaAnticipi, ModelDBISE db) { try { AnticipiViewModel avm = new AnticipiViewModel(); ANTICIPI a = new ANTICIPI(); var t = db.ATTIVITAANTICIPI.Find(idAttivitaAnticipi).PRIMASITEMAZIONE.TRASFERIMENTO; var idTrasferimento = t.IDTRASFERIMENTO; using (CalcoliIndennita ci = new CalcoliIndennita(idTrasferimento, t.DATAPARTENZA)) { //verifica se è l'importo è stato gia pagato var lteorici = t.TEORICI.Where(x => x.VOCI.IDTIPOLIQUIDAZIONE == (decimal)EnumTipoLiquidazione.Contabilità && //x.ELABORATO && x.DIRETTO && x.IDVOCI == (decimal)EnumVociContabili.Ind_Prima_Sist_IPS && x.INSERIMENTOMANUALE == false && x.ANNULLATO == false && x.ELABINDSISTEMAZIONE.CONGUAGLIO == false && x.ELABINDSISTEMAZIONE.ANTICIPO && x.ANNORIFERIMENTO == t.DATAPARTENZA.Year && x.MESERIFERIMENTO == t.DATAPARTENZA.Month) .ToList(); decimal importoPrevisto = 0; if (lteorici?.Any() ?? false) { var teorici = lteorici.First(); importoPrevisto = teorici.IMPORTOLORDO; } else { importoPrevisto = Math.Round(ci.IndennitaSistemazioneAnticipabileLorda, 2); } var al = db.ANTICIPI.Where(x => x.IDATTIVITAANTICIPI == idAttivitaAnticipi).ToList(); if (al?.Any() ?? false) { a = al.First(); avm = new AnticipiViewModel() { idAttivitaAnticipi = a.IDATTIVITAANTICIPI, idTipologiaAnticipi = a.IDTIPOLOGIAANTICIPI, dataAggiornamento = a.DATAAGGIORNAMENTO, annullato = a.ANNULLATO, ImportoPrevisto = importoPrevisto, PercentualeAnticipoRichiesto = a.PERCENTUALEANTICIPO }; } else { a = this.CreaAnticipi(idAttivitaAnticipi, db); var new_avm = new AnticipiViewModel() { idAttivitaAnticipi = a.IDATTIVITAANTICIPI, idTipologiaAnticipi = a.IDTIPOLOGIAANTICIPI, dataAggiornamento = a.DATAAGGIORNAMENTO, annullato = a.ANNULLATO, ImportoPrevisto = importoPrevisto, PercentualeAnticipoRichiesto = a.PERCENTUALEANTICIPO }; avm = new_avm; } } return(avm); } catch (Exception ex) { throw ex; } }