/// <summary>
        /// Crea un Proprietario valido
        /// </summary>
        public ModelloContabileFornitore(Fornitore fornitore, ModelloRegistrazioneContabile modello, LogTransazione logTransazione)
        {
            Fornitore = fornitore;
            Modello = modello;

            if (LogTransazione != null)
                LogTransazione.ModelliContabiliFornitore.Add(this);
        }
Beispiel #2
0
 /// <summary>
 /// Crea un generico Contratto di Appalto valido
 /// </summary>
 public ContrattoAppalto(TipoContratto tipoContratto, Condominio condominio, Fornitore fornitore)
 {
     Tipo = tipoContratto;
     CondominioRiferimento = condominio;
     FornitoreAttuale = fornitore;
     if(condominio != null)
         condominio.ContrattiAppalto.Add(this);
 }
Beispiel #3
0
 public AgenziaAssicurativa(Persona persona, Fornitore fornitore, string agenzia, int? aziendaID) : base(persona, aziendaID)
 {
     if (aziendaID != null)
     {
         Fornitore = fornitore;
         _agenzia = agenzia;
     }
 }
Beispiel #4
0
 public Utenza(TipoUtenza tipo, string numero, Fornitore fornitore, Condominio condominio, DatiBancariCondomini coordinateBancarie)
 {
     Fornitore = fornitore;
     Condominio = condominio;
     Tipo = tipo;
     Numero = numero;
     CoordinateBancarie = coordinateBancarie;
 }
Beispiel #5
0
        /// <summary>
        /// Crea una Spesa valida
        /// </summary>
        public Spesa(Fornitore fornitore, Esercizio esercizio, LogTransazione logTransazione)
        {
            FornitoreRiferimento = fornitore;
            EsercizioRiferimento = esercizio;
            Stato = StatoSpesaEnum.Inserita;

            LogTransazione = logTransazione;
            if (LogTransazione != null)
                LogTransazione.Spese.Add(this);
        }
        public void SetUp()
        {
            _documentService = MockRepository.GenerateStub<IDocumentService>();
            _fileSystem = MockRepository.GenerateStub<IFileSystem>();

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

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

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

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

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

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

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

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

            _daoFactory = MockRepository.GenerateStub<IDaoFactory>();

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

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

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

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

            _utenzaDocumentoService = MockRepository.GenerateMock<UtenzaDocumentoService>(_daoFactory, _documentService, _fileSystem);
        }
Beispiel #7
0
        public IList<GestioneCondomini.Domain.Spesa> GetSoggetteRitenutaByFornitoreCondominioAnno(Fornitore fornitore, Condominio condominio, int anno)
        { 
            try
            {
                const string hql = "FROM Spesa SPE LEFT JOIN FETCH SPE.Scadenze SCA LEFT JOIN FETCH SCA.Pagamenti PAG WHERE SPE.EsercizioRiferimento.CondominioRiferimento = :condominio AND SPE.FornitoreRiferimento = :fornitore AND year(PAG.Data) = :anno AND PAG.RitenutaAcconto.Importo > 0 AND (PAG.Stato = :stato1 OR PAG.Stato = :stato2 OR PAG.Stato = :stato3 OR PAG.Stato = :stato4)";
                var parameters = new List<QueryParam>(6)
                {
                    new QueryParam("fornitore", fornitore.ID),
                    new QueryParam("condominio", condominio.ID),
                    new QueryParam("anno", anno),
                    new QueryParam("stato1", Conversione.ToHQLParameter(StatoSpesaEnum.Pagata)),
                    new QueryParam("stato2", Conversione.ToHQLParameter(StatoSpesaEnum.ParzialmentePagata)),
                    new QueryParam("stato3", Conversione.ToHQLParameter(StatoSpesaEnum.PagataAltroAmministratore)),
                    new QueryParam("stato4", Conversione.ToHQLParameter(StatoSpesaEnum.Evasa))
                };

                return _daoFactory.GetSpesaDao().GetByQuery(hql, parameters.ToArray());
            }
            catch (Exception ex)
            {
                _log.ErrorFormat("Errore inaspettato nella lettura delle spese soggette a ritenuta per fornitore anno - {0} - fornitore:{1} - anno:{2}", ex, Utility.GetMethodDescription(), fornitore.ID, anno);
                throw;
            }
        }
        /// <summary>
        /// RECORD DI TIPO "H": Dati relativi alla comunicazione dati certificazioni lavoro autonomo, provvigioni e redditi diversi del mod. 770/20XX semplificato
        /// </summary>
        /// <param name="condominio">Condominio di riferimento</param>
        /// <param name="fornitore">Fornitore a cui è stata trattenuta l'imposta</param>
        /// <param name="ritenute">Elenco delle trattenute per fornitore</param>
        /// <param name="progressivoModulo">Progressivo del modulo compilato</param>
        /// <param name="sw">File di scrittura</param>
        private void writeRowH(Condominio condominio, Fornitore fornitore, int anno, IGrouping<int, Ritenuta> ritenute, int progressivoModulo, StreamWriter sw)
        {
            try
            {
                StringBuilder sb = new StringBuilder(1900);

                //======================================================
                // CAMPI POSIZIONALI (da carattere 1 a carattere 89)
                //======================================================

                // Tipo record
                sb.Append("H");

                // Codice Fiscale del soggetto dichiarante (Condominio)
                sb.Append(condominio.CodiceFiscale.PadRight(16, ' '));

                // Progressivo Modulo
                sb.Append(progressivoModulo.ToString().PadLeft(8, '0'));

                // campo utente
                sb.Append(string.Empty.PadLeft(3));

                // Tipo operazione
                sb.Append(string.Empty.PadLeft(1));

                // Codice Fiscale del percipiente (Fornitore)
                sb.Append(fornitore.GetCodiceFiscale().PadRight(16));

                // filler
                sb.Append(string.Empty.PadLeft(8));

                // campo utente per identificativo dichiarazione
                sb.Append(string.Empty.PadRight(20));

                // Identificativo del produttore del software (codice fiscale)
                sb.Append("02818651206".PadRight(16));

                //======================================================
                // CAMPI NON POSIZIONALI (da carattere 90)
                //======================================================

                //---------------------------------------------
                // Dati relativi al percipiente delle somme
                //---------------------------------------------

                // Codice fiscale
                sb.Append(getCampoNonPosizionale("AU001001", fornitore.GetCodiceFiscale(), AllineamentoCaratteri.Sinistro));

                // Cognome o denominazione
                if (fornitore.PersonaRiferimento.TipoPersona == Gipasoft.Sfera.Enums.TipoPersonaEnum.Giuridica)
                    sb.Append(getCampoNonPosizionale("AU001002", Gipasoft.Library.Conversione.ToCBI(fornitore.PersonaRiferimento.RagioneSociale), AllineamentoCaratteri.Sinistro));
                else
                {
                    // Cognome
                    sb.Append(getCampoNonPosizionale("AU001002", Gipasoft.Library.Conversione.ToCBI(fornitore.PersonaRiferimento.Cognome), AllineamentoCaratteri.Sinistro));

                    // Nome
                    sb.Append(getCampoNonPosizionale("AU001003", Gipasoft.Library.Conversione.ToCBI(fornitore.PersonaRiferimento.Nome), AllineamentoCaratteri.Sinistro));

                    // Sesso
                    if (fornitore.PersonaRiferimento.TipoPersona == Gipasoft.Sfera.Enums.TipoPersonaEnum.Fisica)
                    {
                        if(fornitore.PersonaRiferimento.Sesso != Gipasoft.Sfera.Enums.SessoEnum.Undefined)
                            sb.Append(getCampoNonPosizionale("AU001004", fornitore.PersonaRiferimento.Sesso.ToString().Substring(0, 1).ToUpper(), AllineamentoCaratteri.Sinistro));

                        // Data di nascita
                        sb.Append(getCampoNonPosizionale("AU001005", convertData(fornitore.PersonaRiferimento.DataNascita), AllineamentoCaratteri.Destro));

                        // Comune di nascita
                        sb.Append(getCampoNonPosizionale("AU001006", Gipasoft.Library.Conversione.ToCBI(fornitore.PersonaRiferimento.ComuneNascita.Descrizione), AllineamentoCaratteri.Sinistro));

                        // Provincia di nascita
                        if (int.Parse(fornitore.PersonaRiferimento.ComuneNascita.Codice) <= 999201)
                            sb.Append(getCampoNonPosizionale("AU001007", fornitore.PersonaRiferimento.ComuneNascita.ProvinciaAppartenenza.Codice, AllineamentoCaratteri.Sinistro));
                        else
                            sb.Append(getCampoNonPosizionale("AU001007", "EE", AllineamentoCaratteri.Sinistro));
                    }
                }

                // Comune di residenza
                sb.Append(getCampoNonPosizionale("AU001008", Gipasoft.Library.Conversione.ToCBI(fornitore.PersonaRiferimento.IndirizzoResidenza.Comune.Descrizione), AllineamentoCaratteri.Sinistro));

                // Provincia di residenza
                sb.Append(getCampoNonPosizionale("AU001009", fornitore.PersonaRiferimento.IndirizzoResidenza.Comune.ProvinciaAppartenenza.Codice, AllineamentoCaratteri.Sinistro));

                // Via e numero civico
                sb.Append(getCampoNonPosizionale("AU001011", Gipasoft.Library.Conversione.ToCBI(fornitore.PersonaRiferimento.IndirizzoResidenza.GetIndirizzoCompleto()), AllineamentoCaratteri.Sinistro));

                //---------------------------------------------
                // Dati relativi alle somme erogate
                //---------------------------------------------

                IList<Spesa> speseSoggette = _spesaService.GetSoggetteRitenutaByFornitoreCondominioAnno(fornitore, condominio, anno);
                decimal imponibileIva = speseSoggette.Sum(item => item.Imponibile);
                decimal imponibileRitenuta = speseSoggette.Sum(item => item.GetImponibileRitenuta());
                decimal altreSommeNonSoggette = Math.Truncate(imponibileIva - imponibileRitenuta);

                // Causale
                string causale = "W";
                if (fornitore.CodiceTributo == "1040")
                    causale = "A";
                sb.Append(getCampoNonPosizionale("AU001018", causale, AllineamentoCaratteri.Sinistro));

                // Ammontare Lordo Corrisposto (al netto di IVA)
                sb.Append(getCampoNonPosizionale("AU001021", Math.Truncate(imponibileIva).ToString(), AllineamentoCaratteri.Destro));

                // Altre somme non soggette a ritenuta
                if(altreSommeNonSoggette > 0)
                    sb.Append(getCampoNonPosizionale("AU001023", altreSommeNonSoggette.ToString(), AllineamentoCaratteri.Destro));

                // Imponibile
                sb.Append(getCampoNonPosizionale("AU001024", Math.Truncate(imponibileIva - altreSommeNonSoggette).ToString(), AllineamentoCaratteri.Destro));

                // Ritenute a titolo di acconto
                sb.Append(getCampoNonPosizionale("AU001025", Math.Truncate(ritenute.Sum(item => item.Importo.GetValueOrDefault())).ToString(), AllineamentoCaratteri.Destro));

                //======================================================
                // CAMPI POSIZIONALI (da carattere 1890 a carattere 1900)
                //======================================================

                int charToEnd = 1889 - sb.ToString().Length;
                sb.Append(string.Empty.PadRight(charToEnd));

                // filler
                sb.Append(string.Empty.PadLeft(8));

                //---------------------------------------------
                // Ultimi caratteri di controllo
                //---------------------------------------------
                sb.Append("A");

                // CarriageReturn LineFeed
                sb.Append(CRLF);

                sw.Write(sb.ToString());
            }
            catch (Exception ex)
            {
                log4net.MDC.Set("user", Gipasoft.Security.Login.Instance.CurrentLogin().LoginName);
                _log.Fatal("Errore inaspettato durante la creazione della sezione B per il modelle 770 -" + Gipasoft.Library.Utility.GetMethodDescription() + " - condominio:" + condominio.ID + " - fornitore:" + fornitore.ID, ex);
                throw ex;
            }
        }
