public IList<RiepilogoSpesaDTO> GetRiepilogoSpeseQuadroAC(int azienda, int anno) { try { decimal importoMinimo = Convert.ToDecimal(Gipasoft.Library.Decodifica.Instance.GetElement("ImportiFissi", "quadroac").ValoreNumerico); // ============================================================================================= // Pagamenti da inserire nel Quadro AC // ============================================================================================= IList<Spesa> spese = _spesaService.GetByAnno(azienda, anno, false); // ----------------------------------------------------------------- // Raggruppamento per condominio e fornitore // ----------------------------------------------------------------- var spesePerCondominioFornitore = from item in spese group item by item.EsercizioRiferimento.CondominioRiferimento.ID + "¥" + item.FornitoreRiferimento.ID into itemPerCondominioFornitore where itemPerCondominioFornitore.Where(spe => spe.TipoDocumento != "BOLLETTA" && spe.FornitoreRiferimento.QuadroAc).Sum(spe => spe.ImportoLordo) > importoMinimo select itemPerCondominioFornitore; List<RiepilogoSpesaDTO> riepilogo = new List<RiepilogoSpesaDTO>(spesePerCondominioFornitore.Count()); foreach (IGrouping<string, Spesa> itemGroup in spesePerCondominioFornitore) { string[] keys = itemGroup.Key.Split('¥'); Condominio condominio = _daoFactory.GetCondominioDao().GetById(int.Parse(keys[0]), false); Fornitore fornitore = _daoFactory.GetFornitoreDao().GetById(int.Parse(keys[1]), false); RiepilogoSpesaDTO item = new RiepilogoSpesaDTO() { IdCondominio = condominio.ID, Condominio = condominio.DisplayName, IdFornitore = fornitore.ID, Fornitore = fornitore.DisplayName, Importo = itemGroup.Sum(spe => spe.ImportoLordo) }; item.Spese = new List<SpesaListaDTO>(itemGroup.Count()); foreach (Spesa itemSpesa in itemGroup) { SpesaListaDTO spesaDto = new SpesaListaDTO() { ID = itemSpesa.ID, DataDocumento = itemSpesa.DataDocumento, NumeroDocumento = itemSpesa.NumeroDocumento, ImportoLordo = itemSpesa.ImportoLordo, ImportoIva = itemSpesa.ImportoIva, StatoSpesa = itemSpesa.Stato, AltreSpese = itemSpesa.AltreSpese, CassaProfessionisti = itemSpesa.CassaProfessionisti, Detraibile = (itemSpesa.Detrazione > 0) ? true : false, DisplayFornitore = itemSpesa.FornitoreRiferimento.DisplayName, IdEsercizio = itemSpesa.EsercizioRiferimento.ID, IdFornitore = itemSpesa.FornitoreRiferimento.ID, Imponibile = itemSpesa.Imponibile, IsMultiIva = itemSpesa.IsMultiIva, Note = itemSpesa.Note, Contestata = itemSpesa.Contestata, Sinistro = (itemSpesa.Sinistro > 0) ? true : false, TipoDocumento = Gipasoft.Library.Decodifica.Instance.GetElement("TipoDocumentoContabile", itemSpesa.TipoDocumento).Descrizione, NumeroProtocollo = itemSpesa.NumeroProtocollo, Version = itemSpesa.Version }; item.Spese.Add(spesaDto); } riepilogo.Add(item); } return riepilogo; } catch (Exception ex) { log4net.MDC.Set("user", Gipasoft.Security.Login.Instance.CurrentLogin().LoginName); _log.Error("Errore inaspettato durante la lettura del riepilogo pagamenti per il Quadro AC -" + Gipasoft.Library.Utility.GetMethodDescription() + " - azienda:" + azienda + " - anno:" + anno, ex); throw ex; } }
public IList<RiepilogoSpesaDTO> GetRiepilogoSpeseQuadroAC(int azienda, int anno) { try { var importoMinimo = Convert.ToDecimal(Library.Decodifica.Instance.GetElement("ImportiFissi", "quadroac").ValoreNumerico); // ============================================================================================= // Pagamenti da inserire nel Quadro AC // ============================================================================================= var spese = _spesaService.GetByAnno(azienda, anno, false); // ----------------------------------------------------------------- // Raggruppamento per condominio e fornitore // ----------------------------------------------------------------- var spesePerCondominioFornitore = (from item in spese group item by item.EsercizioRiferimento.CondominioRiferimento.ID + "¥" + item.FornitoreRiferimento.GetFornitore().ID into itemPerCondominioFornitore where itemPerCondominioFornitore.Where(spe => spe.TipoDocumento != "BOLLETTA" && spe.FornitoreRiferimento.GetFornitore().QuadroAc).Sum(spe => spe.ImportoLordo) > importoMinimo select itemPerCondominioFornitore).ToList(); var riepilogo = new List<RiepilogoSpesaDTO>(spesePerCondominioFornitore.Count()); foreach (var itemGroup in spesePerCondominioFornitore) { var keys = itemGroup.Key.Split('¥'); var condominio = _daoFactory.GetCondominioDao().GetById(int.Parse(keys[0]), false); var fornitore = _daoFactory.GetFornitoreDao().GetById(int.Parse(keys[1]), false); var item = new RiepilogoSpesaDTO { IdCondominio = condominio.ID, Condominio = condominio.DisplayName, IdFornitore = fornitore.ID, Fornitore = fornitore.DisplayName, Importo = itemGroup.Sum(spe => spe.ImportoLordo), Spese = new List<SpesaListaDTO>(itemGroup.Count()) }; foreach (var itemSpesa in itemGroup) { var spesaDto = new SpesaListaDTO { ID = itemSpesa.ID, DataDocumento = itemSpesa.DataDocumento, NumeroDocumento = itemSpesa.NumeroDocumento, ImportoLordo = itemSpesa.ImportoLordo, ImportoIva = itemSpesa.ImportoIva, StatoSpesa = itemSpesa.Stato, AltreSpese = itemSpesa.AltreSpese, CassaProfessionisti = itemSpesa.CassaProfessionisti, Detraibile = (itemSpesa.Detrazione > 0), DisplayFornitore = itemSpesa.FornitoreRiferimento.GetFornitore().DisplayName, IdEsercizio = itemSpesa.EsercizioRiferimento.ID, IdFornitore = itemSpesa.FornitoreRiferimento.GetFornitore().ID, Imponibile = itemSpesa.Imponibile, IsMultiIva = itemSpesa.IsMultiIva, Note = itemSpesa.Note, Contestata = itemSpesa.Contestata, Sinistro = (itemSpesa.Sinistro > 0), TipoDocumento = Library.Decodifica.Instance.GetElement("TipoDocumentoContabile", itemSpesa.TipoDocumento).Descrizione, NumeroProtocollo = itemSpesa.NumeroProtocollo, EsenteRegimeMinimo = itemSpesa.EsenteRegimeMinimo, Version = itemSpesa.Version }; item.Spese.Add(spesaDto); } riepilogo.Add(item); } return riepilogo; } catch (Exception ex) { _log.ErrorFormat("Errore inaspettato durante la lettura del riepilogo pagamenti per il Quadro AC - {0} - azienda:{1} - anno:{2}", ex, Library.Utility.GetMethodDescription(), azienda, anno); throw; } }