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; } }
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; }