protected void BindGrid(DDTMefObject ddt = null) { List <DDTMef> items = ddt == null?DDTMefDAO.GetAll(500) : DDTMefDAO.GetDdt(ddt); grdListaDDTMef.DataSource = items; grdListaDDTMef.DataBind(); // Imposto i campi di riepilogo txtMedia.Text = (items.Sum(s => s.PrezzoUnitario) / (items.Count() == 0 ? 1 : items.Count())).ToString("0.00") + " €"; txtTotDDT.Text = items.Sum(s => s.Importo).ToString("N2") + " €"; txtImponibileDDT.Text = items.Sum(s => (s.Importo * 100) / (100 + s.Iva)).ToString("N2") + " €"; txtIvaDDT.Text = items.Sum(s => s.Importo - (100 * s.Importo / (100 + s.Iva))).ToString("N2") + " €"; }
//public static List<string> GetJson() //{ // List<string> ret = new List<string>(); // StringBuilder sql = new StringBuilder(); // sql.AppendLine($"SELECT *"); // sql.AppendLine($"FROM TblDDTMef"); // sql.AppendLine($"ORDER BY Anno, Data, N_DDT, CodArt"); // sql.AppendLine($"FOR JSON PATH"); // try // { // using (SqlConnection cn = GetConnection()) // { // ret = cn.Query<string>(sql.ToString()).ToList(); // } // } // catch (Exception ex) // { // throw new Exception("Errore durante il recupero dei DDT in formato JSON", ex); // } // return ret; //} public static List <DDTMef> GetDdt(DDTMefObject ddt) { List <DDTMef> ret = new List <DDTMef>(); StringBuilder sql = new StringBuilder(); StringBuilder queryFilters = new StringBuilder(); // Filtri Generici queryFilters.AppendLine($"Qta LIKE '%{ddt.Qta}%' AND N_DDT LIKE '%{ddt.NDdt}%'"); queryFilters.AppendLine($"AND CodArt LIKE '%{ddt.CodArt1}%' AND CodArt LIKE '%{ddt.CodArt2}%' AND CodArt LIKE '%{ddt.CodArt3}%'"); queryFilters.AppendLine($"AND DescriCodArt LIKE '%{ddt.DescriCodArt1}%' AND DescriCodArt LIKE '%{ddt.DescriCodArt2}%' AND DescriCodArt LIKE '%{ddt.DescriCodArt3}%'"); sql.AppendLine($"SELECT IdDDTMef, Anno, Data, N_DDT, CodArt,"); sql.AppendLine($"DescriCodArt, Qta, Importo, Acquirente, PrezzoUnitario, AnnoN_DDT"); sql.AppendLine($"FROM TblDDTMef"); // Controllo i casi in cui entrambi gli anni o le date siano state valorizzate // Oppure quanto tutti quanti sono vuoti // Altrimenti faccio una where generica per tutti gli altri casi if (ddt.AnnoInizio != "" && ddt.AnnoFine != "") { sql.AppendLine($"WHERE (ANNO BETWEEN @AnnoInizio AND @AnnoFine) AND {queryFilters}"); } else if (ddt.DataInizio != "" && ddt.DataFine != "") { sql.AppendLine($"WHERE (Data BETWEEN CONVERT(Date,@DataInizio) AND CONVERT(Date,@DataFine)) AND {queryFilters}"); } else if (ddt.AnnoInizio == "" && ddt.AnnoFine == "" && ddt.DataInizio == "" && ddt.DataFine == "") { sql.AppendLine($"WHERE {queryFilters}"); } else { sql.AppendLine($"WHERE ((ANNO = @AnnoInizio OR Anno = @AnnoFine) OR (Data = CONVERT(Date, @DataInizio) OR Data = CONVERT(Date, @DataFine))) AND {queryFilters}"); } sql.AppendLine($"ORDER BY Anno, Data, N_DDT, CodArt"); try { using (SqlConnection cn = GetConnection()) { ret = cn.Query <DDTMef>(sql.ToString(), new { ddt.AnnoInizio, ddt.AnnoFine, ddt.DataInizio, ddt.DataFine }).ToList(); } } catch (Exception ex) { throw new Exception("Errore durante la ricerca dei DDT Mef", ex); } return(ret); }