private void btn_agragar_venta_Click(object sender, RoutedEventArgs e)
        {
            if (dgrid_existencia.SelectedItem == null || !(dgrid_existencia.SelectedItem is objeto_existencia))
            {
                MessageBox.Show("Debe seleccionar un producto antes de agregar");
                return;
            }

            var existencia = dgrid_existencia.SelectedItem as objeto_existencia;

            bool existe_venta      = source_venta.Find(p => p.ExistenciaId == existencia.ExistenciaId) != null;
            bool existe_deuda      = source_deuda.Find(p => p.ExistenciaId == existencia.ExistenciaId) != null;
            bool existe_devolucion = source_devolucion.Find(p => p.ExistenciaId == existencia.ExistenciaId) != null;


            if (existe_venta)
            {
                dgrid_venta.SelectedIndex = dgrid_venta.Items.IndexOf(source_venta.Find(p => p.ExistenciaId == existencia.ExistenciaId));
                return;
            }
            var venta_new = new objeto_venta(existencia.ExistenciaId);

            source_venta.Add(venta_new);
            Metodos_Auxiliares.refresh(dgrid_venta, source_venta);
        }
Example #2
0
        private void dgrid_entrada_CellEditEnding(object sender, DataGridCellEditEndingEventArgs e)
        {
            int valor;

            if (!int.TryParse((e.EditingElement as TextBox).Text, out valor))
            {
                e.Cancel = true;
                return;
            }
            if (valor < 0)
            {
                valor = 0;
            }
            var objeto = e.Row.Item as entrada;
            var column = ((e.Column as DataGridBoundColumn).Binding as Binding).Path.Path;
            var obj    = source_entrada.Find(r => r.Codigo == objeto.Codigo);

            if (column == "CantidadBuenEstado")
            {
                obj.CantidadBuenEstado = valor;
            }
            else
            {
                obj.CantidadDefectuoso = valor;
            }
            Metodos_Auxiliares.refresh(dgrid_entrada, source_entrada);
        }
Example #3
0
        private void dg_trab_CellEditEnding(object sender, DataGridCellEditEndingEventArgs e)
        {
            var row = e.Row.Item as Trabajador;

            if (row.TrabajadorId == 0)
            {
                using (var db = new TiendaDbContext())
                {
                    var tienda     = db.Tiendas.First();
                    var trabajador = new Trabajador {
                        Nombre = (e.EditingElement as TextBox).Text,
                        ShopId = tienda.ShopId
                    };
                    if (trabajador.Nombre == "")
                    {
                        e.Cancel = true;
                        return;
                    }
                    db.Trabajadores.Add(trabajador);
                    db.SaveChanges();
                    data_trabajador.Add(trabajador);
                    Metodos_Auxiliares.refresh(dg_trab, data_trabajador);
                }
            }
            else
            if (MessageBox.Show("Esta seguro", "Cambio de Nombre", MessageBoxButton.YesNo) == MessageBoxResult.Yes)
            {
                using (var db = new TiendaDbContext())
                {
                    db.Trabajadores.Find((dg_trab.SelectedItem as Trabajador).TrabajadorId).Nombre = (e.EditingElement as TextBox).Text;
                    db.SaveChanges();
                }
            }
        }
