Пример #1
0
        public SpesaInfoDTO AddebitoCompetenze(int idEsercizio, DateTime data, string descrizione, ContoDTO conto, SottoContoDTO sottoConto, IList<ImportiDTO> importi)
        {
            int? idSottoConto = null;
            if (sottoConto != null)
                idSottoConto = sottoConto.ID;

            var result = GetServiceClient().AddebitoCompetenze(idEsercizio, data, descrizione, conto.ID, idSottoConto, new List<ImportiDTO>(importi), GetUserInfo());

            if (result.StampaEtichettaArchiviazione)
            {
                var workerStampaEtichetta = new BackgroundWorker();
                workerStampaEtichetta.DoWork += workerStampaEtichettaDoWork;
                workerStampaEtichetta.RunWorkerAsync(new object[] { result.IdentificativoArchiviazione, result.TrayEtichettatriceAttivazioneOttica });
            }

            CloseService();
            return result;
        }
Пример #2
0
        private SottoContoDTO convertSoggettoToSottoconto(SoggettoCondominioDTO soggetto)
        {
            var sottoConto = new SottoContoDTO
            {
                ID = soggetto.ID * -1,
                Descrizione = soggetto.DisplayName,
                Codice = string.Format("{0}.{1}", GetCodiceContoVersamentiCondomini(), soggetto.ID.ToString(CultureInfo.InvariantCulture).PadLeft(7, '0'))
            };

            return sottoConto;
        }
Пример #3
0
        private List<SottoContoDTO> convertFornitoriToSottoconti(ContoDTO conto)
        {
            var sottoConti = new List<SottoContoDTO>();
            foreach (var fornitore in _fornitoreService.GetAll(true))
            {
                var sottoConto = new SottoContoDTO
                {
                    ID = fornitore.ID * -1,
                    Descrizione = fornitore.DisplayName,
                    DescrizioneCompleta = fornitore.DisplayName,
                    Codice = conto.Codice + "." + fornitore.ID.ToString(CultureInfo.InvariantCulture).PadLeft(7, '0'),
                    DescrizioneContoRiferimento = conto.Descrizione,
                    IdContoRiferimento = conto.ID
                };

                sottoConti.Add(sottoConto);
            }

            return sottoConti;
        }
Пример #4
0
        public virtual void DeleteSottoConto(SottoContoDTO sottoconto, EsercizioDTO esercizio)
        {
            // =======================================================
            //  Elimino dalla cache i conti che sto per aggiornare
            // =======================================================
            if (esercizio != null)
            {
                var cache = CacheFactory.GetCacheManager();
                var contiCache = (Dictionary<int, List<ContoDTO>>) cache.GetData("PianoConti");
                if (contiCache != null)
                {
                    if (contiCache.ContainsKey(esercizio.ID))
                        contiCache.Remove(esercizio.ID);
                    cache.Remove("PianoConti");
                    cache.Add("PianoConti", contiCache);
                }

                GetServiceClient().DeleteSottoConto(sottoconto.ID, GetUserInfo());
                return;
            }

            _log.WarnFormat("Ripristina sottoconto con esericizo NULL - {0} - sottoconto:{1}", Utility.GetMethodDescription(), sottoconto != null ? sottoconto.ID.ToString(CultureInfo.InvariantCulture) : "<NULL>", Login.Instance.CurrentLogin().Azienda);
        }
Пример #5
0
 public SottoContoDTO SaveSottoConto(SottoContoDTO sottoconto)
 {
     sottoconto.Stato = "U";
     sottoconto.ID = GetServiceClient().SetSottoConto(sottoconto, GetUserInfo()).GetValueOrDefault();
     sottoconto = GetServiceClient().GetSottoContoContabileById(sottoconto.ID, GetUserInfo());
     CloseService();
     return sottoconto;
 }
Пример #6
0
 public int? ManageSottoContoDomainEntity(SottoContoDTO sottoconto)
 {
     try
     {
         return manageSottoconto(sottoconto).ID;
     }
     catch (Exception ex)
     {
         _log.ErrorFormat("Errore nella gestione dei sotto conti - {0} - id:{1} - azienda:{2}", ex, Utility.GetMethodDescription(), sottoconto?.ID.ToString(CultureInfo.InvariantCulture) ?? "<NULL>", _info.Azienda);
         throw;
     }
 }
