コード例 #1
0
ファイル: TestHelpers.cs プロジェクト: gipasoft/Sfera
        public static UnitaImmobiliare GetCondominioMonoScalaMonoProprietario()
        {
            var azienda = new Azienda("TEST", "Azienda di Test") { ID = 1 };
            var condominio = new Condominio("Test", 31, 12, 2014, azienda);
            var stabile = new Palazzina(condominio, "Stabile A - TEST");
            var scala = new GruppoStabile(stabile, "Scala A - TEST");
            var tipo = new TipoUnitaImmobiliare("Abitazione");
            var unitaImmobiliare = new UnitaImmobiliare(scala, tipo);

            // Esercizio
            var annoGestionale = new AnnoGestionale(condominio, 2013, 2014);
            var esercizio = new Esercizio(condominio, new DateTime(2014, 1, 1), new DateTime(2014, 12, 31), annoGestionale, GestioneEsercizioEnum.Ordinario);
            condominio.Esercizi.Add(esercizio);

            // Proprietario
            var persona = new Persona(TipoPersonaEnum.Fisica, "Pinco", "Pallo", azienda.ID, true);
            var proprietario = new Proprietario(unitaImmobiliare, persona)
            {
                PercentualeRiferimento = 100,
                Principale = true
            };
            unitaImmobiliare.Soggetti.Add(proprietario);

            return unitaImmobiliare;
        }
コード例 #2
0
ファイル: NotaPredefinita.cs プロジェクト: gipasoft/Sfera
 /// <summary>
 /// Crea una Nazione valida
 /// </summary>
 public NotaPredefinita(string descrizione, TipoNotaEnum tipo, string testo, Azienda azienda)
 {
     Tipo = tipo;
     Testo = testo;
     Descrizione = descrizione;
     Azienda = azienda;
 }
コード例 #3
0
ファイル: Documento.cs プロジェクト: gipasoft/Sfera
 /// <summary>
 /// Crea un Documento valido
 /// </summary>
 public Documento(int numeroProtocollo, string tipoDocumento, bool nocache, Azienda azienda)
 {
     NumeroProtocollo = numeroProtocollo;
     Tipo = tipoDocumento;
     Azienda = azienda;
     NoCache = nocache;
 }
コード例 #4
0
ファイル: Computer.cs プロジェクト: gipasoft/Sfera
 /// <summary>
 /// Crea un Computer valido
 /// </summary>
 public Computer(string nomeComputer, ComputerVersion version, Azienda azienda)
 {
     NomeComputer = nomeComputer;
     Version = version;
     Azienda = azienda;
     UltimoLogin = DateTime.Now;
 }
コード例 #5
0
ファイル: MailConfig.cs プロジェクト: gipasoft/Sfera
        public MailConfig(MailSenderConfig mailSenderConfig, Azienda azienda)
        {
            SmtpServer = mailSenderConfig.SmtpServer;
            SmtpPassword = mailSenderConfig.SmtpPassword;
            SmtpUserName = mailSenderConfig.SmtpUserName;
            SmtpPort = mailSenderConfig.SmtpPort;
            UseSsl = mailSenderConfig.UseSsl;

            BackupSmtpServer = mailSenderConfig.BackupSmtpServer;
            BackupSmtpPassword = mailSenderConfig.BackupSmtpPassword;
            BackupSmtpPort = mailSenderConfig.BackupSmtpPort;
            BackupSmtpUserName = mailSenderConfig.BackupSmtpUserName;
            BackupUseSsl = mailSenderConfig.UseSsl;

            DefaultBcc = mailSenderConfig.DefaultBcc;
            DefaultCc = mailSenderConfig.DefaultCc;
            DefaultFrom = mailSenderConfig.DefaultFrom;
            DefaultFromDisplayName = mailSenderConfig.DefaultFromDisplayName;
            DefaultReplyTo = mailSenderConfig.DefaultReplyTo;
            DefaultTo = mailSenderConfig.DefaultTo;

            if (!string.IsNullOrEmpty(azienda?.SmtpConfig?.SmtpServer))
            {
                SmtpServer = azienda.SmtpConfig.SmtpServer;
                SmtpUserName = azienda.SmtpConfig.SmtpUserName;
                SmtpPassword = azienda.SmtpConfig.SmtpPassword;
                SmtpPort = azienda.SmtpConfig.SmtpPort.GetValueOrDefault();
                UseSsl = azienda.SmtpConfig.UseSsl.GetValueOrDefault();
            }
        }
コード例 #6
0
ファイル: ModelloLetteraTesto.cs プロジェクト: gipasoft/Sfera
 /// <summary>
 /// Crea un Modello di lettera testo valido
 /// </summary>
 public ModelloLetteraTesto(string descrizione, int importanza, TipoModelloLetteraTestoEnum tipo, Azienda azienda)
 {
     Importanza = importanza;
     Descrizione = descrizione;
     Tipo = tipo;
     Azienda = azienda;
 }
コード例 #7
0
ファイル: ModelloLettera.cs プロジェクト: gipasoft/Sfera
 /// <summary>
 /// Crea una Nazione valida
 /// </summary>
 public ModelloLettera(string descrizione, TipoModelloLetteraEnum tipo, string checksum, Azienda azienda)
 {
     Tipo = tipo;
     Descrizione = descrizione;
     Azienda = azienda;
     Checksum = checksum;
 }
コード例 #8
0
ファイル: BusinessUnitTest.cs プロジェクト: gipasoft/Sfera
        protected void SetUp()
        {
            var mocks = new MockRepository();

            var azienda = new Azienda("PROV", "Azienda di prova");
            var condominio = new Condominio("Condominio di prova", 31, 12, 2012, azienda);

            var stabile = new Palazzina(condominio, "Stabile di prova", false);
            condominio.Palazzine.Add(stabile);

            var scala = new GruppoStabile(stabile, "Scala di prova");
            var tipoUnitaImmobiliare = new TipoUnitaImmobiliare("Abitazione");
            var unitaImmobiliare = new UnitaImmobiliare(scala, tipoUnitaImmobiliare);
            var annoGestionale = new AnnoGestionale(condominio, 2012, 2012);
            _esercizio = new Esercizio(condominio, new DateTime(2012, 1, 1), new DateTime(2012, 12, 31), annoGestionale, GestioneEsercizioEnum.Ordinario);

            _subentroRepository = mocks.Stub<ISubentroUnitaImmobiliareDao>();

            var subentro1 = mocks.Stub<SubentroUnitaImmobiliare>();
            subentro1.SoggettoEntrante = new SoggettoCondominio(unitaImmobiliare, new Persona(TipoPersonaEnum.Fisica, "Giorgio", "Parmeggiani", 1, true));
            subentro1.SoggettoUscente = new SoggettoCondominio(unitaImmobiliare, new Persona(TipoPersonaEnum.Fisica, "Daniele", "Vaccari", 1, true));

            var subentro2 = mocks.Stub<SubentroUnitaImmobiliare>();
            subentro1.SoggettoEntrante = new SoggettoCondominio(unitaImmobiliare, subentro1.SoggettoUscente.Persona);
            subentro1.SoggettoUscente = new SoggettoCondominio(unitaImmobiliare, new Persona(TipoPersonaEnum.Fisica, "Luigi", "Cacciatori", 1, true));

            using (mocks.Record())
            {
                SetupResult.For(_subentroRepository.GetByDataCondominio(_esercizio.CondominioRiferimento.ID, _esercizio.DataApertura.GetValueOrDefault(), _esercizio.DataChiusura.GetValueOrDefault(), false)).Return(new List<SubentroUnitaImmobiliare> { subentro1, subentro2 });
            }

        }
コード例 #9
0
 /// <summary>
 /// Crea una Spedizione di archiviazione ottica valida
 /// </summary>
 public SpedizioneArchiviazioneOttica(TipoDocumentoArchiviazione tipo, string descrizione, string file, DateTime data, Azienda azienda)
 {
     Tipo = tipo;
     Descrizione = descrizione;
     File = file;
     Azienda = azienda;
     Data = data;
 }
コード例 #10
0
ファイル: CausaleACBIAzienda.cs プロジェクト: gipasoft/Sfera
        /// <summary>
        /// Crea un oggetto per memorizzare informazioni della causale CBI legate alla azienda
        /// </summary>
        public CausaleACBIAzienda(CausaleACBI causale, Azienda azienda)
        {
            CausaleACBI = causale;
            Azienda = azienda;

            if (CausaleACBI != null)
                CausaleACBI.Aziende.Add(this);
        }
コード例 #11
0
ファイル: MessaggioInvio.cs プロジェクト: gipasoft/Sfera
 /// <summary>
 /// Crea un invio Messaggio valido
 /// </summary>
 public MessaggioInvio(string descrizione, string checkSumFile, Referente referente, Azienda azienda)
 {
     Descrizione = descrizione;
     CheckSumFile = checkSumFile;
     Referente = referente;
     Azienda = azienda;
     Stato = StatoInvioMessaggio.Inserito;
 }
コード例 #12
0
ファイル: Documento.cs プロジェクト: gipasoft/Sfera
 /// <summary>
 /// Crea un Documento valido
 /// </summary>
 public Documento(string checksum, string fileName, string fileExtension, string tipoDocumento, bool nocache, Azienda azienda)
 {
     FileName = fileName;
     FileExtension = fileExtension;
     Tipo = tipoDocumento;
     Checksum = checksum;
     Azienda = azienda;
     NoCache = nocache;
 }
コード例 #13
0
ファイル: Disposizione.cs プロジェクト: gipasoft/Sfera
 /// <summary>
 /// Crea una Disposizione valida
 /// </summary>
 public Disposizione(string descrizione, DateTime? data, Azienda azienda, LogTransazione logTransazione)
 {
     Descrizione = descrizione;
     Data = data;
     Azienda = azienda;
     LogTransazione = logTransazione;
     if (LogTransazione != null)
         LogTransazione.DisposizioniPagamento.Add(this);
 }
