Ejemplo n.º 1
0
        public static UnitaImmobiliare GetCondominioMonoScalaMonoProprietario()
        {
            var azienda = new Azienda("TEST", "Azienda di Test") { ID = 1 };
            var condominio = new Condominio("Test", 31, 12, 2014, azienda);
            var stabile = new Palazzina(condominio, "Stabile A - TEST");
            var scala = new GruppoStabile(stabile, "Scala A - TEST");
            var tipo = new TipoUnitaImmobiliare("Abitazione");
            var unitaImmobiliare = new UnitaImmobiliare(scala, tipo);

            // Esercizio
            var annoGestionale = new AnnoGestionale(condominio, 2013, 2014);
            var esercizio = new Esercizio(condominio, new DateTime(2014, 1, 1), new DateTime(2014, 12, 31), annoGestionale, GestioneEsercizioEnum.Ordinario);
            condominio.Esercizi.Add(esercizio);

            // Proprietario
            var persona = new Persona(TipoPersonaEnum.Fisica, "Pinco", "Pallo", azienda.ID, true);
            var proprietario = new Proprietario(unitaImmobiliare, persona)
            {
                PercentualeRiferimento = 100,
                Principale = true
            };
            unitaImmobiliare.Soggetti.Add(proprietario);

            return unitaImmobiliare;
        }
Ejemplo n.º 2
0
 public Contatore(TipoContatore tipo, string codice, string descrizione, Condominio condominio)
 {
     Descrizione = descrizione;
     Condominio = condominio;
     Tipo = tipo;
     Codice = codice;
 }
Ejemplo n.º 3
0
 /// <summary>
 /// Crea un Contatto valido
 /// </summary>
 public PersonaDaNonSollecitare(Persona persona, Condominio condominio)
 {
     Condominio = condominio;
     Persona = persona;
     if (Condominio != null)
         Condominio.PersoneDaNonSollecitare.Add(this);
 }
Ejemplo n.º 4
0
        protected void SetUp()
        {
            var mocks = new MockRepository();

            var azienda = new Azienda("PROV", "Azienda di prova");
            var condominio = new Condominio("Condominio di prova", 31, 12, 2012, azienda);

            var stabile = new Palazzina(condominio, "Stabile di prova", false);
            condominio.Palazzine.Add(stabile);

            var scala = new GruppoStabile(stabile, "Scala di prova");
            var tipoUnitaImmobiliare = new TipoUnitaImmobiliare("Abitazione");
            var unitaImmobiliare = new UnitaImmobiliare(scala, tipoUnitaImmobiliare);
            var annoGestionale = new AnnoGestionale(condominio, 2012, 2012);
            _esercizio = new Esercizio(condominio, new DateTime(2012, 1, 1), new DateTime(2012, 12, 31), annoGestionale, GestioneEsercizioEnum.Ordinario);

            _subentroRepository = mocks.Stub<ISubentroUnitaImmobiliareDao>();

            var subentro1 = mocks.Stub<SubentroUnitaImmobiliare>();
            subentro1.SoggettoEntrante = new SoggettoCondominio(unitaImmobiliare, new Persona(TipoPersonaEnum.Fisica, "Giorgio", "Parmeggiani", 1, true));
            subentro1.SoggettoUscente = new SoggettoCondominio(unitaImmobiliare, new Persona(TipoPersonaEnum.Fisica, "Daniele", "Vaccari", 1, true));

            var subentro2 = mocks.Stub<SubentroUnitaImmobiliare>();
            subentro1.SoggettoEntrante = new SoggettoCondominio(unitaImmobiliare, subentro1.SoggettoUscente.Persona);
            subentro1.SoggettoUscente = new SoggettoCondominio(unitaImmobiliare, new Persona(TipoPersonaEnum.Fisica, "Luigi", "Cacciatori", 1, true));

            using (mocks.Record())
            {
                SetupResult.For(_subentroRepository.GetByDataCondominio(_esercizio.CondominioRiferimento.ID, _esercizio.DataApertura.GetValueOrDefault(), _esercizio.DataChiusura.GetValueOrDefault(), false)).Return(new List<SubentroUnitaImmobiliare> { subentro1, subentro2 });
            }

        }
Ejemplo n.º 5
0
        public ResultProgressivo GetProgressivo(TipoProtocollo tipo, Condominio condominio)
        {
            int? progressivo = null;
            string message = string.Empty;

            try
            {
                if (tipo == TipoProtocollo.VersamentoCondomino)
                    throw new InvalidOperationException("Per 'VersamentoCondomino' è consentita la creazione del protocollo solo per Esercizio.");
                if (tipo == TipoProtocollo.Fattura)
                    throw new InvalidOperationException("Per 'Fattura' è consentita la creazione del protocollo solo per Anno.");

                const string hql = "FROM Protocollo P WHERE P.Tipo =:tipo AND P.CondominioRiferimento = :condominio";
                var prot = _daoFactory.GetProtocolloDao().GetByQuery(hql, new[] { new QueryParam("tipo", Conversione.ToHQLParameter(tipo)), new QueryParam("condominio", condominio) });
                if (prot != null)
                {
                    if (prot.Count > 0)
                    {
                        try
                        {
                            var protocollo = _daoFactory.GetProtocolloDao().GetById(prot[0].ID, true);
                            progressivo = protocollo.Progressivo + 1;
                            protocollo.Progressivo = progressivo.Value;
                        }
                        catch (Exception ex)
                        {
                            _log.WarnFormat("Errore inaspettato nel salvataggio (UPDATE) del progressivo di protocollo - (TIPO, CONDOMINIO) - {0} - tipo: ", ex, Utility.GetMethodDescription(), tipo);
                            throw;
                        } 
                        
                        if (prot.Count > 1)
                        {
                            _log.WarnFormat("Trovato più di un protocollo con le selezioni indicate - {0} - (tipo, condominio) - tipo: ", Utility.GetMethodDescription(), tipo);
                        }

                    }
                    else
                    {
                        var protocollo = new GestioneCondomini.Domain.Protocollo(tipo, condominio);
                        progressivo = 1;
                        protocollo.Progressivo = progressivo.Value;
                        _daoFactory.GetProtocolloDao().SaveOrUpdate(protocollo);
                    }
                }
            }
            catch (Exception ex)
            {
                _log.WarnFormat("Errore inaspettato nel calcolo del progressivo di protocollo - (TIPO, CONDOMINIO) - {0} - tipo:{1}", ex, Utility.GetMethodDescription(), tipo);
                throw;
            }

            if (!string.IsNullOrEmpty(message))
            {
                progressivo = null;
                _persistenceContext.RollbackAndCloseSession(Login.Instance.CurrentLogin().LoginName);
                _persistenceContext.BeginTransaction(Login.Instance.CurrentLogin().LoginName, IsolationLevel.ReadUncommitted);
            }

            return new ResultProgressivo(progressivo, message);
        }
Ejemplo n.º 6
0
 /// <summary>
 /// Crea un TipoFornitore valido
 /// </summary>
 public FascicoloCondominio(FascicoloImmobiliare dettaglioFascicolo, Condominio condominioRiferimento)
 {
     _dettaglioFascicolo = dettaglioFascicolo;
     _condominioRiferimento = condominioRiferimento;
     if (_condominioRiferimento != null)
         _condominioRiferimento.Fascicolo.Add(this);
 }
Ejemplo n.º 7
0
 public Utenza(TipoUtenza tipo, string numero, Fornitore fornitore, Condominio condominio, DatiBancariCondomini coordinateBancarie)
 {
     Fornitore = fornitore;
     Condominio = condominio;
     Tipo = tipo;
     Numero = numero;
     CoordinateBancarie = coordinateBancarie;
 }
Ejemplo n.º 8
0
 /// <summary>
 /// Crea un generico Contratto di Appalto valido
 /// </summary>
 public ContrattoAppalto(TipoContratto tipoContratto, Condominio condominio, Fornitore fornitore)
 {
     Tipo = tipoContratto;
     CondominioRiferimento = condominio;
     FornitoreAttuale = fornitore;
     if(condominio != null)
         condominio.ContrattiAppalto.Add(this);
 }
Ejemplo n.º 9
0
 /// <summary>
 /// Crea uno Stabile valido
 /// </summary>
 public Lotto(Condominio stabileRiferimento, string descrizione)
 {
     _descrizione = descrizione;
     _condominioRiferimento = stabileRiferimento;
     if (stabileRiferimento != null)
     {
         stabileRiferimento.Lotti.Add(this);
     }
 }