Example #4
0
        void fillEntrada(Func <ReporteEntrada, bool> pred)
        {
            int total = 0;

            entrada_sp.Children.Clear();
            using (var db = new TiendaDbContext())
            {
                var           vs     = db.ReporteEntradas.Where(pred).ToList();
                List <string> header = new List <string> {
                    "Codigo", "Descripcion", "Cant. BE", "Cant. ME"
                };
                List <string> path = new List <string> {
                    "Codigo", "Descripcion", "CantidadBuenEstado", "CantidadDefectuoso"
                };
                foreach (var item in vs)
                {
                    List <objeto_entrada> source2 = new List <objeto_entrada>();
                    foreach (var i in item.Articulos)
                    {
                        source2.Add(new objeto_entrada(i.ArticuloEntradaId));
                    }
                    var p = new UserControllers.ReporteVentaController(Metodos_Auxiliares.make_dg(source2, header, path));
                    p.fecha_inform.Content  = item.Fecha.ToString();
                    p.nombre_inform.Content = "Almacen";
                    p.pago_inform.Content   = "Cant. de Productos: " + item.CantidadTotal.ToString();
                    p.Background            = Brushes.AntiqueWhite;
                    entrada_sp.Children.Add(p);
                    total += item.CantidadTotal;
                }
            }
            entrada_total.Content = total.ToString();
        }
        private void dgrid_entrada_CellEditEnding(object sender, DataGridCellEditEndingEventArgs e)
        {
            int valor;

            if (!int.TryParse((e.EditingElement as TextBox).Text, out valor))
            {
                e.Cancel = true;
                return;
            }
            valor = Math.Max(valor, 0);
            var        objeto = e.Row.Item as entrada;
            Existencia exist;

            using (var db = new TiendaDbContext())
                exist = db.Tiendas.First().Productos.Where(p => p.Codigo == objeto.Codigo).First();

            var column = e.Column as DataGridBoundColumn;

            if (column != null)
            {
                var bindingPath = (column.Binding as Binding).Path.Path;
                if (bindingPath == "CantidadBuenEstado")
                {
                    source_entrada.Find(a => a.Codigo == objeto.Codigo).CantidadBuenEstado = Math.Min(valor, exist.CantidadBuenEstado);
                }
                else
                {
                    source_entrada.Find(a => a.Codigo == objeto.Codigo).CantidadDefectuoso = Math.Min(valor, exist.CantidadDefectuoso);
                }
            }

            Metodos_Auxiliares.refresh(dgrid_entrada, source_entrada);
        }
Example #6
0
        void fillVentas(Func <ReporteVenta, bool> pred)
        {
            int    prods = 0;
            double total = 0;

            venta_sp.Children.Clear();
            using (var db = new TiendaDbContext())
            {
                var           vs     = db.ReporteVentas.Where(pred).ToList();
                List <string> header = new List <string> {
                    "Codigo", "Descripcion", "Cant. BE", "Cant. ME", "BE $", "ME $"
                };
                List <string> path = new List <string> {
                    "Codigo", "Descripcion", "CantidadBuenEstado", "CantidadDefectuoso", "PrecioBuenEstado", "PrecioDefectuoso"
                };
                foreach (var item in vs)
                {
                    List <objeto_venta> source2 = new List <objeto_venta>();
                    foreach (var i in item.Articulos)
                    {
                        source2.Add(new objeto_venta(i.ArticuloVentaId));
                    }
                    var p = new UserControllers.ReporteVentaController(Metodos_Auxiliares.make_dg(source2, header, path));
                    p.fecha_inform.Content  = item.Fecha.ToString();
                    p.nombre_inform.Content = item.Trabajador.Nombre;
                    p.pago_inform.Content   = "Pago: " + item.CostoTotal.ToString() + " $";
                    p.Background            = Brushes.AntiqueWhite;
                    venta_sp.Children.Add(p);
                    prods += item.CantidadTotal;
                    total += item.CostoTotal;
                }
            }
            venta_prod_total.Content     = prods.ToString();
            venta_ganancia_total.Content = total.ToString();
        }
        private void Button_Click_1(object sender, RoutedEventArgs e)
        {
            using (var db = new TiendaDbContext())
            {
                var art_deuda      = source_deuda.Where(p => p.CantidadTotal > 0).Count() > 0 ? source_deuda.Where(p => p.CantidadTotal > 0).ToList() : new List <objeto_deuda>();
                var art_devolucion = source_devolucion.Where(p => p.CantidadTotal > 0).Count() > 0 ? source_devolucion.Where(p => p.CantidadTotal > 0).ToList() : new List <objeto_devolucion>();
                var art_venta      = source_venta.Where(p => p.CantidadTotal > 0).Count() > 0 ? source_venta.Where(p => p.CantidadTotal > 0).ToList() : new List <objeto_venta>();

                if (art_deuda.Count() + art_devolucion.Count() + art_venta.Count() == 0)
                {
                    MessageBox.Show("No se ha agregado nada");
                    return;
                }

                var reporte_deuda      = objeto_deuda.generar_reporte(tienda_id, art_deuda, Fecha);
                var reporte_devolucion = objeto_devolucion.generar_reporte(tienda_id, art_devolucion, Fecha);
                var tienda             = db.Tiendas.Find(tienda_id);
                var reporte_venta      = objeto_venta.generar_reporte(tienda_id, tienda.Encargado.TrabajadorId, art_venta, Fecha);

                var informe = Metodos_Auxiliares.genera_informe(tienda_id, reporte_deuda, reporte_devolucion, reporte_venta, Fecha);

                foreach (var item in art_deuda)
                {
                    var existencia = db.Existencias.Find(item.ExistenciaId);
                    existencia.CantidadBuenEstado -= item.CantidadBuenEstado;
                    existencia.CantidadDefectuoso -= item.CantidadDefectuoso;
                    db.Entry(existencia).State     = EntityState.Modified;
                    db.SaveChanges();
                }

                foreach (var item in art_venta)
                {
                    var existencia = db.Existencias.Find(item.ExistenciaId);
                    existencia.CantidadBuenEstado -= item.CantidadBuenEstado;
                    existencia.CantidadDefectuoso -= item.CantidadDefectuoso;
                    db.Entry(existencia).State     = EntityState.Modified;
                    db.SaveChanges();
                }

                foreach (var item in art_devolucion)
                {
                    var existencia_origen  = db.Existencias.Find(item.ExistenciaId);
                    var existencia_destino = db.Existencias.Where(p => p.Codigo == item.Codigo).First();

                    existencia_origen.CantidadBuenEstado -= item.CantidadBuenEstado;
                    existencia_origen.CantidadDefectuoso -= item.CantidadDefectuoso;

                    existencia_destino.CantidadBuenEstado += item.CantidadBuenEstado;
                    existencia_destino.CantidadDefectuoso += item.CantidadDefectuoso;

                    db.Entry(existencia_origen).State  = EntityState.Modified;
                    db.Entry(existencia_destino).State = EntityState.Modified;

                    db.SaveChanges();
                }
            }
            this.NavigationService.GoBack();
        }
