protected void btGuardar_Click(object sender, EventArgs e)
        {
            try
            {
                Connection conexion = new Connection();

                string clientId = conexion.getUsersInfo("CLIENT_ID", "USER_ID", Session.Contents["userid"].ToString());
                string query = String.Format("SELECT SALES_ID FROM VENDEDORES WHERE CLIENT_ID = '{0}'", clientId);

                //Se valida que el codigo de vendedor no este en la base de datos.
                DataTable tabla = conexion.getGridDataSource(query);
                foreach (DataRow fila in tabla.Rows)
                {
                    if (fila["SALES_ID"].ToString().ToUpper().Equals(txtCodigo.Text.ToUpper()))
                    {
                        lblMensajes.Text = String.Format("<script languaje='javascript'>" +
                                        "alert('Codigo de vendedor ya existe.');" +
                                     "</script>");
                        return;
                    }

                }

                query = String.Format("INSERT INTO VENDEDORES (SALES_ID, CLIENT_ID, SALES_NAME) VALUES ('{0}', '{1}', '{2}')",
                    txtCodigo.Text.ToUpper(), clientId, txtNombre.Text);

                if (conexion.Actualizar(query))
                    lblMensajes.Text = String.Format("<script languaje='javascript'>" +
                                        "alert('Vendedor ingresado con exito.');" +
                                        "window.location.href = '../Default.aspx';" +
                                     "</script>");
                else
                    lblMensajes.Text = String.Format("<script languaje='javascript'>" +
                                        "alert('Error de conexion, intente refrescar la pagina.');" +
                                     "</script>");
            }
            catch (Exception error)
            {
                literal.Text = String.Format("<script languaje='javascript'>" +
                    "alert('Sucedio el siguiente error: {0}');" +
                    "window.location.href = '../Default.aspx';" +
                    "</script>", error.Message);
            }
        }
        protected void grdConsulta_DetailTableDataBind(object source, Telerik.Web.UI.GridDetailTableDataBindEventArgs e)
        {
            Connection conexion = new Connection();
            GridDataItem dataitem = (GridDataItem)e.DetailTableView.ParentItem;

            switch (e.DetailTableView.Name)
            {
                case "Solicitud":
                    {
                        string requestId = dataitem.GetDataKeyValue("DR_ID").ToString();
                        string query = String.Format("SELECT DD.DISPENSER_ID, DD.PRODUCT_ID, DD.DISPENSER_QUANTITY, DD.PRODUCT_QUANTITY, DD.APPROVAL_QTY," +
                        " DD.INVERSION, SD.STATUS_DESCRIP, DD.ADMIN_COMMENT FROM DESCRIPCION_DISPENSADORES AS DD" +
                        " JOIN STATUS_DESCRIP AS SD ON DD.STATUS_ID = SD.STATUS_ID WHERE DR_ID = '{0}'", requestId);
                        e.DetailTableView.DataSource = conexion.getGridDataSource(query);
                        break;
                    }

            }
        }
        protected void grdConsulta_NeedDataSource(object source, Telerik.Web.UI.GridNeedDataSourceEventArgs e)
        {
            Connection conexion = new Connection();

            string userId = Session["userid"].ToString();
            string clientCodeKC = conexion.getUsersInfo("CLIENT_ID", "USER_ID", userId);

            int mesActual = DateTime.Now.Month;
            int mesHistorico = 0;
            int anioHistorico = 0;

            switch (mesActual)
            {
                case 1:
                    mesHistorico = 11;  //Mes de noviembre del año anterior
                    anioHistorico = DateTime.Now.Year - 1;
                    break;
                case 2:
                    mesHistorico = 12; //Mes de diciembre del año anterior
                    anioHistorico = DateTime.Now.Year - 1;
                    break;
                default:
                    mesHistorico = mesActual - 2; //Se calculan dos meses anterirores
                    anioHistorico = DateTime.Now.Year;
                    break;
            }

            //Se crea la fecha de inicio
            DateTime fechaHistorico = new DateTime(anioHistorico, mesHistorico, 1);

            string query = String.Format("SELECT SD.DR_ID, SD.DATE_REQUEST, R.REASON_DESCRIP,"
            + " (SELECT CF.TRADE_NAME FROM CLIENTES_FINALES AS CF WHERE CF.END_USER_ID = SD.END_USER_ID AND CF.CLIENT_ID = '{0}') AS TRADE_NAME,"
            + " S.SEGMENT_NAME, ST.STATUS_DESCRIP, SD.PROGRAMMING_DATE, SD.INVER_SOLICITADA, SD.INVER_APRO, SD.NEXT_MONTH"
            + " FROM SOLICITUD_DISPENSADORES AS SD JOIN RAZONES AS R ON SD.REASON_ID = R.ID_REASON"
            + " JOIN SEGMENTOS AS S ON SD.SEGMENT_ID = S.SEGMENT_ID JOIN STATUS_DESCRIP AS ST ON SD.STATUS_ID = ST.STATUS_ID"
            + " WHERE SD.CLIENT_ID = '{0}' AND SD.DATE_REQUEST BETWEEN '{1}' AND '{2}' ORDER BY DR_ID DESC", clientCodeKC,
            fechaHistorico.ToString("yyyMMdd"), DateTime.Now.ToString("yyyMMdd"));

            grdConsulta.DataSource = conexion.getGridDataSource(query);
        }
        protected void grdAutorizaciones_DetailTableDataBind(object source, Telerik.Web.UI.GridDetailTableDataBindEventArgs e)
        {
            try
            {
                Connection conexion = new Connection();
                GridDataItem dataitem = (GridDataItem)e.DetailTableView.ParentItem;

                switch (e.DetailTableView.Name)
                {
                    case "Solicitud":
                        {
                            string requestId = dataitem.GetDataKeyValue("DR_ID").ToString();
                            string query = String.Format("SELECT DD.DISPENSER_ID, DD.PRODUCT_ID, DD.DISPENSER_QUANTITY, DD.PRODUCT_QUANTITY, DD.APPROVAL_QTY," +
                            " SD.STATUS_DESCRIP, DD.INVERSION FROM DESCRIPCION_DISPENSADORES AS DD JOIN STATUS_DESCRIP AS SD ON DD.STATUS_ID = SD.STATUS_ID " +
                                " WHERE DR_ID = '{0}'", requestId);

                            e.DetailTableView.DataSource = conexion.getGridDataSource(query);
                            break;
                        }
                }
            }
            catch (Exception error)
            {
                radajaxmanager.ResponseScripts.Add(String.Format("errorEnvio('{0}');", error.Message));
            }
        }
        protected DataTable comboInGrid(string dispensador, string producto)
        {
            try
            {
                Connection conexion = new Connection();

                int estadoActual = Convert.ToInt32(conexion.getDetalleSol("STATUS_ID", dispensador, producto, lblNumeroSol.Text));

                string query = "SELECT STATUS_ID, STATUS_DESCRIP FROM STATUS_DESCRIP WHERE STATUS_ID BETWEEN 1 AND 3";
                DataTable temp = conexion.getGridDataSource(query);
                DataTable miDataTable = new DataTable();

                miDataTable.Columns.Add("STATUS_ID");
                miDataTable.Columns.Add("STATUS_DESCRIP");

                foreach (DataRow data in temp.Rows)
                {
                    int estado = Convert.ToInt32(data["STATUS_ID"].ToString());

                    if (estado == estadoActual)
                        miDataTable.ImportRow(data);
                }

                foreach (DataRow data in temp.Rows)
                {
                    int estado = Convert.ToInt32(data["STATUS_ID"].ToString());

                    if (estado != estadoActual)
                        miDataTable.ImportRow(data);
                }

                return miDataTable;
            }
            catch (Exception error)
            {
                radajaxmanager.ResponseScripts.Add(String.Format("errorEnvio('{0}');", error.Message));
            }

            return new DataTable();
        }
        protected void cmbSegmento_SelectedIndexChanged(object sender, RadComboBoxSelectedIndexChangedEventArgs e)
        {
            try
            {
                Connection conexion = new Connection();

                string query = String.Format("SELECT SEGMENT_ID FROM SUB_SEGMENTOS WHERE SUB_SEGMENT_ID = '{0}'", cmbSegmento.SelectedValue);
                DataTable segmento = conexion.getGridDataSource(query);

                campos.Add("SEGMENT_ID");
                valores.Add(segmento.Rows[0]["SEGMENT_ID"].ToString());

                campos.Add("SUB_SEGMENT_ID");
                valores.Add(cmbSegmento.SelectedValue);
            }
            catch (Exception error)
            {
                radajaxmanager.ResponseScripts.Add(String.Format("errorEnvio('{0}');", error.Message));
            }
        }
        protected void cmbKAM_SelectedIndexChanged(object o, RadComboBoxSelectedIndexChangedEventArgs e)
        {
            try
            {
                #region Desbloqueos y más

                if (cmbKAM.Text.Equals(String.Empty) || cmbKAM.SelectedValue.Equals(String.Empty))
                {
                    RadAjaxManager1.ResponseScripts.Add(String.Format("alert('Seleccion invalida, seleccione un KAM de la lista.');"));
                    btEditar.Enabled = false;
                    return;
                }

                btEditar.Enabled = true;
                lbxCuentasFuente.Items.Clear();
                lbxCuentasDestino.Items.Clear();

                #endregion

                valoresInicio = new List<string>();

                Connection conexion = new Connection();
                string query = String.Format("SELECT KAM_NAME, KAM_MAIL, KAM_ACTIVE, RECEIVE_MAIL FROM KAM WHERE KAM_ID = '{0}'", cmbKAM.SelectedValue);
                DataTable Kaminfo = conexion.getGridDataSource(query);

                //Carga los controles con la info del KAM devuleta por el query
                txtNombreKAM.Text = Kaminfo.Rows[0]["KAM_NAME"].ToString();
                txtCorreo.Text = Kaminfo.Rows[0]["KAM_MAIL"].ToString();
                chkHabilitarKam.Checked = Convert.ToBoolean(Kaminfo.Rows[0]["KAM_ACTIVE"].ToString());
                chkHabilitarCorreo.Checked = Convert.ToBoolean(Kaminfo.Rows[0]["RECEIVE_MAIL"].ToString());

                cargarCuentasDisponibles(conexion);

                query = String.Format("SELECT CK.CLIENT_ID, CK.CLIENT_NAME FROM CLIENTES_KC AS CK JOIN CUENTAS_KAM AS C ON CK.CLIENT_ID = C.CLIENT_ID WHERE C.KAM_ID = '{0}'",
                    cmbKAM.SelectedValue);
                Kaminfo = conexion.getGridDataSource(query);

                foreach (DataRow fila in Kaminfo.Rows)
                {
                    RadListBoxItem item = new RadListBoxItem();

                    valoresInicio.Add(fila["CLIENT_ID"].ToString());
                    item.Text = fila["CLIENT_NAME"].ToString();
                    item.Value = fila["CLIENT_ID"].ToString();

                    item.DataBind();
                    lbxCuentasDestino.Items.Add(item);
                }
            }
            catch (Exception error)
            {
                RadAjaxManager1.ResponseScripts.Add(String.Format("errorEnvio('{0}');", error.Message));
            }
        }
        private void cargarCuentasDisponibles(Connection conexion)
        {
            try
            {
                string query = String.Format("select ckc.CLIENT_ID, ckc.CLIENT_NAME from CLIENTES_KC as ckc where ckc.COUNTRY = '{0}' and ckc.DIRECT_CUSTOMER = 0 and 0 = (select COUNT(ck.KAM_ID) from CUENTAS_KAM as ck where ck.CLIENT_ID = ckc.CLIENT_ID)",
                        conexion.getUserCountry(Session.Contents["userid"].ToString()));

                DataTable resultset = conexion.getGridDataSource(query);
                foreach (DataRow fila in resultset.Rows)
                {
                    RadListBoxItem item = new RadListBoxItem();

                    item.Text = fila["CLIENT_NAME"].ToString();
                    item.Value = fila["CLIENT_ID"].ToString();

                    item.DataBind();
                    lbxCuentasFuente.Items.Add(item);
                }
            }
            catch (Exception error)
            {
                RadAjaxManager1.ResponseScripts.Add(String.Format("errorEnvio('{0}');", error.Message));
            }
        }
        protected void Page_Load(object sender, EventArgs e)
        {
            try
            {
                Menu menu = Master.FindControl("NavigationMenu") as Menu;
                menu.Items[2].ChildItems[0].ChildItems.RemoveAt(0);
                if (!IsPostBack)
                {
                    Connection conexion = new Connection();

                    if (Session.Contents["rol"].ToString().Equals("DSTADM"))
                        Response.Redirect("../Default.aspx");

                    string query = String.Format("SELECT CLIENT_ID, CLIENT_NAME FROM CLIENTES_KC WHERE COUNTRY = '{0}' AND DIRECT_CUSTOMER = 0",
                        conexion.getUserCountry(Session.Contents["userid"].ToString()));

                    DataTable clientes = conexion.getGridDataSource(query);

                    RadComboBoxItem temp = new RadComboBoxItem();
                    temp.Value = "0";
                    temp.Text = "Kimberly-Clark";

                    temp.DataBind();
                    cmbUbicacion.Items.Add(temp);

                    foreach (DataRow fila in clientes.Rows)
                    {
                        RadComboBoxItem item = new RadComboBoxItem();
                        item.Text = fila["CLIENT_ID"].ToString() + " | " + fila["CLIENT_NAME"].ToString();
                        item.Value = fila["CLIENT_ID"].ToString();

                        item.DataBind();
                        cmbUbicacion.Items.Add(item);
                    }

                    cargarRoles();
                }
            }
            catch (Exception error)
            {
                RadAjaxManager1.ResponseScripts.Add(String.Format("errorEnvio('{0}');", error.Message));
            }
        }
        protected void btCrear_Click(object sender, EventArgs e)
        {
            try
            {
                Connection conexion = new Connection();

                foreach (GridDataItem dataItem in grdDescripciones.MasterTableView.Items)
                {
                    TableCell celdaProducto = dataItem["CodigoProducto"];
                    TableCell celdaDispensador = dataItem["CodigoDispensador"];
                    string tempProducto = celdaProducto.Text;
                    string tempDispensador = celdaDispensador.Text;

                    if (cmbDispensador.SelectedValue.Equals(tempDispensador))
                    {

                        string queryProducto = String.Format("SELECT PRODUCT_ID FROM PRODUCTOS WHERE DISPENSER_ID = '{0}' AND COUNTRY_ID = '{1}'",
                            cmbDispensador.SelectedValue, conexion.getUserCountry(Session.Contents["userid"].ToString()));
                        DataTable codigosProducto = conexion.getGridDataSource(queryProducto);

                        foreach (DataRow fila in codigosProducto.Rows)
                        {
                            if (fila["PRODUCT_ID"].ToString().Equals(tempProducto))
                            {
                                radajaxmanager.ResponseScripts.Add(@"alert('Ya existe un detalle en la solicitud con estos requisitos.');");
                                return;
                            }
                        }
                    }
                }

                DataTable tabla = conexion.getGridDataSource(String.Format("SELECT DISPENSER_PRICE FROM DISPENSADOR_PAIS WHERE DISPENSER_ID = '{0}' AND COUNTRY_ID = '{1}'",
                    cmbDispensador.SelectedValue, conexion.getUserCountry(Session.Contents["userid"].ToString())));

                double precio = Convert.ToDouble(tabla.Rows[0]["DISPENSER_PRICE"].ToString());
                double inversion = precio * Convert.ToInt32(txtCantDis.Text);

                /*string query = String.Format("INSERT INTO DESCRIPCION_DISPENSADORES (DR_ID, DISPENSER_ID, PRODUCT_ID, DISPENSER_QUANTITY, PRODUCT_QUANTITY, STATUS_ID, INVERSION) VALUES " +
                    "({0}, '{1}', '{2}', {3}, {4}, 1, {5})", Convert.ToInt32(Session["solicitud"].ToString()), cmbDispensador.SelectedValue, cmbProducto.SelectedValue, Convert.ToInt32(txtCantDis.Text),
                    Convert.ToInt32(txtProducto.Text), inversion);

                string estadoActual = conexion.getSolicitudInfo("STATUS_ID", Session["solicitud"].ToString());

                //Se usa dispenser general ya que acepta un string como query se agrega el nuevo dispensador
                if (conexion.setDispenserGeneral(query))
                    RadAjaxManager1.ResponseScripts.Add(@"alert('Ingresado con exito.');");
                else
                    RadAjaxManager1.ResponseScripts.Add(@"alert('Error al insertar contactese con el administrador.');");

                //Recalcula la inversion despues de la inserccion
                recalcularInversion();

                query = String.Format("UPDATE SOLICITUD_DISPENSADORES SET STATUS_ID = 5 WHERE DR_ID = '{0}'", Session.Contents["solicitud"].ToString());

                if (estadoActual.Equals("1"))
                    if (conexion.Actualizar(query))
                        lblDescripcionEstado.Text = conexion.getStatusDescripInfo("STATUS_DESCRIP", "STATUS_ID", "5");

                cmbDispensador.Items.Clear();
                cmbProducto.Items.Clear();
                txtCantDis.Value = 0;
                txtProducto.Value = 0;

                mostrarOcultar(false);
                btNuevo.Visible = true;
                pnlDescripcionSol.Visible = true;
                btAprobar.Visible = true;
                btRechazar.Visible = true;
                btGuardar.Visible = true;
                btCerrarCita.Visible = true;

                grdDescripciones.Rebind();*/
            }
            catch (Exception error)
            {
                radajaxmanager.ResponseScripts.Add(String.Format("errorEnvio('{0}');", error.Message));
            }
        }
        protected void grdDispensadoresProducto_NeedDataSource(object source, GridNeedDataSourceEventArgs e)
        {
            try
            {
                Connection conexion = new Connection();

                string idpais = conexion.getUserCountry(Session["userid"].ToString());

                string query = String.Format("SELECT D.ID_DISPENSER, D.DESCRIPTION, D.DISPENSER_FACE, D.DISPENSER_TYPE, DP.DISPENSER_PRICE FROM DISPENSADORES AS D " +
                    "JOIN DISPENSADOR_PAIS AS DP ON D.ID_DISPENSER = DP.DISPENSER_ID WHERE DP.DISPENSER_STATUS = 'TRUE' AND DP.COUNTRY_ID = '{0}'", idpais);
                grdDispensadoresProducto.DataSource = conexion.getGridDataSource(query);
            }
            catch (Exception error)
            {
                radajaxmanager.ResponseScripts.Add(String.Format("errorEnvio('{0}');", error.Message));
            }
        }
        protected DataTable funcion(string idDispensador)
        {
            try
            {
                Connection conexion = new Connection();

                string idpais = conexion.getUserCountry(Session["userid"].ToString());
                string query = String.Format("SELECT PRODUCT_ID, PRODUCT_DESCRIP FROM PRODUCTOS WHERE DISPENSER_ID = '{0}' AND COUNTRY_ID = '{1}'", idDispensador, idpais);
                return conexion.getGridDataSource(query);
            }
            catch (Exception error)
            {
                radajaxmanager.ResponseScripts.Add(String.Format("errorEnvio('{0}');", error.Message));
            }

            return new DataTable();
        }
        protected void btEnviar_Click(object sender, EventArgs e)
        {
            try
            {
                //En el caso de que falle con javascript
                if (!CustomValidator1.IsValid || !CustomValidator2.IsValid || !CustomValidator3.IsValid || !CustomValidator4.IsValid || !CustomValidator5.IsValid
                    || !CustomValidator6.IsValid || !CustomValidator7.IsValid)
                {
                    radajaxmanager.ResponseScripts.Add(@"alert('Existen conflictos en campos requeridos favor verifique.');");
                    return;
                }

                Connection conexion = new Connection();
                string clientid = conexion.getUsersInfo("CLIENT_ID", "USER_ID", Session["userid"].ToString());
                bool paraSiguienteMes = false;
                bool esEditable = true;

                int inconsistencias = 0;

                #region Recuperacion de data del grid
                foreach (GridDataItem dataItem in grdDispensadoresProducto.MasterTableView.Items)
                {
                    if ((dataItem.FindControl("txtCantidadDispensadores") as RadNumericTextBox).Text.Equals(String.Empty))
                        (dataItem.FindControl("txtCantidadDispensadores") as RadNumericTextBox).Text = "0";

                    if ((dataItem.FindControl("txtCantidadProducto") as RadNumericTextBox).Text.Equals(String.Empty))
                        (dataItem.FindControl("txtCantidadProducto") as RadNumericTextBox).Text = "0";

                    if (((dataItem.FindControl("txtCantidadDispensadores") as RadNumericTextBox).Text != "0" && (dataItem.FindControl("txtCantidadDispensadores") as RadNumericTextBox).Text != String.Empty)
                        && ((dataItem.FindControl("txtCantidadProducto") as RadNumericTextBox).Text != "0" && (dataItem.FindControl("txtCantidadProducto") as RadNumericTextBox).Text != String.Empty))
                    {
                        string temporal = String.Empty;
                        string temporal1 = String.Empty;

                        TableCell celda = dataItem["Codigo"];
                        TableCell celdaPrecio = dataItem["dispenserPrice"];
                        temporal = celda.Text;
                        codigoDispensadores.Add(temporal);

                        temporal1 = (dataItem.FindControl("cmbProducto") as RadComboBox).SelectedValue;
                        codigoProducto.Add(temporal1);

                        int dispensadores = Convert.ToInt32((dataItem.FindControl("txtCantidadDispensadores") as RadNumericTextBox).Text);
                        int productos = Convert.ToInt32((dataItem.FindControl("txtCantidadProducto") as RadNumericTextBox).Text);
                        double valorDetalle = Convert.ToDouble(celdaPrecio.Text.Substring(1)) * dispensadores;

                        cantidadDispensadores.Add(dispensadores);
                        cantidadProductos.Add(productos);
                        costoDetalle.Add(valorDetalle);
                    }
                    else
                    {
                        if (((dataItem.FindControl("txtCantidadDispensadores") as RadNumericTextBox).Text != "0" && (dataItem.FindControl("txtCantidadProducto") as RadNumericTextBox).Text == "0")
                            || ((dataItem.FindControl("txtCantidadDispensadores") as RadNumericTextBox).Text == "0" && (dataItem.FindControl("txtCantidadProducto") as RadNumericTextBox).Text != "0"))
                            inconsistencias++;

                    }
                }
                #endregion

                if (inconsistencias > 0)
                {
                    codigoDispensadores.Clear();
                    codigoProducto.Clear();
                    cantidadDispensadores.Clear();
                    cantidadProductos.Clear();
                    costoDetalle.Clear();

                    radajaxmanager.ResponseScripts.Add(String.Format(@"alert('Se han encontrado {0} inconsistencias favor revise la tabla de dispensadores y productos.');", inconsistencias));

                    return;
                }

                //Validacion de la cantidad de dispensadores
                if (cantidadDispensadores.Count == 0)
                {
                    codigoDispensadores.Clear();
                    codigoProducto.Clear();
                    cantidadDispensadores.Clear();
                    cantidadProductos.Clear();
                    costoDetalle.Clear();

                    radajaxmanager.ResponseScripts.Add(@"alert('No se han contabilizado productos.');");

                    return;
                }

                #region Datos y proceso necesario para el query
                DateTime hoy = DateTime.Now;
                Session.Add("fechasolicitud", hoy.ToString("yyyMMdd"));

                DateTime fechaRequerida = DateTime.Parse(Convert.ToString(dpFechaSolicitada.SelectedDate));
                Session.Add("fecharequerida", fechaRequerida.ToString("yyyMMdd"));

                string query = String.Empty;
                string idpais = conexion.getUserCountry(Session["userid"].ToString());

                //Sumo todos los detalles para conseguir el costo de toda la solicitud
                double valorDetalle2 = 0;
                for (int i = 0; i < costoDetalle.Count; i++)
                    valorDetalle2 += costoDetalle[i];

                if ((valorDetalle2 + Convert.ToDouble(Session.Contents["pendiente"].ToString()) + Convert.ToDouble(Session.Contents["aprobado"].ToString()))
                    > Convert.ToDouble(Session.Contents["presupuesto"].ToString()))
                {
                    paraSiguienteMes = true;
                    esEditable = false;
                }

                verificarUpdates();

                string queryTemp = String.Format("SELECT SEGMENT_ID FROM SUB_SEGMENTOS WHERE SUB_SEGMENT_ID = '{0}'", cmbSubSegmento.SelectedValue);
                DataTable tablaTemp = conexion.getGridDataSource(queryTemp);

                //Verifica que el codigo postal no se guarde con valor vacio
                string codigoPostal = "N/A";
                if (!txtCodigoPostal.Text.Equals(String.Empty))
                    codigoPostal = txtCodigoPostal.Text;

                //si la extension esta vacio se coloca el 0
                if (txtExtension.Text.Equals(String.Empty))
                    txtExtension.Text = "0";

                #region Validacion de datos adicionales del cliente
                if (txtCantidadEmpleados.Text.Equals(String.Empty))
                    txtCantidadEmpleados.Text = "0";

                if (txtCantidadVisitantes.Text.Equals(String.Empty))
                    txtCantidadVisitantes.Text = "0";

                if (txtCantidadVisitantes.Text.Equals(String.Empty))
                    txtCantidadVisitantes.Text = "0";

                if (txtBañoHombre.Text.Equals(String.Empty))
                    txtBañoHombre.Text = "0";

                if (txtBañoMujer.Text.Equals(String.Empty))
                    txtBañoMujer.Text = "0";
                #endregion

                query = "INSERT INTO SOLICITUD_DISPENSADORES (DATE_REQUEST, ID_COUNTRY, REASON_ID, INSTALL_DATE, CLIENT_ID, SALES_ID, COMMENTS, END_USER_ID, SEGMENT_ID, SUB_SEGMENT_ID, ADDRESS, NEIGHBORHOOD, CITY, "
                + "STATE, POSTAL_CODE, CONTACT_TELEPHONE, CONTACT_NAME, CONTACT_EMAIL, CONTACT_POSITION, ID_PAYMENT_CONDITION, PURCHASE_FREQUENCY, MAINTENANCE_FREQUENCY, "
                + "STRATEGIC_CUSTOMER, TRAFFIC_TYPE, TERTIARY_CLEANING, EMPLOYEES, VISITORS, WASHBASIN, MALE_BATHROOM, FEMALE_BATHROOM, STATUS_ID, INVER_SOLICITADA, "
                + "NEXT_MONTH, IS_EDITABLE, CONTACT_EXT, CONTACT_SURNAME) VALUES ('" + hoy.ToString("yyyMMdd") + "', '" + idpais + "', '" + cmbMotivos.SelectedValue + "', '"
                + fechaRequerida.ToString("yyyMMdd") + "', '" + clientid + "', '" + cmbVendedor.SelectedValue + "', '" + txtComentarios.Text + "', '" +
                cmbNombreComercial.SelectedValue + "', '" + tablaTemp.Rows[0]["SEGMENT_ID"].ToString() + "', '" + cmbSubSegmento.SelectedValue + "', '" + txtDireccion.Text + "', '" +
                txtBarrio.Text + "', '" + cmbCiudad.SelectedValue + "', '" + cmbCiudad.Text + "', '" + codigoPostal + "', '" +
                txtTelefono.Text + "', '" + txtPersonaContacto.Text + "', '" + txtCorreoContacto.Text + "', '" + txtPosicion.Text + "', '" +
                cmbCondicionPago.SelectedValue + "', '" + cmbFrecuenciaCompra.SelectedValue + "', '" + cmbFrecuenciaMantenimiento.SelectedValue + "', '" +
                cmbClienteEstrategico.SelectedValue + "', '" + cmbTipoTrafico.SelectedValue + "', '" + cmbLimpiezaTercerizada.SelectedValue + "', " +
                Convert.ToInt32(txtCantidadEmpleados.Text) + ", " + Convert.ToInt32(txtCantidadVisitantes.Text) + ", " + Convert.ToInt32(txtCantidadLavatorios.Text) + ", " +
                Convert.ToInt32(txtBañoHombre.Text) + ", " + Convert.ToInt32(txtBañoMujer.Text) + ", 1, " + valorDetalle2 + ", '" + paraSiguienteMes + "', '" +
                esEditable + "', '" + txtExtension.Text + "', '" + txtApellido.Text + "')";
                #endregion

                #region Inserccion
                string dispenserId = String.Empty;

                //Lista para el correo
                List<string> datosGenerales = new List<string>();

                if (conexion.setDispenserGeneral(query))
                {
                    string codigoCliente = conexion.getClientKCInfo("SUBSIDIARY_ID", "CLIENT_ID", clientid);
                    dispenserId = conexion.getdispenserReqId(hoy.ToString("yyyMMdd"), codigoCliente);

                    if (conexion.setDescripcionDis(dispenserId, codigoDispensadores, codigoProducto, cantidadDispensadores, cantidadProductos, costoDetalle))
                    {
                        //valorDetalle2 += Convert.ToDouble(Session.Contents["pendiente"].ToString());

                        string query2 = String.Format("UPDATE CLIENTES_KC SET INVERSION_FLOTANTE = (INVERSION_FLOTANTE + {0}) WHERE CLIENT_ID = '{1}'", valorDetalle2, clientid);
                        conexion.updateClientesFinales(query2);

                        btEnviar.Visible = false;
                        grdDispensadoresProducto.Visible = false;

                        main.Visible = false;
                        string nombrecliente = conexion.getClientKCInfo("CLIENT_NAME", "CLIENT_ID", clientid);

                        //Para el correo electronico
                        datosGenerales.Add(nombrecliente);//Indice 0
                        datosGenerales.Add(txtNombreComercial.Text); //Indice 1
                        datosGenerales.Add(conexion.getUsersInfo("USER_NAME", "USER_ID", Session.Contents["userid"].ToString()));//indice 2
                        datosGenerales.Add(hoy.ToString("dd/MM/yyy"));//indice 3
                        datosGenerales.Add(fechaRequerida.ToString("dd/MM/yyy"));//indice 4
                        datosGenerales.Add(cmbMotivos.Text);//indice 5
                        datosGenerales.Add(txtDireccion.Text);//indice 6
                        datosGenerales.Add(String.Format("{0} {1}", txtPersonaContacto.Text, txtApellido.Text));//inidice 7
                        datosGenerales.Add(txtTelefonoContacto.Text);//incice 8
                        datosGenerales.Add(txtExtension.Text);//indice 9
                        datosGenerales.Add(txtComentarios.Text);//indice 10

                        if (conexion.enviarEmail(datosGenerales, codigoDispensadores, codigoProducto, cantidadDispensadores, cantidadProductos, idpais,
                            clientid, paraSiguienteMes))
                        {
                            datosGenerales.Clear();
                            codigoDispensadores.Clear();
                            codigoProducto.Clear();
                            cantidadDispensadores.Clear();
                            cantidadProductos.Clear();
                            costoDetalle.Clear();
                            datos.Clear();
                            campos.Clear();

                            if (!paraSiguienteMes)
                                radajaxmanager.ResponseScripts.Add(String.Format("alerta('{0}');", valorDetalle2));
                            else
                                radajaxmanager.ResponseScripts.Add(String.Format("alerta2('{0}');", valorDetalle2));
                        }
                        else
                        {
                            datosGenerales.Clear();
                            codigoDispensadores.Clear();
                            codigoProducto.Clear();
                            cantidadDispensadores.Clear();
                            cantidadProductos.Clear();
                            costoDetalle.Clear();
                            datos.Clear();
                            campos.Clear();
                            if (!paraSiguienteMes)
                                radajaxmanager.ResponseScripts.Add(String.Format("errorEnvio(\"La solicitud fue creada costo total ${0}, sin aviso por correo.\");", valorDetalle2));
                            else
                                radajaxmanager.ResponseScripts.Add(String.Format("errorEnvio(\"La solicitud fue creada costo total ${0} y movida al siguiente mes presupuesto excedido, sin aviso por correo.\");", valorDetalle2));
                        }
                    }
                    else
                    {

                        string queryError = String.Format("DELETE SOLICITUD_DISPENSADORES WHERE DR_ID = '{0}'", dispenserId);
                        conexion.setDispenserGeneral(queryError);

                        codigoDispensadores.Clear();
                        codigoProducto.Clear();
                        cantidadDispensadores.Clear();
                        cantidadProductos.Clear();
                        costoDetalle.Clear();
                        datosGenerales.Clear();
                        datos.Clear();
                        campos.Clear();
                        radajaxmanager.ResponseScripts.Add(@"alert('Error al guardar la Descripcion de solicitud intentelo mas tarde.');");

                        return;
                    }

                }
                else
                {
                    codigoDispensadores.Clear();
                    codigoProducto.Clear();
                    cantidadDispensadores.Clear();
                    cantidadProductos.Clear();
                    costoDetalle.Clear();
                    datosGenerales.Clear();
                    datos.Clear();
                    campos.Clear();
                    radajaxmanager.ResponseScripts.Add(@"alert('Error al guardar la solicitud intentelo mas tarde.');");

                    return;
                }

                #endregion
            }
            catch (Exception error)
            {
                radajaxmanager.ResponseScripts.Add(String.Format("errorEnvio('{0}');", error.Message));
            }
        }
        protected void cargarData(string codigo)
        {
            try
            {
                Connection conexion = new Connection();
                string listasDesplegables = String.Empty;
                string clientid = conexion.getUsersInfo("CLIENT_ID", "USER_ID", Session.Contents["userid"].ToString());
                string query = String.Format("SELECT * FROM CLIENTES_FINALES WHERE END_USER_ID = '{0}' AND CLIENT_ID = '{1}'"
                    , codigo, clientid);

                DataTable clientesFinales = conexion.getGridDataSource(query);

                string clienteEscogido = clientesFinales.Rows[0]["END_USER_ID"].ToString() + " | " + clientesFinales.Rows[0]["TRADE_NAME"].ToString();

                txtNombreComercial.Text = clientesFinales.Rows[0]["TRADE_NAME"].ToString();

                txtRazonSocial.Text = clientesFinales.Rows[0]["SOCIAL_REASON"].ToString();
                if (txtRazonSocial.Text.Equals("N/A"))
                    txtRazonSocial.Text = String.Empty;

                txtCedulaJuridica.Text = clientesFinales.Rows[0]["CORPORATE_ID"].ToString();
                if (txtCedulaJuridica.Text.Equals("N/A"))
                    txtCedulaJuridica.Text = String.Empty;

                txtDireccion.Text = clientesFinales.Rows[0]["ADDRESS"].ToString();
                if (txtDireccion.Text.Equals("N/A"))
                    txtDireccion.Text = String.Empty;

                txtBarrio.Text = clientesFinales.Rows[0]["NEIGHBOR"].ToString();
                if (txtBarrio.Text.Equals("N/A"))
                    txtBarrio.Text = String.Empty;

                txtCodigoPostal.Text = clientesFinales.Rows[0]["POSTAL_CODE"].ToString();
                if (txtCodigoPostal.Text.Equals("N/A"))
                    txtCodigoPostal.Text = String.Empty;

                txtTelefono.Text = clientesFinales.Rows[0]["TELEPHONE"].ToString();

                txtEMail.Text = clientesFinales.Rows[0]["E_MAIL"].ToString();
                if (txtEMail.Text.Equals("N/A"))
                    txtEMail.Text = String.Empty;

                txtCantidadEmpleados.Text = clientesFinales.Rows[0]["EMPLOYEES"].ToString();
                txtCantidadVisitantes.Text = clientesFinales.Rows[0]["VISITORS"].ToString();
                txtCantidadLavatorios.Text = clientesFinales.Rows[0]["WASHBASIN"].ToString();
                txtBañoHombre.Text = clientesFinales.Rows[0]["MALE_BATH"].ToString();
                txtBañoMujer.Text = clientesFinales.Rows[0]["FEMALE_BATH"].ToString();

                txtPersonaContacto.Text = clientesFinales.Rows[0]["CONTACT_PERSON"].ToString();
                if (txtPersonaContacto.Text.Equals("N/A"))
                    txtPersonaContacto.Text = String.Empty;

                txtApellido.Text = clientesFinales.Rows[0]["CONTACT_SURNAME"].ToString();
                if (txtApellido.Text.Equals("N/A"))
                    txtApellido.Text = String.Empty;

                txtTelefonoContacto.Text = clientesFinales.Rows[0]["CONTACT_TELEPHONE"].ToString();
                if (txtTelefonoContacto.Text.Equals("N/A"))
                    txtTelefonoContacto.Text = String.Empty;

                txtExtension.Text = clientesFinales.Rows[0]["CONTACT_EXT"].ToString();

                txtCorreoContacto.Text = clientesFinales.Rows[0]["CONTACT_MAIL"].ToString();
                if (txtCorreoContacto.Text.Equals("N/A"))
                    txtCorreoContacto.Text = String.Empty;

                txtPosicion.Text = clientesFinales.Rows[0]["CONTACT_POSITION"].ToString();
                if (txtPosicion.Text.Equals("N/A"))
                    txtPosicion.Text = String.Empty;

                listasDesplegables = clientesFinales.Rows[0]["SELLER_ID"].ToString();
                if(!listasDesplegables.Equals("N/A"))
                    cmbVendedor.FindItemByValue(listasDesplegables, true).Selected = true;

                listasDesplegables = clientesFinales.Rows[0]["SUB_SEGMENT_ID"].ToString();
                if (!listasDesplegables.Equals("0"))
                    cmbSubSegmento.FindItemByValue(listasDesplegables, false).Selected = true;
                else
                {
                    cmbSubSegmento.Text = String.Empty;
                    cmbSubSegmento.ClearSelection();
                }

                listasDesplegables = clientesFinales.Rows[0]["CITY"].ToString();
                if (!listasDesplegables.Equals("N/A"))
                    cmbCiudad.FindItemByValue(listasDesplegables, true).Selected = true;
                else
                {
                    cmbCiudad.Text = String.Empty;
                    cmbCiudad.ClearSelection();
                }

                listasDesplegables = clientesFinales.Rows[0]["ID_PAYMENT_CONDITION"].ToString();
                cmbCondicionPago.FindItemByValue(listasDesplegables, true).Selected = true;

                listasDesplegables = clientesFinales.Rows[0]["PURCHASE_FREQUENCY"].ToString();
                cmbFrecuenciaCompra.FindItemByText(listasDesplegables, true).Selected = true;

                listasDesplegables = clientesFinales.Rows[0]["MAINTENANCE_FREQUENCY"].ToString();
                cmbFrecuenciaMantenimiento.FindItemByValue(listasDesplegables, true).Selected = true;

                listasDesplegables = clientesFinales.Rows[0]["STRATEGIC_CUSTOMER"].ToString();
                cmbClienteEstrategico.FindItemByValue(listasDesplegables, true).Selected = true;

                listasDesplegables = clientesFinales.Rows[0]["TRAFFIC_TYPE"].ToString();
                cmbTipoTrafico.FindItemByText(listasDesplegables, true).Selected = true;

                listasDesplegables = clientesFinales.Rows[0]["TERTIARY_CLEANING"].ToString();
                cmbLimpiezaTercerizada.FindItemByValue(listasDesplegables, true).Selected = true;

                grdDispensadoresProducto.Enabled = true;
                btEnviar.Enabled = true;
            }
            catch (Exception error)
            {
                radajaxmanager.ResponseScripts.Add(String.Format("errorEnvio('{0}');", error.Message));
            }
        }
        private void crearUsuarioDst()
        {
            try
            {
                Connection conexion = new Connection();
                string usuario = String.Empty;
                string alias = conexion.getClientKCInfo("ALIAS", "CLIENT_ID", cmbUbicacion.SelectedValue);
                int correlativo = 0;

                DataTable resultSet = conexion.getGridDataSource(String.Format("SELECT USER_ID FROM USUARIOS WHERE CLIENT_ID = '{0}'", cmbUbicacion.SelectedValue));

                if (resultSet.Rows.Count > 0)
                    foreach (DataRow fila in resultSet.Rows)
                        correlativo = Convert.ToInt32(fila["USER_ID"].ToString().Substring(alias.Length, 1));

                usuario = alias + Convert.ToString(++correlativo);
                if (usuario.Length > 30)
                {
                    RadAjaxManager1.ResponseScripts.Add(String.Format("alert('Se ha llegado al limite de usuarios para este ditribuidor.');"));
                    return;
                }

                txtCodigo.Enabled = false;
                txtCodigo.Text = usuario;
            }
            catch (Exception error)
            {
                RadAjaxManager1.ResponseScripts.Add(String.Format("errorEnvio('{0}');", error.Message));
            }
        }
        private void cargarRoles()
        {
            try
            {
                Connection conexion = new Connection();

                string query = String.Format("SELECT * FROM ROLES WHERE ID_ROL <> 'DSTADM' ORDER BY ID_ROL DESC");
                DataTable resultSet = conexion.getGridDataSource(query);

                foreach (DataRow fila in resultSet.Rows)
                {
                    RadComboBoxItem item = new RadComboBoxItem();
                    item.Value = fila["ID_ROL"].ToString();
                    item.Text = fila["NOMBRE_ROL"].ToString();

                    cmbRol.Items.Add(item);
                }
            }
            catch (Exception error)
            {
                RadAjaxManager1.ResponseScripts.Add(String.Format("errorEnvio('{0}');", error.Message));
            }
        }
        protected void btProcesar_Click(object sender, EventArgs e)
        {
            try
            {
                Connection conexion = new Connection();
                string query = String.Empty;
                string password = String.Empty;

                Random random = new Random(DateTime.Now.Millisecond);

                for (int i = 0; i < 5; i++)
                    password += (char)random.Next(97, 123);

                for (int j = 0; j < 5; j++)
                    password += Convert.ToString(random.Next(0, 9));

                if (cmbUbicacion.SelectedValue.Equals("0"))
                {
                    query = String.Format("SELECT USER_ID FROM USUARIOS WHERE ID_COUNTRY = '{0}' AND CLIENT_ID IS NULL",
                        conexion.getUserCountry(Session.Contents["userid"].ToString()));

                    DataTable usuariosExistentes = conexion.getGridDataSource(query);
                    foreach (DataRow fila in usuariosExistentes.Rows)
                    {
                        if (fila["USER_ID"].ToString().Equals(txtCodigo.Text.ToUpper()))
                        {
                            RadAjaxManager1.ResponseScripts.Add(String.Format("alert('El codigo ya existe.');"));
                            return;
                        }
                    }

                    query = String.Format("SELECT KAM_ID FROM KAM WHERE COUNTRY = '{0}' AND KAM_ACTIVE = 1", conexion.getUserCountry(Session.Contents["userid"].ToString()));
                    usuariosExistentes = conexion.getGridDataSource(query);

                    foreach (DataRow fila in usuariosExistentes.Rows)
                    {
                        if (fila["KAM_ID"].ToString().Equals(txtCodigo.Text.ToUpper()))
                        {
                            RadAjaxManager1.ResponseScripts.Add(String.Format("alert('El codigo ya existe para un KAM.');"));
                            return;
                        }
                    }

                    query = String.Format("INSERT INTO USUARIOS (USER_ID, USER_NAME, PASSWORD, P_EXPIRATION, ID_ROL, LOGIN_ID, STATUS, ID_COUNTRY, E_MAIL) "
                    + "VALUES ('{0}', '{1}', '{2}', '{3}', '{4}', '{5}', 1, '{6}', '{7}')"
                    , txtCodigo.Text, txtUsuario.Text, password, DateTime.Now.AddMonths(1).ToString("yyyMMdd"), cmbRol.SelectedValue, txtCodigo.Text,
                    conexion.getUserCountry(Session.Contents["userid"].ToString()), txtCorreo.Text);
                }
                else
                    query = String.Format("INSERT INTO USUARIOS (USER_ID, USER_NAME, PASSWORD, P_EXPIRATION, ID_ROL, LOGIN_ID, STATUS, ID_COUNTRY, E_MAIL, CLIENT_ID) "
                    + "VALUES ('{0}', '{1}', '{2}', '{3}', 'DSTADM', '{4}', 1, '{5}', '{6}', '{7}')", txtCodigo.Text, txtUsuario.Text, password,
                    DateTime.Now.AddMonths(1).ToString("yyyMMdd"), txtCodigo.Text, conexion.getUserCountry(Session.Contents["userid"].ToString()),
                    txtCorreo.Text, cmbUbicacion.SelectedValue);

                List<string> datos = new List<string>();
                datos.Add(cmbUbicacion.SelectedValue);
                datos.Add(txtCodigo.Text);
                datos.Add(txtUsuario.Text);
                datos.Add(password);
                datos.Add(txtCorreo.Text);

                if (conexion.Actualizar(query))
                    if(conexion.notificacionNuevoUsuario(datos))
                        RadAjaxManager1.ResponseScripts.Add(String.Format("exitoNuevoUsuario(1);"));
                    else
                        RadAjaxManager1.ResponseScripts.Add(String.Format("exitoNuevoUsuario(0);"));
                else
                    RadAjaxManager1.ResponseScripts.Add(String.Format("alert('Error inesperado de conexion, intentelo mas tarde');"));
            }
            catch (Exception error)
            {
                RadAjaxManager1.ResponseScripts.Add(String.Format("errorEnvio('{0}');", error.Message));
            }
        }
        protected void grdAutorizaciones_NeedDataSource(object source, Telerik.Web.UI.GridNeedDataSourceEventArgs e)
        {
            try
            {
                Connection conexion = new Connection();

                string userId = Session["userid"].ToString();
                string Pais = conexion.getUsersInfo("ID_COUNTRY", "USER_ID", userId);

                int mesActual = DateTime.Now.Month;
                int mesHistorico = 0;
                int anioHistorico = 0;

                switch (mesActual)
                {
                    case 1:
                        mesHistorico = 11;  //Mes de noviembre del año anterior
                        anioHistorico = DateTime.Now.Year - 1;
                        break;
                    case 2:
                        mesHistorico = 12; //Mes de diciembre del año anterior
                        anioHistorico = DateTime.Now.Year - 1;
                        break;
                    default:
                        mesHistorico = mesActual - 2; //Se calculan dos meses anterirores
                        anioHistorico = DateTime.Now.Year;
                        break;
                }

                DateTime fechaHistorico = new DateTime(anioHistorico, mesHistorico, 1);

                string query = String.Format("SELECT SD.DR_ID, SD.DATE_REQUEST, R.REASON_DESCRIP, SD.INSTALL_DATE, SD.CLIENT_ID, CKC.CLIENT_NAME," +
                        " (SELECT CF.TRADE_NAME FROM CLIENTES_FINALES AS CF WHERE CF.END_USER_ID = SD.END_USER_ID AND CF.CLIENT_ID = SD.CLIENT_ID) AS TRADE_NAME, " +
                        " S.SEGMENT_NAME, ST.STATUS_DESCRIP, SD.COMMENTS, SD.PROGRAMMING_DATE, SD.NEXT_MONTH, SD.INVER_SOLICITADA, SD.INVER_APRO " +
                        " FROM SOLICITUD_DISPENSADORES AS SD JOIN RAZONES AS R ON SD.REASON_ID = R.ID_REASON" +
                        " JOIN SEGMENTOS AS S ON SD.SEGMENT_ID = S.SEGMENT_ID JOIN STATUS_DESCRIP AS ST ON SD.STATUS_ID = ST.STATUS_ID " +
                        " JOIN CLIENTES_KC AS CKC ON SD.CLIENT_ID = CKC.CLIENT_ID WHERE SD.ID_COUNTRY = '{0}' AND SD.DATE_REQUEST BETWEEN '{1}' AND '{2}' ORDER BY SD.DR_ID DESC",
                        Pais, fechaHistorico.ToString("yyyMMdd"), DateTime.Now.ToString("yyyMMdd"));

                grdAutorizaciones.DataSource = conexion.getGridDataSource(query);
            }
            catch (Exception error)
            {
                radajaxmanager.ResponseScripts.Add(String.Format("errorEnvio('{0}');", error.Message));
            }
        }
        protected void grdDescripciones_NeedDataSource(object sender, GridNeedDataSourceEventArgs e)
        {
            try
            {
                Connection conexion = new Connection();

                string query = String.Format("SELECT DD.PRODUCT_ID, DD.PRODUCT_QUANTITY, DD.DISPENSER_ID, D.DESCRIPTION, DD.DISPENSER_QUANTITY, DD.INVERSION, " +
                    "(SELECT DP.DISPENSER_PRICE FROM DISPENSADOR_PAIS AS DP WHERE DP.DISPENSER_ID = DD.DISPENSER_ID AND DP.COUNTRY_ID = '{0}') AS UNIDAD "
                + "FROM DESCRIPCION_DISPENSADORES AS DD JOIN DISPENSADORES AS D ON D.ID_DISPENSER = DD.DISPENSER_ID WHERE DD.DR_ID = {1}",
                conexion.getUsersInfo("ID_COUNTRY", "USER_ID", Session.Contents["userid"].ToString()), lblNumeroSol.Text);
                grdDescripciones.DataSource = conexion.getGridDataSource(query);
            }
            catch (Exception error)
            {
                radajaxmanager.ResponseScripts.Add(String.Format("errorEnvio('{0}');", error.Message));
            }
        }
        protected void Page_Load(object sender, EventArgs e)
        {
            try
            {
                Menu menu = Master.FindControl("NavigationMenu") as Menu;
                menu.Items[2].ChildItems[1].ChildItems.RemoveAt(1);

                if (!IsPostBack)
                {
                    if (Session.Contents["rol"].ToString().Equals("DSTADM"))
                        Response.Redirect("../Default.aspx");

                    Connection conexion = new Connection();
                    string query = String.Format("SELECT K.KAM_ID, K.KAM_NAME FROM KAM AS K WHERE K.COUNTRY = '{0}' AND 0 = (SELECT COUNT(U.USER_ID) FROM USUARIOS AS U WHERE U.USER_ID = K.KAM_ID AND U.STATUS = 1)"
                        , conexion.getUserCountry(Session.Contents["userid"].ToString()));

                    DataTable resultset = conexion.getGridDataSource(query);
                    foreach (DataRow fila in resultset.Rows)
                    {
                        RadComboBoxItem item = new RadComboBoxItem();

                        item.Text = fila["KAM_NAME"].ToString();
                        item.Value = fila["KAM_ID"].ToString();

                        item.DataBind();
                        cmbKAM.Items.Add(item);
                    }

                    cargarCuentasDisponibles(conexion);
                }
            }
            catch (Exception error)
            {
                RadAjaxManager1.ResponseScripts.Add(String.Format("errorEnvio('{0}');", error.Message));
            }
        }
        private void cargarData()
        {
            try
            {
                Connection conexion = new Connection();

                string query = String.Format("SELECT R.REASON_DESCRIP, CF.TRADE_NAME, CF.SOCIAL_REASON, CF.CORPORATE_ID, CF.TELEPHONE, " +
                    "SD.INSTALL_DATE, SD.ADDRESS, SD.CONTACT_NAME, SD.CONTACT_TELEPHONE, SD.COMMENTS, SD.STATUS_ID, SD.SUB_SEGMENT_ID, SD.CITY " +
                    "FROM SOLICITUD_DISPENSADORES AS SD JOIN RAZONES AS R ON SD.REASON_ID = R.ID_REASON " +
                    "JOIN CLIENTES_FINALES AS CF ON SD.END_USER_ID = CF.END_USER_ID AND SD.CLIENT_ID = CF.CLIENT_ID WHERE SD.DR_ID = '{0}'", lblNumeroSol.Text);

                DataTable solcitud = conexion.getGridDataSource(query);

                //Las solicitudes son autoincrementables asi que no creo que se vengan solicitudes con mismo codigo :s
                foreach (DataRow fila in solcitud.Rows)
                {
                    lblDescripcionMotivo.Text = fila["REASON_DESCRIP"].ToString();
                    txtNombreComercial.Text = (!fila["TRADE_NAME"].ToString().Equals("N/A")) ? fila["TRADE_NAME"].ToString() : String.Empty;
                    txtRazonSocial.Text = (!fila["SOCIAL_REASON"].ToString().Equals("N/A")) ? fila["SOCIAL_REASON"].ToString() : String.Empty;
                    txtCedulaJuridica.Text = (!fila["CORPORATE_ID"].ToString().Equals("N/A")) ? fila["CORPORATE_ID"].ToString() : String.Empty;
                    txtTelefono.Text = (!fila["TELEPHONE"].ToString().Equals("N/A")) ? fila["TELEPHONE"].ToString() : String.Empty;
                    txtFechaSol.SelectedDate = DateTime.Parse(fila["INSTALL_DATE"].ToString());
                    txtDireccion.Text = (!fila["ADDRESS"].ToString().Equals("N/A")) ? fila["ADDRESS"].ToString() : String.Empty;
                    txtPersonaContacto.Text = (!fila["CONTACT_NAME"].ToString().Equals("N/A")) ? fila["CONTACT_NAME"].ToString() : String.Empty;
                    txtTelefonoContacto.Text = (!fila["CONTACT_TELEPHONE"].ToString().Equals("N/A")) ? fila["CONTACT_TELEPHONE"].ToString() : String.Empty;
                    lblDescripcionComentarios.Text = (!fila["COMMENTS"].ToString().Equals("N/A")) ? fila["COMMENTS"].ToString() : String.Empty;

                    if (!fila["SUB_SEGMENT_ID"].ToString().Equals("0"))
                        cmbSegmento.FindItemByValue(fila["SUB_SEGMENT_ID"].ToString(), false).Selected = true;
                    else
                    {
                        cmbSegmento.Text = String.Empty;
                        cmbSegmento.ClearSelection();
                    }

                    if(!fila[""].ToString().Equals(""))
                }
            }
            catch (Exception error)
            {
                radajaxmanager.ResponseScripts.Add(String.Format("errorEnvio('{0}');", error.Message));
            }
        }
        protected void Page_Load(object sender, EventArgs e)
        {
            try
            {
                Connection conexion = new Connection();

                DateTime hoy = DateTime.Now;
                string clientId = conexion.getUsersInfo("CLIENT_ID", "USER_ID", Session["userid"].ToString());

                if (Session["rol"].Equals("KCPCCR") || Session["rol"].Equals("KCPADM"))
                {
                    parrafo1.Text = "Desde aqui podras autorizar, revisar y rechazar solicitudes de nuestros socios comerciales. " +
                        "¿Cómo dar seguimiento a las solicitudues? ahora te decimos:";

                    parrafo2.Visible = false;

                    string query = String.Format("SELECT COUNT(DR_ID) AS PENDIENTE "
                    + "FROM SOLICITUD_DISPENSADORES "
                    + "WHERE ID_COUNTRY = '{0}' AND (STATUS_ID = 1 OR STATUS_ID = 5) AND CLIENT_ID <> '40000000'"
                    , conexion.getUsersInfo("ID_COUNTRY", "USER_ID", Session.Contents["userid"].ToString()));

                    DataTable dataset = conexion.getGridDataSource(query);
                    lblTP.Text = "<b>Pendientes Total:</b> " + Convert.ToString(dataset.Rows[0]["PENDIENTE"]);

                    query = String.Format("SELECT COUNT(DR_ID) AS APROBADO "
                    + "FROM SOLICITUD_DISPENSADORES "
                    + "WHERE ID_COUNTRY = '{0}' AND STATUS_ID = 2 AND CLIENT_ID <> '40000000'"
                    , conexion.getUsersInfo("ID_COUNTRY", "USER_ID", Session.Contents["userid"].ToString()));

                    dataset = conexion.getGridDataSource(query);
                    lblInvAut.Text = "<b>Aprobados Total:</b> " + Convert.ToString(dataset.Rows[0]["APROBADO"]);

                    query = String.Format("SELECT COUNT(DR_ID) AS RECHAZADO "
                    + "FROM SOLICITUD_DISPENSADORES "
                    + "WHERE ID_COUNTRY = '{0}' AND STATUS_ID = 3 AND CLIENT_ID <> '40000000'"
                    , conexion.getUsersInfo("ID_COUNTRY", "USER_ID", Session.Contents["userid"].ToString()));

                    dataset = conexion.getGridDataSource(query);
                    lblInvPend.Text = "<b>Rechazados Total:</b> " + Convert.ToString(dataset.Rows[0]["RECHAZADO"]);

                    query = String.Format("SELECT COUNT(DR_ID) AS CERRADA "
                    + "FROM SOLICITUD_DISPENSADORES "
                    + "WHERE ID_COUNTRY = '{0}' AND STATUS_ID = 4 AND CLIENT_ID <> '40000000'"
                    , conexion.getUsersInfo("ID_COUNTRY", "USER_ID", Session.Contents["userid"].ToString()));

                    dataset = conexion.getGridDataSource(query);
                    lblInvUsada.Text = "<b>Cerradas Total:</b> " + Convert.ToString(dataset.Rows[0]["CERRADA"]);
                }

                DateTime vencimiento = Convert.ToDateTime(conexion.getPExpiration(Session["userid"].ToString()));

                if (!clientId.Equals(String.Empty))
                {
                    string query = String.Format("SELECT BUDGET_TP, INVERSION, INVERSION_FLOTANTE FROM CLIENTES_KC WHERE CLIENT_ID = '{0}'", clientId);
                    DataTable tabla = conexion.getGridDataSource(query);

                    foreach (DataRow fila in tabla.Rows)
                    {
                        double tp = Convert.ToDouble(fila["BUDGET_TP"]);
                        double inversion = Convert.ToDouble(fila["INVERSION"]);
                        double inversionF = Convert.ToDouble(fila["INVERSION_FLOTANTE"]);
                        double disponibilidad = tp - (inversion + inversionF);
                        double porcentaje = ((disponibilidad) / tp) * 100;

                        lblTP.Text = "<b>Presupuesto:</b> $" + tp.ToString();
                        lblInvAut.Text = "<b>Inversion Aprobada:</b> $" + inversion.ToString("0.00");
                        lblInvPend.Text = "<b>Inversion Pendiente:</b> $" + inversionF.ToString("0.00");

                        if (disponibilidad > 0)
                            lblRestante.Text = "<b>Presupuesto Restante:</b> $" + disponibilidad.ToString("0.00");
                        else
                        {
                            lblRestante.ForeColor = System.Drawing.Color.Red;
                            lblRestante.Text = "Presupuesto Restante: <b>$0.0</b>";
                        }

                        if (porcentaje > 0)
                            lblInvUsada.Text = "<b>% Disponibilidad:</b> " + porcentaje.ToString("0.00") + "%";
                        else
                        {
                            lblInvUsada.ForeColor = System.Drawing.Color.Red;
                            lblInvUsada.Text = "% Disponibilidad: <b>0%</b>";
                        }

                        Session.Add("presupuesto", tp);
                        Session.Add("aprobado", inversion);
                        Session.Add("pendiente", inversionF);
                        Session.Add("porcentaje", Convert.ToDouble(((inversion + inversionF) / tp) * 100));
                        Session.Add("correoBajo", false);
                        Session.Add("correoSobre", false);
                    }
                }

                int diferencia = vencimiento.DayOfYear - hoy.DayOfYear;

                //para cambio de año
                if (diferencia < 0)
                    diferencia = diferencia * -1;

                if (diferencia <= 5)
                {
                    mensajes.Text = String.Format("<script languaje='javascript'>" +
                                        "alert('Su contraseña vencera dentro de {0} dias');" +
                                     "</script>", diferencia);
                }
            }
            catch (Exception error)
            {
                mensajes.Text = String.Format("<script languaje='javascript'>" +
                                        "alert('{0}');" +
                                        "window.location.href = 'About.aspx';" +
                                     "</script>", error.Message);
            }
        }