Пример #7
0
        public SottoContoDTO[] GetSottoContoAll()
        {
            try
            {
                var daoFactory = _windsorRepository.GetDaoFactory(_info.Azienda);
                IList<SottoConto> lista = daoFactory.GetSottoContoDao().GetAll();
                var conti = new SottoContoDTO[lista.Count];

                var index = 0;
                foreach (var conto in lista)
                {
                    conti[index] = setSottoContoDto(conto, false);
                    index++;
                }

                return conti;
            }
            catch (Exception ex)
            {
                _log.ErrorFormat("Errore nel caricamento delle sottoconti - {0}", ex, Utility.GetMethodDescription());
                throw;
            }
        }
Пример #8
0
        public override void DeleteSottoConto(SottoContoDTO sottoconto, EsercizioDTO esercizio)
        {
            // =======================================================
            //  Elimino dalla cache l'esercizio che sto per aggiornare
            // =======================================================
            var contiCache = (Dictionary<int, List<ContoDTO>>)_cache.GetData("PianoConti");
            if (contiCache.ContainsKey(esercizio.ID))
                contiCache.Remove(esercizio.ID);
            _cache.Remove("PianoConti");
            _cache.Add("PianoConti", contiCache);

            base.DeleteSottoConto(sottoconto, esercizio);
        }
Пример #9
0
 private bool insertSottoconto(SottoContoDTO dto, out SottoConto item)
 {
     var daoFactory = _windsorRepository.GetDaoFactory(_info.Azienda);
     try
     {
         item = new SottoConto(daoFactory.GetContoDao().GetById(dto.IdContoRiferimento, false), dto.Descrizione) {Codice = dto.Codice, PercentualeProprieta = dto.PercentualeProprieta, AddebitoCompetenze = dto.AddebitoCompetenze, IsInteressiSanzioni = dto.IsInteressiSanzioni, DettaglioMovimentiContabili = dto.DettaglioMovimentiContabili, CustomField = true};
         daoFactory.GetSottoContoDao().SaveOrUpdate(item);
     }
     catch (Exception ex)
     {
         _log.ErrorFormat("Errore nell'inserimento del Sotto Conto - {0} - id:{1}", ex, Utility.GetMethodDescription(), dto.ID);
         throw;
     }
     return true;
 }
Пример #10
0
        private void updateSottoconto(SottoContoDTO dto, out SottoConto item)
        {
            item = null;
            var daoFactory = _windsorRepository.GetDaoFactory(_info.Azienda);

            try
            {
                item = daoFactory.GetSottoContoDao().GetById(dto.ID, false);

                // Condizione necessare per il controllo del fatto che sul DB ho una versione uguale o più vecchia
                if (dto.Version == item.Version)
                {
                    item.Codice = dto.Codice;
                    item.PercentualeProprieta = dto.PercentualeProprieta;
                    item.ContoRiferimento = daoFactory.GetContoDao().GetById(dto.IdContoRiferimento, false);
                    item.Descrizione = dto.Descrizione;
                    item.Version = dto.Version;
                    item.AddebitoCompetenze = dto.AddebitoCompetenze;
                    item.IsInteressiSanzioni = dto.IsInteressiSanzioni;
                }
                else
                {
                    // Eccezione: Sul db c'è qualche cosa di più nuovo.
                    _log.ErrorFormat("Errore nel salvataggio dei sottoconti - id:{0} - il dato sul db è più recente di quello che si vuole salvare", dto.ID);
                }
            }
            catch (Exception ex)
            {
                _log.ErrorFormat("Errore nel salvataggio dei conti - {0} - id:{1}", ex, Utility.GetMethodDescription(), dto.ID);
                throw;
            }
        }
Пример #11
0
        private SottoConto manageSottoconto(SottoContoDTO dto)
        {
            SottoConto item = null;

            // Controllo sullo stato U, I
            switch (dto.Stato.ToUpper())
            {
                case "U":
                    updateSottoconto(dto, out item);

                    if (item == null)
                        throw new Exception("Il dato sul database è più recente di quello utilizzato");
                    break;
                case "I":
                    var result = insertSottoconto(dto, out item);

                    if (!result)
                        throw new Exception("Impossibile scrivere sul database");
                    break;
            }

            return item;
        }
Пример #12
0
        private SottoContoDTO setPianoContiSottoContoDto(PianoContiSottoConto sottoConto)
        {
            var dto = new SottoContoDTO
            {
                IdContoRiferimento = sottoConto.ContoRiferimento.ID,
                DescrizioneContoRiferimento = sottoConto.ContoRiferimento.Descrizione,
                ID = sottoConto.ID,
                Descrizione = sottoConto.Descrizione,
                IsDeleteAllow = sottoConto.CustomField,
                Codice = sottoConto.Codice,
                DescrizioneCompleta = $"{sottoConto.Codice} - {sottoConto.Descrizione}",
                DisplayName = $"{sottoConto.Codice} - {sottoConto.Descrizione}",
                Version = sottoConto.Version
            };

            return dto;
        }