Example #8
0
        private void dgrid_venta_CellEditEnding(object sender, DataGridCellEditEndingEventArgs e)
        {
            int value;

            if (!int.TryParse((e.EditingElement as TextBox).Text, out value))
            {
                e.Cancel = true;

                return;
            }
            var column = e.Column as DataGridBoundColumn;

            if (column != null)
            {
                int id  = (dgrid_venta.SelectedItem as objeto_venta).ExistenciaId;
                var art = venta_source.Find(p => p.ExistenciaId == id);
                if (value < 0)
                {
                    value = 0;
                }


                var bindingPath = (column.Binding as Binding).Path.Path;
                if (bindingPath == "CantidadBuenEstado")
                {
                    if (art.CantidadExistenteBE < value)
                    {
                        value = art.CantidadExistenteBE;
                    }
                    venta_source.Find(s => s.ExistenciaId == id).CantidadBuenEstado = value;
                }
                else
                {
                    if (art.CantidadExistenteDefec < value)
                    {
                        value = art.CantidadExistenteDefec;
                    }
                    venta_source.Find(s => s.ExistenciaId == id).CantidadDefectuoso = value;
                }
            }
            Metodos_Auxiliares.refresh(dgrid_venta, venta_source);
            double costo_total = 0;

            venta_source.ForEach(p => costo_total += p.PrecioTotal);
            tbox_pagado.Text = costo_total.ToString();
        }
Example #9
0
        private void btn_Eliminar_Click(object sender, RoutedEventArgs e)
        {
            if (dgrid_venta.SelectedItem == null || !(dgrid_venta.SelectedItem is objeto_venta))
            {
                MessageBox.Show("Necesita seleccionar un producto para remover");
                return;
            }

            var obj_venta = dgrid_venta.SelectedItem as objeto_venta;


            venta_source.RemoveAt(venta_source.FindIndex(p => p.Codigo == obj_venta.Codigo));
            Metodos_Auxiliares.refresh(dgrid_venta, venta_source);
            double costo_total = 0;

            venta_source.ForEach(p => costo_total += p.PrecioTotal);
            tbox_pagado.Text = costo_total.ToString();
        }
        private void btn_retirar_deuda_Click(object sender, RoutedEventArgs e)
        {
            if (dgrid_deuda.SelectedItem == null || !(dgrid_deuda.SelectedItem is objeto_deuda))
            {
                MessageBox.Show("Necesita seleccionar un producto para retirar");
                return;
            }

            var objeto = dgrid_deuda.SelectedItem as objeto_deuda;

            bool existe_venta      = source_venta.Find(p => p.ExistenciaId == objeto.ExistenciaId) != null;
            bool existe_deuda      = source_deuda.Find(p => p.ExistenciaId == objeto.ExistenciaId) != null;
            bool existe_devolucion = source_devolucion.Find(p => p.ExistenciaId == objeto.ExistenciaId) != null;
            bool existe_existencia = source_existencia.Find(p => p.ExistenciaId == objeto.ExistenciaId) != null;

            source_deuda.RemoveAt(source_deuda.FindIndex(p => p.ExistenciaId == objeto.ExistenciaId));
            Metodos_Auxiliares.refresh(dgrid_deuda, source_deuda);
        }
