private void BtnImprimir_Click(object sender, EventArgs e)
        {
            var listado = ObtenerListado();

            if (listado.Sum(x => x.CantidadADevolver) > 0)
            {
                using (var popup = new FrmReporteConsignacionesDevueltas(Uow, listado,
                                                                         ucFiltrosConsignaciones.ProveedorId.GetValueOrDefault(),
                                                                         ucFiltrosConsignaciones.Desde, ucFiltrosConsignaciones.Hasta))
                {
                    popup.ShowDialog();
                }
            }
        }
        private void BtnImprimir_Click(object sender, EventArgs e)
        {
            var listado = ObtenerListado();

            if (listado.Sum(x => x.CantidadADevolver) > 0)
            {
                using (var popup = new FrmReporteConsignacionesDevueltas(Uow, listado,
                                ucFiltrosConsignaciones.ProveedorId.GetValueOrDefault(),
                                ucFiltrosConsignaciones.Desde, ucFiltrosConsignaciones.Hasta))
                {
                    popup.ShowDialog(); 
                }
            }
        }
        private void GuardarCambios(List<ConsignacionesParaDevolver> listado)
        {
            if (listado.Sum(x => x.CantidadADevolver) > 0)
            {
                //Primero descuento para cada título, la cantidad a rendir distribuida en
                //todas sus lineas de TitulosConsignacionesVendidas
                var provId = ucFiltrosConsignaciones.ProveedorId;
                var desde = ucFiltrosConsignaciones.Desde;
                var hasta = ucFiltrosConsignaciones.Hasta.AddDays(1);

                var originales = Uow.TitulosConsignaciones.Listado()
                                    .Where(tc => (provId == null || provId == tc.ProveedorId)
                                      && desde < tc.FechaAlta && hasta > tc.FechaAlta && tc.CntCn > tc.CntDev + tc.CntVn)
                                    .OrderBy(x => x.FechaAlta).ToList();

                foreach (var titulo in listado)
                {
                    var cantADevolver = titulo.CantidadADevolver;
                    var consignaciones = originales.Where(tc => tc.TituloId == titulo.TituloId).ToList();

                    var i = 0;
                    while (cantADevolver > 0)
                    {
                        var consignacion = consignaciones.ElementAt(i);
                        var devolver = cantADevolver > consignacion.CntCn - consignacion.CntDev - consignacion.CntVn
                                         ? consignacion.CntCn - consignacion.CntVn - consignacion.CntDev
                                         : cantADevolver;

                        consignacion.CntDev += devolver;
                        Uow.TitulosConsignaciones.Modificar(consignacion);
                        cantADevolver -= Convert.ToInt32(devolver);
                        i++;
                    }
                }

                //Ahora guardo la tabla ConsignacionRendida
                var consignacionDevuelta = new TitulosConsignacionesDevuelta()
                                              {
                                                  FechaAlta = DateTime.Now,
                                                  LCN = CalcularLCN(),
                                                  Observaciones = TxtObservaciones.Text,
                                                  OperadorAltaId = Context.OperadorActual.Id,
                                                  ProveedorId = Proveedor.Id,
                                                  SucursalAltaId = Context.SucursalActual.Id
                                              };

                foreach (var t in listado)
                {
                    var detalle = new TitulosConsignacionesDevueltasDetalle()
                                      {
                                          Cantidad = t.CantidadADevolver,
                                          TituloConsignacionDevueltaId = consignacionDevuelta.Id,
                                          TituloId = t.TituloId.GetValueOrDefault()
                                      };
                    Uow.TitulosConsignacionesDevueltasDetalles.Agregar(detalle);
                }
                Uow.TitulosConsignacionesDevueltas.Agregar(consignacionDevuelta);

                Uow.Commit();

                if (chxImprimir.Checked)
                {
                    using (var popup = new FrmReporteConsignacionesDevueltas(Uow, listado,
                        ucFiltrosConsignaciones.ProveedorId.GetValueOrDefault(),
                        ucFiltrosConsignaciones.Desde, ucFiltrosConsignaciones.Hasta))
                    {
                        popup.ShowDialog();
                    }
                }

                ReiniciarVentana();
            }
            else
            {
                MessageBox.Show("No hay consignaciones por devolver");
            }
        }
        private void GuardarCambios(List <ConsignacionesParaDevolver> listado)
        {
            if (listado.Sum(x => x.CantidadADevolver) > 0)
            {
                //Primero descuento para cada título, la cantidad a rendir distribuida en
                //todas sus lineas de TitulosConsignacionesVendidas
                var provId = ucFiltrosConsignaciones.ProveedorId;
                var desde  = ucFiltrosConsignaciones.Desde;
                var hasta  = ucFiltrosConsignaciones.Hasta.AddDays(1);

                var originales = Uow.TitulosConsignaciones.Listado()
                                 .Where(tc => (provId == null || provId == tc.ProveedorId) &&
                                        desde <tc.FechaAlta && hasta> tc.FechaAlta && tc.CntCn > tc.CntDev + tc.CntVn)
                                 .OrderBy(x => x.FechaAlta).ToList();

                foreach (var titulo in listado)
                {
                    var cantADevolver  = titulo.CantidadADevolver;
                    var consignaciones = originales.Where(tc => tc.TituloId == titulo.TituloId).ToList();

                    var i = 0;
                    while (cantADevolver > 0)
                    {
                        var consignacion = consignaciones.ElementAt(i);
                        var devolver     = cantADevolver > consignacion.CntCn - consignacion.CntDev - consignacion.CntVn
                                         ? consignacion.CntCn - consignacion.CntVn - consignacion.CntDev
                                         : cantADevolver;

                        consignacion.CntDev += devolver;
                        Uow.TitulosConsignaciones.Modificar(consignacion);
                        cantADevolver -= Convert.ToInt32(devolver);
                        i++;
                    }
                }

                //Ahora guardo la tabla ConsignacionRendida
                var consignacionDevuelta = new TitulosConsignacionesDevuelta()
                {
                    FechaAlta      = DateTime.Now,
                    LCN            = CalcularLCN(),
                    Observaciones  = TxtObservaciones.Text,
                    OperadorAltaId = Context.OperadorActual.Id,
                    ProveedorId    = Proveedor.Id,
                    SucursalAltaId = Context.SucursalActual.Id
                };

                foreach (var t in listado)
                {
                    var detalle = new TitulosConsignacionesDevueltasDetalle()
                    {
                        Cantidad = t.CantidadADevolver,
                        TituloConsignacionDevueltaId = consignacionDevuelta.Id,
                        TituloId = t.TituloId.GetValueOrDefault()
                    };
                    Uow.TitulosConsignacionesDevueltasDetalles.Agregar(detalle);
                }
                Uow.TitulosConsignacionesDevueltas.Agregar(consignacionDevuelta);

                Uow.Commit();

                if (chxImprimir.Checked)
                {
                    using (var popup = new FrmReporteConsignacionesDevueltas(Uow, listado,
                                                                             ucFiltrosConsignaciones.ProveedorId.GetValueOrDefault(),
                                                                             ucFiltrosConsignaciones.Desde, ucFiltrosConsignaciones.Hasta))
                    {
                        popup.ShowDialog();
                    }
                }

                ReiniciarVentana();
            }
            else
            {
                MessageBox.Show("No hay consignaciones por devolver");
            }
        }