Ejemplo n.º 10
0
        public static string GetFileName(string prefix, Condominio condominio)
        {
            var testo = new StringBuilder();
            testo.AppendFormat("{0} del {1:dd-M-yyyy-HH-mm-ss}", prefix, DateTime.Now);
            if(condominio != null)
                testo.AppendFormat(" per {0}", condominio.DisplayName);

            return Conversione.ToFileName(testo.ToString());
        }
Ejemplo n.º 11
0
 /// <summary>
 /// Crea uno Modello di regisrazione contabile valido
 /// </summary>
 public ModelloRegistrazioneContabile(Condominio stabileRiferimento, string descrizione, LogTransazione logTransazione)
 {
     _descrizione = descrizione;
     _condominioRiferimento = stabileRiferimento;
     if (stabileRiferimento != null)
         stabileRiferimento.ModelliRegistrazioneContabile.Add(this);
     if (LogTransazione != null)
         LogTransazione.ModelliContabili.Add(this);
 }
Ejemplo n.º 12
0
        /// <summary>
        /// Crea uno Esercizio valido
        /// </summary>
        public AnnoGestionale(Condominio condominio, int annoIniziale, int annoFinale)
        {
            CondominioRiferimento = condominio;
            AnnoIniziale = annoIniziale;
            AnnoFinale = annoFinale;

            if (CondominioRiferimento != null)
                CondominioRiferimento.AnniGestionali.Add(this);
        }
Ejemplo n.º 13
0
        public void SetUp()
        {
            _documentService = MockRepository.GenerateStub<IDocumentService>();
            _fileSystem = MockRepository.GenerateStub<IFileSystem>();

            const string str = "Documento Bolletta di Prova";
            _documentoSpesa = new byte[str.Length * sizeof(char)];
            Buffer.BlockCopy(str.ToCharArray(), 0, _documentoSpesa, 0, _documentoSpesa.Length);

            _fileSystem = MockRepository.GenerateStub<IFileSystem>();
            _fileSystem.Stub(x => x.ReadAllBytes(Arg<string>.Is.Anything)).Return(_documentoSpesa);

            IList<Spesa> listaSpese = new List<Spesa>();
            _utente = new Utente("PP");
            _logTransazione = new LogTransazione(AzioneUtente.TransazioneContabile, _utente, Guid.NewGuid().ToString());

            _azienda = new Azienda("PROV", "Prova") { ID = 1 };
            _condominio1 = new Condominio("Condominio 1", 31, 12, 2014, _azienda) { CodiceFiscale = "91138030373" };
            _annoGestionaleCondominio1 = new AnnoGestionale(_condominio1, 2014, 2014);
            _esercizioCondominio1 = new Esercizio(_condominio1, new DateTime(2014, 1, 1), new DateTime(2014, 12, 31), _annoGestionaleCondominio1, GestioneEsercizioEnum.Ordinario);

            _condominio2 = new Condominio("Condominio 2", 31, 12, 2014, _azienda) { CodiceFiscale = "90036640374" };
            _annoGestionaleCondominio2 = new AnnoGestionale(_condominio2, 2014, 2014);
            _esercizioCondominio2 = new Esercizio(_condominio2, new DateTime(2014, 1, 1), new DateTime(2014, 12, 31), _annoGestionaleCondominio2, GestioneEsercizioEnum.Ordinario);

            _persona = new Persona(TipoPersonaEnum.Fisica, "Mario", "Rossi", _azienda.ID, true);
            _fornitore = new Fornitore(_persona, _azienda.ID);

            _documentiBolletteDTO = buildDocumentoBolletteDTO();
            foreach (var documentoBollettaDTO in _documentiBolletteDTO)
            {
                var esercizio = _esercizioCondominio1;
                if (documentoBollettaDTO.CodiceFiscaleCliente == _condominio2.CodiceFiscale)
                    esercizio = _esercizioCondominio2;

                listaSpese.Add(new Spesa(_fornitore, esercizio, _logTransazione) { ID = documentoBollettaDTO.IdSpesa, NumeroDocumento = documentoBollettaDTO.NumeroDocumento, DataDocumento = documentoBollettaDTO.DataDocumento });
            }

            _daoFactory = MockRepository.GenerateStub<IDaoFactory>();

            _daoFactory.Stub(x => x.GetCondominioDao().GetByCodiceFiscale(_condominio1.CodiceFiscale)).Return(_condominio1);
            _daoFactory.Stub(x => x.GetCondominioDao().GetByCodiceFiscale(_condominio2.CodiceFiscale)).Return(_condominio2);

            _spesaDao = MockRepository.GenerateStub<ISpesaDao>();
            _documentoDao = MockRepository.GenerateStub<IDocumentoDao>();

            _daoFactory.Stub(x => x.GetSpesaDao()).Return(_spesaDao);
            _daoFactory.Stub(x => x.GetDocumentoDao()).Return(_documentoDao);

            foreach (var spesa in listaSpese)
                _spesaDao.Stub(x => x.Find(spesa.ID, false)).Return(spesa);

            _utenzaDocumentoService = MockRepository.GenerateMock<UtenzaDocumentoService>(_daoFactory, _documentService, _fileSystem);
        }
Ejemplo n.º 14
0
		/// <summary>
        /// Crea una Pratica valido
        /// </summary>
        public Pratica(Condominio stabile, Persona personaRiferimento, TipoPratica tipoPratica, DateTime? dataApertura, int? aziendaID, LogTransazione logTransazione)
        {
            _condominioRiferimento = stabile;
            _personaRiferimento = personaRiferimento;
			_tipoPraticaRiferimento = tipoPratica;
            _aziendaID = aziendaID;
            _dataApertura = dataApertura;
            LogTransazione = logTransazione;
            if (stabile != null)
                stabile.Pratiche.Add(this);
        }
Ejemplo n.º 15
0
        /// <summary>
        /// Crea un Conto valido
        /// </summary>
        public Conto(Condominio condominio, TipoContoEconomicoEnum tipo, TipoPeriodoCompetenzaContabile tipoCompetenza, string descrizione, bool ripartizione, bool utilizzabileRegistrazioneSpese, bool utilizzabileVersamentoCondomini)
        {
            Descrizione = descrizione;
            CondominioRiferimento = condominio;
            CustomField = true;
            Ripartizione = ripartizione;
            TipoCompetenza = tipoCompetenza;
            Tipo = tipo;
            UtilizzabileRegistrazioneSpese = utilizzabileRegistrazioneSpese;
            UtilizzabileVersamentoCondomini = utilizzabileVersamentoCondomini;

            if (condominio != null) { condominio.Conti.Add(this); }
        }
Ejemplo n.º 16
0
        /// <summary>
        /// Crea un Subentro valido
        /// </summary>
        public Subentro(Condominio condominio, DateTime data, TipoSoggetto tipoSubentro, string oggettoLettera, string testoLettera, decimal competenzeUscente, decimal competenzeEntrante, bool trasferimentoSaldi, LogTransazione logTransazione)
        {
            Condominio = condominio;
            Data = data;
            TipoSubentro = tipoSubentro;
            TrasferimentoSaldi = trasferimentoSaldi;
            OggettoLettera = oggettoLettera;
            TestoLettera = testoLettera;
            CompetenzeEntrante = competenzeEntrante;
            CompetenzeUscente = competenzeUscente;

            LogTransazione = logTransazione;
            if (LogTransazione != null)
                LogTransazione.Subentri.Add(this);
        }
Ejemplo n.º 17
0
        /// <summary>
        /// Crea uno Esercizio Ordinario valido
        /// </summary>
        public Esercizio(Condominio condominio, DateTime? dataApertura, DateTime? dataChiusura, AnnoGestionale annoGestionale, GestioneEsercizioEnum gestione)
        {
            ProgressivoRegistrazioneContabile = 1;
            CondominioRiferimento = condominio;
            DataApertura = dataApertura;
            DataChiusura = dataChiusura;
            AnnoGestionale = annoGestionale;
            Gestione = gestione;
            Stato = StatoEsercizioEnum.Aperto;
            BloccoSaldi = false;

            if(CondominioRiferimento != null)
                CondominioRiferimento.Esercizi.Add(this);
            if (AnnoGestionale != null)
                AnnoGestionale.Esercizi.Add(this);
        }
Ejemplo n.º 18
0
        /// <summary>
        /// Crea uno Dato bancario valido
        /// </summary>
        public DatiBancariCondomini(string iban, Condominio stabile)
        {
            if (stabile != null)
            {
                _condominioRiferimento = stabile;
                _iban = iban;

                CoordinateBancarie coor = new CoordinateBancarie();
                coor.SetIBAN(iban);
                Abi = coor.Abi;
                Cab = coor.Cab;
                ContoCorrente = coor.ContoCorrente;
                Cin = coor.Cin;

                _condominioRiferimento.DatiBancari.Add(this);
            }
        }