Example #11
0
 private void delete_empleado_Click(object sender, RoutedEventArgs e)
 {
     if (dg_trab.SelectedItem == null || !(dg_trab.SelectedItem is Trabajador))
     {
         MessageBox.Show("Debe escoger un trabajador");
     }
     else
     {
         if (MessageBox.Show("Esta seguro", "Eliminar Trabajador", MessageBoxButton.YesNo) == MessageBoxResult.Yes)
         {
             using (var db = new TiendaDbContext())
             {
                 db.Trabajadores.Find((dg_trab.SelectedItem as Trabajador).TrabajadorId).eliminado = true;
                 db.SaveChanges();
                 data_trabajador.Remove(dg_trab.SelectedItem as Trabajador);
                 Metodos_Auxiliares.refresh(dg_trab, data_trabajador);
             }
         }
     }
 }
Example #12
0
        void fillDeuda(Func <ReporteDeuda, bool> pred)
        {
            double total  = 0;
            double pagada = 0;

            deuda_sp.Children.Clear();
            using (var db = new TiendaDbContext())
            {
                var           vs     = db.ReporteDeudas.Where(pred).ToList();
                List <string> header = new List <string> {
                    "Codigo", "Descripcion", "Cant. BE", "Cant. ME", "BE $", "ME $"
                };
                List <string> path = new List <string> {
                    "Codigo", "Descripcion", "CantidadBuenEstado", "CantidadDefectuoso", "PrecioBuenEstado", "PrecioDefectuoso"
                };
                foreach (var item in vs)
                {
                    List <objeto_deuda> source2 = new List <objeto_deuda>();
                    foreach (var i in item.Articulos)
                    {
                        source2.Add(new objeto_deuda(i.ArticuloDeudaId));
                    }
                    var p = new UserControllers.ReporteVentaController(Metodos_Auxiliares.make_dg(source2, header, path));
                    p.fecha_inform.Content  = item.Fecha.ToString();
                    p.nombre_inform.Content = item.Tienda.Nombre;
                    p.pago_inform.Content   = "Pagado: " + item.Pagado.ToString() + " $";
                    var l = new Label();
                    l.Content = "Deuda: " + item.CostoTotal.ToString() + " $";
                    l.Style   = (Style)FindResource("Label_inf");
                    p.dp.Children.Add(l);
                    p.Background = Brushes.AntiqueWhite;
                    deuda_sp.Children.Add(p);
                    total  += item.CostoTotal;
                    pagada += item.Pagado;
                }
            }
            deuda_total.Content        = total.ToString();
            deuda_pagado_total.Content = pagada.ToString();
        }
        private void btn_Eliminar_Click_1(object sender, RoutedEventArgs e)
        {
            var objeto_select = dgrid_entrada.SelectedItem;

            if (objeto_select == null || !(objeto_select is entrada))
            {
                MessageBox.Show("Antes de retirar necesita seleccionar un producto");
                return;
            }
            var exist = objeto_select as entrada;

            int existencia_id;

            using (var db = new TiendaDbContext())
                existencia_id = db.Tiendas.First().Productos.Where(p => p.Codigo == exist.Codigo).First().ExistenciaId;

            source_entrada.RemoveAt(source_entrada.FindIndex(p => p.Codigo == exist.Codigo));
            source_producto.Add(new objeto_existencia(existencia_id));

            Metodos_Auxiliares.refresh(dgrid_entrada, source_entrada);
            Metodos_Auxiliares.refresh(dgrid_productos, source_producto.Where(s => s.Codigo.ToLower().Contains(codigo_src) && s.Descripcion.ToLower().Contains(descrip_src)).ToList());
        }
        private void btn_Agregar_Click(object sender, RoutedEventArgs e)
        {
            var objeto_select = dgrid_productos.SelectedItem;

            if (objeto_select == null || !(objeto_select is objeto_existencia))
            {
                MessageBox.Show("Antes de agregar necesita seleccionar un producto");
                return;
            }
            var exist = objeto_select as objeto_existencia;

            if (source_entrada.Exists(p => p.Codigo == exist.Codigo))
            {
                var objeto = source_entrada.Find(p => p.Codigo == exist.Codigo);
                dgrid_entrada.SelectedIndex = dgrid_entrada.Items.IndexOf(objeto);
                return;
            }

            source_entrada.Add(new entrada(exist.Codigo, exist.Descripcion));

            Metodos_Auxiliares.refresh(dgrid_entrada, source_entrada);
            Metodos_Auxiliares.refresh(dgrid_productos, source_producto.Where(s => s.Codigo.ToLower().Contains(codigo_src) && s.Descripcion.ToLower().Contains(descrip_src)).ToList());
        }
