public ActionResult Aprobar(Pedido pedido)
        {
            try
            {
                var pedidoP = new PedidoProcess();
                var monto   = pedido.Monto;

                pedido          = pedidoP.GetByID(pedido.Id);
                pedido.Monto    = monto;
                pedido.Aprobado = "Si";
                pedido.Estado   = "Pendiente de Pago";
                pedidoP.Editar(pedido);


                Bitacora        bitacora  = new Bitacora("Aprobar", "Tabla Pedido", User.Identity.Name, DateTime.Now);
                BitacoraProcess bitacorap = new BitacoraProcess();
                bitacorap.Create(bitacora);

                TempData["Message"] = Recursos.Recurso.pedido1;

                return(RedirectToAction("Index"));
            }
            catch (Exception ex)
            {
                Bitacora        bitacora  = new Bitacora("Aprobar Tabla Pedido", ex.Message.ToString(), User.Identity.Name, DateTime.Now);
                BitacoraProcess bitacorap = new BitacoraProcess();
                bitacorap.Create(bitacora);
                return(View());
            }
        }
        public ActionResult PagarUsuario(int id)
        {
            try
            {
                var pedidoP = new PedidoProcess();
                var ped     = pedidoP.GetByID(id);
                int salida  = 0;

                var depositoP     = new DepositoProcess();
                var deposito      = new Deposito();
                var listadeposito = depositoP.Listar();

                foreach (var item in listadeposito)
                {
                    deposito = item;
                }

                ped.Estado = "Pagado";



                var ventaP = new VentaProcess();
                var venta  = new Venta();

                var     usuariop      = new UsuarioProcess();
                Usuario usuario       = new Usuario();
                var     listausuarios = usuariop.Listar();

                foreach (var item in listausuarios)
                {
                    if (item.UserName == User.Identity.Name)
                    {
                        usuario = item;
                    }
                }

                var materiaprimaprodP     = new MateriaPrimaProductoProcess();
                var materiaprima          = new List <StockMateriaPrimaDeposito>();
                var listamateriaprimaprod = materiaprimaprodP.Listar();


                foreach (var item in listamateriaprimaprod)
                {
                    if (item.CodProducto == ped.Codproducto)
                    {
                        var mt = new StockMateriaPrimaDeposito();
                        mt.Cantidad        = item.Cantidad * ped.Cantidad;
                        mt.CodMateriaPrima = item.CodMateriaPrima;
                        materiaprima.Add(mt);
                    }
                }


                var stockP      = new StockMateriaPrimaDepositoProcess();
                var reposicionP = new ReposicionProcess();

                var       ProveedormateriaprimaP = new MateriaPrimaProveedorProcess();
                Proveedor proveedor = new Proveedor();

                var materiaprimaProveedor = new MateriaPrimaProveedorProcess();


                var listastockmateriaprima = stockP.Listar();

                foreach (var item in listastockmateriaprima)
                {
                    double valor1 = 0;
                    double valor2 = 0;
                    foreach (var itemMP in materiaprima)
                    {
                        if (item.CodMateriaPrima == itemMP.CodMateriaPrima)
                        {
                            if (item.Cantidad < itemMP.Cantidad)
                            {
                                var reposicion = new Reposicion();
                                reposicion.CodMateriaPrima = item.CodMateriaPrima;
                                reposicion.CodDeposito     = deposito.Id;
                                reposicion.Fecha           = DateTime.Now;
                                reposicion.Cantidad        = itemMP.Cantidad - item.Cantidad;
                                reposicion.Estado          = "Reposicion Compra";

                                foreach (var itemProveedor in ProveedormateriaprimaP.Listarpormateriaprima(itemMP.CodMateriaPrima))
                                {
                                    if (valor2 == 0)
                                    {
                                        reposicion.Proveedor    = itemProveedor.Proveedor;
                                        reposicion.CodProveedor = itemProveedor.Proveedor.Id;
                                        valor2 = 1;
                                    }
                                }

                                foreach (var itemPROV in materiaprimaProveedor.Listarpormateriaprima(itemMP.CodMateriaPrima))
                                {
                                    if (itemPROV.CodMateriaPrima == reposicion.CodMateriaPrima && itemPROV.CodProveedor == reposicion.CodProveedor)
                                    {
                                        valor1 = itemPROV.Precio;
                                    }
                                }
                                reposicion.Monto = valor1 * reposicion.Cantidad;
                                reposicionP.Crear(reposicion);
                                item.Cantidad = 0;
                                stockP.Edit(item);
                                salida = 1;
                            }
                            else
                            {
                                item.Cantidad = item.Cantidad - itemMP.Cantidad;
                                stockP.Edit(item);
                            }
                        }
                    }
                }

                venta.CodEmpleado = usuario.CodEmpleado;
                venta.CodPedido   = ped.Id;
                venta.Formadepago = "Efectivo";

                if (venta.Formadepago == "Efectivo" && ped.Comprador.SocioEstado == "Si")
                {
                    venta.Monto = ped.Monto * 0.90;
                }
                else
                {
                    if (venta.Formadepago == "Efectivo")
                    {
                        venta.Monto = ped.Monto * 0.95;
                    }
                    if (ped.Comprador.SocioEstado == "Si")
                    {
                        venta.Monto = ped.Monto * 0.95;
                    }
                }

                venta.Pagado = "Si";

                ped.Monto = venta.Monto;
                pedidoP.Editar(ped);

                var envioP = new EnvioProcess();
                var envio  = new Envio();

                envio.CodVenta       = ventaP.Crear(venta).Id;
                envio.Direccion      = ped.Comprador.Domicilio;
                envio.Estado         = "En Espera";
                envio.Fechadellegada = DateTime.Now;
                DateTime today = DateTime.Now;
                if (salida == 1)
                {
                    envio.Fechadesalida = today.AddDays(14);
                }
                else
                {
                    envio.Fechadesalida = today.AddDays(7);
                }


                envioP.Crear(envio);

                TempData["Message"] = Recursos.Recurso.pedido3;

                Bitacora        bitacora  = new Bitacora("Pagar", "Tabla Pedido", User.Identity.Name, DateTime.Now);
                BitacoraProcess bitacorap = new BitacoraProcess();
                bitacorap.Create(bitacora);


                return(RedirectToAction("IndexUsuario"));
            }
            catch (Exception ex)
            {
                Bitacora        bitacora  = new Bitacora("Pagar Tabla Pedido", ex.Message.ToString(), User.Identity.Name, DateTime.Now);
                BitacoraProcess bitacorap = new BitacoraProcess();
                bitacorap.Create(bitacora);
                return(View());
            }
        }