public ActionResult Edit(Procesos_Facturacion_Detalle procesos_Facturacion_Detalle)
        {
            Procesos_Facturacion_Detalle Temp_procesos_Facturacion_Detalle = db.Procesos_Facturacion_Detalle.Find(procesos_Facturacion_Detalle.id_proceso_facturacion_detalle);

            if (ModelState.IsValid)
            {
                UsuarioTO usuarioTO = Cache.DiccionarioUsuariosLogueados[User.Identity.Name];
                Temp_procesos_Facturacion_Detalle.id_usuario_modificacion = usuarioTO.usuario.id_usuario;
                Temp_procesos_Facturacion_Detalle.fecha_modificacion      = DateTime.Now;
                Temp_procesos_Facturacion_Detalle.id_cat_tipo_facturacion = procesos_Facturacion_Detalle.id_cat_tipo_facturacion;
                Temp_procesos_Facturacion_Detalle.cantidad = procesos_Facturacion_Detalle.cantidad;
                Temp_procesos_Facturacion_Detalle.costo    = procesos_Facturacion_Detalle.costo;
                Temp_procesos_Facturacion_Detalle.precio_venta_unitario = procesos_Facturacion_Detalle.precio_venta_unitario;
                Temp_procesos_Facturacion_Detalle.fecha_inicio          = procesos_Facturacion_Detalle.fecha_inicio;
                Temp_procesos_Facturacion_Detalle.fecha_fin             = procesos_Facturacion_Detalle.fecha_fin;
                db.Entry(Temp_procesos_Facturacion_Detalle).State       = EntityState.Modified;
                db.SaveChanges();
                return(RedirectToAction("Facturacion_Detalle", new { id = Temp_procesos_Facturacion_Detalle.id_proceso_facturacion }));
            }
            ViewBag.id_razon_social_grupo_factura = new SelectList(db.Razon_Social_Grupos_Factura.Where(x => x.activo && !x.eliminado && x.id_razon_social == procesos_Facturacion_Detalle.id_razon_social)
                                                                   .Select(x => new { id = x.id_razon_social_grupo_factura, nombre = x.correlativo + ". " + x.nombre }), "id", "nombre", procesos_Facturacion_Detalle.id_razon_social_grupo_factura);
            ViewBag.id_cat_tipo_facturacion = new SelectList(db.Cat_Tipos_Facturacion.Where(x => x.activo && !x.eliminado).Select(x => new { id = x.id_cat_tipo_facturacion, nombre = x.nombre }), "id", "nombre", procesos_Facturacion_Detalle.id_cat_tipo_facturacion);

            return(View(Temp_procesos_Facturacion_Detalle));
        }
        // GET: Customers/Procesos_Facturacion_Detalle/Details/5
        public ActionResult Details(int?id)
        {
            Procesos_Facturacion_Detalle procesos_Facturacion_Detalle = db.Procesos_Facturacion_Detalle.Find(id);

            if (procesos_Facturacion_Detalle == null)
            {
                return(HttpNotFound());
            }
            return(View(procesos_Facturacion_Detalle));
        }
        public ActionResult DeleteConfirmed(int id)
        {
            Procesos_Facturacion_Detalle procesos_Facturacion_Detalle = db.Procesos_Facturacion_Detalle.Find(id);
            UsuarioTO usuarioTO = Cache.DiccionarioUsuariosLogueados[User.Identity.Name];

            procesos_Facturacion_Detalle.id_usuario_eliminacion = usuarioTO.usuario.id_usuario;
            procesos_Facturacion_Detalle.fecha_eliminacion      = DateTime.Now;
            procesos_Facturacion_Detalle.eliminado       = true;
            procesos_Facturacion_Detalle.activo          = false;
            db.Entry(procesos_Facturacion_Detalle).State = EntityState.Modified;
            db.SaveChanges();
            return(RedirectToAction("Facturacion_Detalle", new { id = procesos_Facturacion_Detalle.id_proceso_facturacion }));
        }
        // GET: Customers/Procesos_Facturacion_Detalle/Delete/5
        public ActionResult Delete(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            Procesos_Facturacion_Detalle procesos_Facturacion_Detalle = db.Procesos_Facturacion_Detalle.Find(id);

            if (procesos_Facturacion_Detalle == null)
            {
                return(HttpNotFound());
            }
            return(View(procesos_Facturacion_Detalle));
        }
        // GET: Customers/Procesos_Facturacion_Detalle/Edit/5
        public ActionResult Edit(int?id)
        {
            Procesos_Facturacion_Detalle procesos_Facturacion_Detalle = db.Procesos_Facturacion_Detalle.Find(id);

            if (procesos_Facturacion_Detalle == null)
            {
                return(HttpNotFound());
            }
            ViewBag.id_razon_social_grupo_factura = new SelectList(db.Razon_Social_Grupos_Factura.Where(x => x.activo && !x.eliminado && x.id_razon_social == procesos_Facturacion_Detalle.id_razon_social)
                                                                   .Select(x => new { id = x.id_razon_social_grupo_factura, nombre = x.correlativo + ". " + x.nombre }), "id", "nombre", procesos_Facturacion_Detalle.id_razon_social_grupo_factura);
            ViewBag.id_cat_tipo_facturacion = new SelectList(db.Cat_Tipos_Facturacion.Where(x => x.activo && !x.eliminado).Select(x => new { id = x.id_cat_tipo_facturacion, nombre = x.nombre }), "id", "nombre", procesos_Facturacion_Detalle.id_cat_tipo_facturacion);

            return(View(procesos_Facturacion_Detalle));
        }
        public ActionResult Contrato_Servicio(Contratos_Servicios contrato, Contratos_Otros_Servicios servicio, int id_facturacion)
        {
            var Fecha_Proceso_factura = db.Procesos_Facturacion.Find(id_facturacion).fecha_proceso;

            try
            {
                UsuarioTO usuarioTO = Cache.DiccionarioUsuariosLogueados[User.Identity.Name];
                servicio.id_contrato_servicio = contrato.id_contrato_servicio;

                Procesos_Facturacion_Detalle facturacion_detalle = new Procesos_Facturacion_Detalle();
                facturacion_detalle.id_usuario_creacion = usuarioTO.usuario.id_usuario;
                facturacion_detalle.fecha_creacion      = DateTime.Now;
                facturacion_detalle.activo                  = true;
                facturacion_detalle.eliminado               = false;
                facturacion_detalle.id_cliente              = db.Razones_Sociales.Find(contrato.id_razon_social).id_cliente;
                facturacion_detalle.id_razon_social         = servicio.id_razon_social;
                facturacion_detalle.id_ubicacion            = servicio.id_ubicacion;
                facturacion_detalle.id_cat_tipo_facturacion = contrato.id_cat_tipo_facturacion.Value;
                facturacion_detalle.id_proceso_facturacion  = id_facturacion;
                facturacion_detalle.id_cat_tipo_facturacion = contrato.id_cat_tipo_facturacion.Value;
                facturacion_detalle.id_cat_estado_proceso_facturacion_detalle = (int)Catalogos.Estado_Proceso_Facturacion_Detalle.Activo;
                facturacion_detalle.id_razon_social_grupo_factura             = servicio.id_razon_social_grupo_factura;
                facturacion_detalle.id_cat_otro_servicio = servicio.id_cat_otro_servicio;
                facturacion_detalle.descripcion          = db.Cat_Otros_Servicios.Find(servicio.id_cat_otro_servicio).nombre;
                facturacion_detalle.cantidad             = servicio.cantidad;
                facturacion_detalle.costo = servicio.costo;
                facturacion_detalle.precio_venta_unitario = servicio.precio_venta_unitario;
                facturacion_detalle.fecha_inicio          = servicio.fecha_inicio;
                facturacion_detalle.fecha_fin             = servicio.fecha_fin;
                db.Procesos_Facturacion_Detalle.Add(facturacion_detalle);
                db.SaveChanges();

                return(RedirectToAction("Facturacion_Detalle", new { id = id_facturacion }));
            }
            catch (Exception)
            {
                ViewBag.Mes                = Fecha_Proceso_factura.ToString("MMMM", cultura_Chapina).ToUpper();
                ViewBag.Anio               = Fecha_Proceso_factura.Year;
                ViewBag.id_cliente         = new SelectList(db.Clientes.Where(x => x.activo && !x.eliminado).OrderBy(x => x.nombre).Select(x => new { id = x.id_cliente, nombre = x.nombre }), "id", "nombre");
                ViewBag.id_cat_tipo_agente = new SelectList(db.Cat_Tipos_Agente.Where(x => x.activo && !x.eliminado).OrderBy(x => x.nombre).Select(x => new { id = x.id_cat_tipo_agente, nombre = x.nombre }), "id", "nombre");
                ViewBag.id = id_facturacion;
                return(RedirectToAction("Contrato_Agente", new { id = id_facturacion }));
            }
        }
        public ActionResult Create(Procesos_Facturacion_Detalle procesos_Facturacion_Detalle)
        {
            if (ModelState.IsValid)
            {
                db.Procesos_Facturacion_Detalle.Add(procesos_Facturacion_Detalle);
                db.SaveChanges();
                return(RedirectToAction("Index"));
            }

            ViewBag.id_cliente                = new SelectList(db.Clientes, "id_cliente", "nombre", procesos_Facturacion_Detalle.id_cliente);
            ViewBag.id_razon_social           = new SelectList(db.Razones_Sociales, "id_razon_social", "razon_social", procesos_Facturacion_Detalle.id_razon_social);
            ViewBag.id_ubicacion              = new SelectList(db.Ubicaciones, "id_ubicacion", "direccion", procesos_Facturacion_Detalle.id_ubicacion);
            ViewBag.id_usuario_creacion       = new SelectList(db.Usuarios, "id_usuario", "email", procesos_Facturacion_Detalle.id_usuario_creacion);
            ViewBag.id_usuario_eliminacion    = new SelectList(db.Usuarios, "id_usuario", "email", procesos_Facturacion_Detalle.id_usuario_eliminacion);
            ViewBag.id_usuario_modificacion   = new SelectList(db.Usuarios, "id_usuario", "email", procesos_Facturacion_Detalle.id_usuario_modificacion);
            ViewBag.id_cat_otro_servicio      = new SelectList(db.Cat_Otros_Servicios, "id_cat_otro_servicio", "nombre", procesos_Facturacion_Detalle.id_cat_otro_servicio);
            ViewBag.id_cat_tipo_agente        = new SelectList(db.Cat_Tipos_Agente, "id_cat_tipo_agente", "nombre", procesos_Facturacion_Detalle.id_cat_tipo_agente);
            ViewBag.id_contrato_agente        = new SelectList(db.Contratos_Agentes, "id_contrato_agente", "descripcion_eliminacion", procesos_Facturacion_Detalle.id_contrato_agente);
            ViewBag.id_contrato_otro_servicio = new SelectList(db.Contratos_Otros_Servicios, "id_contrato_otro_servicio", "descripcion_eliminacion", procesos_Facturacion_Detalle.id_contrato_otro_servicio);
            ViewBag.id_contrato_servicio      = new SelectList(db.Contratos_Servicios, "id_contrato_servicio", "id_contrato_servicio", procesos_Facturacion_Detalle.id_contrato_servicio);
            ViewBag.id_proceso_facturacion    = new SelectList(db.Procesos_Facturacion, "id_proceso_facturacion", "id_proceso_facturacion", procesos_Facturacion_Detalle.id_proceso_facturacion);
            return(View(procesos_Facturacion_Detalle));
        }