Ejemplo n.º 19
0
        /// <summary>
        /// Crea uno Stabile valido
        /// </summary>
        public Palazzina(Condominio condominioRiferimento, string descrizione, bool insertGruppo)
        {
            _descrizione = descrizione;
            _condominioRiferimento = condominioRiferimento;
            if (condominioRiferimento != null)
            {
                // Scala di default
                GruppoStabile gruppoDefault;
                if(insertGruppo)
                    gruppoDefault = new GruppoStabile(this, "Scala A");

                if (condominioRiferimento.Indirizzo != null)
                    Indirizzo = (Address)condominioRiferimento.Indirizzo.Clone();
                else
                    Indirizzo = new Address();
                condominioRiferimento.Palazzine.Add(this);
            }
        }
Ejemplo n.º 20
0
        /// <summary>
        /// Crea uno Dato bancario valido
        /// </summary>
        public DatiBancariCondomini(string abi, string cab, string contoCorrente, string cin, Condominio stabile)
        {
            if (stabile != null)
            {
                CondominioRiferimento = stabile;
                Abi = abi;
                Cab = cab;
                ContoCorrente = contoCorrente;
                Cin = cin;

                CoordinateBancarie coor = new CoordinateBancarie();
                coor.Abi = Abi;
                coor.Cab = Cab;
                coor.ContoCorrente = ContoCorrente;
                Iban = coor.IBAN;

                _condominioRiferimento.DatiBancari.Add(this);
            }
        }
Ejemplo n.º 21
0
        //Non considero nessun vincolo sull'apertura delle pratiche
        public string AperturaPratica(int idPratica, DateTime dataApertura, int tipoPratica, int condominioRiferimento, int? personaRiferimento, string oggetto, Urgenza urgenza, ConformitaPratiche? conformita, int aziendaId, LogTransazione logTransazione, out Pratica pratOutput)
        {
            pratOutput = null;
            var message = string.Empty;

            try
            {
                _condominio = _daoFactory.GetCondominioDao().GetById(condominioRiferimento, false);
                var pratDao = _daoFactory.GetPraticaDao();
                var persDao = _daoFactory.GetPersonaDao();
                var tipoPratDao = _daoFactory.GetTipoPraticaDao();

                Persona persona = null;
                if(personaRiferimento != null)
                    persona = persDao.GetById(personaRiferimento.GetValueOrDefault(), false);

                var tipoPraticaRif = tipoPratDao.GetById(tipoPratica, false);
                var pratica = new Pratica(_condominio, persona, tipoPraticaRif, dataApertura, aziendaId, logTransazione) { StatoPratica = "Aperta", Oggetto = oggetto.Truncate(250), Conformita = conformita, Urgenza = urgenza };

                if(logTransazione == null)
                    pratOutput = pratDao.SaveOrUpdate(pratica);

                // Richiedente
                if (persona != null)
                {
                    var richiedente = new PraticaRichiedente(pratica, persona, pratica.DataApertura) { Note = "Apertura" };
                    _daoFactory.GetPraticaRichiedenteDao().SaveOrUpdate(richiedente);
                    pratica.Richiedenti.Add(richiedente);
                }

            }
            catch (Exception ex)
            {                
                _log.ErrorFormat("Non è stato possibile aprire la pratica. Errore durante il salvataggio delle informazioni - {0} - tipoPratica:{1}", ex, Utility.GetMethodDescription(), tipoPratica);
                message = "Non è stato possibile aprire la pratica. Errore durante il salvataggio delle informazioni";
            }
            
            return message;
        }
Ejemplo n.º 22
0
        public IList<GestioneCondomini.Domain.Spesa> GetSoggetteRitenutaByFornitoreCondominioAnno(Fornitore fornitore, Condominio condominio, int anno)
        { 
            try
            {
                const string hql = "FROM Spesa SPE LEFT JOIN FETCH SPE.Scadenze SCA LEFT JOIN FETCH SCA.Pagamenti PAG WHERE SPE.EsercizioRiferimento.CondominioRiferimento = :condominio AND SPE.FornitoreRiferimento = :fornitore AND year(PAG.Data) = :anno AND PAG.RitenutaAcconto.Importo > 0 AND (PAG.Stato = :stato1 OR PAG.Stato = :stato2 OR PAG.Stato = :stato3 OR PAG.Stato = :stato4)";
                var parameters = new List<QueryParam>(6)
                {
                    new QueryParam("fornitore", fornitore.ID),
                    new QueryParam("condominio", condominio.ID),
                    new QueryParam("anno", anno),
                    new QueryParam("stato1", Conversione.ToHQLParameter(StatoSpesaEnum.Pagata)),
                    new QueryParam("stato2", Conversione.ToHQLParameter(StatoSpesaEnum.ParzialmentePagata)),
                    new QueryParam("stato3", Conversione.ToHQLParameter(StatoSpesaEnum.PagataAltroAmministratore)),
                    new QueryParam("stato4", Conversione.ToHQLParameter(StatoSpesaEnum.Evasa))
                };

                return _daoFactory.GetSpesaDao().GetByQuery(hql, parameters.ToArray());
            }
            catch (Exception ex)
            {
                _log.ErrorFormat("Errore inaspettato nella lettura delle spese soggette a ritenuta per fornitore anno - {0} - fornitore:{1} - anno:{2}", ex, Utility.GetMethodDescription(), fornitore.ID, anno);
                throw;
            }
        }
