Ejemplo n.º 1
0
        public string UpdatePianoConti(IList<ContoListaDTO> conti)
        {
            try
            {
                var message = new StringBuilder();
                var daoFactory = _windsorRepository.GetDaoFactory(_info.Azienda);

                foreach (var contoDto in conti)
                {
                    try
                    {
                        PianoConti conto;
                        if (contoDto.ID > 0)
                        {
                            conto = daoFactory.GetPianoContiDao().GetById(contoDto.ID, false);
                            conto.Descrizione = contoDto.Descrizione;
                        }
                        else
                        {
                            conto = new PianoConti(contoDto.Codice, contoDto.Descrizione, contoDto.Tipo, false, contoDto.UtilizzabileRegistrazioneSpese, contoDto.UtilizzabileVersamentoCondomini, daoFactory.GetAziendaDao().GetById(_info.Azienda, false)) { CustomField = true };
                            daoFactory.GetPianoContiDao().SaveOrUpdate(conto);
                        }

                        conto.Codice = contoDto.Codice;
                        conto.Ordine = contoDto.Ordine;
                        conto.UtilizzabileRegistrazioneSpese = contoDto.UtilizzabileRegistrazioneSpese;
                        conto.UtilizzabileVersamentoCondomini = contoDto.UtilizzabileVersamentoCondomini;
                        conto.IsLiquido = contoDto.IsLiquido;
                        conto.IsArrotondamento = contoDto.IsArrotondamento;

                        if (!string.IsNullOrEmpty(contoDto.TipoLiquidita))
                        {
                            TipoLiquidita tipoLiquidita;
                            if (Enum.TryParse(contoDto.TipoLiquidita, true, out tipoLiquidita))
                                conto.TipoLiquidita = tipoLiquidita;
                        }

                        if (conto.Tipo == TipoContoEconomicoEnum.Undefined)
                            conto.Tipo = TipoContoEconomicoEnum.Economico;

                        if (conto.Tipo == TipoContoEconomicoEnum.Economico)
                        {
                            conto.PercentualeProprieta = contoDto.PercentualeProprieta;
                            conto.IsSpesePersonali = contoDto.IsSpesePersonali;
                            conto.IsRipartoLetture = contoDto.IsRipartoLetture;
                            conto.DescrizioneBilancio = contoDto.DescrizioneBilancio;
                            conto.Ripartizione = true;
                            conto.PresenteBilancio = true;
                        }

                        if(conto.Tipo == TipoContoEconomicoEnum.Patrimoniale)
                            conto.UtilizzabileVersamentoCondomini = contoDto.UtilizzabileVersamentoCondomini;

                        // =====================================================================
                        // Sotto Conti
                        // =====================================================================
                        const int index = 0;
                        foreach (var sottoContoDto in contoDto.SottoConti)
                        {
                            PianoContiSottoConto sottoConto;
                            if (sottoContoDto.ID > 0)
                            {
                                sottoConto = daoFactory.GetPianoContiSottoContoDao().GetById(sottoContoDto.ID, false);
                                sottoConto.Descrizione = sottoContoDto.Descrizione;
                            }
                            else
                            {
                                sottoConto = new PianoContiSottoConto(sottoContoDto.Codice, sottoContoDto.Descrizione, conto) {CustomField = true};
                                daoFactory.GetPianoContiSottoContoDao().SaveOrUpdate(sottoConto);
                            }

                            sottoConto.Codice = sottoContoDto.Codice;

                            // -------------------------------------
                            //  Aggiorno il codice dei sottoconti
                            // -------------------------------------
                            if (!string.IsNullOrEmpty(sottoConto.Codice))
                            {
                                if (sottoConto.Codice.Contains('.'))
                                    sottoConto.Codice = conto.Codice + sottoConto.Codice.Substring(sottoConto.Codice.IndexOf('.'));
                            }
                            else
                                sottoConto.Codice = conto.Codice + "." + index.ToString(CultureInfo.InvariantCulture).PadLeft(3, '0');
                        }
                    }

                    catch (Exception ex)
                    {
                        _log.ErrorFormat("Errore nell'update di uno specifico conto del piano dei conti - {0} - id:{1} - {2}", ex, Utility.GetMethodDescription(), contoDto.ID, contoDto.Descrizione);
                        throw;
                    }
                }

                return message.ToString();
            }
            catch (Exception ex)
            {
                _log.ErrorFormat("Errore nell'update del piano dei conti - {0}", ex, Utility.GetMethodDescription());
                throw;
            }
        }
Ejemplo n.º 2
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;
        }