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 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; }
/// <summary> /// Crea un Riparto Bollette valido /// </summary> public RipartoBollette(TestataRipartoBollette testata, UnitaImmobiliare unita) { UnitaImmobiliare = unita; Testata = testata; if (Testata != null) Testata.Riparto.Add(this); }
public RendicontoAnnualeUnita(RendicontoAnnualeConto conto, UnitaImmobiliare unita, decimal? importo) { Conto = conto; Unita = unita; Importo = importo; if (Conto != null) Conto.DettagliUnita.Add(this); }
public UnitaImmobiliareDettaglio(UnitaImmobiliare unita, TipoUnitaImmobiliare tipoUnita, int numero) { TipoUnita = tipoUnita; Numero = numero; Unita = unita; if (Unita != null) Unita.Dettaglio.Add(this); }
/// <summary> /// Crea un Subentro valido /// </summary> public SubentroUnitaImmobiliare(Subentro subentro, UnitaImmobiliare unita, SoggettoCondominio soggettoEntrante, SoggettoCondominio soggettoUscente) { Subentro = subentro; Unita = unita; SoggettoEntrante = soggettoEntrante; SoggettoUscente = soggettoUscente; if (Subentro != null) Subentro.UnitaImmobiliari.Add(this); }
/// <summary> /// Crea una lettura di contatore valida. /// </summary> public LetturaContatore(Contatore contatore, UnitaImmobiliare unitaImmobiliare, DateTime data, decimal valore) { Contatore = contatore; Data = data; Valore = valore; UnitaImmobiliare = unitaImmobiliare; if (Contatore != null) Contatore.Letture.Add(this); }
/// <summary> /// Crea uno Stabile valido /// </summary> public Millesimo(Conto contoRiferimento, UnitaImmobiliare unita) { _unitaRiferimento = unita; _contoRiferimento = contoRiferimento; if (contoRiferimento != null) { contoRiferimento.Millesimi.Add(this); unita.Millesimi.Add(this); } }
/// <summary> /// Crea una Spesa Unità valida /// </summary> public SpeseUnita(decimal? importo, UnitaImmobiliare unita, SoggettoCondominio soggettoCondominio, RipartizioneSpesa ripartizioneSpesa) { _importo = importo; _unitaRiferimento = unita; _soggettoCondominio = soggettoCondominio; if (ripartizioneSpesa != null) { _ripartizioneSpesa = ripartizioneSpesa; _ripartizioneSpesa.DettaglioRipartizione.Add(this); } }
/// <summary> /// Crea una Spesa Unità valida /// </summary> public SpeseUnita(decimal? importo, UnitaImmobiliare unita, SoggettoCondominio soggettoCondominio, MovimentoContabile movimento) { _importo = importo; _unitaRiferimento = unita; _soggettoCondominio = soggettoCondominio; if (movimento != null) { _movimentoRiferimento = movimento; _movimentoRiferimento.DettaglioRipartizione.Add(this); } }
public UnitaImmobiliareImpiantistica(UnitaImmobiliare unita, string tipo, bool norma) { Tipo = tipo; Norma = norma; Unita = unita; if (Unita != null) { if(Unita.CondizioniSicurezzaImpianto == null) Unita.CondizioniSicurezzaImpianto = new SicurezzaImpianto(); Unita.CondizioniSicurezzaImpianto.Impiantistica.Add(this); } }
/// <summary> /// Crea un Proprietario valido /// </summary> public Proprietario(UnitaImmobiliare unitaImmobiliare, Persona persona) : base(unitaImmobiliare, persona) { if (unitaImmobiliare != null) { unitaImmobiliare.Proprietari.Add(this); unitaImmobiliare.Soggetti.Add(this); if (unitaImmobiliare.Proprietari.Count == 1) { PercentualeRiferimento = 100m; Principale = true; } } }
/// <summary> /// Crea un Conduttore valido /// </summary> public Conduttore(UnitaImmobiliare unitaImmobiliare, Persona persona) : base(unitaImmobiliare, persona) { if (unitaImmobiliare != null) { unitaImmobiliare.Conduttori.Add(this); unitaImmobiliare.Soggetti.Add(this); if (unitaImmobiliare.Conduttori.Count == 1) { this.PercentualeRiferimento = 100m; this.Principale = true; } } }
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; }
private IList<SoggettoCondominio> setSoggettiUnita(UnitaImmobiliare unita, DataRow rowUnita, DataRow[] condomini, Dictionary<int, SoggettoCondominio> loadedSoggetti) { try { var soggetti = new List<SoggettoCondominio>(condomini.Length); foreach (var row in condomini) { // Persona // --------- string cognomePersona = row["NOME"].ToString().Trim(); if (!string.IsNullOrEmpty(cognomePersona)) { Persona persona = null; if (!string.IsNullOrEmpty(cognomePersona) && _personeCondominio.ContainsKey(cognomePersona)) persona = _personeCondominio[cognomePersona]; if (persona == null) { persona = new Persona(Sfera.Enums.TipoPersonaEnum.Fisica, string.Empty, cognomePersona, unita.GruppoStabileRiferimento.PalazzinaRiferimento.CondominioRiferimento.Azienda.ID, false) { IndirizzoResidenza = new Address {Indirizzo = row["VIA"].ToString(), Cap = row["CAP"].ToString()} }; if (row["CODFISC"] != DBNull.Value && !string.IsNullOrEmpty(row["CODFISC"].ToString())) persona.CodiceFiscale = row["CODFISC"].ToString(); if (row["PIVA"] != DBNull.Value && !string.IsNullOrEmpty(row["PIVA"].ToString())) persona.PartitaIva = row["PIVA"].ToString(); if (row["TITOLO"] != DBNull.Value && !string.IsNullOrEmpty(row["TITOLO"].ToString())) persona.Titolo = row["TITOLO"].ToString(); persona.CodiceImportazione = row["CODITTA"] + "&" + row["CODSTAB"] + "&" + row["ESERCIZIO"] + "&" + row["CODPOS"]; if (row["LOC"] != DBNull.Value && !string.IsNullOrEmpty(row["LOC"].ToString())) { IList<Comune> comuni = _daoFactory.GetComuneDao().GetByDescrizione(row["LOC"].ToString().Trim()); if (comuni.Count == 1) persona.IndirizzoResidenza.Comune = comuni[0]; else { DataRow row1 = row; var comuniDescr = comuni.Where(item => item.Descrizione.Trim().ToUpper() == row1["LOC"].ToString().Trim().ToUpper()).ToList(); int count = comuniDescr.Count(); if (count == 1) persona.IndirizzoResidenza.Comune = comuniDescr.SingleOrDefault(); } if (persona.IndirizzoResidenza.Comune == null) persona.IndirizzoResidenza.Localita = row["LOC"].ToString(); } if (row["TEL1"] != DBNull.Value && !string.IsNullOrEmpty(row["TEL1"].ToString().Trim())) persona.Contatti.Add(new Telefono(row["TEL1"].ToString(), true, persona)); if (row["TEL2"] != DBNull.Value && !string.IsNullOrEmpty(row["TEL2"].ToString().Trim())) persona.Contatti.Add(new Telefono(row["TEL2"].ToString(), false, persona)); if (row["E-MAIL"] != DBNull.Value && !string.IsNullOrEmpty(row["E-MAIL"].ToString().Trim())) persona.Contatti.Add(new Email(row["E-MAIL"].ToString(), true, persona)); _daoFactory.GetPersonaDao().SaveOrUpdate(persona); _personeCondominio.Add(cognomePersona, persona); } // Soggetto Condominio SoggettoCondominio soggetto; if (isConduttore(row)) { soggetto = new Conduttore(unita, persona) {PercentualeRiferimento = 100, Principale = true}; if (unita.Descrizione == "$proprietario1") unita.Descrizione += " - $conduttore1"; } else soggetto = new Proprietario(unita, persona); soggetti.Add(soggetto); int progressivoSoggetto = Convert.ToInt32(rowUnita["CODPOS"]); if (progressivoSoggetto == Convert.ToInt32(rowUnita["RAGRUP1"])) { if (!loadedSoggetti.ContainsKey(progressivoSoggetto)) loadedSoggetti.Add(progressivoSoggetto, soggetto); } else if (loadedSoggetti.ContainsKey(progressivoSoggetto)) soggetto.SoggettoPrincipale = loadedSoggetti[progressivoSoggetto]; _daoFactory.GetSoggettoCondominioDao().SaveOrUpdate(soggetto); } } if (unita.Proprietari.Count == 0) { var codRagrup = Convert.ToInt32(rowUnita["RAGRUP1"]); if (codRagrup < 8100 && loadedSoggetti.ContainsKey(codRagrup)) { var personaProp = loadedSoggetti[codRagrup].Persona; var prop = new Proprietario(unita, personaProp) {PercentualeRiferimento = 1, Principale = true}; _daoFactory.GetSoggettoCondominioDao().SaveOrUpdate(prop); } } return soggetti; } catch (Exception ex) { _log.Error("Errore inaspettato nell'importazione di un condominio da CONDOR: " + Library.Utility.GetMethodDescription(), ex); throw; } }
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; }
private IList<SoggettoCondominio> setSoggettiUnita(UnitaImmobiliare unita, ICollection<DataRow> condomini) { try { var soggetti = new List<SoggettoCondominio>(condomini.Count); foreach (var row in condomini) { // Persona // --------- var nomePersona = row["C_NOME"].ToString(); Persona persona = null; if(!string.IsNullOrEmpty(nomePersona) && _personeCondominio.ContainsKey(nomePersona)) persona = _personeCondominio[nomePersona]; if (persona == null) { var tipoPersona = row["C_TIT_ONOR"].ToString() == "1" ? TipoPersonaEnum.Giuridica : TipoPersonaEnum.Fisica; persona = new Persona(tipoPersona, string.Empty, nomePersona, unita.GruppoStabileRiferimento.PalazzinaRiferimento.CondominioRiferimento.Azienda.ID, false) { IndirizzoResidenza = new Address { Indirizzo = row["C_VIA"].ToString(), Cap = row["C_CAP"].ToString() }, CodiceImportazione = row["C_COD_STA"] + "&" + row["C_COD_UNITA"] + "&" + row["C_COD_COND"] }; if (row["C_LOCALITA"] != DBNull.Value && !string.IsNullOrEmpty(row["C_LOCALITA"].ToString())) { var comuni = _daoFactory.GetComuneDao().GetByDescrizione(row["C_LOCALITA"].ToString().Trim()); if (comuni.Count == 1) persona.IndirizzoResidenza.Comune = comuni[0]; else persona.IndirizzoResidenza.Localita = row["C_LOCALITA"].ToString(); } if (row["C_NOTE"] != DBNull.Value && !string.IsNullOrEmpty(row["C_NOTE"].ToString())) persona.Note = row["C_NOTE"].ToString(); if (row["C_PRESSO"] != DBNull.Value && !string.IsNullOrEmpty(row["C_PRESSO"].ToString())) persona.IndirizzoResidenza.Presso = row["C_PRESSO"].ToString(); if (row["C_TEL"] != DBNull.Value && !string.IsNullOrEmpty(row["C_TEL"].ToString())) persona.Contatti.Add(new Telefono(row["C_TEL"].ToString(), true, persona)); if (row["C_TEL2"] != DBNull.Value && !string.IsNullOrEmpty(row["C_TEL"].ToString())) persona.Contatti.Add(new Telefono(row["C_TEL2"].ToString(), false, persona)); if (row["C_EMAIL"] != DBNull.Value && !string.IsNullOrEmpty(row["C_EMAIL"].ToString())) persona.Contatti.Add(new Email(row["C_EMAIL"].ToString(), true, persona)); if (row["C_EMAIL_CERT"] != DBNull.Value && !string.IsNullOrEmpty(row["C_EMAIL_CERT"].ToString())) persona.Contatti.Add(new EmailCertificata(row["C_EMAIL_CERT"].ToString(), false, persona)); if (row["C_CELLULARE"] != DBNull.Value && !string.IsNullOrEmpty(row["C_CELLULARE"].ToString())) persona.Contatti.Add(new Cellulare(row["C_CELLULARE"].ToString(), true, persona)); _daoFactory.GetPersonaDao().SaveOrUpdate(persona); _personeCondominio.Add(nomePersona, persona); } // Soggetto Condominio SoggettoCondominio soggetto; if (isConduttore(row)) { soggetto = new Conduttore(unita, persona) {PercentualeRiferimento = 100, Principale = true}; if (unita.Descrizione == "$proprietario1") unita.Descrizione += " - $conduttore1"; } else { soggetto = new Proprietario(unita, persona); if (row["C_TIPO_COND"].ToString() == "CONS") soggetto.Consigliere = true; if (row["C_PERC_POSS"].ToString() == "100") { soggetto.PercentualeRiferimento = 100; soggetto.Principale = true; } } soggetti.Add(soggetto); _daoFactory.GetSoggettoCondominioDao().SaveOrUpdate(soggetto); } return soggetti; } catch (Exception ex) { _log.Error("Errore inaspettato nell'importazione di un condominio da YStabili - " + Library.Utility.GetMethodDescription(), ex); throw; } }
/// <summary> /// Crea un Proprietario valido /// </summary> public SoggettoCondominio(UnitaImmobiliare unitaImmobiliare, Persona persona) { UnitaImmobiliare = unitaImmobiliare; Persona = persona; VersamentoMav = true; }
private void setMillesimi(DataRow row, UnitaImmobiliare unita, Dictionary<int, Conto> loadedConti) { for (int i = 1; i <= 20; i++) { if (row["U_MIL" + i.ToString().PadLeft(2, '0')] != DBNull.Value && !string.IsNullOrEmpty(row["U_MIL" + i.ToString().PadLeft(2, '0')].ToString())) { decimal valoreMillesimo = Convert.ToDecimal((double)row["U_MIL" + i.ToString().PadLeft(2, '0')]); if (valoreMillesimo > 0 && loadedConti.ContainsKey(i)) { if (_daoFactory.GetMillesimoDao().GetByContoSoggetto(loadedConti[i].ID, unita.ID) == null) { new Millesimo(loadedConti[i], unita) {Valore = valoreMillesimo}; } } } } }
public void SetUp() { _azienda = new Azienda("PROVA", "Azienda di prova") {ID=1}; _aziendaDestinazione = new Azienda("DEST", "Azienda di destinazione") { ID = 2 }; _condominio = new Condominio("Condominio ABC", 31, 12, 2015, _azienda) { ID = 1, Codice = "COND01", CodiceCUC = "CUC123456", CodiceSIA = "SIA12", AnnoInizio = 2015, CodiceFiscale = "012365477859", CodiceCalcoloTariffaAcqua = "TAR01" }; _condominio.Palazzine.Clear(); _esercizio = new EsercizioDTO { Descrizione = "Primo Esercizio", DataApertura = new DateTime(2016, 6, 1), DataChiusura = new DateTime(2017, 5, 31) }; _banca01 = new DatiBancariCondomini("12345", "12345", "123456789012", "A", _condominio) {Iban = "IT02L1234512345123456789012" }; _banca02 = new DatiBancariCondomini("03268", "10001", "100000000000", "A", _condominio) { Iban = "IT11X03268100001100000000000" }; _stabile01 = new Palazzina(_condominio, "Stabile 01") {ID=1}; _stabile01.GruppiStabile.Clear(); _condominio.Palazzine.Add(_stabile01); var comune = new Comune("A944", "Bologna", new Provincia("BO", new Regione("Emilia Romagna"))); _gruppoStabile01 = new GruppoStabile(_stabile01, "Scala 01") { ID = 1, Ordine = 1, Note = "Note per Scala01", Indirizzo = new Address { Cap = "40131", Civico = "SCA/1", Indirizzo = "Via Scala01", Localita = "Scaletta01", Comune = comune } }; _gruppoStabile02 = new GruppoStabile(_stabile01, "Scala 02") { ID = 2, Ordine = 2, Note = "Note per Scala02", Indirizzo = new Address { Cap = "40132", Civico = "SCA/2", Indirizzo = "Via Scala02", Localita = "Scaletta02", Comune = comune } }; _condominio.Indirizzo = new Address { Indirizzo = "via dei Fiori", Cap = "40100", Civico = "23", Localita = "Pioppa", Comune = comune }; var listaTipoUnitaImmobiliare = new List<TipoUnitaImmobiliare> { new TipoUnitaImmobiliare("Tipo01") {ID = 1}, new TipoUnitaImmobiliare("Tipo02") {ID = 2} }; var fornitore = new Fornitore(new Persona(TipoPersonaEnum.Giuridica, "Franco", "Livoresi", _azienda.ID, true) {PartitaIva = "01867511204"}, _azienda.ID) {ID =1}; var fornitore01 = new Fornitore(new Persona(TipoPersonaEnum.Giuridica, "Luigi", "Majorana", _azienda.ID, true) { PartitaIva = "01230460394" }, _azienda.ID) {ID = 2}; var agenziaAssicurativa = new AgenziaAssicurativa(new Persona(TipoPersonaEnum.Giuridica, "", "Agenzia Bologna", _azienda.ID, true) { PartitaIva = "03211600402" }, fornitore01, "Agenzia BO", _azienda.ID) {ID = 3}; var tipoContratto = new TipoContratto("Pulizia Scale") {ID=1}; var tipoContrattoAssicurativo = new TipoContratto("Assicurazione") {ID=2}; _unitaImmobiliare01 = new UnitaImmobiliare(_gruppoStabile01, listaTipoUnitaImmobiliare[0]) { ID = 1, Descrizione = "Unità 01", Ordine = 1}; _unitaImmobiliare02 = new UnitaImmobiliare(_gruppoStabile01, new TipoUnitaImmobiliare("Tipo02")) { ID = 2, Descrizione = "Unità 02", Ordine = 2 }; _unitaImmobiliare03 = new UnitaImmobiliare(_gruppoStabile02, listaTipoUnitaImmobiliare[1]) { ID = 3, Descrizione = "Unità 03", Ordine = null }; _unitaImmobiliare04 = new UnitaImmobiliare(_gruppoStabile02, new TipoUnitaImmobiliare("Tipo NEW")) { ID = 4, Descrizione = "Unità 04", Ordine = 4 }; _unitaImmobiliare01.CondizioniSicurezzaImpianto = new SicurezzaImpianto { Norma = true, Note = "Note01" }; _unitaImmobiliareImpiantistica01 = new UnitaImmobiliareImpiantistica(_unitaImmobiliare01, "TipoImpianto01", true) { ID = 1, Descrizione = "Impianto 01"}; _unitaImmobiliareImpiantistica02 = new UnitaImmobiliareImpiantistica(_unitaImmobiliare01, "TipoImpianto02", false) {ID = 2, Descrizione = "Impianto 02"}; _persona01 = new Persona(TipoPersonaEnum.Fisica, "Mario", "Rossi", _azienda.ID, false) { ID = 1, ComuneNascita = comune, IndirizzoResidenza = new Address { Indirizzo = "via residenza01", Cap = "40101", Civico = "1", Comune = comune, Localita = "Pioppa 01" }, Domicilio = new Address { Indirizzo = "via domicilio01", Cap = "40101", Civico = "1", Comune = comune, Localita = "Pioppa 01" }, Recapito = new Address { Indirizzo = "via recapito01", Cap = "40101", Civico = "1", Comune = comune, Localita = "Pioppa 01" } }; _proprietario01 = new Proprietario(_unitaImmobiliare01, _persona01) {ID = 1, Descrizione = "Mario Rossi", VersamentoMav = true, Consigliere = true, Principale = true}; _persona02 = new Persona(TipoPersonaEnum.Giuridica, "Giulio", "Verdi", _azienda.ID, false) { ID = 2, ComuneNascita = comune, IndirizzoResidenza = new Address { Indirizzo = "via residenza02", Cap = "40102", Civico = "2", Comune = comune, Localita = "Pioppa 02" }, Domicilio = new Address { Indirizzo = "via domicilio02", Cap = "40102", Civico = "2", Comune = comune, Localita = "Pioppa 02" }, Recapito = new Address { Indirizzo = "via recapito02", Cap = "40102", Civico = "2", Comune = comune, Localita = "Pioppa 02" } }; _proprietario02 = new Proprietario(_unitaImmobiliare02, _persona02) {ID = 2, Descrizione = "Giulio Verdi", DataInizio = new DateTime(2015, 1, 1)}; _persona03 = new Persona(TipoPersonaEnum.Fisica, "Franco", "Bianchi", _azienda.ID, false) { ID = 3, IndirizzoResidenza = new Address { Indirizzo = "via residenza03", Cap = "40103", Civico = "3", Comune = comune, Localita = "Pioppa 03" }, Domicilio = new Address { Indirizzo = "via domicilio03", Cap = "40103", Civico = "3", Comune = comune, Localita = "Pioppa 03" } }; _persona01.Recapito = new Address { Indirizzo = "via recapito03", Cap = "40103", Civico = "3", Comune = comune, Localita = "Pioppa 03" }; _proprietario03 = new Proprietario(_unitaImmobiliare03, _persona03) {ID = 3, Descrizione = "Franco Bianchi"}; _proprietario04 = new Proprietario(_unitaImmobiliare04, _persona01) { ID = 4, SoggettoPrincipale = _proprietario01 }; _persona04 = new Persona(TipoPersonaEnum.Fisica, "Primo", "Conduttore", _azienda.ID, false) { ID = 4, IndirizzoResidenza = new Address { Indirizzo = "via residenza04", Cap = "40104", Civico = "4", Comune = comune, Localita = "Pioppa 04" }, Domicilio = new Address { Indirizzo = "via domicilio04", Cap = "40104", Civico = "4", Comune = comune, Localita = "Pioppa 04" }, Recapito = new Address { Indirizzo = "via recapito04", Cap = "40104", Civico = "4", Comune = comune, Localita = "Pioppa 04" } }; _conduttore01 = new Conduttore(_unitaImmobiliare01, _persona04) {ID = 5, Descrizione = "Primo Conduttore"}; _persona05 = new Persona(TipoPersonaEnum.Fisica, "Secondo", "Conduttore", _azienda.ID, false) { ID = 5, IndirizzoResidenza = new Address { Indirizzo = "via residenza05", Cap = "40105", Civico = "5", Comune = comune, Localita = "Pioppa 05" }, Domicilio = new Address { Indirizzo = "via domicilio05", Cap = "40105", Civico = "5", Comune = comune, Localita = "Pioppa 05" }, Recapito = new Address { Indirizzo = "via recapito05", Cap = "40105", Civico = "5", Comune = comune, Localita = "Pioppa 05" } }; _conduttore02 = new Conduttore(_unitaImmobiliare02, _persona05) {ID = 6, Descrizione = "Secondo Conduttore"}; _contatto01 = new Email("*****@*****.**", true, _persona01) { ID = 1, Descrizione = "mail principale persona 01"}; _contatto02 = new Email("*****@*****.**", false, _persona01) { ID = 2, Descrizione = "mail secondaria persona 01" }; _contatto03 = new Cellulare("1234567890", true, _persona01) { ID = 3, Descrizione = "cellulare principale persona 01" }; _contatto04 = new Fax("9876543210", false, _persona02) { ID = 4, Descrizione = "fax persona 02" }; _contatto05 = new Telefono("1357924680", true, _persona03) { ID = 5, Descrizione = "telefono persona 03" }; _contatto06 = new EmailCertificata("*****@*****.**", true, _persona01) { ID = 6, Descrizione = "mail certificata persona 01" }; _contatto07 = new SitoInternet("www.bianchi.it", false, _persona03) { ID = 7, Descrizione = "sito internet persona03" }; _contatto08 = new Telefono("3333333333", false, _persona04) { ID = 8, Descrizione = "telefono persona 04" }; _contatto09 = new Cellulare("9999999999", true, _persona05) { ID = 9, Descrizione = "cellulare persona 05" }; _contatto10 = new Email("*****@*****.**", false, _persona05) { ID=10 }; _condominio.PersoneDaNonSollecitare.Add(new PersonaDaNonSollecitare(_persona01, _condominio) { Motivo = "persona01 non paga" }); _condominio.PersoneDaNonSollecitare.Add(new PersonaDaNonSollecitare(_persona03, _condominio) { Motivo = "persona02 è simpatica" }); // Contratto Appalto _documentocontrattoAppalto01 = new Documento(201, "Appalto", true, _azienda) { ID = 1, CondominioRiferimento = _condominio, Checksum = "CHK001", FileName = "appalto01", FileExtension = "pdf", Descrizione = "Appalto001" }; _documentocontrattoAppalto02 = new Documento(202, "Appalto", true, _azienda) { ID = 2, CondominioRiferimento = _condominio, Checksum = "CHK002", FileName = "appalto02", FileExtension = "pdf", Descrizione = "Appalto002" }; _contrattoAppalto = new ContrattoAppalto(tipoContratto, _condominio, fornitore) { ID = 1, NumeroContratto = "CONTRA001", Scadenza = new DateTime(2016, 12, 31), Descrizione = "Contratto di Appalto di prova", Note = "Nota per contratto appalto", Documenti = { _documentocontrattoAppalto01, _documentocontrattoAppalto02 } }; _documentocontrattoAppalto01.ContrattoRiferimento = _contrattoAppalto; _documentocontrattoAppalto02.ContrattoRiferimento = _contrattoAppalto; // Contratto Assicurativo _documentocontrattoAssicurativo01 = new Documento(203, "Assicurativo01", true, _azienda) { ID = 3, CondominioRiferimento = _condominio, Checksum = "CHK003", FileName = "assicurazione01", FileExtension = "pdf", Descrizione = "Assicurazione001" }; _documentocontrattoAssicurativo02 = new Documento(204, "Assicurativo02", true, _azienda) { ID = 4, CondominioRiferimento = _condominio, Checksum = "CHK004", FileName = "assicurazione02", FileExtension = "pdf", Descrizione = "Assicurazione002" }; _contrattoAssicurativo = new AssicurazioneContratto(new DateTime(2016, 11, 30), new DateTime(2016, 07, 15), tipoContrattoAssicurativo) { ID = 2, FornitoreAttuale = agenziaAssicurativa, NumeroContratto = "CONTR_ASS_001", Scadenza = new DateTime(2016, 12, 31), Descrizione = "Contratto Assicurativo di prova", Note = "Nota per contratto assicurativo", Documenti = { _documentocontrattoAssicurativo01, _documentocontrattoAssicurativo02 } }; _contrattoAssicurativoGlobale = new GlobaleAssicurazione(new DateTime(2016, 11, 30), new DateTime(2016, 07, 15), tipoContrattoAssicurativo) { ID = 3, FornitoreAttuale = agenziaAssicurativa, NumeroContratto = "CONTR_GLOB_001", Scadenza = new DateTime(2016, 12, 31), ImportoLimiteCoseRCT = 50000, ImportoMassimaleSinistroRCT = 60000, ImportoUnicoRCT = 70000, ImportoPremio = 80000, Descrizione = "Contratto Globale di prova", Note = "Nota per contratto globale", FranchigiaDanniAcqua = 90000, FranchigiaRicercaGuasto = 100000, ValoreRicostruzioneNuovo = 110000, DanniAcqua = true, RicercaGuasto = true }; _contrattoAssicurativoIncendio = new IncendioAssicurazione(new DateTime(2016, 11, 30), new DateTime(2016, 07, 15), tipoContrattoAssicurativo) { ID = 4, FornitoreAttuale = agenziaAssicurativa, NumeroContratto = "CONTR_INC_001", ImportoLimiteCoseRCT = 150000, ImportoMassimaleSinistroRCT = 160000, ImportoUnicoRCT = 170000, ImportoPremio = 180000, FranchigiaDanniAcqua = 120000, FranchigiaRicercaGuasto = 130000, ValoreRicostruzioneNuovo = 140000, DanniAcqua = true, RicercaGuasto = false, Scadenza = new DateTime(2016, 12, 31), Descrizione = "Contratto Incendio di prova", Note = "Nota per contratto incendio" }; _contrattoAssicurativoFurto = new FurtoAssicurazione(new DateTime(2016, 11, 30), new DateTime(2016, 07, 15), tipoContrattoAssicurativo) { ID = 5, FornitoreAttuale = agenziaAssicurativa, NumeroContratto = "CONTR_FURTO_001", Scadenza = new DateTime(2016, 12, 31), Descrizione = "Contratto Furto di prova", Note = "Nota per contratto furto" }; _contrattoAssicurativoInfortuni = new InfortuniAssicurazione(new DateTime(2016, 11, 30), new DateTime(2016, 07, 15), tipoContrattoAssicurativo) { ID = 6, FornitoreAttuale = agenziaAssicurativa, NumeroContratto = "CONTR_INFORTUNI_001", Scadenza = new DateTime(2016, 12, 31), Descrizione = "Contratto Infortuni di prova", Note = "Nota per contratto infortuni" }; _contrattoAssicurativoResponsabilitaCivile = new ResponsabilitaCivileAssicurazione(new DateTime(2016, 11, 30), new DateTime(2016, 07, 15), tipoContrattoAssicurativo) { ID = 7, FornitoreAttuale = agenziaAssicurativa, NumeroContratto = "CONTR_RESPCIV_001", Scadenza = new DateTime(2016, 12, 31), Descrizione = "Contratto Responsabilità civile di prova", Note = "Nota per contratto responsabilità civile" }; _condominio.ContrattiAssicurativi.Add(_contrattoAssicurativo); _condominio.ContrattiAssicurativi.Add(_contrattoAssicurativoGlobale); _condominio.ContrattiAssicurativi.Add(_contrattoAssicurativoIncendio); _condominio.ContrattiAssicurativi.Add(_contrattoAssicurativoFurto); _condominio.ContrattiAssicurativi.Add(_contrattoAssicurativoInfortuni); _condominio.ContrattiAssicurativi.Add(_contrattoAssicurativoResponsabilitaCivile); _contrattoAssicurativo.CondominioRiferimento = _condominio; _contrattoAssicurativoGlobale.CondominioRiferimento = _condominio; _contrattoAssicurativoIncendio.CondominioRiferimento = _condominio; _contrattoAssicurativoFurto.CondominioRiferimento = _condominio; _contrattoAssicurativoInfortuni.CondominioRiferimento = _condominio; _contrattoAssicurativoResponsabilitaCivile.CondominioRiferimento = _condominio; _documentocontrattoAssicurativo01.ContrattoRiferimento = _contrattoAssicurativo; _documentocontrattoAssicurativo02.ContrattoRiferimento = _contrattoAssicurativo; // Conti / Millesimi _conto01 = new Conto(_condominio, TipoContoEconomicoEnum.Economico, TipoPeriodoCompetenzaContabile.Esercizio, "SPESE GENERALI PROPRIETA'", true, true, false) {DescrizioneBilancio = "SPE GEN", Codice = "001", ID = 1}; _conto02 = new Conto(_condominio, TipoContoEconomicoEnum.Economico, TipoPeriodoCompetenzaContabile.Riscaldamento, "SPESE RISCALDAMENTO", true, true, false) { DescrizioneBilancio = "SPE RIS", Codice = "002", ID = 2 }; _sottoconto01 = new SottoConto(_conto01, "SPESE SCALA 01") { Codice = "001.001", ID = 1 }; _sottoconto02 = new SottoConto(_conto01, "SPESE SCALA 02") { Codice = "001.002", ID = 2 }; _sottoconto03 = new SottoConto(_conto02, "SPESE ABITAZIONI") { Codice = "002.001", ID = 3 }; _sottoconto04 = new SottoConto(_conto02, "SPESE GARAGE") { Codice = "002.002", ID = 4 }; _millesimo01 = new Millesimo(_conto01, _unitaImmobiliare01) { ID = 1, Valore = 100 }; _millesimo02 = new Millesimo(_conto01, _unitaImmobiliare02) { ID = 2, Valore = 200 }; _millesimo03 = new Millesimo(_conto02, _unitaImmobiliare01) { ID = 3, Valore = 300 }; _millesimo04 = new Millesimo(_conto02, _unitaImmobiliare02) { ID = 4, Valore = 400 }; _fascicoloImmobiliare = new FascicoloImmobiliare("Prova Fascicolo", "PRO", "01") {ID=1}; _fascicoloCondominio = new FascicoloCondominio(_fascicoloImmobiliare, _condominio) { ID =1, Necessario = true, Presente = false }; _fascicoloCondominio.Documenti.Add(_documentocontrattoAppalto01); _fascicoloCondominio.Documenti.Add(_documentocontrattoAssicurativo02); _documentocontrattoAppalto01.Fascicoli.Add(_fascicoloCondominio); _documentocontrattoAssicurativo02.Fascicoli.Add(_fascicoloCondominio); // Stub per IDaoFactory _daoFactory = MockRepository.GenerateStub<IDaoFactory>(); // Stub per azienda var aziendaDao = MockRepository.GenerateStub<IAziendaDao>(); aziendaDao.Stub(x => x.Find(2, false)).Return(_aziendaDestinazione); _daoFactory.Stub(x => x.GetAziendaDao()).Return(aziendaDao); // Stub per tipo unità immobiliare var tipoUnitaImmobiliareDao = MockRepository.GenerateStub<ITipoUnitaImmobiliareDao>(); tipoUnitaImmobiliareDao.Stub(x => x.GetByAzienda(Arg<int>.Is.Anything)).Return(listaTipoUnitaImmobiliare); _daoFactory.Stub(x => x.GetTipoUnitaImmobiliareDao()).Return(tipoUnitaImmobiliareDao); // Stub per fornitore var fornitoreDao = MockRepository.GenerateStub<IFornitoreDao>(); fornitoreDao.Stub(x => x.Find(1, false)).Return(fornitore); fornitoreDao.Stub(x => x.Find(2, false)).Return(fornitore01); fornitoreDao.Stub(x => x.GetByPartitaIva("01867511204", _aziendaDestinazione.ID)).Return(fornitore); fornitoreDao.Stub(x => x.GetByPartitaIva("01230460394", _aziendaDestinazione.ID)).Return(fornitore01); fornitoreDao.Stub(x => x.GetByPartitaIva("03211600402", _aziendaDestinazione.ID)).Return(agenziaAssicurativa); _daoFactory.Stub(x => x.GetFornitoreDao()).Return(fornitoreDao); // Stub per tipo contratto var tipoContrattoDao = MockRepository.GenerateStub<ITipoContrattoDao>(); tipoContrattoDao.Stub(x => x.GetByDescrizione("Pulizia Scale", _aziendaDestinazione.ID)).Return(tipoContratto); tipoContrattoDao.Stub(x => x.GetByDescrizione("Assicurazione", _aziendaDestinazione.ID)).Return(tipoContrattoAssicurativo); _daoFactory.Stub(x => x.GetTipoContrattoDao()).Return(tipoContrattoDao); // Stub per Comune var comuneDao = MockRepository.GenerateStub<IComuneDao>(); comuneDao.Stub(x => x.Find(comune.Codice, false)).Return(comune); comuneDao.Stub(x => x.Find(null, false)).Throw(new NullReferenceException("Id non può essere null")); _daoFactory.Stub(x => x.GetComuneDao()).Return(comuneDao); // Stub per fascicolo immobiliare _fascicoloImmobiliareDao = MockRepository.GenerateStub<IFascicoloImmobiliareDao>(); _fascicoloImmobiliareDao.Stub(x => x.GetByAzienda(_aziendaDestinazione.ID)).Return(new List<FascicoloImmobiliare> { _fascicoloImmobiliare }); _daoFactory.Stub(x => x.GetFascicoloImmobiliareDao()).Return(_fascicoloImmobiliareDao); _documentService = MockRepository.GenerateStub<IDocumentService>(); _exportCsvCondominiService = new ExportCsvCondominiService(); _importCsvCondominiService = new ImportCsvCondominiService(_daoFactory, _documentService); }
public virtual IUpdatableBusinessEntity Copy() { var unita = new UnitaImmobiliare(GruppoStabileRiferimento, TipoUnitaImmobiliare); return unita; }
private decimal getMillesimoRiferimento(UnitaImmobiliare unitaImmobiliare, Conto contoMillesimiRiferimento) { decimal valoreMillesimo = 0; if (contoMillesimiRiferimento != null) { var millesimo = _daoFactory.GetMillesimoDao().GetByContoSoggetto(contoMillesimiRiferimento.ID, unitaImmobiliare.ID); if (millesimo != null) valoreMillesimo = millesimo.Valore.GetValueOrDefault(); } return valoreMillesimo; }
private decimal calcoloQuotaFissa(UnitaImmobiliare unita, decimal consumo, IEnumerable<FasciaConsumoDettaglio> fasceConsumo) { var numeroComponenti = 2; if (unita != null && unita.NumeroResidenti > 0) numeroComponenti = unita.NumeroResidenti; var fasciaCompetenza = (from item in fasceConsumo where consumo >= item.ValoreMinimo && consumo <= item.ValoreMassimo && item.NumeroComponenti == numeroComponenti select item).FirstOrDefault(); if (fasciaCompetenza != null) return fasciaCompetenza.Importo; return 0; }
private static string getInternoUnitaImmobiliare(UnitaImmobiliare unita) { var result = string.Empty; if (!string.IsNullOrEmpty(unita.Piano)) result += "P." + unita.Piano + "-"; result += unita.InternoCompleto; return result; }
private decimal getUnitaMillProp(UnitaImmobiliare unita, List<IGrouping<int, Millesimo>> millesimi) { var millesimiUnita = new List<Millesimo>(); foreach (var item in millesimi.Where(item => item.Key == unita.ID)) millesimiUnita.AddRange(item); var contoMill = millesimiUnita.FirstOrDefault(item => item.ContoRiferimento.Codice == "999"); if (contoMill != null) return contoMill.Valore.GetValueOrDefault(); return 0m; }
private string loadCondominio(string codiceCondominio, bool loadContiStudio, TipoSaldi tipoSaldi, Azienda azienda, OleDbConnection conn) { var message = string.Empty; var condominioAdapter = new OleDbDataAdapter("SELECT TOP 1 * FROM CT02F0 LEFT JOIN CT03F0 ON CT02F0.CODSTAB = CT03F0.CODSTAB WHERE CT02F0.CODITTA = 1 AND CT02F0.CODSTAB=" + codiceCondominio + " ORDER BY CT03F0.DATAIN DESC", conn); var dsCondomini = new DataSet("Condomini"); condominioAdapter.Fill(dsCondomini, "Stabili"); var rowCondominio = dsCondomini.Tables["Stabili"].Rows[0]; var dataFineEsercizio = new DateTime(DateTime.Today.Year, 12, 31); if (rowCondominio["DATAIN"] != DBNull.Value && rowCondominio["DATAFI"] != DBNull.Value) { dataFineEsercizio = (DateTime)rowCondominio["DATAFI"]; } var condominio = _daoFactory.GetCondominioDao().GetByCodice(codiceCondominio.PadLeft(3, '0'), azienda.ID); if (condominio == null) { condominio = new Condominio(rowCondominio["CT02F0.INTEST"].ToString(), dataFineEsercizio.Day, dataFineEsercizio.Month, dataFineEsercizio.Year + 1, azienda) { Codice = codiceCondominio.PadLeft(3, '0'), Indirizzo = new Address { Indirizzo = rowCondominio["ORD"].ToString(), Cap = rowCondominio["CAP"].ToString() } }; // Indirizzo if (rowCondominio["LOCALITA"] != DBNull.Value && !string.IsNullOrEmpty(rowCondominio["LOCALITA"].ToString())) { IList<Comune> comuni = _daoFactory.GetComuneDao().GetByDescrizione(rowCondominio["LOCALITA"].ToString().Trim()); if (comuni.Count == 1) condominio.Indirizzo.Comune = comuni[0]; else { var comuniDescr = comuni.Where(item => item.Descrizione.Trim().ToUpper() == rowCondominio["LOCALITA"].ToString().Trim().ToUpper()).ToList(); if(comuniDescr.Count == 1) condominio.Indirizzo.Comune = comuniDescr.SingleOrDefault(); } if(condominio.Indirizzo.Comune == null) condominio.Indirizzo.Localita = rowCondominio["LOCALITA"].ToString(); } _daoFactory.GetCondominioDao().SaveOrUpdate(condominio); addDefault(condominio, loadContiStudio); } else { // Eliminazione vecchi dati condominio.ModelliRegistrazioneContabile.Clear(); foreach (ModelloRegistrazioneContabile modello in _daoFactory.GetModelloRegistrazioneContabileDao().GetByCondominio(condominio.ID)) _daoFactory.GetModelloRegistrazioneContabileDao().Delete(modello); foreach (UnitaImmobiliare unita in _daoFactory.GetUnitaImmobiliareDao().GetByCondominio(condominio.ID)) { foreach (Millesimo mill in unita.Millesimi) { mill.ContoRiferimento.Millesimi.Remove(mill); _daoFactory.GetMillesimoDao().Delete(mill); } unita.Millesimi.Clear(); IList<SoggettoCondominio> soggetti = unita.Soggetti.ToList(); foreach (SoggettoCondominio 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["CODFISC"] != DBNull.Value && !string.IsNullOrEmpty(rowCondominio["CODFISC"].ToString())) condominio.CodiceFiscale = rowCondominio["CODFISC"].ToString().Trim(); // ---------------------------------------------------------------------------------- // Scale // ---------------------------------------------------------------------------------- var stabile = Library.IesiGenericCollections<Palazzina>.GetByIndex(condominio.Palazzine, 0); var scala = Library.IesiGenericCollections<GruppoStabile>.GetByIndex(stabile.GruppiStabile, 0); bool firstScala = true; var scaleAdapter = new OleDbDataAdapter("SELECT * FROM CT04F0 WHERE CODITTA = 1 AND CODSTAB=" + codiceCondominio, conn); scaleAdapter.Fill(dsCondomini, "Scale"); foreach(DataRow row in dsCondomini.Tables["Scale"].Rows) { if (firstScala) { scala.Descrizione = row["INTEST"].ToString(); scala.Indirizzo = new Address {Indirizzo = condominio.Indirizzo.Indirizzo}; scala.Ordine = 1; scala.CodiceImportazione = row["CODITTA"] + "&" + row["CODSTAB"] + "&" + row["GRUPPO"]; firstScala = false; } else { var scalaNew = new GruppoStabile(stabile, row["INTEST"].ToString()) {Indirizzo = {Indirizzo = condominio.Indirizzo.Indirizzo}}; stabile.GruppiStabile.Add(scalaNew); scalaNew.Ordine = Convert.ToInt32(row["GRUPPO"]); _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 CT86F0 WHERE CODITTA = 1 AND CODSTAB=" + codiceCondominio, conn); pianoContiAdapter.Fill(dsCondomini, "PianoConti"); var sottoContiAdapter = new OleDbDataAdapter("SELECT * FROM CT88F0 WHERE CODITTA = 1 AND CODSTAB=" + codiceCondominio, conn); sottoContiAdapter.Fill(dsCondomini, "SottoConti"); var loadedConti = new Dictionary<int, Conto>(); var tbPianoConti = dsCondomini.Tables["PianoConti"]; Conto conto = null; foreach (DataRow row in tbPianoConti.Rows) { try { if(Convert.ToInt32(row["COLONNA"]) > 0 && row["DESCR1"] != DBNull.Value) conto = loadContoSottoconto(row, condominio, conto, dsCondomini.Tables["SottoConti"], loadedConti); } catch (Exception ex) { _log.Error("Errore inaspettato nell'importazione di un condominio da CONDOR: " + Library.Utility.GetMethodDescription() + " (Piano dei conti) - COLONNA:" + row["COLONNA"] + " - CODSTAB:" + row["CODSTAB"], ex); message = "Errore inaspettato nell'importazione di un condominio da CONDOR - " + ex.Message; return message; } } // ---------------------------------------------------------------------------------- // Anagrafiche // ---------------------------------------------------------------------------------- var cmd = new OleDbCommand("SELECT TOP 1 ESERCIZIO FROM CT08F0 WHERE CODITTA = 1 AND CODSTAB=" + codiceCondominio + " ORDER BY ESERCIZIO DESC", conn); if (conn.State == ConnectionState.Closed) conn.Open(); var lastEsercizio = Convert.ToInt32(cmd.ExecuteScalar()); conn.Close(); var unitaAdapter = new OleDbDataAdapter("SELECT * FROM CT05F0 WHERE CODITTA = 1 AND CODPOS >= 8000 AND CODPOS < 8100 AND CODSTAB=" + codiceCondominio + " AND ESERCIZIO = " + lastEsercizio.ToString() + " ORDER BY CODPOS", conn); var soggettiAdapter = new OleDbDataAdapter("SELECT * FROM CT06F0 WHERE CODITTA = 1 AND CODPOS >= 8000 AND CODSTAB=" + codiceCondominio + " ORDER BY CODPOS", conn); var millesimiAdapter = new OleDbDataAdapter("SELECT * FROM CT08F0 WHERE CODITTA = 1 AND CODSTAB=" + codiceCondominio + " AND ESERCIZIO = " + lastEsercizio.ToString() + " ORDER BY CODPOS", conn); unitaAdapter.Fill(dsCondomini, "Unita"); soggettiAdapter.Fill(dsCondomini, "Condomini"); millesimiAdapter.Fill(dsCondomini, "Millesimi"); var tbUnita = dsCondomini.Tables["Unita"]; var tbAnagrafiche = dsCondomini.Tables["Condomini"]; var tipoUnita = _daoFactory.GetTipoUnitaImmobiliareDao().GetById(1, false); // Unità Immobiliari var loadedSoggetti = new Dictionary<int, SoggettoCondominio>(); foreach (DataRow row in tbUnita.Rows) { try { var codiceUnita = Convert.ToInt32(row["CODPOS"]); var soggetti = tbAnagrafiche.Select("CODPOS = " + codiceUnita + " OR CODPOS = " + (codiceUnita + 100)); var gruppo = condominio.Gruppi.SingleOrDefault(item => item.Ordine == Convert.ToInt32(row["CN-GRUPPO"])) ?? condominio.Gruppi.FirstOrDefault(); if(row["SUBALT"] != DBNull.Value && row["SUBALT"].ToString().Length >= 3 && row["SUBALT"].ToString().ToUpper().StartsWith("UFF")) tipoUnita = _daoFactory.GetTipoUnitaImmobiliareDao().GetById(19, false); else if (row["SUBALT"] != DBNull.Value && row["SUBALT"].ToString().Length >= 3 && (row["SUBALT"].ToString().ToUpper().StartsWith("POSTO") || row["SUBALT"].ToString().ToUpper().StartsWith("GARAGE"))) tipoUnita = _daoFactory.GetTipoUnitaImmobiliareDao().GetById(3, false); var unitaCorrente = new UnitaImmobiliare(gruppo, tipoUnita) { Ordine = Convert.ToInt32(row["CODPOS"]) - 8000, Descrizione = row["INTEST1"].ToString().Trim() }; if (row["INTEST2"] != DBNull.Value && !string.IsNullOrEmpty(row["INTEST2"].ToString())) unitaCorrente.Descrizione += " " + row["INTEST2"].ToString().Trim(); unitaCorrente.Piano = row["PIANO"].ToString(); unitaCorrente.EstensioneInterno = row["INTERNO"].ToString(); unitaCorrente.AziendaID = azienda.ID; unitaCorrente.CodiceImportazione = row["CODITTA"] + "&" + row["CODSTAB"] + "&" + row["CODPOS"]; _daoFactory.GetUnitaImmobiliareDao().SaveOrUpdate(unitaCorrente); var soggettiCondominio = setSoggettiUnita(unitaCorrente, row, soggetti, loadedSoggetti); if (unitaCorrente.Soggetti.Count > 0) { // Saldi inizio esercizio setSaldiInizioEsercizio(row, soggettiCondominio, tipoSaldi); // Millesimi setMillesimi(row, dsCondomini.Tables["Millesimi"], unitaCorrente, loadedConti); } } catch (Exception ex) { _log.Error("Errore inaspettato nell'importazione di un condominio da CONDOR: " + Library.Utility.GetMethodDescription() + " (Unità Immobiliare) - CODSTAB:" + row["CODSTAB"] + " - CODPOS:" + row["CODPOS"], ex); message = "Errore inaspettato nell'importazione di un condominio da CONDOR - " + ex.Message; return message; } } if (string.IsNullOrEmpty(message)) { _log.Info("Caricato il condominio: " + codiceCondominio + " - " + condominio.Descrizione + " - " + Library.Utility.GetMethodDescription()); } return message; }
public decimal? GetRipartoImporto(UnitaImmobiliare unita, Conto conto, decimal importo, IList<MillesimoDTO> millesimi, Esercizio esercizio, IList<int> idUnitaImmobiliari) { try { decimal? importoRiparto = null; if (conto != null && unita != null) { // Totale Millesimi decimal totaleMillesimi; int numeroMillesimi; decimal? valore = null; if (millesimi == null) { var millesimi2 = GetByConto(conto, null, null, esercizio); if(idUnitaImmobiliari != null) millesimi2 = millesimi2.Where(item => idUnitaImmobiliari.Contains(item.IdUnitaRiferimento)).ToList(); totaleMillesimi = millesimi2.Sum(mill => mill.Valore.GetValueOrDefault()); numeroMillesimi = millesimi2.Count; var millesimo = _daoFactory.GetMillesimoDao().GetByContoSoggetto(conto.ID, unita.ID); if(millesimo != null) valore = millesimo.Valore; } else { totaleMillesimi = millesimi.Sum(mill => mill.Valore.GetValueOrDefault()); numeroMillesimi = millesimi.Count; var millesimo = (millesimi.Where(mill => mill.IdContoRiferimento == conto.ID && mill.IdUnitaRiferimento == unita.ID)).SingleOrDefault(); if (millesimo != null) valore = millesimo.Valore; } if (valore != null) { if (totaleMillesimi != 0) { var valoreMillesimo = (valore.GetValueOrDefault() * 1000) / totaleMillesimi; importoRiparto = (importo * valoreMillesimo) / 1000m; } else importoRiparto = importo / numeroMillesimi; } } else { _log.WarnFormat("Conto o Unità a NULL - {0} - unità:{1} - conto:{2} - importo:{3} - esercizio:{4}", Utility.GetMethodDescription(), unita?.ID.ToString(CultureInfo.InvariantCulture) ?? "<NULL>", conto?.ID.ToString(CultureInfo.InvariantCulture) ?? "<NULL>", importo, esercizio?.ID.ToString(CultureInfo.InvariantCulture) ?? "<NULL>"); } return importoRiparto; } catch (Exception ex) { _log.ErrorFormat("Errore nel calcolo del riparto dell'importo - {0} - unità:{1} - conto:{2} - importo:{3} - esercizio:{4}", ex, Utility.GetMethodDescription(), unita?.ID.ToString(CultureInfo.InvariantCulture) ?? "<NULL>", conto?.ID.ToString(CultureInfo.InvariantCulture) ?? "<NULL>", importo, esercizio?.ID.ToString(CultureInfo.InvariantCulture) ?? "<NULL>"); throw; } }
private void setMillesimi(DataRow row, DataTable tbMillesimi, UnitaImmobiliare unita, Dictionary<int, Conto> loadedConti) { var codProprietario = Convert.ToInt32(row["CODPOS"]); var rowsMillesimi = tbMillesimi.Select("CODPOS = " + codProprietario + " OR CODPOS = " + (codProprietario + 100), "CODPOS"); foreach (var kvp in loadedConti) { decimal valoreMillesimo = Convert.ToDecimal(rowsMillesimi[0]["M" + kvp.Value.Ordine.ToString().Trim()]); if(valoreMillesimo == 0 && rowsMillesimi.Length > 1) valoreMillesimo = Convert.ToDecimal(rowsMillesimi[1]["M" + kvp.Value.Ordine.ToString().Trim()]); new Millesimo(kvp.Value, unita) {Valore = valoreMillesimo}; } }
public decimal? GetRipartoImportoValori(UnitaImmobiliare unita, decimal importo, IList<ImportiDTO> valori) { decimal? importoRiparto = null; var totaleMillesimi = valori.Sum(item => item.Importo); var valore = (from item in valori where item.Id == unita.ID select item).SingleOrDefault(); if (valore != null && totaleMillesimi != 0) { var valoreRiparto = (valore.Importo * 1000) / totaleMillesimi; importoRiparto = (importo * valoreRiparto) / 1000m; } return importoRiparto; }
private SoggettoCondominio findProprietarioPrincipale(int idUnita, IDictionary<int, IList<SoggettoCondominio>> soggetti, UnitaImmobiliare unita, Esercizio esercizio) { var proprietariPrincipali = (soggetti[idUnita].Where( item => item.Tipo == TipoSoggetto.Proprietario && item.Principale.GetValueOrDefault())).ToList(); if (proprietariPrincipali.Count > 1) { _log.ErrorFormat("Trovato più di un proprietario principale - {0} - unità immobiliare:{1} - esercizio:{2} - azienda:{3}", Utility.GetMethodDescription(), idUnita, esercizio?.ID.ToString() ?? "<NULL>", unita.GruppoStabileRiferimento.PalazzinaRiferimento.CondominioRiferimento.Azienda.ID); throw new InvalidDataException( $"Per l'unità immobiliare '{unita.Descrizione}' è stato trovato più di un proprietario principale"); } return proprietariPrincipali.FirstOrDefault(); }