示例#1
0
        /// <summary>
        /// Crea uno Dato bancario valido
        /// </summary>
        public DatiBancariCondomini(string iban, Condominio stabile)
        {
            if (stabile != null)
            {
                _condominioRiferimento = stabile;
                _iban = iban;

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

                _condominioRiferimento.DatiBancari.Add(this);
            }
        }
示例#2
0
        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;
        }
示例#3
0
        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;
        }
        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;
        }
示例#5
0
 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;
 }
示例#6
0
        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;
                }
            }
        }
示例#7
0
        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;
                            }
                        }
                    }
                }
            }
        }
示例#8
0
        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;
        }