Ejemplo n.º 23
0
        public IList<RisultatoInvioMessaggio> InvioMessaggio(int idAzienda, PersonaMessaggioDTO personaMessaggioDTO, Condominio condominio, int? idUnitaImmobiliare, int? idFornitore, int? idResponsabile, int? idIncaricatoAttivita, MotivoMessaggio motivoMessaggio, string oggetto, string testo, IList<string> destinatari, string mittente, string emailRapportino, IList<DocumentInfo> allegati, ParametriInvioLettera parametriInvioLettera)
        {
            try
            {
                if (destinatari.Count > 0)
                {
                    var message = string.Empty;
                    var invioRiuscito = false;
                    var allegatiLista = new List<DocumentInfo>(allegati.Count);
                    Persona persona = null;
                    if (personaMessaggioDTO != null)
                        persona = _daoFactory.GetPersonaDao().Find(personaMessaggioDTO.ID, false);

                    var results = new List<RisultatoInvioMessaggio>();
                    var result = new eMessageResultSendFAX();

                    try
                    {
                        int? idCondominio = null;
                        if (condominio != null)
                            idCondominio = condominio.ID;

                        var destinatariSend = new List<string>();
                        foreach (var item in destinatari)
                        {
                            if (!item.Trim().StartsWith("+39"))
                                destinatariSend.Add("+39" + Conversione.ToPhoneNumber(item));
                            else
                                destinatariSend.Add(Conversione.ToPhoneNumber(item));
                        }

                        // =====================================
                        // Creo le pagine del FAX
                        // =====================================
                        var nomiFiles = new string[allegati.Count];
                        var contenutoAllegati = new byte[allegati.Count][];

                        // -------------------------------------
                        // Allegati
                        // -------------------------------------
                        var index = 0;
                        foreach (var documento in allegati)
                        {
                            nomiFiles[index] = documento.FileName + documento.FileExtension;
                            contenutoAllegati[index] = documento.Body;
                            allegatiLista.Add(documento);
                            index++;
                        }

                        // -------------------------------------
                        // Oggetto
                        // -------------------------------------
                        decimal? importo = null;
                        var tipoIndirizzo = TipoIndirizzo.Recapito;
                        if (personaMessaggioDTO != null)
                        {
                            importo = personaMessaggioDTO.Importo;
                            tipoIndirizzo = personaMessaggioDTO.TipoIndirizzo;
                        }
                        var parametri = new ParametriStampaUnione(persona != null ? (int?)persona.ID : null, idUnitaImmobiliare, idResponsabile, idIncaricatoAttivita, idFornitore, idCondominio, null, tipoIndirizzo, importo, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null);
                        oggetto = _messaggisticaService.ApplicaStampaUnione(oggetto, parametri, idAzienda);

                        // =====================================
                        // Invio Messaggio
                        // =====================================
                        // -------------------------------------
                        // Invio
                        // -------------------------------------
                        var service = new Fax { Timeout = 999999999 };
                        var userService = new Users();
                        var credenziali = _configurationService.GetLoginInfo(idAzienda);

                        if (credenziali != null && !string.IsNullOrEmpty(credenziali.Value.Utente) && !string.IsNullOrEmpty(credenziali.Value.Password))
                        {
                            var success = false;
                            try
                            {
                                var resultUsers = userService.Login(credenziali.Value.Utente, credenziali.Value.Password, null);
                                success = resultUsers.success;
                            }
                            catch (Exception ex)
                            {
                                _log.WarnFormat("Errore durante il controllo delle credenziali - {0} - username:{1} - password:{2}", ex, Utility.GetMethodDescription(), credenziali.Value.Utente, credenziali.Value.Password);
                            }
                            if (success)
                            {
                                var identificazioneMittente = _configurationService.GetIdentificazioneMittente(idAzienda, TipoMessaggio.Fax, TipoIndirizzo.Recapito);

                                // Controllo identificazione mittente
                                if (string.IsNullOrEmpty(identificazioneMittente.Numero))
                                    return new List<RisultatoInvioMessaggio> { new RisultatoInvioMessaggio("KO", null, false, "Il fax non può essere inviato perchè non è presente il numero di fax del mittente" + Environment.NewLine + "Inserire il numero nella anagrafica dello studio e riprovare.", new DocumentInfo()) };

                                if (!string.IsNullOrEmpty(identificazioneMittente.Email))
                                {
                                    if (!string.IsNullOrEmpty(emailRapportino))
                                        emailRapportino += ",";
                                    emailRapportino += identificazioneMittente.Email;
                                }

                                // Mittente
                                if (string.IsNullOrEmpty(mittente))
                                    mittente = identificazioneMittente.Nome;

                                if (ConfigurationManager.AppSettings["IsTest"] != null && bool.Parse(ConfigurationManager.AppSettings["IsTest"]))
                                    destinatariSend = new List<string> { "+390513371992" };

                                var parameters = new List<OptionalParameters>
                                {
                                    new OptionalParameters { ParameterName = "NotificationEmail", ParameterValue = emailRapportino },
                                    new OptionalParameters { ParameterName = "DeliveryTime", ParameterValue = DateTime.Now.ToString() },
                                    new OptionalParameters { ParameterName = "HeaderFax", ParameterValue = identificazioneMittente.Numero },
                                    new OptionalParameters { ParameterName = "HeaderName", ParameterValue = mittente }
                                };

                                if (!parametriInvioLettera.Asincrono)
                                    result = service.Send(credenziali.Value.Utente, credenziali.Value.Password, destinatariSend.ToArray(), contenutoAllegati, nomiFiles, parameters.ToArray());
                                else
                                {
                                    service.SendAsync(credenziali.Value.Utente, credenziali.Value.Password, destinatariSend.ToArray(), contenutoAllegati, nomiFiles, parameters.ToArray());
                                    invioRiuscito = true;
                                }

                                message += result;
                                _log.InfoFormat("Risultato invio fax:{0} - destinatario:{1}", result, destinatariSend.Aggregate(string.Empty, (current, dest) => current + (dest + ", ")));

                                if (result.SpeditionResult.All(item => item.success))
                                    invioRiuscito = true;
                            }
                            else
                            {
                                _log.WarnFormat("Credenziali non valide - {0} - username:{1} - password:{2}", Utility.GetMethodDescription(), credenziali.Value.Utente, credenziali.Value.Password);
                            }
                        }
                        else
                        {
                            _log.FatalFormat("Errore inaspettato durante l'invio del fax. NON sono presenti le credenziali per l'invio del fax - {0} - oggetto:{1} - destinatario:{2}", Utility.GetMethodDescription(), oggetto, destinatari[0]);
                            message = "KO - Non sono definite le credenziali per l'invio dei fax";
                        }
                    }
                    catch (Exception ex)
                    {
                        invioRiuscito = false;

                        _log.FatalFormat("Errore inaspettato durante l'invio del fax - {0} - oggetto:{1} - destinatario:{2}", ex, Utility.GetMethodDescription(), oggetto, destinatari[0]);
                        message = "KO - Errore inaspettato durante l'invio del fax";
                    }

                    if (motivoMessaggio != MotivoMessaggio.ScadenzaContratto && invioRiuscito)
                    {
                        foreach (var singleResult in result.SpeditionResult)
                        {
                            try
                            {
                                string messaggioInvio;
                                if (singleResult.success)
                                {
                                    messaggioInvio = string.Format("Fax accodato per l'invio: {0}", singleResult.jobCode);
                                    _log.InfoFormat("Invio FAX RIUSCITO - {0} - messageCode: {1} - messaggio: {2} - jobcode: {3} - destinatario: {4}", Utility.GetMethodDescription(), singleResult.messageCode, singleResult.errorDescription, singleResult.jobCode, destinatari.Aggregate(string.Empty, (current, dest) => current + (dest + ";")));
                                }
                                else
                                {
                                    messaggioInvio = "Invio della lettera non riuscito:" + Environment.NewLine + singleResult.errorDescription;
                                    _log.WarnFormat("Invio FAX FALLITO - {0} - messageCode: {1} - messaggio: {2} - jobcode: {3} - destinatario: {4}", Utility.GetMethodDescription(), singleResult.messageCode, singleResult.errorDescription, singleResult.jobCode, destinatari.Aggregate(string.Empty, (current, dest) => current + (dest + ";")));
                                }

                                var resultInvio = new RisultatoInvioMessaggio(singleResult.jobCode, singleResult.messageCode, singleResult.success, messaggioInvio, new DocumentInfo());
                                var storicoMessaggio = _messaggisticaService.StoricizzaMessaggio(persona, condominio, resultInvio, motivoMessaggio, oggetto, testo, destinatari, mittente, emailRapportino, allegatiLista, TipoMessaggio.Fax);
                                if (storicoMessaggio != null)
                                    resultInvio.IdMessaggio = storicoMessaggio.ID;
                                results.Add(resultInvio);
                            }
                            catch (Exception ex)
                            {
                                _log.ErrorFormat("Errore inaspettato durante la storicizzazione del messaggio - {0} - oggetto:{1} - destinatario:{2}", ex, Utility.GetMethodDescription(), oggetto, destinatari[0]);
                                throw;
                            }
                        }
                    }
                    else
                    {
                        if (!invioRiuscito)
                            results.Add(new RisultatoInvioMessaggio("KO", null, false, message, new DocumentInfo()));
                    }

                    return results;
                }
            }
            catch (Exception ex)
            {
                var idPersona = "<NULL>";
                if (personaMessaggioDTO != null)
                    idPersona = personaMessaggioDTO.ID.ToString();

                var idCondominio = "<NULL>";
                if (condominio != null)
                    idCondominio = condominio.ID.ToString();

                _log.FatalFormat("Errore inaspettato nell'invio del fax - {0} - azienda:{1} - persona:{2} - condominio:{3} - motivoMessaggio:{4} - oggetto:{5} - testo:{6} - destinatari:{7} - mittente:{8} - emailRapportino:{9}", ex, Utility.GetMethodDescription(), idAzienda, idPersona, idCondominio, motivoMessaggio, oggetto, testo, destinatari.Aggregate(string.Empty, (current, dest) => current + (dest + ", ")), mittente, emailRapportino);
                throw;
            }

            return new List<RisultatoInvioMessaggio> { new RisultatoInvioMessaggio(null, null, false, "Non è definito nessun destinatario", new DocumentInfo())};
        }
Ejemplo n.º 24
0
        private string formattaTestoLettera(Condominio condominio, DatiBancariCondomini banca, string testoNota)
        {
            try
            {
                var testoOutput = string.Empty;
                if (!string.IsNullOrEmpty(testoNota))
                {
                    if (condominio != null)
                    {
                        var comune = string.Empty;
                        var provincia = string.Empty;
                        if (condominio.Indirizzo?.Comune != null)
                        {
                            comune = condominio.Indirizzo.Comune.Descrizione;
                            provincia = condominio.Indirizzo.Comune.ProvinciaAppartenenza.Codice;
                        }

                        var memoryEngine = NVelocityEngineFactory.CreateNVelocityMemoryEngine(true);

                        System.Collections.IDictionary context = new System.Collections.Hashtable();

                        context.Add("condominio", condominio.Descrizione);
                        context.Add("codiceCondominio", condominio.Codice);
                        context.Add("codiceFiscaleCondominio", condominio.CodiceFiscale);
                        context.Add("localitaCondominio", comune + " " + provincia);

                        var bancaPrincipale = banca ?? condominio.DatiBancariPrincipale;
                        if (bancaPrincipale != null)
                        {
                            var abiCab = _daoFactory.GetAbiCabDao().GetByAbiCab(bancaPrincipale.Abi, bancaPrincipale.Cab);

                            context.Add("contoCorrente", bancaPrincipale.ContoCorrente);
                            context.Add("cin", bancaPrincipale.Cin);
                            context.Add("abi", bancaPrincipale.Abi);
                            context.Add("cab", bancaPrincipale.Cab);
                            context.Add("iban", bancaPrincipale.Iban);
                            context.Add("banca", abiCab.DescrizioneAbi + " - " + abiCab.DescrizioneCab);
                        }

                        testoOutput = memoryEngine.Process(context, testoNota);

                    }
                    else
                        testoOutput = testoNota;
                }

                return Conversione.HtmlToReportingServices(testoOutput);

            }
            catch (Exception ex)
            {
                _log.ErrorFormat("Errore inaspettato nella formattazione della lettera di sollecito - {0} - testoNota:{1}", ex, Utility.GetMethodDescription(), testoNota);
                throw;
            }
        }