Example #15
0
 private void btn_buscar_Click(object sender, RoutedEventArgs e)
 {
     codigo_src  = tbox_codigo.Text.ToLower();
     descrip_src = tbox_descripcion.Text.ToLower();
     Metodos_Auxiliares.refresh(dgrid_productos, productos_source.Where(exis => exis.Codigo.ToLower().Contains(codigo_src) && exis.Descripcion.ToLower().Contains(descrip_src)).ToList());
 }
Example #16
0
        void fillLiquidacion(Func <InformeLiquidacion, bool> pred)
        {
            int    art      = 0;
            double deuda    = 0;
            double ganancia = 0;

            liquidacion_sp.Children.Clear();
            List <UIElement> t;

            using (var db = new TiendaDbContext())
            {
                var vs = db.InformeLiquidaciones.Where(pred).ToList();
                foreach (var item in vs)
                {
                    t = new List <UIElement>();
                    if (item.ReporteVenta.CantidadTotal > 0)
                    {
                        List <string> header1 = new List <string> {
                            "Codigo", "Descripcion", "Cant. BE", "Cant. ME", "BE $", "ME $"
                        };
                        List <string> path1 = new List <string> {
                            "Codigo", "Descripcion", "CantidadBuenEstado", "CantidadDefectuoso", "PrecioBuenEstado", "PrecioDefectuoso"
                        };
                        List <objeto_venta> source1 = new List <objeto_venta>();
                        foreach (var i in item.ReporteVenta.Articulos)
                        {
                            source1.Add(new objeto_venta(i.ArticuloVentaId));
                        }
                        var ventas = new UserControllers.ReporteVentaController(Metodos_Auxiliares.make_dg(source1, header1, path1));
                        ventas.fecha_inform.Content  = item.ReporteVenta.Fecha.ToString();
                        ventas.nombre_inform.Content = item.ReporteVenta.Tienda.Nombre;
                        ventas.pago_inform.Content   = "Pago: " + item.ReporteVenta.CostoTotal.ToString() + " $";
                        ventas.Background            = Brushes.White;
                        t.Add(ventas);
                        art      += item.ReporteVenta.CantidadTotal;
                        ganancia += item.ReporteVenta.CostoTotal;
                    }
                    if (item.ReporteDevolucion.CantidadTotal > 0)
                    {
                        List <string> header2 = new List <string> {
                            "Codigo", "Descripcion", "Cant. BE", "Cant. ME"
                        };
                        List <string> path2 = new List <string> {
                            "Codigo", "Descripcion", "CantidadBuenEstado", "CantidadDefectuoso"
                        };
                        List <objeto_devolucion> source2 = new List <objeto_devolucion>();
                        foreach (var i in item.ReporteDevolucion.Articulos)
                        {
                            source2.Add(new objeto_devolucion(i.ArticuloDevolucionId));
                        }
                        var devoluciones = new UserControllers.ReporteVentaController(Metodos_Auxiliares.make_dg(source2, header2, path2));
                        devoluciones.fecha_inform.Content  = item.ReporteDevolucion.Fecha.ToString();
                        devoluciones.nombre_inform.Content = item.ReporteDevolucion.Tienda.Nombre;
                        devoluciones.pago_inform.Content   = "Cant. de Productos: " + item.ReporteDevolucion.CantidadTotal.ToString();
                        devoluciones.Background            = Brushes.White;
                        t.Add(devoluciones);
                        art += item.ReporteDevolucion.CantidadTotal;
                    }
                    if (item.ReporteDeuda.CantidadTotal > 0)
                    {
                        List <string> header3 = new List <string> {
                            "Codigo", "Descripcion", "Cant. BE", "Cant. ME", "BE $", "ME $"
                        };
                        List <string> path3 = new List <string> {
                            "Codigo", "Descripcion", "CantidadBuenEstado", "CantidadDefectuoso", "PrecioBuenEstado", "PrecioDefectuoso"
                        };
                        List <objeto_deuda> source3 = new List <objeto_deuda>();
                        foreach (var i in item.ReporteDeuda.Articulos)
                        {
                            source3.Add(new objeto_deuda(i.ReporteDeudaId));
                        }
                        var deudas = new UserControllers.ReporteVentaController(Metodos_Auxiliares.make_dg(source3, header3, path3));
                        deudas.fecha_inform.Content  = item.ReporteDeuda.Fecha.ToString();
                        deudas.nombre_inform.Content = item.ReporteDeuda.Tienda.Nombre;
                        deudas.pago_inform.Content   = "Pagado: " + item.ReporteDeuda.Pagado.ToString() + " $";
                        var l = new Label();
                        l.Content = "Deuda: " + item.ReporteDeuda.CostoTotal.ToString() + " $";
                        l.Style   = (Style)FindResource("Label_inf");
                        deudas.dp.Children.Add(l);
                        deudas.Background = Brushes.White;
                        t.Add(deudas);
                        art   += item.ReporteDeuda.CantidadTotal;
                        deuda += item.ReporteDeuda.CostoTotal;
                    }

                    var p = new UserControllers.ReporteVentaController(t.ToArray());
                    p.Background            = Brushes.AntiqueWhite;
                    p.fecha_inform.Content  = item.Fecha.ToString();
                    p.nombre_inform.Content = item.Tienda.Nombre.ToString();
                    p.pago_inform.Content   = "Cant. Articulos: " + (item.ReporteVenta.CantidadTotal + item.ReporteDevolucion.CantidadTotal + item.ReporteDeuda.CantidadTotal).ToString();
                    liquidacion_sp.Children.Add(p);
                    liquidacion_art.Content      = art.ToString();
                    liquidacion_deuda.Content    = deuda.ToString();
                    liquidacion_ganancia.Content = ganancia.ToString();
                }
            }
        }
        private void dgrid_deuda_CellEditEnding(object sender, DataGridCellEditEndingEventArgs e)
        {
            var columna = e.Column as DataGridBoundColumn;

            if (columna != null && (columna.Binding as Binding).Path.Path == "Pagado")
            {
                double value = 0;
                if (!double.TryParse((e.EditingElement as TextBox).Text, out value))
                {
                    e.Cancel = true;
                    return;
                }
                if (!(e.Row.Item is objeto_deuda))
                {
                    return;
                }
                var obj = e.Row.Item as objeto_deuda;

                value = Math.Max(0, value);
                value = Math.Min(value, obj.PrecioTotal);


                source_deuda.Find(s => s.Codigo == obj.Codigo).Pagado = value;

                CostoDeuda = 0;
                source_deuda.ForEach(s => CostoDeuda += s.Pagado);
                tbox_importe_total.Text = CostoTotal.ToString();
                Metodos_Auxiliares.refresh(dgrid_deuda, source_deuda);
                return;
            }
            int valor;

            if (!int.TryParse((e.EditingElement as TextBox).Text, out valor))
            {
                e.Cancel = true;
                return;
            }
            if (!(e.Row.Item is objeto_deuda))
            {
                return;
            }
            var objeto = e.Row.Item as objeto_deuda;

            bool existe_venta      = source_venta.Find(p => p.ExistenciaId == objeto.ExistenciaId) != null;
            bool existe_deuda      = source_deuda.Find(p => p.ExistenciaId == objeto.ExistenciaId) != null;
            bool existe_devolucion = source_devolucion.Find(p => p.ExistenciaId == objeto.ExistenciaId) != null;
            bool existe_existencia = source_existencia.Find(p => p.ExistenciaId == objeto.ExistenciaId) != null;

            int cantidadBuenEstado = 0;
            int cantidadDefectuoso = 0;

            if (existe_venta)
            {
                var venta = source_venta.Find(p => p.ExistenciaId == objeto.ExistenciaId);
                cantidadBuenEstado += venta.CantidadBuenEstado;
                cantidadDefectuoso += venta.CantidadDefectuoso;
            }
            if (existe_devolucion)
            {
                var devolucion = source_devolucion.Find(p => p.ExistenciaId == objeto.ExistenciaId);
                cantidadBuenEstado += devolucion.CantidadBuenEstado;
                cantidadDefectuoso += devolucion.CantidadBuenEstado;
            }

            var existencia     = source_existencia.Find(p => p.ExistenciaId == objeto.ExistenciaId);
            int cantidadBEmax  = existencia.CantidadBuenEstado - cantidadBuenEstado;
            int cantidadDefmax = existencia.CantidadDefectuoso - cantidadDefectuoso;

            cantidadBuenEstado = Math.Max(0, valor);
            cantidadDefectuoso = Math.Max(0, valor);
            cantidadBuenEstado = Math.Min(cantidadBEmax, valor);
            cantidadDefectuoso = Math.Min(cantidadDefmax, valor);

            var column = e.Column as DataGridBoundColumn;

            if (column != null)
            {
                var bindingPath = (column.Binding as Binding).Path.Path;
                if (bindingPath == "CantidadBuenEstado")
                {
                    source_deuda.Find(s => s.Codigo == objeto.Codigo).CantidadBuenEstado = cantidadBuenEstado;
                }
                else
                {
                    source_deuda.Find(s => s.Codigo == objeto.Codigo).CantidadDefectuoso = cantidadDefectuoso;
                }
            }

            Metodos_Auxiliares.refresh(dgrid_deuda, source_deuda);
        }
        private void dgrid_devolucion_CellEditEnding(object sender, DataGridCellEditEndingEventArgs e)
        {
            int valor;

            if (!int.TryParse((e.EditingElement as TextBox).Text, out valor))
            {
                e.Cancel = true;
                return;
            }
            if (!(e.Row.Item is objeto_devolucion))
            {
                return;
            }
            var objeto = e.Row.Item as objeto_devolucion;

            bool existe_venta      = source_venta.Find(p => p.ExistenciaId == objeto.ExistenciaId) != null;
            bool existe_deuda      = source_deuda.Find(p => p.ExistenciaId == objeto.ExistenciaId) != null;
            bool existe_devolucion = source_devolucion.Find(p => p.ExistenciaId == objeto.ExistenciaId) != null;
            bool existe_existencia = source_existencia.Find(p => p.ExistenciaId == objeto.ExistenciaId) != null;

            int cantidadBuenEstado = 0;
            int cantidadDefectuoso = 0;

            if (existe_deuda)
            {
                var deuda = source_deuda.Find(p => p.ExistenciaId == objeto.ExistenciaId);
                cantidadBuenEstado += deuda.CantidadBuenEstado;
                cantidadDefectuoso += deuda.CantidadDefectuoso;
            }
            if (existe_venta)
            {
                var venta = source_venta.Find(p => p.ExistenciaId == objeto.ExistenciaId);
                cantidadBuenEstado += venta.CantidadBuenEstado;
                cantidadDefectuoso += venta.CantidadBuenEstado;
            }

            var existencia     = source_existencia.Find(p => p.ExistenciaId == objeto.ExistenciaId);
            int cantidadBEmax  = existencia.CantidadBuenEstado - cantidadBuenEstado;
            int cantidadDefmax = existencia.CantidadDefectuoso - cantidadDefectuoso;

            cantidadBuenEstado = Math.Max(0, valor);
            cantidadDefectuoso = Math.Max(0, valor);
            cantidadBuenEstado = Math.Min(cantidadBEmax, valor);
            cantidadDefectuoso = Math.Min(cantidadDefmax, valor);


            var column = e.Column as DataGridBoundColumn;

            if (column != null)
            {
                var bindingPath = (column.Binding as Binding).Path.Path;
                if (bindingPath == "CantidadBuenEstado")
                {
                    source_devolucion.Find(s => s.Codigo == objeto.Codigo).CantidadBuenEstado = cantidadBuenEstado;
                }
                else
                {
                    source_devolucion.Find(s => s.Codigo == objeto.Codigo).CantidadDefectuoso = cantidadDefectuoso;
                }
            }

            Metodos_Auxiliares.refresh(dgrid_devolucion, source_devolucion);
        }