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; }
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 }); } }
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); }
/// <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); }
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); } }
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; }
public AperturaEsercizio(AnnoGestionale annoGestionale, Esercizio esercizio, Conto contoVersamentoCondomini) { AnnoGestionale = annoGestionale; Esercizio = esercizio; ContoVersamentoCondomini = contoVersamentoCondomini; }
private AnnoGestionaleDTO setAnnoGestionaleDto(AnnoGestionale item) { var dto = new AnnoGestionaleDTO { ID = item.ID, AnnoFinale = item.AnnoFinale.GetValueOrDefault(), AnnoIniziale = item.AnnoIniziale.GetValueOrDefault(), IdEsercizioOrdinario = item.EsercizioOrdinario.ID, DisplayName = item.EsercizioOrdinario.DisplayName }; return dto; }
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; }
public Esercizio NuovoEsercizio(int idCondominio, int? annoGestionale, GestioneEsercizioEnum gestione, DateTime dataApertura, DateTime dataChiusura, string descrizione, string note) { AnnoGestionale anno; if (annoGestionale != null) anno = _daoFactory.GetAnnoGestionaleDao().GetById(annoGestionale.Value, false); else { anno = new AnnoGestionale(_daoFactory.GetCondominioDao().GetById(idCondominio, false), dataApertura.Year, dataChiusura.Year); _daoFactory.GetAnnoGestionaleDao().SaveOrUpdate(anno); } var esercizio = new Esercizio(anno.CondominioRiferimento, dataApertura, dataChiusura, anno, gestione) {NoteApertura = note}; _daoFactory.GetEsercizioDao().SaveOrUpdate(esercizio); return esercizio; }
private string loadCondominio(string codiceCondominio, Azienda azienda, OleDbConnection conn) { string message = string.Empty; // =========================================================================================================== // Lettura Tabelle // =========================================================================================================== // ---------------------------------------------------------------------------------- // Condomini // ---------------------------------------------------------------------------------- var condominioAdapter = new OleDbDataAdapter("SELECT * FROM TabCondomìni WHERE TabCondomìni.Codice = '" + codiceCondominio + "'", conn); var dsCondomini = new DataSet("Condomini"); condominioAdapter.Fill(dsCondomini, "TabCondomìni"); if (dsCondomini.Tables["TabCondomìni"].Rows.Count > 0) { var rowCondominio = dsCondomini.Tables["TabCondomìni"].Rows[0]; var esercizioAdapter = new OleDbDataAdapter("SELECT * FROM TabEsercizi WHERE idCondominio = " + rowCondominio["id"] + " AND TabEsercizi.Attivo = True AND TabEsercizi.Straordinario = False AND (TabEsercizi.Nome LIKE 'ORDINARIO%' OR TabEsercizi.Nome LIKE '0RDINARIO%') ORDER BY DataF DESC", conn); esercizioAdapter.Fill(dsCondomini, "TabEsercizi"); if (dsCondomini.Tables["TabEsercizi"].Rows.Count > 0) { var rowEsercizio = dsCondomini.Tables["TabEsercizi"].Rows[0]; var dataInizioEsercizio = (DateTime)rowEsercizio["DataI"]; var dataFineEsercizio = (DateTime)rowEsercizio["DataF"]; Condominio condominio = _daoFactory.GetCondominioDao().GetByCodice(codiceCondominio.PadLeft(3, '0'), azienda.ID); if (condominio == null) { condominio = new Condominio(rowCondominio["Nome"].ToString(), dataFineEsercizio.Day, dataFineEsercizio.Month, dataFineEsercizio.Year + 1, azienda) {Codice = codiceCondominio.PadLeft(3, '0')}; _daoFactory.GetCondominioDao().SaveOrUpdate(condominio); addDefault(condominio); } else { // ====================================================================================== // Eliminazione vecchi dati // ====================================================================================== foreach (UnitaImmobiliare unita in _daoFactory.GetUnitaImmobiliareDao().GetByCondominio(condominio.ID)) { foreach (Millesimo mill in unita.Millesimi) { mill.UnitaRiferimento = null; mill.ContoRiferimento = null; } unita.Millesimi.Clear(); unita.GruppoStabileRiferimento.UnitaImmobiliari.Remove(unita); _daoFactory.GetUnitaImmobiliareDao().Delete(unita); } foreach (Palazzina stabileDelete in condominio.Palazzine) { foreach (GruppoStabile gruppo in stabileDelete.GruppiStabile) gruppo.PalazzinaRiferimento = null; stabileDelete.CondominioRiferimento = null; } 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) { mov.Condominio = null; mov.Banca = null; mov.Fornitore = null; mov.Esercizio = null; mov.File = null; } banca.CondominioRiferimento = null; } condominio.DatiBancari.Clear(); // Piano Conti foreach (Conto contoDelete in condominio.Conti) { contoDelete.CondominioRiferimento = null; contoDelete.Millesimi.Clear(); } condominio.Conti.Clear(); // Modelli Ripartizione foreach (ModelloRegistrazioneContabile modello in condominio.ModelliRegistrazioneContabile) modello.CondominioRiferimento = null; condominio.ModelliRegistrazioneContabile.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(); // ====================================================================================== condominio.Descrizione = rowCondominio["Nome"].ToString(); // ====================================================================================== // Default del condominio // ====================================================================================== // Conti comuni del Piano dei conti IList<PianoConti> conti = _daoFactory.GetPianoContiDao().GetByAzienda(azienda.ID); foreach (PianoConti pianoConto in conti) { if(pianoConto.IsRequired) pianoConto.ConvertToConto(condominio); } // Nuovo esercizio DateTime inizioEsercizioOld = dataInizioEsercizio; DateTime fineEsercizioOld = dataFineEsercizio; 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, Sfera.Enums.GestioneEsercizioEnum.Ordinario); _daoFactory.GetEsercizioDao().SaveOrUpdate(esercizioNew); } condominio.CodiceImportazione = rowCondominio["id"].ToString().Trim(); if (rowCondominio["Note"] != DBNull.Value && !string.IsNullOrEmpty(rowCondominio["Note"].ToString())) condominio.Note = rowCondominio["Note"].ToString(); if (rowCondominio["CF"] != DBNull.Value && !string.IsNullOrEmpty(rowCondominio["CF"].ToString())) condominio.CodiceFiscale = rowCondominio["CF"].ToString().Trim(); // ---------------------------- // Banche // ---------------------------- var bancheCondominiAdapter = new OleDbDataAdapter("SELECT * FROM TabBanche INNER JOIN TabBanche_Condomìni ON TabBanche.id = TabBanche_Condomìni.idBanca WHERE TabBanche_Condomìni.idCondominio = " + rowCondominio["id"], conn); bancheCondominiAdapter.Fill(dsCondomini, "Banche"); foreach (DataRow rowBanca in dsCondomini.Tables["Banche"].Rows) { try { if (rowBanca["TabBanche_Condomìni.Attivo"] != DBNull.Value && (bool)rowBanca["TabBanche_Condomìni.Attivo"]) { DatiBancariCondomini datiBancari = null; if (rowBanca["CodSiaOrdinante"] != DBNull.Value && !string.IsNullOrEmpty(rowBanca["CodSiaOrdinante"].ToString())) condominio.CodiceSIA = rowBanca["CodSiaOrdinante"].ToString().Trim(); if (rowBanca["IBAN"] != DBNull.Value && !string.IsNullOrEmpty(rowBanca["IBAN"].ToString())) { datiBancari = new DatiBancariCondomini(rowBanca["IBAN"].ToString().Trim().Replace(" ", ""), condominio); condominio.DatiBancari.Add(datiBancari); _daoFactory.GetDatiBancariCondominiDao().SaveOrUpdate(datiBancari); } else if (rowBanca["Abi"] != DBNull.Value && !string.IsNullOrEmpty(rowBanca["Abi"].ToString()) && rowBanca["Cab"] != DBNull.Value && !string.IsNullOrEmpty(rowBanca["Cab"].ToString()) && rowBanca["CC"] != DBNull.Value && !string.IsNullOrEmpty(rowBanca["CC"].ToString())) { var coor = new CoordinateBancarie { Abi = rowBanca["Abi"].ToString().Trim().PadLeft(5, '0'), Cab = rowBanca["Cab"].ToString().Trim().PadLeft(5, '0'), ContoCorrente = rowBanca["CC"].ToString().Trim().PadLeft(12, '0') }; datiBancari = new DatiBancariCondomini(coor.CalcolaIBAN(), condominio); condominio.DatiBancari.Add(datiBancari); _daoFactory.GetDatiBancariCondominiDao().SaveOrUpdate(datiBancari); } if (datiBancari != null && rowBanca["Predefinito"] != DBNull.Value) { datiBancari.Principale = (bool)rowBanca["Predefinito"]; datiBancari.CodiceImportazione = rowBanca["TabBanche_Condomìni.id"].ToString().Trim(); } if (datiBancari != null) datiBancari.Note = rowBanca["NomeCC"].ToString().Trim(); } } catch (Exception ex) { _log.Error("Errore inaspettato nell'importazione di un condominio da GeCo: " + Library.Utility.GetMethodDescription() + " (Banche) - banca:" + rowBanca["id"], ex); throw; } } // Se ho una sola coordinata bancaria questa è la principale if (condominio.DatiBancari.Count == 1) Library.IesiGenericCollections<DatiBancariCondomini>.GetByIndex(condominio.DatiBancari, 0).Principale = true; // ---------------------------- // Stabili/Scale // ---------------------------- var stabiliScaleAdapter = new OleDbDataAdapter("SELECT DISTINCT TabIndirizzi.*, TabEdifici.*, TabIndirizzi_Condomìni.idCondominio, TabCodComune.Nome " + "FROM TabEdifici INNER JOIN " + "((TabCodComune INNER JOIN " + "(TabIndirizzi INNER JOIN " + "TabIndirizzi_Condomìni ON TabIndirizzi.id = TabIndirizzi_Condomìni.idIndirizzo) ON TabCodComune.id = TabIndirizzi.idComune) INNER JOIN TabLocali ON TabIndirizzi_Condomìni.id = TabLocali.idIndirizzoCondominio) ON TabEdifici.id = TabLocali.idEdificio " + "WHERE TabIndirizzi_Condomìni.idCondominio = " + rowCondominio["id"] + " " + "ORDER BY TabIndirizzi_Condomìni.idCondominio, TabIndirizzi.id", conn); stabiliScaleAdapter.Fill(dsCondomini, "StabiliScale"); int numeroUnitaImmobiliari = 0; bool first = true; var stabile = Library.IesiGenericCollections<Palazzina>.GetByIndex(condominio.Palazzine, 0); var descrizioneStabile = string.Empty; Address indirizzoStabile = null; IList<NameValueDTO<int, string>> listaPersone = _daoFactory.GetPersonaDao().GetByQueryDTO<NameValueDTO<int, string>>("SELECT new NameValueDTOIntString(PERS.ID, PERS.CodiceImportazione) FROM Persona PERS WHERE PERS.AziendaID = :azienda", new[] { new QueryParam("azienda", azienda.ID) }); foreach (DataRow rowStabile in dsCondomini.Tables["StabiliScale"].Rows) { try { GruppoStabile newScala; if (first) { newScala = Library.IesiGenericCollections<GruppoStabile>.GetByIndex(stabile.GruppiStabile, 0); newScala.Descrizione = rowStabile["TabEdifici.Nome"].ToString(); } else { newScala = new GruppoStabile(stabile, rowStabile["TabEdifici.Nome"].ToString()); _daoFactory.GetGruppoStabileDao().SaveOrUpdate(newScala); } newScala.Descrizione = rowStabile["TabEdifici.Nome"].ToString(); newScala.Indirizzo = getIndirizzo(rowStabile); newScala.CodiceImportazione = rowStabile["TabEdifici.id"].ToString().Trim(); newScala.Note = rowStabile["TabEdifici.Note"].ToString().Trim() + Environment.NewLine + rowStabile["TabIndirizzi.Note"].ToString().Trim(); descrizioneStabile += rowStabile["TabIndirizzi.Nome"].ToString().Trim() + " "; if (indirizzoStabile == null) indirizzoStabile = (Address)newScala.Indirizzo.Clone(); // Unità Immobiliari message += loadUnitaImmobiliari((int)rowEsercizio["id"], newScala, (int)rowStabile["TabEdifici.id"], dataInizioEsercizio, listaPersone, conn); numeroUnitaImmobiliari += newScala.UnitaImmobiliari.Count; first = false; } catch (Exception ex) { _log.Error("Errore inaspettato nell'importazione di un condominio da GeCo: " + Library.Utility.GetMethodDescription() + " (Scale) - indirizzo:" + rowStabile["TabIndirizzi.id"], ex); throw; } } stabile.Descrizione = descrizioneStabile.Trim(); stabile.Indirizzo = indirizzoStabile; if (stabile.Indirizzo != null) condominio.Indirizzo = (Address)stabile.Indirizzo.Clone(); condominio.NumeroUnitaImmobiliari = numeroUnitaImmobiliari; // =================================== // Piano dei conti // =================================== var pianoContiAdapter = new OleDbDataAdapter("SELECT TabCapitoli.*, TabEsercizi.idCondominio " + "FROM TabEsercizi INNER JOIN TabCapitoli ON TabEsercizi.id = TabCapitoli.idEsercizio " + "WHERE TabEsercizi.Attivo = true AND TabEsercizi.Straordinario = false AND TabEsercizi.id = " + rowEsercizio["id"] + " " + "ORDER BY TabCapitoli.Codice", conn); pianoContiAdapter.Fill(dsCondomini, "PianoConti"); var loadedConti = new List<Conto>(); DataTable tbPianoConti = dsCondomini.Tables["PianoConti"]; int ordineConto = 0; foreach (DataRow row in tbPianoConti.Rows) { try { var conto = new Conto(condominio, Sfera.Enums.TipoContoEconomicoEnum.Economico, Sfera.Enums.TipoPeriodoCompetenzaContabile.Esercizio, row["Nome"].ToString(), true, true, false); _daoFactory.GetContoDao().SaveOrUpdate(conto); string codice = row["Codice"].ToString().Trim(); if (!string.IsNullOrEmpty(codice)) { conto.Codice = codice.Length > 2 ? codice.Substring(0, 2).PadLeft(3, '0') : codice.PadLeft(3, '0'); } conto.PresenteBilancio = true; conto.CodiceImportazione = row["id"].ToString(); ordineConto++; conto.Ordine = ordineConto; loadedConti.Add(conto); dsCondomini = new DataSet(); var sottoContiAdapter = new OleDbDataAdapter("SELECT * FROM TabSottoCapitoli WHERE TabSottoCapitoli.idCapitolo = " + row["id"], conn); sottoContiAdapter.Fill(dsCondomini, "SottoConti"); var ordineSottoConto = 0; foreach (DataRow rowSottoConto in dsCondomini.Tables["SottoConti"].Rows) { try { var sottoConto = new SottoConto(conto, rowSottoConto["Nome"].ToString()) {CodiceImportazione = rowSottoConto["id"].ToString()}; ordineSottoConto++; sottoConto.Codice = conto.Codice + "." + ordineSottoConto.ToString().PadLeft(3, '0'); _daoFactory.GetSottoContoDao().SaveOrUpdate(sottoConto); } catch (Exception ex) { _log.Error("Errore inaspettato nell'importazione di un condominio da GeCo: " + Library.Utility.GetMethodDescription() + " (Sotto Conti) - sottoconto:" + rowSottoConto["id"], ex); throw; } } } catch (Exception ex) { _log.Error("Errore inaspettato nell'importazione di un condominio da GeCo: " + Library.Utility.GetMethodDescription() + " (Piano dei conti) - conto:" + row["id"], ex); throw; } } // =================================== // Millesimi // =================================== try { var unitaCondominio = _daoFactory.GetUnitaImmobiliareDao().GetByCondominio(condominio.ID); foreach (Conto conto in loadedConti) { try { dsCondomini = new DataSet(); var millesimiAdapter = new OleDbDataAdapter("SELECT * " + "FROM (TabMillesimi INNER JOIN TabMillesimiLocali ON TabMillesimi.id = TabMillesimiLocali.idTabMillesimi) INNER JOIN TabCapitoli ON TabMillesimi.id = TabCapitoli.idTabMillesimi " + "WHERE TabMillesimi.idEsercizio = " + rowEsercizio["id"].ToString().Trim() + " AND TabCapitoli.id = " + conto.CodiceImportazione.Trim() + ";", conn); millesimiAdapter.Fill(dsCondomini, "Millesimi"); foreach (DataRow rowMillesimo in dsCondomini.Tables["Millesimi"].Rows) { try { if ((float)rowMillesimo["PercProp"] > 0) { //string hql = "FROM UnitaImmobiliare UNI WHERE UNI.CodiceImportazione = :codice"; //IList<UnitaImmobiliare> listaUnita = _daoFactory.GetUnitaImmobiliareDao().GetByQuery(hql, new QueryParam[] { new QueryParam("codice", rowMillesimo["idLocale"].ToString().Trim()) }); IList<UnitaImmobiliare> listaUnita = (from item in unitaCondominio where item.CodiceImportazione == rowMillesimo["idLocale"].ToString().Trim() select item).ToList(); if (listaUnita.Count > 0) { var newMillesimo = new Millesimo(conto, listaUnita[0]) { Valore = Convert.ToDecimal((float) rowMillesimo["Mill"]), CodiceImportazione = rowMillesimo["TabMillesimiLocali.id"].ToString().Trim() }; _daoFactory.GetMillesimoDao().SaveOrUpdate(newMillesimo); if (listaUnita[0].GetConduttorePrincipale(dataInizioEsercizio) != null) { var percentualeProp = Convert.ToDecimal((float)rowMillesimo["PercProp"]) / 100m; new SoggettoCondominioRipartizione(conto, listaUnita[0].GetProprietarioPrincipale(dataInizioEsercizio), percentualeProp); new SoggettoCondominioRipartizione(conto, listaUnita[0].GetConduttorePrincipale(dataInizioEsercizio), 1 - percentualeProp); } } } } catch (Exception ex) { _log.Error("Errore inaspettato nell'importazione di un condominio da GeCo: " + Library.Utility.GetMethodDescription() + " (Millesimi) - millesimo:" + rowMillesimo["TabMillesimiLocali.id"].ToString().Trim(), ex); throw; } } } catch (Exception ex) { _log.Error("Errore inaspettato nell'importazione di un condominio da GeCo: " + Library.Utility.GetMethodDescription() + " (Millesimi) - conto:" + conto.CodiceImportazione, ex); throw; } } } catch (Exception ex) { _log.Error("Errore inaspettato nell'importazione di un condominio da GeCo: " + Library.Utility.GetMethodDescription() + " (Millesimi) - condominio:" + codiceCondominio, ex); throw; } // =================================== // Regole di ripartizione // =================================== try { var regoleAdapter = new OleDbDataAdapter("SELECT TabRegoleRipartizione.Nome, TabRegoleRipartizione.Note, TabRegoleRipartizione.idEsercizio, TabDettagliRegoleRipartizione.* " + "FROM TabRegoleRipartizione INNER JOIN TabDettagliRegoleRipartizione ON TabRegoleRipartizione.id = TabDettagliRegoleRipartizione.idRegola " + "WHERE TabRegoleRipartizione.idEsercizio = " + rowEsercizio["id"].ToString().Trim() + ";", conn); regoleAdapter.Fill(dsCondomini, "Regole"); int lastIdModello = 0; ModelloRegistrazioneContabile lastModello = null; foreach (DataRow rowRegola in dsCondomini.Tables["Regole"].Rows) { try { var hql = "FROM Conto C WHERE C.CodiceImportazione = :codice"; var listaConti = _daoFactory.GetContoDao().GetByQuery(hql, new[] { new QueryParam("codice", rowRegola["idCapitolo"].ToString().Trim()) }); if (listaConti.Count > 0) { var hqlSottoConto = "FROM SottoConto S WHERE S.CodiceImportazione = :codice"; var listaSottoConti = _daoFactory.GetSottoContoDao().GetByQuery(hqlSottoConto, new[] { new QueryParam("codice", rowRegola["idSottoCapitolo"].ToString().Trim()) }); if (listaSottoConti.Count > 0) { if ((int)rowRegola["idRegola"] != lastIdModello) { var modello = new ModelloRegistrazioneContabile(condominio, rowRegola["Nome"].ToString(), null) { CodiceImportazione = rowRegola["idRegola"].ToString().Trim() }; lastIdModello = (int)rowRegola["idRegola"]; lastModello = modello; _daoFactory.GetModelloRegistrazioneContabileDao().SaveOrUpdate(modello); } var contoModello = new ContiModelloRegistrazioneContabile(lastModello, listaConti[0], listaSottoConti[0], Convert.ToDecimal((float)rowRegola["Perc"])/100m, null) {CodiceImportazione = rowRegola["id"].ToString().Trim()}; _daoFactory.GetContiModelloRegistrazioneContabileDao().SaveOrUpdate(contoModello); } } } catch (Exception ex) { _log.Error("Errore inaspettato nell'importazione di un condominio da GeCo: " + Library.Utility.GetMethodDescription() + " (Regole Ripartizione) - regola:" + rowRegola["idRegola"].ToString().Trim(), ex); throw; } } } catch (Exception ex) { _log.Error("Errore inaspettato nell'importazione di un condominio da GeCo: " + Library.Utility.GetMethodDescription() + " (Regole Ripartizione)", ex); throw; } } else { message = "Non è stato trovato alcun esercizio Ordinario importabile per il condominio: " + codiceCondominio + " - " + rowCondominio["Nome"]; _log.Error(message + " - " + Library.Utility.GetMethodDescription()); } } else { message = "Non è stato trovato il condominio: " + codiceCondominio; _log.Error(message + " - " + Library.Utility.GetMethodDescription()); } return message; }