Ejemplo n.º 25
0
        private DatiFornitori770 getDatiFornitore(Fornitore fornitore, Condominio condominio, int index)
        {
            var datiFornitore = new DatiFornitori770
            {
                Cognome = (fornitore.PersonaRiferimento.TipoPersona.GetValueOrDefault() == TipoPersonaEnum.Giuridica) ? fornitore.PersonaRiferimento.RagioneSociale : fornitore.PersonaRiferimento.Cognome,
                Nome = (fornitore.PersonaRiferimento.TipoPersona.GetValueOrDefault() == TipoPersonaEnum.Giuridica) ? string.Empty : fornitore.PersonaRiferimento.Nome,
                CodiceFiscale = fornitore.GetCodiceFiscale(),
                ComuneNascita = (fornitore.PersonaRiferimento.TipoPersona.GetValueOrDefault() == TipoPersonaEnum.Fisica) ? fornitore.PersonaRiferimento.ComuneNascita.Descrizione : string.Empty,
                ProvinciaNascita = (fornitore.PersonaRiferimento.TipoPersona.GetValueOrDefault() == TipoPersonaEnum.Fisica) ? fornitore.PersonaRiferimento.ComuneNascita.ProvinciaAppartenenza.Codice : string.Empty,
                DataNascita = (fornitore.PersonaRiferimento.TipoPersona.GetValueOrDefault() == TipoPersonaEnum.Fisica) ? fornitore.PersonaRiferimento.DataNascita.GetValueOrDefault().ToShortDateString() : string.Empty,
                Sesso = (fornitore.PersonaRiferimento.TipoPersona.GetValueOrDefault() == TipoPersonaEnum.Fisica) ? fornitore.PersonaRiferimento.Sesso.ToString().Substring(0, 1).ToUpper() : string.Empty,
                IndirizzoCompleto = fornitore.PersonaRiferimento.IndirizzoResidenza.GetIndirizzoCompleto(),
                ComuneResidenza = fornitore.PersonaRiferimento.IndirizzoResidenza.Comune.Descrizione,
                Provincia = fornitore.PersonaRiferimento.IndirizzoResidenza.Comune.ProvinciaAppartenenza.Codice,
                CodiceFiscaleCondominio = condominio.CodiceFiscale,
                Causale = fornitore.GetTipologiaReddito(),
                ProgressivoComunicazione = index.ToString().PadLeft(8, '0')
            };

            return datiFornitore;
        }