コード例 #14
0
ファイル: FileCBI.cs プロジェクト: gipasoft/Sfera
        /// <summary>
        /// Crea un file CBI valido
        /// </summary>
        public FileCBI(string hashCode, Azienda azienda, LogTransazione logTransazione)
        {
            Azienda = azienda;
            HashCode = hashCode;

            LogTransazione = logTransazione;
            if (LogTransazione != null)
                LogTransazione.FileCbi.Add(this);
        }
コード例 #15
0
ファイル: PianoConti.cs プロジェクト: gipasoft/Sfera
 /// <summary>
 /// Crea un conto comune a tutti i piani dei conti condominiali
 /// </summary>
 public PianoConti(string codice, string descrizione, TipoContoEconomicoEnum tipo, bool ripartizione, bool utilizzabileRegistrazioneSpese, bool utilizzabileVersamentoCondomini, Azienda azienda)
 {
     Descrizione = descrizione;
     Codice = codice;
     Tipo = tipo;
     Ripartizione = ripartizione;
     Azienda = azienda;
     UtilizzabileRegistrazioneSpese = utilizzabileRegistrazioneSpese;
     UtilizzabileVersamentoCondomini = utilizzabileVersamentoCondomini;
 }
コード例 #16
0
ファイル: Referente.cs プロジェクト: gipasoft/Sfera
 /// <summary>
 /// Crea uno Referente valido
 /// </summary>
 public Referente(string sigla, Persona persona, Azienda azienda)
 {
     
     if (azienda != null)
     {
         Sigla = sigla;
         PersonaRiferimento = persona;
         Azienda = azienda;
     }
 }
コード例 #17
0
        /// <summary>
        /// Crea un FascicoloImmobiliareAzienda valido
        /// </summary>
        public FascicoloImmobiliareAzienda(FascicoloImmobiliare fascicolo, bool? visibileCondomino, bool abilitato, Azienda azienda)
        {
            Azienda = azienda;
            Fascicolo = fascicolo;
            VisibileCondomino = visibileCondomino;
            Abilitato = abilitato;

            if (Fascicolo != null)
                Fascicolo.FascicoliAzienda.Add(this);
        }
コード例 #18
0
        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);
        }
コード例 #19
0
ファイル: Condominio.cs プロジェクト: gipasoft/Sfera
		/// <summary>
		/// Crea un Condominio valido
		/// </summary>
		public Condominio(string descrizione, int giornoChiusuraEsercizio, int meseChiusuraEsercizio, int annoInizio, Azienda azienda)
		{
			_isDirty = true;
			_descrizione = descrizione;
			_azienda = azienda;
			GiornoChiusuraEsercizioOrdinario = giornoChiusuraEsercizio;
			MeseChiusuraEsercizioOrdinario = meseChiusuraEsercizio;
			AnnoInizio = annoInizio;
		    Indirizzo = new Address {Indirizzo = string.Empty};
		    FormatoDescrizioneSpesa = "<sottoconto>";

			// Default
            if (_azienda != null)
            {
                var stabileDefault = new Palazzina(this, "Stabile A");
            }
		}
コード例 #20
0
        private DocumentInfo pGetLetteraCompilataBase(string testoLettera, Azienda azienda, string descrizione, ParametriStampaUnione parametri)
        {
            var merge = _messaggisticaService.MailMerge(testoLettera, parametri, azienda.ID);

            if (string.IsNullOrEmpty(descrizione))
                descrizione = string.Format("Documento {0:yyyy-dd-M--HH-mm-ss}", DateTime.Now);

            byte[] bytes = Conversione.ToByteArray(merge);
            return new DocumentInfo
            {
                Body = bytes,
                FileName = Conversione.ToFileName(descrizione),
                Length = bytes.Length,
                BodyText = Conversione.ToString(bytes),
                FileExtension = ".rtf"
            };
        }
