示例#1
0
 public bool ValidarFechaTransaccion(int IdEmpresa, DateTime Fecha, cl_enumeradores.eModulo Modulo, int IdSucursal, ref string mensaje)
 {
     try
     {
         return(odata.ValidarFechaTransaccion(IdEmpresa, Fecha, Modulo, IdSucursal, ref mensaje));
     }
     catch (Exception)
     {
         throw;
     }
 }
示例#2
0
        public bool ValidarFechaTransaccion(int IdEmpresa, DateTime Fecha, cl_enumeradores.eModulo Modulo, ref string mensaje)
        {
            Entities_contabilidad db_conta   = new Entities_contabilidad();
            Entities_general      db_general = new Entities_general();

            try
            {
                Fecha = Fecha.Date;
                int Periodo = Convert.ToInt32(Fecha.ToString("yyyyMM"));

                var empresa = db_general.tb_empresa.Where(q => q.IdEmpresa == IdEmpresa).FirstOrDefault();
                if (empresa != null)
                {
                    if (empresa.em_fechaInicioActividad > Fecha.Date)
                    {
                        mensaje = "La fecha de la transacción es menor al inicio de actividades de la empresa en el sistema FIXED ERP: " + Fecha.Date.ToString("dd/MM/yyyy");
                        return(false);
                    }
                }

                ct_periodo per = db_conta.ct_periodo.Where(q => q.IdEmpresa == IdEmpresa && q.IdPeriodo == Periodo).FirstOrDefault();

                if (per == null)
                {
                    mensaje = "El periodo " + Periodo + " de la transacción no se encuentra registrado.";
                    return(false);
                }

                if (per.pe_cerrado == "S")
                {
                    mensaje = "El periodo " + Periodo + " se encuentra cerrado.";
                    return(false);
                }

                switch (Modulo)
                {
                case cl_enumeradores.eModulo.INV:
                    using (Entities_inventario db = new Entities_inventario())
                    {
                        var param = db.in_parametro.Where(q => q.IdEmpresa == IdEmpresa).FirstOrDefault();
                        if (param == null)
                        {
                            mensaje = "No existen parámetros para el módulo de inventario";
                            return(false);
                        }

                        /*
                         * if (param.DiasTransaccionesAFuturo > 0 && DateTime.Now.Date.AddDays(param.DiasTransaccionesAFuturo) < Fecha)
                         * {
                         *  mensaje = "La fecha de la transacción es superior a la fecha permitida por los parámetros del módulo de importación";
                         *  return false;
                         * }
                         */
                    }
                    break;

                case cl_enumeradores.eModulo.FAC:
                    using (Entities_facturacion db = new Entities_facturacion())
                    {
                        var param = db.fa_parametro.Where(q => q.IdEmpresa == IdEmpresa).FirstOrDefault();
                        if (param == null)
                        {
                            mensaje = "No existen parámetros para el módulo de facturación";
                            return(false);
                        }
                        if (param.DiasTransaccionesAFuturo > 0 && DateTime.Now.Date.AddDays(param.DiasTransaccionesAFuturo) < Fecha)
                        {
                            mensaje = "La fecha de la transacción es superior a la fecha permitida por los parámetros del módulo de facturación";
                            return(false);
                        }
                    }
                    break;

                case cl_enumeradores.eModulo.COM:
                    using (Entities_compras db = new Entities_compras())
                    {
                        var param = db.com_parametro.Where(q => q.IdEmpresa == IdEmpresa).FirstOrDefault();
                        if (param == null)
                        {
                            mensaje = "No existen parámetros para el módulo de compras";
                            return(false);
                        }
                        if (param.DiasTransaccionesAFuturo > 0 && DateTime.Now.Date.AddDays(param.DiasTransaccionesAFuturo) < Fecha)
                        {
                            mensaje = "La fecha de la transacción es superior a la fecha permitida por los parámetros del módulo de compras";
                            return(false);
                        }
                    }
                    break;

                case cl_enumeradores.eModulo.ACF:
                    using (Entities_activo_fijo db = new Entities_activo_fijo())
                    {
                        var param = db.Af_Parametros.Where(q => q.IdEmpresa == IdEmpresa).FirstOrDefault();
                        if (param == null)
                        {
                            mensaje = "No existen parámetros para el módulo de activo fijo";
                            return(false);
                        }
                        if (param.DiasTransaccionesAFuturo > 0 && DateTime.Now.Date.AddDays(param.DiasTransaccionesAFuturo) < Fecha)
                        {
                            mensaje = "La fecha de la transacción es superior a la fecha permitida por los parámetros del módulo de activo fijo";
                            return(false);
                        }
                    }
                    break;

                case cl_enumeradores.eModulo.RRHH:
                    using (Entities_rrhh db = new Entities_rrhh())
                    {
                    }
                    break;

                case cl_enumeradores.eModulo.IMP:
                    using (Entities_importacion db = new Entities_importacion())
                    {
                        var param = db.imp_parametro.Where(q => q.IdEmpresa == IdEmpresa).FirstOrDefault();
                        if (param == null)
                        {
                            mensaje = "No existen parámetros para el módulo de importación";
                            return(false);
                        }

                        /*
                         * if (param.DiasTransaccionesAFuturo > 0 && DateTime.Now.Date.AddDays(param.DiasTransaccionesAFuturo) < Fecha)
                         * {
                         *  mensaje = "La fecha de la transacción es superior a la fecha permitida por los parámetros del módulo de importación";
                         *  return false;
                         * }
                         */
                    }
                    break;

                case cl_enumeradores.eModulo.CONTA:
                    using (Entities_contabilidad db = new Entities_contabilidad())
                    {
                        var param = db.ct_parametro.Where(q => q.IdEmpresa == IdEmpresa).FirstOrDefault();
                        if (param == null)
                        {
                            mensaje = "No existen parámetros para el módulo de contabilidad";
                            return(false);
                        }
                        if (param.DiasTransaccionesAFuturo > 0 && DateTime.Now.Date.AddDays(param.DiasTransaccionesAFuturo) < Fecha)
                        {
                            mensaje = "La fecha de la transacción es superior a la fecha permitida por los parámetros del módulo de contabilidad";
                            return(false);
                        }
                    }
                    break;

                case cl_enumeradores.eModulo.CAJA:
                    using (Entities_caja db = new Entities_caja())
                    {
                        var param = db.caj_parametro.Where(q => q.IdEmpresa == IdEmpresa).FirstOrDefault();
                        if (param == null)
                        {
                            mensaje = "No existen parámetros para el módulo de caja";
                            return(false);
                        }
                        if (param.DiasTransaccionesAFuturo > 0 && DateTime.Now.Date.AddDays(param.DiasTransaccionesAFuturo) < Fecha)
                        {
                            mensaje = "La fecha de la transacción es superior a la fecha permitida por los parámetros del módulo de caja";
                            return(false);
                        }
                    }
                    break;

                case cl_enumeradores.eModulo.BANCO:
                    using (Entities_banco db = new Entities_banco())
                    {
                        var param = db.ba_parametros.Where(q => q.IdEmpresa == IdEmpresa).FirstOrDefault();
                        if (param == null)
                        {
                            mensaje = "No existen parámetros para el módulo de bancos";
                            return(false);
                        }
                        if (param.DiasTransaccionesAFuturo > 0 && DateTime.Now.Date.AddDays(param.DiasTransaccionesAFuturo) < Fecha)
                        {
                            mensaje = "La fecha de la transacción es superior a la fecha permitida por los parámetros del módulo de bancos";
                            return(false);
                        }
                    }
                    break;

                case cl_enumeradores.eModulo.CXC:
                    using (Entities_cuentas_por_cobrar db = new Entities_cuentas_por_cobrar())
                    {
                        var param = db.cxc_Parametro.Where(q => q.IdEmpresa == IdEmpresa).FirstOrDefault();
                        if (param == null)
                        {
                            mensaje = "No existen parámetros para el módulo de cuentas por cobrar";
                            return(false);
                        }
                        if (param.DiasTransaccionesAFuturo > 0 && DateTime.Now.Date.AddDays(param.DiasTransaccionesAFuturo) < Fecha)
                        {
                            mensaje = "La fecha de la transacción es superior a la fecha permitida por los parámetros del módulo de cuentas por cobrar";
                            return(false);
                        }
                    }
                    break;

                case cl_enumeradores.eModulo.CXP:
                    using (Entities_cuentas_por_pagar db = new Entities_cuentas_por_pagar())
                    {
                        var param = db.cp_parametros.Where(q => q.IdEmpresa == IdEmpresa).FirstOrDefault();
                        if (param == null)
                        {
                            mensaje = "No existen parámetros para el módulo de cuentas por pagar";
                            return(false);
                        }
                        if (param.DiasTransaccionesAFuturo > 0 && DateTime.Now.Date.AddDays(param.DiasTransaccionesAFuturo) < Fecha)
                        {
                            mensaje = "La fecha de la transacción es superior a la fecha permitida por los parámetros del módulo de cuentas por pagar";
                            return(false);
                        }
                    }
                    break;
                }

                db_general.Dispose();
                db_conta.Dispose();
                return(true);
            }
            catch (Exception)
            {
                db_conta.Dispose();
                db_general.Dispose();
                throw;
            }
        }