Ejemplo n.º 26
0
        public string LoadCondominioOLD(byte[] database, string codiceCondominio, TipoSaldi tipoSaldi, int idAzienda, string password)
        {
            string message = string.Empty;

            try
            {

                // -----------------------------------------------------------------------------------------------------------
                //  Decompressione del database
                // -----------------------------------------------------------------------------------------------------------
                const string databasePath = @"C:\temp\y.mdb";
                var fsOut = new FileStream(databasePath, FileMode.Create, FileAccess.Write, FileShare.None);
                var gZipStream = new GZipStream(new MemoryStream(database), CompressionMode.Decompress);

                const int bufferSize = 4096;
                var b = new byte[bufferSize];
                
                while (true)
                {
                    int n = gZipStream.Read(b, 0, b.Length);
                    if (n > 0)
                        fsOut.Write(b, 0, n);
                    else
                        break;
                }
                fsOut.Close();
                fsOut.Dispose();

                // ===========================================================================================================
                //  Lettura Tabelle
                // ===========================================================================================================

                // ----------------------------------------------------------------------------------
                //  Condomini
                // ----------------------------------------------------------------------------------
                var conn = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0; User Id=; Jet OLEDB:Database Password="******"; Data Source=" + databasePath);
                var condominioAdapter = new OleDbDataAdapter("SELECT * FROM Stabili WHERE S_COD_STA=" + codiceCondominio, conn);

                var azienda = _daoFactory.GetAziendaDao().GetById(idAzienda, false);

                var dsCondomini = new DataSet("Condomini");
                condominioAdapter.Fill(dsCondomini, "Stabili");

                var rowCondominio = dsCondomini.Tables["Stabili"].Rows[0];
                var dataFineEsercizio = (DateTime)rowCondominio["S_FIN_ESE"];

                var condominio = _daoFactory.GetCondominioDao().GetByCodice(codiceCondominio.PadLeft(3, '0'), azienda.ID);
                if (condominio == null)
                {
                    condominio = new Condominio(rowCondominio["S_NOME"].ToString(), dataFineEsercizio.Day, dataFineEsercizio.Month, dataFineEsercizio.Year + 1, azienda)
                    {
                        Codice = codiceCondominio.PadLeft(3, '0'),
                        Indirizzo =
                            new Address
                                {
                                    Indirizzo = rowCondominio["S_VIA"].ToString(),
                                    Cap = rowCondominio["S_CAP"].ToString()
                                }
                    };

                    // Indirizzo
                    if (rowCondominio["S_LOCALITA"] != DBNull.Value && !string.IsNullOrEmpty(rowCondominio["S_LOCALITA"].ToString()))
                    {
                        var comuni = _daoFactory.GetComuneDao().GetByDescrizione(rowCondominio["S_LOCALITA"].ToString().Trim());
                        if (comuni.Count == 1)
                            condominio.Indirizzo.Comune = comuni[0];
                        else
                            condominio.Indirizzo.Localita = rowCondominio["S_LOCALITA"].ToString();
                    }

                    _daoFactory.GetCondominioDao().SaveOrUpdate(condominio);

                    addDefault(condominio, true);
                }
                else
                { 
                    // Eliminazione vecchi dati
                    foreach(var unita in _daoFactory.GetUnitaImmobiliareDao().GetByCondominio(condominio.ID))
                    {
                        foreach (var mill in unita.Millesimi)
                        {
                            mill.ContoRiferimento.Millesimi.Remove(mill);
                            _daoFactory.GetMillesimoDao().Delete(mill);
                        }
                        unita.Millesimi.Clear();
                        unita.GruppoStabileRiferimento.UnitaImmobiliari.Remove(unita);
                        _daoFactory.GetUnitaImmobiliareDao().Delete(unita);
                    }

                    foreach (var stabileDelete in condominio.Palazzine)
                    {
                        foreach (var gruppo in stabileDelete.GruppiStabile)
                        {
                            _daoFactory.GetGruppoStabileDao().Delete(gruppo);
                        }
                        _daoFactory.GetPalazzinaDao().Delete(stabileDelete);
                    }
                    condominio.Palazzine.Clear();

                    var stabileFirst = new Palazzina(condominio, "Stabile A");
                    _daoFactory.GetPalazzinaDao().SaveOrUpdate(stabileFirst);

                    // Dati Bancari
                    foreach (var banca in condominio.DatiBancari)
                    {
                        foreach (var mov in banca.MovimentiBancari)
                            _daoFactory.GetMovimentoBancarioDao().Delete(mov);

                        _daoFactory.GetDatiBancariCondominiDao().Delete(banca);
                    }
                    condominio.DatiBancari.Clear();

                    // Piano Conti
                    foreach (var contoDelete in condominio.Conti)
                        _daoFactory.GetContoDao().Delete(contoDelete);
                    condominio.Conti.Clear();

                    // Esercizi
                    foreach(var esercizioDelete in condominio.Esercizi)
                    {
                        esercizioDelete.AnnoGestionale.Esercizi.Remove(esercizioDelete);
                        _daoFactory.GetEsercizioDao().Delete(esercizioDelete);
                    }
                    condominio.Esercizi.Clear();

                    // Anno Gestionale
                    foreach(var anno in condominio.AnniGestionali)
                        _daoFactory.GetAnnoGestionaleDao().Delete(anno);
                    condominio.AnniGestionali.Clear();

                    // -------------------------------------
                    //  Default del condominio
                    // -------------------------------------

                    // Conti comuni del Piano dei conti
                    var conti = _daoFactory.GetPianoContiDao().GetByAzienda(idAzienda);
                    foreach (var pianoConto in conti)
                        pianoConto.ConvertToConto(condominio);

                    // Nuovo esercizio
                    var inizioEsercizioOld = (DateTime)rowCondominio["S_INI_ESE"];
                    var fineEsercizioOld = (DateTime)rowCondominio["S_FIN_ESE"];
                    var annoNew = new AnnoGestionale(condominio, inizioEsercizioOld.AddYears(1).Year, fineEsercizioOld.AddYears(1).Year);
                    _daoFactory.GetAnnoGestionaleDao().SaveOrUpdate(annoNew);
                    var esercizioNew = new Esercizio(condominio, inizioEsercizioOld.AddYears(1), fineEsercizioOld.AddYears(1), annoNew, GestioneEsercizioEnum.Ordinario);
                    _daoFactory.GetEsercizioDao().SaveOrUpdate(esercizioNew);
                }

                if (rowCondominio["S_NOTE"] != DBNull.Value && !string.IsNullOrEmpty(rowCondominio["S_NOTE"].ToString()))
                    condominio.Note = rowCondominio["S_NOTE"].ToString();

                if (rowCondominio["S_COD_SIA"] != DBNull.Value && !string.IsNullOrEmpty(rowCondominio["S_COD_SIA"].ToString()))
                    condominio.CodiceSIA = rowCondominio["S_COD_SIA"].ToString().Trim();

                if (rowCondominio["S_COD_FISCALE"] != DBNull.Value && !string.IsNullOrEmpty(rowCondominio["S_COD_FISCALE"].ToString()))
                    condominio.CodiceFiscale = rowCondominio["S_COD_FISCALE"].ToString().Trim();

                if (rowCondominio["S_IBAN_COMPLETO"] != DBNull.Value && !string.IsNullOrEmpty(rowCondominio["S_IBAN_COMPLETO"].ToString()))
                {
                    var datiBancari = new DatiBancariCondomini(rowCondominio["S_IBAN_COMPLETO"].ToString().Trim(), condominio);
                    condominio.DatiBancari.Add(datiBancari);
                }
                else if (rowCondominio["S_ABI"] != DBNull.Value && !string.IsNullOrEmpty(rowCondominio["S_ABI"].ToString()) && rowCondominio["S_CAB"] != DBNull.Value && !string.IsNullOrEmpty(rowCondominio["S_CAB"].ToString()) && rowCondominio["S_NR_CC"] != DBNull.Value && !string.IsNullOrEmpty(rowCondominio["S_NR_CC"].ToString()))
                {
                    var coor = new CoordinateBancarie
                    {
                        Abi = rowCondominio["S_ABI"].ToString().Trim().PadLeft(5, '0'),
                        Cab = rowCondominio["S_CAB"].ToString().Trim().PadLeft(5, '0'),
                        ContoCorrente = rowCondominio["S_NR_CC"].ToString().Trim().PadLeft(12, '0')
                    };

                    var datiBancari = new DatiBancariCondomini(coor.CalcolaIBAN(), condominio);
                    condominio.DatiBancari.Add(datiBancari);
                }

                // Scale
                var stabile = Library.IesiGenericCollections<Palazzina>.GetByIndex(condominio.Palazzine, 0);
                var scala = Library.IesiGenericCollections<GruppoStabile>.GetByIndex(stabile.GruppiStabile, 0);
                var firstScala = true;

                for(int i=1; i<=52; i++)
                {
                    if (rowCondominio["S_DES_CIV" + i.ToString().PadLeft(2, '0')] != DBNull.Value && !string.IsNullOrEmpty(rowCondominio["S_DES_CIV" + i.ToString().PadLeft(2, '0')].ToString()))
                    {
                        if(firstScala && scala != null)
                        {
                            scala.Descrizione = rowCondominio["S_DES_CIV" + i.ToString().PadLeft(2, '0')].ToString();
                            scala.Indirizzo = new Address {Indirizzo = condominio.Indirizzo.Indirizzo};
                            firstScala = false;
                        }
                        else
                        {
                            var scalaNew = new GruppoStabile(stabile, rowCondominio["S_DES_CIV" + i.ToString().PadLeft(2, '0')].ToString()) {Indirizzo = {Indirizzo = condominio.Indirizzo.Indirizzo}};
                            stabile.GruppiStabile.Add(scalaNew);
                            _daoFactory.GetGruppoStabileDao().SaveOrUpdate(scalaNew);
                        }
                    }
                }
                if (firstScala && scala != null)
                {
                    scala.Indirizzo = new Address {Indirizzo = condominio.Indirizzo.Indirizzo};
                }
                
                // ----------------------------------------------------------------------------------
                //  Piano dei conti
                // ----------------------------------------------------------------------------------
                var pianoContiAdapter = new OleDbDataAdapter("SELECT * FROM PiaContS WHERE PS_COD_STA=" + codiceCondominio, conn);
                pianoContiAdapter.Fill(dsCondomini, "PianoConti");

                var loadedConti = new Dictionary<int, Conto>();
                var tbPianoConti = dsCondomini.Tables["PianoConti"];
                Conto conto = null;
                var indexConto = 0;
                foreach (DataRow row in tbPianoConti.Rows)
                {
                    try
                    {
                        conto = loadContoSottoconto(row, condominio, conto, loadedConti, string.Empty, ref indexConto);
                    }
                    catch (Exception ex)
                    {
                        
                        _log.Error("Errore inaspettato nell'importazione di un condominio da YStabili - (Piano dei conti) - " + Library.Utility.GetMethodDescription() + " - PS_CONTO:" + row["PS_CONTO"] + " - PS_SOTTOC:" + row["PS_SOTTOC"], ex);

                        throw;
                    }
                }

                // ----------------------------------------------------------------------------------
                //  Anagrafiche
                // ----------------------------------------------------------------------------------
                var unitaAdapter = new OleDbDataAdapter("SELECT * FROM Unita WHERE U_COD_STA=" + codiceCondominio, conn);
                var soggettiAdapter = new OleDbDataAdapter("SELECT * FROM Condomini WHERE C_COD_STA=" + codiceCondominio, conn);
                unitaAdapter.Fill(dsCondomini, "Unita");
                soggettiAdapter.Fill(dsCondomini, "Condomini");

                var tbUnita = dsCondomini.Tables["Unita"];
                var tbAnagrafiche = dsCondomini.Tables["Condomini"];

                // Unità Immobiliari
                UnitaImmobiliare lastUnita = null;
                int ordineUnita = 0;
                foreach (DataRow row in tbUnita.Rows)
                {
                    try
                    {
                        var soggetti = tbAnagrafiche.Select("C_COD_STA = " + row["U_COD_STA"] + " AND C_COD_UNITA = " + row["U_COD_UNITA"]);
                        UnitaImmobiliare unitaCorrente;
                        if (soggetti.Length == 1 && isConduttore(soggetti[0]))
                            unitaCorrente = lastUnita;
                        else
                        {
                            var indexScala = 0;
                            if (row["U_NR_CIVICO"] != DBNull.Value && !string.IsNullOrEmpty(row["U_NR_CIVICO"].ToString()))
                                indexScala = int.Parse(row["U_NR_CIVICO"].ToString()) - 1;
                            var scalaCorrente = Library.IesiGenericCollections<GruppoStabile>.GetByIndex(stabile.GruppiStabile, indexScala);
                            ordineUnita++;
                            unitaCorrente = new UnitaImmobiliare(scalaCorrente, _daoFactory.GetTipoUnitaImmobiliareDao().GetById(1, false))
                            {
                                Ordine = ordineUnita,
                                Descrizione = row["U_DESC_UNITA"].ToString(),
                                AziendaID = idAzienda,
                                CodiceImportazione = row["U_COD_STA"] + "&" + row["U_COD_UNITA"]
                            };
                            lastUnita = unitaCorrente;
                            _daoFactory.GetUnitaImmobiliareDao().SaveOrUpdate(unitaCorrente);
                        }

                        var soggettiCondominio = setSoggettiUnita(unitaCorrente, soggetti);

                        if (soggettiCondominio.Count > 0)
                        {
                            // Saldi inizio esercizio
                            setSaldiInizioEsercizio(row, soggettiCondominio, tipoSaldi);

                            // Millesimi
                            setMillesimi(row, unitaCorrente, loadedConti);
                        }
                    }
                    catch(Exception ex)
                    {
                        
                        _log.Error("Errore inaspettato nell'importazione di un condominio da YStabili - (Unità Immobiliare) - " + Library.Utility.GetMethodDescription() + " - U_COD_STA:" + row["U_COD_STA"] + " - U_COD_UNITA:" + row["U_COD_UNITA"], ex);

                        throw;
                    }
                }
            }
            catch (OleDbException ex)
            {
                message = ex.Message;
                
                _log.Error("Errore inaspettato nell'importazione di un condominio da YStabili: " + Library.Utility.GetMethodDescription() + " - message: " + message, ex);
            }
            catch (Exception ex)
            {
                message = ex.Message;
                
                _log.Error("Errore inaspettato nell'importazione di un condominio da YStabili: " + Library.Utility.GetMethodDescription() + " - message: " + message, ex);
            }

            return message;
        }
