protected void Button1_Click(object sender, EventArgs e)
        {
            string desde = txt_desde.Text;
            string hasta = txt_hasta.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()));
            }
            List <string> grupos = grupos_del_usuario.Split(',').ToList();
            string        where3 = "";

            if (grupos.Count == 4)
            {
                where3 += "  where  1=1 ";
            }
            else
            {
                if (grupos_del_usuario.ToUpper().Replace("'", "").Trim() == "GRANOS")
                {
                    where3 += "  where  b.DescEmisor = 'Granos' ";
                }
                else if (grupos_del_usuario.Contains("Abarrotes") || grupos_del_usuario.Contains("CMQuillota") || grupos_del_usuario.Contains("MayoristasLV"))
                {
                    where3 += " where  b.DescEmisor <> 'Granos' ";
                }
            }
            //select * from[VPEDIDOCABECERA] where FechaEmision >= CONVERT(datetime, '21/07/2017', 103)
            if (desde != "")
            {
                where3 += " and convert(datetime,b.FechaEmision ,103)  >= convert(datetime, '" + desde + "', 103) ";
            }
            if (hasta != "")
            {
                where3 += " and convert(datetime,b.FechaEmision ,103)   <= convert(datetime, '" + hasta + "', 103) ";
            }
            //if (clientes != "")
            //{

            //    where3 += " and b.rut in (" + clientes + ")";
            //}
            if (txt_sp.Text != "")
            {
                where3 += " and b.CodDocumento in (" + agregra_comillas(txt_sp.Text) + ")";
            }

            //SPSP
            DataTable dt2 = ReporteRNegocio.VM_listar_sp(where3);

            string cod_aux      = "";
            string facturas_aux = "";

            DataTable sp_malas = new DataTable();

            sp_malas.Columns.Add("sp");
            sp_malas.Columns.Add("facturas");
            sp_malas.Columns.Add("estado");


            DataTable sp_for = new DataTable();

            sp_for.Columns.Add("sp");
            sp_for.Columns.Add("estado");
            sp_for.Columns.Add("facturas");
            string facturas_x_sps = "";

            foreach (DataRow r in dt2.Rows)
            {
                //20 -- OK
                //10S -- SinFactura
                //10P -- Cantidad Distintas

                //0  coddoc //24 cod //25 cant

                if (r[13].ToString() == "Aprobado" && r[28].ToString() == "no")
                {
                    if (cod_aux == "")
                    {
                        cod_aux = r[0].ToString();
                        sp_for  = new DataTable();
                        sp_for.Columns.Add("sp");
                        sp_for.Columns.Add("estado");
                        sp_for.Columns.Add("facturas");
                    }

                    DataTable procesado = ReporteRNegocio.SP_Marcelo(r[0].ToString().Trim(), r[26].ToString().Trim(), r[27].ToString().Trim());
                    DataRow   row       = procesado.Rows[0];

                    if (r[0].ToString() == cod_aux)
                    {
                        //if (row["estado"].ToString().Substring(0, 3) == "10P")
                        //{
                        facturas_aux = row["facturas"].ToString();

                        if (facturas_aux.Trim() != "")
                        {
                            facturas_x_sps += row["facturas"].ToString() + ", ";
                            r[14]           = facturas_x_sps.Substring(0, facturas_x_sps.Length - 3);
                        }
                        DataRow row_sp1 = sp_for.NewRow();
                        row_sp1["sp"]     = cod_aux;
                        row_sp1["estado"] = row["estado"].ToString().Substring(0, 3);
                        string aux_aca = "";
                        try
                        {
                            aux_aca = facturas_x_sps.Substring(0, facturas_x_sps.Length - 2);
                        }
                        catch
                        {
                        }
                        row_sp1["facturas"] = aux_aca;
                        sp_for.Rows.Add(row_sp1);
                    }
                    else
                    {
                        string estado_univ = "";
                        foreach (DataRow r2 in sp_for.Rows)
                        {
                            if (r2[1].ToString() == "10P")
                            {
                                estado_univ = r2[1].ToString();
                                DataRow row_sp = sp_malas.NewRow();
                                row_sp["sp"]       = cod_aux;
                                row_sp["facturas"] = facturas_x_sps.Substring(0, facturas_x_sps.Length - 3);
                                row_sp["estado"]   = estado_univ;
                                sp_malas.Rows.Add(row_sp);
                                break;
                            }
                            else
                            {
                                estado_univ = r2[1].ToString();
                                DataRow row_sp = sp_malas.NewRow();
                                row_sp["sp"] = cod_aux;
                                try
                                {
                                    row_sp["facturas"] = facturas_x_sps.Substring(0, facturas_x_sps.Length - 2);
                                }
                                catch
                                {
                                    row_sp["facturas"] = "";
                                }
                                row_sp["estado"] = estado_univ;
                                sp_malas.Rows.Add(row_sp);
                            }
                        }

                        cod_aux = r[0].ToString();
                        sp_for  = new DataTable();
                        sp_for.Columns.Add("sp");
                        sp_for.Columns.Add("estado");
                        sp_for.Columns.Add("facturas");
                        facturas_x_sps = "";

                        facturas_x_sps += row["facturas"].ToString() + ", ";
                        r[14]           = facturas_x_sps.Substring(0, facturas_x_sps.Length - 2);

                        DataRow row_sp1 = sp_for.NewRow();
                        row_sp1["sp"]       = cod_aux;
                        row_sp1["estado"]   = row["estado"].ToString().Substring(0, 3);
                        row_sp1["facturas"] = facturas_x_sps.Substring(0, facturas_x_sps.Length - 2);
                        sp_for.Rows.Add(row_sp1);
                    }
                }
                else if (r[13].ToString() == "Aprobado")
                {
                    DataTable procesado = ReporteRNegocio.SP_Marcelo(r[0].ToString().Trim(), r[26].ToString().Trim(), r[27].ToString().Trim());
                    DataRow   row       = procesado.Rows[0];
                    r[14] = row["facturas"].ToString();
                }
            }

            string estado_univ1 = "";

            foreach (DataRow r2 in sp_for.Rows)
            {
                if (r2[1].ToString() == "10P")
                {
                    estado_univ1 = r2[1].ToString();
                    DataRow row_sp = sp_malas.NewRow();
                    row_sp["sp"]       = cod_aux;
                    row_sp["facturas"] = r2[2].ToString();
                    row_sp["estado"]   = estado_univ1;
                    sp_malas.Rows.Add(row_sp);
                    break;
                }
                else
                {
                    estado_univ1 = r2[1].ToString();
                    DataRow row_sp = sp_malas.NewRow();
                    row_sp["sp"]       = cod_aux;
                    row_sp["facturas"] = r2[2].ToString();
                    row_sp["estado"]   = estado_univ1;
                    sp_malas.Rows.Add(row_sp);
                }
            }


            foreach (DataRow r in dt2.Rows)
            {
                if (r[13].ToString() == "Aprobado")
                {
                    foreach (DataRow r2 in sp_malas.Rows)
                    {
                        if (r[0].ToString() == r2[0].ToString())
                        {
                            string cad = r2[1].ToString();
                            Dictionary <string, int> contador = new Dictionary <string, int>();

                            foreach (string item in cad.Split(new char[] { ',' }))
                            {
                                if (contador.ContainsKey(item.Trim()))
                                {
                                    contador[item.Trim()] = contador[item.Trim()] + 1;
                                }
                                else
                                {
                                    contador.Add(item.Trim(), 1);
                                }
                            }
                            string resultado = "";
                            foreach (KeyValuePair <string, int> item in contador)
                            {
                                if (item.Value >= 1)
                                {
                                    resultado = string.Format("{0},{1}", resultado, item.Key);
                                }
                            }
                            string cadd = resultado.Remove(0, 1);

                            if (r2[2].ToString() == "10S" && cadd.Trim() != "")
                            {
                                r[14] = cadd;
                                r[25] = "10P";
                            }
                            else
                            {
                                r[14] = cadd;
                                r[25] = r2[2].ToString();
                            }
                        }
                    }
                }
                r[14] = r[14].ToString().Replace(",", ", ");
            }
            if (dt2.Rows.Count > 0)
            {
                dt2 = dt2.AsEnumerable()
                      .GroupBy(r => new { Col1 = r["CodDocumento"] })
                      .Select(g => g.OrderBy(r => r["CodDocumento"]).First())
                      .CopyToDataTable();
            }
            G_INFORME_TOTAL_VENDEDOR.DataSource = dt2;
            G_INFORME_TOTAL_VENDEDOR.DataBind();
            JQ_Datatable();
            DIV_LISTADO.Visible = true;
        }