Пример #13
0
        private SottoContoDTO setSottoContoDto(SottoConto sottoConto, bool gestione)
        {
            var dto = new SottoContoDTO
            {
                IdContoRiferimento = sottoConto.ContoRiferimento.ID,
                DescrizioneContoRiferimento = sottoConto.ContoRiferimento.Descrizione,
                ID = sottoConto.ID,
                IsDeleteAllow = true,
                Codice = sottoConto.Codice,
                PercentualeProprieta = sottoConto.PercentualeProprieta,
                AddebitoCompetenze = sottoConto.AddebitoCompetenze,
                IsInteressiSanzioni = sottoConto.IsInteressiSanzioni,
                DettaglioMovimentiContabili = sottoConto.DettaglioMovimentiContabili,
                DisplayName = $"{sottoConto.ContoRiferimento.Codice} - {sottoConto.ContoRiferimento.Descrizione} - {sottoConto.GetDescrizione(null, sottoConto.ContoRiferimento.CondominioRiferimento, null)}",
                DescrizioneCompleta = $"{sottoConto.Codice} - {sottoConto.Descrizione}",
                Version = sottoConto.Version,
                Descrizione = gestione ? sottoConto.Descrizione : sottoConto.GetDescrizione(null, sottoConto.ContoRiferimento.CondominioRiferimento, null)
            };

            return dto;
        }