Ejemplo n.º 27
0
        private Esercizio getEsercizioCompetenza(Condominio condominio, DateTime dataPagamento)
        {
            try
            {
                Esercizio esercizio = null;

                /*=======================================================================================
                Esercizio per ora è sempre l'esercizio ordinario attivo sulla base della data di pagamento
                Commentando queste righe l'esercizio di riferimento diventa l'esercizio di riferimento 
                della spesa (tel con Ivan).
                =======================================================================================*/
                var esercizi =
                    condominio.Esercizi.Where(
                        es =>
                            es.Gestione == GestioneEsercizioEnum.Ordinario && es.Stato == StatoEsercizioEnum.Aperto &&
                            es.DataApertura <= dataPagamento && es.DataChiusura >= dataPagamento)
                        .OrderBy(es => es.DataApertura.GetValueOrDefault());

                if (esercizi.Count() == 1)
                    esercizio = esercizi.SingleOrDefault();
                else if (esercizi.Count() > 1)
                {
                    var eserciziStr = esercizi.Aggregate(string.Empty, (current, es) => current + (es.ID + ": " + es.DisplayName + " - "));
                    _log.WarnFormat("Trovato più di un esercizio di competenza per una data - {0} - esercizi:{1}", Utility.GetMethodDescription(), eserciziStr);

                    esercizio = esercizi.FirstOrDefault();
                }
                /*=======================================================================================*/
                return esercizio;

            }
            catch (Exception ex)
            {
                _log.ErrorFormat("Errore nella individuazione dell'esercizio di competenza - {0} - condominio:{1} - dataPagamento:{2}", ex, Utility.GetMethodDescription(), condominio.ID, dataPagamento.ToShortDateString());
                throw;
            }
        }
Ejemplo n.º 28
0
        public decimal GetSaldoBanca(Condominio condominio)
        {
            var contoBancario = condominio.Conti.FirstOrDefault(conto => conto.Codice == _pianoContiService.GetCodiceContoBancario());

            decimal saldo = 0;
            if (contoBancario != null)
            {
                foreach (var movimento in contoBancario.Movimenti)
                {
                    if (movimento.Segno == "D")
                        saldo += movimento.GetImportoConSegno().GetValueOrDefault();
                    else if (movimento.Segno == "A")
                        saldo -= movimento.GetImportoConSegno().GetValueOrDefault();
                }
            }

            return saldo;
        }
Ejemplo n.º 29
0
        private void addDefault(Condominio item, bool loadContiStudio)
        {
            var annoGestionale = new AnnoGestionale(item, item.AnnoInizio, item.AnnoInizio);
            _daoFactory.GetAnnoGestionaleDao().SaveOrUpdate(annoGestionale);
            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);

            IList<PianoConti> conti = _daoFactory.GetPianoContiDao().GetByAzienda(item.Azienda.ID);
            foreach (PianoConti pianoConto in conti)
            {
                if(pianoConto.IsRequired || loadContiStudio)
                    pianoConto.ConvertToConto(item);
            }
        }
