/// <summary> /// Crea uno Dato bancario valido /// </summary> public DatiBancariCondomini(string iban, Condominio stabile) { if (stabile != null) { _condominioRiferimento = stabile; _iban = iban; CoordinateBancarie coor = new CoordinateBancarie(); coor.SetIBAN(iban); Abi = coor.Abi; Cab = coor.Cab; ContoCorrente = coor.ContoCorrente; Cin = coor.Cin; _condominioRiferimento.DatiBancari.Add(this); } }
/// <summary> /// Crea uno Dato bancario valido /// </summary> public DatiBancariCondomini(string abi, string cab, string contoCorrente, string cin, Condominio stabile) { if (stabile != null) { CondominioRiferimento = stabile; Abi = abi; Cab = cab; ContoCorrente = contoCorrente; Cin = cin; CoordinateBancarie coor = new CoordinateBancarie(); coor.Abi = Abi; coor.Cab = Cab; coor.ContoCorrente = ContoCorrente; Iban = coor.IBAN; _condominioRiferimento.DatiBancari.Add(this); } }
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; }
public string LoadFornitori(string key, int idAzienda, string password) { string message = string.Empty; try { var databasePath = saveDatabase(key); var conn = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0; User Id=; Jet OLEDB:Database Password="******"; Data Source=" + databasePath); var azienda = _daoFactory.GetAziendaDao().GetById(idAzienda, false); var ds = new DataSet(); var fornitoriAdapter = new OleDbDataAdapter("SELECT * FROM Fornitori " + "ORDER BY Fornitori.F_RAG_SOC, Fornitori.F_TITOLARE", conn); fornitoriAdapter.Fill(ds, "Fornitori"); ds.Tables["Fornitori"].PrimaryKey = new[] { ds.Tables["Fornitori"].Columns["F_COD"] }; foreach (DataRow row in ds.Tables["Fornitori"].Rows) { try { // =========================== // Persona // =========================== Persona persona; var fornitore = _daoFactory.GetFornitoreDao().GetByCodiceImportazione(row["F_COD"].ToString().Trim(), azienda.ID); if (fornitore == null) { var tipoPersona = TipoPersonaEnum.Giuridica; if ((bool)row["F_PERSONA"]) tipoPersona = TipoPersonaEnum.Fisica; persona = new Persona(tipoPersona, string.Empty, row["F_TITOLARE"].ToString().Trim(), idAzienda, false); } else persona = fornitore.PersonaRiferimento; persona.RagioneSociale = row["F_RAG_SOC"].ToString().Trim(); if (persona.Nome != null && persona.Nome.Length > 50) persona.Nome = persona.Nome.Substring(0, 50); if (persona.Cognome != null && persona.Cognome.Length > 50) persona.Cognome = persona.Cognome.Substring(0, 50); if (persona.RagioneSociale != null && persona.RagioneSociale.Length > 100) persona.RagioneSociale = persona.RagioneSociale.Substring(0, 100); if (persona.TipoPersona.GetValueOrDefault() == TipoPersonaEnum.Fisica && row["F_SESSO_PF"] != DBNull.Value) { if (row["F_SESSO_PF"].ToString().Trim() == "M") persona.Sesso = SessoEnum.Maschio; else if(row["F_SESSO_PF"].ToString().Trim() == "F") persona.Sesso = SessoEnum.Femmina; } if (row["F_COD_FISC"] != DBNull.Value && !string.IsNullOrEmpty(row["F_COD_FISC"].ToString().Trim())) persona.CodiceFiscale = row["F_COD_FISC"].ToString().Trim(); if (row["F_PIVA"] != DBNull.Value && !string.IsNullOrEmpty(row["F_PIVA"].ToString().Trim())) persona.PartitaIva = row["F_PIVA"].ToString().Trim(); if (row["F_NOTE"] != DBNull.Value && !string.IsNullOrEmpty(row["F_NOTE"].ToString().Trim())) persona.Note = row["F_NOTE"].ToString().Trim(); persona.IndirizzoResidenza = new Address(); if (row["F_LOCALITA"] != DBNull.Value && !string.IsNullOrEmpty(row["F_LOCALITA"].ToString())) { var comuni = _daoFactory.GetComuneDao().GetByDescrizione(row["F_LOCALITA"].ToString().Trim()); if (comuni.Count == 1) persona.IndirizzoResidenza.Comune = comuni[0]; else persona.IndirizzoResidenza.Localita = row["F_LOCALITA"].ToString(); } if(row["F_CAP"] != DBNull.Value) persona.IndirizzoResidenza.Cap = row["F_CAP"].ToString().Trim(); if (row["F_VIA"] != DBNull.Value) persona.IndirizzoResidenza.Indirizzo = row["F_VIA"].ToString().Trim(); if (row["F_LOCALITA_NASC"] != DBNull.Value && !string.IsNullOrEmpty(row["F_LOCALITA_NASC"].ToString())) { var comuni = _daoFactory.GetComuneDao().GetByDescrizione(row["F_LOCALITA_NASC"].ToString().Trim()); if (comuni.Count == 1) persona.ComuneNascita = comuni[0]; } if (row["F_DT_NASC"] != DBNull.Value && (DateTime)row["F_DT_NASC"] > new DateTime(1800, 1, 1) && (DateTime)row["F_DT_NASC"] < new DateTime(2050, 12, 31)) persona.DataNascita = (DateTime)row["F_DT_NASC"]; // --------- // Contatti // --------- persona.Contatti.Clear(); if (row["F_TEL"] != DBNull.Value && !string.IsNullOrEmpty((string)row["F_TEL"])) { var contatto = new Telefono(row["F_TEL"].ToString(), true, persona) {CodiceImportazione = row["F_COD"].ToString().Trim()}; persona.Contatti.Add(contatto); } if (row["F_TELEFONINO"] != DBNull.Value && !string.IsNullOrEmpty((string)row["F_TELEFONINO"])) { var contatto = new Cellulare(row["F_TELEFONINO"].ToString(), true, persona) {CodiceImportazione = row["F_COD"].ToString().Trim()}; persona.Contatti.Add(contatto); } if (row["F_EMAIL"] != DBNull.Value && !string.IsNullOrEmpty((string)row["F_EMAIL"])) { var contatto = new Email(row["F_EMAIL"].ToString(), true, persona) {CodiceImportazione = row["F_COD"].ToString().Trim()}; persona.Contatti.Add(contatto); } if (row["F_FAX"] != DBNull.Value && !string.IsNullOrEmpty((string)row["F_FAX"])) { var contatto = new Fax(row["F_FAX"].ToString(), true, persona) {CodiceImportazione = row["F_COD"].ToString().Trim()}; persona.Contatti.Add(contatto); } persona.CodiceImportazione = row["F_COD"].ToString().Trim(); // =========================== // Fornitore // =========================== if(fornitore == null) fornitore = new Fornitore(persona, idAzienda); if (row["F_ALQ_RIT_ACC"] != DBNull.Value) fornitore.AliquotaRitenutaAcconto = Convert.ToDecimal((float)row["F_ALQ_RIT_ACC"]) / 100m; if (row["F_ALQ_IVA"] != DBNull.Value) fornitore.AliquotaIva = row["F_ALQ_IVA"].ToString().Trim(); if (row["F_ALQ_CASSAP"] != DBNull.Value) fornitore.AliquotaCassaProfessionisti = Convert.ToDecimal((float)row["F_ALQ_CASSAP"]) / 100m; if (row["F_MAG_CASP_IVA"] != DBNull.Value && row["F_MAG_CASP_IVA"].ToString() == "B") fornitore.IsRitenutaCalcolataImponibile = true; if (row["F_TRIBUTO"] != DBNull.Value && !string.IsNullOrEmpty(row["F_TRIBUTO"].ToString().Trim())) fornitore.CodiceTributo = row["F_TRIBUTO"].ToString().Trim(); fornitore.CodiceImportazione = row["F_COD"].ToString().Trim(); fornitore.Qualita = new ValutazioneQualita(); if (row["F_TIPO_PAG"] != DBNull.Value && row["F_TIPO_PAG"].ToString() == "BON") fornitore.ModalitaPagamento = _daoFactory.GetModalitaPagamentoDao().GetById(4, false); if (row["F_TIPO_FORN"] != DBNull.Value) fornitore.Tipo = _daoFactory.GetTipoFornitoreDao().GetByCodice(row["F_TIPO_FORN"].ToString()); //----------------------------- // Banche //----------------------------- if (row["F_IBAN_COMPLETO"] != DBNull.Value || (row["F_ABI"] != DBNull.Value && row["F_CAB"] != DBNull.Value)) { if (row["F_IBAN_COMPLETO"] != DBNull.Value && !string.IsNullOrEmpty(row["F_IBAN_COMPLETO"].ToString())) { var coor = new CoordinateBancarie(); if (coor.CheckIBAN(row["F_IBAN_COMPLETO"].ToString().Trim().Replace(" ", ""))) { persona.Iban = row["F_IBAN_COMPLETO"].ToString().Trim().Replace(" ", ""); coor.SetIBAN(persona.Iban); persona.Abi = coor.Abi; persona.Cab = coor.Cab; persona.ContoCorrente = coor.ContoCorrente; persona.Cin = coor.Cin; } } else { var coor = new CoordinateBancarie { Abi = row["F_ABI"].ToString().Trim().PadLeft(5, '0'), Cab = row["F_CAB"].ToString().Trim().PadLeft(5, '0'), ContoCorrente = row["F_NR_CC"].ToString().Trim().PadLeft(12, '0') }; persona.Iban = coor.CalcolaIBAN(); } } _daoFactory.GetFornitoreDao().SaveOrUpdate(fornitore); } catch (Exception ex) { _log.Error("Errore inaspettato l'importazione di un fornitore da YStabili: " + Library.Utility.GetMethodDescription() + " (Fornitore) - idFornitore:" + row["F_COD"] + " - nome:" + row["F_RAG_SOC"] + " - cognome:" + row["F_TITOLARE"], ex); throw; } } } catch (OleDbException ex) { message = ex.Message; _log.Error("Errore inaspettato nell'importazione dei fornitori da YStabili: " + Library.Utility.GetMethodDescription() + " - message: " + message, ex); } catch (Exception ex) { message = ex.Message; _log.Error("Errore inaspettato nell'importazione dei fornitori da YStabili: " + Library.Utility.GetMethodDescription() + " - message: " + message, ex); } return message; }
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 void ibanValidatorValidating(object sender, Windows.Forms.CustomValidation.CustomValidator.ValidatingCancelEventArgs e) { if (!string.IsNullOrEmpty(iban.Text)) { var coord = new CoordinateBancarie(); e.Valid = coord.SetIBAN(iban.Text); } else e.Valid = true; }
private void setDatiBancari(CabDTO cabDto) { abi.Value = cabDto.Abi; cab.Value = cabDto.Cab; descrizioneAbi.Text = cabDto.DescrizioneAbi; descrizioneCab.Text = cabDto.DescrizioneCab; Fornitore.PersonaRiferimento.Abi = cabDto.Abi; Fornitore.PersonaRiferimento.Cab = cabDto.Cab; var coord = new CoordinateBancarie {Abi = cabDto.Abi, Cab = cabDto.Cab, ContoCorrente = contoCorrente.Text}; iban.Text = coord.CalcolaIBAN(); Fornitore.PersonaRiferimento.Iban = iban.Text; cin.Text = coord.CalcolaCin(); Fornitore.PersonaRiferimento.Cin = cin.Text; }
// Coordinate ordinante private void writeMovimento16(RataSoggetto rata, DatiBancariCondomini banca, StreamWriter sw, int numeroDisposizione) { try { var sb = new StringBuilder(120); // Tipo Record sb.Append(" 16"); // Numero Disposizione sb.Append(numeroDisposizione.ToString().PadLeft(7, '0')); // -------------------------------------------------------------------- // Coordinate banca ordinante (banca del condominio) // -------------------------------------------------------------------- var coord = new CoordinateBancarie { Abi = banca.Abi, Cab = banca.Cab, ContoCorrente = banca.ContoCorrente }; // Codice Paese sb.Append("IT"); // CheckDigit IBAN sb.Append(coord.CalcolaCheckIBAN()); // CIN sb.Append(coord.CalcolaCin()); // ABI sb.Append(coord.Abi); // CAB sb.Append(coord.Cab); // Conto Corrente sb.Append(coord.ContoCorrente); // filler sb.Append(string.Empty.PadLeft(83)); sw.WriteLine(sb.ToString()); } catch (Exception ex) { _log.ErrorFormat("Errore inaspettato durante la creazione di una singola riga di MAV - {0} - condominio:{1} - azienda:{2}", ex, Utility.GetMethodDescription(), banca.CondominioRiferimento.ID, banca.CondominioRiferimento.Azienda.ID); throw; } }
private void listaBancheAfterCellUpdate(object sender, Infragistics.Win.UltraWinGrid.CellEventArgs e) { if (getAbiCabService().IsValidableIBAN()) { var datiBancariDTO = (DatiBancariDTO)e.Cell.Row.ListObject; if (datiBancariDTO != null) { // ---------------------------------------------------------- // Decodifica ABI // ---------------------------------------------------------- if (e.Cell.Value != null && e.Cell.Column.Key == "DescrizioneAbi") { if (Utility.IsInteger(e.Cell.Value.ToString())) { string abi = e.Cell.Value.ToString().PadLeft(5, '0'); if (!string.IsNullOrEmpty(abi)) { var abiDTO = getAbiCabService().GetAbiByCodice(abi); if (abiDTO != null) { datiBancariDTO.Abi = abi; datiBancariDTO.DescrizioneAbi = abiDTO.Codice + " - " + abiDTO.Descrizione; } if (!string.IsNullOrEmpty(datiBancariDTO.Cab)) { var cabDTO = getAbiCabService().GetCabByCodice(datiBancariDTO.Abi, datiBancariDTO.Cab); if (cabDTO != null) { datiBancariDTO.Cab = datiBancariDTO.Cab; datiBancariDTO.DescrizioneCab = cabDTO.DescrizioneCabCompleta; } } } } else return; } // ---------------------------------------------------------- // Decodifica CAB // ---------------------------------------------------------- if (e.Cell.Column.Key == "DescrizioneCab") { if (e.Cell.Value != null && Utility.IsInteger(e.Cell.Value.ToString())) { var cab = e.Cell.Value.ToString().PadLeft(5, '0'); if (!string.IsNullOrEmpty(cab)) { var cabDTO = getAbiCabService().GetCabByCodice(datiBancariDTO.Abi, cab); if (cabDTO != null) { datiBancariDTO.Cab = cab; datiBancariDTO.DescrizioneCab = cabDTO.DescrizioneCabCompleta; } } } else return; } // ---------------------------------------------------------- // Calcolo IBAN e CIN // ---------------------------------------------------------- if (e.Cell.Column.Key == "DescrizioneAbi" || e.Cell.Column.Key == "DescrizioneCab" || e.Cell.Column.Key == "ContoCorrente") { if (!string.IsNullOrEmpty(datiBancariDTO.Abi) && !string.IsNullOrEmpty(datiBancariDTO.Cab) && !string.IsNullOrEmpty(datiBancariDTO.ContoCorrente)) { var coor = new CoordinateBancarie { Abi = datiBancariDTO.Abi, Cab = datiBancariDTO.Cab, ContoCorrente = datiBancariDTO.ContoCorrente }; coor.Cin = coor.CalcolaCin(); datiBancariDTO.Cin = coor.Cin; datiBancariDTO.Iban = coor.CalcolaIBAN(); } } // ---------------------------------------------------------- // Calcolo ABI, CAB, ContoCorrente e CIN // ---------------------------------------------------------- if (e.Cell.Column.Key == "Iban") { if (!string.IsNullOrEmpty(datiBancariDTO.Iban)) { var coor = new CoordinateBancarie(); coor.SetIBAN(datiBancariDTO.Iban); datiBancariDTO.Abi = coor.Abi; datiBancariDTO.Cab = coor.Cab; datiBancariDTO.ContoCorrente = coor.ContoCorrente; datiBancariDTO.Cin = coor.Cin; var cabDTO = getAbiCabService().GetCabByCodice(datiBancariDTO.Abi, datiBancariDTO.Cab); if (cabDTO != null) { datiBancariDTO.DescrizioneAbi = cabDTO.DescrizioneAbiCompleta; datiBancariDTO.DescrizioneCab = cabDTO.DescrizioneCabCompleta; } } } } } }
private string validateDatiBancari() { var msgErrore = string.Empty; if (getAbiCabService().IsValidableIBAN()) { var coor = new CoordinateBancarie(); var contoCorrenteErrato = false; var cinErrato = false; var ibanErrato = false; var campoObbligatorioVuoto = false; foreach (var t in _condominio.DatiBancari) { if (t.Abi == "" || t.Cab == "" || t.ContoCorrente == null) campoObbligatorioVuoto = true; string valore = t.ContoCorrente; var objAlphaNumericPattern = new Regex("[^a-zA-Z0-9]"); if (!string.IsNullOrEmpty(valore)) contoCorrenteErrato = objAlphaNumericPattern.IsMatch(valore); //settare altri parametri coor.Abi = t.Abi; coor.Cab = t.Cab; coor.ContoCorrente = t.ContoCorrente; coor.Cin = t.Cin; coor.IBAN = t.Iban; if (!coor.VerificaCin()) cinErrato = true; if (!coor.CheckIBAN()) ibanErrato = true; } if (contoCorrenteErrato) msgErrore = "Il conto corrente inserito non è valido, sono ammessi sono numeri o lettere. \n"; if (cinErrato) msgErrore = "Il valore Cin inserito non è corretto. \n"; if (ibanErrato) msgErrore += "Il valore Iban inserito non è corretto. \n"; if (campoObbligatorioVuoto) msgErrore += "Abi, Cab e ContoCorrente non ammettono valori vuoti. \n"; } return msgErrore; }
private bool insert(DatiBancariDTO dto, out DatiBancariCondomini item) { var daoFactory = _windsorRepository.GetDaoFactory(_info.Azienda); bool result; try { var abiCab = daoFactory.GetAbiCabDao().GetByAbiCab(dto.Abi, dto.Cab); if (abiCab != null) { item = new DatiBancariCondomini(dto.Iban, daoFactory.GetCondominioDao().GetById(dto.IdCondominio, false)) { Abi = dto.Abi, Cab = dto.Cab, Cin = dto.Cin, ContoCorrente = dto.ContoCorrente.Truncate(50), DataValidita = dto.DataValidita, Iban = dto.Iban.Truncate(27), Note = dto.Note.Truncate(50), Principale = dto.Principale }; if (string.IsNullOrEmpty(item.Iban) && !string.IsNullOrEmpty(item.Abi) && !string.IsNullOrEmpty(item.Cab) && !string.IsNullOrEmpty(item.ContoCorrente)) { var coord = new CoordinateBancarie(); try { coord.Abi = item.Abi; coord.Cab = item.Cab; coord.ContoCorrente = item.ContoCorrente; item.Iban = coord.CalcolaIBAN(); item.ContoCorrente = coord.ContoCorrente; } catch (Exception ex) { _log.WarnFormat("Errore inaspettato nel calcolo dell'IBAN - {0} - id:{1} - abi:{2} - cab:{3} - c/c:{4}", ex, Utility.GetMethodDescription(), dto.ID, dto.Abi, dto.Cab, dto.ContoCorrente); } if (string.IsNullOrEmpty(item.Cin)) { try { item.Cin = coord.CalcolaCin(); } catch (Exception ex) { _log.WarnFormat("Errore inaspettato nel calcolo del CIN - {0} - id:{1} - abi:{2} - cab:{3} - c/c:{4}", ex, Utility.GetMethodDescription(), dto.ID, dto.Abi, dto.Cab, dto.ContoCorrente); } } } daoFactory.GetDatiBancariCondominiDao().SaveOrUpdate(item); // Aggiungo ABI e CAB tra i preferiti try { if (item.CondominioRiferimento != null && item.CondominioRiferimento.Azienda != null) { var abicabPref = daoFactory.GetAbiCabPreferitoDao().GetByAbiCab(item.Abi, item.Cab, item.CondominioRiferimento.Azienda.ID); if (abicabPref == null) { var abicab = daoFactory.GetAbiCabDao().Find(new AbiCabId(item.Abi, item.Cab), false); if (abicab != null) { abicabPref = new AbiCabPreferito(abicab, item.CondominioRiferimento.Azienda); daoFactory.GetAbiCabPreferitoDao().SaveOrUpdate(abicabPref); } } } } catch (Exception ex) { _log.WarnFormat("Errore nell'inserimento di ABI e CAB preferito - {0} - id:{1} - abi:{2} - cab:{3} - c/c:{4}", ex, Utility.GetMethodDescription(), dto.ID, dto.Abi, dto.Cab, dto.ContoCorrente); } } else { _log.ErrorFormat("Non trovato ABI CAB - {0} - abi:{1} - cab:{2}", Utility.GetMethodDescription(), dto.Abi, dto.Cab); item = null; return false; } result = true; } catch (Exception ex) { _log.ErrorFormat("Errore nell'inserimento dei dati bancari - {0} - id:{1} - abi:{2} - cab:{3} - c/c:{4}", ex, Utility.GetMethodDescription(), dto.ID, dto.Abi, dto.Cab, dto.ContoCorrente); throw; } return result; }
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; }
public string LoadFornitori(string key, int idAzienda, string password) { string message = string.Empty; try { var databasePath = saveDatabase(key); var conn = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0; User Id=; Jet OLEDB:Database Password="******"; Data Source=" + databasePath); var ds = new DataSet(); var fornitoriAdapter = new OleDbDataAdapter("SELECT * FROM TabFornitori " + "INNER JOIN TabCodComune ON TabCodComune.id = TabFornitori.idComune " + "ORDER BY TabFornitori.Cognome, TabFornitori.Nome", conn); fornitoriAdapter.Fill(ds, "Fornitori"); ds.Tables["Fornitori"].PrimaryKey = new[] { ds.Tables["Fornitori"].Columns["TabFornitori.id"] }; var bancheAdapter = new OleDbDataAdapter("SELECT TabBanche_Fornitori.*, TabBanche.Abi, TabBanche.Cab " + "FROM TabBanche INNER JOIN TabBanche_Fornitori ON TabBanche.id = TabBanche_Fornitori.idBanca " + "WHERE TabBanche.Attivo = True AND TabBanche_Fornitori.Attivo=True " + "ORDER BY TabBanche_Fornitori.Predefinito", conn); bancheAdapter.Fill(ds, "Banche"); ds.Tables["Banche"].PrimaryKey = new[] { ds.Tables["Fornitori"].Columns["id"] }; // Relazioni ds.Relations.Add(new DataRelation("Fornitori_Banche", ds.Tables["Fornitori"].Columns["TabFornitori.id"], ds.Tables["Banche"].Columns["idFornitore"])); foreach (DataRow row in ds.Tables["Fornitori"].Rows) { try { // =========================== // Persona // =========================== var tipoPersona = Sfera.Enums.TipoPersonaEnum.Giuridica; if((bool)row["Persona"]) tipoPersona = Sfera.Enums.TipoPersonaEnum.Fisica; var persona = new Persona(tipoPersona, row["TabFornitori.Nome"].ToString().Trim(), row["Cognome"].ToString().Trim(), idAzienda, false); if (tipoPersona == Sfera.Enums.TipoPersonaEnum.Giuridica) { persona.RagioneSociale = row["Cognome"].ToString().Trim(); if (string.IsNullOrEmpty(row["TabFornitori.Nome"].ToString().Trim())) persona.Cognome = null; } if (persona.Nome != null && persona.Nome.Length > 50) persona.Nome = persona.Nome.Substring(0, 50); if (persona.Cognome != null && persona.Cognome.Length > 50) persona.Cognome = persona.Cognome.Substring(0, 50); if (persona.RagioneSociale != null && persona.RagioneSociale.Length > 100) persona.RagioneSociale = persona.RagioneSociale.Substring(0, 100); persona.Sesso = Sfera.Enums.SessoEnum.Femmina; if (!(bool)row["Maschio"]) persona.Sesso = Sfera.Enums.SessoEnum.Maschio; if (row["CF"] != DBNull.Value && !string.IsNullOrEmpty(row["CF"].ToString().Trim())) persona.CodiceFiscale = row["CF"].ToString().Trim(); if (row["PIVA"] != DBNull.Value && !string.IsNullOrEmpty(row["PIVA"].ToString().Trim())) persona.PartitaIva = row["PIVA"].ToString().Trim(); if (row["Note"] != DBNull.Value && !string.IsNullOrEmpty(row["Note"].ToString().Trim())) persona.Note = row["Note"].ToString().Trim(); if (row["idComuneNasc"] != DBNull.Value && !string.IsNullOrEmpty(row["idComuneNasc"].ToString().Trim())) persona.ComuneNascita = getCodiceComuneById((int)row["idComuneNasc"], conn); if (row["DataNasc"] != DBNull.Value) persona.DataNascita = (DateTime)row["DataNasc"]; persona.IndirizzoResidenza = getIndirizzo(row); persona.Recapito = getIndirizzoFiscale(row, conn); // --------- // Contatti // --------- if (row["Tel1"] != DBNull.Value && !string.IsNullOrEmpty((string)row["Tel1"])) { var contatto = new Telefono(row["Tel1"].ToString(), true, persona) {CodiceImportazione = row["TabFornitori.id"].ToString().Trim()}; persona.Contatti.Add(contatto); } if (row["Tel2"] != DBNull.Value && !string.IsNullOrEmpty((string)row["Tel2"])) { var contatto = new Telefono(row["Tel2"].ToString(), false, persona) {CodiceImportazione = row["TabFornitori.id"].ToString().Trim()}; persona.Contatti.Add(contatto); } if (row["Cell"] != DBNull.Value && !string.IsNullOrEmpty((string)row["Cell"])) { var contatto = new Cellulare(row["Cell"].ToString(), true, persona) {CodiceImportazione = row["TabFornitori.id"].ToString().Trim()}; persona.Contatti.Add(contatto); } if (row["Email"] != DBNull.Value && !string.IsNullOrEmpty((string)row["Email"])) { var contatto = new Email(row["Email"].ToString(), true, persona) {CodiceImportazione = row["TabFornitori.id"].ToString().Trim()}; persona.Contatti.Add(contatto); } if (row["Fax"] != DBNull.Value && !string.IsNullOrEmpty((string)row["Fax"])) { var contatto = new Fax(row["Fax"].ToString(), true, persona) {CodiceImportazione = row["TabFornitori.id"].ToString().Trim()}; persona.Contatti.Add(contatto); } persona.CodiceImportazione = row["TabFornitori.id"].ToString().Trim(); // =========================== // Fornitore // =========================== var fornitore = new Fornitore(persona, idAzienda); if (row["PercRitAcconto"] != DBNull.Value) fornitore.AliquotaRitenutaAcconto = Convert.ToDecimal((float)row["PercRitAcconto"])/100m; if (row["PercIVA"] != DBNull.Value) fornitore.AliquotaIva = row["PercIVA"].ToString().Trim(); if (row["PercRitPrev"] != DBNull.Value) fornitore.AliquotaCassaProfessionisti = Convert.ToDecimal((float)row["PercRitPrev"]) / 100m; if (row["RitAccSuRitPrev"] != DBNull.Value) fornitore.IsRitenutaCalcolataImponibile = (bool)row["RitAccSuRitPrev"]; if (row["InElencoFornitori"] != DBNull.Value) fornitore.ElencoFornitori = (bool)row["InElencoFornitori"]; if (row["CodiceTributoF24"] != DBNull.Value && !string.IsNullOrEmpty(row["CodiceTributoF24"].ToString().Trim())) fornitore.CodiceTributo = row["CodiceTributoF24"].ToString().Trim(); fornitore.CodiceImportazione = row["TabFornitori.id"].ToString().Trim(); fornitore.Qualita = new ValutazioneQualita(); //----------------------------- // Banche //----------------------------- if (row.GetChildRows("Fornitori_Banche").Count() > 0) { DataRow rowBanca = row.GetChildRows("Fornitori_Banche")[0]; if (rowBanca["IBAN"] != DBNull.Value && !string.IsNullOrEmpty(rowBanca["IBAN"].ToString())) { var coor = new CoordinateBancarie(); if (coor.CheckIBAN(rowBanca["IBAN"].ToString().Trim().Replace(" ", ""))) { persona.Iban = rowBanca["IBAN"].ToString().Trim().Replace(" ", ""); coor.SetIBAN(persona.Iban); persona.Abi = coor.Abi; persona.Cab = coor.Cab; persona.ContoCorrente = coor.ContoCorrente; persona.Cin = coor.Cin; } } 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') }; persona.Iban = coor.CalcolaIBAN(); } } _daoFactory.GetFornitoreDao().SaveOrUpdate(fornitore); } catch (Exception ex) { _log.Error("Errore inaspettato l'importazione di un fornitore da GeCo: " + Library.Utility.GetMethodDescription() + " (Fornitore) - idFornitore:" + row["TabFornitori.id"] + " - nome:" + row["TabFornitori.Nome"] + " - cognome:" + row["Cognome"], ex); throw; } } } catch (OleDbException ex) { message = ex.Message; _log.Error("Errore inaspettato nell'importazione dei fornitori da GeCo: " + Library.Utility.GetMethodDescription() + " - message: " + message, ex); } catch (Exception ex) { message = ex.Message; _log.Error("Errore inaspettato nell'importazione dei fornitori da GeCo: " + Library.Utility.GetMethodDescription() + " - message: " + message, ex); } if (!string.IsNullOrEmpty(message)) { _persistenceContext.RollbackAndCloseSession(Security.Login.Instance.CurrentLogin().LoginName); _persistenceContext.BeginTransaction(Security.Login.Instance.CurrentLogin().LoginName, IsolationLevel.ReadUncommitted); } return message; }
private RisultatoElaborazioneCBI confermaMovimento(IList<MovimentiBancariControlloDuplicatiDTO> listaMovimentiBancari) { try { RisultatoElaborazioneCBI anomalie = null; if (_importo > 0 && _valuta != null && _dataContabile != null) { try { var alreadyLoaded = isMovimentoAlreadyLoaded(_importo.GetValueOrDefault(), _segno, _valuta.GetValueOrDefault(), _dataContabile.GetValueOrDefault(), _descrizione, _descrizioneBreve, _causale, _abi, _cab, _contoCorrente, listaMovimentiBancari); if (!alreadyLoaded) { var mov = new MovimentoBancario(_abi, _cab, _contoCorrente, _importo, _segno, _valuta, _dataContabile, _causale, _file) { NumeroAssegno = _numeroAssegno, NumeroCRO = _numeroCRO, NumeroDistinta = _numeroDistinta, Descrizione = _descrizione, DescrizioneBreve = _descrizioneBreve, AbiFornitore = _abiFornitore, CabFornitore = _cabFornitore, NomeFornitore = _nomeFornitore, AbiOrdinante = _abiOrdinante, CabOrdinante = _cabOrdinante, NomeOrdinante = _nomeOrdinante }; var coord = new CoordinateBancarie {Abi = _abi, Cab = _cab, ContoCorrente = _contoCorrente}; mov.Banca = _daoFactory.GetDatiBancariCondominiDao().GetByIban(coord.CalcolaIBAN()); // ----------------------------------------------------- // Movimenti inseriti come già evasi // ----------------------------------------------------- if (mov.Causale == "56") mov.Stato = StatoMovimentoBancarioEnum.Contabilizzato; // ----------------------------------------------------- // Condominio // ----------------------------------------------------- if (mov.Banca != null) { mov.Condominio = mov.Banca.CondominioRiferimento; // ------------------------------------------------- // Cerco di proporre un esercizio // ------------------------------------------------- var esercizio = mov.Condominio.GetEsercizioByData(mov.DataValuta.GetValueOrDefault()) ?? mov.Condominio.GetCurrentEsercizioOrdinario(); if (esercizio != null) mov.Esercizio = esercizio; } checkMovimento(mov); // ----------------------------------------------------- // Cerco di proporre un fornitore // ----------------------------------------------------- if (!string.IsNullOrEmpty(mov.NomeFornitore)) { var fornitori = (from fornitore in _fornitori where fornitore.DisplayName.Replace(" ", "").ToUpper().Contains(mov.NomeFornitore.Replace(" ", "").ToUpper()) select fornitore).ToList(); if (fornitori.Count == 1) mov.Fornitore = _daoFactory.GetFornitoreDao().GetById(fornitori.First().ID, false); } // ----------------------------------------------------- // Cerco di proporre un condomino // ----------------------------------------------------- if (!string.IsNullOrEmpty(mov.NomeOrdinante)) { SoggettoCondominio condomino = null; IList<PersonaListaDTO> personeDto = (from persona in _personeAzienda where persona.DisplayName.Replace(" ", "").ToUpper().Contains(mov.NomeOrdinante.Replace(" ", "").ToUpper()) select persona).ToList(); foreach (var persona in personeDto) { var soggettiCondominio = _daoFactory.GetSoggettoCondominioDao().GetByPersona(persona.ID); if (soggettiCondominio.Count == 1) condomino = soggettiCondominio[0]; } if (condomino != null) mov.CodiceSoggetto = condomino.ID; } listaMovimentiBancari.Add(new MovimentiBancariControlloDuplicatiDTO(0, mov.Importo, mov.Segno, mov.DataValuta, mov.DataContabile, mov.DescrizioneBreve, mov.Descrizione, mov.Causale, mov.Abi, mov.Cab, mov.ContoCorrente)); } else { anomalie = new RisultatoElaborazioneCBI(); anomalie.Warning += string.Format("E' stato <strong>SCARTATO</strong> perchè già presente in archivio il movimento importo: <strong>{0:c}</strong> - abi: <strong>{1}</strong> cab: <strong>{2}</strong> - conto: <strong>{3}</strong><br/>", _importo.GetValueOrDefault(), _abi, _cab, _contoCorrente); anomalie.Riga = _descrizioneBreve + _descrizione; } _causale = null; _valuta = null; _dataContabile = null; _segno = null; _importo = null; _numeroAssegno = null; _numeroCRO = null; _numeroDistinta = null; _descrizione = null; _descrizioneBreve = null; _abiFornitore = null; _cabFornitore = null; _nomeFornitore = null; _abiOrdinante = null; _cabOrdinante = null; _nomeOrdinante = null; } catch (Exception ex) { _log.ErrorFormat("La creazione del movimento bancario si è interrotta inaspettatamente - {0}", ex, Utility.GetMethodDescription()); anomalie = new RisultatoElaborazioneCBI { Anomalie = "La creazione del movimento bancario si è interrotta inaspettatamente." }; } } return anomalie; } catch (Exception ex) { _log.ErrorFormat("Errore inaspettato durante la conferma del movimento bancario - {0}", ex, Utility.GetMethodDescription()); throw; } }
public string RielaborazioneMovimentiBancari(int azienda) { try { var message = string.Empty; var personeAzienda = PreLoadedCollection.Instance.GetPersone(azienda); // =================================================================== // Movimenti orfani cioè non asosciati a nessun condominio // =================================================================== var movimenti = _daoFactory.GetMovimentoBancarioDao().GetOrfaniByAzienda(azienda); foreach (var mov in movimenti) { try { var coord = new CoordinateBancarie { Abi = mov.Abi, Cab = mov.Cab, ContoCorrente = mov.ContoCorrente }; mov.Banca = _daoFactory.GetDatiBancariCondominiDao().GetByIban(coord.CalcolaIBAN()); // ----------------------------------------------------- // Condominio // ----------------------------------------------------- if (mov.Banca != null) { mov.Condominio = mov.Banca.CondominioRiferimento; // ------------------------------------------------- // Cerco di proporre un esercizio // ------------------------------------------------- var esercizio = mov.Condominio.GetEsercizioByData(mov.DataValuta.GetValueOrDefault()) ?? mov.Condominio.GetCurrentEsercizioOrdinario(); if (esercizio != null) mov.Esercizio = esercizio; } checkMovimento(mov); // ----------------------------------------------------- // Cerco di proporre un fornitore // ----------------------------------------------------- if (!string.IsNullOrEmpty(mov.NomeFornitore)) { var fornitori = (from fornitore in getFornitori(azienda) where fornitore.DisplayName.Replace(" ", "").ToUpper().Contains(mov.NomeFornitore.Replace(" ", "").ToUpper()) select fornitore).ToList(); if (fornitori.Count == 1) mov.Fornitore = _daoFactory.GetFornitoreDao().GetById(fornitori.First().ID, false); } // ----------------------------------------------------- // Cerco di proporre un condomino // ----------------------------------------------------- if (!string.IsNullOrEmpty(mov.NomeOrdinante)) { SoggettoCondominio condomino = null; IList<PersonaListaDTO> personeDto = (from persona in personeAzienda where persona.DisplayName.Replace(" ", "").ToUpper().Contains(mov.NomeOrdinante.Replace(" ", "").ToUpper()) select persona).ToList(); foreach (PersonaListaDTO persona in personeDto) { var soggettiCondominio = _daoFactory.GetSoggettoCondominioDao().GetByPersona(persona.ID); if (soggettiCondominio.Count == 1) condomino = soggettiCondominio[0]; } if (condomino != null) mov.CodiceSoggetto = condomino.ID; } } catch (Exception ex) { _log.ErrorFormat("Errore inaspettato durante la rielaborazione dei movimenti bancari - SINGOLO MOVIMENTO - {0} - movimento:{1} - azienda:{2}", ex, Utility.GetMethodDescription(), mov.ID, azienda); throw; } } // =================================================================== // Controllo i movimenti da verificare per eventuali cambiamenti di stato // =================================================================== movimenti = _daoFactory.GetMovimentoBancarioDao().GetDaVerificareByAzienda(azienda); foreach (var mov in movimenti) { try { checkMovimento(mov); } catch (Exception ex) { _log.ErrorFormat("Errore inaspettato durante la rielaborazione dei movimenti bancari DA VERIFICARE - SINGOLO MOVIMENTO - {0} - movimento:{1} - azienda:{2}", ex, Utility.GetMethodDescription(), mov.ID, azienda); throw; } } return message; } catch (Exception ex) { _log.ErrorFormat("Errore inaspettato durante la rielaborazione dei movimenti bancari - {0} - azienda:{1}", ex, Utility.GetMethodDescription(), azienda); throw; } }
private bool update(PersonaDTO dto, out Persona item) { bool result = false; item = null; var daoFactory = _windsorRepository.GetDaoFactory(_info.Azienda); try { item = daoFactory.GetPersonaDao().GetById(dto.ID, false); // Condizione necessare per il controllo del fatto che sul DB ho una versione uguale o più vecchia // Per non viene più eseguito il controllo if (dto.Version == item.Version || true) { item.AziendaID = dto.Azienda; item.CodiceFiscale = dto.CodiceFiscale; item.Cognome = dto.Cognome; if (dto.DataNascita != null) { if (!Conversione.IsSqlSmallDateTime(dto.DataNascita.GetValueOrDefault())) _log.WarnFormat("ATTENZIONE: Tentativo di memorizzare una data di nascita non corretta - {0} - persona:{1} - data:{2}", Utility.GetMethodDescription(), dto.ID, dto.DataNascita.GetValueOrDefault()); else item.DataNascita = dto.DataNascita; } item.Nome = dto.Nome; item.Note = dto.Note; item.PartitaIva = dto.PartitaIva; item.RagioneSociale = dto.RagioneSociale; item.Sesso = dto.Sesso; item.TipoPersona = dto.TipoPersona; item.Titolo = dto.Titolo; if (!string.IsNullOrEmpty(dto.Username)) { if (item.DatiAutenticazione == null) item.DatiAutenticazione = new DatiAutenticazionePersona(); item.DatiAutenticazione.Username = dto.Username; item.DatiAutenticazione.Password = dto.Password; } item.Iban = dto.Iban; // Se iban è valorizzato i dati singoli devono sempre essere estrapolati dall'IBAN if (!string.IsNullOrEmpty(item.Iban)) { var coord = new CoordinateBancarie(); coord.SetIBAN(item.Iban); item.Abi = coord.Abi; item.Cab = coord.Cab; item.ContoCorrente = coord.ContoCorrente; item.Cin = coord.Cin; } else { item.Abi = dto.Abi; item.Cab = dto.Cab; item.ContoCorrente = dto.ContoCorrente; item.Cin = dto.Cin; } if (dto.IndirizzoResidenza != null) { if (item.IndirizzoResidenza == null) item.IndirizzoResidenza = new Address(); item.IndirizzoResidenza.Cap = dto.IndirizzoResidenza.Cap; item.IndirizzoResidenza.Civico = dto.IndirizzoResidenza.Civico; item.IndirizzoResidenza.Indirizzo = dto.IndirizzoResidenza.Indirizzo; item.IndirizzoResidenza.Localita = dto.IndirizzoResidenza.Localita; item.IndirizzoResidenza.Presso = dto.IndirizzoResidenza.Presso; item.IndirizzoResidenza.Comune = dto.IndirizzoResidenza.CodiceComune != null ? daoFactory.GetComuneDao().Find(dto.IndirizzoResidenza.CodiceComune, false) : null; } if (dto.Domicilio != null) { if (item.Domicilio == null) item.Domicilio = new Address(); item.Domicilio.Cap = dto.Domicilio.Cap; item.Domicilio.Civico = dto.Domicilio.Civico; item.Domicilio.Indirizzo = dto.Domicilio.Indirizzo; item.Domicilio.Localita = dto.Domicilio.Localita; item.Domicilio.Presso = dto.Domicilio.Presso; item.Domicilio.Comune = dto.Domicilio.CodiceComune != null ? daoFactory.GetComuneDao().Find(dto.Domicilio.CodiceComune, false) : null; } if (dto.Recapito != null) { if (item.Recapito == null) item.Recapito = new Address(); item.Recapito.Cap = dto.Recapito.Cap; item.Recapito.Civico = dto.Recapito.Civico; item.Recapito.Indirizzo = dto.Recapito.Indirizzo; item.Recapito.Localita = dto.Recapito.Localita; item.Recapito.Presso = dto.Recapito.Presso; item.Recapito.Comune = dto.Recapito.CodiceComune != null ? daoFactory.GetComuneDao().GetById(dto.Recapito.CodiceComune, false) : null; } if (dto.ComuneNascita != null) { _idComune = dto.ComuneNascita.ID; item.ComuneNascita = daoFactory.GetComuneDao().GetById(_idComune, false); } else item.ComuneNascita = null; // Lista Contatti item.Contatti.Clear(); foreach (var t in dto.Contatti) { _id = t.ID; if (t.Stato != string.Empty) _id = getContattoRepository(item).ManageDomainEntity(t, false); var contatto = daoFactory.GetContattoDao().Find(_id.GetValueOrDefault(), false); if(contatto != null) item.Contatti.Add(contatto); } // Lista Gruppi var gruppi = item.Gruppi.ToArray(); foreach (var personaGruppo in gruppi) { personaGruppo.Gruppo.Persone.Remove(personaGruppo); personaGruppo.Persona.Gruppi.Remove(personaGruppo); personaGruppo.Gruppo = null; personaGruppo.Persona = null; } item.Gruppi.Clear(); foreach (var idGruppo in dto.Gruppi) { var gruppo = daoFactory.GetGruppoDao().Find(idGruppo, false); if(gruppo != null) { var personaGruppo = new PersonaGruppo(item, gruppo); daoFactory.GetPersonaGruppoDao().SaveOrUpdate(personaGruppo); } } // Unità Immobiliari var unitaImmobiliari = daoFactory.GetUnitaImmobiliareDao().GetByPersona(item.ID); foreach (var unitaImmobiliare in unitaImmobiliari) { unitaImmobiliare.Descrizione = daoFactory.GetUnitaImmobiliareDao().GetUnitaImmobiliareDescrizione(unitaImmobiliare); } daoFactory.GetPersonaDao().Update(item); result = true; } else { // Eccezione: Sul db c'è qualche cosa di più nuovo. _log.ErrorFormat("Errore nel salvataggio della persona - {0} id:{1} - il dato sul db è più recente di quello che si vuole salvare", Utility.GetMethodDescription(), dto.ID); } } catch (Exception ex) { _log.ErrorFormat("Errore nel salvataggio della persona - {0} - id:{1}", ex, Utility.GetMethodDescription(), dto.ID); throw; } return result; }
private bool insert(PersonaDTO dto, out Persona item) { item = null; var daoFactory = _windsorRepository.GetDaoFactory(_info.Azienda); try { if (dto.DataNascita != null) { if (!Conversione.IsSqlSmallDateTime(dto.DataNascita.GetValueOrDefault())) { dto.DataNascita = null; _log.WarnFormat("ATTENZIONE: Tentativo di memorizzare una data di nascita non corretta - {0} - persona:{1} - data:{2}", Utility.GetMethodDescription(), dto.ID, dto.DataNascita.GetValueOrDefault()); } } item = new Persona(dto.TipoPersona, dto.Nome, dto.Cognome, dto.Azienda, true) { AziendaID = dto.Azienda, CodiceFiscale = dto.CodiceFiscale, Cognome = dto.Cognome, DataNascita = dto.DataNascita, Nome = dto.Nome, Note = dto.Note, PartitaIva = dto.PartitaIva, RagioneSociale = dto.RagioneSociale, Sesso = dto.Sesso, Titolo = dto.Titolo, Iban = dto.Iban }; if(!string.IsNullOrEmpty(dto.Username)) item.DatiAutenticazione = new DatiAutenticazionePersona {Username = dto.Username, Password = dto.Password}; // Se iban è valorizzato i dati singoli devono sempre essere estrapolati dall'IBAN if (!string.IsNullOrEmpty(item.Iban)) { var coord = new CoordinateBancarie(); if (coord.SetIBAN(item.Iban)) { item.Abi = coord.Abi; item.Cab = coord.Cab; item.ContoCorrente = coord.ContoCorrente; item.Cin = coord.Cin; } } else { item.Abi = dto.Abi; item.Cab = dto.Cab; item.ContoCorrente = dto.ContoCorrente; item.Cin = dto.Cin; } if (dto.IndirizzoResidenza != null) { if (item.IndirizzoResidenza == null) item.IndirizzoResidenza = new Address(); item.IndirizzoResidenza.Cap = dto.IndirizzoResidenza.Cap; item.IndirizzoResidenza.Civico = dto.IndirizzoResidenza.Civico; item.IndirizzoResidenza.Indirizzo = dto.IndirizzoResidenza.Indirizzo; item.IndirizzoResidenza.Localita = dto.IndirizzoResidenza.Localita; item.IndirizzoResidenza.Presso = dto.IndirizzoResidenza.Presso; if (dto.IndirizzoResidenza.CodiceComune != null) item.IndirizzoResidenza.Comune = daoFactory.GetComuneDao().Find(dto.IndirizzoResidenza.CodiceComune, false); } if (dto.Domicilio != null) { if (item.Domicilio == null) item.Domicilio = new Address(); item.Domicilio.Cap = dto.Domicilio.Cap; item.Domicilio.Civico = dto.Domicilio.Civico; item.Domicilio.Indirizzo = dto.Domicilio.Indirizzo; item.Domicilio.Localita = dto.Domicilio.Localita; item.Domicilio.Presso = dto.Domicilio.Presso; if (dto.Domicilio.CodiceComune != null) item.Domicilio.Comune = daoFactory.GetComuneDao().Find(dto.Domicilio.CodiceComune, false); } if (dto.Recapito != null) { if (item.Recapito == null) item.Recapito = new Address(); item.Recapito.Cap = dto.Recapito.Cap; item.Recapito.Civico = dto.Recapito.Civico; item.Recapito.Indirizzo = dto.Recapito.Indirizzo; item.Recapito.Localita = dto.Recapito.Localita; item.Recapito.Presso = dto.Recapito.Presso; if (dto.Recapito.CodiceComune != null) item.Recapito.Comune = daoFactory.GetComuneDao().GetById(dto.Recapito.CodiceComune, false); } if (dto.ComuneNascita != null) { _idComune = dto.ComuneNascita.ID; item.ComuneNascita = daoFactory.GetComuneDao().GetById(_idComune, false); } else item.ComuneNascita = null; //Lista Contatti item.Contatti.Clear(); foreach (var t in dto.Contatti) { _id = t.ID; if (t.Stato != string.Empty) _id = getContattoRepository(item).ManageDomainEntity(t, false); item.Contatti.Add(daoFactory.GetContattoDao().GetById(_id.GetValueOrDefault(), false)); } // Lista Gruppi item.Gruppi.Clear(); foreach (var idGruppo in dto.Gruppi) { var gruppo = daoFactory.GetGruppoDao().Find(idGruppo, false); if (gruppo != null) { var personaGruppo = new PersonaGruppo(item, gruppo); daoFactory.GetPersonaGruppoDao().SaveOrUpdate(personaGruppo); } } daoFactory.GetPersonaDao().SaveOrUpdate(item); // Dati autenticazione (solo ora perchè necessita dell'ID) if(item.DatiAutenticazione == null || string.IsNullOrEmpty(item.DatiAutenticazione.Username)) { if(item.DatiAutenticazione == null) item.DatiAutenticazione = new DatiAutenticazionePersona(); var service = _windsorRepository.GetContainer(_info.Azienda).Resolve<IPersonaService>(); service.SetDatiAutenticazione(item); } // Unità Immobiliari var unitaImmobiliari = daoFactory.GetUnitaImmobiliareDao().GetByPersona(item.ID); foreach (var unitaImmobiliare in unitaImmobiliari) { unitaImmobiliare.Descrizione = daoFactory.GetUnitaImmobiliareDao().GetUnitaImmobiliareDescrizione(unitaImmobiliare); } } catch (Exception ex) { _log.Error("Errore nell'inserimento delle persone: " + Utility.GetMethodDescription() + " - id:" + dto.ID, ex); throw; } return true; }
private void contoCorrenteLeave(object sender, EventArgs e) { if (abi.Value != null && cab.Value != null && contoCorrente.Value != null) { iban.Leave -= ibanLeave; var coord = new CoordinateBancarie { Abi = abi.Value.ToString(), Cab = cab.Value.ToString(), ContoCorrente = contoCorrente.Value.ToString() }; if (contoCorrente.Value.ToString().Length < 12) Fornitore.PersonaRiferimento.ContoCorrente = coord.NormalizzaContoCorrente(contoCorrente.Value.ToString()); Fornitore.PersonaRiferimento.Cin = coord.CalcolaCin(); Fornitore.PersonaRiferimento.Iban = coord.CalcolaIBAN(); iban.Leave += ibanLeave; } }
private void ibanLeave(object sender, EventArgs e) { if (iban.Value != null) { Fornitore.PersonaRiferimento.Iban = iban.Value.ToString(); var coord = new CoordinateBancarie(); if (coord.SetIBAN(iban.Value.ToString())) { Fornitore.PersonaRiferimento.Abi = coord.Abi; Fornitore.PersonaRiferimento.Cab = coord.Cab; Fornitore.PersonaRiferimento.Cin = coord.Cin; Fornitore.PersonaRiferimento.ContoCorrente = coord.ContoCorrente; } } }
private RisultatoElaborazioneCBI elaboraMovimento14(string linea, IList<DatiBancariCondomini> datiBancari) { RisultatoElaborazioneCBI anomalie = null; _dataScadenza = convertToData(linea.Substring(22, 6)); _importo = decimal.Parse(linea.Substring(33, 13))/100; _causaleRicezione = linea.Substring(28, 5); // Trovo banca di accredito var abi = linea.Substring(69, 5); var cab = linea.Substring(74, 5); var contocorrente = linea.Substring(79, 12); var coord = new CoordinateBancarie { Abi = abi, Cab = cab, ContoCorrente = contocorrente }; var iban = coord.CalcolaIBAN(); _banca = datiBancari.FirstOrDefault(item => item.Iban == iban); return anomalie; }