Пример #14
0
        private ContoDTO setContoDto(Conto conto, int? idEsercizio, bool gestione, IEnumerable<FornitoreListaDTO> fornitori, bool codiceContabile)
        {
            if (conto != null)
            {
                var dto = new ContoDTO
                {
                    Codice = conto.Codice,
                    Ordine = conto.Ordine,
                    Tipo = conto.Tipo,
                    Descrizione = conto.Descrizione,
                    DescrizioneBilancio = conto.DescrizioneBilancio,
                    DescrizioneCompleta = conto.Codice + " - " + conto.Descrizione,
                    PercentualeProprieta = conto.PercentualeProprieta,
                    IdCondominio = conto.CondominioRiferimento.ID,
                    CustomField = conto.CustomField,
                    Ripartizione = conto.Ripartizione,
                    PresenteBilancio = conto.PresenteBilancio,
                    IsSpesePersonali = conto.IsSpesePersonali,
                    IsRipartoLetture = conto.IsRipartoLetture,
                    TipoCompetenza = conto.TipoCompetenza,
                    DataInizioCompetenza = conto.DataInizioCompetenza,
                    DataFineCompetenza = conto.DataFineCompetenza,
                    UtilizzabileRegistrazioneSpese = conto.UtilizzabileRegistrazioneSpese,
                    UtilizzabileVersamentoCondomini = conto.UtilizzabileVersamentoCondomini,
                    UtilizzabilePagamentoFornitori = conto.UtilizzabilePagamentoFornitori,
                    IsTransitorio = conto.IsTransitorio,
                    IsAccantonamentoFondi = conto.IsAccantonamentoFondi,
                    IsMillesimiProprieta = conto.IsMillesimiProprieta,
                    DettaglioMovimentiContabili = conto.DettaglioMovimentiContabili,
                    IsLiquido = conto.IsLiquido,
                    IsArrotondamento = conto.IsArrotondamento,
                    TipoLiquidita = conto.TipoLiquidita.ToString(),
                    Note = conto.Note
                };

                if (string.IsNullOrEmpty(conto.Deleted) || conto.Deleted != "Y")
                    dto.Deleted = false;
                else
                    dto.Deleted = true;

                if (conto.ContatoreRiferimento != null)
                {
                    try
                    {
                        dto.IdContatore = conto.ContatoreRiferimento.ID;
                    }
                    catch (Exception ex)
                    {
                        _log.WarnFormat("Errore nella lettura del contatore legato al conto - {0} - id:{1}", ex, Utility.GetMethodDescription(), dto.ID);
                        dto.IdContatore = null;
                    }
                }
                else
                    dto.IdContatore = null;

                if (string.IsNullOrEmpty(dto.DescrizioneBilancio))
                    dto.DescrizioneBilancio = dto.Descrizione;

                if (conto.EsercizioRiferimento != null)
                {
                    try
                    {
                        dto.IdEsercizio = conto.EsercizioRiferimento.ID;
                    }
                    catch (Exception ex)
                    {
                        _log.WarnFormat("Errore nella lettura dell'esercizio legato al conto - {0} - id:{1}", ex, Utility.GetMethodDescription(), dto.ID);
                        dto.IdEsercizio = null;
                    }
                }

                //--------------------------------------------------------
                // Sottoconti
                //--------------------------------------------------------
                var sottoConti = new List<SottoContoDTO>(conto.SottoConti.Count);
                sottoConti.AddRange(from sottoConto in conto.SottoConti.OrderBy(item => item.GetDescrizione(null, conto.CondominioRiferimento, null)) where string.IsNullOrEmpty(sottoConto.Deleted) select setSottoContoDto(sottoConto, gestione));
                dto.SottoConti = sottoConti;

                var pianoContiService = _windsorRepository.GetContainer(_info.Azienda).Resolve<IPianoContiService>();
                var daoFactory = _windsorRepository.GetDaoFactory(_info.Azienda);

                var dataApertura = DateTime.MinValue;
                if(idEsercizio > 0)
                {
                    var esercizio = daoFactory.GetEsercizioDao().Find(idEsercizio.Value, false);
                    if(esercizio != null)
                        dataApertura = esercizio.DataApertura.GetValueOrDefault();
                }

                // Aggiungo i conti correnti bancari come sottoconti del conto banca
                if (!gestione && conto.Codice == pianoContiService.GetCodiceContoBancario())
                {
                    foreach (var banca in conto.CondominioRiferimento.DatiBancari)
                    {
                        if (banca.DataValidita == null || banca.DataValidita > dataApertura)
                        {
                            string displayName;
                            if (!codiceContabile)
                            {
                                displayName = $"{banca.Abi} - {banca.Cab} - c/c: {banca.ContoCorrente}";
                                if (banca.DataValidita != null)
                                    displayName += $" - fino al {banca.DataValidita.GetValueOrDefault():d}";
                            }
                            else
                            {
                                displayName = $"B{banca.ID}";
                            }

                            var sottoconto = new SottoContoDTO
                            {
                                ID = banca.ID*-1,
                                Codice = !codiceContabile
                                        ? $"F{banca.ID}"
                                    : $"{conto.Codice}.{banca.ID.ToString(CultureInfo.InvariantCulture).PadLeft(7, '0')}",
                                Descrizione = "c/c: " + banca.ContoCorrente,
                                DescrizioneContoRiferimento = conto.Descrizione,
                                IdContoRiferimento = conto.ID,
                                DisplayName = displayName,
                                IsNotValid = banca.DataValidita != null,
                                FrequentlyAccessed = banca.Principale.GetValueOrDefault()
                            };

                            sottoconto.DescrizioneCompleta = sottoconto.Descrizione;
                            dto.SottoConti.Add(sottoconto);
                        }
                    }
                }

                // Aggiungo i fornitori come sottoconti del conto fornitori
                if (!gestione && conto.Codice == pianoContiService.GetCodiceContoFornitori() && fornitori != null)
                {
                    foreach (var fornitore in fornitori)
                    {
                        var sottoconto = new SottoContoDTO
                        {
                            ID = fornitore.ID*-1,
                            Codice = !codiceContabile
                                    ? $"F{fornitore.ID}"
                                : $"{conto.Codice}.{fornitore.ID.ToString(CultureInfo.InvariantCulture).PadLeft(7, '0')}",
                            Descrizione = fornitore.DisplayName,
                            DescrizioneContoRiferimento = conto.Descrizione,
                            IdContoRiferimento = conto.ID,
                            DisplayName = !codiceContabile ? fornitore.DisplayName : $"F{fornitore.ID}"
                        };

                        sottoconto.DescrizioneCompleta = sottoconto.Descrizione;
                        dto.SottoConti.Add(sottoconto);
                    }
                }

                dto.ID = conto.ID;
                dto.Version = conto.Version;

                return dto;
            }
            return null;
        }
Пример #15
0
 public virtual void DeletePianoContiSottoConto(SottoContoDTO sottoconto)
 {
     GetServiceClient().DeletePianoContiSottoConto(sottoconto.ID, GetUserInfo());
 }