Ejemplo n.º 30
0
        private string loadCondominio(string codiceCondominio, string prefixConto, bool loadContiStudio, TipoSaldi tipoSaldi, Azienda azienda, OleDbConnection conn)
        {
            var message = string.Empty;

            var condominioAdapter = new OleDbDataAdapter("SELECT * FROM Stabili WHERE S_COD_STA=" + codiceCondominio, conn);
            var dsCondomini = new DataSet("Condomini");
            condominioAdapter.Fill(dsCondomini, "Stabili");

            var rowCondominio = dsCondomini.Tables["Stabili"].Rows[0];
            var dataFineEsercizio = (DateTime)rowCondominio["S_FIN_ESE"];

            var condominio = _daoFactory.GetCondominioDao().GetByCodice(codiceCondominio.PadLeft(3, '0'), azienda.ID);
            if (condominio == null)
            {
                condominio = new Condominio(rowCondominio["S_NOME"].ToString(), dataFineEsercizio.Day, dataFineEsercizio.Month, dataFineEsercizio.Year + 1, azienda)
                {
                    Codice = codiceCondominio.PadLeft(3, '0'),
                    Indirizzo = new Address
                                    {
                                        Indirizzo = rowCondominio["S_VIA"].ToString(),
                                        Cap = rowCondominio["S_CAP"].ToString()
                                    }
                };

                // Indirizzo
                if (rowCondominio["S_LOCALITA"] != DBNull.Value && !string.IsNullOrEmpty(rowCondominio["S_LOCALITA"].ToString()))
                {
                    var comuni = _daoFactory.GetComuneDao().GetByDescrizione(rowCondominio["S_LOCALITA"].ToString().Trim());
                    if (comuni.Count == 1)
                        condominio.Indirizzo.Comune = comuni[0];
                    else
                        condominio.Indirizzo.Localita = rowCondominio["S_LOCALITA"].ToString();
                }

                _daoFactory.GetCondominioDao().SaveOrUpdate(condominio);
                addDefault(condominio, loadContiStudio);
            }
            else
            {
                // Eliminazione Movimenti Bancari
                _daoFactory.GetMovimentoBancarioDao().ExecuteQuery("DeleteMovimentiBancari", new[] {new QueryParam("IdCondominio", condominio.ID)});

                _daoFactory.GetCondominioDao().ExecuteQuery("DeleteAnagraficaContabilitaCondominio", new[] {new QueryParam("IdCondominio", condominio.ID)});

                // Eliminazione vecchi dati
                foreach (var unita in _daoFactory.GetUnitaImmobiliareDao().GetByCondominio(condominio.ID))
                {
                    foreach (var mill in unita.Millesimi)
                    {
                        mill.ContoRiferimento.Millesimi.Remove(mill);
                        _daoFactory.GetMillesimoDao().Delete(mill);
                    }
                    unita.Millesimi.Clear();

                    IList<SoggettoCondominio> soggetti = unita.Soggetti.ToList();
                    foreach (var sogg in soggetti)
                    {
                        sogg.UnitaImmobiliare.Soggetti.Remove(sogg);
                        _daoFactory.GetSoggettoCondominioDao().Delete(sogg);
                    }
                    unita.Soggetti.Clear();

                    unita.GruppoStabileRiferimento.UnitaImmobiliari.Remove(unita);
                    _daoFactory.GetUnitaImmobiliareDao().Delete(unita);
                }

                foreach (Palazzina stabileDelete in condominio.Palazzine)
                {
                    foreach (GruppoStabile gruppo in stabileDelete.GruppiStabile)
                    {
                        _daoFactory.GetGruppoStabileDao().Delete(gruppo);
                    }
                    _daoFactory.GetPalazzinaDao().Delete(stabileDelete);
                }
                condominio.Palazzine.Clear();

                var stabileFirst = new Palazzina(condominio, "Stabile A");
                _daoFactory.GetPalazzinaDao().SaveOrUpdate(stabileFirst);

                // Dati Bancari
                foreach (DatiBancariCondomini banca in condominio.DatiBancari)
                {
                    foreach (MovimentoBancario mov in banca.MovimentiBancari)
                        _daoFactory.GetMovimentoBancarioDao().Delete(mov);

                    _daoFactory.GetDatiBancariCondominiDao().Delete(banca);
                }
                condominio.DatiBancari.Clear();

                // Piano Conti
                foreach (Conto contoDelete in condominio.Conti)
                    _daoFactory.GetContoDao().Delete(contoDelete);
                condominio.Conti.Clear();

                // Esercizi
                foreach (Esercizio esercizioDelete in condominio.Esercizi)
                {
                    esercizioDelete.AnnoGestionale.Esercizi.Remove(esercizioDelete);
                    _daoFactory.GetEsercizioDao().Delete(esercizioDelete);
                }
                condominio.Esercizi.Clear();

                // Anno Gestionale
                foreach (AnnoGestionale anno in condominio.AnniGestionali)
                    _daoFactory.GetAnnoGestionaleDao().Delete(anno);
                condominio.AnniGestionali.Clear();

                // -------------------------------------
                //  Default del condominio
                // -------------------------------------
                addDefault(condominio, loadContiStudio);
            }

            if (rowCondominio["S_NOTE"] != DBNull.Value && !string.IsNullOrEmpty(rowCondominio["S_NOTE"].ToString()))
                condominio.Note = rowCondominio["S_NOTE"].ToString();

            if (rowCondominio["S_COD_SIA"] != DBNull.Value && !string.IsNullOrEmpty(rowCondominio["S_COD_SIA"].ToString()))
                condominio.CodiceSIA = rowCondominio["S_COD_SIA"].ToString().Trim();

            if (rowCondominio["S_COD_FISCALE"] != DBNull.Value && !string.IsNullOrEmpty(rowCondominio["S_COD_FISCALE"].ToString()))
                condominio.CodiceFiscale = rowCondominio["S_COD_FISCALE"].ToString().Trim();

            if (rowCondominio["S_IBAN_COMPLETO"] != DBNull.Value && !string.IsNullOrEmpty(rowCondominio["S_IBAN_COMPLETO"].ToString()))
            {
                var datiBancari = new DatiBancariCondomini(rowCondominio["S_IBAN_COMPLETO"].ToString().Trim(), condominio);
                condominio.DatiBancari.Add(datiBancari);
            }
            else if (rowCondominio["S_ABI"] != DBNull.Value && !string.IsNullOrEmpty(rowCondominio["S_ABI"].ToString()) && rowCondominio["S_CAB"] != DBNull.Value && !string.IsNullOrEmpty(rowCondominio["S_CAB"].ToString()) && rowCondominio["S_NR_CC"] != DBNull.Value && !string.IsNullOrEmpty(rowCondominio["S_NR_CC"].ToString()))
            {
                var coor = new CoordinateBancarie
                {
                    Abi = rowCondominio["S_ABI"].ToString().Trim().PadLeft(5, '0'),
                    Cab = rowCondominio["S_CAB"].ToString().Trim().PadLeft(5, '0'),
                    ContoCorrente = rowCondominio["S_NR_CC"].ToString().Trim().PadLeft(12, '0')
                };

                var datiBancari = new DatiBancariCondomini(coor.CalcolaIBAN(), condominio);
                condominio.DatiBancari.Add(datiBancari);
            }

            // Scale
            var stabile = Library.IesiGenericCollections<Palazzina>.GetByIndex(condominio.Palazzine, 0);
            var scala = Library.IesiGenericCollections<GruppoStabile>.GetByIndex(stabile.GruppiStabile, 0);
            var firstScala = true;

            for (int i = 1; i <= 52; i++)
            {
                if (rowCondominio["S_DES_CIV" + i.ToString().PadLeft(2, '0')] != DBNull.Value && !string.IsNullOrEmpty(rowCondominio["S_DES_CIV" + i.ToString().PadLeft(2, '0')].ToString()))
                {
                    if (firstScala && scala != null)
                    {
                        scala.Descrizione = rowCondominio["S_DES_CIV" + i.ToString().PadLeft(2, '0')].ToString();
                        scala.Indirizzo = new Address {Indirizzo = condominio.Indirizzo.Indirizzo};
                        firstScala = false;
                    }
                    else
                    {
                        var scalaNew = new GruppoStabile(stabile, rowCondominio["S_DES_CIV" + i.ToString().PadLeft(2, '0')].ToString()) {Indirizzo = {Indirizzo = condominio.Indirizzo.Indirizzo}};
                        stabile.GruppiStabile.Add(scalaNew);
                        _daoFactory.GetGruppoStabileDao().SaveOrUpdate(scalaNew);
                    }
                }
            }
            if (firstScala && scala != null)
            {
                scala.Indirizzo = new Address {Indirizzo = condominio.Indirizzo.Indirizzo};
            }

            // ----------------------------------------------------------------------------------
            //  Piano dei conti
            // ----------------------------------------------------------------------------------
            var pianoContiAdapter = new OleDbDataAdapter("SELECT * FROM PiaContS WHERE PS_COD_STA=" + codiceCondominio, conn);
            pianoContiAdapter.Fill(dsCondomini, "PianoConti");

            var loadedConti = new Dictionary<int, Conto>();
            var tbPianoConti = dsCondomini.Tables["PianoConti"];
            Conto conto = null;
            var indexConto = 0;
            foreach (DataRow row in tbPianoConti.Rows)
            {
                try
                {
                    conto = loadContoSottoconto(row, condominio, conto, loadedConti, prefixConto, ref indexConto);
                }
                catch (Exception ex)
                {
                    
                    _log.Error("Errore inaspettato nell'importazione di un condominio da YStabili - (Piano dei conti) - " + Library.Utility.GetMethodDescription() + " - PS_CONTO:" + row["PS_CONTO"] + " - PS_SOTTOC:" + row["PS_SOTTOC"], ex);
                    message = "Errore inaspettato nell'importazione di un condominio da YStabili - " + ex.Message;
                    return message;
                }
            }

            // ----------------------------------------------------------------------------------
            //  Anagrafiche
            // ----------------------------------------------------------------------------------
            var unitaAdapter = new OleDbDataAdapter("SELECT * FROM Unita WHERE U_COD_STA=" + codiceCondominio + " ORDER BY U_COD_UNITA", conn);
            var soggettiAdapter = new OleDbDataAdapter("SELECT * FROM Condomini WHERE C_COD_STA=" + codiceCondominio + " ORDER BY C_COD_UNITA", conn);
            unitaAdapter.Fill(dsCondomini, "Unita");
            soggettiAdapter.Fill(dsCondomini, "Condomini");

            var tbUnita = dsCondomini.Tables["Unita"];
            var tbAnagrafiche = dsCondomini.Tables["Condomini"];

            // Unità Immobiliari
            UnitaImmobiliare lastUnita = null;
            var ordineUnita = 0;
            foreach (DataRow row in tbUnita.Rows)
            {
                try
                {
                    var soggetti = tbAnagrafiche.Select("C_COD_STA = " + row["U_COD_STA"] + " AND C_COD_UNITA = " + row["U_COD_UNITA"]);
                    UnitaImmobiliare unitaCorrente;
                    if (soggetti.All(isConduttore) && isConduttore(soggetti[0]))
                        unitaCorrente = lastUnita;
                    else
                    {
                        var indexScala = 0;
                        if (row["U_NR_CIVICO"] != DBNull.Value && !string.IsNullOrEmpty(row["U_NR_CIVICO"].ToString()))
                            indexScala = int.Parse(row["U_NR_CIVICO"].ToString()) - 1;
                        var scalaCorrente = Library.IesiGenericCollections<GruppoStabile>.GetByIndex(stabile.GruppiStabile, indexScala);
                        ordineUnita++;
                        unitaCorrente = new UnitaImmobiliare(scalaCorrente, _daoFactory.GetTipoUnitaImmobiliareDao().GetById(1, false))
                        {
                            Ordine = ordineUnita,
                            Descrizione = "$proprietario1",
                            AziendaID = azienda.ID,
                            CodiceImportazione = row["U_COD_STA"] + "&" + row["U_COD_UNITA"]
                        };
                        lastUnita = unitaCorrente;
                        _daoFactory.GetUnitaImmobiliareDao().SaveOrUpdate(unitaCorrente);
                    }

                    var soggettiCondominio = setSoggettiUnita(unitaCorrente, soggetti);

                    if (soggettiCondominio.Count > 0)
                    {
                        // Saldi inizio esercizio
                        setSaldiInizioEsercizio(row, soggettiCondominio, tipoSaldi);

                        // Millesimi
                        setMillesimi(row, unitaCorrente, loadedConti);
                    }
                }
                catch (Exception ex)
                {
                    
                    _log.Error("Errore inaspettato nell'importazione di un condominio da YStabili - (Unità Immobiliare) - " + Library.Utility.GetMethodDescription() + " - U_COD_STA:" + row["U_COD_STA"] + " - U_COD_UNITA:" + row["U_COD_UNITA"], ex);
                    
                    message = "Errore inaspettato nell'importazione di un condominio da YStabili - " + ex.Message;
                    return message;
                }
            }

            if (string.IsNullOrEmpty(message))
            {
                
                _log.Info("Caricato il condominio: " + codiceCondominio + " - " + condominio.Descrizione + " -- " + Library.Utility.GetMethodDescription());
            }

            return message;
        }