public String Enviar_Corte(String Parametros)
        {
            Cls_Ctrl_Operaciones Controlador   = new Cls_Ctrl_Operaciones();
            Respuesta            Obj_Respuesta = new Respuesta();
            Cls_Mdl_Balance      Obj_Capturado = new Cls_Mdl_Balance();
            String    Json_Resultado           = String.Empty;
            DataTable Dt_Registros             = new DataTable();

            try
            {
                Obj_Capturado = JsonConvert.DeserializeObject <Cls_Mdl_Balance>(Parametros);
                Obj_Capturado.Usuario_Creo = Sessiones.Usuario;

                if (Controlador.Enviar_Corte(Obj_Capturado))
                {
                    Crear_Corte(Obj_Capturado);
                    Obj_Respuesta.Mensaje = "ok";
                    Obj_Respuesta.Estatus = true;
                }
            }
            catch (Exception Ex)
            {
                Obj_Respuesta.Estatus = false;
                Obj_Respuesta.Mensaje = "Consultar Cliente [" + Ex.Message + "]";
            }
            finally
            {
                Json_Resultado = JsonMapper.ToJson(Obj_Respuesta);
            }
            return(Json_Resultado);
        }
        public String Iniciar_Formulario()
        {
            Cls_Ctrl_Operaciones Controlador   = new Cls_Ctrl_Operaciones();
            Respuesta            Obj_Respuesta = new Respuesta();
            Cls_Mdl_Balance      Obj_Capturado = new Cls_Mdl_Balance();
            String    Json_Resultado           = String.Empty;
            DataTable Dt_Registros             = new DataTable();

            try
            {
                //Obj_Capturado = JsonConvert.DeserializeObject<Cls_Mdl_A_Pagar>(Parametros);
                Dt_Registros = Controlador.Iniciar_Formulario();
                if (Dt_Registros != null)
                {
                    if (Dt_Registros.Rows.Count > 0)
                    {
                        Obj_Respuesta.Registros = JsonConvert.SerializeObject(Dt_Registros, Newtonsoft.Json.Formatting.None);
                    }

                    Obj_Respuesta.Mensaje = "ok";
                    Obj_Respuesta.Estatus = true;
                }
            }
            catch (Exception Ex)
            {
                Obj_Respuesta.Estatus = false;
                Obj_Respuesta.Mensaje = "Consultar Cliente [" + Ex.Message + "]";
            }
            finally
            {
                Json_Resultado = JsonMapper.ToJson(Obj_Respuesta);
            }
            return(Json_Resultado);
        }
        ///*******************************************************************************
        ///NOMBRE DE LA FUNCIÓN:
        ///DESCRIPCIÓN:
        ///PARAMETROS:
        ///CREO:       CHANTAL ORIGEL
        ///FECHA_CREO:
        ///MODIFICO:
        ///FECHA_MODIFICO:
        ///CAUSA_MODIFICACIÓN:
        /////*******************************************************************************
        private String Enviar_Correo_Excel_Reporte(string adjunto)
        {
            //Cls_Cat_Parametros_Negocio Obj_Negocio = new Cls_Cat_Parametros_Negocio();
            Cls_Ctrl_Operaciones Controlador   = new Cls_Ctrl_Operaciones();
            ServicioCorreo       Envio_Email   = new ServicioCorreo();
            Respuesta            Obj_Respuesta = new Respuesta();
            Cls_Mdl_Balance      Obj_Capturado = new Cls_Mdl_Balance();
            String    Json_Resultado           = String.Empty;
            String    Json_Object = String.Empty;
            DataTable Dt_Dato     = new DataTable();
            String    Str_Json    = String.Empty;
            String    Mensaje     = String.Empty;

            try
            {
                //Obj_Capturado = JsonConvert.DeserializeObject<Cls_Mdl_Balance>(Obj_Negocios);
                Dt_Dato = Controlador.Consulta_Parametros();

                if (!String.IsNullOrEmpty(Dt_Dato.Rows[0]["Correo_Destino"].ToString()))
                {
                    Mensaje  = "<html>";
                    Mensaje += "<body>";
                    Mensaje += "<p style='text-align:justify;font-size:12px;font-family:Century Gothic; color:#000;'>Buen día.</p>";
                    Mensaje += "<br />";
                    Mensaje += "<p style='text-align:justify;font-size:12px;font-family:Century Gothic; color:#000;'>Se adjunto el Reporte de ventas </p>";
                    Mensaje += "<br />";
                    Mensaje += "<p style='text-align:justify;font-size:11px;font-family:Century Gothic; color:#000'>NOTA: Este mensaje es generado de forma automática, favor de no responder este correo.</p>";
                    Mensaje += "<br />";
                    Mensaje += "</body>";
                    Mensaje += "</html>";

                    Envio_Email.Subject = "CAFETERIA - Envio de Reporte.";
                    Envio_Email.Texto   = Mensaje;
                    Envio_Email.Recibe  = HttpUtility.HtmlDecode(Dt_Dato.Rows[0]["Correo_Destino"].ToString());
                    Envio_Email.Adjunto = adjunto;
                    Envio_Email.Enviar_Correo_Generico(Envio_Email);

                    Obj_Respuesta.Estatus = true;
                    Obj_Respuesta.Mensaje = "La actualizacion fue enviada a su correo electrónico, si no se encuentra en la bandeja de entrada, favor de buscarla en los correos spam.";
                }
            }
            catch (Exception Ex)
            {
                Obj_Respuesta.Estatus = false;
                Obj_Respuesta.Mensaje = "Favor de introducir el correo de empleado correcto.";
            }
            finally
            {
                Json_Resultado = JsonMapper.ToJson(Obj_Respuesta);
            }

            return(Json_Resultado);
        }
        ///*******************************************************************************
        ///NOMBRE DE LA FUNCIÓN: Consulta_Usuario
        ///DESCRIPCIÓN: CONSULTAR A lOS CLIENTES REGISTRADOS
        ///PARAMETROS:
        ///CREO:       CHANTAL ORIGEL
        ///FECHA_CREO:
        ///MODIFICO:
        ///FECHA_MODIFICO:
        ///CAUSA_MODIFICACIÓN:
        ///*******************************************************************************
        public Boolean Enviar_Corte(Cls_Mdl_Balance Datos)
        {
            Boolean        Transaccion = false;
            SqlTransaction Obj_Transaccion;
            SqlConnection  Obj_Conexion = new SqlConnection(ConexionBD.BD);
            SqlCommand     Obj_Comando  = new SqlCommand();
            String         Sql          = String.Empty;
            String         Estatus      = String.Empty;

            Obj_Conexion.Open();
            Obj_Transaccion         = Obj_Conexion.BeginTransaction();
            Obj_Comando.Transaction = Obj_Transaccion;
            Obj_Comando.Connection  = Obj_Conexion;

            DataTable Dt_Registro = new DataTable();

            try
            {
                Sql  = "INSERT INTO  Ope_Balance (";
                Sql += " Inicio_Caja, ";
                Sql += " Fin_Caja, ";
                Sql += " Ventas, ";
                Sql += " Usuario_Creo ";
                Sql += ") VALUES (";
                Sql += (String.IsNullOrEmpty(Datos.Inicio_Caja) ? "null, " : "'" + Datos.Inicio_Caja + "', ");
                Sql += (String.IsNullOrEmpty(Datos.Fin_Caja) ? "null, " : "'" + Datos.Fin_Caja + "', ");
                Sql += (String.IsNullOrEmpty(Datos.Ventas) ? "null, " : "'" + Datos.Ventas + "', ");
                Sql += (String.IsNullOrEmpty(Datos.Usuario_Creo) ? "null " : "'" + Datos.Usuario_Creo + "' ");
                Sql += ")";

                Obj_Comando.CommandText = Sql;
                Obj_Comando.ExecuteNonQuery();

                Obj_Transaccion.Commit();
                Obj_Conexion.Close();
                Transaccion = true;
            }
            catch (Exception Ex)
            {
                Transaccion = false;
                Obj_Transaccion.Rollback();
                throw new Exception(Ex.Message);
            }
            finally
            {
                if (!Transaccion)
                {
                    Obj_Conexion.Close();
                }
            }
            return(Transaccion);
        }
        ///*******************************************************************************
        ///NOMBRE DE LA FUNCIÓN: Consulta_Usuario
        ///DESCRIPCIÓN: CONSULTAR LOS PRODUCTOS REGISTRADOS
        ///PARAMETROS:
        ///CREO:       CHANTAL ORIGEL
        ///FECHA_CREO:
        ///MODIFICO:
        ///FECHA_MODIFICO:
        ///CAUSA_MODIFICACIÓN:
        ///*******************************************************************************
        public DataTable Consultar_Ventas_Detalles_Fechas(Cls_Mdl_Balance Datos)
        {
            String    Sql         = String.Empty;
            DataTable Dt_Registro = new DataTable();
            var       date        = DateTime.Now.ToString("yyyy/MM/dd");

            try
            {
                Sql  = "Select ";
                Sql += "convert(varchar, Ope_Ventas.Fecha_Creo, 103) as Fecha_Creo,  * ";
                Sql += " from Ope_Ventas inner join Ope_Ventas_Detalles on Ope_Ventas.Venta_ID=Ope_Ventas_Detalles.Venta_ID ";
                Sql += " inner join Cat_Productos on Ope_Ventas_Detalles.Producto_ID=Cat_Productos.Producto_ID ";
                Sql += " inner join Cat_Categorias on Cat_Productos.Categoria_ID=Cat_Categorias.Categoria_ID ";

                if (!String.IsNullOrEmpty(Datos.Fecha_Inicio))
                {
                    var fecha  = Datos.Fecha_Inicio.Split('/');
                    var result = fecha[2] + "/" + fecha[0] + "/" + fecha[1];
                    //var result = DateTime.ParseExact(Datos.Fecha_Inicio, "yyyy/MM/dd", CultureInfo.InvariantCulture);

                    Sql += " where Ope_Ventas.Fecha_Creo >= '" + result.ToString() + " 00:00:00'";
                }
                else
                {
                    Sql += " where Ope_Ventas.Fecha_Creo >= '" + date + " 00:00:00'";
                }

                if (!String.IsNullOrEmpty(Datos.Fecha_Fin))
                {
                    var fecha  = Datos.Fecha_Fin.Split('/');
                    var result = fecha[2] + "/" + fecha[0] + "/" + fecha[1];
                    //var result = DateTime.ParseExact(Datos.Fecha_Fin, "yyyy/MM/dd", CultureInfo.InvariantCulture);
                    Sql += " and Ope_Ventas.Fecha_Creo <= '" + result + " 23:59:59'";
                }
                else
                {
                    Sql += " and Ope_Ventas.Fecha_Creo <= '" + date + " 23:59:59'";
                }

                Dt_Registro = SqlHelper.ExecuteDataset(ConexionBD.BD, CommandType.Text, Sql).Tables[0];
            }
            catch (Exception Ex)
            {
                throw new Exception(Ex.Message);
            }
            return(Dt_Registro);
        }
        ///*******************************************************************************
        ///NOMBRE DE LA FUNCIÓN: Consulta_Usuario
        ///DESCRIPCIÓN: CONSULTAR A lOS CLIENTES REGISTRADOS
        ///PARAMETROS:
        ///CREO:       CHANTAL ORIGEL
        ///FECHA_CREO:
        ///MODIFICO:
        ///FECHA_MODIFICO:
        ///CAUSA_MODIFICACIÓN:
        ///*******************************************************************************
        public DataTable Ventas_Fechas(Cls_Mdl_Balance Negocio)
        {
            String    Sql         = String.Empty;
            DataTable Dt_Registro = new DataTable();

            try
            {
                Sql = "select Ope_Ventas.Venta_ID, Descripcion, Cantidad, Importe, Cliente, Estatus, Folio, Factura, Ope_Ventas.Fecha_Creo";
                //Sql += " convert(varchar, Ope_Ventas.Fecha_Creo, 103) as Fecha_Creo ";
                Sql += " from Ope_Ventas_Detalles inner join Ope_Ventas on Ope_Ventas_Detalles.Venta_ID=Ope_Ventas.Venta_ID ";

                if (!String.IsNullOrEmpty(Negocio.Fecha_Inicio))
                {
                    if (Sql.Contains("where"))
                    {
                        Sql += " and Ope_Ventas.Fecha_Creo >= '" + Negocio.Fecha_Inicio + " 00:00:00'";
                    }
                    else
                    {
                        Sql += " where Ope_Ventas.Fecha_Creo >= '" + Negocio.Fecha_Inicio + " 00:00:00'";
                    }
                }

                if (!String.IsNullOrEmpty(Negocio.Fecha_Fin))
                {
                    if (Sql.Contains("where"))
                    {
                        Sql += " and Ope_Ventas.Fecha_Creo <= '" + Negocio.Fecha_Fin + " 23:59:59'";
                    }
                    else
                    {
                        Sql += " where Ope_Ventas.Fecha_Creo <= '" + Negocio.Fecha_Fin + " 23:59:59'";
                    }
                }

                Sql += " order by Ope_Ventas.Fecha_Creo desc";

                Dt_Registro = SqlHelper.ExecuteDataset(ConexionBD.BD, CommandType.Text, Sql).Tables[0];
            }
            catch (Exception Ex)
            {
                throw new Exception(Ex.Message);
            }
            return(Dt_Registro);
        }
        ///*******************************************************************************
        ///NOMBRE DE LA FUNCIÓN: Consulta_Usuario
        ///DESCRIPCIÓN: CONSULTAR A lOS CLIENTES REGISTRADOS
        ///PARAMETROS:
        ///CREO:       CHANTAL ORIGEL
        ///FECHA_CREO:
        ///MODIFICO:
        ///FECHA_MODIFICO:
        ///CAUSA_MODIFICACIÓN:
        ///*******************************************************************************
        public Boolean Actualizar(Cls_Mdl_Balance Datos)
        {
            Boolean        Transaccion = false;
            SqlTransaction Obj_Transaccion;
            SqlConnection  Obj_Conexion = new SqlConnection(ConexionBD.BD);
            SqlCommand     Obj_Comando  = new SqlCommand();
            String         Sql          = String.Empty;
            String         Estatus      = String.Empty;

            Obj_Conexion.Open();
            Obj_Transaccion         = Obj_Conexion.BeginTransaction();
            Obj_Comando.Transaction = Obj_Transaccion;
            Obj_Comando.Connection  = Obj_Conexion;

            DataTable Dt_Registro = new DataTable();

            try
            {
                Sql  = " Update Ope_Balance SET ";
                Sql += " Inicio_Actualizado = " + (String.IsNullOrEmpty(Datos.Inicio_Actualizado) ? "null " : "'" + Datos.Inicio_Actualizado + "' ");
                Sql += " WHERE Balance_ID = " + Datos.Balance_ID;

                Obj_Comando.CommandText = Sql;
                Obj_Comando.ExecuteNonQuery();

                Obj_Transaccion.Commit();
                Obj_Conexion.Close();
                Transaccion = true;
            }
            catch (Exception Ex)
            {
                Transaccion = false;
                Obj_Transaccion.Rollback();
                throw new Exception(Ex.Message);
            }
            finally
            {
                if (!Transaccion)
                {
                    Obj_Conexion.Close();
                }
            }
            return(Transaccion);
        }
        public String Enviar_Reporte(string Parametros)
        {
            Cls_Mdl_Balance      Obj_Negocio   = new Cls_Mdl_Balance();
            Cls_Ctrl_Operaciones Controlador   = new Cls_Ctrl_Operaciones();
            Cls_Mdl_Balance      Obj_Capturado = new Cls_Mdl_Balance();
            Respuesta            Obj_Respuesta = new Respuesta();
            String    Json_Resultado           = String.Empty;
            DataTable Dt_Registros             = new DataTable();

            Obj_Respuesta.Registros = "{}";

            try
            {
                Obj_Capturado = JsonConvert.DeserializeObject <Cls_Mdl_Balance>(Parametros);

                Dt_Registros = Controlador.Consultar_Ventas_Detalles_Fechas(Obj_Capturado);

                if (Dt_Registros.Rows.Count > 0)
                {
                    Workbook Book_Reporte        = new Workbook();
                    String   Ruta                = HttpContext.Current.Server.MapPath("~") + "\\Temporal";
                    String   ruta_plantilla      = System.AppDomain.CurrentDomain.BaseDirectory + "Plantillas\\ReporteFechas.xlsx";
                    String   nombre_archivo      = "ReporteFechas.xlsx";
                    String   ruta_almacenamiento = Ruta + "\\" + nombre_archivo;

                    Rpt_Inventarios Obj_Reporte = new Rpt_Inventarios(ruta_plantilla, ruta_almacenamiento, Dt_Registros);
                    Obj_Reporte.Enviar_Reporte(Obj_Capturado);

                    if (!Directory.Exists(Ruta))
                    {
                        Directory.CreateDirectory(Ruta);
                    }

                    HttpContext.Current.ApplicationInstance.Response.Clear();
                    HttpContext.Current.ApplicationInstance.Response.Buffer      = true;
                    HttpContext.Current.ApplicationInstance.Response.ContentType = "application/vnd.ms-excel";
                    HttpContext.Current.ApplicationInstance.Response.AddHeader("Content-Disposition", "attachment; filename=" + nombre_archivo);
                    HttpContext.Current.ApplicationInstance.Response.Charset         = "UTF-8";
                    HttpContext.Current.ApplicationInstance.Response.ContentEncoding = Encoding.Default;
                    HttpContext.Current.ApplicationInstance.Response.WriteFile(ruta_almacenamiento);
                    HttpContext.Current.ApplicationInstance.CompleteRequest();

                    Obj_Respuesta.Registros = "ReporteFechas.xlsx";
                    Obj_Respuesta.Estatus   = true;

                    Enviar_Correo_Excel_Reporte(ruta_almacenamiento);
                }
                else
                {
                    Obj_Respuesta.Mensaje = "No hay datos que mostrar.";
                    Obj_Respuesta.Estatus = false;
                }
            }
            catch (Exception Ex)
            {
                Obj_Respuesta.Estatus = false;
                Obj_Respuesta.Mensaje = "Exportar Excel[" + Ex.Message + "]";
            }
            finally
            {
                Json_Resultado = JsonMapper.ToJson(Obj_Respuesta);
            }
            return(Json_Resultado);
        }