public ReportOrdenDeCompraArriendoEquipo(ordenDeCompraArriendoEquipo ordenDeCompraArriendoEquipo, detalleOrdenDeCompraArriendoEquipo detalleOrdenDeCompraArriendoEquipo)
        {  

             Context db = new Context();
             Proveedor Proveedor = db.Proveedores.Find(ordenDeCompraArriendoEquipo.ProveedorID);
             
             this.numeroOrdenCompraArriendoEquipo=ordenDeCompraArriendoEquipo.numeroOrdenCompraArriendoEquipo; 
             //this.FechaVigencia = Formateador.fechaCompletaToString(ordenDeCompraArriendoEquipo.FechaVigencia);
             this.Codigo = ordenDeCompraArriendoEquipo.Codigo;               
             this.fecha = Formateador.fechaCompletaToString(ordenDeCompraArriendoEquipo.fecha);
             this.anio = ordenDeCompraArriendoEquipo.anio;    
             this.nombreProveedor = Proveedor.nombreProveedor;
             this.rutProveedor = Proveedor.rut;
             this.direccionProveedor = Proveedor.domicilio;
             this.texto1 = ordenDeCompraArriendoEquipo.texto1;
             this.texto2 = ordenDeCompraArriendoEquipo.texto2;
             this.noIncluye=ordenDeCompraArriendoEquipo.noIncluye;
             this.tipoHorasMinimas =ordenDeCompraArriendoEquipo.tipoHorasMinimas.ToUpper();


             if(ordenDeCompraArriendoEquipo.plazoEntrega.Year==2000){
                this.plazoEntrega ="POR CONFIRMAR";
             }else{
                 this.plazoEntrega = formatearString.fechaPalabras(ordenDeCompraArriendoEquipo.plazoEntrega);
             }             

             this.personaRetira = ordenDeCompraArriendoEquipo.personaRetira;       
             this.formaPago = ordenDeCompraArriendoEquipo.formaPago;
             this.dirigidoA = ordenDeCompraArriendoEquipo.dirigidoA;
                  
             //DETALLE
             this.numeroItem =detalleOrdenDeCompraArriendoEquipo.numeroItem;  
             this.descripcionEquipo = detalleOrdenDeCompraArriendoEquipo.descripcionEquipo;       
             this.valorHora = detalleOrdenDeCompraArriendoEquipo.valorHora;       
             this.horasMinimasMensuales= detalleOrdenDeCompraArriendoEquipo.horasMinimasMensuales;
             this.duracionArriendo = detalleOrdenDeCompraArriendoEquipo.duracionArriendo;         
             this.lugarDeFaena = detalleOrdenDeCompraArriendoEquipo.lugarDeFaena;
             this.condicionesDePago = detalleOrdenDeCompraArriendoEquipo.condicionesDePago;              
        }
        public ActionResult Create([Bind(Include = "ordenDeCompraArriendoEquipoID,numeroOrdenCompraArriendoEquipo,ProveedorID,texto1,texto2,plazoEntrega,personaRetira,formaPago,fecha,tipoHorasMinimas,noIncluye")] ordenDeCompraArriendoEquipo ordenDeCompraArriendoEquipo,
            FormCollection form)
        {

            if (Session["ID"] == null || !roles.tienePermiso(numeroPermiso, int.Parse(Session["ID"].ToString())))
            {

                return RedirectToAction("Index", "Home");
            }
            int ordenDeCompraArriendoEquipoID = ordenDeCompraArriendoEquipo.ordenDeCompraArriendoEquipoID;
            ordenDeCompraArriendoEquipo.anio = DateTime.Now.Year;

            //DateTime PlazoEntrega = Formateador.fechaFormatoGuardar(form["plazoEntrega"]);
            if (!string.IsNullOrEmpty(form["plazoEntrega"]))
            {
                ordenDeCompraArriendoEquipo.plazoEntrega = Formateador.fechaFormatoGuardar(form["plazoEntrega"]);
            }
            else 
            {
                ordenDeCompraArriendoEquipo.plazoEntrega = new DateTime(2000, 1, 1);
            }

            ordenDeCompraArriendoEquipo.fechaLlegadaReal = new DateTime(2000,1,1);
            ordenDeCompraArriendoEquipo.fecha = Formateador.fechaFormatoGuardar(form["fecha"].ToString());

            ordenDeCompraArriendoEquipo.dirigidoA = db.Proveedores.Find(ordenDeCompraArriendoEquipo.ProveedorID).personaContacto1;

            ordenDeCompraArriendoEquipo.estado = "NUEVA";
            

            string[] descripcionProducto = Request.Form.GetValues("descripcionProducto");
            string[] valorHora = Request.Form.GetValues("valorHora");
            string[] horasMinimasMensuales = Request.Form.GetValues("horasMinimasMensuales");
            string[] duracionDelArriendo = Request.Form.GetValues("duracionDelArriendo");
            string[] lugarFaena = Request.Form.GetValues("lugarFaena");
            string[] condicionesPago = Request.Form.GetValues("condicionesPago");



            for (int i = 0; i < descripcionProducto.Length; i++)
            {
                detalleOrdenDeCompraArriendoEquipo detalle = new detalleOrdenDeCompraArriendoEquipo();

                detalle.ordenDeCompraArriendoEquipoID = ordenDeCompraArriendoEquipoID;
                detalle.horasMinimasMensuales = Convert.ToInt32(horasMinimasMensuales[i]);
                detalle.condicionesDePago = condicionesPago[i];
                detalle.descripcionEquipo = descripcionProducto[i];
                detalle.duracionArriendo = duracionDelArriendo[i];
                detalle.lugarDeFaena = lugarFaena[i];                
                detalle.numeroItem = i + 1;
                detalle.valorHora = valorHora[i];

                db.detalleOrdenCompraArriendoEquipos.Add(detalle);

            }


           // if (ModelState.IsValid)
            //{
                db.ordenDeCompraArriendoEquipoes.Add(ordenDeCompraArriendoEquipo);

                registro Registro = new registro();
                Registro.fecha = DateTime.Now;
                Registro.tipoAccion = "Crear";
                Registro.tipoDato = "ordenDeCompraArriendoEquipo";
                Registro.usuario = db.Usuarios.Find(int.Parse(Session["ID"].ToString())).nombreUsuario + " / " + db.Usuarios.Find(int.Parse(Session["ID"].ToString())).nombreCompleto;
                Registro.usuarioID = int.Parse(Session["ID"].ToString());
                Registro.descripcion = Registro.usuario + " Creo nueva orden de compra de arriendo de equipos " +ordenDeCompraArriendoEquipo.numeroOrdenCompraArriendoEquipo ;
                db.Registros.Add(Registro);

                db.SaveChanges();
                return RedirectToAction("Index");
            //}

            //return View(ordenDeCompraArriendoEquipo);
        }
        public ActionResult Edit([Bind(Include = "ordenDeCompraArriendoEquipoID,numeroOrdenCompraArriendoEquipo,ProveedorID,estado,anio,texto1,texto2,plazoEntrega,personaRetira,formaPago,fecha,tipoHorasMinimas,noIncluye")] ordenDeCompraArriendoEquipo ordenDeCompraArriendoEquipo, FormCollection form)
        {

            if (Session["ID"] == null || !roles.tienePermiso(numeroPermiso, int.Parse(Session["ID"].ToString())))
            {

                return RedirectToAction("Index", "Home");
            }

            int ordenDeCompraArriendoEquipoID = ordenDeCompraArriendoEquipo.ordenDeCompraArriendoEquipoID;
            var detalles = db.detalleOrdenCompraArriendoEquipos.Where(u => u.ordenDeCompraArriendoEquipoID == ordenDeCompraArriendoEquipoID);

            foreach (var detalle in detalles)
            {
                db.detalleOrdenCompraArriendoEquipos.Remove(detalle);
            }
            //db.SaveChanges();

            string[] descripcionProducto = Request.Form.GetValues("descripcionProducto");
            string[] valorHora = Request.Form.GetValues("valorHora");
            string[] horasMinimasMensuales = Request.Form.GetValues("horasMinimasMensuales");
            string[] duracionDelArriendo = Request.Form.GetValues("duracionDelArriendo");
            string[] lugarFaena = Request.Form.GetValues("lugarFaena");
            string[] condicionesPago = Request.Form.GetValues("condicionesPago");


            for (int i = 0; i < descripcionProducto.Length; i++)
            {
                detalleOrdenDeCompraArriendoEquipo detalle = new detalleOrdenDeCompraArriendoEquipo();

                detalle.ordenDeCompraArriendoEquipoID = ordenDeCompraArriendoEquipoID;
                detalle.horasMinimasMensuales = Convert.ToInt32(horasMinimasMensuales[i]);
                detalle.condicionesDePago = condicionesPago[i];
                detalle.descripcionEquipo = descripcionProducto[i];
                detalle.duracionArriendo = duracionDelArriendo[i];
                detalle.lugarDeFaena = lugarFaena[i];
                detalle.numeroItem = i + 1;
                detalle.valorHora = valorHora[i];

                db.detalleOrdenCompraArriendoEquipos.Add(detalle);

            }

            //EDITAR FECHAS
            if (!string.IsNullOrEmpty(form["plazoEntrega"]))
            {
                ordenDeCompraArriendoEquipo.plazoEntrega = Formateador.fechaFormatoGuardar(form["plazoEntrega"]);
            }
            else
            {
                ordenDeCompraArriendoEquipo.plazoEntrega = new DateTime(2000, 1, 1);
            }
            ordenDeCompraArriendoEquipo.fecha = Formateador.fechaFormatoGuardar(form["fecha"].ToString());
            ordenDeCompraArriendoEquipo.fechaLlegadaReal = new DateTime(2000, 1, 1);

            ordenDeCompraArriendoEquipo.dirigidoA = 
                db.Proveedores.Find(ordenDeCompraArriendoEquipo.ProveedorID).personaContacto1;

            //if (ModelState.IsValid)
            //{
                db.Entry(ordenDeCompraArriendoEquipo).State = EntityState.Modified;
                db.SaveChanges();
                return RedirectToAction("Index");
            //}
            //return View(ordenDeCompraArriendoEquipo);
        }
        public ReportOrdenDeCompraArriendoEquipo(ordenDeCompraArriendoEquipo ordenDeCompraArriendoEquipo, detalleOrdenDeCompraArriendoEquipo detalleOrdenDeCompraArriendoEquipo)
        {
            Context   db        = new Context();
            Proveedor Proveedor = db.Proveedores.Find(ordenDeCompraArriendoEquipo.ProveedorID);

            this.numeroOrdenCompraArriendoEquipo = ordenDeCompraArriendoEquipo.numeroOrdenCompraArriendoEquipo;
            //this.FechaVigencia = Formateador.fechaCompletaToString(ordenDeCompraArriendoEquipo.FechaVigencia);
            this.Codigo             = ordenDeCompraArriendoEquipo.Codigo;
            this.fecha              = Formateador.fechaCompletaToString(ordenDeCompraArriendoEquipo.fecha);
            this.anio               = ordenDeCompraArriendoEquipo.anio;
            this.nombreProveedor    = Proveedor.nombreProveedor;
            this.rutProveedor       = Proveedor.rut;
            this.direccionProveedor = Proveedor.domicilio;
            this.texto1             = ordenDeCompraArriendoEquipo.texto1;
            this.texto2             = ordenDeCompraArriendoEquipo.texto2;
            this.noIncluye          = ordenDeCompraArriendoEquipo.noIncluye;
            this.tipoHorasMinimas   = ordenDeCompraArriendoEquipo.tipoHorasMinimas.ToUpper();


            if (ordenDeCompraArriendoEquipo.plazoEntrega.Year == 2000)
            {
                this.plazoEntrega = "POR CONFIRMAR";
            }
            else
            {
                this.plazoEntrega = formatearString.fechaPalabras(ordenDeCompraArriendoEquipo.plazoEntrega);
            }

            this.personaRetira = ordenDeCompraArriendoEquipo.personaRetira;
            this.formaPago     = ordenDeCompraArriendoEquipo.formaPago;
            this.dirigidoA     = ordenDeCompraArriendoEquipo.dirigidoA;

            //DETALLE
            this.numeroItem            = detalleOrdenDeCompraArriendoEquipo.numeroItem;
            this.descripcionEquipo     = detalleOrdenDeCompraArriendoEquipo.descripcionEquipo;
            this.valorHora             = detalleOrdenDeCompraArriendoEquipo.valorHora;
            this.horasMinimasMensuales = detalleOrdenDeCompraArriendoEquipo.horasMinimasMensuales;
            this.duracionArriendo      = detalleOrdenDeCompraArriendoEquipo.duracionArriendo;
            this.lugarDeFaena          = detalleOrdenDeCompraArriendoEquipo.lugarDeFaena;
            this.condicionesDePago     = detalleOrdenDeCompraArriendoEquipo.condicionesDePago;
        }