Esempio n. 1
0
        private void TitulosConsignacionesDevueltaDetalle(VentaTitulo devolucionTitulo, int?cantidad, Guid tituloconsignaciondevuelta)
        {
            TitulosConsignacionesDevueltasDetalle titulosConsignacionesDevueltasDetalle =
                new TitulosConsignacionesDevueltasDetalle();

            titulosConsignacionesDevueltasDetalle.Id = Guid.NewGuid();
            titulosConsignacionesDevueltasDetalle.TituloConsignacionDevueltaId = tituloconsignaciondevuelta;
            titulosConsignacionesDevueltasDetalle.TituloId = devolucionTitulo.TituloId;
            titulosConsignacionesDevueltasDetalle.Cantidad = cantidad ?? 0;
            Uow.TitulosConsignacionesDevueltasDetalles.Agregar(titulosConsignacionesDevueltasDetalle);
        }
        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");
            }
        }