public static bool Insertar(Cobros cobro)
        {
            bool     paso     = false;
            Contexto contexto = new Contexto();
            Clientes cliente  = ClientesBLL.Buscar(cobro.ClienteId);

            try
            {
                if (cobro != null)
                {
                    cliente.Balance       -= cobro.Monto;
                    cliente.LimiteCredito += cobro.Monto;
                    ClientesBLL.Modificar(cliente);
                }
                contexto.Cobros.Add(cobro);
                paso = contexto.SaveChanges() > 0;
            }
            catch (Exception)
            {
                throw;
            }
            finally
            {
                contexto.Dispose();
            }

            return(paso);
        }
        public static bool Eliminar(int id)
        {
            bool     paso     = false;
            Contexto contexto = new Contexto();
            Cobros   cobro    = CobrosBLL.Buscar(id);

            try
            {
                if (cobro != null)
                {
                    Clientes cliente = ClientesBLL.Buscar(cobro.ClienteId);
                    cliente.Balance += cobro.Monto;
                    ClientesBLL.Modificar(cliente);
                }

                var cobrodelete = contexto.Cobros.Find(id);

                if (cobrodelete != null)
                {
                    contexto.Cobros.Remove(cobrodelete);
                    paso = contexto.SaveChanges() > 0;
                }
            }
            catch (Exception)
            {
                throw;
            }
            finally
            {
                contexto.Dispose();
            }

            return(paso);
        }
        public static bool Eliminar(int id)
        {
            Contexto contexto = new Contexto();
            bool     paso     = false;

            try
            {
                Ventas venta = VentasBLL.Buscar(id);

                if (venta != null)
                {
                    Clientes cliente = ClientesBLL.Buscar(venta.ClienteId);

                    if (venta.Tipo == "Credito")
                    {
                        if (venta.TotalGeneral > cliente.Balance)
                        {
                            cliente.Balance = 0;
                        }
                        else
                        {
                            cliente.Balance       -= venta.TotalGeneral;
                            cliente.LimiteCredito += venta.TotalGeneral;
                            ClientesBLL.Modificar(cliente);
                        }
                    }


                    foreach (var item in venta.VentasDetalle) //Afecta el inventario
                    {
                        var Producto = ProductosBLL.Buscar(item.ProductoId);
                        Producto.Inventario     += item.Cantidad;
                        Producto.ValorInventario = Producto.Inventario * Producto.PrecioUnitario;
                        ProductosBLL.Modificar(Producto);
                    }

                    contexto.Ventas.Remove(venta);
                    paso = (contexto.SaveChanges() > 0);
                }
            }
            catch (Exception)
            {
                throw;
            }
            finally
            {
                contexto.Dispose();
            }

            return(paso);
        }
        public static bool Modificar(Cobros cobro)
        {
            bool     paso          = false;
            Contexto contexto      = new Contexto();
            var      anterior      = CobrosBLL.Buscar(cobro.CobroId);
            var      MontoAnterior = anterior.Monto;
            Clientes cliente       = ClientesBLL.Buscar(anterior.ClienteId);
            Clientes NuevoCliente  = ClientesBLL.Buscar(cobro.ClienteId);

            try
            {
                if (anterior.ClienteId == cobro.ClienteId)
                {
                    cliente.Balance       = (cliente.Balance + anterior.Monto) - cobro.Monto;
                    cliente.LimiteCredito = (cliente.LimiteCredito - anterior.Monto) + cobro.Monto;
                    ClientesBLL.Modificar(cliente);
                }
                else
                {
                    NuevoCliente.Balance       -= cobro.Monto;
                    NuevoCliente.LimiteCredito += cobro.Monto;
                    ClientesBLL.Modificar(NuevoCliente);

                    cliente.Balance       += cobro.Monto;
                    cliente.LimiteCredito -= cobro.Monto;
                    ClientesBLL.Modificar(cliente);
                }

                contexto.Entry(cobro).State = EntityState.Modified;
                paso = contexto.SaveChanges() > 0;
            }
            catch (Exception)
            {
                throw;
            }
            finally
            {
                contexto.Dispose();
            }

            return(paso);
        }
        public static bool Modificar(Ventas venta)
        {
            Contexto contexto      = new Contexto();
            bool     paso          = false;
            var      ventaAnterior = Buscar(venta.VentaId);
            Clientes cliente       = ClientesBLL.Buscar(ventaAnterior.ClienteId);
            Clientes NuevoCliente  = ClientesBLL.Buscar(venta.ClienteId);

            try
            {
                if (ventaAnterior.ClienteId == venta.ClienteId)
                {
                    if (venta.Tipo == "Credito")
                    {
                        if (ventaAnterior.Tipo == "Contado")
                        {
                            cliente.Balance       += venta.TotalGeneral;
                            cliente.LimiteCredito -= venta.TotalGeneral;
                            ClientesBLL.Modificar(cliente);
                        }
                        else
                        {
                            if ((ventaAnterior.TotalGeneral != venta.TotalGeneral))
                            {
                                cliente.Balance       = ((cliente.Balance - ventaAnterior.TotalGeneral) + venta.TotalGeneral);
                                cliente.LimiteCredito = ((cliente.LimiteCredito + ventaAnterior.TotalGeneral) - venta.TotalGeneral);
                            }

                            ClientesBLL.Modificar(cliente);
                        }
                    }
                    else
                    {
                        if (ventaAnterior.Tipo == "Credito")
                        {
                            cliente.Balance       -= ventaAnterior.TotalGeneral;
                            cliente.LimiteCredito += venta.TotalGeneral;
                            ClientesBLL.Modificar(cliente);
                        }
                    }
                }
                else
                {
                    if (ventaAnterior.Tipo == "Credito")
                    {
                        if (venta.Tipo == "Contado")
                        {
                            cliente.Balance       -= ventaAnterior.TotalGeneral;
                            cliente.LimiteCredito += ventaAnterior.TotalGeneral;
                            ClientesBLL.Modificar(cliente);
                        }
                        else
                        {
                            if (venta.Tipo == "Credito")
                            {
                                cliente.Balance       -= ventaAnterior.TotalGeneral;
                                cliente.LimiteCredito += ventaAnterior.TotalGeneral;
                                ClientesBLL.Modificar(cliente);

                                NuevoCliente.Balance       += venta.TotalGeneral;
                                NuevoCliente.LimiteCredito -= venta.TotalGeneral;
                                ClientesBLL.Modificar(NuevoCliente);
                            }
                        }
                    }
                    else
                    {
                        if (venta.Tipo == "Credito")
                        {
                            NuevoCliente.Balance       += venta.TotalGeneral;
                            NuevoCliente.LimiteCredito -= venta.TotalGeneral;
                            ClientesBLL.Modificar(NuevoCliente);
                        }
                    }
                }

                foreach (var item in ventaAnterior.VentasDetalle)
                {
                    if (!venta.VentasDetalle.Exists(o => o.VentasDetalleId == item.VentasDetalleId))
                    {
                        var producto = ProductosBLL.Buscar(item.ProductoId);
                        producto.Inventario     += item.Cantidad;
                        producto.ValorInventario = producto.Inventario * producto.PrecioUnitario;
                        ProductosBLL.Modificar(producto);
                        contexto.Entry(item).State = EntityState.Deleted;
                    }
                }

                foreach (var item in venta.VentasDetalle)
                {
                    if (item.VentasDetalleId == 0)
                    {
                        contexto.Entry(item).State = EntityState.Added;
                        var producto = ProductosBLL.Buscar(item.ProductoId);
                        producto.Inventario     -= item.Cantidad;
                        producto.ValorInventario = producto.Inventario * producto.PrecioUnitario;
                        ProductosBLL.Modificar(producto);
                    }
                    else
                    {
                        contexto.Entry(item).State = EntityState.Modified;
                        var Producto = ProductosBLL.Buscar(item.ProductoId);
                        Producto.ValorInventario = Producto.Inventario * Producto.PrecioUnitario;
                        ProductosBLL.Modificar(Producto);
                    }
                }

                contexto.Entry(venta).State = EntityState.Modified;
                paso = (contexto.SaveChanges() > 0);
            }
            catch (Exception)
            {
                throw;
            }
            finally
            {
                contexto.Dispose();
            }

            return(paso);
        }