Beispiel #9
0
        /// <summary>
        /// Crea un movimento contabile valido.
        /// E' relativo al conto patrimoniale relativo alla registrazione di una spesa
        /// </summary>
        public MovimentoContabile(TestataMovimentoContabile testata, Fornitore fornitore, CausaleContabile causale, int? numeroRiga, Conto conto, decimal? importo, string segno)
        {
            Causale = causale;
            FornitoreRiferimento = fornitore;
            NumeroRiga = numeroRiga;
            ContoRiferimento = conto;
            Testata = testata;
            Importo = importo;
            Segno = segno;
            Stato = StatoMovimentoContabileEnum.Inserito;
            IsVisibileGestione = true;

            if (Testata != null)
            {
                Testata.Movimenti.Add(this);
                setNumeroRegistrazione();
            }

            //if (FornitoreRiferimento != null)
            //    FornitoreRiferimento.MovimentiContabili.Add(this);
        }
        public string LoadFornitori(string key, int idAzienda, string password) 
        {
            string message = string.Empty;

            try
            {
                string databasePath = saveDatabase(key);
                var conn = new OleDbConnection(string.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties=\"Excel 12.0 Xml;HDR=YES;IMEX=1\";", databasePath));

                var ds = new DataSet();

                var fornitoriAdapter = new OleDbDataAdapter("SELECT * FROM CT06F0 WHERE CODITTA = 1 AND CODPOS >= 500 AND CODPOS < 5000 AND (PIVA > 0 OR CODFISC is not null) AND VIA <> 'PIANO GENERALE DI STUDIO' ORDER BY CODSTAB, CODPOS", conn);

                fornitoriAdapter.Fill(ds, "Fornitori");
                var fornitori = _daoFactory.GetFornitoreDao().GetByAzienda(idAzienda);
                var fornitoriPresenti = fornitori.ToDictionary(item => item.DisplayName);

                // ================================================================================================
                //  Importazione Fornitori
                // ================================================================================================
                foreach (DataRow row in ds.Tables["Fornitori"].Rows)
                {
                    try
                    {
                        // Persona
                        // ---------
                        string cognomePersona = row["NOME"].ToString().Trim();
                        if (!string.IsNullOrEmpty(cognomePersona))
                        {
                            Fornitore fornitore;
                            if (row["PIVA"] != DBNull.Value && row["PIVA"].ToString().Trim() != "0")
                                fornitore = _daoFactory.GetFornitoreDao().GetByPartitaIva(row["PIVA"].ToString(), idAzienda);
                            else
                                fornitore = _daoFactory.GetFornitoreDao().GetByCodiceFiscale(row["CODFISC"].ToString(), idAzienda);
                            if (fornitore == null && fornitoriPresenti.ContainsKey(cognomePersona))
                                fornitore = fornitoriPresenti[cognomePersona];

                            if (fornitore == null)
                            {
                                var tipoPersona = Sfera.Enums.TipoPersonaEnum.Giuridica;
                                if (row["CODFISC"] != DBNull.Value && !string.IsNullOrEmpty(row["CODFISC"].ToString().Trim()) && row["CODFISC"].ToString().Trim()[0] >= 'A' && row["CODFISC"].ToString().Trim()[0] <= 'Z')
                                    tipoPersona = Sfera.Enums.TipoPersonaEnum.Fisica;

                                var persona = new Persona(tipoPersona, string.Empty, cognomePersona, idAzienda, false)
                                {
                                    IndirizzoResidenza = new Address
                                                            {
                                                                Indirizzo = row["VIA"].ToString(),
                                                                Cap = row["CAP"].ToString()
                                                            }
                                };

                                if (persona.TipoPersona.GetValueOrDefault() == Sfera.Enums.TipoPersonaEnum.Giuridica)
                                {
                                    persona.RagioneSociale = persona.Cognome;
                                    persona.Cognome = null;
                                }

                                if (row["CODFISC"] != DBNull.Value && !string.IsNullOrEmpty(row["CODFISC"].ToString()))
                                    persona.CodiceFiscale = row["CODFISC"].ToString().ToUpper();
                                if (row["PIVA"] != DBNull.Value && !string.IsNullOrEmpty(row["PIVA"].ToString()))
                                    persona.PartitaIva = row["PIVA"].ToString();
                                if (row["TITOLO"] != DBNull.Value && !string.IsNullOrEmpty(row["TITOLO"].ToString()))
                                    persona.Titolo = row["TITOLO"].ToString();

                                persona.CodiceImportazione = row["CODITTA"] + "&" + row["CODSTAB"] + "&" + row["ESERCIZIO"] + "&" + row["CODPOS"];

                                if (row["LOC"] != DBNull.Value && !string.IsNullOrEmpty(row["LOC"].ToString()))
                                {
                                    IList<Comune> comuni = _daoFactory.GetComuneDao().GetByDescrizione(row["LOC"].ToString().Trim());
                                    if (comuni.Count == 1)
                                        persona.IndirizzoResidenza.Comune = comuni[0];
                                    else
                                    {
                                        var comuniDescr = comuni.Where(item => item.Descrizione.Trim().ToUpper() == row["LOC"].ToString().Trim().ToUpper()).ToList();
                                        if (comuniDescr.Count() == 1)
                                            persona.IndirizzoResidenza.Comune = comuniDescr.SingleOrDefault();
                                    }

                                    if (persona.IndirizzoResidenza.Comune == null)
                                        persona.IndirizzoResidenza.Localita = row["LOC"].ToString();
                                }

                                // ---------
                                // Contatti
                                // ---------
                                if (row["TEL1"] != DBNull.Value && !string.IsNullOrEmpty(row["TEL1"].ToString().Trim()))
                                    persona.Contatti.Add(new Telefono(row["TEL1"].ToString(), true, persona));
                                if (row["TEL2"] != DBNull.Value && !string.IsNullOrEmpty(row["TEL2"].ToString().Trim()))
                                    persona.Contatti.Add(new Telefono(row["TEL2"].ToString(), false, persona));
                                if (row["E-MAIL"] != DBNull.Value && !string.IsNullOrEmpty(row["E-MAIL"].ToString().Trim()))
                                    persona.Contatti.Add(new Email(row["E-MAIL"].ToString(), true, persona));

                                _daoFactory.GetPersonaDao().SaveOrUpdate(persona);

                                // ===========================
                                // Fornitore
                                // ===========================
                                fornitore = new Fornitore(persona, idAzienda)
                                {
                                    CodiceImportazione =
                                        row["CODITTA"] + "&" + row["CODSTAB"] + "&" + row["ESERCIZIO"] +
                                        "&" + row["CODPOS"]
                                };
                                _daoFactory.GetFornitoreDao().SaveOrUpdate(fornitore);

                                fornitoriPresenti.Add(cognomePersona, fornitore);
                            }
                            var cond = _daoFactory.GetCondominioDao().GetByCodice(row["CODSTAB"].ToString().Trim().PadLeft(3, '0'), idAzienda);
                            cond.FornitoriPreferiti.Add(fornitore);                        
                        }
                    }
                    catch (Exception ex)
                    {
                        
                        _log.Error("Errore inaspettato l'importazione di un fornitore da CONDOR: " + Library.Utility.GetMethodDescription() + " (Fornitore) - idFornitore:" + row["CODITTA"] + "&" + row["CODSTAB"] + "&" + row["CODPOS"] + " - nome:" + row["NOME"], ex);
                        throw;
                    }
                }
            }
            catch (OleDbException ex)
            {
                message = ex.Message;
                
                _log.Error("Errore inaspettato nell'importazione dei fornitori da CONDOR: " + Library.Utility.GetMethodDescription() + " - message: " + message, ex);
            }
            catch (Exception ex)
            {
                message = ex.Message;
                
                _log.Error("Errore inaspettato nell'importazione dei fornitori da CONDOR: " + Library.Utility.GetMethodDescription() + " - message: " + message, ex);
            }

            return message;
        }