コード例 #21
0
        /// <summary>
        /// RECORD DI TIPO "C": DATI CONTABILI DEL CONTRIBUENTE
        /// </summary>
        /// <param name="azienda">Studio di riferimento</param>
        /// <param name="progressivoInvioTelematico"></param>
        /// <param name="numeroInviiTelematici"></param>
        /// <param name="sw">File di scrittura</param>
        private void writeRowC_QuadroAC(Azienda azienda, Condominio condominio, int progressivoModulo, IDictionary<Fornitore, decimal> dati, StreamWriter sw)
        {
            try
            {
                StringBuilder sb = new StringBuilder(1900);

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

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

                // Codice fiscale del contribuente (Studio)
                sb.Append(azienda.CodiceFiscale.PadRight(16, ' '));

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

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

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

                // Spazio utente
                sb.Append(string.Empty.PadRight(20));

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

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

                //======================================================
                // QUADRO AC - Comunicazione dell'amministratore di condominio
                //======================================================

                //---------------------------------------------
                // Dati identificativi del condominio
                //---------------------------------------------
                // Codice Fiscale
                sb.Append(getCampoNonPosizionale("AC001001", condominio.CodiceFiscale, AllineamentoCaratteri.Sinistro));
                // Denominazione
                sb.Append(getCampoNonPosizionale("AC001002", Gipasoft.Library.Conversione.ToCBI(condominio.Descrizione), AllineamentoCaratteri.Sinistro));
                // Comune del domicilio fiscale
                sb.Append(getCampoNonPosizionale("AC001003", Gipasoft.Library.Conversione.ToCBI(condominio.Indirizzo.Comune.Descrizione), AllineamentoCaratteri.Sinistro));
                // Provincia
                sb.Append(getCampoNonPosizionale("AC001004", condominio.Indirizzo.Comune.ProvinciaAppartenenza.Codice, AllineamentoCaratteri.Sinistro));
                // Indirizzo
                sb.Append(getCampoNonPosizionale("AC001005", Gipasoft.Library.Conversione.ToCBI(condominio.Indirizzo.GetIndirizzoCompleto()), AllineamentoCaratteri.Sinistro));

                //---------------------------------------------
                // Dati relativi ai fornitori e agli acquisti di beni di servizi
                //---------------------------------------------
                int index = 1;
                foreach (KeyValuePair<Fornitore, decimal> kvp in dati)
                {
                    index++;

                    Fornitore fornitore = kvp.Key;

                    //---------------------------------------------
                    // Ritenute operate, trattenute per assistenza fiscale e imposte sostitutive
                    //---------------------------------------------

                    // Codice fiscale
                    sb.Append(getCampoNonPosizionale("AC0" + index.ToString().PadLeft(2, '0') + "001", fornitore.GetCodiceFiscale(), AllineamentoCaratteri.Sinistro));

                    // Cognome ovvero denominazione
                    if (fornitore.PersonaRiferimento.TipoPersona.GetValueOrDefault() == Sfera.Enums.TipoPersonaEnum.Giuridica)
                        sb.Append(getCampoNonPosizionale("AC0" + index.ToString().PadLeft(2, '0') + "002", fornitore.PersonaRiferimento.RagioneSociale, AllineamentoCaratteri.Sinistro));
                    else
                    {
                        sb.Append(getCampoNonPosizionale("AC0" + index.ToString().PadLeft(2, '0') + "002", fornitore.PersonaRiferimento.Cognome, AllineamentoCaratteri.Sinistro));
                        // Nome
                        sb.Append(getCampoNonPosizionale("AC0" + index.ToString().PadLeft(2, '0') + "003", fornitore.PersonaRiferimento.Nome, AllineamentoCaratteri.Sinistro));
                        // Sesso
                        sb.Append(getCampoNonPosizionale("AC0" + index.ToString().PadLeft(2, '0') + "004", fornitore.PersonaRiferimento.Sesso.ToString().Substring(0, 1).ToUpper(), AllineamentoCaratteri.Sinistro));
                        // Data di nascita
                        sb.Append(getCampoNonPosizionale("AC0" + index.ToString().PadLeft(2, '0') + "005", convertData(fornitore.PersonaRiferimento.DataNascita), AllineamentoCaratteri.Destro));
                        // Comune di nascita
                        sb.Append(getCampoNonPosizionale("AC0" + index.ToString().PadLeft(2, '0') + "006", fornitore.PersonaRiferimento.ComuneNascita.Descrizione, AllineamentoCaratteri.Sinistro));
                        // Provincia di nascita
                        sb.Append(getCampoNonPosizionale("AC0" + index.ToString().PadLeft(2, '0') + "007", fornitore.PersonaRiferimento.ComuneNascita.ProvinciaAppartenenza.Codice, AllineamentoCaratteri.Sinistro));
                    }

                    // Comune del domicilio fiscale
                    sb.Append(getCampoNonPosizionale("AC0" + index.ToString().PadLeft(2, '0') + "008", fornitore.PersonaRiferimento.IndirizzoResidenza.Comune.Descrizione, AllineamentoCaratteri.Sinistro));
                    // Provincia
                    sb.Append(getCampoNonPosizionale("AC0" + index.ToString().PadLeft(2, '0') + "009", fornitore.PersonaRiferimento.IndirizzoResidenza.Comune.ProvinciaAppartenenza.Codice, AllineamentoCaratteri.Sinistro));
                    // Via e numero civico
                    sb.Append(getCampoNonPosizionale("AC0" + index.ToString().PadLeft(2, '0') + "010", fornitore.PersonaRiferimento.IndirizzoResidenza.GetIndirizzoCompleto(), AllineamentoCaratteri.Sinistro));

                    // Importo complessivo degli acquisti di beni e servizi
                    sb.Append(getCampoNonPosizionale("AC0" + index.ToString().PadLeft(2, '0') + "012", Math.Truncate(kvp.Value).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 riga C per il Quadro AC -" + Gipasoft.Library.Utility.GetMethodDescription() + " - condominio:" + condominio.ID, ex);
                throw ex;
            }
        }
コード例 #22
0
        /// <summary>
        /// Record contenente i dati anagrafici del contribuente e gli altri dati del modello base
        /// </summary>
        /// <param name="condominio"></param>
        /// <param name="progressivoInvioTelematico"></param>
        /// <param name="numeroInviiTelematici"></param>
        /// <param name="sw">File di scrittura</param>
        private void writeRowB_QuadroAC(Azienda azienda, int anno, StreamWriter sw)
        {
            try
            {
                StringBuilder sb = new StringBuilder(1900);

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

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

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

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

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

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

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

                // ---------------------------------------------------------------------------------------------------------
                // Comunicazione di mancata corrispondenza dei dati da trasmettere con quelli risultanti dalla dichiarazione
                // ---------------------------------------------------------------------------------------------------------
                // Flag conferma
                sb.Append("0");

                //======================================================
                // Dati del frontespizio
                //======================================================

                //---------------------------------------------
                // Tipo di dichiarazione
                // Nel caso di dichiarazione integrativa (casella 23 del rec. B impostata con il valore "1") le caselle della
                // presente sezione devono essere compilate in maniera conforme a quanto indicato nel paragrafo 2.8 delle
                // presenti specifiche tecniche
                //---------------------------------------------

                // Redditi
                sb.Append("0");
                // filler
                sb.Append(string.Empty.PadLeft(1));

                // IVA
                sb.Append("0");
                // Modulo RW
                sb.Append("0");
                // Quadro VO
                sb.Append("0");
                // Quadro AC
                sb.Append("1");
                // Studi di settore
                sb.Append("0");
                // Parametri
                sb.Append("0");
                // Indicatori
                sb.Append("0");

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

                // IVA Base
                sb.Append(" ");
                // Dichiarazione correttiva nei termini
                sb.Append("0");
                // Dichiarazione correttiva/integrativa parziale
                sb.Append("0");
                // Dichiarazione integrativa
                sb.Append("0");
                // Eventi eccezionali
                sb.Append("0");

                //---------------------------------------------
                // Dati del contribuente (condominio)
                //---------------------------------------------

                // filler
                sb.Append(string.Empty.PadLeft(24));
                sb.Append(string.Empty.PadLeft(20));

                // Denominazione
                string denominazione = Gipasoft.Library.Conversione.ToCBI(azienda.Descrizione);
                if (denominazione.Length > 60)
                    denominazione = denominazione.Substring(0, 60);
                sb.Append(denominazione.PadRight(60));

                // Partita IVA
                sb.Append(string.Empty.PadLeft(11));
                // Telefono Prefisso e Numero
                sb.Append(string.Empty.PadLeft(12));
                // FAX
                sb.Append(string.Empty.PadLeft(12));
                // Indirizzo di posta elettronica
                sb.Append(string.Empty.PadLeft(50));

                // filler
                sb.Append(string.Empty.PadLeft(40));
                sb.Append(string.Empty.PadLeft(2));
                sb.Append(string.Empty.PadLeft(8));
                sb.Append(string.Empty.PadLeft(1));
                sb.Append(string.Empty.PadLeft(1));
                sb.Append(string.Empty.PadLeft(40));
                sb.Append(string.Empty.PadLeft(2));
                sb.Append(string.Empty.PadLeft(5));
                sb.Append(string.Empty.PadLeft(4));
                sb.Append(string.Empty.PadLeft(20));
                sb.Append(string.Empty.PadLeft(35));
                sb.Append(string.Empty.PadLeft(10));
                sb.Append(string.Empty.PadLeft(35));
                sb.Append(string.Empty.PadLeft(8));
                sb.Append(string.Empty.PadLeft(1));
                sb.Append(string.Empty.PadLeft(1));

                //---------------------------------------------
                // Dati relativi alla società o ente
                //---------------------------------------------

                // Data di variazione sede legale
                sb.Append(string.Empty.PadRight(6, '0'));

                // Comune della sede legale
                string comuneSedeLegale = Gipasoft.Library.Conversione.ToCBI(azienda.IndirizzoSede.Comune.Descrizione);
                if (comuneSedeLegale.Length > 40)
                    comuneSedeLegale = comuneSedeLegale.Substring(0, 40);
                sb.Append(comuneSedeLegale.PadRight(40));

                // Sigla della provincia della sede legale
                sb.Append(azienda.IndirizzoSede.Comune.ProvinciaAppartenenza.Codice);

                // Codice comune
                sb.Append(azienda.IndirizzoSede.Comune.CodiceCatastale.PadRight(4));

                // Indirizzo della sede legale: frazione, via e numero civico
                string indirizzoSedeLegale = Gipasoft.Library.Conversione.ToCBI(azienda.IndirizzoSede.Localita);
                if (!string.IsNullOrEmpty(indirizzoSedeLegale))
                    indirizzoSedeLegale += ",";
                indirizzoSedeLegale += Gipasoft.Library.Conversione.ToCBI(azienda.IndirizzoSede.GetIndirizzoCompleto());
                if (indirizzoSedeLegale.Length > 35)
                    indirizzoSedeLegale = indirizzoSedeLegale.Substring(0, 35);
                sb.Append(indirizzoSedeLegale.PadRight(35));

                // C.A.P. del comune della sede legale
                sb.Append(azienda.IndirizzoSede.Cap.PadLeft(5));

                // Data di variazione domicilio fiscale
                sb.Append(string.Empty.PadRight(6, '0'));

                // Comune del domicilio fiscale
                sb.Append(string.Empty.PadRight(40));
                // Provincia (sigla) del domicilio fiscale
                sb.Append(string.Empty.PadRight(2));
                // Codice Comune
                sb.Append(string.Empty.PadRight(4));
                // Frazione, via e numero civico del domicilio fiscale
                sb.Append(string.Empty.PadRight(35));
                // Cap del domicilio fiscale
                sb.Append(string.Empty.PadRight(5, '0'));

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

                // Data inizio periodo imposta
                sb.Append(convertData(new DateTime(anno, 1, 1)));
                // Data fine periodo imposta
                sb.Append(convertData(new DateTime(anno, 12, 31)));

                // Stato
                sb.Append("1");
                // Natura giuridica
                sb.Append("25");
                // Situazione
                sb.Append("6");

                // Codice fiscale, in caso di fusione, della
                // società incorporante o risultante dalla
                // fusione e, in caso di scissione, della
                // società beneficiaria designata
                sb.Append(string.Empty.PadRight(11));

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

                // Grandi contribuenti
                sb.Append(string.Empty.PadLeft(1));

                // filler
                sb.Append(string.Empty.PadLeft(1));
                sb.Append(string.Empty.PadLeft(2));
                sb.Append(string.Empty.PadLeft(8));
                sb.Append(string.Empty.PadLeft(20));
                sb.Append(string.Empty.PadLeft(24));
                sb.Append(string.Empty.PadLeft(3));
                sb.Append(string.Empty.PadLeft(24));
                sb.Append(string.Empty.PadLeft(24));
                sb.Append(string.Empty.PadLeft(35));
                sb.Append(string.Empty.PadLeft(1));
                sb.Append(string.Empty.PadLeft(1));
                sb.Append(string.Empty.PadLeft(1));
                sb.Append(string.Empty.PadLeft(1));
                sb.Append(string.Empty.PadLeft(1));
                sb.Append(string.Empty.PadLeft(1));
                sb.Append(string.Empty.PadLeft(1));

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

                //---------------------------------------------
                // Firma della Dichiarazione
                // Il seguente controllo vale per tutti i campi della sezione.
                // Se non sono impostati i campi 7 e 8 del record A oppure il campo 7 del record A è impostato ad '1' e la
                // casella è impostata ad '1' deve essere presente almeno un dato del relativo quadro
                // Se risulta compilato il relativo quadro, la casella deve essere impostata al valore "1".
                // Nel caso di dichiarazione integrativa (casella 23 del rec. B impostata con il valore "1") le caselle della
                // presente sezione devono essere compilate in maniera conforme a quanto indicato nel paragrafo 2.8 delle
                // presenti specifiche tecniche
                //---------------------------------------------
                // Casella quadro RA 987 1 NU
                sb.Append(string.Empty.PadLeft(1));

                // Casella quadro RB 988 1 NU
                sb.Append(string.Empty.PadLeft(1));

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

                // Casella quadro RD 990 1 NU
                sb.Append(string.Empty.PadLeft(1));
                // Casella quadro RE 991 1 NU
                sb.Append(string.Empty.PadLeft(1));
                // Casella quadro RF 992 1 NU
                sb.Append(string.Empty.PadLeft(1));
                // Casella quadro RG 993 1 NU
                sb.Append(string.Empty.PadLeft(1));
                // Casella quadro RH 994 1 NU
                sb.Append(string.Empty.PadLeft(1));

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

                // Casella quadro RK 996 1 NU
                sb.Append(string.Empty.PadLeft(1));
                // Casella quadro RL 997 1 NU
                sb.Append(string.Empty.PadLeft(1));
                // Casella quadro RM 998 1 NU
                sb.Append(string.Empty.PadLeft(1));
                // Casella quadro RN 999 1 NU
                sb.Append(string.Empty.PadLeft(1));
                // Casella quadro RO 1000 1 NU
                sb.Append(string.Empty.PadLeft(1));
                // Casella quadro RP 1001 1 NU
                sb.Append(string.Empty.PadLeft(1));
                // Casella quadro RQ 1002 1 NU
                sb.Append(string.Empty.PadLeft(1));

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

                // Casella quadro RS 1004 1 NU
                sb.Append(string.Empty.PadLeft(1));
                // Casella quadro RT 1005 1 NU
                sb.Append(string.Empty.PadLeft(1));
                // Casella quadro RU 1006 1 NU
                sb.Append(string.Empty.PadLeft(1));
                // Casella quadro RV 1007 1 NU
                sb.Append(string.Empty.PadLeft(1));
                // Casella quadro RX 1008 1 NU
                sb.Append(string.Empty.PadLeft(1));
                // Casella quadro RJ
                sb.Append(string.Empty.PadLeft(1));

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

                // Casella quadro EC 1015 1 NU
                sb.Append(string.Empty.PadLeft(1));
                // Casella quadro FC 1016 1 NU
                sb.Append(string.Empty.PadLeft(1));

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

                // Numero Moduli IVA
                sb.Append(string.Empty.PadLeft(3));

                // Invio avviso telematico all'intermediario
                sb.Append(string.Empty.PadLeft(1));

                // Firma del dichiarante
                sb.Append("1");

                //---------------------------------------------
                // Flag di conferma parziali
                //---------------------------------------------

                // Flag conferma Redditi 1041 1 CB 
                sb.Append(string.Empty.PadLeft(1));
                // Flag conferma IVA 1042 1 CB 
                sb.Append(string.Empty.PadLeft(1));
                // Flag conferma Studi di settore/parametri
                sb.Append(string.Empty.PadLeft(1));

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

                //---------------------------------------------
                // Domicilio per la notificazione degli atti.
                //---------------------------------------------

                // Codice fiscale
                sb.Append(azienda.CodiceFiscale.PadRight(16));

                // Ufficio o denominazione/ragione sociale
                sb.Append(Gipasoft.Library.Conversione.ToCBI(azienda.Descrizione).PadRight(60));

                // Cognome
                sb.Append(string.Empty.PadRight(24));

                // Nome
                sb.Append(string.Empty.PadRight(20));

                // Comune
                sb.Append(Gipasoft.Library.Conversione.ToCBI(azienda.IndirizzoSede.Comune.Descrizione).PadRight(40));

                // Provincia
                sb.Append(azienda.IndirizzoSede.Comune.ProvinciaAppartenenza.Codice.PadRight(2));

                // Codice Comune
                sb.Append(azienda.IndirizzoSede.Comune.CodiceCatastale.PadRight(4));

                // CAP
                sb.Append(azienda.IndirizzoSede.Cap.PadLeft(5));

                // Tipologia
                sb.Append("VIA".PadRight(20));

                // Indirizzo
                sb.Append(azienda.IndirizzoSede.Indirizzo.PadRight(35));

                // Numero Civico
                sb.Append(azienda.IndirizzoSede.Civico.PadRight(10));

                // Frazione
                string frazione = string.Empty;
                if (azienda.IndirizzoSede.Localita != null)
                    frazione = Gipasoft.Library.Conversione.ToCBI(azienda.IndirizzoSede.Localita);
                sb.Append(frazione.PadRight(35));

                // filler
                sb.Append(string.Empty.PadLeft(24));
                sb.Append(string.Empty.PadLeft(3));
                sb.Append(string.Empty.PadLeft(24));
                sb.Append(string.Empty.PadLeft(24));
                sb.Append(string.Empty.PadLeft(35));

                //---------------------------------------------
                // Dati relativi al rappresentante firmatario della dichiarazione
                //---------------------------------------------

                // Codice fiscale
                sb.Append(azienda.Amministratore.PersonaRiferimento.CodiceFiscale.PadRight(16));

                // Codice carica del rappresentante
                sb.Append("13");

                // Data carica del rappresentante
                sb.Append("00000000");

                // Codice fiscale società o ente dichiarante
                sb.Append(string.Empty.PadLeft(11));

                // Cognome del rappresentante
                sb.Append(Gipasoft.Library.Conversione.ToCBI(azienda.Amministratore.PersonaRiferimento.Cognome).ToUpper().PadRight(24));

                // Nome del rappresentante
                sb.Append(Gipasoft.Library.Conversione.ToCBI(azienda.Amministratore.PersonaRiferimento.Nome).ToUpper().PadRight(20));

                // Sesso del rappresentante
                sb.Append(azienda.Amministratore.PersonaRiferimento.Sesso.ToString().Substring(0, 1));

                // Data di nascita del rappresentante
                sb.Append(convertData(azienda.Amministratore.PersonaRiferimento.DataNascita));

                // Comune o stato estero di nascita del rappresentante
                sb.Append(Gipasoft.Library.Conversione.ToCBI(azienda.Amministratore.PersonaRiferimento.ComuneNascita.Descrizione).PadRight(40));

                // Sigla della provincia di nascita del rappresentante
                sb.Append(azienda.Amministratore.PersonaRiferimento.ComuneNascita.ProvinciaAppartenenza.Codice.PadRight(2));

                // Codice Stato Esterno
                sb.Append("000");

                // Stato federato, provincia, contea
                sb.Append(string.Empty.PadRight(24));

                // Località di residenza
                sb.Append(string.Empty.PadRight(24));

                // Indirizzo estero
                sb.Append(string.Empty.PadRight(35));

                // Numero di telefono del rappresentante
                sb.Append(string.Empty.PadRight(12));

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

                //---------------------------------------------
                // Impegno alla trasmissione telematica
                //---------------------------------------------

                // Codice fiscale dell'intermediario
                sb.Append(azienda.CodiceFiscale.PadRight(16));

                // Numero di iscrizione all'albo del C.A.F.
                sb.Append(string.Empty.PadLeft(5, '0'));

                // Impegno a trasmettere in via telematica la dichiarazione
                sb.Append("1");

                // Ricezione avviso telematico
                sb.Append("0");

                // Data dell'impegno
                sb.Append(string.Empty.PadLeft(8, '0'));

                // Firma dell'intermediario
                sb.Append("1");

                //---------------------------------------------
                // Visto di conformità
                //---------------------------------------------

                // Codice fiscale del responsabile del C.A.F.
                sb.Append(string.Empty.PadRight(16));

                // Codice fiscale del C.A.F.
                sb.Append(string.Empty.PadRight(11, '0'));

                // Codice fiscale del professionista
                sb.Append(string.Empty.PadRight(16));

                // Firma
                sb.Append("0");

                //---------------------------------------------
                // Certificazione tributaria
                // (La sezione può essere valorizzata solo in presenza di quadro RF e di sezione relativa al Visto di conformità e
                // non deve essere valorizzata in caso di tipo fornitore 7 e 8)
                //---------------------------------------------

                // Codice fiscale del professionista 1751 16 CF
                sb.Append(string.Empty.PadRight(16));
                // Codice fiscale o IVA del soggetto
                sb.Append(string.Empty.PadRight(16));
                // Firma 1783 1 CB
                sb.Append(string.Empty.PadRight(1));

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

                //---------------------------------------------
                // Spazio riservato al Servizio telematico
                //---------------------------------------------

                // Spazio riservato al Servizio Telematico
                sb.Append(string.Empty.PadLeft(20));

                //---------------------------------------------
                // Spazio riservato a Poste
                //---------------------------------------------
                // Numero progressivo del pacco
                sb.Append(string.Empty.PadLeft(7));
                // Numero sequenza della dichiarazione all'interno del pacco
                sb.Append(string.Empty.PadLeft(3));

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

                // Codice del Centro Operativo 1879 1 AN Vale 'I' o 'N'
                sb.Append(string.Empty.PadLeft(1));
                // Formato errato 1880 1 CB
                sb.Append(string.Empty.PadLeft(1));
                // Incoerenza nei dati dichiarati 1881 1 CB
                sb.Append(string.Empty.PadLeft(1));
                // Comunicazione situazioni particolari 1882 1 CB
                sb.Append(string.Empty.PadLeft(1));
                // Protocollo con identificativo del modello errato
                sb.Append(string.Empty.PadLeft(1));
                // Dichiarazione smarrita 1884 1 CB
                sb.Append(string.Empty.PadLeft(1));

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

                //---------------------------------------------
                // 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 riga C - Quadro AC - " + Gipasoft.Library.Utility.GetMethodDescription() + " - azienda:" + azienda.ID + " - anno:" + anno.ToString(), ex);
                throw ex;
            }
        }
コード例 #23
0
ファイル: SuperCondominio.cs プロジェクト: gipasoft/Sfera
 /// <summary>
 /// Crea uno Super Condominio valido
 /// </summary>
 public SuperCondominio(string descrizione, int giornoChiusuraEsercizio, int meseChiusuraEsercizio, int annoInizio, Azienda azienda) : base(descrizione, giornoChiusuraEsercizio, meseChiusuraEsercizio, annoInizio, azienda)
 { }
コード例 #24
0
ファイル: ImpostazioniAzienda.cs プロジェクト: gipasoft/Sfera
 /// <summary>
 /// Crea una Impostazione Azienda valida
 /// </summary>
 public ImpostazioniAzienda(Azienda azienda)
 {
     Azienda = azienda;
 }
コード例 #25
0
        private List<byte[]> getModuloPages(IList<DatiCertificazioneDTO> datiCertificazione, PersonaDTO firmatarioDichiarazione, PersonaDTO intermediarioDichiarazione, bool aggregatoPerFornitore, bool intermediarioDichiarazioneCondominio, DateTime dataDichiarazione, TipoOperazioneFiscale tipoOperazione, int anno, Azienda azienda, byte[] templateFrontespizio, byte[] templatePercipiente, byte[] templateDatiLavoratoreAutonomo)
        {
            var moduloFrontespizio = new Dictionary<int, byte[]>();
            var moduloFornitori = new Dictionary<int, IList<byte[]>>();

            var datiGroupByCondominio = datiCertificazione.GroupBy(item => item.IdCondominio);
            foreach (var datiPerCondominio in datiGroupByCondominio)
            {
                try
                {
                    var condominio = _daoFactory.GetCondominioDao().GetById(datiPerCondominio.Key, false);

                    var datiGroupByFornitore = datiPerCondominio.GroupBy(item => item.IdFornitore).ToList();

                    // =============================================================================================
                    // Creazione dei moduli
                    // =============================================================================================

                    // -----------------------------------------------------------------------------
                    // Frontespizio
                    // -----------------------------------------------------------------------------
                    string codiceFiscaleFirmatario;
                    string nomeFirmatario;
                    string cognomeFirmatario;
                    if (firmatarioDichiarazione != null)
                    {
                        nomeFirmatario = firmatarioDichiarazione.Nome;
                        cognomeFirmatario = firmatarioDichiarazione.Cognome;
                        codiceFiscaleFirmatario = firmatarioDichiarazione.CodiceFiscale;
                    }
                    else
                    {
                        nomeFirmatario = condominio.Azienda.Amministratore.PersonaRiferimento.Nome;
                        cognomeFirmatario = condominio.Azienda.Amministratore.PersonaRiferimento.Cognome;
                        codiceFiscaleFirmatario = condominio.Azienda.Amministratore.PersonaRiferimento.CodiceFiscale;
                    }

                    var numeroCertificazioniLavoroAutonomo = 0;
                    if (!aggregatoPerFornitore)
                        numeroCertificazioniLavoroAutonomo += datiCertificazione.Sum(datiCertificazioneDTO => datiCertificazioneDTO.Dettaglio.Count);
                    else
                        numeroCertificazioniLavoroAutonomo = datiGroupByFornitore.Count();

                    string codiceFiscaleIntermediario;
                    string nominativoIntermediario;
                    if (intermediarioDichiarazione != null)
                    {
                        codiceFiscaleIntermediario = intermediarioDichiarazione.CodiceFiscale;
                        nominativoIntermediario = intermediarioDichiarazione.DisplayName;
                    }
                    else if (intermediarioDichiarazioneCondominio)
                    {
                        codiceFiscaleIntermediario = condominio.CodiceFiscale;
                        nominativoIntermediario = condominio.Descrizione;
                    }
                    else
                    {
                        codiceFiscaleIntermediario = azienda.CodiceFiscale;
                        nominativoIntermediario = azienda.Descrizione;
                    }

                    var datiFrontespizio = new DatiFrontespizioCU
                    {
                        CodiceFiscaleCondominio = condominio.CodiceFiscale,
                        DenominazioneCondominio = condominio.Descrizione,
                        Annullamento = tipoOperazione == TipoOperazioneFiscale.Annullamento ? "1" : string.Empty,
                        Sostituzione = tipoOperazione == TipoOperazioneFiscale.Sostituzione ? "1" : string.Empty,
                        CodiceFiscaleAmministratore = codiceFiscaleFirmatario,
                        CognomeAmministratore = cognomeFirmatario.ToUpper(),
                        NomeAmministratore = nomeFirmatario.ToUpper(),
                        CodiceCarica = "13",
                        CodiceFiscaleIntermediario = codiceFiscaleIntermediario,
                        DataPresentazione = dataDichiarazione.ToShortDateString(),
                        NominativoIntermediario = nominativoIntermediario.ToUpper(),
                        NumeroCertificazioniLavoroAutonomo = numeroCertificazioniLavoroAutonomo.ToString(_cultureInfo),
                        NumeroCertificazioniLavoroDipendente = "0",
                        FirmaComunicazione = azienda.Amministratore.PersonaRiferimento.DisplayName,
                        ImpegnoTrasmettereComunicazione = "1"
                    };

                    var bytes = FillForm.FillStream(datiFrontespizio, templateFrontespizio, GestioneFiscaleResources.ModelloCUFrontespizio_FieldMapping, false, true);

                    // Firma
                    if (azienda.FirmaAmministratore != null)
                    {
                        var signature = new Signature(bytes);
                        var firma = _documentService.GetDocument(azienda.FirmaAmministratore.Checksum, azienda.ID, TipoDocumentoArchiviazione.Contratto);
                        if(firma.Body != null)
                            bytes = signature.AddSignature(firma.Body, 1, 470, 460, string.Empty);
                    }

                    moduloFrontespizio.Add(condominio.ID, bytes);

                    // -----------------------------------------------------------------------------
                    // Dati Percipiente - FORNITORE
                    // -----------------------------------------------------------------------------
                    var listaModuloFornitori = new List<byte[]>(datiGroupByFornitore.Count());
                    foreach (var datiPerFornitore in datiGroupByFornitore)
                    {
                        var progressivoModulo = 0;
                        var fornitore = _daoFactory.GetFornitoreDao().GetById(datiPerFornitore.Key, false);

                        var codiceSedeEntratel = "000";
                        if (!string.IsNullOrEmpty(azienda.CodiceSedeEntratel))
                            codiceSedeEntratel = azienda.CodiceSedeEntratel;

                        var datiFornitore = new DatiPercipienteCU
                        {
                            Anno = anno.ToString(_cultureInfo),
                            CodiceFiscaleCondominio = condominio.CodiceFiscale,
                            DenominazioneCondominio = condominio.Descrizione,
                            ComuneCondominio = condominio.Indirizzo.Comune.Descrizione,
                            ProvinciaCondominio = condominio.Indirizzo.Comune.ProvinciaAppartenenza.Codice,
                            CapCondominio = condominio.Indirizzo.Cap,
                            IndirizzoCondominio = condominio.Indirizzo.GetIndirizzoCompleto(),
                            CodiceFiscalePercipiente = fornitore.GetCodiceFiscale(),
                            CognomeRagioneSocialePercipiente = (fornitore.PersonaRiferimento.TipoPersona.GetValueOrDefault() == TipoPersonaEnum.Giuridica) ? fornitore.PersonaRiferimento.RagioneSociale.ToUpper() : fornitore.PersonaRiferimento.Cognome.ToUpper(),
                            NomePercipiente = (fornitore.PersonaRiferimento.TipoPersona.GetValueOrDefault() == TipoPersonaEnum.Giuridica) ? string.Empty : fornitore.PersonaRiferimento.Nome.ToUpper(),
                            ComuneNascitaPercipiente = (fornitore.PersonaRiferimento.TipoPersona.GetValueOrDefault() == TipoPersonaEnum.Fisica) ? fornitore.PersonaRiferimento.ComuneNascita.Descrizione : string.Empty,
                            ProvinciaNascitaPercipiente = (fornitore.PersonaRiferimento.TipoPersona.GetValueOrDefault() == TipoPersonaEnum.Fisica) ? fornitore.PersonaRiferimento.ComuneNascita.ProvinciaAppartenenza.Codice : string.Empty,
                            DataNascitaPercipiente = (fornitore.PersonaRiferimento.TipoPersona.GetValueOrDefault() == TipoPersonaEnum.Fisica) ? fornitore.PersonaRiferimento.DataNascita.GetValueOrDefault().ToShortDateString() : string.Empty,
                            SessoPercipiente = (fornitore.PersonaRiferimento.TipoPersona.GetValueOrDefault() == TipoPersonaEnum.Fisica) ? fornitore.PersonaRiferimento.Sesso.ToString().Substring(0, 1).ToUpper() : string.Empty,
                            ComuneResidenzaPercipiente2014 = fornitore.PersonaRiferimento.IndirizzoResidenza.Comune.Descrizione,
                            ProvinciaResidenzaPercipiente2014 = fornitore.PersonaRiferimento.IndirizzoResidenza.Comune.ProvinciaAppartenenza.Codice,
                            CodiceComuneResidenzaPercipiente2014 =  fornitore.PersonaRiferimento.IndirizzoResidenza.Comune.CodiceCatastale,
                            ComuneResidenzaPercipiente2015 = fornitore.PersonaRiferimento.IndirizzoResidenza.Comune.Descrizione,
                            ProvinciaResidenzaPercipiente2015 = fornitore.PersonaRiferimento.IndirizzoResidenza.Comune.ProvinciaAppartenenza.Codice,
                            CodiceComuneResidenzaPercipiente2015 = fornitore.PersonaRiferimento.IndirizzoResidenza.Comune.CodiceCatastale,
                            CodiceAttivita = "970000",
                            CodiceSedeEntratel = codiceSedeEntratel,
                            DataPresentazione = dataDichiarazione.ToShortDateString(),
                            FirmaSostitutoImposta = condominio.Descrizione
                        };

                        if (fornitore.PersonaRiferimento.TipoPersona.GetValueOrDefault() == TipoPersonaEnum.Fisica && int.Parse(fornitore.PersonaRiferimento.ComuneNascita.Codice) > 999201)
                            datiFornitore.ProvinciaNascitaPercipiente = "EE";

                        bytes = FillForm.FillStream(datiFornitore, templatePercipiente, GestioneFiscaleResources.ModelloCUPercipiente_FieldMapping, false, true);

                        // Firma
                        if (azienda.FirmaAmministratore != null)
                        {
                            var signature = new Signature(bytes);
                            var firma = _documentService.GetDocument(azienda.FirmaAmministratore.Checksum, azienda.ID, TipoDocumentoArchiviazione.Contratto);
                            if(firma.Body != null)
                                bytes = signature.AddSignature(firma.Body, 1, 470, 350, string.Empty);
                        }

                        listaModuloFornitori.Add(bytes);

                        if (tipoOperazione != TipoOperazioneFiscale.Annullamento)
                        {
                            if (aggregatoPerFornitore)
                            {
                                var datiCertificazioneFornitore = datiPerFornitore.FirstOrDefault();
                                if (datiCertificazioneFornitore != null)
                                {
                                    progressivoModulo++;
                                    listaModuloFornitori.Add(getModuloLavoratoreAutonomo(fornitore, datiCertificazioneFornitore.Dettaglio, datiCertificazioneFornitore.EsenteRegimeMinimo, anno, progressivoModulo, templateDatiLavoratoreAutonomo, azienda));
                                }
                            }
                            else
                            {
                                foreach (var datiCertificazioneDTO in datiPerFornitore)
                                {
                                    foreach (var dettaglioDatiCertificazioneDTO in datiCertificazioneDTO.Dettaglio)
                                    {
                                        progressivoModulo++;
                                        listaModuloFornitori.Add(getModuloLavoratoreAutonomo(fornitore, new List<DettaglioDatiCertificazioneDTO> { dettaglioDatiCertificazioneDTO }, datiCertificazioneDTO.EsenteRegimeMinimo, anno, progressivoModulo, templateDatiLavoratoreAutonomo, azienda));
                                    }
                                }
                            }
                        }
                    }

                    moduloFornitori.Add(condominio.ID, listaModuloFornitori);
                }
                catch (Exception ex)
                {
                    _log.ErrorFormat("Errore inaspettato durante la creazione del file per il modello CU - {0} - anno:{1} - azienda:{2}", ex, Library.Utility.GetMethodDescription(), anno, azienda);
                    throw;
                }
            }

            var result = new List<byte[]>();
            foreach (var frontespizio in moduloFrontespizio)
            {
                // frontespizio
                result.Add(frontespizio.Value);

                // percipiente
                result.AddRange(moduloFornitori[frontespizio.Key]);
            }

            return result;
        } 
コード例 #26
0
ファイル: ImpostazioniReport.cs プロジェクト: gipasoft/Sfera
 /// <summary>
 /// Crea una Impostazione Azienda valida
 /// </summary>
 public ImpostazioniReport(Azienda azienda)
 {
     Azienda = azienda;
 }
コード例 #27
0
        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);
        }
コード例 #28
0
ファイル: MailSenderService.cs プロジェクト: gipasoft/Sfera
        private void initialize(Azienda azienda)
        {
            var mailSection = ConfigurationManager.GetSection("mailSenderSection") as MailSenderSection;
            if (mailSection == null)
                throw new ConfigurationErrorsException("mailSenderSection not found in configuration file");

            Config = getMailSenderConfig(azienda, mailSection);

            IsBusy = false;
            UseAuth = false;
            SmtpLogin = new NetworkCredential();

            SetAuthentication(Config.SmtpUserName, Config.SmtpPassword);
            Smtpclient = new SmtpClient(SmtpServer);
            UseSsl = Config.UseSsl;
            SmtpPort = Config.SmtpPort;

            LoadConfig();

            ThrowException = false;
        }
コード例 #29
0
        private string loadCondominio(string codiceCondominio, string prefixConto, bool loadContiStudio, TipoSaldi tipoSaldi, Azienda azienda, OleDbConnection conn)
        {
            var message = string.Empty;

            var condominioAdapter = new OleDbDataAdapter("SELECT * FROM Stabili WHERE S_COD_STA=" + codiceCondominio, conn);
            var dsCondomini = new DataSet("Condomini");
            condominioAdapter.Fill(dsCondomini, "Stabili");

            var rowCondominio = dsCondomini.Tables["Stabili"].Rows[0];
            var dataFineEsercizio = (DateTime)rowCondominio["S_FIN_ESE"];

            var condominio = _daoFactory.GetCondominioDao().GetByCodice(codiceCondominio.PadLeft(3, '0'), azienda.ID);
            if (condominio == null)
            {
                condominio = new Condominio(rowCondominio["S_NOME"].ToString(), dataFineEsercizio.Day, dataFineEsercizio.Month, dataFineEsercizio.Year + 1, azienda)
                {
                    Codice = codiceCondominio.PadLeft(3, '0'),
                    Indirizzo = new Address
                                    {
                                        Indirizzo = rowCondominio["S_VIA"].ToString(),
                                        Cap = rowCondominio["S_CAP"].ToString()
                                    }
                };

                // Indirizzo
                if (rowCondominio["S_LOCALITA"] != DBNull.Value && !string.IsNullOrEmpty(rowCondominio["S_LOCALITA"].ToString()))
                {
                    var comuni = _daoFactory.GetComuneDao().GetByDescrizione(rowCondominio["S_LOCALITA"].ToString().Trim());
                    if (comuni.Count == 1)
                        condominio.Indirizzo.Comune = comuni[0];
                    else
                        condominio.Indirizzo.Localita = rowCondominio["S_LOCALITA"].ToString();
                }

                _daoFactory.GetCondominioDao().SaveOrUpdate(condominio);
                addDefault(condominio, loadContiStudio);
            }
            else
            {
                // Eliminazione Movimenti Bancari
                _daoFactory.GetMovimentoBancarioDao().ExecuteQuery("DeleteMovimentiBancari", new[] {new QueryParam("IdCondominio", condominio.ID)});

                _daoFactory.GetCondominioDao().ExecuteQuery("DeleteAnagraficaContabilitaCondominio", new[] {new QueryParam("IdCondominio", condominio.ID)});

                // Eliminazione vecchi dati
                foreach (var unita in _daoFactory.GetUnitaImmobiliareDao().GetByCondominio(condominio.ID))
                {
                    foreach (var mill in unita.Millesimi)
                    {
                        mill.ContoRiferimento.Millesimi.Remove(mill);
                        _daoFactory.GetMillesimoDao().Delete(mill);
                    }
                    unita.Millesimi.Clear();

                    IList<SoggettoCondominio> soggetti = unita.Soggetti.ToList();
                    foreach (var sogg in soggetti)
                    {
                        sogg.UnitaImmobiliare.Soggetti.Remove(sogg);
                        _daoFactory.GetSoggettoCondominioDao().Delete(sogg);
                    }
                    unita.Soggetti.Clear();

                    unita.GruppoStabileRiferimento.UnitaImmobiliari.Remove(unita);
                    _daoFactory.GetUnitaImmobiliareDao().Delete(unita);
                }

                foreach (Palazzina stabileDelete in condominio.Palazzine)
                {
                    foreach (GruppoStabile gruppo in stabileDelete.GruppiStabile)
                    {
                        _daoFactory.GetGruppoStabileDao().Delete(gruppo);
                    }
                    _daoFactory.GetPalazzinaDao().Delete(stabileDelete);
                }
                condominio.Palazzine.Clear();

                var stabileFirst = new Palazzina(condominio, "Stabile A");
                _daoFactory.GetPalazzinaDao().SaveOrUpdate(stabileFirst);

                // Dati Bancari
                foreach (DatiBancariCondomini banca in condominio.DatiBancari)
                {
                    foreach (MovimentoBancario mov in banca.MovimentiBancari)
                        _daoFactory.GetMovimentoBancarioDao().Delete(mov);

                    _daoFactory.GetDatiBancariCondominiDao().Delete(banca);
                }
                condominio.DatiBancari.Clear();

                // Piano Conti
                foreach (Conto contoDelete in condominio.Conti)
                    _daoFactory.GetContoDao().Delete(contoDelete);
                condominio.Conti.Clear();

                // Esercizi
                foreach (Esercizio esercizioDelete in condominio.Esercizi)
                {
                    esercizioDelete.AnnoGestionale.Esercizi.Remove(esercizioDelete);
                    _daoFactory.GetEsercizioDao().Delete(esercizioDelete);
                }
                condominio.Esercizi.Clear();

                // Anno Gestionale
                foreach (AnnoGestionale anno in condominio.AnniGestionali)
                    _daoFactory.GetAnnoGestionaleDao().Delete(anno);
                condominio.AnniGestionali.Clear();

                // -------------------------------------
                //  Default del condominio
                // -------------------------------------
                addDefault(condominio, loadContiStudio);
            }

            if (rowCondominio["S_NOTE"] != DBNull.Value && !string.IsNullOrEmpty(rowCondominio["S_NOTE"].ToString()))
                condominio.Note = rowCondominio["S_NOTE"].ToString();

            if (rowCondominio["S_COD_SIA"] != DBNull.Value && !string.IsNullOrEmpty(rowCondominio["S_COD_SIA"].ToString()))
                condominio.CodiceSIA = rowCondominio["S_COD_SIA"].ToString().Trim();

            if (rowCondominio["S_COD_FISCALE"] != DBNull.Value && !string.IsNullOrEmpty(rowCondominio["S_COD_FISCALE"].ToString()))
                condominio.CodiceFiscale = rowCondominio["S_COD_FISCALE"].ToString().Trim();

            if (rowCondominio["S_IBAN_COMPLETO"] != DBNull.Value && !string.IsNullOrEmpty(rowCondominio["S_IBAN_COMPLETO"].ToString()))
            {
                var datiBancari = new DatiBancariCondomini(rowCondominio["S_IBAN_COMPLETO"].ToString().Trim(), condominio);
                condominio.DatiBancari.Add(datiBancari);
            }
            else if (rowCondominio["S_ABI"] != DBNull.Value && !string.IsNullOrEmpty(rowCondominio["S_ABI"].ToString()) && rowCondominio["S_CAB"] != DBNull.Value && !string.IsNullOrEmpty(rowCondominio["S_CAB"].ToString()) && rowCondominio["S_NR_CC"] != DBNull.Value && !string.IsNullOrEmpty(rowCondominio["S_NR_CC"].ToString()))
            {
                var coor = new CoordinateBancarie
                {
                    Abi = rowCondominio["S_ABI"].ToString().Trim().PadLeft(5, '0'),
                    Cab = rowCondominio["S_CAB"].ToString().Trim().PadLeft(5, '0'),
                    ContoCorrente = rowCondominio["S_NR_CC"].ToString().Trim().PadLeft(12, '0')
                };

                var datiBancari = new DatiBancariCondomini(coor.CalcolaIBAN(), condominio);
                condominio.DatiBancari.Add(datiBancari);
            }

            // Scale
            var stabile = Library.IesiGenericCollections<Palazzina>.GetByIndex(condominio.Palazzine, 0);
            var scala = Library.IesiGenericCollections<GruppoStabile>.GetByIndex(stabile.GruppiStabile, 0);
            var firstScala = true;

            for (int i = 1; i <= 52; i++)
            {
                if (rowCondominio["S_DES_CIV" + i.ToString().PadLeft(2, '0')] != DBNull.Value && !string.IsNullOrEmpty(rowCondominio["S_DES_CIV" + i.ToString().PadLeft(2, '0')].ToString()))
                {
                    if (firstScala && scala != null)
                    {
                        scala.Descrizione = rowCondominio["S_DES_CIV" + i.ToString().PadLeft(2, '0')].ToString();
                        scala.Indirizzo = new Address {Indirizzo = condominio.Indirizzo.Indirizzo};
                        firstScala = false;
                    }
                    else
                    {
                        var scalaNew = new GruppoStabile(stabile, rowCondominio["S_DES_CIV" + i.ToString().PadLeft(2, '0')].ToString()) {Indirizzo = {Indirizzo = condominio.Indirizzo.Indirizzo}};
                        stabile.GruppiStabile.Add(scalaNew);
                        _daoFactory.GetGruppoStabileDao().SaveOrUpdate(scalaNew);
                    }
                }
            }
            if (firstScala && scala != null)
            {
                scala.Indirizzo = new Address {Indirizzo = condominio.Indirizzo.Indirizzo};
            }

            // ----------------------------------------------------------------------------------
            //  Piano dei conti
            // ----------------------------------------------------------------------------------
            var pianoContiAdapter = new OleDbDataAdapter("SELECT * FROM PiaContS WHERE PS_COD_STA=" + codiceCondominio, conn);
            pianoContiAdapter.Fill(dsCondomini, "PianoConti");

            var loadedConti = new Dictionary<int, Conto>();
            var tbPianoConti = dsCondomini.Tables["PianoConti"];
            Conto conto = null;
            var indexConto = 0;
            foreach (DataRow row in tbPianoConti.Rows)
            {
                try
                {
                    conto = loadContoSottoconto(row, condominio, conto, loadedConti, prefixConto, ref indexConto);
                }
                catch (Exception ex)
                {
                    
                    _log.Error("Errore inaspettato nell'importazione di un condominio da YStabili - (Piano dei conti) - " + Library.Utility.GetMethodDescription() + " - PS_CONTO:" + row["PS_CONTO"] + " - PS_SOTTOC:" + row["PS_SOTTOC"], ex);
                    message = "Errore inaspettato nell'importazione di un condominio da YStabili - " + ex.Message;
                    return message;
                }
            }

            // ----------------------------------------------------------------------------------
            //  Anagrafiche
            // ----------------------------------------------------------------------------------
            var unitaAdapter = new OleDbDataAdapter("SELECT * FROM Unita WHERE U_COD_STA=" + codiceCondominio + " ORDER BY U_COD_UNITA", conn);
            var soggettiAdapter = new OleDbDataAdapter("SELECT * FROM Condomini WHERE C_COD_STA=" + codiceCondominio + " ORDER BY C_COD_UNITA", conn);
            unitaAdapter.Fill(dsCondomini, "Unita");
            soggettiAdapter.Fill(dsCondomini, "Condomini");

            var tbUnita = dsCondomini.Tables["Unita"];
            var tbAnagrafiche = dsCondomini.Tables["Condomini"];

            // Unità Immobiliari
            UnitaImmobiliare lastUnita = null;
            var ordineUnita = 0;
            foreach (DataRow row in tbUnita.Rows)
            {
                try
                {
                    var soggetti = tbAnagrafiche.Select("C_COD_STA = " + row["U_COD_STA"] + " AND C_COD_UNITA = " + row["U_COD_UNITA"]);
                    UnitaImmobiliare unitaCorrente;
                    if (soggetti.All(isConduttore) && isConduttore(soggetti[0]))
                        unitaCorrente = lastUnita;
                    else
                    {
                        var indexScala = 0;
                        if (row["U_NR_CIVICO"] != DBNull.Value && !string.IsNullOrEmpty(row["U_NR_CIVICO"].ToString()))
                            indexScala = int.Parse(row["U_NR_CIVICO"].ToString()) - 1;
                        var scalaCorrente = Library.IesiGenericCollections<GruppoStabile>.GetByIndex(stabile.GruppiStabile, indexScala);
                        ordineUnita++;
                        unitaCorrente = new UnitaImmobiliare(scalaCorrente, _daoFactory.GetTipoUnitaImmobiliareDao().GetById(1, false))
                        {
                            Ordine = ordineUnita,
                            Descrizione = "$proprietario1",
                            AziendaID = azienda.ID,
                            CodiceImportazione = row["U_COD_STA"] + "&" + row["U_COD_UNITA"]
                        };
                        lastUnita = unitaCorrente;
                        _daoFactory.GetUnitaImmobiliareDao().SaveOrUpdate(unitaCorrente);
                    }

                    var soggettiCondominio = setSoggettiUnita(unitaCorrente, soggetti);

                    if (soggettiCondominio.Count > 0)
                    {
                        // Saldi inizio esercizio
                        setSaldiInizioEsercizio(row, soggettiCondominio, tipoSaldi);

                        // Millesimi
                        setMillesimi(row, unitaCorrente, loadedConti);
                    }
                }
                catch (Exception ex)
                {
                    
                    _log.Error("Errore inaspettato nell'importazione di un condominio da YStabili - (Unità Immobiliare) - " + Library.Utility.GetMethodDescription() + " - U_COD_STA:" + row["U_COD_STA"] + " - U_COD_UNITA:" + row["U_COD_UNITA"], ex);
                    
                    message = "Errore inaspettato nell'importazione di un condominio da YStabili - " + ex.Message;
                    return message;
                }
            }

            if (string.IsNullOrEmpty(message))
            {
                
                _log.Info("Caricato il condominio: " + codiceCondominio + " - " + condominio.Descrizione + " -- " + Library.Utility.GetMethodDescription());
            }

            return message;
        }
コード例 #30
0
        private string loadCondominio(string codiceCondominio, bool loadContiStudio, TipoSaldi tipoSaldi, Azienda azienda, OleDbConnection conn)
        {
            var message = string.Empty;

            var condominioAdapter = new OleDbDataAdapter("SELECT TOP 1 * FROM CT02F0 LEFT JOIN CT03F0 ON CT02F0.CODSTAB = CT03F0.CODSTAB WHERE CT02F0.CODITTA = 1 AND CT02F0.CODSTAB=" + codiceCondominio + " ORDER BY CT03F0.DATAIN DESC", conn);
            var dsCondomini = new DataSet("Condomini");
            condominioAdapter.Fill(dsCondomini, "Stabili");

            var rowCondominio = dsCondomini.Tables["Stabili"].Rows[0];
            
            var dataFineEsercizio = new DateTime(DateTime.Today.Year, 12, 31);
            if (rowCondominio["DATAIN"] != DBNull.Value && rowCondominio["DATAFI"] != DBNull.Value)
            {
                dataFineEsercizio = (DateTime)rowCondominio["DATAFI"];
            }

            var condominio = _daoFactory.GetCondominioDao().GetByCodice(codiceCondominio.PadLeft(3, '0'), azienda.ID);
            if (condominio == null)
            {
                condominio = new Condominio(rowCondominio["CT02F0.INTEST"].ToString(), dataFineEsercizio.Day, dataFineEsercizio.Month, dataFineEsercizio.Year + 1, azienda)
                {
                    Codice = codiceCondominio.PadLeft(3, '0'),
                    Indirizzo = new Address
                                    {
                                        Indirizzo = rowCondominio["ORD"].ToString(),
                                        Cap = rowCondominio["CAP"].ToString()
                                    }
                };

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

                    if(condominio.Indirizzo.Comune == null)
                        condominio.Indirizzo.Localita = rowCondominio["LOCALITA"].ToString();
                }

                _daoFactory.GetCondominioDao().SaveOrUpdate(condominio);
                addDefault(condominio, loadContiStudio);
            }
            else
            {
                // Eliminazione vecchi dati
                condominio.ModelliRegistrazioneContabile.Clear();
                foreach (ModelloRegistrazioneContabile modello in _daoFactory.GetModelloRegistrazioneContabileDao().GetByCondominio(condominio.ID))
                    _daoFactory.GetModelloRegistrazioneContabileDao().Delete(modello);
 
                foreach (UnitaImmobiliare unita in _daoFactory.GetUnitaImmobiliareDao().GetByCondominio(condominio.ID))
                {
                    foreach (Millesimo mill in unita.Millesimi)
                    {
                        mill.ContoRiferimento.Millesimi.Remove(mill);
                        _daoFactory.GetMillesimoDao().Delete(mill);
                    }
                    unita.Millesimi.Clear();

                    IList<SoggettoCondominio> soggetti = unita.Soggetti.ToList();
                    foreach (SoggettoCondominio sogg in soggetti)
                    {
                        sogg.UnitaImmobiliare.Soggetti.Remove(sogg);
                        _daoFactory.GetSoggettoCondominioDao().Delete(sogg);
                    }
                    unita.Soggetti.Clear();

                    unita.GruppoStabileRiferimento.UnitaImmobiliari.Remove(unita);
                    _daoFactory.GetUnitaImmobiliareDao().Delete(unita);
                }

                foreach (Palazzina stabileDelete in condominio.Palazzine)
                {
                    foreach (GruppoStabile gruppo in stabileDelete.GruppiStabile)
                    {
                        _daoFactory.GetGruppoStabileDao().Delete(gruppo);
                    }
                    _daoFactory.GetPalazzinaDao().Delete(stabileDelete);
                }
                condominio.Palazzine.Clear();

                var stabileFirst = new Palazzina(condominio, "Stabile A");
                _daoFactory.GetPalazzinaDao().SaveOrUpdate(stabileFirst);

                // Dati Bancari
                foreach (DatiBancariCondomini banca in condominio.DatiBancari)
                {
                    foreach (MovimentoBancario mov in banca.MovimentiBancari)
                        _daoFactory.GetMovimentoBancarioDao().Delete(mov);

                    _daoFactory.GetDatiBancariCondominiDao().Delete(banca);
                }
                condominio.DatiBancari.Clear();

                // Piano Conti
                foreach (Conto contoDelete in condominio.Conti)
                    _daoFactory.GetContoDao().Delete(contoDelete);
                condominio.Conti.Clear();

                // Esercizi
                foreach (Esercizio esercizioDelete in condominio.Esercizi)
                {
                    esercizioDelete.AnnoGestionale.Esercizi.Remove(esercizioDelete);
                    _daoFactory.GetEsercizioDao().Delete(esercizioDelete);
                }
                condominio.Esercizi.Clear();

                // Anno Gestionale
                foreach (AnnoGestionale anno in condominio.AnniGestionali)
                    _daoFactory.GetAnnoGestionaleDao().Delete(anno);
                condominio.AnniGestionali.Clear();

                // -------------------------------------
                //  Default del condominio
                // -------------------------------------
                addDefault(condominio, loadContiStudio);
            }

            if (rowCondominio["CODFISC"] != DBNull.Value && !string.IsNullOrEmpty(rowCondominio["CODFISC"].ToString()))
                condominio.CodiceFiscale = rowCondominio["CODFISC"].ToString().Trim();

            // ----------------------------------------------------------------------------------
            // Scale
            // ----------------------------------------------------------------------------------
            var stabile = Library.IesiGenericCollections<Palazzina>.GetByIndex(condominio.Palazzine, 0);
            var scala = Library.IesiGenericCollections<GruppoStabile>.GetByIndex(stabile.GruppiStabile, 0);
            bool firstScala = true;

            var scaleAdapter = new OleDbDataAdapter("SELECT * FROM CT04F0 WHERE CODITTA = 1 AND CODSTAB=" + codiceCondominio, conn);
            scaleAdapter.Fill(dsCondomini, "Scale");
            
            foreach(DataRow row in dsCondomini.Tables["Scale"].Rows)
            {
                if (firstScala)
                {
                    scala.Descrizione = row["INTEST"].ToString();
                    scala.Indirizzo = new Address {Indirizzo = condominio.Indirizzo.Indirizzo};
                    scala.Ordine = 1;
                    scala.CodiceImportazione = row["CODITTA"] + "&" + row["CODSTAB"] + "&" + row["GRUPPO"];
                    firstScala = false;
                }
                else
                {
                    var scalaNew = new GruppoStabile(stabile, row["INTEST"].ToString())
                                       {Indirizzo = {Indirizzo = condominio.Indirizzo.Indirizzo}};
                    stabile.GruppiStabile.Add(scalaNew);
                    scalaNew.Ordine = Convert.ToInt32(row["GRUPPO"]);
                    _daoFactory.GetGruppoStabileDao().SaveOrUpdate(scalaNew);
                }
            }
            if (firstScala && scala != null)
            {
                scala.Indirizzo = new Address {Indirizzo = condominio.Indirizzo.Indirizzo};
            }

            // ----------------------------------------------------------------------------------
            //  Piano dei conti
            // ----------------------------------------------------------------------------------
            var pianoContiAdapter = new OleDbDataAdapter("SELECT * FROM CT86F0 WHERE CODITTA = 1 AND CODSTAB=" + codiceCondominio, conn);
            pianoContiAdapter.Fill(dsCondomini, "PianoConti");

            var sottoContiAdapter = new OleDbDataAdapter("SELECT * FROM CT88F0 WHERE CODITTA = 1 AND CODSTAB=" + codiceCondominio, conn);
            sottoContiAdapter.Fill(dsCondomini, "SottoConti");

            var loadedConti = new Dictionary<int, Conto>();
            var tbPianoConti = dsCondomini.Tables["PianoConti"];
            Conto conto = null;
            foreach (DataRow row in tbPianoConti.Rows)
            {
                try
                {
                    if(Convert.ToInt32(row["COLONNA"]) > 0 && row["DESCR1"] != DBNull.Value)
                        conto = loadContoSottoconto(row, condominio, conto, dsCondomini.Tables["SottoConti"], loadedConti);
                }
                catch (Exception ex)
                {
                    
                    _log.Error("Errore inaspettato nell'importazione di un condominio da CONDOR: " + Library.Utility.GetMethodDescription() + " (Piano dei conti) - COLONNA:" + row["COLONNA"] + " - CODSTAB:" + row["CODSTAB"], ex);
                    message = "Errore inaspettato nell'importazione di un condominio da CONDOR - " + ex.Message;
                    return message;
                }
            }

            // ----------------------------------------------------------------------------------
            //  Anagrafiche
            // ----------------------------------------------------------------------------------
            var cmd = new OleDbCommand("SELECT TOP 1 ESERCIZIO FROM CT08F0 WHERE CODITTA = 1 AND CODSTAB=" + codiceCondominio + " ORDER BY ESERCIZIO DESC", conn);
            if (conn.State == ConnectionState.Closed)
                conn.Open();
            var lastEsercizio = Convert.ToInt32(cmd.ExecuteScalar());
            conn.Close();

            var unitaAdapter = new OleDbDataAdapter("SELECT * FROM CT05F0 WHERE CODITTA = 1 AND CODPOS >= 8000 AND CODPOS < 8100 AND CODSTAB=" + codiceCondominio + " AND ESERCIZIO = " + lastEsercizio.ToString() + " ORDER BY CODPOS", conn);
            var soggettiAdapter = new OleDbDataAdapter("SELECT * FROM CT06F0 WHERE CODITTA = 1 AND CODPOS >= 8000 AND CODSTAB=" + codiceCondominio + " ORDER BY CODPOS", conn);
            var millesimiAdapter = new OleDbDataAdapter("SELECT * FROM CT08F0 WHERE CODITTA = 1 AND CODSTAB=" + codiceCondominio + " AND ESERCIZIO = " + lastEsercizio.ToString() + " ORDER BY CODPOS", conn);
            unitaAdapter.Fill(dsCondomini, "Unita");
            soggettiAdapter.Fill(dsCondomini, "Condomini");
            millesimiAdapter.Fill(dsCondomini, "Millesimi");

            var tbUnita = dsCondomini.Tables["Unita"];
            var tbAnagrafiche = dsCondomini.Tables["Condomini"];

            var tipoUnita = _daoFactory.GetTipoUnitaImmobiliareDao().GetById(1, false);

            // Unità Immobiliari
            var loadedSoggetti = new Dictionary<int, SoggettoCondominio>();
            foreach (DataRow row in tbUnita.Rows)
            {
                try
                {
                    var codiceUnita = Convert.ToInt32(row["CODPOS"]);
                    var soggetti = tbAnagrafiche.Select("CODPOS = " + codiceUnita + " OR CODPOS = " + (codiceUnita + 100));
                    var gruppo = condominio.Gruppi.SingleOrDefault(item => item.Ordine == Convert.ToInt32(row["CN-GRUPPO"])) ??
                                           condominio.Gruppi.FirstOrDefault();

                    if(row["SUBALT"] != DBNull.Value && row["SUBALT"].ToString().Length >= 3 && row["SUBALT"].ToString().ToUpper().StartsWith("UFF"))
                        tipoUnita = _daoFactory.GetTipoUnitaImmobiliareDao().GetById(19, false);
                    else if (row["SUBALT"] != DBNull.Value && row["SUBALT"].ToString().Length >= 3 && (row["SUBALT"].ToString().ToUpper().StartsWith("POSTO") || row["SUBALT"].ToString().ToUpper().StartsWith("GARAGE")))
                        tipoUnita = _daoFactory.GetTipoUnitaImmobiliareDao().GetById(3, false);

                    var unitaCorrente = new UnitaImmobiliare(gruppo, tipoUnita)
                    {
                        Ordine = Convert.ToInt32(row["CODPOS"]) - 8000,
                        Descrizione = row["INTEST1"].ToString().Trim()
                    };
                    
                    if (row["INTEST2"] != DBNull.Value && !string.IsNullOrEmpty(row["INTEST2"].ToString()))
                        unitaCorrente.Descrizione += " " + row["INTEST2"].ToString().Trim();

                    unitaCorrente.Piano = row["PIANO"].ToString();
                    unitaCorrente.EstensioneInterno = row["INTERNO"].ToString();

                    unitaCorrente.AziendaID = azienda.ID;
                    unitaCorrente.CodiceImportazione = row["CODITTA"] + "&" + row["CODSTAB"] + "&" + row["CODPOS"];
                    _daoFactory.GetUnitaImmobiliareDao().SaveOrUpdate(unitaCorrente);

                    var soggettiCondominio = setSoggettiUnita(unitaCorrente, row, soggetti, loadedSoggetti);

                    if (unitaCorrente.Soggetti.Count > 0)
                    {
                        // Saldi inizio esercizio
                        setSaldiInizioEsercizio(row, soggettiCondominio, tipoSaldi);

                        // Millesimi
                        setMillesimi(row, dsCondomini.Tables["Millesimi"], unitaCorrente, loadedConti);
                    }

                }
                catch (Exception ex)
                {
                    
                    _log.Error("Errore inaspettato nell'importazione di un condominio da CONDOR: " + Library.Utility.GetMethodDescription() + " (Unità Immobiliare) - CODSTAB:" + row["CODSTAB"] + " - CODPOS:" + row["CODPOS"], ex);
                    
                    message = "Errore inaspettato nell'importazione di un condominio da CONDOR - " + ex.Message;
                    return message;
                }
            }

            if (string.IsNullOrEmpty(message))
            {
                
                _log.Info("Caricato il condominio: " + codiceCondominio + " - " + condominio.Descrizione + " - " + Library.Utility.GetMethodDescription());
            }

            return message;
        }