/// <summary>
        /// Metodo que actualiza el estatus de las facturas
        /// </summary>
        /// <param name="factura">Entidad de la factura</param>
        /// <param name="dt">DataTable donde se vaciaran los resultados obtenidos</param>
        /// <param name="conexion">Cadena de conexion a la base de datos</param>
        /// <param name="verificador">Indica si se pudo o no realizar la operacion</param>
        public void CambiaEstatusFacturaEmbarque(Factura factura, DataTable dt, string conexion, ref int verificador)
        {
            try
            {
                CD_Datos CDDatos = new CD_Datos(conexion);

                CDDatos.StartTrans();

                string[] parametros =
                {
                    "@Id_Emp",
                    "@Id_Cd",
                    "@Id_Fac",
                    "@Fac_PedNum",
                    "@Ped_FecEmb",
                    "@Ped_UsrEmb"
                };
                object[] valores =
                {
                    factura.Id_Emp,
                    factura.Id_Cd,
                    factura.Id_Fac,
                    factura.Fac_PedNum,
                    factura.Fac_Fecha,
                    factura.Id_U
                };

                SqlCommand slqcmd = CDDatos.GenerarSqlCommand("spCapFacturaEmbarque_CambiaEstatus"
                                                              , ref verificador, parametros, valores);

                factura.Id_Fac = verificador;

                if (verificador > -1)
                {
                    CDDatos.CommitTrans();
                }
                else
                {
                    CDDatos.RollBackTrans();
                }

                CDDatos.LimpiarSqlcommand(ref slqcmd);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        /// <summary>
        /// Metodo que modifica las observaciones en la tabla de CapSegProd
        /// </summary>
        /// <param name="SegPrd">Entidad de los seguimeintos a productos</param>
        /// <param name="conexion">Cadena de conexion a la base de datos</param>
        /// <param name="verificador">Variable que confirma la operacon si regresa con valor mayor a 0</param>
        public void ModificaObservaciones(SeguimientoProductos SegPrd, string conexion, ref int verificador)
        {
            CD_Datos   CDDatos = default(CD_Datos);
            SqlCommand sqlcmd  = default(SqlCommand);

            try
            {
                CDDatos = new CD_Datos(conexion);
                CDDatos.StartTrans();

                string[] parametros =
                {
                    "@Id_SegPrd",
                    "@Id_Emp",
                    "@Id_Cd",
                    "@Id_Prd",
                    "@Seg_fecha",
                    "@Seg_Comentarios"
                };
                object[] valores =
                {
                    SegPrd.Id_SegPrd,
                    SegPrd.Id_Emp,
                    SegPrd.Id_Cd,
                    SegPrd.Id_Prd,
                    SegPrd.Seg_fecha,
                    SegPrd.Seg_Comentarios
                };

                sqlcmd = CDDatos.GenerarSqlCommand("spProSeguimientoPrd_Modificar", ref verificador, parametros, valores);

                if (verificador > 0)
                {
                    CDDatos.CommitTrans();
                    CDDatos.LimpiarSqlcommand(ref sqlcmd);
                }
                else
                {
                    CDDatos.RollBackTrans();
                }
            }
            catch (Exception ex)
            {
                CDDatos.RollBackTrans();
                throw ex;
            }
        }
        public void ModificarDetalle(List <EntradasSalidasCentralDet> List, Sesion sesion, ref int Verificador)
        {
            CD_Datos cd_datos = new CD_Datos(sesion.Emp_Cnx);

            try
            {
                cd_datos.StartTrans();
                SqlCommand sqlcmd = new SqlCommand();

                String[] Parametros =
                {
                    "@Id_Emp",
                    "@Id_Alm",
                    "@Id_MovC",
                    "@Id_Tm",
                    "@MovC_Naturaleza",
                    "@Id_Prd",
                    "@MovC_CostoFac"
                };

                foreach (EntradasSalidasCentralDet e in List)
                {
                    object[] Valores =
                    {
                        e.Id_Emp,
                        e.Id_Alm,
                        e.Id_MovC,
                        e.Id_Tm,
                        e.MovC_Naturaleza,
                        e.Id_Prd,
                        e.MovC_CostoFac
                    };

                    sqlcmd = cd_datos.GenerarSqlCommand("spCatMovimientosCentralDet_Modificar", ref Verificador, Parametros, Valores);
                }
                cd_datos.CommitTrans();
                cd_datos.LimpiarSqlcommand(ref sqlcmd);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        public void Guardar(List <Acciones> list_acciones, List <Alertas> list_alertas, Reglas reglas, CobProceso CobProceso, int Id_Emp, string Conexion, ref int verificador)
        {
            CD_Datos CapaDatos = new CD_Datos(Conexion);

            try
            {
                CapaDatos.StartTrans();

                string[]   Parametros;
                object[]   Valores;
                SqlCommand sqlcmd = default(SqlCommand);

                //ACCIONES
                Parametros = new string[] { "@Id_Emp" };
                Valores    = new object[] { Id_Emp };
                sqlcmd     = CapaDatos.GenerarSqlCommand("spCatConfCobranzaAccion_Eliminar", ref verificador, Parametros, Valores);
                int Id_Accion = 0;

                foreach (Acciones a in list_acciones)
                {
                    Parametros = new string[] { "@Id_Emp", "@Id_Tipo", "@Conf_Caso", "@Conf_Pregunta", "@Conf_Tpregunta" };
                    Valores    = new object[] { Id_Emp, a.Etapa, a.Dias, a.Pregunta, a.Tipo_Respuesta };
                    sqlcmd     = CapaDatos.GenerarSqlCommand("spCatConfCobranzaAccion_Guardar", ref verificador, Parametros, Valores);
                    Id_Accion  = verificador;
                    int contador = 0;
                    foreach (string s in a.Respuestas)
                    {
                        contador++;
                        Parametros = new string[] { "@Id_Emp", "@Id_conf", "@Id_confD", "@Conf_Respuesta" };
                        Valores    = new object[] { Id_Emp, Id_Accion, contador, s };
                        sqlcmd     = CapaDatos.GenerarSqlCommand("spCatConfCobranzaRespuestas_Guardar", ref verificador, Parametros, Valores);
                    }
                }

                //ALERTAS
                Parametros = new string[] { "@Id_Emp" };
                Valores    = new object[] { Id_Emp };
                sqlcmd     = CapaDatos.GenerarSqlCommand("spCatConfCobranzaAlerta_Eliminar", ref verificador, Parametros, Valores);

                foreach (Alertas a in list_alertas)
                {
                    Parametros = new string[] { "@Id_Emp", "@Id_Tipo", "@Conf_Caso", "@Id_Tu", "@Conf_SuspCredito" };
                    Valores    = new object[] { Id_Emp, a.Etapa, a.Dias, a.EnviarA, a.SuspenderCredito };
                    sqlcmd     = CapaDatos.GenerarSqlCommand("spCatConfCobranzaAlerta_Guardar", ref verificador, Parametros, Valores);
                }


                //REGLAS
                Parametros = new string[] { "@Id_Emp", "@Plazo", "@Id_Tu1", "@Id_Tu2", "@Id_Tu3", "@Val1", "@Val2", "@Val3", "@Val4", "@Val5", "@Val6" };
                Valores    = new object[] { Id_Emp, reglas.Plazo == null ? 0 : reglas.Plazo, reglas.Id_Tu1, reglas.Id_Tu2, reglas.Id_Tu3, reglas.Val1, reglas.Val2, reglas.Val3, reglas.Val4, reglas.Val5, reglas.Val6 };
                sqlcmd     = CapaDatos.GenerarSqlCommand("spCatConfCobranzaRegla_Guardar", ref verificador, Parametros, Valores);

                int consecutivo = 1;
                foreach (PeriodoGracia a in reglas.List_gracia)
                {
                    Parametros = new string[] { "@Id_Emp", "@Id_Reg", "@Reg_Condicion", "@Reg_Periodo" };
                    Valores    = new object[] { Id_Emp, consecutivo++, a.Reg_Condicion, a.Reg_Periodo };
                    sqlcmd     = CapaDatos.GenerarSqlCommand("spCatConfCobranzaPeriodoGracia_Insertar", ref verificador, Parametros, Valores);
                }


                //PROCESO
                Parametros = new string[] { "@Id_Emp", "@Id_Cd", "@SvtasAlm", "@EmbAlm", "@EntAlm", "@AlmCob", "@RevCob" };
                Valores    = new object[] { CobProceso.Id_Emp, CobProceso.Id_Cd, CobProceso.SvtasAlm, CobProceso.EmbAlm, CobProceso.EntAlm, CobProceso.AlmCob, CobProceso.RevCob };
                sqlcmd     = CapaDatos.GenerarSqlCommand("spCatConfCobranzaProceso_Guardar", ref verificador, Parametros, Valores);

                CapaDatos.CommitTrans();
                CapaDatos.LimpiarSqlcommand(ref sqlcmd);
            }
            catch (Exception ex)
            {
                CapaDatos.RollBackTrans();
                throw ex;
            }
        }
        /// <summary>
        /// Metodo para modificar los datos de la base de datos
        /// </summary>
        /// <param name="reclamaciones">Entidad de las reclamaciones</param>
        /// <param name="dt">data table donde se vaciaran los resultados obtenidos</param>
        /// <param name="conexion">Cadena de conexion a la base de datos</param>
        /// <param name="verificador">Indica si se pudo o no realizar la operacion</param>
        public void ModificaReclamaciones(Reclamaciones reclamaciones, DataTable dt, string conexion, ref int verificador)
        {
            CapaDatos.CD_Datos capaDatos = new CD_Datos(conexion);
            try
            {
                capaDatos.StartTrans();
                string[] Parametros =
                {
                    "@Id_Emp",
                    "@Id_Cd",
                    "@Id_Rec",
                    "@Rec_Fecha",
                    "@Id_Cte",
                    "@Rec_Usuario",
                    "@Rec_Telefono",
                    "@Id_Ter",
                    "@Id_Tipo",
                    "@Id_NoConf",
                    "@Rec_Descripcion",
                    "@Rec_CausaRaiz",
                    "@Rec_FecAccion",
                    "@Rec_AcAccion1",
                    "@Rec_AcAccion2",
                    "@Rec_AcResponsable",
                    "@Rec_FecConformidad",
                    "@Rec_ConNombre",
                    "@Rec_ConDepartamento",
                    "@Rec_Comentarios",
                    "@Rec_Estatus"
                };
                object[] Valores =
                {
                    reclamaciones.Id_Emp,
                    reclamaciones.Id_Cd,
                    reclamaciones.Id_Rec,
                    reclamaciones.Rec_Fecha,
                    reclamaciones.Id_Cte,
                    reclamaciones.Rec_Usuario,
                    reclamaciones.Rec_Telefono,
                    reclamaciones.Id_Ter,
                    reclamaciones.Id_tipo,
                    reclamaciones.Id_NoConf,
                    reclamaciones.Rec_Descripcion,
                    reclamaciones.Rec_CausaRaiz,
                    reclamaciones.Rec_FecAccion,
                    reclamaciones.Rec_AcAccion1,
                    reclamaciones.Rec_AcAccion2,
                    reclamaciones.Rec_AcResponsable,
                    reclamaciones.Rec_FecConformidad,
                    reclamaciones.Rec_ConNombre,
                    reclamaciones.Rec_ConDepartamento,
                    reclamaciones.Rec_Comentarios,
                    reclamaciones.Rec_Estatus
                };

                SqlCommand sqlcmd = capaDatos.GenerarSqlCommand("spCapReclamaciones_Modificar", ref verificador, Parametros, Valores);
                reclamaciones.Id_Rec = verificador;
                if (verificador > -1)
                {
                    capaDatos.CommitTrans();
                }
                else
                {
                    capaDatos.RollBackTrans();
                }

                capaDatos.LimpiarSqlcommand(ref sqlcmd);
            }
            catch (Exception ex)
            {
                capaDatos.RollBackTrans();
                throw ex;
            }
        }