예제 #1
0
        /// <summary>
        /// Crea una Spesa Unità valida
        /// </summary>
        public SpeseUnita(decimal? importo, UnitaImmobiliare unita, SoggettoCondominio soggettoCondominio, RipartizioneSpesa ripartizioneSpesa)
        {
            _importo = importo;
            _unitaRiferimento = unita;
            _soggettoCondominio = soggettoCondominio;

            if (ripartizioneSpesa != null)
            {
                _ripartizioneSpesa = ripartizioneSpesa;
                _ripartizioneSpesa.DettaglioRipartizione.Add(this);
            }
        }
        private RipartizioneSpesaDTO setRipartizioneSpesaDTO(RipartizioneSpesa item)
        {
            try
            {
                var dto = new RipartizioneSpesaDTO
                {
                    ID = item.ID,
                    GruppiAddebito = item.GruppiAddebito,
                    IdConto = item.ContoRiferimento.ID,
                    IdSottoConto = item.SottoContoRiferimento != null ? item.SottoContoRiferimento.ID : (int?) null,
                    Importo = item.Importo,
                    LottiAddebito = item.LottiAddebito,
                    Segno = item.Segno,
                    Descrizione = item.Descrizione,
                    Stato = "RIPARTIZIONE"
                };

                return dto;
            }
            catch (Exception ex)
            {
                _log.ErrorFormat("Errore inaspettato nella creazione dell'istanza DTO per un dettaglio di una spesa - {0} - ripartizione:{1}", ex, Utility.GetMethodDescription(), item.ID);
                throw;
            }
        }
 public RipartizioneSpesaDTO GetRipartizioneSpesaByDomainEntity(RipartizioneSpesa ripartizioneSpesa)
 {
     try
     {
         return setRipartizioneSpesaDTO(ripartizioneSpesa);
     }
     catch (Exception ex)
     {
         _log.ErrorFormat("Errore nel caricamento dei movimenti da item spesa - {0} - id:{1}", ex, Utility.GetMethodDescription(), ripartizioneSpesa != null ? ripartizioneSpesa.ID.ToString(CultureInfo.InvariantCulture) : "<NULL>");
         throw;
     }
 }