Пример #16
0
        public List<ContoDTO> GetContiPartitarioByCondominio(int idCondominio)
        {
            try
            {
                var daoFactory = _windsorRepository.GetDaoFactory(_info.Azienda);
                var fornitori = daoFactory.GetFornitoreDao().GetIdNominativoByCondominio(idCondominio);
                var condomini = daoFactory.GetSoggettoCondominioDao().GetIdNominativoByCondominio(idCondominio);

                // ======================================
                // Elaboro lista Fornitori
                // ======================================
                var listaFornitori = new List<FornitoreListaDTO>(fornitori.Count);
                foreach (var nameValueDTO in fornitori)
                {
                    var nominativo = nameValueDTO.Name.Split('¥');
                    var fornitore = new FornitoreListaDTO {ID = nameValueDTO.Value};

                    var ragioneSociale = nominativo[2];
                    if (string.IsNullOrEmpty(ragioneSociale))
                    {
                        fornitore.Nome = nominativo[0];
                        fornitore.Cognome = nominativo[1];
                    }
                    else
                        fornitore.Cognome = ragioneSociale;

                    fornitore.DisplayName = fornitore.Nome;
                    if (!string.IsNullOrEmpty(fornitore.Nome))
                        fornitore.DisplayName += " ";
                    fornitore.DisplayName += fornitore.Cognome;
                    if (!string.IsNullOrEmpty(fornitore.DisplayName))
                        fornitore.DisplayName = fornitore.DisplayName.Trim();

                    listaFornitori.Add(fornitore);
                }
                listaFornitori = listaFornitori.OrderBy(item => item.DisplayName).ToList();

                // ======================================
                // Elaboro lista Condomini
                // ======================================
                var listaCondomini = new List<PersonaListaDTO>(condomini.Count);
                foreach (var nameValueDTO in condomini)
                {
                    var nominativo = nameValueDTO.Name.Split('¥');

                    var persona = new PersonaListaDTO{ ID = nameValueDTO.Value};

                    var ragioneSociale = nominativo[2];
                    if (string.IsNullOrEmpty(ragioneSociale))
                    {
                        persona.Nome = nominativo[0];
                        persona.Cognome = nominativo[1];
                    }
                    else
                        persona.Cognome = ragioneSociale;

                    persona.DisplayName = persona.Nome;
                    if (!string.IsNullOrEmpty(persona.Nome))
                        persona.DisplayName += " ";
                    persona.DisplayName += persona.Cognome;
                    if (!string.IsNullOrEmpty(persona.DisplayName))
                        persona.DisplayName = persona.DisplayName.Trim();

                    listaCondomini.Add(persona);
                }
                listaCondomini = listaCondomini.OrderBy(item => item.DisplayName).ToList();

                // ======================================
                // Recupero lista conti
                // ======================================
                var conti = GetContiByCondominio(idCondominio, false, listaFornitori, true);

                // ======================================
                // Aggiungo sottoconto condomini
                // ======================================
                var pianoContiService = _windsorRepository.GetContainer(_info.Azienda).Resolve<IPianoContiService>(); 
                foreach (var contoDTO in conti)
                {
                    if (contoDTO.Codice == pianoContiService.GetCodiceContoVersamentiCondomini())
                    {
                        foreach (var persona in listaCondomini)
                        {
                            var sottoconto = new SottoContoDTO
                            {
                                ID = persona.ID,
                                Codice = $"{contoDTO.Codice}.{persona.ID.ToString(CultureInfo.InvariantCulture).PadLeft(7, '0')}",
                                DisplayName = $"C{persona.ID}", 
                                Descrizione = persona.DisplayName
                            };
                            sottoconto.DescrizioneCompleta = $"{sottoconto.Codice} - {sottoconto.Descrizione}";

                            contoDTO.SottoConti.Add(sottoconto);
                        }
                    }
                    else if(contoDTO.SottoConti.Count > 0)
                    {
                        var sottoconto = new SottoContoDTO
                        {
                            Codice = $"{contoDTO.Codice}.000",
                            Descrizione = contoDTO.Descrizione
                        };
                        sottoconto.DescrizioneCompleta = $"{sottoconto.Codice} - {sottoconto.Descrizione}";

                        contoDTO.SottoConti.Insert(0, sottoconto);
                    }
                }

                return conti;
            }
            catch (Exception ex)
            {
                _log.ErrorFormat("Errore nel caricamento dei conti per partitario - {0} - condominio:{1}", ex, Utility.GetMethodDescription(), idCondominio);
                throw;
            }
        }
Пример #17
0
		public int? SetSottoConto(SottoContoDTO sottoconto, UserInfo userinfo)
		{
			var windsorRep = new WindsorConfigRepository();
			try
			{
				windsorRep.BeginTransaction(userinfo);
				var repo = new ContabilitaRepository(userinfo, windsorRep);
				int? item = repo.ManageSottoContoDomainEntity(sottoconto);
				windsorRep.Commit();
				return item;
			}
			catch (Exception ex)
			{
                _log.ErrorFormat("Errore nel salvataggio del sotto conto contabile - {0} - id:{1} - azienda:{2}", ex, Utility.GetMethodDescription(), sottoconto.ID, userinfo.Azienda);
				windsorRep.Rollback();
				throw;
			}
		}