示例#1
0
        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);
        }
示例#2
0
        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;
                }
            }
        }
示例#3
0
        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;
            }
        }