Beispiel #1
0
        public override IUpdatableBusinessEntity Copy()
        {
            var condominio = new SuperCondominio(Descrizione, GiornoChiusuraEsercizioOrdinario, MeseChiusuraEsercizioOrdinario, AnnoInizio, Azienda)
                {
                    Indirizzo = (Address) Indirizzo.Clone(),
                    Descrizione = Descrizione,
                    Responsabile = Responsabile,
                    NumeroUnitaImmobiliari = NumeroUnitaImmobiliari
                };

            return condominio;
        }
Beispiel #2
0
        private bool insert(CondominioDTO dto, out Condominio item)
        {
            var daoFactory = _windsorRepository.GetDaoFactory(_info.Azienda);
            bool result;
            try
            {
                try
                {
                    if (!dto.IsSupercondominio)
                    {
                        var azienda = daoFactory.GetAziendaDao().GetById(dto.AziendaID, false);
                        item = new Condominio(dto.Descrizione, dto.GiornoChiusuraEsercizioOrdinario, dto.MeseChiusuraEsercizioOrdinario, dto.AnnoInizio, azienda);
                        daoFactory.GetCondominioDao().SaveOrUpdate(item);

                        item.TipoVersamentoDopoChiusura = dto.TipoVersamentoDopoChiusura;
                        item.TipoVersamentoPrimaApertura = dto.TipoVersamentoPrimaApertura;

                        // Piano Conti di default
                        var conti = daoFactory.GetPianoContiDao().GetByAzienda(dto.AziendaID);
                        foreach (var pianoConto in conti)
                            pianoConto.ConvertToConto(item);

                        // Esercizio di default
                        var annoGestionale = new AnnoGestionale(item, item.AnnoInizio, item.AnnoInizio);
                        daoFactory.GetAnnoGestionaleDao().SaveOrUpdate(annoGestionale);

                        // Data chiusura esercizio
                        if (item.AnnoInizio > 0 && item.MeseChiusuraEsercizioOrdinario > 0 && item.GiornoChiusuraEsercizioOrdinario > 0)
                        {
                            try
                            {
                                var dataChiusuraEsercizio = new DateTime(item.AnnoInizio, item.MeseChiusuraEsercizioOrdinario, item.GiornoChiusuraEsercizioOrdinario);
                                var dataAperturaEsercizio = dataChiusuraEsercizio.AddDays(1).AddYears(-1);
                                var esercizio = new Esercizio(item, dataAperturaEsercizio, dataChiusuraEsercizio, annoGestionale, GestioneEsercizioEnum.Ordinario);
                                annoGestionale.AnnoFinale = esercizio.DataChiusura.GetValueOrDefault().Year;
                                daoFactory.GetEsercizioDao().SaveOrUpdate(esercizio);
                                item.Esercizi.Add(esercizio);
                            }
                            catch (Exception ex)
                            {
                                _log.ErrorFormat("Errore nell'inserimento del condominio - La data di chiusura NON è valida - DATA CHIUSURA - {0} - anno:{1} - mese:{2} - giorno:{3} - id:{4} - azienda:{5}", ex, Utility.GetMethodDescription(), item.AnnoInizio, item.MeseChiusuraEsercizioOrdinario, item.GiornoChiusuraEsercizioOrdinario, dto.ID, dto.AziendaID);
                                throw;
                            }
                        }
                        else
                        {
                            _log.WarnFormat("Errore nell'inserimento del condominio - La data di chiusura NON è valida - DATA CHIUSURA - {0} - anno:{1} - mese:{2} - giorno:{3} - id:{4} - azienda:{5}", Utility.GetMethodDescription(), item.AnnoInizio, item.MeseChiusuraEsercizioOrdinario, item.GiornoChiusuraEsercizioOrdinario, dto.ID, dto.AziendaID);
                        }

                        // Descrizione Automatica Spesa
                        var impostazioniAzienda = daoFactory.GetImpostazioniAziendaDao().GetByAzienda(azienda.ID);
                        if (impostazioniAzienda != null)
                            item.DescrizioneSpeseAutomatica = impostazioniAzienda.DescrizioneSpeseAutomatica;
                    }
                    else
                    {
                        item = new SuperCondominio(dto.Descrizione, dto.GiornoChiusuraEsercizioOrdinario, dto.MeseChiusuraEsercizioOrdinario, dto.AnnoInizio, daoFactory.GetAziendaDao().GetById(dto.AziendaID, false));
                        daoFactory.GetSuperCondominioDao().SaveOrUpdate((SuperCondominio)item);
                    }
                }
                catch (Exception ex)
                {
                    _log.ErrorFormat("Errore nell'inserimento del condominio - {0} - id:{1} - azienda:{2}", ex, Utility.GetMethodDescription(), dto.ID, dto.AziendaID);
                    throw;
                }

                // ------------------------------------------------------
                // Soggetto che presenta la parte della dichiarazione relativa ai contributi del dipendente
                // ------------------------------------------------------
                if (dto.IdFornitoreDichiarazione770 > 0)
                    item.FornitoreDichiarazione770 = daoFactory.GetFornitoreDao().GetById(dto.IdFornitoreDichiarazione770.GetValueOrDefault(), false);

                item.Codice = dto.Codice;
                item.CodiceFiscale = dto.CodiceFiscale;
                item.FormatoDescrizioneSpesa = dto.FormatoDescrizioneSpesa;
                item.FormatoDescrizioneMovimento = dto.FormatoDescrizioneMovimento;
                item.DescrizioneSpeseAutomatica = dto.DescrizioneSpeseAutomatica;
                item.IsAbilitataArchiviazioneOtticaPassivi = dto.IsAbilitataArchiviazioneOtticaPassivi;
                item.IsAbilitataArchiviazioneOtticaContratti = dto.IsAbilitataArchiviazioneOtticaContratti;
                item.IsSupercondominio = dto.IsSupercondominio;
                item.CodiceImportazione = dto.CodiceImportazione;
                item.CodiceCalcoloTariffaAcqua = dto.CodiceCalcoloTariffaAcqua;
                item.TemplateDescrizioneUnitaImmobiliare = dto.TemplateDescrizioneUnitaImmobiliare;

                if (string.IsNullOrEmpty(item.TemplateDescrizioneUnitaImmobiliare))
                {
                    var impostazioni = item.Azienda.Impostazioni.FirstOrDefault();
                    if (impostazioni != null)
                        item.TemplateDescrizioneUnitaImmobiliare = impostazioni.TemplateDescrizioneUnitaImmobiliare;
                }

                item.Note = dto.Note ?? string.Empty;

                #region Indirizzo

                try
                {
                    var civico = dto.Indirizzo.Civico;
                    if (!string.IsNullOrEmpty(civico) && civico.Length > 200)
                        civico = civico.Substring(0, 200);

                    item.Indirizzo = new Address
                                         {
                                             Indirizzo = dto.Indirizzo.Indirizzo,
                                             Civico = civico,
                                             Cap = dto.Indirizzo.Cap,
                                             Localita = dto.Indirizzo.Localita
                                         };

                    if (dto.Indirizzo.CodiceComune != null)
                        item.Indirizzo.Comune = daoFactory.GetComuneDao().GetById(dto.Indirizzo.CodiceComune, false);

                    // Georeferenziazione - Solo se è cambiato l'indirizzo per la georeferenziazione
                    string geoAddress = item.Indirizzo.GetGeoLocationAddress();
                    if (!string.IsNullOrEmpty(geoAddress))
                    {
                        var geoLocationService = _windsorRepository.GetContainer(_info.Azienda).Resolve<IGeoLocationService>();
                        GeoCoordinate? latLong = geoLocationService.GetLatLong(geoAddress);
                        if (latLong != null)
                        {
                            if (item.GeoReferenziazione == null)
                                item.GeoReferenziazione = new GeoReference();
                            item.GeoReferenziazione.AddedDate = DateTime.Now;
                            item.GeoReferenziazione.AddressUsed = geoAddress;
                            item.GeoReferenziazione.Latitude = latLong.Value.Latitude;
                            item.GeoReferenziazione.Longitude = latLong.Value.Longitude;
                        }
                    }
                }
                catch (Exception ex)
                {
                    _log.ErrorFormat("Errore nell'inserimento del condominio - INDIRIZZO - {0} - id:{1} - azienda:{2}", ex, Utility.GetMethodDescription(), dto.ID, dto.AziendaID);
                    throw;
                }

                #endregion Indirizzo

                #region Dati Catastali

                try
                {
                    item.MappaleCatastale = dto.MappaleCatastale;

                    if (dto.FoglioCatastale != null)
                        item.FoglioCatastale = dto.FoglioCatastale;
                    if (dto.GiornoAssemblea != null)
                        item.GiornoAssemblea = dto.GiornoAssemblea;
                    if (dto.MeseAssemblea != null)
                        item.MeseAssemblea = dto.MeseAssemblea;
                    item.LuogoAssemblea = dto.LuogoAssemblea;
                    item.NumeroUnitaImmobiliari = dto.UnitaImmobiliari;
                }
                catch (Exception ex)
                {
                    
                    _log.Error("Errore nell'inserimento del condominio - " + Utility.GetMethodDescription() + " - Dati Catastali - id:" + dto.ID.ToString() + " - Azienda: " + dto.AziendaID.ToString(), ex);
                    throw;
                }

                #endregion Dati Catastali

                #region Dati Esercizio

                item.GiornoChiusuraEsercizioOrdinario = dto.GiornoChiusuraEsercizioOrdinario;
                item.MeseChiusuraEsercizioOrdinario = dto.MeseChiusuraEsercizioOrdinario;
                item.AnnoInizio = dto.AnnoInizio;

                #endregion Dati Esercizio

                #region CBI

                item.CodiceSIA = dto.CodiceSIA;
                item.CodiceCUC = dto.CodiceCUC;

                #endregion CBI

                // ------------------------------------------------------
                // Responsabile
                // ------------------------------------------------------
                try
                {
                    if (dto.IdResponsabile > 0)
                        item.Responsabile = daoFactory.GetReferenteDao().GetById(dto.IdResponsabile.GetValueOrDefault(), false);
                }
                catch (Exception ex)
                {
                    _log.ErrorFormat("Errore nell'inserimento del condominio - {0} - Responsabile - id:{1} - azienda:{2}", ex, Utility.GetMethodDescription(), dto.ID, dto.AziendaID);
                    throw;
                }

                // ------------------------------------------------------
                // Responsabile Contabilita
                // ------------------------------------------------------
                try
                {
                    if (dto.IdResponsabileContabilita > 0)
                        item.ResponsabileContabilita = daoFactory.GetReferenteDao().GetById(dto.IdResponsabileContabilita.GetValueOrDefault(), false);
                }
                catch (Exception ex)
                {
                    _log.ErrorFormat("Errore nell'inserimento del condominio - {0} - Responsabili Contabilità - id:{1} - azienda:{2}", ex, Utility.GetMethodDescription(), dto.ID, dto.AziendaID);
                    throw;
                }

                // ------------------------------------------------------
                // Responsabili Assemblea
                // ------------------------------------------------------
                try
                {
                    foreach (var t in dto.IdResponsabiliAssemblea)
                    {
                        try
                        {
                            var respCondominio = daoFactory.GetReferenteDao().Find(t, false);
                            if (respCondominio != null)
                                item.ResponsabiliAssemblea.Add(respCondominio);
                        }
                        catch (Exception ex)
                        {
                            _log.ErrorFormat("Errore nell'inserimento del condominio - {0} - SINGOLO RESPONSABILE ASSEMBLEA - idResponsabile:{1} - id:{2} - azienda:{3}", ex, Utility.GetMethodDescription(), t, dto.ID, dto.AziendaID);
                            throw;
                        }
                    }
                }
                catch (Exception ex)
                {
                    _log.ErrorFormat("Errore nell'inserimento del condominio - {0} - Responsabili Assemblea - id:{1} - azienda:{2}", ex, Utility.GetMethodDescription(), dto.ID, dto.AziendaID);
                    throw;
                }

                // ------------------------------------------------------
                // Dati Bancari
                // ------------------------------------------------------
                try
                {
                    foreach (var t in dto.DatiBancari)
                    {
                        t.IdCondominio = item.ID;
                        DatiBancariCondomini dbc = null;
                        if ((t.Stato == "U") || (t.Stato == "I"))
                            dbc = getDatiBancariRepository().ManageDomainEntity(t);

                        if (dbc != null)
                        {
                            item.DatiBancari.Add(dbc);
                            dbc.CondominioRiferimento = item;
                        }
                    }
                }
                catch (Exception ex)
                {
                    
                    _log.Error("Errore nell'inserimento del condominio - " + Utility.GetMethodDescription() + " - Dati Bancari - id:" + dto.ID + " - Azienda: " + dto.AziendaID, ex);
                    throw;
                }

                result = true;
            }
            catch (Exception ex)
            {
                _log.ErrorFormat("Errore nell'inserimento del condominio - {0} - id:{1} - azienda:{2}", ex, Utility.GetMethodDescription(), dto.ID, dto.AziendaID);
                throw;
            }
            return result;
        }