예제 #4
0
        public string SalvaMovimentiDetrazione(IList<SpesaDetrazioneDTO> speseDetrazione)
        {
            try
            {
                var message = string.Empty;

                if (speseDetrazione != null)
                {
                    foreach (var spesaDetrazioneDTO in speseDetrazione)
                    {
                        if (spesaDetrazioneDTO != null)
                        {
                            var spesa = _daoFactory.GetSpesaDao().Find(spesaDetrazioneDTO.ID, false);
                            if (spesa != null)
                            {
                                spesa.RipartizioneSpesa.Clear();

                                foreach (var ripartizioneSpesaDTO in spesaDetrazioneDTO.RipartizioneDetrazione)
                                {
                                    try
                                    {
                                        var ripartizioneDetrazione = _daoFactory.GetRipartizioneSpesaDao().Find(ripartizioneSpesaDTO.ID, false);

                                        if (ripartizioneDetrazione == null)
                                        {
                                            var conto = _daoFactory.GetContoDao().Find(ripartizioneSpesaDTO.IdConto, false);

                                            var segno = "D";
                                            if (ripartizioneSpesaDTO.Importo < 0)
                                            {
                                                segno = "A";
                                                ripartizioneSpesaDTO.Importo = ripartizioneSpesaDTO.Importo * -1;
                                            }

                                            SottoConto sottoconto = null;
                                            if (ripartizioneSpesaDTO.IdSottoConto != null)
                                                sottoconto = _daoFactory.GetSottoContoDao().Find(ripartizioneSpesaDTO.IdSottoConto.Value, false);
                                            if (spesa != null && conto != null)
                                            {
                                                ripartizioneDetrazione = new RipartizioneSpesa(spesa, conto, sottoconto, ripartizioneSpesaDTO.Importo, segno, ripartizioneSpesaDTO.Descrizione);
                                                _daoFactory.GetRipartizioneSpesaDao().SaveOrUpdate(ripartizioneDetrazione);
                                            }
                                        }
                                        else
                                        {
                                            ripartizioneDetrazione.Importo = ripartizioneSpesaDTO.Importo;
                                            ripartizioneDetrazione.Descrizione = ripartizioneSpesaDTO.Descrizione;
                                            spesa.RipartizioneSpesa.Add(ripartizioneDetrazione);
                                        }

                                        if (ripartizioneDetrazione != null)
                                        {
                                            if (ripartizioneDetrazione.ContoRiferimento.ID != ripartizioneSpesaDTO.IdConto)
                                            {
                                                ripartizioneDetrazione.ContoRiferimento = _daoFactory.GetContoDao().Find(ripartizioneSpesaDTO.IdConto, false);
                                                if (ripartizioneSpesaDTO.IdSottoConto != null)
                                                    ripartizioneDetrazione.SottoContoRiferimento = _daoFactory.GetSottoContoDao().Find(ripartizioneSpesaDTO.IdSottoConto.Value, false);
                                            }

                                            // ===================================================
                                            //  Elaborazione ripartizione
                                            // ===================================================
                                            if (ripartizioneSpesaDTO.Ripartizione != null)
                                            {
                                                ripartizioneDetrazione.LottiAddebito = string.Empty;
                                                ripartizioneDetrazione.StabiliAddebito = string.Empty;
                                                ripartizioneDetrazione.GruppiAddebito = string.Empty;

                                                foreach (var spesaUnita in ripartizioneDetrazione.DettaglioRipartizione)
                                                {
                                                    spesaUnita.UnitaRiferimento?.DettaglioSpese.Remove(spesaUnita);
                                                    spesaUnita.SoggettoCondominio?.DettaglioSpese.Remove(spesaUnita);
                                                    _daoFactory.GetSpeseUnitaDao().Delete(spesaUnita);
                                                }
                                                ripartizioneDetrazione.DettaglioRipartizione.Clear();

                                                // Lotti
                                                var lotti = ripartizioneSpesaDTO.Ripartizione.Lotti.SingleOrDefault();
                                                if (lotti.Value.Any(item => !item.Selezionato) && lotti.Value.Any(item => item.Selezionato))
                                                {
                                                    var lottiAddebito = lotti.Value.Where(item => item.Selezionato).Aggregate(string.Empty, (current, lotto) => current + (lotto.ID + "&"));
                                                    ripartizioneDetrazione.LottiAddebito = lottiAddebito.Substring(0, lottiAddebito.Length - 1);
                                                    continue;
                                                }

                                                // Stabili
                                                var stabili = ripartizioneSpesaDTO.Ripartizione.Stabili.SingleOrDefault();
                                                if (stabili.Value.Any(item => !item.Selezionato) && stabili.Value.Any(item => item.Selezionato))
                                                {
                                                    var stabiliAddebito = stabili.Value.Where(item => item.Selezionato).Aggregate(string.Empty, (current, stabile) => current + (stabile.ID + "&"));
                                                    ripartizioneDetrazione.StabiliAddebito = stabiliAddebito.Substring(0, stabiliAddebito.Length - 1);
                                                    continue;
                                                }

                                                // Gruppi
                                                var gruppi = ripartizioneSpesaDTO.Ripartizione.Gruppi.SingleOrDefault();
                                                if (gruppi.Value.Any(item => !item.Selezionato) && gruppi.Value.Any(item => item.Selezionato))
                                                {
                                                    var gruppiAddebito = gruppi.Value.Where(item => item.Selezionato).Aggregate(string.Empty, (current, gruppo) => current + (gruppo.ID + "&"));
                                                    ripartizioneDetrazione.GruppiAddebito = gruppiAddebito.Substring(0, gruppiAddebito.Length - 1);
                                                    continue;
                                                }

                                                // Unità Immobiliari
                                                var unita = ripartizioneSpesaDTO.Ripartizione.UnitaImmobiliari.SingleOrDefault();
                                                ripartizioneDetrazione.IsRipartoPersonalizzato = false;
                                                if (unita.Value.Any(item => !item.Selezionato) && unita.Value.Any(item => item.Selezionato))
                                                {
                                                    var conto = ripartizioneDetrazione.ContoRiferimento;
                                                    foreach (var unitaImmobiliare in unita.Value.Where(item => item.Selezionato))
                                                    {
                                                        var speseUnita = conto.IsSpesePersonali ? new SpeseUnita(unitaImmobiliare.Importo, null, _daoFactory.GetSoggettoCondominioDao().GetById(unitaImmobiliare.ID, false), ripartizioneDetrazione) : new SpeseUnita(null, _daoFactory.GetUnitaImmobiliareDao().GetById(unitaImmobiliare.ID, false), null, ripartizioneDetrazione);
                                                        _daoFactory.GetSpeseUnitaDao().SaveOrUpdate(speseUnita);
                                                    }

                                                    ripartizioneDetrazione.IsRipartoPersonalizzato = true;
                                                }
                                            }
                                        }
                                    }
                                    catch (Exception ex)
                                    {
                                        _log.ErrorFormat("Errore nel salvataggio dei movimenti per detrazione - SINGOLO MOVIMENTO - {0} - movimento:{1}", ex, Utility.GetMethodDescription(), ripartizioneSpesaDTO.ID);
                                        throw;
                                    }
                                }
                            }                            
                        }

                    }                    
                }


                return message;
            }
            catch (Exception ex)
            {
                _log.ErrorFormat("Errore nel salvataggio dei movimenti per detrazione - {0}", ex, Utility.GetMethodDescription());
                throw;
            }
        }