public string crear_reporte_correo(DataTable dataTable, DataTable totales, string DESDE, string HASTA, string grupos) { string periodo_anterior = ""; string periodo_actual = ""; DataView view = new DataView(totales); DataTable distinctValues = view.ToTable(true, "periodo"); DataView dv = distinctValues.DefaultView; dv.Sort = "periodo desc"; distinctValues = dv.ToTable(); int co = 1; foreach (DataRow r in distinctValues.Rows) { if (co == 1) { periodo_actual = r[0].ToString(); } if (co == 2) { periodo_anterior = r[0].ToString(); } co++; } if (periodo_anterior == "") { periodo_anterior = periodo_actual; } double ACUMULADO = 0; int cant_cliete = 0; string var1 = ""; double total_mes_actual1 = 0; foreach (DataRow r2 in dataTable.Rows) { DateTime hasta_ant = Convert.ToDateTime(HASTA, new CultureInfo("es-ES")); string anterior_hasta = hasta_ant.AddMonths(-1).ToShortDateString().Replace("-", "/"); string where_ant = " where vendedor = '" + r2[0].ToString() + "' and FechaFactura <= CONVERT(datetime,'" + anterior_hasta + "',103) "; ACUMULADO += ReporteRNegocio.Facturación_Mes(periodo_anterior, where_ant); total_mes_actual1 += ReporteRNegocio.Facturación_Mes(periodo_actual, " where vendedor = '" + r2[0].ToString() + "' and periodo = " + periodo_actual); cant_cliete += ReporteRNegocio._cltes_con_vta(periodo_anterior, where_ant); } var1 = (Math.Round((total_mes_actual1 * 100 / ACUMULADO)) - 100).ToString() + "%"; if (var1.Contains("-")) { var1 = "<i style='color:red;'>" + var1 + "</i>"; } //HTML_EXCEL string HTML_EXCEL = ""; string color_letra_excel = "white"; string color_fondo_excel = "#428BCA"; string HTML = ""; HTML += "<table id='TABLA_REPORTE2' class='table table-advance table-bordered fill-head tablesorter filtrar2' style='width: 98%; border-collapse: collapse; border-spacing: 1px !important;' width:98%;>"; HTML += "<thead>"; HTML += " <tr>"; HTML_EXCEL += "<table id='T_EXCEL2' border=1>"; HTML_EXCEL += "<tr style='background-color:" + color_fondo_excel + "; color:" + color_letra_excel + "'>"; bool primer2 = true; foreach (DataRow r in distinctValues.Rows) { if (primer2) { HTML += "<th colspan=4; class='test sorter-false' style='border-right: 2px solid rgb(50, 48, 48);'></th>"; HTML_EXCEL += "<td colspan=4 ></td>"; primer2 = false; } HTML += "<th colspan=2; class='test sorter-false' style='border-right: 2px solid rgb(50, 48, 48);' > " + r[0].ToString().Trim() + "</th>"; HTML_EXCEL += "<td colspan=2 > " + r[0].ToString().Trim() + "</td>"; } HTML += "</tr>"; HTML_EXCEL += "</tr>"; HTML += "<tr>"; HTML_EXCEL += "<tr style='background-color:" + color_fondo_excel + "; color:" + color_letra_excel + "'>"; int cont2 = 1; bool primer1 = true; foreach (DataRow r in distinctValues.Rows) { if (primer1) { HTML += "<th colspan=1; class='test' style='font-weight: bold; border-bottom: 2px solid rgb(50, 48, 48);'>Vendedores</th>"; HTML += "<th colspan=1; class='test' style='font-weight: bold; border-bottom: 2px solid rgb(50, 48, 48);'>Acum.Mes Anter. (" + ACUMULADO.ToString("N0") + ")</th>"; HTML += "<th colspan=1; class='test' style='font-weight: bold; border-bottom: 2px solid rgb(50, 48, 48);'>clte# (" + cant_cliete + ")</th>"; HTML += "<th colspan=1; id='var' class='test sort-ascending' style='font-weight: bold; border-bottom: 2px solid rgb(50, 48, 48); border-right: 2px solid rgb(50, 48, 48);' width='95px'>%Var (" + var1 + ") </th>"; HTML_EXCEL += "<td>Vendedores</td>"; HTML_EXCEL += "<td>Acum.Mes Anter. (" + ACUMULADO.ToString("N0") + ")</td>"; HTML_EXCEL += "<td>clte# (" + cant_cliete + ")</td>"; HTML_EXCEL += "<td width='95px'>%Var (" + var1 + ") </td>"; primer1 = false; } DataRow[] venta = totales.Select("periodo = '" + r[0].ToString().Trim() + "'"); DataTable ta = new DataTable(); DataColumn column; column = new DataColumn(); column.ColumnName = "cont"; ta.Columns.Add(column); double SUM_VENTA = 0; int sum_cont = 0; foreach (DataRow row in venta) { SUM_VENTA += double.Parse(row[1].ToString()); DataRow row2 = ta.NewRow(); row2["cont"] = row[4].ToString().Trim(); ta.Rows.Add(row2); } DataView view2 = new DataView(ta); DataTable clientes = view2.ToTable(true, "cont"); sum_cont = clientes.Rows.Count; //HTML += "<td colspan=2; class='test' style='font-weight: bold; border-bottom: 2px solid rgb(50, 48, 48);'> TOTAL </td>"; HTML += "<th colspan=1; class='test' style='font-weight: bold; border-bottom: 2px solid rgb(50, 48, 48);'> " + SUM_VENTA.ToString("N0") + " </th>"; HTML += "<th colspan=1; class='test' style='font-weight: bold; border-bottom: 2px solid rgb(50, 48, 48); border-right: 2px solid rgb(50, 48, 48);'> " + sum_cont + " </th>"; HTML_EXCEL += "<td> " + SUM_VENTA.ToString("N0") + " </td>"; HTML_EXCEL += "<td> " + sum_cont + " </td>"; cont2++; } HTML += "</tr>"; HTML += "</thead>"; HTML_EXCEL += "</tr>"; foreach (DataRow r2 in dataTable.Rows) { HTML += "<tr>"; HTML_EXCEL += "<tr>"; int cont3 = 1; HTML += "<td colspan=1; style='border-right: 2px solid rgb(50, 48, 48);'> " + r2[0].ToString() + " </td>"; HTML_EXCEL += "<td> " + r2[0].ToString() + " </td>"; DateTime hasta_ant = Convert.ToDateTime(HASTA, new CultureInfo("es-ES")); string anterior_hasta = hasta_ant.AddMonths(-1).ToShortDateString().Replace("-", "/"); string where_ant = " where vendedor = '" + r2[0].ToString() + "' and FechaFactura <= CONVERT(datetime,'" + anterior_hasta + "',103) "; string factur_acumulado = ReporteRNegocio.Facturación_Mes(periodo_anterior, where_ant).ToString("N0"); double total_mes_actual = ReporteRNegocio.Facturación_Mes(periodo_actual, " where vendedor = '" + r2[0].ToString() + "' and periodo = " + periodo_actual); string clntes = ReporteRNegocio._cltes_con_vta(periodo_anterior, where_ant).ToString(); HTML += "<td colspan=1;> " + factur_acumulado + " </td>"; HTML += "<td colspan=1;'> " + clntes + " </td>"; HTML_EXCEL += "<td> " + factur_acumulado + " </td>"; HTML_EXCEL += "<td> " + clntes + " </td>"; string var_ = (Math.Round((total_mes_actual * 100 / double.Parse(factur_acumulado.Replace(".", "")))) - 100).ToString() + "%"; if (var_.Contains("∞")) { var_ = "100%"; } if (var_.Contains("NaN") || var_.Contains("∞") || var_.Contains("NeuN") || var_.Contains("Infinito")) { var_ = ""; } if (var_.Contains("-")) { var_ = "<i style='color:red;'> " + var_ + "</i>"; } string var_tool = "(" + total_mes_actual.ToString("N0") + " * 100 / " + factur_acumulado + ") -100"; HTML += "<td colspan=1; style='border-right: 2px solid rgb(50, 48, 48);' width='95px'> <a data-toggle='tooltip' style='color:black;' data-placement='top' title='" + var_tool + "'>" + var_ + " </a> </td>"; HTML_EXCEL += "<td width='70px'>" + var_ + " </td>"; string cod_vendedor = ReporteRNegocio.cod_vendedor(r2[0].ToString().Trim()); foreach (DataRow r in distinctValues.Rows) { DataRow[] venta = totales.Select(r[0].ToString() + " = periodo and vendedor = '" + r2[0].ToString().Trim() + "'"); string v = "-"; string c = "0"; DataTable ta = new DataTable(); DataColumn column; column = new DataColumn(); column.ColumnName = "cont"; int sum_cont = 0; ta.Columns.Add(column); double venta_ = 0; int cont = 0; foreach (DataRow row in venta) { venta_ += double.Parse(row[1].ToString()); DataRow row2 = ta.NewRow(); row2["cont"] = row[4].ToString().Trim(); ta.Rows.Add(row2); } DataView view2 = new DataView(ta); DataTable clientes = view2.ToTable(true, "cont"); sum_cont = clientes.Rows.Count; clsCrypto.CL_Crypto encriptador = new clsCrypto.CL_Crypto("thi"); //encriptador.EncryptData( string bit = "2"; string script2 = string.Format("javascript:fuera('{0}', '{1}', '{2}', '{3}')", encriptador.EncryptData(r[0].ToString()), encriptador.EncryptData(cod_vendedor), encriptador.EncryptData(grupos.Trim().Replace("'", "")), encriptador.EncryptData(bit)); if (venta_ != 0) { HTML += "<td colspan=1;> <a data-toggle='tooltip' data-placement='top' title='" + r2[0].ToString().Trim() + "' href='javascript:' onclick='" + script2 + "'>" + venta_.ToString("N0") + " </a> </td>"; HTML_EXCEL += "<td>" + venta_.ToString("N0") + "</td>"; } else { HTML += "<td colspan=1;> " + venta_ + "</td>"; HTML_EXCEL += "<td> " + venta_ + "</td>"; } HTML += "<td colspan=1; style='border-right: 2px solid rgb(50, 48, 48);'> " + sum_cont + "</td>"; HTML_EXCEL += "<td> " + sum_cont + "</td>"; cont3++; } HTML += "</tr>"; HTML_EXCEL += "</tr>"; } HTML += " </table>"; HTML_EXCEL += " </table>"; HTML += "</div>"; R_Excel_2.InnerHtml = HTML_EXCEL; return(HTML); }
protected void btn_informe_Click(object sender, EventArgs e) { //ScriptManager.RegisterStartupScript(Page, this.GetType(), "teeee", "<script> new Tablesort(document.getElementById('ContentPlaceHolder_Contenido_G_PRODUCTOS')); </script>", false); //if (l_vendedores.Text != "" && l_clientes.Text != "" && txt_desde.Text != "" && txt_hasta.Text != "" && l_grupos.Text != "") //{ string vendedores = agregra_comillas(l_vendedores.Text); string clientes = agregra_comillas(l_clientes.Text); string desde = txt_desde.Text; string hasta = txt_hasta.Text; string grupos = agregra_comillas(l_grupos.Text);; string grupos_del_usuario = agregra_comillas(ReporteRNegocio.grupos_usuario(User.Identity.Name.ToString())); if (grupos_del_usuario == "") { grupos_del_usuario = agregra_comillas(ReporteRNegocio.grupos_usuario_v_report(User.Identity.Name.ToString())); } DataTable dt2; DataView dtv = new DataView(); dt2 = ReporteRNegocio.carga_grupos(txt_desde.Text, txt_hasta.Text, grupos_del_usuario); if (dt2.Rows.Count <= 0) { ScriptManager.RegisterStartupScript(Page, this.GetType(), "teeee", "<script language='javascript'>NO_GRUPOS();</script>", false); } else { string es_vendedor = ReporteRNegocio.esvendedor(USER); string where = " where FechaFactura >= CONVERT(datetime,'" + desde + "', 103) and FechaFactura <= CONVERT(datetime,'" + hasta + "',103) "; if (grupos != "") { where = where + " and user1 in (" + grupos + ") "; } else if (es_vendedor != "2") { where = where + " and user1 in (" + agregra_comillas(ReporteRNegocio.grupos_usuario(USER)) + ")"; } else if (es_vendedor == "2") { where = where + " and user1 in (" + agregra_comillas(ReporteRNegocio.grupos_usuario_v_report(USER)) + ")"; } if (clientes != "") { where = where + " and rutcliente in (" + clientes + ") "; } if (vendedores != "") { where = where + " and codvendedor in (" + vendedores + ") "; } if (es_vendedor == "2") { where += " and codvendedor in ('" + USER + "')"; } div_report.Visible = true; cont_periodos = 0; G_INFORME_VENDEDOR.Visible = false; G_INFORME_TOTAL_VENDEDOR.Visible = true; string periodos = ReporteRNegocio.listar_periodos_(where); //aux = ReporteRNegocio.listar_resumen_periodo(where + " and periodo in ("+agregra_comillas(periodos)+")"); totales = new DataTable(); List <string> periodos_list = periodos.Split(',').ToList(); totales.Columns.Add("FACTORES/Periodos"); int colum = periodos_list.Count; foreach (string r in periodos_list) { totales.Columns.Add(r); } DataRow row; List <string> nombre_factores = get_factores(); // CAPI //totales.Columns.Add("Total general"); for (int i = 0; i <= 6; i++) { row = totales.NewRow(); if (nombre_factores[i].ToString().Contains("Percentil ")) { row["FACTORES/Periodos"] = nombre_factores[i] + t_percentil.Text + "%"; } else { row["FACTORES/Periodos"] = nombre_factores[i]; } totales.Rows.Add(row); // CAPI for (int y = 0; y < colum; y++) { if (i == 0) { if (y == colum) { // CAPI // totales.Rows[i][y + 1] = ReporteRNegocio.Facturación_Mes(agregra_comillas(periodos), where).ToString("N0"); } else { string periodo = totales.Columns[y + 1].ColumnName; totales.Rows[i][y + 1] = ReporteRNegocio.Facturación_Mes(periodo, where).ToString("N0"); } } if (i == 1) { if (y == colum) { // CAPI //totales.Rows[i][y + 1] = ReporteRNegocio._cltes_con_vta(agregra_comillas(periodos), where).ToString("N0"); } else { string periodo = totales.Columns[y + 1].ColumnName; totales.Rows[i][y + 1] = ReporteRNegocio._cltes_con_vta(periodo, where).ToString("N0"); } } if (i == 2) { totales.Rows[i][y + 1] = (+(Double.Parse(totales.Rows[0][y + 1].ToString().Replace(".", ""))) / (Double.Parse(totales.Rows[1][y + 1].ToString().Replace(".", "")))).ToString("N0"); } if (i == 3) { if (y == colum) { // CAPI //List<int> percen = (ReporteRNegocio.Datos_para_percentil(agregra_comillas(periodos), where)).ToList(); //if (percen.Count == 0) { totales.Rows[i][y + 1] = "0"; } //else //{ // Double por_percentil; // if (t_percentil.Text == "") { por_percentil = 0.5; } // else // { // por_percentil = Math.Round(Double.Parse(t_percentil.Text) / 100, 2); // } // totales.Rows[i][y + 1] = Math.Round(Percentile(percen.ToArray(), por_percentil)).ToString("N0"); //} } else { string periodo = totales.Columns[y + 1].ColumnName; List <long> percen = ReporteRNegocio.Datos_para_percentil(periodo, where); if (percen.Count == 0) { totales.Rows[i][y + 1] = "0"; } else { Double por_percentil; if (t_percentil.Text == "") { por_percentil = 0.5; } else { por_percentil = Math.Round(Double.Parse(t_percentil.Text) / 100, 2); } totales.Rows[i][y + 1] = Math.Round(Percentile(percen.ToArray(), por_percentil)).ToString("N0"); } } } if (i == 4) { if (y == colum) { // CAPI //totales.Rows[i][y + 1] = ReporteRNegocio.sum_sobre_este_percentil(agregra_comillas(periodos), where, Double.Parse(totales.Rows[3][y + 1].ToString().Replace(".", ""))).ToString("N0"); } else { string periodo = totales.Columns[y + 1].ColumnName; totales.Rows[i][y + 1] = ReporteRNegocio.sum_sobre_este_percentil(periodo, where, Double.Parse(totales.Rows[3][y + 1].ToString().Replace(".", ""))).ToString("N0"); } } if (i == 5) { Double sumatoria = (Double.Parse(totales.Rows[0][y + 1].ToString().Replace(".", ""))); Double sum_vent_sobre_percen = (Double.Parse(totales.Rows[4][y + 1].ToString().Replace(".", ""))); totales.Rows[i][y + 1] = Math.Round((sum_vent_sobre_percen / sumatoria * 100)).ToString() + " %"; } if (i == 6) { if (y <= colum - 2) { Double sum_mes = (Double.Parse(totales.Rows[0][y + 1].ToString().Replace(".", ""))); Double sum_mes_anterior = (Double.Parse(totales.Rows[0][y + 2].ToString().Replace(".", ""))); totales.Rows[i][y + 1] = (Math.Round((sum_mes * 100 / sum_mes_anterior)) - 100).ToString() + " %"; } } } } G_INFORME_TOTAL_VENDEDOR.DataSource = totales; G_INFORME_TOTAL_VENDEDOR.DataBind(); //VOLVER A CARGAR LOS MULTISELECT DataTable dt = new DataTable(); try { dt = ReporteRNegocio.carga_grupos(desde, hasta, grupos_del_usuario); //dt.Rows.Add(new Object[] { "-1", "-- Todos --" }); DataView dv2 = dt.DefaultView; dv2.Sort = "user1"; dt = dv2.ToTable(); d_grupos_usuario.DataSource = dt; d_grupos_usuario.DataTextField = "user1"; d_grupos_usuario.DataValueField = "user1"; //d_vendedor_.SelectedIndex = -1; d_grupos_usuario.DataBind(); foreach (ListItem item in d_grupos_usuario.Items) { if (l_grupos.Text.Contains(item.Value.ToString())) { item.Selected = true; } } } catch { } string where2 = " where FechaFactura >= CONVERT(datetime,'" + desde + "', 103) " + " and FechaFactura <= CONVERT(datetime,'" + hasta + "',103) "; if (grupos != "") { where2 = where2 + " and user1 in (" + grupos + ") "; } else if (es_vendedor != "2") { where2 = where2 + " and user1 in (" + agregra_comillas(ReporteRNegocio.grupos_usuario(USER)) + ")"; } else if (es_vendedor == "2") { where2 = where2 + " and user1 in (" + agregra_comillas(ReporteRNegocio.grupos_usuario_v_report(USER)) + ")"; } if (es_vendedor == "2") { where2 += " and codvendedor in ('" + USER + "')"; } try { dt = ReporteRNegocio.listar_ALL_vendedores(where2); //dt.Rows.Add(new Object[] { "-1", "-- Todos --" }); DataView dv2 = dt.DefaultView; dv2.Sort = "cod_vend"; dt = dv2.ToTable(); d_vendedor_.DataSource = dt; d_vendedor_.DataTextField = "nom_vend"; d_vendedor_.DataValueField = "cod_vend"; //d_vendedor_.SelectedIndex = -1; d_vendedor_.DataBind(); foreach (ListItem item in d_vendedor_.Items) { if (l_vendedores.Text.Contains(item.Value.ToString())) { item.Selected = true; } } } catch { } where2 = ""; where2 = " where FechaFactura >= CONVERT(datetime,'" + desde + "', 103) " + " and FechaFactura <= CONVERT(datetime,'" + hasta + "',103) "; if (grupos != "") { where2 = where2 + " and user1 in (" + grupos + ") "; } else if (es_vendedor != "2") { where2 = where2 + " and user1 in (" + agregra_comillas(ReporteRNegocio.grupos_usuario(USER)) + ")"; } else if (es_vendedor == "2") { where2 = where2 + " and user1 in (" + agregra_comillas(ReporteRNegocio.grupos_usuario_v_report(USER)) + ")"; } if (vendedores != "") { where2 += " and codvendedor in (" + vendedores + ")"; } if (es_vendedor == "2") { where2 += " and codvendedor in ('" + USER + "')"; } try { dt = ReporteRNegocio.listar_ALL_cliente2(where2); //dt.Rows.Add(new Object[] { "-1", "-- Todos --" }); DataView dv3 = dt.DefaultView; dv3.Sort = "nom_cliente"; dt = dv3.ToTable(); d_cliente.DataSource = dt; d_cliente.DataTextField = "nom_cliente"; d_cliente.DataValueField = "rut_cliente"; //d_vendedor_.SelectedIndex = -1; d_cliente.DataBind(); foreach (ListItem item in d_cliente.Items) { if (l_clientes.Text.Contains(item.Value.ToString())) { item.Selected = true; } } } catch { } } ScriptManager.RegisterStartupScript(Page, this.GetType(), "teeee", "<script> new Tablesort(document.getElementById('ContentPlaceHolder_Contenido_G_PRODUCTOS')); </script>", false); }