Beispiel #11
0
        public virtual IUpdatableBusinessEntity Copy()
        {
            var persona = (Persona)PersonaRiferimento.Copy();
            var fornitore = new Fornitore(persona, _aziendaID);

            return fornitore;
        }
        }

        /// <summary>
        /// RECORD DI TIPO "H":  Dati relativi alla comunicazione dati certificazioni lavoro autonomo, provvigioni e redditi diversi - CU 2015
        /// </summary>
        /// <param name="condominio">Condominio di riferimento</param>
        /// <param name="fornitore">Fornitore a cui è stata trattenuta l'imposta</param>
        /// <param name="anno"></param>
        /// <param name="datiCertificazione">Dati delle certificazioni</param>
        /// <param name="esenteRegimeMinimo">Identifica se il fornitore è esente per regime minimo</param>
        /// <param name="progressivoCertificazione"></param>
        /// <param name="progressivoModulo">Progressivo del modulo compilato</param>
        /// <param name="sw">File di scrittura</param>
        private void writeRowH(Condominio condominio, Fornitore fornitore, int anno, IList<DettaglioDatiCertificazioneDTO> datiCertificazione, bool esenteRegimeMinimo, int progressivoCertificazione, int progressivoModulo, StreamWriter sw)
        {
            try
            {
                var sb = new StringBuilder(1900);

                var datiImponibile = new List<DettaglioDatiCertificazioneDTO>();
                foreach (var dettaglioDatiCertificazioneDTO in datiCertificazione)
                {
                    if(datiImponibile.All(item => item.IdFattura != dettaglioDatiCertificazioneDTO.IdFattura))
                        datiImponibile.Add(dettaglioDatiCertificazioneDTO);
                }

                //======================================================
                // CAMPI POSIZIONALI (da carattere 1 a carattere 89)
                //======================================================
                var formatoDecimale = "#0.00";
                var cultureInfo = new CultureInfo("it-IT");

                // Tipo record
                sb.Append("H");

                // Codice fiscale del Sostituto d'imposta (Condominio)
                sb.Append(condominio.CodiceFiscale.PadRight(16, ' '));

                // Progressivo Modulo
                sb.Append(progressivoModulo.ToString(CultureInfo.InvariantCulture).PadLeft(8, '0'));

                // Codice Fiscale del percipiente (Fornitore)
                sb.Append(fornitore.GetCodiceFiscale().ToUpper().PadRight(16));

                // Progressivo Certificazione
                sb.Append(progressivoCertificazione.ToString(CultureInfo.InvariantCulture).PadLeft(5, '0'));

                // filler
                sb.Append(string.Empty.PadLeft(17));

                // Spazio a disposizione dell'utente 
                sb.Append(string.Empty.PadRight(6));

                // filler
                sb.Append(string.Empty.PadLeft(14));
                // filler
                sb.Append(string.Empty.PadLeft(1));
                // filler
                sb.Append(string.Empty.PadLeft(4));
                // filler
                sb.Append(string.Empty.PadLeft(1));

                //======================================================
                // CAMPI NON POSIZIONALI (da carattere 90)
                //======================================================

                //---------------------------------------------
                // Dati relativi al percipiente delle somme
                //---------------------------------------------
                // Causale
                sb.Append(getCampoNonPosizionale("AU001001", fornitore.GetTipologiaReddito(), AllineamentoCaratteri.Sinistro));

                // Anno
                //sb.Append(getCampoNonPosizionale("AU001002", anno.ToString(cultureInfo), AllineamentoCaratteri.Destro));

                // Ammontare lordo corrisposto
                sb.Append(getCampoNonPosizionale("AU001004", Math.Round(datiCertificazione.Sum(item => item.CompensiSoggetti + item.CompensiNonSoggetti + item.AltreSpeseNonSoggette), 2).ToString(formatoDecimale, cultureInfo), AllineamentoCaratteri.Destro));

                // Altre somme non soggette a ritenuta
                var altreSommeNonSoggetteARitenuta = Math.Round(datiCertificazione.Sum(item => item.CompensiNonSoggetti + item.AltreSpeseNonSoggette), 2);
                if (altreSommeNonSoggetteARitenuta > 0)
                {
                    sb.Append(getCampoNonPosizionale("AU001007", altreSommeNonSoggetteARitenuta.ToString(formatoDecimale, cultureInfo), AllineamentoCaratteri.Destro));

                    // Codice
                    sb.Append(getCampoNonPosizionale("AU001006", "3", AllineamentoCaratteri.Destro));
                }

                if (!esenteRegimeMinimo)
                {
                    // Imponibile
                    sb.Append(getCampoNonPosizionale("AU001008", Math.Round(datiCertificazione.Sum(item => item.CompensiSoggetti), 2).ToString(formatoDecimale, cultureInfo), AllineamentoCaratteri.Destro));

                    // Ritenute a titolo di acconto
                    sb.Append(getCampoNonPosizionale("AU001009", Math.Round(datiCertificazione.Sum(item => item.ImportoRitenuta), 2).ToString(formatoDecimale, cultureInfo), AllineamentoCaratteri.Destro));
                }

                //======================================================
                // CAMPI POSIZIONALI (da carattere 1890 a carattere 1900)
                //======================================================

                var charToEnd = 1889 - sb.ToString().Length;
                sb.Append(string.Empty.PadRight(charToEnd));

                // filler
                sb.Append(string.Empty.PadLeft(8));

                //---------------------------------------------
                // Ultimi caratteri di controllo
                //---------------------------------------------
                sb.Append("A");

                // CarriageReturn LineFeed
                sb.Append(CRLF);

                sw.Write(sb.ToString());
            }
            catch (Exception ex)
            {
                _log.ErrorFormat("Errore inaspettato durante la creazione della sezione H per il modello Certificazione Unica - {0} - condominio:{1} - fornitore:{2}", ex, Library.Utility.GetMethodDescription(), condominio.ID, fornitore.ID);
                throw;
        /// <summary>
        /// RECORD DI TIPO "D": Dati anagrafici del percipiente - CU 2015
        /// </summary>
        /// <param name="condominio"></param>
        /// <param name="fornitore">Fornitore percipiente</param>
        /// <param name="progressivoCertificazione">Progressivo della certificazione</param>
        /// <param name="dataDichiarazione"></param>
        /// <param name="progressivoInvio">Progressivo Attribuito dal Servizio telematico alla singola C.U.</param>
        /// <param name="sw">File di scrittura</param>
        /// <param name="tipoOperazione">Identifica se si tratta di un nuovo invio oppure di una sostituzione o un annullamento di un invio precedente</param>
        /// <param name="protocolloComunicazione">Protocollo assegnato dal Servizio telematico alla singola C.U. che si intende sostituire</param>
        private void writeRowD(Condominio condominio, Fornitore fornitore, int progressivoCertificazione, DateTime dataDichiarazione, TipoOperazioneFiscale tipoOperazione, long? protocolloComunicazione, int? progressivoInvio, StreamWriter sw)
        {
            try
            {
                var cognomeFornitore = fornitore.PersonaRiferimento.RagioneSociale;
                var nomeFornitore = string.Empty;
                var sessoFornitore = string.Empty;
                var dataNascitaFornitore = string.Empty;
                if (fornitore.PersonaRiferimento.TipoPersona == TipoPersonaEnum.Fisica)
                {
                    cognomeFornitore = fornitore.PersonaRiferimento.Cognome;
                    nomeFornitore = fornitore.PersonaRiferimento.Nome;
                    sessoFornitore = fornitore.PersonaRiferimento.Sesso.GetValueOrDefault().ToString().ToUpper().Substring(0, 1);
                    dataNascitaFornitore = convertData(fornitore.PersonaRiferimento.DataNascita);
                }

                var sb = new StringBuilder(1900);

                //======================================================
                // CAMPI POSIZIONALI (da carattere 1 a carattere 89)
                //======================================================

                // Tipo record
                sb.Append("D");

                // Codice Fiscale del sostituto d'imposta (Condominio)
                sb.Append(condominio.CodiceFiscale.PadRight(16, ' '));

                // Progressivo Modulo
                const int progressivoModulo = 1;
                sb.Append(progressivoModulo.ToString(CultureInfo.InvariantCulture).PadLeft(8, '0'));

                // Codice fiscale del percipiente
                sb.Append(fornitore.GetCodiceFiscale().PadRight(16, ' '));

                // Progressivo Certificazione
                sb.Append(progressivoCertificazione.ToString(CultureInfo.InvariantCulture).PadLeft(5, '0'));

                // -------------------------------------------------------------------------------------------------------------
                // Sezione da compilare per la sostituzione di una singola certificazione già trasmessa e accolta (Campi 6 e 7)
                // -------------------------------------------------------------------------------------------------------------
                // Protocollo assegnato dal Servizio telematico alla singola C.U. che si intende sostituire - Identificativo dell'invio
                sb.Append(tipoOperazione == TipoOperazioneFiscale.Nuovo
                    ? string.Empty.PadLeft(17, '0')
                    : protocolloComunicazione.ToString().PadLeft(17, '0'));

                // Protocollo assegnato dal Servizio telematico alla singola C.U. che si intende sostituire - Progressivo Attribuito dal Servizio telematico alla singola C.U.
                sb.Append(tipoOperazione == TipoOperazioneFiscale.Nuovo
                    ? string.Empty.PadLeft(6, '0')
                    : progressivoInvio.ToString().PadLeft(6, '0'));

                // Spazio a disposizione dell'utente 
                sb.Append(string.Empty.PadLeft(14));

                // Tipo operazione: Annullamento - Sostituzione
                var tipoOperazioneAnnSost = string.Empty;
                switch (tipoOperazione)
                {
                    case TipoOperazioneFiscale.Annullamento:
                        tipoOperazioneAnnSost = "A";
                        break;
                    case TipoOperazioneFiscale.Sostituzione:
                        tipoOperazioneAnnSost = "S";
                        break;
                }
                sb.Append(tipoOperazioneAnnSost.PadLeft(1));

                // Filler
                sb.Append(string.Empty.PadLeft(4));

                // Flag conferma Singola Certificazione per i controlli di rispondenza
                sb.Append("0");

                //======================================================
                // CAMPI NON POSIZIONALI (da carattere 90)
                //======================================================

                //---------------------------------------------
                // Dati relativi al datore di lavoro, ente pensionistico o altro sostituto d'imposta
                //---------------------------------------------

                // Codice Fiscale
                sb.Append(getCampoNonPosizionale("DA001001", condominio.CodiceFiscale, AllineamentoCaratteri.Sinistro));

                // Cognome o denominazione 
                sb.Append(getCampoNonPosizionale("DA001002", condominio.Descrizione, AllineamentoCaratteri.Sinistro));

                // Comune di residenza 
                sb.Append(getCampoNonPosizionale("DA001004", condominio.Indirizzo.Comune.Descrizione, AllineamentoCaratteri.Sinistro));

                // Provincia di residenza 
                sb.Append(getCampoNonPosizionale("DA001005", getSiglaProvincia(condominio.Indirizzo.Comune), AllineamentoCaratteri.Sinistro));

                // Cap 
                sb.Append(getCampoNonPosizionale("DA001006", condominio.Indirizzo.Cap, AllineamentoCaratteri.Sinistro));

                // Via e numero civico  
                sb.Append(getCampoNonPosizionale("DA001007", string.Format("{0} {1}", condominio.Indirizzo.Indirizzo, condominio.Indirizzo.Civico), AllineamentoCaratteri.Sinistro));

                // Codice attività
                sb.Append(getCampoNonPosizionale("DA001010", "970000", AllineamentoCaratteri.Sinistro));

                // Codice Sede  
                var codiceSedeEntratel = "000";
                if (!string.IsNullOrEmpty(condominio.Azienda.CodiceSedeEntratel))
                    codiceSedeEntratel = condominio.Azienda.CodiceSedeEntratel;
                sb.Append(getCampoNonPosizionale("DA001011", codiceSedeEntratel, AllineamentoCaratteri.Sinistro));

                //---------------------------------------------
                // Dati relativi al dipendente, pensionato o altro percettore delle somme
                //---------------------------------------------

                // Codice Fiscale
                sb.Append(getCampoNonPosizionale("DA002001", fornitore.GetCodiceFiscale().ToUpper(), AllineamentoCaratteri.Sinistro));

                // Cognome
                sb.Append(getCampoNonPosizionale("DA002002", cognomeFornitore.ToUpper(), AllineamentoCaratteri.Sinistro));

                // Nome
                sb.Append(getCampoNonPosizionale("DA002003", nomeFornitore.ToUpper(), AllineamentoCaratteri.Sinistro));

                // Sesso 
                sb.Append(getCampoNonPosizionale("DA002004", sessoFornitore, AllineamentoCaratteri.Sinistro));

                // Data di nascita
                sb.Append(getCampoNonPosizionale("DA002005", dataNascitaFornitore, AllineamentoCaratteri.Destro));

                if (fornitore.PersonaRiferimento.ComuneNascita != null)
                {
                    // Comune (o Stato estero) di nascita
                    sb.Append(getCampoNonPosizionale("DA002006", fornitore.PersonaRiferimento.ComuneNascita.Descrizione, AllineamentoCaratteri.Sinistro));

                    // Provincia di nascita (sigla) 
                    sb.Append(getCampoNonPosizionale("DA002007", getSiglaProvincia(fornitore.PersonaRiferimento.ComuneNascita), AllineamentoCaratteri.Sinistro));
                }

                // Domicilio fiscale al 1/1/2014
                // -----------------------------

                // Comune
                sb.Append(getCampoNonPosizionale("DA002020", fornitore.PersonaRiferimento.IndirizzoResidenza.Comune.Descrizione, AllineamentoCaratteri.Sinistro));

                // Provincia (sigla) 
                sb.Append(getCampoNonPosizionale("DA002021", getSiglaProvincia(fornitore.PersonaRiferimento.IndirizzoResidenza.Comune), AllineamentoCaratteri.Sinistro));

                // Codice comune 
                sb.Append(getCampoNonPosizionale("DA002022", fornitore.PersonaRiferimento.IndirizzoResidenza.Comune.CodiceCatastale, AllineamentoCaratteri.Sinistro));


                // Domicilio fiscale al 1/1/2015
                // -----------------------------

                // Comune
                sb.Append(getCampoNonPosizionale("DA002023", fornitore.PersonaRiferimento.IndirizzoResidenza.Comune.Descrizione, AllineamentoCaratteri.Sinistro));

                // Provincia (sigla) 
                sb.Append(getCampoNonPosizionale("DA002024", getSiglaProvincia(fornitore.PersonaRiferimento.IndirizzoResidenza.Comune), AllineamentoCaratteri.Sinistro));

                // Codice comune 
                sb.Append(getCampoNonPosizionale("DA002025", fornitore.PersonaRiferimento.IndirizzoResidenza.Comune.CodiceCatastale, AllineamentoCaratteri.Sinistro));

                // Sezione Firma Certificazione Unica
                // -----------------------------

                // Data Firma Sostituto d'imposta
                sb.Append(getCampoNonPosizionale("DA003001", convertData(dataDichiarazione), AllineamentoCaratteri.Destro));

                // Firma 
                sb.Append(getCampoNonPosizionale("DA003002", "1".PadLeft(16), AllineamentoCaratteri.Destro));


                //======================================================
                // CAMPI POSIZIONALI (da carattere 1890 a carattere 1900)
                //======================================================

                var charToEnd = 1889 - sb.ToString().Length;
                sb.Append(string.Empty.PadRight(charToEnd));

                // filler
                sb.Append(string.Empty.PadLeft(8));

                //---------------------------------------------
                // Ultimi caratteri di controllo
                //---------------------------------------------
                sb.Append("A");

                // CarriageReturn LineFeed
                sb.Append(CRLF);

                sw.Write(sb.ToString());
            }
            catch (Exception ex)
            {
                _log.ErrorFormat("Errore inaspettato durante la creazione della sezione D per il modello Certificazione Unica - {0} - condominio:{1}", ex, Library.Utility.GetMethodDescription(), condominio.ID);
                throw;
Beispiel #14
0
        private FornitoreDTO setDto(Fornitore item)
        {
            if (item != null)
            {
                var perRep = new PersonaRepository(_info, _windsorRepository);

                var dto = Conversione.IsTypeOf(item, typeof (AgenziaAssicurativa))
                              ? new AgenziaAssicurativaDTO()
                              : new FornitoreDTO();

                dto.ID = item.ID;
                dto.AgenziaAssicurativa = item.AgenziaAssicurativa;
                dto.AliquotaCassaProfessionisti = item.AliquotaCassaProfessionisti;
                dto.AliquotaIva = item.AliquotaIva;
                dto.AliquotaRitenutaAcconto = item.AliquotaRitenutaAcconto;
                dto.IsRitenutaCalcolataImponibile = item.IsRitenutaCalcolataImponibile;
                if (item.AziendaID != null)
                    dto.IdAzienda = item.AziendaID.Value;

                dto.CodiceTributo = item.CodiceTributo;
                dto.DisplayName = item.DisplayName;
                dto.ElencoFornitori = item.ElencoFornitori;
                dto.QuadroAc = item.QuadroAc;
                dto.InailIdentificativoAzienda = item.InailIdentificativoAzienda;
                dto.InailPat = item.InailPat;
                dto.Note = item.Note;
                dto.StatoFornitore = item.Stato;
                dto.NumeroPolizza = item.NumeroPolizza;
                dto.NumeroRegistroImprese = item.NumeroRegistroImprese;
                dto.FrequentlyAccessed = item.Preferito;
                dto.IsCompagniaAssicurativa = item.IsCompagniaAssicurativa;
                dto.PrestazioniOccasionali = item.PrestazioniOccasionali;
                dto.Version = item.Version;

                if (item.CompagniaAssicurativa != null)
                {
                    dto.CodiceCompagniaAssicurativa = item.CompagniaAssicurativa.ID;
                    dto.CompagniaAssicurativa = item.CompagniaAssicurativa.DisplayName;
                }

                if (item.ModalitaPagamento != null)
                {
                    dto.CodiceModalitaPagamento = item.ModalitaPagamento.ID;
                    dto.DescrizioneModalitaPagamento = item.ModalitaPagamento.Descrizione;
                    dto.DescrizioneBreveModalitaPagamento = item.ModalitaPagamento.DescrizioneBreve;
                }

                if (item.Qualita != null)
                {
                    dto.TempoIntervento = item.Qualita.TempoIntervento;
                    dto.Prezzo = item.Qualita.Prezzo;
                    dto.Servizio = item.Qualita.Servizio;
                    dto.Tracciabile = item.Qualita.Tracciabile;
                    dto.Certificazione = item.Qualita.Certificazione;
                    dto.Valutazione = item.Qualita.GetValutazione();
                }

                if (item.Tipo != null)
                {
                    dto.IdTipoFornitore = item.Tipo.ID;
                    dto.DescrizioneTipoFornitore = item.Tipo.Descrizione;
                }

                if (item.PersonaRiferimento != null)
                {
                    dto.PersonaRiferimento = perRep.GetByDomainEntity(item.PersonaRiferimento);

                    // Contatti
                    var contatti = new ContattoCollection(item.PersonaRiferimento.Contatti);
                    var tel = contatti.GetFirstContatto<Telefono>();
                    if (tel != null)
                        dto.Telefono = tel.Valore;
                    var cell = contatti.GetFirstContatto<Cellulare>();
                    if (cell != null)
                        dto.Cellulare = cell.Valore;
                    var mail = contatti.GetFirstContatto<Email>();
                    if (mail != null)
                        dto.Email = mail.Valore;

                    var www = contatti.GetFirstContatto<SitoInternet>();
                    if (www != null)
                        dto.SitoInternet = www.Valore;
                }

                if (dto is AgenziaAssicurativaDTO)
                {
                    ((AgenziaAssicurativaDTO) dto).Agenzia = ((AgenziaAssicurativa) item).Agenzia;
                    ((AgenziaAssicurativaDTO) dto).Nominativo = item.DisplayName;

                    if (((AgenziaAssicurativa) item).Fornitore != null)
                    {
                        ((AgenziaAssicurativaDTO) dto).CodiceFornitore = ((AgenziaAssicurativa) item).Fornitore.ID;
                        ((AgenziaAssicurativaDTO)dto).Fornitore = ((AgenziaAssicurativa)item).Fornitore.DisplayName;
                    }
                }

                return dto;
            }

            return new FornitoreDTO {IdAzienda = _info.Azienda};
        }
Beispiel #15
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;
        }
Beispiel #16
0
        private CBIPartyIdentification3 getCreditor(Fornitore creditore)
        {
            var debitor = new CBIPartyIdentification3
            {
                Name = creditore.DisplayName.TrimForSepa().Truncate(70),
                PostalAddress = getPostalAddress6(creditore.PersonaRiferimento.IndirizzoResidenza),
                CountryOfResidence = "IT"
            };

            return debitor;
        }
        private byte[] getModuloLavoratoreAutonomo(Fornitore fornitore, IList<DettaglioDatiCertificazioneDTO> datiCertificazione, bool esenteRegimeMinimo, int anno, int progressivoModulo, byte[] templateDatiLavoratoreAutonomo, Azienda azienda)
        {
            const string formatoDecimale = "#0.00";

            var datiLavoratoreAutonomo = new DatiLavoratoreAutonomoCU
            {
                Causale = fornitore.GetTipologiaReddito(),
                CodiceFiscalePercipiente = fornitore.GetCodiceFiscale(),
                //AnnoRiferimento = anno.ToString(_cultureInfo),
                AmmontareLordoCorrisposto = Math.Round(datiCertificazione.Sum(item => item.CompensiSoggetti + item.CompensiNonSoggetti + item.AltreSpeseNonSoggette), 2).ToString(formatoDecimale, _cultureInfo),
                Imponibile = esenteRegimeMinimo ? string.Empty : Math.Round(datiCertificazione.Sum(item => item.CompensiSoggetti), 2).ToString(formatoDecimale, _cultureInfo),
                Ritenuta = esenteRegimeMinimo ? string.Empty : Math.Round(datiCertificazione.Sum(item => item.ImportoRitenuta), 2).ToString(formatoDecimale, _cultureInfo),
                NumeroModulo = progressivoModulo.ToString(_cultureInfo)
            };

            var altreSommeNonSoggette = Math.Round(datiCertificazione.Sum(item => item.CompensiNonSoggetti + item.AltreSpeseNonSoggette), 2);
            if (altreSommeNonSoggette != 0)
            {
                datiLavoratoreAutonomo.AltreSommeNonSoggette = altreSommeNonSoggette.ToString(formatoDecimale, _cultureInfo);
                datiLavoratoreAutonomo.Codice = "3";
            }

            return FillForm.FillStream(datiLavoratoreAutonomo, templateDatiLavoratoreAutonomo, GestioneFiscaleResources.ModelloCULavoratoreAutonomo_FieldMapping, false, true);
        }
        private string checkFornitore(Fornitore fornitore)
        {
            var message = string.Empty;

            if (fornitore.PersonaRiferimento.IndirizzoResidenza == null)
                message += "Per il fornitore " + fornitore.DisplayName + " non è presente l'<b>INDIRIZZO</b>." + Environment.NewLine;
            else
            {
                if (fornitore.PersonaRiferimento.IndirizzoResidenza.Comune == null)
                    message += "Per il fornitore " + fornitore.DisplayName + " non è presente il <b>COMUNE DI RESIDENZA</b>." + Environment.NewLine;
                if (string.IsNullOrEmpty(fornitore.PersonaRiferimento.IndirizzoResidenza.Indirizzo))
                    message += "Per il fornitore " + fornitore.DisplayName + " non è presente l'<b>INDIRIZZO</b>." + Environment.NewLine;
            }

            if (string.IsNullOrEmpty(fornitore.CodiceTributo))
                message += "Per il fornitore " + fornitore.DisplayName + " non è presente il <b>CODICE TRIBUTO</b>." + Environment.NewLine;

            if (string.IsNullOrEmpty(fornitore.GetCodiceFiscale()))
                message += "Per il fornitore " + fornitore.DisplayName + " non è presente il <b>CODICE FISCALE</b>." + Environment.NewLine;

            if (fornitore.PersonaRiferimento.TipoPersona == null || fornitore.PersonaRiferimento.TipoPersona.GetValueOrDefault() == TipoPersonaEnum.Undefined)
                message += "Per il fornitore " + fornitore.DisplayName + " non è presente il <b>TIPO DI PERSONA (fisica o giuridica)</b>." + Environment.NewLine;
            else if (fornitore.PersonaRiferimento.TipoPersona.GetValueOrDefault() == TipoPersonaEnum.Fisica)
            {
                if (string.IsNullOrEmpty(fornitore.PersonaRiferimento.Cognome))
                    message += "Per il fornitore " + fornitore.DisplayName + " non è presente il <b>COGNOME</b>." + Environment.NewLine;
                if (string.IsNullOrEmpty(fornitore.PersonaRiferimento.Nome))
                    message += "Per il fornitore " + fornitore.DisplayName + " non è presente il <b>NOME</b>." + Environment.NewLine;
                if (fornitore.PersonaRiferimento.Sesso.GetValueOrDefault() == SessoEnum.Undefined)
                    message += "Per il fornitore " + fornitore.DisplayName + " non è presente il <b>SESSO</b>." + Environment.NewLine;
                if (fornitore.PersonaRiferimento.ComuneNascita == null)
                    message += "Per il fornitore " + fornitore.DisplayName + " non è presente il <b>COMUNE DI NASCITA</b>." + Environment.NewLine;
                if (fornitore.PersonaRiferimento.DataNascita == null)
                    message += "Per il fornitore " + fornitore.DisplayName + " non è presente la <b>DATA DI NASCITA</b>." + Environment.NewLine;
            }
            else if (fornitore.PersonaRiferimento.TipoPersona.GetValueOrDefault() == TipoPersonaEnum.Giuridica)
            {
                if (string.IsNullOrEmpty(fornitore.PersonaRiferimento.RagioneSociale))
                    message += "Per il fornitore " + fornitore.DisplayName + " non è presente la <b>RAGIONE SOCIALE</b>." + Environment.NewLine;
                if (!string.IsNullOrEmpty(fornitore.GetCodiceFiscale()))
                {
                    System.Numerics.BigInteger num;
                    if (!System.Numerics.BigInteger.TryParse(fornitore.GetCodiceFiscale(), out num))
                        message += $"Per il fornitore {fornitore.DisplayName} il <b>CODICE FISCALE</b>. {fornitore.GetCodiceFiscale()} non è corretto per le persone giuridiche il codice fiscale deve essere <b>NUMERICO</b>.{Environment.NewLine}";
                }
            }

            return message;
        }
Beispiel #19
0
        private bool insert(FornitoreDTO dto, out Fornitore item)
        {
            item = null;
            var daoFactory = _windsorRepository.GetDaoFactory(_info.Azienda);

            try
            {
                Persona persona = null;
                if (dto.PersonaRiferimento != null)
                {
                    _id = dto.PersonaRiferimento.ID;
                    if ((dto.PersonaRiferimento.Stato == "U") || (dto.PersonaRiferimento.Stato == "I"))
                        _id = getPersonaRepository().ManageDomainEntity(dto.PersonaRiferimento);

                    persona = daoFactory.GetPersonaDao().Find(_id.GetValueOrDefault(), false);
                }

                if(persona != null)
                {
                    Fornitore compagnia = null;
                    if (dto.CodiceCompagniaAssicurativa != null)
                        compagnia = daoFactory.GetFornitoreDao().Find(dto.CodiceCompagniaAssicurativa.Value, false);

                    item = Conversione.IsTypeOf(dto, typeof(AgenziaAssicurativa)) ? new AgenziaAssicurativa(persona, compagnia, dto.AgenziaAssicurativa, dto.PersonaRiferimento.Azienda) : new Fornitore(persona, dto.PersonaRiferimento.Azienda);

                    item.AgenziaAssicurativa = dto.AgenziaAssicurativa;
                    item.AliquotaCassaProfessionisti = dto.AliquotaCassaProfessionisti;
                    item.AliquotaIva = dto.AliquotaIva;
                    item.AliquotaRitenutaAcconto = dto.AliquotaRitenutaAcconto;
                    item.IsRitenutaCalcolataImponibile = dto.IsRitenutaCalcolataImponibile;
                    item.AziendaID = dto.IdAzienda;
                    item.CodiceTributo = dto.CodiceTributo;
                    item.CompagniaAssicurativa = compagnia;
                    item.ElencoFornitori = dto.ElencoFornitori;
                    item.InailIdentificativoAzienda = dto.InailIdentificativoAzienda;
                    item.InailPat = dto.InailPat;
                    item.Note = dto.Note;
                    item.NumeroPolizza = dto.NumeroPolizza;
                    item.NumeroRegistroImprese = dto.NumeroRegistroImprese;
                    item.Preferito = dto.FrequentlyAccessed;
                    item.QuadroAc = dto.QuadroAc;
                    item.IsCompagniaAssicurativa = dto.IsCompagniaAssicurativa;
                    item.PrestazioniOccasionali = dto.PrestazioniOccasionali;

                    if (dto.CodiceModalitaPagamento > 0)
                        item.ModalitaPagamento = daoFactory.GetModalitaPagamentoDao().GetById(dto.CodiceModalitaPagamento.Value, false);

                    item.Qualita = new ValutazioneQualita
                    {
                        Certificazione = dto.Certificazione,
                        Prezzo = dto.Prezzo,
                        Servizio = dto.Servizio,
                        TempoIntervento = dto.TempoIntervento,
                        Tracciabile = dto.Tracciabile
                    };

                    if (dto.IdTipoFornitore > 0)
                        item.Tipo = daoFactory.GetTipoFornitoreDao().GetById(dto.IdTipoFornitore, false);

                    if (item is AgenziaAssicurativa)
                    {
                        ((AgenziaAssicurativa)item).Agenzia = ((AgenziaAssicurativaDTO)dto).Agenzia;
                        if (((AgenziaAssicurativaDTO)dto).CodiceFornitore > 0)
                            ((AgenziaAssicurativa)item).Fornitore = daoFactory.GetFornitoreDao().GetById(((AgenziaAssicurativaDTO)dto).CodiceFornitore, false);
                    }

                    daoFactory.GetFornitoreDao().SaveOrUpdate(item);

                }
                else
                {
                    _log.WarnFormat("Persona è a null - {0} - id:{1}", Utility.GetMethodDescription(), dto.ID);
                }
            }
            catch (Exception ex)
            {
                _log.ErrorFormat("Errore nel salvataggio del fornitore - {0} - id:{1}", ex, Utility.GetMethodDescription(), dto.ID);
                throw;
            }

            return true;
        }
Beispiel #20
0
        private bool update(FornitoreDTO dto, out Fornitore item)
        {
            var result = false;
            item = null;
            var daoFactory = _windsorRepository.GetDaoFactory(_info.Azienda);

            try
            {
                item = Conversione.IsTypeOf(dto, typeof(AgenziaAssicurativa)) ? daoFactory.GetAgenziaAssicurativaDao().Find(dto.ID, false) : daoFactory.GetFornitoreDao().Find(dto.ID, false);

                // Condizione necessare per il controllo del fatto che sul DB ho una versione uguale o più vecchia (PER ORA NON FACCIO CONTROLLI)
                if (item != null)
                {
                    if (dto.Version == item.Version || true)
                    {
                        item.AgenziaAssicurativa = dto.AgenziaAssicurativa;
                        item.AliquotaCassaProfessionisti = dto.AliquotaCassaProfessionisti;
                        item.IsRitenutaCalcolataImponibile = dto.IsRitenutaCalcolataImponibile;
                        item.AliquotaIva = dto.AliquotaIva;
                        item.AliquotaRitenutaAcconto = dto.AliquotaRitenutaAcconto;
                        item.AziendaID = dto.IdAzienda;
                        item.CodiceTributo = dto.CodiceTributo;
                        item.ElencoFornitori = dto.ElencoFornitori;
                        item.InailIdentificativoAzienda = dto.InailIdentificativoAzienda;
                        item.InailPat = dto.InailPat;
                        item.Note = dto.Note;
                        item.NumeroPolizza = dto.NumeroPolizza;
                        item.NumeroRegistroImprese = dto.NumeroRegistroImprese;
                        item.Preferito = dto.FrequentlyAccessed;
                        item.QuadroAc = dto.QuadroAc;
                        item.IsCompagniaAssicurativa = dto.IsCompagniaAssicurativa;
                        item.PrestazioniOccasionali = dto.PrestazioniOccasionali;
                        item.Stato = dto.StatoFornitore;

                        item.CompagniaAssicurativa = null;
                        if (dto.CodiceCompagniaAssicurativa != null)
                            item.CompagniaAssicurativa = daoFactory.GetFornitoreDao().Find(dto.CodiceCompagniaAssicurativa.Value, false);

                        item.ModalitaPagamento = null;
                        if (dto.CodiceModalitaPagamento != null)
                            item.ModalitaPagamento = daoFactory.GetModalitaPagamentoDao().Find(dto.CodiceModalitaPagamento.Value, false);

                        if (item.Qualita == null)
                            item.Qualita = new ValutazioneQualita();
                        item.Qualita.Certificazione = dto.Certificazione;
                        item.Qualita.Prezzo = dto.Prezzo;
                        item.Qualita.Servizio = dto.Servizio;
                        item.Qualita.TempoIntervento = dto.TempoIntervento;
                        item.Qualita.Tracciabile = dto.Tracciabile;

                        if (dto.PersonaRiferimento != null)
                        {
                            _id = dto.PersonaRiferimento.ID;
                            if ((dto.PersonaRiferimento.Stato.ToUpper() == "U") || (dto.PersonaRiferimento.Stato == "I"))
                                _id = getPersonaRepository().ManageDomainEntity(dto.PersonaRiferimento);

                            item.PersonaRiferimento = daoFactory.GetPersonaDao().Find(_id.GetValueOrDefault(), false);
                        }

                        if (dto.IdTipoFornitore > 0)
                            item.Tipo = daoFactory.GetTipoFornitoreDao().GetById(dto.IdTipoFornitore, false);

                        if (item is AgenziaAssicurativa)
                        {
                            ((AgenziaAssicurativa)item).Agenzia = ((AgenziaAssicurativaDTO)dto).Agenzia;
                            if (((AgenziaAssicurativaDTO)dto).CodiceFornitore > 0)
                                ((AgenziaAssicurativa)item).Fornitore = daoFactory.GetFornitoreDao().GetById(((AgenziaAssicurativaDTO)dto).CodiceFornitore, false);
                        }

                        daoFactory.GetFornitoreDao().Update(item);
                        result = true;
                    }
                    else
                    {
                        // Eccezione: Sul db c'è qualche cosa di più nuovo.
                        
                        _log.Error("Errore nel salvataggio del fornitore: id:" + dto.ID + " - il dato sul db è più recente di quello che si vuole salvare");
                    }
                }
            }
            catch (Exception ex)
            {
                _log.ErrorFormat("Errore nel salvataggio del fornitore - {0} - id:{1}", ex, Utility.GetMethodDescription(), dto.ID);
                throw;
            }

            return result;
        }
 public DatiAC(Fornitore fornitore, decimal importo)
 {
     Fornitore = fornitore;
     Importo = importo;
 }
        public void SetUp()
        {
            _azienda = new Azienda("PROVA", "Azienda di prova") {ID=1};
            _aziendaDestinazione = new Azienda("DEST", "Azienda di destinazione") { ID = 2 };
            _condominio = new Condominio("Condominio ABC", 31, 12, 2015, _azienda)
            {
                ID = 1,
                Codice = "COND01",
                CodiceCUC = "CUC123456",
                CodiceSIA = "SIA12",
                AnnoInizio = 2015,
                CodiceFiscale = "012365477859",
                CodiceCalcoloTariffaAcqua = "TAR01"
            };
            _condominio.Palazzine.Clear();

            _esercizio = new EsercizioDTO
            {
                Descrizione = "Primo Esercizio",
                DataApertura = new DateTime(2016, 6, 1),
                DataChiusura = new DateTime(2017, 5, 31)
            };

            _banca01 = new DatiBancariCondomini("12345", "12345", "123456789012", "A", _condominio) {Iban = "IT02L1234512345123456789012" };
            _banca02 = new DatiBancariCondomini("03268", "10001", "100000000000", "A", _condominio) { Iban = "IT11X03268100001100000000000" };

            _stabile01 = new Palazzina(_condominio, "Stabile 01") {ID=1};
            _stabile01.GruppiStabile.Clear();
            _condominio.Palazzine.Add(_stabile01);

            var comune = new Comune("A944", "Bologna", new Provincia("BO", new Regione("Emilia Romagna")));

            _gruppoStabile01 = new GruppoStabile(_stabile01, "Scala 01") { ID = 1, Ordine = 1, Note = "Note per Scala01", Indirizzo = new Address { Cap = "40131", Civico = "SCA/1", Indirizzo = "Via Scala01", Localita = "Scaletta01", Comune = comune } };
            _gruppoStabile02 = new GruppoStabile(_stabile01, "Scala 02") { ID = 2, Ordine = 2, Note = "Note per Scala02", Indirizzo = new Address { Cap = "40132", Civico = "SCA/2", Indirizzo = "Via Scala02", Localita = "Scaletta02", Comune = comune } };

            _condominio.Indirizzo = new Address
            {
                Indirizzo = "via dei Fiori",
                Cap = "40100",
                Civico = "23",
                Localita = "Pioppa",
                Comune = comune
            };

            var listaTipoUnitaImmobiliare = new List<TipoUnitaImmobiliare>
            {
                new TipoUnitaImmobiliare("Tipo01") {ID = 1},
                new TipoUnitaImmobiliare("Tipo02") {ID = 2}
            };

            var fornitore = new Fornitore(new Persona(TipoPersonaEnum.Giuridica, "Franco", "Livoresi", _azienda.ID, true) {PartitaIva = "01867511204"}, _azienda.ID) {ID =1};
            var fornitore01 = new Fornitore(new Persona(TipoPersonaEnum.Giuridica, "Luigi", "Majorana", _azienda.ID, true) { PartitaIva = "01230460394" }, _azienda.ID) {ID = 2};
            var agenziaAssicurativa = new AgenziaAssicurativa(new Persona(TipoPersonaEnum.Giuridica, "", "Agenzia Bologna", _azienda.ID, true) { PartitaIva = "03211600402" }, fornitore01, "Agenzia BO", _azienda.ID) {ID = 3};
            var tipoContratto = new TipoContratto("Pulizia Scale") {ID=1};
            var tipoContrattoAssicurativo = new TipoContratto("Assicurazione") {ID=2};

            _unitaImmobiliare01 = new UnitaImmobiliare(_gruppoStabile01, listaTipoUnitaImmobiliare[0]) { ID = 1, Descrizione = "Unità 01", Ordine = 1};
            _unitaImmobiliare02 = new UnitaImmobiliare(_gruppoStabile01, new TipoUnitaImmobiliare("Tipo02")) { ID = 2, Descrizione = "Unità 02", Ordine = 2 }; 
            _unitaImmobiliare03 = new UnitaImmobiliare(_gruppoStabile02, listaTipoUnitaImmobiliare[1]) { ID = 3, Descrizione = "Unità 03", Ordine = null }; 
            _unitaImmobiliare04 = new UnitaImmobiliare(_gruppoStabile02, new TipoUnitaImmobiliare("Tipo NEW")) { ID = 4, Descrizione = "Unità 04", Ordine = 4 };

            _unitaImmobiliare01.CondizioniSicurezzaImpianto = new SicurezzaImpianto
            {
                Norma = true,
                Note = "Note01"
            };

            _unitaImmobiliareImpiantistica01 = new UnitaImmobiliareImpiantistica(_unitaImmobiliare01, "TipoImpianto01", true) { ID = 1, Descrizione = "Impianto 01"};
            _unitaImmobiliareImpiantistica02 = new UnitaImmobiliareImpiantistica(_unitaImmobiliare01, "TipoImpianto02", false) {ID = 2, Descrizione = "Impianto 02"};

            _persona01 = new Persona(TipoPersonaEnum.Fisica, "Mario", "Rossi", _azienda.ID, false)
            {
                ID = 1,
                ComuneNascita = comune,
                IndirizzoResidenza =
                    new Address
                    {
                        Indirizzo = "via residenza01",
                        Cap = "40101",
                        Civico = "1",
                        Comune = comune,
                        Localita = "Pioppa 01"
                    },
                Domicilio =
                    new Address
                    {
                        Indirizzo = "via domicilio01",
                        Cap = "40101",
                        Civico = "1",
                        Comune = comune,
                        Localita = "Pioppa 01"
                    },
                Recapito =
                    new Address
                    {
                        Indirizzo = "via recapito01",
                        Cap = "40101",
                        Civico = "1",
                        Comune = comune,
                        Localita = "Pioppa 01"
                    }
            };

            _proprietario01 = new Proprietario(_unitaImmobiliare01, _persona01) {ID = 1, Descrizione = "Mario Rossi", VersamentoMav = true, Consigliere = true, Principale = true};

            _persona02 = new Persona(TipoPersonaEnum.Giuridica, "Giulio", "Verdi", _azienda.ID, false)
            {
                ID = 2,
                ComuneNascita = comune,
                IndirizzoResidenza =
                    new Address
                    {
                        Indirizzo = "via residenza02",
                        Cap = "40102",
                        Civico = "2",
                        Comune = comune,
                        Localita = "Pioppa 02"
                    },
                Domicilio =
                    new Address
                    {
                        Indirizzo = "via domicilio02",
                        Cap = "40102",
                        Civico = "2",
                        Comune = comune,
                        Localita = "Pioppa 02"
                    },
                Recapito =
                    new Address
                    {
                        Indirizzo = "via recapito02",
                        Cap = "40102",
                        Civico = "2",
                        Comune = comune,
                        Localita = "Pioppa 02"
                    }
            };
            _proprietario02 = new Proprietario(_unitaImmobiliare02, _persona02) {ID = 2, Descrizione = "Giulio Verdi", DataInizio = new DateTime(2015, 1, 1)};

            _persona03 = new Persona(TipoPersonaEnum.Fisica, "Franco", "Bianchi", _azienda.ID, false)
            {
                ID = 3,
                IndirizzoResidenza =
                    new Address
                    {
                        Indirizzo = "via residenza03",
                        Cap = "40103",
                        Civico = "3",
                        Comune = comune,
                        Localita = "Pioppa 03"
                    },
                Domicilio =
                    new Address
                    {
                        Indirizzo = "via domicilio03",
                        Cap = "40103",
                        Civico = "3",
                        Comune = comune,
                        Localita = "Pioppa 03"
                    }
            };
            _persona01.Recapito = new Address { Indirizzo = "via recapito03", Cap = "40103", Civico = "3", Comune = comune, Localita = "Pioppa 03" };
            _proprietario03 = new Proprietario(_unitaImmobiliare03, _persona03) {ID = 3, Descrizione = "Franco Bianchi"};

            _proprietario04 = new Proprietario(_unitaImmobiliare04, _persona01)
            {
                ID = 4,
                SoggettoPrincipale = _proprietario01
            };

            _persona04 = new Persona(TipoPersonaEnum.Fisica, "Primo", "Conduttore", _azienda.ID, false)
            {
                ID = 4,
                IndirizzoResidenza =
                    new Address
                    {
                        Indirizzo = "via residenza04",
                        Cap = "40104",
                        Civico = "4",
                        Comune = comune,
                        Localita = "Pioppa 04"
                    },
                Domicilio =
                    new Address
                    {
                        Indirizzo = "via domicilio04",
                        Cap = "40104",
                        Civico = "4",
                        Comune = comune,
                        Localita = "Pioppa 04"
                    },
                Recapito =
                    new Address
                    {
                        Indirizzo = "via recapito04",
                        Cap = "40104",
                        Civico = "4",
                        Comune = comune,
                        Localita = "Pioppa 04"
                    }
            };
            _conduttore01 = new Conduttore(_unitaImmobiliare01, _persona04) {ID = 5, Descrizione = "Primo Conduttore"};

            _persona05 = new Persona(TipoPersonaEnum.Fisica, "Secondo", "Conduttore", _azienda.ID, false)
            {
                ID = 5,
                IndirizzoResidenza =
                    new Address
                    {
                        Indirizzo = "via residenza05",
                        Cap = "40105",
                        Civico = "5",
                        Comune = comune,
                        Localita = "Pioppa 05"
                    },
                Domicilio =
                    new Address
                    {
                        Indirizzo = "via domicilio05",
                        Cap = "40105",
                        Civico = "5",
                        Comune = comune,
                        Localita = "Pioppa 05"
                    },
                Recapito =
                    new Address
                    {
                        Indirizzo = "via recapito05",
                        Cap = "40105",
                        Civico = "5",
                        Comune = comune,
                        Localita = "Pioppa 05"
                    }
            };
            _conduttore02 = new Conduttore(_unitaImmobiliare02, _persona05) {ID = 6, Descrizione = "Secondo Conduttore"};

            _contatto01 = new Email("*****@*****.**", true, _persona01) { ID = 1, Descrizione = "mail principale persona 01"};
            _contatto02 = new Email("*****@*****.**", false, _persona01) { ID = 2, Descrizione = "mail secondaria persona 01" };
            _contatto03 = new Cellulare("1234567890", true, _persona01) { ID = 3, Descrizione = "cellulare principale persona 01" };
            _contatto04 = new Fax("9876543210", false, _persona02) { ID = 4, Descrizione = "fax persona 02" };
            _contatto05 = new Telefono("1357924680", true, _persona03) { ID = 5, Descrizione = "telefono persona 03" }; 
            _contatto06 = new EmailCertificata("*****@*****.**", true, _persona01) { ID = 6, Descrizione = "mail certificata persona 01" };
            _contatto07 = new SitoInternet("www.bianchi.it", false, _persona03) { ID = 7, Descrizione = "sito internet persona03" };
            _contatto08 = new Telefono("3333333333", false, _persona04) { ID = 8, Descrizione = "telefono persona 04" };
            _contatto09 = new Cellulare("9999999999", true, _persona05) { ID = 9, Descrizione = "cellulare persona 05" };
            _contatto10 = new Email("*****@*****.**", false, _persona05) { ID=10 };

            _condominio.PersoneDaNonSollecitare.Add(new PersonaDaNonSollecitare(_persona01, _condominio) { Motivo = "persona01 non paga" });
            _condominio.PersoneDaNonSollecitare.Add(new PersonaDaNonSollecitare(_persona03, _condominio) { Motivo = "persona02 è simpatica" });

            // Contratto Appalto
            _documentocontrattoAppalto01 = new Documento(201, "Appalto", true, _azienda) { ID = 1, CondominioRiferimento = _condominio, Checksum = "CHK001", FileName = "appalto01", FileExtension = "pdf", Descrizione = "Appalto001" };
            _documentocontrattoAppalto02 = new Documento(202, "Appalto", true, _azienda) { ID = 2, CondominioRiferimento = _condominio, Checksum = "CHK002", FileName = "appalto02", FileExtension = "pdf", Descrizione = "Appalto002" };

            _contrattoAppalto = new ContrattoAppalto(tipoContratto, _condominio, fornitore)
            {
                ID = 1,
                NumeroContratto = "CONTRA001",
                Scadenza = new DateTime(2016, 12, 31),
                Descrizione = "Contratto di Appalto di prova",
                Note = "Nota per contratto appalto",
                Documenti = { _documentocontrattoAppalto01, _documentocontrattoAppalto02 }
            };

            _documentocontrattoAppalto01.ContrattoRiferimento = _contrattoAppalto;
            _documentocontrattoAppalto02.ContrattoRiferimento = _contrattoAppalto;

            // Contratto Assicurativo
            _documentocontrattoAssicurativo01 = new Documento(203, "Assicurativo01", true, _azienda) { ID = 3, CondominioRiferimento = _condominio, Checksum = "CHK003", FileName = "assicurazione01", FileExtension = "pdf", Descrizione = "Assicurazione001" };
            _documentocontrattoAssicurativo02 = new Documento(204, "Assicurativo02", true, _azienda) { ID = 4, CondominioRiferimento = _condominio, Checksum = "CHK004", FileName = "assicurazione02", FileExtension = "pdf", Descrizione = "Assicurazione002" };

            _contrattoAssicurativo = new AssicurazioneContratto(new DateTime(2016, 11, 30), new DateTime(2016, 07, 15), tipoContrattoAssicurativo)
            {
                ID = 2,
                FornitoreAttuale = agenziaAssicurativa,
                NumeroContratto = "CONTR_ASS_001",
                Scadenza = new DateTime(2016, 12, 31),
                Descrizione = "Contratto Assicurativo di prova",
                Note = "Nota per contratto assicurativo",
                Documenti = { _documentocontrattoAssicurativo01, _documentocontrattoAssicurativo02 }
            };

            _contrattoAssicurativoGlobale = new GlobaleAssicurazione(new DateTime(2016, 11, 30),
                new DateTime(2016, 07, 15), tipoContrattoAssicurativo)
            {
                ID = 3,
                FornitoreAttuale = agenziaAssicurativa,
                NumeroContratto = "CONTR_GLOB_001",
                Scadenza = new DateTime(2016, 12, 31),
                ImportoLimiteCoseRCT = 50000,
                ImportoMassimaleSinistroRCT = 60000,
                ImportoUnicoRCT = 70000,
                ImportoPremio = 80000,
                Descrizione = "Contratto Globale di prova",
                Note = "Nota per contratto globale",
                FranchigiaDanniAcqua = 90000,
                FranchigiaRicercaGuasto = 100000,
                ValoreRicostruzioneNuovo = 110000,
                DanniAcqua = true,
                RicercaGuasto = true
            };

            _contrattoAssicurativoIncendio = new IncendioAssicurazione(new DateTime(2016, 11, 30), new DateTime(2016, 07, 15), tipoContrattoAssicurativo)
            {
                ID = 4,
                FornitoreAttuale = agenziaAssicurativa,
                NumeroContratto = "CONTR_INC_001",
                ImportoLimiteCoseRCT = 150000,
                ImportoMassimaleSinistroRCT = 160000,
                ImportoUnicoRCT = 170000,
                ImportoPremio = 180000,
                FranchigiaDanniAcqua = 120000,
                FranchigiaRicercaGuasto = 130000,
                ValoreRicostruzioneNuovo = 140000,
                DanniAcqua = true,
                RicercaGuasto = false,
                Scadenza = new DateTime(2016, 12, 31),
                Descrizione = "Contratto Incendio di prova",
                Note = "Nota per contratto incendio"
            };

            _contrattoAssicurativoFurto = new FurtoAssicurazione(new DateTime(2016, 11, 30), new DateTime(2016, 07, 15), tipoContrattoAssicurativo)
            {
                ID = 5,
                FornitoreAttuale = agenziaAssicurativa,
                NumeroContratto = "CONTR_FURTO_001",
                Scadenza = new DateTime(2016, 12, 31),
                Descrizione = "Contratto Furto di prova",
                Note = "Nota per contratto furto"
            };

            _contrattoAssicurativoInfortuni = new InfortuniAssicurazione(new DateTime(2016, 11, 30), new DateTime(2016, 07, 15), tipoContrattoAssicurativo)
            {
                ID = 6,
                FornitoreAttuale = agenziaAssicurativa,
                NumeroContratto = "CONTR_INFORTUNI_001",
                Scadenza = new DateTime(2016, 12, 31),
                Descrizione = "Contratto Infortuni di prova",
                Note = "Nota per contratto infortuni"
            };

            _contrattoAssicurativoResponsabilitaCivile = new ResponsabilitaCivileAssicurazione(new DateTime(2016, 11, 30), new DateTime(2016, 07, 15), tipoContrattoAssicurativo)
            {
                ID = 7,
                FornitoreAttuale = agenziaAssicurativa,
                NumeroContratto = "CONTR_RESPCIV_001",
                Scadenza = new DateTime(2016, 12, 31),
                Descrizione = "Contratto Responsabilità civile di prova",
                Note = "Nota per contratto responsabilità civile"
            };

            _condominio.ContrattiAssicurativi.Add(_contrattoAssicurativo);
            _condominio.ContrattiAssicurativi.Add(_contrattoAssicurativoGlobale);
            _condominio.ContrattiAssicurativi.Add(_contrattoAssicurativoIncendio);
            _condominio.ContrattiAssicurativi.Add(_contrattoAssicurativoFurto);
            _condominio.ContrattiAssicurativi.Add(_contrattoAssicurativoInfortuni);
            _condominio.ContrattiAssicurativi.Add(_contrattoAssicurativoResponsabilitaCivile);

            _contrattoAssicurativo.CondominioRiferimento = _condominio;
            _contrattoAssicurativoGlobale.CondominioRiferimento = _condominio;
            _contrattoAssicurativoIncendio.CondominioRiferimento = _condominio;
            _contrattoAssicurativoFurto.CondominioRiferimento = _condominio;
            _contrattoAssicurativoInfortuni.CondominioRiferimento = _condominio;
            _contrattoAssicurativoResponsabilitaCivile.CondominioRiferimento = _condominio;

            _documentocontrattoAssicurativo01.ContrattoRiferimento = _contrattoAssicurativo;
            _documentocontrattoAssicurativo02.ContrattoRiferimento = _contrattoAssicurativo;
            
            // Conti / Millesimi
            _conto01 = new Conto(_condominio, TipoContoEconomicoEnum.Economico, TipoPeriodoCompetenzaContabile.Esercizio, "SPESE GENERALI PROPRIETA'", true, true, false) {DescrizioneBilancio = "SPE GEN", Codice = "001", ID = 1};
            _conto02 = new Conto(_condominio, TipoContoEconomicoEnum.Economico, TipoPeriodoCompetenzaContabile.Riscaldamento, "SPESE RISCALDAMENTO", true, true, false) { DescrizioneBilancio = "SPE RIS", Codice = "002",  ID = 2 };

            _sottoconto01 = new SottoConto(_conto01, "SPESE SCALA 01") { Codice = "001.001", ID = 1 };
            _sottoconto02 = new SottoConto(_conto01, "SPESE SCALA 02") { Codice = "001.002", ID = 2 };
            _sottoconto03 = new SottoConto(_conto02, "SPESE ABITAZIONI") { Codice = "002.001", ID = 3 };
            _sottoconto04 = new SottoConto(_conto02, "SPESE GARAGE") { Codice = "002.002", ID = 4 };

            _millesimo01 = new Millesimo(_conto01, _unitaImmobiliare01) { ID = 1, Valore = 100 };
            _millesimo02 = new Millesimo(_conto01, _unitaImmobiliare02) { ID = 2, Valore = 200 };
            _millesimo03 = new Millesimo(_conto02, _unitaImmobiliare01) { ID = 3, Valore = 300 };
            _millesimo04 = new Millesimo(_conto02, _unitaImmobiliare02) { ID = 4, Valore = 400 };

            _fascicoloImmobiliare = new FascicoloImmobiliare("Prova Fascicolo", "PRO", "01") {ID=1};
            _fascicoloCondominio = new FascicoloCondominio(_fascicoloImmobiliare, _condominio) { ID =1, Necessario = true, Presente = false };
            _fascicoloCondominio.Documenti.Add(_documentocontrattoAppalto01);
            _fascicoloCondominio.Documenti.Add(_documentocontrattoAssicurativo02);
            _documentocontrattoAppalto01.Fascicoli.Add(_fascicoloCondominio);
            _documentocontrattoAssicurativo02.Fascicoli.Add(_fascicoloCondominio);

            // Stub per IDaoFactory
            _daoFactory = MockRepository.GenerateStub<IDaoFactory>();

            // Stub per azienda
            var aziendaDao = MockRepository.GenerateStub<IAziendaDao>();
            aziendaDao.Stub(x => x.Find(2, false)).Return(_aziendaDestinazione);
            _daoFactory.Stub(x => x.GetAziendaDao()).Return(aziendaDao);

            // Stub per tipo unità immobiliare
            var tipoUnitaImmobiliareDao = MockRepository.GenerateStub<ITipoUnitaImmobiliareDao>();
            tipoUnitaImmobiliareDao.Stub(x => x.GetByAzienda(Arg<int>.Is.Anything)).Return(listaTipoUnitaImmobiliare);
            _daoFactory.Stub(x => x.GetTipoUnitaImmobiliareDao()).Return(tipoUnitaImmobiliareDao);

            // Stub per fornitore
            var fornitoreDao = MockRepository.GenerateStub<IFornitoreDao>();
            fornitoreDao.Stub(x => x.Find(1, false)).Return(fornitore);
            fornitoreDao.Stub(x => x.Find(2, false)).Return(fornitore01);
            fornitoreDao.Stub(x => x.GetByPartitaIva("01867511204", _aziendaDestinazione.ID)).Return(fornitore);
            fornitoreDao.Stub(x => x.GetByPartitaIva("01230460394", _aziendaDestinazione.ID)).Return(fornitore01);
            fornitoreDao.Stub(x => x.GetByPartitaIva("03211600402", _aziendaDestinazione.ID)).Return(agenziaAssicurativa);
            _daoFactory.Stub(x => x.GetFornitoreDao()).Return(fornitoreDao);

            // Stub per tipo contratto
            var tipoContrattoDao = MockRepository.GenerateStub<ITipoContrattoDao>();
            tipoContrattoDao.Stub(x => x.GetByDescrizione("Pulizia Scale", _aziendaDestinazione.ID)).Return(tipoContratto);
            tipoContrattoDao.Stub(x => x.GetByDescrizione("Assicurazione", _aziendaDestinazione.ID)).Return(tipoContrattoAssicurativo);
            _daoFactory.Stub(x => x.GetTipoContrattoDao()).Return(tipoContrattoDao);

            // Stub per Comune
            var comuneDao = MockRepository.GenerateStub<IComuneDao>();
            comuneDao.Stub(x => x.Find(comune.Codice, false)).Return(comune);
            comuneDao.Stub(x => x.Find(null, false)).Throw(new NullReferenceException("Id non può essere null"));
            _daoFactory.Stub(x => x.GetComuneDao()).Return(comuneDao);
            
            // Stub per fascicolo immobiliare
            _fascicoloImmobiliareDao = MockRepository.GenerateStub<IFascicoloImmobiliareDao>();
            _fascicoloImmobiliareDao.Stub(x => x.GetByAzienda(_aziendaDestinazione.ID)).Return(new List<FascicoloImmobiliare> { _fascicoloImmobiliare });
            _daoFactory.Stub(x => x.GetFascicoloImmobiliareDao()).Return(_fascicoloImmobiliareDao);

            _documentService = MockRepository.GenerateStub<IDocumentService>();
            _exportCsvCondominiService = new ExportCsvCondominiService();
            _importCsvCondominiService = new ImportCsvCondominiService(_daoFactory, _documentService);
        }
        /// <summary>
        /// RECORD DI TIPO "H": Dati relativi alla comunicazione dati certificazioni lavoro autonomo, provvigioni e redditi diversi del mod. 770/20XX semplificato
        /// </summary>
        /// <param name="condominio">Condominio di riferimento</param>
        /// <param name="fornitore">Fornitore a cui è stata trattenuta l'imposta</param>
        /// <param name="anno"></param>
        /// <param name="ritenute">Elenco delle trattenute per fornitore</param>
        /// <param name="progressivoModulo">Progressivo del modulo compilato</param>
        /// <param name="sw">File di scrittura</param>
        private void writeRowH(Condominio condominio, Fornitore fornitore, int anno, IEnumerable<Ritenuta> ritenute, int progressivoModulo, StreamWriter sw)
        {
            try
            {
                var sb = new StringBuilder(1900);

                //======================================================
                // CAMPI POSIZIONALI (da carattere 1 a carattere 89)
                //======================================================

                // Tipo record
                sb.Append("H");

                // Codice Fiscale del soggetto dichiarante (Condominio)
                sb.Append(condominio.CodiceFiscale.PadRight(16, ' '));

                // Progressivo Modulo
                sb.Append(progressivoModulo.ToString().PadLeft(8, '0'));

                // campo utente
                sb.Append(string.Empty.PadLeft(3));

                // Tipo operazione
                sb.Append(string.Empty.PadLeft(1));

                // Codice Fiscale del percipiente (Fornitore)
                sb.Append(fornitore.GetCodiceFiscale().PadRight(16));

                // filler
                sb.Append(string.Empty.PadLeft(8));

                // campo utente per identificativo dichiarazione
                sb.Append(string.Empty.PadRight(20));

                // Identificativo del produttore del software (codice fiscale)
                sb.Append("02818651206".PadRight(16));

                //======================================================
                // CAMPI NON POSIZIONALI (da carattere 90)
                //======================================================

                //---------------------------------------------
                // Dati relativi al percipiente delle somme
                //---------------------------------------------

                // Codice fiscale
                sb.Append(getCampoNonPosizionale("AU001001", fornitore.GetCodiceFiscale(), AllineamentoCaratteri.Sinistro));

                // Cognome o denominazione
                if (fornitore.PersonaRiferimento.TipoPersona == TipoPersonaEnum.Giuridica)
                    sb.Append(getCampoNonPosizionale("AU001002", fornitore.PersonaRiferimento.RagioneSociale, AllineamentoCaratteri.Sinistro));
                else
                {
                    // Cognome
                    sb.Append(getCampoNonPosizionale("AU001002", fornitore.PersonaRiferimento.Cognome.ToUpper(), AllineamentoCaratteri.Sinistro));

                    // Nome
                    sb.Append(getCampoNonPosizionale("AU001003", fornitore.PersonaRiferimento.Nome.ToUpper(), AllineamentoCaratteri.Sinistro));

                    // Sesso
                    if (fornitore.PersonaRiferimento.TipoPersona == TipoPersonaEnum.Fisica)
                    {
                        if(fornitore.PersonaRiferimento.Sesso != SessoEnum.Undefined)
                            sb.Append(getCampoNonPosizionale("AU001004", fornitore.PersonaRiferimento.Sesso.ToString().Substring(0, 1).ToUpper(), AllineamentoCaratteri.Sinistro));

                        // Data di nascita
                        sb.Append(getCampoNonPosizionale("AU001005", convertData(fornitore.PersonaRiferimento.DataNascita), AllineamentoCaratteri.Destro));

                        // Comune di nascita
                        sb.Append(getCampoNonPosizionale("AU001006", fornitore.PersonaRiferimento.ComuneNascita.Descrizione, AllineamentoCaratteri.Sinistro));

                        // Provincia di nascita
                        sb.Append(int.Parse(fornitore.PersonaRiferimento.ComuneNascita.Codice) <= 999201
                                      ? getCampoNonPosizionale("AU001007", fornitore.PersonaRiferimento.ComuneNascita.ProvinciaAppartenenza.Codice, AllineamentoCaratteri.Sinistro)
                                      : getCampoNonPosizionale("AU001007", "EE", AllineamentoCaratteri.Sinistro));
                    }
                }

                // Comune di residenza
                sb.Append(getCampoNonPosizionale("AU001008", fornitore.PersonaRiferimento.IndirizzoResidenza.Comune.Descrizione, AllineamentoCaratteri.Sinistro));

                // Provincia di residenza
                sb.Append(getCampoNonPosizionale("AU001009", fornitore.PersonaRiferimento.IndirizzoResidenza.Comune.ProvinciaAppartenenza.Codice, AllineamentoCaratteri.Sinistro));

                // Via e numero civico
                sb.Append(getCampoNonPosizionale("AU001012", fornitore.PersonaRiferimento.IndirizzoResidenza.GetIndirizzoCompleto(), AllineamentoCaratteri.Sinistro));

                //---------------------------------------------
                // Dati relativi alle somme erogate
                //---------------------------------------------

                var speseSoggette = _spesaService.GetSoggetteRitenutaByFornitoreCondominioAnno(fornitore, condominio, anno);
                var imponibileIva = speseSoggette.Sum(item => item.Imponibile);
                var imponibileRitenuta = speseSoggette.Sum(item => item.GetImponibileRitenuta());
                var altreSommeNonSoggette = Math.Round(imponibileIva - imponibileRitenuta, 2);

                // Causale
                sb.Append(getCampoNonPosizionale("AU001019", fornitore.GetTipologiaReddito(), AllineamentoCaratteri.Sinistro));

                // Ammontare Lordo Corrisposto (al netto di IVA)
                sb.Append(getCampoNonPosizionale("AU001022", Math.Round(imponibileIva, 2).ToString(), AllineamentoCaratteri.Destro));

                // Codice
                if (altreSommeNonSoggette > 0)
                    sb.Append(getCampoNonPosizionale("AU001024", "3", AllineamentoCaratteri.Destro));

                // Altre somme non soggette a ritenuta
                if(altreSommeNonSoggette > 0)
                    sb.Append(getCampoNonPosizionale("AU001025", altreSommeNonSoggette.ToString(), AllineamentoCaratteri.Destro));

                // Imponibile
                sb.Append(getCampoNonPosizionale("AU001026", Math.Round(imponibileIva - altreSommeNonSoggette, 2).ToString(), AllineamentoCaratteri.Destro));

                // Ritenute a titolo di acconto
                sb.Append(getCampoNonPosizionale("AU001027", Math.Round(ritenute.Sum(item => item.Importo.GetValueOrDefault()), 2).ToString(), AllineamentoCaratteri.Destro));

                //======================================================
                // CAMPI POSIZIONALI (da carattere 1890 a carattere 1900)
                //======================================================

                var charToEnd = 1889 - sb.ToString().Length;
                sb.Append(string.Empty.PadRight(charToEnd));

                // filler
                sb.Append(string.Empty.PadLeft(8));

                //---------------------------------------------
                // Ultimi caratteri di controllo
                //---------------------------------------------
                sb.Append("A");

                // CarriageReturn LineFeed
                sb.Append(CRLF);

                sw.Write(sb.ToString());
            }
            catch (Exception ex)
            {
                _log.ErrorFormat("Errore inaspettato durante la creazione della sezione H per il modello 770 - {0} - condominio:{1} - fornitore:{2}", ex, Library.Utility.GetMethodDescription(), condominio.ID, fornitore.ID);
                throw;
            }
Beispiel #24
0
 public FornitoreDTO GetByDomainEntity(Fornitore fornitore)
 {
     try
     {
         return setDto(fornitore);
     }
     catch (Exception ex)
     {
         _log.ErrorFormat("Errore nel caricamento dei fornitori - {0} - id:{1}", ex, Utility.GetMethodDescription(), fornitore.ID);
         throw;
     }
 }
        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;
        }
Beispiel #26
0
        public IList<DocumentoDTO> GetDataSourceDocumentoFornitore(int idFornitore)
        {
            var daoFactory = _windsorRepository.GetDaoFactory(_info.Azienda);

            try
            {
                _documenti = new List<DocumentoDTO>();
                _fornitore = daoFactory.GetFornitoreDao().Find(idFornitore, false);
                if (_fornitore != null)
                {

                    foreach (var documentoCondominio in _fornitore.Documenti)
                    {
                        var dto = new DocumentoDTO
                        {
                            Checksum = documentoCondominio.Checksum,
                            Descrizione = documentoCondominio.Descrizione,
                            DirectoryName = documentoCondominio.DirectoryName,
                            FileExtension = documentoCondominio.FileExtension,
                            FileName = documentoCondominio.FileName,
                            ID = documentoCondominio.ID,
                            VisibileCondomino = documentoCondominio.VisibileCondomino,
                            Tipo = documentoCondominio.Tipo,
                            NoCache = documentoCondominio.NoCache,
                            DataCreazione = documentoCondominio.DataInserimento.GetValueOrDefault()
                        };
                        _documenti.Add(dto);
                    }
                }

                return _documenti;
            }
            catch (Exception ex)
            {
                _log.ErrorFormat("Errore inaspettato durante la lettura dei documenti per un fornitore - {0} - fornitore:{1} - azienda:{2}", ex, Library.Utility.GetMethodDescription(), idFornitore, _info.Azienda);
            }

            return _documenti;
        }
        private DatiFornitori770 getDatiFornitore(Fornitore fornitore, Condominio condominio, int index)
        {
            var datiFornitore = new DatiFornitori770
            {
                Cognome = (fornitore.PersonaRiferimento.TipoPersona.GetValueOrDefault() == TipoPersonaEnum.Giuridica) ? fornitore.PersonaRiferimento.RagioneSociale : fornitore.PersonaRiferimento.Cognome,
                Nome = (fornitore.PersonaRiferimento.TipoPersona.GetValueOrDefault() == TipoPersonaEnum.Giuridica) ? string.Empty : fornitore.PersonaRiferimento.Nome,
                CodiceFiscale = fornitore.GetCodiceFiscale(),
                ComuneNascita = (fornitore.PersonaRiferimento.TipoPersona.GetValueOrDefault() == TipoPersonaEnum.Fisica) ? fornitore.PersonaRiferimento.ComuneNascita.Descrizione : string.Empty,
                ProvinciaNascita = (fornitore.PersonaRiferimento.TipoPersona.GetValueOrDefault() == TipoPersonaEnum.Fisica) ? fornitore.PersonaRiferimento.ComuneNascita.ProvinciaAppartenenza.Codice : string.Empty,
                DataNascita = (fornitore.PersonaRiferimento.TipoPersona.GetValueOrDefault() == TipoPersonaEnum.Fisica) ? fornitore.PersonaRiferimento.DataNascita.GetValueOrDefault().ToShortDateString() : string.Empty,
                Sesso = (fornitore.PersonaRiferimento.TipoPersona.GetValueOrDefault() == TipoPersonaEnum.Fisica) ? fornitore.PersonaRiferimento.Sesso.ToString().Substring(0, 1).ToUpper() : string.Empty,
                IndirizzoCompleto = fornitore.PersonaRiferimento.IndirizzoResidenza.GetIndirizzoCompleto(),
                ComuneResidenza = fornitore.PersonaRiferimento.IndirizzoResidenza.Comune.Descrizione,
                Provincia = fornitore.PersonaRiferimento.IndirizzoResidenza.Comune.ProvinciaAppartenenza.Codice,
                CodiceFiscaleCondominio = condominio.CodiceFiscale,
                Causale = fornitore.GetTipologiaReddito(),
                ProgressivoComunicazione = index.ToString().PadLeft(8, '0')
            };

            return datiFornitore;
        }
Beispiel #28
0
        private string getNewSpesa(Fornitore fornitore, Esercizio esercizio, TestataMovimentoContabileGestioneDTO testata, MovimentoContabileGestioneDTO movimento, out GestioneCondomini.Domain.Spesa spesa)
        {
            var message = string.Empty;
            spesa = new GestioneCondomini.Domain.Spesa(fornitore, esercizio, null);
            try
            {
                if (_protocolloService == null)
                {
                    _log.ErrorFormat("Errore di inizializzazione del protocollo service - {0} - documento:{1} - movimento:{2} - esercizio:{3} - testata:{4}", Utility.GetMethodDescription(), movimento.NumeroDocumento, movimento.ID, testata.CodiceEsercizio, testata.ID);
                    message = "Errore di inizializzazione del protocollo service.";
                    return message;
                }

                if (movimento.DataDocumento == null)
                {
                    _log.ErrorFormat("La data del documento è null - {0} - documento:{1} - movimento:{2} - esercizio:{3} - testata:{4}", Utility.GetMethodDescription(), movimento.NumeroDocumento, movimento.ID, testata.CodiceEsercizio, testata.ID);
                    message = "La data del documento è null.";
                }

                if (esercizio.CondominioRiferimento == null)
                {
                    _log.ErrorFormat("Il Condominio è null - {0} - documento:{1} - movimento:{2} - esercizio:{3} - testata:{4}", Utility.GetMethodDescription(), movimento.NumeroDocumento, movimento.ID, testata.CodiceEsercizio, testata.ID);
                    message = "Il Condominio è null.";
                }

                var protocollo = _protocolloService.GetProgressivo(TipoProtocollo.Fattura, esercizio.DataApertura.GetValueOrDefault().Year, esercizio.CondominioRiferimento);
                if (protocollo.Progressivo != null)
                    spesa.NumeroProtocollo = protocollo.Progressivo;
                else
                    return protocollo.Message;
            }
            catch (Exception ex)
            {
                var idCondominio = "<NULL>";
                if (esercizio?.CondominioRiferimento != null)
                    idCondominio = esercizio.CondominioRiferimento.ID.ToString(CultureInfo.InvariantCulture);
                
                _log.ErrorFormat("Errore inaspettato nel recuperare il progressivo - {0} - data:{1:d} - condominio:{2} - movimento:{3} - esercizio:{4} - testata:{5}", ex, Utility.GetMethodDescription(), movimento.DataDocumento.GetValueOrDefault(), idCondominio, movimento.ID, testata.CodiceEsercizio, testata.ID);
                message = "Errore inaspettato nel recuperare il progressivo.";
            }

            _daoFactory.GetSpesaDao().SaveOrUpdate(spesa);

            return message;
        }