示例#3
0
 public List <in_Producto_Info> get_list_bajo_demanda(ListEditItemsRequestedByFilterConditionEventArgs args, int IdEmpresa, cl_enumeradores.eTipoBusquedaProducto Busqueda, cl_enumeradores.eModulo Modulo, int IdSucursal, int IdBodega = 0)
 {
     return(odata.get_list_bajo_demanda(args, IdEmpresa, Busqueda, Modulo, IdSucursal, IdBodega));
 }
示例#4
0
        public bool ValidarFechaTransaccion(int IdEmpresa, DateTime Fecha, cl_enumeradores.eModulo Modulo, int IdSucursal, ref string mensaje)
        {
            Entities_contabilidad db_conta   = new Entities_contabilidad();
            Entities_general      db_general = new Entities_general();

            try
            {
                Fecha = Fecha.Date;
                int    Periodo = Convert.ToInt32(Fecha.ToString("yyyyMM"));
                string sModulo = Modulo.ToString();
                ct_CierrePorModuloPorSucursal CierreModulo = new ct_CierrePorModuloPorSucursal();
                var empresa = db_general.tb_empresa.Where(q => q.IdEmpresa == IdEmpresa).FirstOrDefault();
                if (empresa != null)
                {
                    if (empresa.em_fechaInicioActividad > Fecha.Date)
                    {
                        mensaje = "La fecha de la transacción es menor al inicio de actividades de la empresa en el sistema FIXED ERP: " + Fecha.Date.ToString("dd/MM/yyyy");
                        return(false);
                    }
                }

                ct_periodo per = db_conta.ct_periodo.Where(q => q.IdEmpresa == IdEmpresa && q.IdPeriodo == Periodo).FirstOrDefault();

                if (per == null)
                {
                    mensaje = "El periodo " + Periodo + " de la transacción no se encuentra registrado.";
                    return(false);
                }

                if (per.pe_cerrado == "S")
                {
                    mensaje = "El periodo " + Periodo + " se encuentra cerrado.";
                    return(false);
                }

                switch (Modulo)
                {
                case cl_enumeradores.eModulo.INV:
                    using (Entities_inventario db = new Entities_inventario())
                    {
                        var param = db.in_parametro.Where(q => q.IdEmpresa == IdEmpresa).FirstOrDefault();
                        if (param == null)
                        {
                            mensaje = "No existen parámetros para el módulo de inventario";
                            return(false);
                        }

                        /*
                         * if (param.DiasTransaccionesAFuturo > 0 && DateTime.Now.Date.AddDays(param.DiasTransaccionesAFuturo) < Fecha)
                         * {
                         *  mensaje = "La fecha de la transacción es superior a la fecha permitida por los parámetros del módulo de importación";
                         *  return false;
                         * }
                         */
                        var FechaFutura = DateTime.Now.AddDays((param == null ? 0 : param.DiasTransaccionesAFuturo));
                        var FechaPasada = DateTime.Now.AddDays(-(param == null ? 0 : (param.DiasTransaccionesAPasado == null ? 99999 : Convert.ToInt32(param.DiasTransaccionesAPasado))));

                        if (!(Fecha >= FechaPasada && Fecha <= FechaFutura))
                        {
                            mensaje = "La fecha de la transacción no está permitida por los parámetros del módulo de inventario";
                            return(false);
                        }
                    }
                    CierreModulo = db_conta.ct_CierrePorModuloPorSucursal.Where(q => q.IdEmpresa == IdEmpresa && q.IdSucursal == IdSucursal && q.CodModulo == "INV" && q.Cerrado).OrderByDescending(q => q.FechaFin).FirstOrDefault();
                    if (CierreModulo != null)
                    {
                        if (Fecha.Date <= CierreModulo.FechaFin)
                        {
                            mensaje = "El periodo de la transacción se encuentra cerrado para el módulo de inventario";
                            return(false);
                        }
                    }
                    break;

                case cl_enumeradores.eModulo.FAC:
                    using (Entities_facturacion db = new Entities_facturacion())
                    {
                        var param = db.fa_parametro.Where(q => q.IdEmpresa == IdEmpresa).FirstOrDefault();
                        if (param == null)
                        {
                            mensaje = "No existen parámetros para el módulo de facturación";
                            return(false);
                        }

                        var FechaFutura = DateTime.Now.AddDays((param == null ? 0 : param.DiasTransaccionesAFuturo));
                        var FechaPasada = DateTime.Now.AddDays(-(param == null ? 0 : (param.DiasTransaccionesAPasado == null ? 99999 : Convert.ToInt32(param.DiasTransaccionesAPasado))));

                        if (!(Fecha >= FechaPasada && Fecha <= FechaFutura))
                        {
                            mensaje = "La fecha de la transacción no está permitida por los parámetros del módulo de facturación";
                            return(false);
                        }

                        if (param.DiasTransaccionesAFuturo > 0 && DateTime.Now.Date.AddDays(param.DiasTransaccionesAFuturo) < Fecha)
                        {
                            mensaje = "La fecha de la transacción es superior a la fecha permitida por los parámetros del módulo de facturación";
                            return(false);
                        }
                    }
                    CierreModulo = db_conta.ct_CierrePorModuloPorSucursal.Where(q => q.IdEmpresa == IdEmpresa && q.IdSucursal == IdSucursal && q.CodModulo == "FAC" && q.Cerrado).OrderByDescending(q => q.FechaFin).FirstOrDefault();
                    if (CierreModulo != null)
                    {
                        if (Fecha.Date <= CierreModulo.FechaFin)
                        {
                            mensaje = "El periodo de la transacción se encuentra cerrado para el módulo de facturación";
                            return(false);
                        }
                    }
                    break;

                case cl_enumeradores.eModulo.COM:
                    using (Entities_compras db = new Entities_compras())
                    {
                        var param = db.com_parametro.Where(q => q.IdEmpresa == IdEmpresa).FirstOrDefault();
                        if (param == null)
                        {
                            mensaje = "No existen parámetros para el módulo de compras";
                            return(false);
                        }

                        /*
                         * var FechaFutura = DateTime.Now.AddDays((param == null ? 0 : param.DiasTransaccionesAFuturo));
                         * var FechaPasada = DateTime.Now.AddDays(-(param == null ? 0 : (param.DiasTransaccionesAPasado == null ? 99999 : Convert.ToInt32(param.DiasTransaccionesAPasado))));
                         *
                         * if (!(Fecha >= FechaPasada && Fecha <= FechaFutura))
                         * {
                         *  mensaje = "La fecha de la transacción no está permitida por los parámetros del módulo de compras";
                         *  return false;
                         * }
                         *
                         * if (param.DiasTransaccionesAFuturo > 0 && DateTime.Now.Date.AddDays(param.DiasTransaccionesAFuturo) < Fecha)
                         * {
                         *  mensaje = "La fecha de la transacción es superior a la fecha permitida por los parámetros del módulo de compras";
                         *  return false;
                         * }
                         */
                    }
                    CierreModulo = db_conta.ct_CierrePorModuloPorSucursal.Where(q => q.IdEmpresa == IdEmpresa && q.IdSucursal == IdSucursal && q.CodModulo == "COMP" && q.Cerrado).OrderByDescending(q => q.FechaFin).FirstOrDefault();
                    if (CierreModulo != null)
                    {
                        if (Fecha.Date <= CierreModulo.FechaFin)
                        {
                            mensaje = "El periodo de la transacción se encuentra cerrado para el módulo de compras";
                            return(false);
                        }
                    }
                    break;

                case cl_enumeradores.eModulo.ACF:
                    using (Entities_activo_fijo db = new Entities_activo_fijo())
                    {
                        var param = db.Af_Parametros.Where(q => q.IdEmpresa == IdEmpresa).FirstOrDefault();
                        if (param == null)
                        {
                            mensaje = "No existen parámetros para el módulo de activo fijo";
                            return(false);
                        }

                        /*
                         * var FechaFutura = DateTime.Now.AddDays((param == null ? 0 : param.DiasTransaccionesAFuturo));
                         * var FechaPasada = DateTime.Now.AddDays(-(param == null ? 0 : (param.DiasTransaccionesAPasado == null ? 99999 : Convert.ToInt32(param.DiasTransaccionesAPasado))));
                         *
                         * if (!(Fecha >= FechaPasada && Fecha <= FechaFutura))
                         * {
                         *  mensaje = "La fecha de la transacción no está permitida por los parámetros del módulo de activo fijo";
                         *  return false;
                         * }
                         *
                         * if (param.DiasTransaccionesAFuturo > 0 && DateTime.Now.Date.AddDays(param.DiasTransaccionesAFuturo) < Fecha)
                         * {
                         *  mensaje = "La fecha de la transacción es superior a la fecha permitida por los parámetros del módulo de activo fijo";
                         *  return false;
                         * }
                         */
                    }
                    CierreModulo = db_conta.ct_CierrePorModuloPorSucursal.Where(q => q.IdEmpresa == IdEmpresa && q.IdSucursal == IdSucursal && q.CodModulo == "ACTF" && q.Cerrado).OrderByDescending(q => q.FechaFin).FirstOrDefault();
                    if (CierreModulo != null)
                    {
                        if (Fecha.Date <= CierreModulo.FechaFin)
                        {
                            mensaje = "El periodo de la transacción se encuentra cerrado para el módulo de activo fijo";
                            return(false);
                        }
                    }
                    break;

                case cl_enumeradores.eModulo.RRHH:
                    using (Entities_rrhh db = new Entities_rrhh())
                    {
                        var param = db.ro_Parametros.Where(q => q.IdEmpresa == IdEmpresa).FirstOrDefault();
                        if (param == null)
                        {
                            mensaje = "No existen parámetros para el módulo de importación";
                            return(false);
                        }

                        /*
                         * var FechaFutura = DateTime.Now.AddDays((param == null ? 0 : (param.DiasTransaccionesAFuturo==null ? 0 : Convert.ToInt32(param.DiasTransaccionesAPasado))));
                         * var FechaPasada = DateTime.Now.AddDays(-(param == null ? 0 : (param.DiasTransaccionesAPasado == null ? 99999 : Convert.ToInt32(param.DiasTransaccionesAPasado))));
                         *
                         * if (!(Fecha >= FechaPasada && Fecha <= FechaFutura))
                         * {
                         *  mensaje = "La fecha de la transacción no está permitida por los parámetros del módulo de recursos humanos";
                         *  return false;
                         * }
                         */
                    }
                    CierreModulo = db_conta.ct_CierrePorModuloPorSucursal.Where(q => q.IdEmpresa == IdEmpresa && q.IdSucursal == IdSucursal && q.CodModulo == "ROL" && q.Cerrado).OrderByDescending(q => q.FechaFin).FirstOrDefault();
                    if (CierreModulo != null)
                    {
                        if (Fecha.Date <= CierreModulo.FechaFin)
                        {
                            mensaje = "El periodo de la transacción se encuentra cerrado para el módulo de recursos humanos";
                            return(false);
                        }
                    }
                    break;

                case cl_enumeradores.eModulo.IMP:
                    using (Entities_importacion db = new Entities_importacion())
                    {
                        var param = db.imp_parametro.Where(q => q.IdEmpresa == IdEmpresa).FirstOrDefault();
                        if (param == null)
                        {
                            mensaje = "No existen parámetros para el módulo de importación";
                            return(false);
                        }

                        /*
                         * var FechaFutura = DateTime.Now.AddDays((param == null ? 0 : (param.DiasTransaccionesAFuturo == null ? 0 : Convert.ToInt32(param.DiasTransaccionesAFuturo))));
                         * var FechaPasada = DateTime.Now.AddDays(-(param == null ? 0 : (param.DiasTransaccionesAPasado == null ? 99999 : Convert.ToInt32(param.DiasTransaccionesAPasado))));
                         *
                         * if (!(Fecha >= FechaPasada && Fecha <= FechaFutura))
                         * {
                         *  mensaje = "La fecha de la transacción no está permitida por los parámetros del módulo de importación";
                         *  return false;
                         * }
                         *
                         * /*
                         * if (param.DiasTransaccionesAFuturo > 0 && DateTime.Now.Date.AddDays(param.DiasTransaccionesAFuturo) < Fecha)
                         * {
                         *  mensaje = "La fecha de la transacción es superior a la fecha permitida por los parámetros del módulo de importación";
                         *  return false;
                         * }
                         */
                    }
                    break;

                case cl_enumeradores.eModulo.CONTA:
                    using (Entities_contabilidad db = new Entities_contabilidad())
                    {
                        var param = db.ct_parametro.Where(q => q.IdEmpresa == IdEmpresa).FirstOrDefault();
                        if (param == null)
                        {
                            mensaje = "No existen parámetros para el módulo de contabilidad";
                            return(false);
                        }

                        /*
                         * var FechaFutura = DateTime.Now.AddDays((param == null ? 0 : param.DiasTransaccionesAFuturo));
                         * var FechaPasada = DateTime.Now.AddDays(-(param == null ? 0 : (param.DiasTransaccionesAPasado == null ? 99999 : Convert.ToInt32(param.DiasTransaccionesAPasado))));
                         *
                         * if (!(Fecha >= FechaPasada && Fecha <= FechaFutura))
                         * {
                         *  mensaje = "La fecha de la transacción no está permitida por los parámetros del módulo de contabilidad";
                         *  return false;
                         * }
                         *
                         * if (param.DiasTransaccionesAFuturo > 0 && DateTime.Now.Date.AddDays(param.DiasTransaccionesAFuturo) < Fecha)
                         * {
                         *  mensaje = "La fecha de la transacción es superior a la fecha permitida por los parámetros del módulo de contabilidad";
                         *  return false;
                         * }
                         */
                    }
                    CierreModulo = db_conta.ct_CierrePorModuloPorSucursal.Where(q => q.IdEmpresa == IdEmpresa && q.IdSucursal == IdSucursal && q.CodModulo == "CONTA" && q.Cerrado).OrderByDescending(q => q.FechaFin).FirstOrDefault();
                    if (CierreModulo != null)
                    {
                        if (Fecha.Date <= CierreModulo.FechaFin)
                        {
                            mensaje = "El periodo de la transacción se encuentra cerrado para el módulo de contabilidad";
                            return(false);
                        }
                    }
                    break;

                case cl_enumeradores.eModulo.CAJA:
                    using (Entities_caja db = new Entities_caja())
                    {
                        var param = db.caj_parametro.Where(q => q.IdEmpresa == IdEmpresa).FirstOrDefault();
                        if (param == null)
                        {
                            mensaje = "No existen parámetros para el módulo de caja";
                            return(false);
                        }

                        /*
                         * var FechaFutura = DateTime.Now.AddDays((param == null ? 0 : param.DiasTransaccionesAFuturo));
                         * var FechaPasada = DateTime.Now.AddDays(-(param == null ? 0 : (param.DiasTransaccionesAPasado == null ? 99999 : Convert.ToInt32(param.DiasTransaccionesAPasado))));
                         *
                         * if (!(Fecha >= FechaPasada && Fecha <= FechaFutura))
                         * {
                         *  mensaje = "La fecha de la transacción no está permitida por los parámetros del módulo de caja";
                         *  return false;
                         * }
                         *
                         * if (param.DiasTransaccionesAFuturo > 0 && DateTime.Now.Date.AddDays(param.DiasTransaccionesAFuturo) < Fecha)
                         * {
                         *  mensaje = "La fecha de la transacción es superior a la fecha permitida por los parámetros del módulo de caja";
                         *  return false;
                         * }
                         */
                    }
                    CierreModulo = db_conta.ct_CierrePorModuloPorSucursal.Where(q => q.IdEmpresa == IdEmpresa && q.IdSucursal == IdSucursal && q.CodModulo == "CAJ" && q.Cerrado).OrderByDescending(q => q.FechaFin).FirstOrDefault();
                    if (CierreModulo != null)
                    {
                        if (Fecha.Date <= CierreModulo.FechaFin)
                        {
                            mensaje = "El periodo de la transacción se encuentra cerrado para el módulo de caja";
                            return(false);
                        }
                    }
                    break;

                case cl_enumeradores.eModulo.BANCO:
                    using (Entities_banco db = new Entities_banco())
                    {
                        var param = db.ba_parametros.Where(q => q.IdEmpresa == IdEmpresa).FirstOrDefault();
                        if (param == null)
                        {
                            mensaje = "No existen parámetros para el módulo de bancos";
                            return(false);
                        }

                        /*
                         * var FechaFutura = DateTime.Now.AddDays((param == null ? 0 : param.DiasTransaccionesAFuturo));
                         * var FechaPasada = DateTime.Now.AddDays(-(param == null ? 0 : (param.DiasTransaccionesAPasado == null ? 99999 : Convert.ToInt32(param.DiasTransaccionesAPasado))));
                         *
                         * if (!(Fecha >= FechaPasada && Fecha <= FechaFutura))
                         * {
                         *  mensaje = "La fecha de la transacción no está permitida por los parámetros del módulo de bancos";
                         *  return false;
                         * }
                         *
                         * if (param.DiasTransaccionesAFuturo > 0 && DateTime.Now.Date.AddDays(param.DiasTransaccionesAFuturo) < Fecha)
                         * {
                         *  mensaje = "La fecha de la transacción es superior a la fecha permitida por los parámetros del módulo de bancos";
                         *  return false;
                         * }
                         */
                    }
                    CierreModulo = db_conta.ct_CierrePorModuloPorSucursal.Where(q => q.IdEmpresa == IdEmpresa && q.IdSucursal == IdSucursal && q.CodModulo == "BAN" && q.Cerrado).OrderByDescending(q => q.FechaFin).FirstOrDefault();
                    if (CierreModulo != null)
                    {
                        if (Fecha.Date <= CierreModulo.FechaFin)
                        {
                            mensaje = "El periodo de la transacción se encuentra cerrado para el módulo de bancos";
                            return(false);
                        }
                    }
                    break;

                case cl_enumeradores.eModulo.CXC:
                    using (Entities_cuentas_por_cobrar db = new Entities_cuentas_por_cobrar())
                    {
                        var param = db.cxc_Parametro.Where(q => q.IdEmpresa == IdEmpresa).FirstOrDefault();
                        if (param == null)
                        {
                            mensaje = "No existen parámetros para el módulo de cuentas por cobrar";
                            return(false);
                        }

                        /*
                         * var FechaFutura = DateTime.Now.AddDays((param == null ? 0 : param.DiasTransaccionesAFuturo));
                         * var FechaPasada = DateTime.Now.AddDays(-(param == null ? 0 : (param.DiasTransaccionesAPasado == null ? 99999 : Convert.ToInt32(param.DiasTransaccionesAPasado))));
                         *
                         * if (!(Fecha >= FechaPasada && Fecha <= FechaFutura))
                         * {
                         *  mensaje = "La fecha de la transacción no está permitida por los parámetros del módulo de cuentas por cobrar";
                         *  return false;
                         * }
                         *
                         * if (param.DiasTransaccionesAFuturo > 0 && DateTime.Now.Date.AddDays(param.DiasTransaccionesAFuturo) < Fecha)
                         * {
                         *  mensaje = "La fecha de la transacción es superior a la fecha permitida por los parámetros del módulo de cuentas por cobrar";
                         *  return false;
                         * }
                         */
                    }
                    CierreModulo = db_conta.ct_CierrePorModuloPorSucursal.Where(q => q.IdEmpresa == IdEmpresa && q.IdSucursal == IdSucursal && q.CodModulo == "CXC" && q.Cerrado).OrderByDescending(q => q.FechaFin).FirstOrDefault();
                    if (CierreModulo != null)
                    {
                        if (Fecha.Date <= CierreModulo.FechaFin)
                        {
                            mensaje = "El periodo de la transacción se encuentra cerrado para el módulo de cuentas por cobrar";
                            return(false);
                        }
                    }
                    break;

                case cl_enumeradores.eModulo.CXP:
                    using (Entities_cuentas_por_pagar db = new Entities_cuentas_por_pagar())
                    {
                        var param = db.cp_parametros.Where(q => q.IdEmpresa == IdEmpresa).FirstOrDefault();
                        if (param == null)
                        {
                            mensaje = "No existen parámetros para el módulo de cuentas por pagar";
                            return(false);
                        }

                        /*
                         * var FechaFutura = DateTime.Now.AddDays((param == null ? 0 : param.DiasTransaccionesAFuturo));
                         * var FechaPasada = DateTime.Now.AddDays(-(param == null ? 0 : (param.DiasTransaccionesAPasado == null ? 99999 : Convert.ToInt32(param.DiasTransaccionesAPasado))));
                         *
                         * if (!(Fecha >= FechaPasada && Fecha <= FechaFutura))
                         * {
                         *  mensaje = "La fecha de la transacción no está permitida por los parámetros del módulo de cuentas por pagar";
                         *  return false;
                         * }
                         *
                         * if (param.DiasTransaccionesAFuturo > 0 && DateTime.Now.Date.AddDays(param.DiasTransaccionesAFuturo) < Fecha)
                         * {
                         *  mensaje = "La fecha de la transacción es superior a la fecha permitida por los parámetros del módulo de cuentas por pagar";
                         *  return false;
                         * }
                         */
                    }
                    CierreModulo = db_conta.ct_CierrePorModuloPorSucursal.Where(q => q.IdEmpresa == IdEmpresa && q.IdSucursal == IdSucursal && q.CodModulo == "CXP" && q.Cerrado).OrderByDescending(q => q.FechaFin).FirstOrDefault();
                    if (CierreModulo != null)
                    {
                        if (Fecha.Date <= CierreModulo.FechaFin)
                        {
                            mensaje = "El periodo de la transacción se encuentra cerrado para el módulo de cuentas por pagar";
                            return(false);
                        }
                    }
                    break;
                }

                db_general.Dispose();
                db_conta.Dispose();
                return(true);
            }
            catch (Exception)
            {
                db_conta.Dispose();
                db_general.Dispose();
                throw;
            }
        }