public static UnitaImmobiliare GetCondominioMonoScalaMonoProprietario() { var azienda = new Azienda("TEST", "Azienda di Test") { ID = 1 }; var condominio = new Condominio("Test", 31, 12, 2014, azienda); var stabile = new Palazzina(condominio, "Stabile A - TEST"); var scala = new GruppoStabile(stabile, "Scala A - TEST"); var tipo = new TipoUnitaImmobiliare("Abitazione"); var unitaImmobiliare = new UnitaImmobiliare(scala, tipo); // Esercizio var annoGestionale = new AnnoGestionale(condominio, 2013, 2014); var esercizio = new Esercizio(condominio, new DateTime(2014, 1, 1), new DateTime(2014, 12, 31), annoGestionale, GestioneEsercizioEnum.Ordinario); condominio.Esercizi.Add(esercizio); // Proprietario var persona = new Persona(TipoPersonaEnum.Fisica, "Pinco", "Pallo", azienda.ID, true); var proprietario = new Proprietario(unitaImmobiliare, persona) { PercentualeRiferimento = 100, Principale = true }; unitaImmobiliare.Soggetti.Add(proprietario); return unitaImmobiliare; }
/// <summary> /// Crea una Nazione valida /// </summary> public NotaPredefinita(string descrizione, TipoNotaEnum tipo, string testo, Azienda azienda) { Tipo = tipo; Testo = testo; Descrizione = descrizione; Azienda = azienda; }
/// <summary> /// Crea un Documento valido /// </summary> public Documento(int numeroProtocollo, string tipoDocumento, bool nocache, Azienda azienda) { NumeroProtocollo = numeroProtocollo; Tipo = tipoDocumento; Azienda = azienda; NoCache = nocache; }
/// <summary> /// Crea un Computer valido /// </summary> public Computer(string nomeComputer, ComputerVersion version, Azienda azienda) { NomeComputer = nomeComputer; Version = version; Azienda = azienda; UltimoLogin = DateTime.Now; }
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(); } }
/// <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; }
/// <summary> /// Crea una Nazione valida /// </summary> public ModelloLettera(string descrizione, TipoModelloLetteraEnum tipo, string checksum, Azienda azienda) { Tipo = tipo; Descrizione = descrizione; Azienda = azienda; Checksum = checksum; }
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 }); } }
/// <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; }
/// <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); }
/// <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; }
/// <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; }
/// <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); }
/// <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); }
/// <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; }
/// <summary> /// Crea uno Referente valido /// </summary> public Referente(string sigla, Persona persona, Azienda azienda) { if (azienda != null) { Sigla = sigla; PersonaRiferimento = persona; Azienda = azienda; } }
/// <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); }
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); }
/// <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"); } }
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" }; }
/// <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; } }
/// <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; } }
/// <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) { }
/// <summary> /// Crea una Impostazione Azienda valida /// </summary> public ImpostazioniAzienda(Azienda azienda) { Azienda = azienda; }
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; }
/// <summary> /// Crea una Impostazione Azienda valida /// </summary> public ImpostazioniReport(Azienda azienda) { Azienda = azienda; }
private byte[] getModuloLavoratoreAutonomo(Fornitore fornitore, IList<DettaglioDatiCertificazioneDTO> datiCertificazione, bool esenteRegimeMinimo, int anno, int progressivoModulo, byte[] templateDatiLavoratoreAutonomo, Azienda azienda) { const string formatoDecimale = "#0.00"; var datiLavoratoreAutonomo = new DatiLavoratoreAutonomoCU { Causale = fornitore.GetTipologiaReddito(), CodiceFiscalePercipiente = fornitore.GetCodiceFiscale(), //AnnoRiferimento = anno.ToString(_cultureInfo), AmmontareLordoCorrisposto = Math.Round(datiCertificazione.Sum(item => item.CompensiSoggetti + item.CompensiNonSoggetti + item.AltreSpeseNonSoggette), 2).ToString(formatoDecimale, _cultureInfo), Imponibile = esenteRegimeMinimo ? string.Empty : Math.Round(datiCertificazione.Sum(item => item.CompensiSoggetti), 2).ToString(formatoDecimale, _cultureInfo), Ritenuta = esenteRegimeMinimo ? string.Empty : Math.Round(datiCertificazione.Sum(item => item.ImportoRitenuta), 2).ToString(formatoDecimale, _cultureInfo), NumeroModulo = progressivoModulo.ToString(_cultureInfo) }; var altreSommeNonSoggette = Math.Round(datiCertificazione.Sum(item => item.CompensiNonSoggetti + item.AltreSpeseNonSoggette), 2); if (altreSommeNonSoggette != 0) { datiLavoratoreAutonomo.AltreSommeNonSoggette = altreSommeNonSoggette.ToString(formatoDecimale, _cultureInfo); datiLavoratoreAutonomo.Codice = "3"; } return FillForm.FillStream(datiLavoratoreAutonomo, templateDatiLavoratoreAutonomo, GestioneFiscaleResources.ModelloCULavoratoreAutonomo_FieldMapping, false, true); }
private 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; }
private string loadCondominio(string codiceCondominio, string prefixConto, bool loadContiStudio, TipoSaldi tipoSaldi, Azienda azienda, OleDbConnection conn) { var message = string.Empty; var condominioAdapter = new OleDbDataAdapter("SELECT * FROM Stabili WHERE S_COD_STA=" + codiceCondominio, conn); var dsCondomini = new DataSet("Condomini"); condominioAdapter.Fill(dsCondomini, "Stabili"); var rowCondominio = dsCondomini.Tables["Stabili"].Rows[0]; var dataFineEsercizio = (DateTime)rowCondominio["S_FIN_ESE"]; var condominio = _daoFactory.GetCondominioDao().GetByCodice(codiceCondominio.PadLeft(3, '0'), azienda.ID); if (condominio == null) { condominio = new Condominio(rowCondominio["S_NOME"].ToString(), dataFineEsercizio.Day, dataFineEsercizio.Month, dataFineEsercizio.Year + 1, azienda) { Codice = codiceCondominio.PadLeft(3, '0'), Indirizzo = new Address { Indirizzo = rowCondominio["S_VIA"].ToString(), Cap = rowCondominio["S_CAP"].ToString() } }; // Indirizzo if (rowCondominio["S_LOCALITA"] != DBNull.Value && !string.IsNullOrEmpty(rowCondominio["S_LOCALITA"].ToString())) { var comuni = _daoFactory.GetComuneDao().GetByDescrizione(rowCondominio["S_LOCALITA"].ToString().Trim()); if (comuni.Count == 1) condominio.Indirizzo.Comune = comuni[0]; else condominio.Indirizzo.Localita = rowCondominio["S_LOCALITA"].ToString(); } _daoFactory.GetCondominioDao().SaveOrUpdate(condominio); addDefault(condominio, loadContiStudio); } else { // Eliminazione Movimenti Bancari _daoFactory.GetMovimentoBancarioDao().ExecuteQuery("DeleteMovimentiBancari", new[] {new QueryParam("IdCondominio", condominio.ID)}); _daoFactory.GetCondominioDao().ExecuteQuery("DeleteAnagraficaContabilitaCondominio", new[] {new QueryParam("IdCondominio", condominio.ID)}); // Eliminazione vecchi dati foreach (var unita in _daoFactory.GetUnitaImmobiliareDao().GetByCondominio(condominio.ID)) { foreach (var mill in unita.Millesimi) { mill.ContoRiferimento.Millesimi.Remove(mill); _daoFactory.GetMillesimoDao().Delete(mill); } unita.Millesimi.Clear(); IList<SoggettoCondominio> soggetti = unita.Soggetti.ToList(); foreach (var sogg in soggetti) { sogg.UnitaImmobiliare.Soggetti.Remove(sogg); _daoFactory.GetSoggettoCondominioDao().Delete(sogg); } unita.Soggetti.Clear(); unita.GruppoStabileRiferimento.UnitaImmobiliari.Remove(unita); _daoFactory.GetUnitaImmobiliareDao().Delete(unita); } foreach (Palazzina stabileDelete in condominio.Palazzine) { foreach (GruppoStabile gruppo in stabileDelete.GruppiStabile) { _daoFactory.GetGruppoStabileDao().Delete(gruppo); } _daoFactory.GetPalazzinaDao().Delete(stabileDelete); } condominio.Palazzine.Clear(); var stabileFirst = new Palazzina(condominio, "Stabile A"); _daoFactory.GetPalazzinaDao().SaveOrUpdate(stabileFirst); // Dati Bancari foreach (DatiBancariCondomini banca in condominio.DatiBancari) { foreach (MovimentoBancario mov in banca.MovimentiBancari) _daoFactory.GetMovimentoBancarioDao().Delete(mov); _daoFactory.GetDatiBancariCondominiDao().Delete(banca); } condominio.DatiBancari.Clear(); // Piano Conti foreach (Conto contoDelete in condominio.Conti) _daoFactory.GetContoDao().Delete(contoDelete); condominio.Conti.Clear(); // Esercizi foreach (Esercizio esercizioDelete in condominio.Esercizi) { esercizioDelete.AnnoGestionale.Esercizi.Remove(esercizioDelete); _daoFactory.GetEsercizioDao().Delete(esercizioDelete); } condominio.Esercizi.Clear(); // Anno Gestionale foreach (AnnoGestionale anno in condominio.AnniGestionali) _daoFactory.GetAnnoGestionaleDao().Delete(anno); condominio.AnniGestionali.Clear(); // ------------------------------------- // Default del condominio // ------------------------------------- addDefault(condominio, loadContiStudio); } if (rowCondominio["S_NOTE"] != DBNull.Value && !string.IsNullOrEmpty(rowCondominio["S_NOTE"].ToString())) condominio.Note = rowCondominio["S_NOTE"].ToString(); if (rowCondominio["S_COD_SIA"] != DBNull.Value && !string.IsNullOrEmpty(rowCondominio["S_COD_SIA"].ToString())) condominio.CodiceSIA = rowCondominio["S_COD_SIA"].ToString().Trim(); if (rowCondominio["S_COD_FISCALE"] != DBNull.Value && !string.IsNullOrEmpty(rowCondominio["S_COD_FISCALE"].ToString())) condominio.CodiceFiscale = rowCondominio["S_COD_FISCALE"].ToString().Trim(); if (rowCondominio["S_IBAN_COMPLETO"] != DBNull.Value && !string.IsNullOrEmpty(rowCondominio["S_IBAN_COMPLETO"].ToString())) { var datiBancari = new DatiBancariCondomini(rowCondominio["S_IBAN_COMPLETO"].ToString().Trim(), condominio); condominio.DatiBancari.Add(datiBancari); } else if (rowCondominio["S_ABI"] != DBNull.Value && !string.IsNullOrEmpty(rowCondominio["S_ABI"].ToString()) && rowCondominio["S_CAB"] != DBNull.Value && !string.IsNullOrEmpty(rowCondominio["S_CAB"].ToString()) && rowCondominio["S_NR_CC"] != DBNull.Value && !string.IsNullOrEmpty(rowCondominio["S_NR_CC"].ToString())) { var coor = new CoordinateBancarie { Abi = rowCondominio["S_ABI"].ToString().Trim().PadLeft(5, '0'), Cab = rowCondominio["S_CAB"].ToString().Trim().PadLeft(5, '0'), ContoCorrente = rowCondominio["S_NR_CC"].ToString().Trim().PadLeft(12, '0') }; var datiBancari = new DatiBancariCondomini(coor.CalcolaIBAN(), condominio); condominio.DatiBancari.Add(datiBancari); } // Scale var stabile = Library.IesiGenericCollections<Palazzina>.GetByIndex(condominio.Palazzine, 0); var scala = Library.IesiGenericCollections<GruppoStabile>.GetByIndex(stabile.GruppiStabile, 0); var firstScala = true; for (int i = 1; i <= 52; i++) { if (rowCondominio["S_DES_CIV" + i.ToString().PadLeft(2, '0')] != DBNull.Value && !string.IsNullOrEmpty(rowCondominio["S_DES_CIV" + i.ToString().PadLeft(2, '0')].ToString())) { if (firstScala && scala != null) { scala.Descrizione = rowCondominio["S_DES_CIV" + i.ToString().PadLeft(2, '0')].ToString(); scala.Indirizzo = new Address {Indirizzo = condominio.Indirizzo.Indirizzo}; firstScala = false; } else { var scalaNew = new GruppoStabile(stabile, rowCondominio["S_DES_CIV" + i.ToString().PadLeft(2, '0')].ToString()) {Indirizzo = {Indirizzo = condominio.Indirizzo.Indirizzo}}; stabile.GruppiStabile.Add(scalaNew); _daoFactory.GetGruppoStabileDao().SaveOrUpdate(scalaNew); } } } if (firstScala && scala != null) { scala.Indirizzo = new Address {Indirizzo = condominio.Indirizzo.Indirizzo}; } // ---------------------------------------------------------------------------------- // Piano dei conti // ---------------------------------------------------------------------------------- var pianoContiAdapter = new OleDbDataAdapter("SELECT * FROM PiaContS WHERE PS_COD_STA=" + codiceCondominio, conn); pianoContiAdapter.Fill(dsCondomini, "PianoConti"); var loadedConti = new Dictionary<int, Conto>(); var tbPianoConti = dsCondomini.Tables["PianoConti"]; Conto conto = null; var indexConto = 0; foreach (DataRow row in tbPianoConti.Rows) { try { conto = loadContoSottoconto(row, condominio, conto, loadedConti, prefixConto, ref indexConto); } catch (Exception ex) { _log.Error("Errore inaspettato nell'importazione di un condominio da YStabili - (Piano dei conti) - " + Library.Utility.GetMethodDescription() + " - PS_CONTO:" + row["PS_CONTO"] + " - PS_SOTTOC:" + row["PS_SOTTOC"], ex); message = "Errore inaspettato nell'importazione di un condominio da YStabili - " + ex.Message; return message; } } // ---------------------------------------------------------------------------------- // Anagrafiche // ---------------------------------------------------------------------------------- var unitaAdapter = new OleDbDataAdapter("SELECT * FROM Unita WHERE U_COD_STA=" + codiceCondominio + " ORDER BY U_COD_UNITA", conn); var soggettiAdapter = new OleDbDataAdapter("SELECT * FROM Condomini WHERE C_COD_STA=" + codiceCondominio + " ORDER BY C_COD_UNITA", conn); unitaAdapter.Fill(dsCondomini, "Unita"); soggettiAdapter.Fill(dsCondomini, "Condomini"); var tbUnita = dsCondomini.Tables["Unita"]; var tbAnagrafiche = dsCondomini.Tables["Condomini"]; // Unità Immobiliari UnitaImmobiliare lastUnita = null; var ordineUnita = 0; foreach (DataRow row in tbUnita.Rows) { try { var soggetti = tbAnagrafiche.Select("C_COD_STA = " + row["U_COD_STA"] + " AND C_COD_UNITA = " + row["U_COD_UNITA"]); UnitaImmobiliare unitaCorrente; if (soggetti.All(isConduttore) && isConduttore(soggetti[0])) unitaCorrente = lastUnita; else { var indexScala = 0; if (row["U_NR_CIVICO"] != DBNull.Value && !string.IsNullOrEmpty(row["U_NR_CIVICO"].ToString())) indexScala = int.Parse(row["U_NR_CIVICO"].ToString()) - 1; var scalaCorrente = Library.IesiGenericCollections<GruppoStabile>.GetByIndex(stabile.GruppiStabile, indexScala); ordineUnita++; unitaCorrente = new UnitaImmobiliare(scalaCorrente, _daoFactory.GetTipoUnitaImmobiliareDao().GetById(1, false)) { Ordine = ordineUnita, Descrizione = "$proprietario1", AziendaID = azienda.ID, CodiceImportazione = row["U_COD_STA"] + "&" + row["U_COD_UNITA"] }; lastUnita = unitaCorrente; _daoFactory.GetUnitaImmobiliareDao().SaveOrUpdate(unitaCorrente); } var soggettiCondominio = setSoggettiUnita(unitaCorrente, soggetti); if (soggettiCondominio.Count > 0) { // Saldi inizio esercizio setSaldiInizioEsercizio(row, soggettiCondominio, tipoSaldi); // Millesimi setMillesimi(row, unitaCorrente, loadedConti); } } catch (Exception ex) { _log.Error("Errore inaspettato nell'importazione di un condominio da YStabili - (Unità Immobiliare) - " + Library.Utility.GetMethodDescription() + " - U_COD_STA:" + row["U_COD_STA"] + " - U_COD_UNITA:" + row["U_COD_UNITA"], ex); message = "Errore inaspettato nell'importazione di un condominio da YStabili - " + ex.Message; return message; } } if (string.IsNullOrEmpty(message)) { _log.Info("Caricato il condominio: " + codiceCondominio + " - " + condominio.Descrizione + " -- " + Library.Utility.GetMethodDescription()); } return message; }
private 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; }