private bool validarPedidoEntrega(PedidoEntrega pedidoEntrega)
        {
            if (pedidoEntrega.FechaInicial == null || pedidoEntrega.FechaFinal == null)
            {
                XtraMessageBox.Show(@"Fecha inicial y fecha final requeridos",
                                    @"Adquisiciones", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return false;
            }

            var fechaInicial = pedidoEntrega.FechaInicial.Value;
            var fechaFinal = pedidoEntrega.FechaFinal.Value;

            if (fechaInicial.CompareTo(fechaFinal) > 0)
            {
                XtraMessageBox.Show(@"Fecha inicial debe ser menor o igual fecha final",
                                @"Adquisiciones", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return false;
            }

            decimal? suma = _pedidoDetalle.PedidoEntrega.Sum(entrega => entrega.Cantidad);

            suma += pedidoEntrega.Cantidad;

            if (suma > _pedidoDetalle.Cantidad )
            {
                XtraMessageBox.Show(@"La suma de los renglones debe coincidir con " + _pedidoDetalle.Cantidad,
                              @"Adquisiciones", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return false;
            }

            return true;
        }
        private void SpinEdit1KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Enter)
            {
                var pedidoEntrega = new PedidoEntrega();
                pedidoEntrega.FechaInicial = deFechaInicial.DateTime;
                pedidoEntrega.FechaFinal = deFechaFinal.DateTime;
                pedidoEntrega.Cantidad = seCantidad.Value;

                if (validarPedidoEntrega(pedidoEntrega))
                {
                    (bsPedidoEntrega.DataSource as List<PedidoEntrega>).Add(pedidoEntrega);
                    gvPedidoEntrega.RefreshData();
                }
            }
        }
Beispiel #3
0
        public void TestInsertarPedidoEntrega()
        {
            var pedido = new Pedido();

            pedido.FechaPedido = DateTime.Now;
            pedido.NumeroPedido = 215;
            pedido.CatTipopedido = new CatTipopedido(1);
            pedido.Proveedor = new Proveedor(97);
            pedido.Anexo = new Data.Entities.Anexo(1);
            pedido.Requisicion = new Requisicion(1);
            pedido.Fundamento = new Fundamento(1);
            pedido.IdReservaautoriza = null;
            pedido.CatArea = new CatArea(1100);
            pedido.ImporteDescuento = 100;
            pedido.Iva = new Iva(new IvaId(1,16));
            pedido.CatActividad = new CatActividad(1);
            pedido.CatPresupuesto = new CatPresupuesto(1);
            pedido.EstadoPedido = "A";
            pedido.ImporteTotal = 100;
            pedido.Observaciones = "aaaa";
            pedido.Usuario = new Usuario(4192);
            pedido.Almacen = new Almacen("C5");
            pedido.FechaModificacion = DateTime.Now;
            pedido.IpTerminal = "aaa";
            pedido.Modificacion = 1;
            pedido.Instituto = "eee";
            pedido.NumeroRequisicion = "zzzz";

            var pedidoDetalle = new PedidoDetalle();
            pedidoDetalle.Pedido = pedido;
            pedidoDetalle.RenglonPedido = 3;
            pedidoDetalle.Articulo = new Articulo(new ArticuloId(2,new Almacen("F")));
            pedidoDetalle.Marca = "dionisio";
            pedidoDetalle.Cantidad = 1562;
            pedidoDetalle.PrecioUnitario = 1;
            pedido.PedidoDetalle.Add(pedidoDetalle);

            var pedidoEntrega = new PedidoEntrega();
            pedidoEntrega.PedidoDetalle = pedidoDetalle;
            pedidoEntrega.Entrega = 15;
            pedidoEntrega.FechaInicial = DateTime.Now;
            pedidoEntrega.FechaFinal = DateTime.Now;
            pedidoEntrega.Cantidad = 15;
            pedidoDetalle.PedidoEntrega.Add(pedidoEntrega);

            PedidoDao.Merge(pedido);
        }
        public void GenerarPedidoAutomatico(Pedido pedidoCentinela, 
             Requisicion requisicion, DateTime fechaInicial, DateTime fechaFinal)
        {
            var fallos = FalloDao.ConsultarFalloByAnexo(requisicion.Anexo);

             foreach (var fallo in fallos)
            {
                var pedido = new Pedido();
                pedido.Almacen = pedidoCentinela.Almacen;
                pedido.Usuario = pedidoCentinela.Usuario;
                pedido.IpTerminal = Util.IpTerminal();
                pedido.FechaCaptura = PedidoDao.FechaServidor();
                pedido.FechaModificacion = PedidoDao.FechaServidor();
                pedido.FechaPedido = pedidoCentinela.FechaPedido;
                pedido.Fundamento = pedidoCentinela.Fundamento;
                pedido.CatActividad = pedidoCentinela.CatActividad;
                pedido.Iva = pedidoCentinela.Iva;
                pedido.CatPresupuesto = pedidoCentinela.CatPresupuesto;
                pedido.Observaciones = pedidoCentinela.Observaciones;
                pedido.Modificacion = 1;
                pedido.Instituto = fallo.Anexo.Instituto;
                pedido.NumeroPedido = PedidoDao.SiguienteNumeroPedido(pedido.Almacen, 1);
                pedido.CatTipopedido = new CatTipopedido(1);//Pedido Mayor
                pedido.Proveedor = fallo.Cotizacion.Proveedor;
                pedido.Anexo = fallo.Anexo;
                pedido.CatArea = requisicion.CatArea;
                pedido.ImporteDescuento = new decimal(0.0);
                pedido.CatPresupuesto = pedido.CatPresupuesto;
                pedido.EstadoPedido = "P";
                pedido.ImporteTotal = ImporteTotal(requisicion, fallo.FalloDetalle);
                pedido.Requisicion = requisicion;

                pedido = PedidoDao.Merge(pedido);

                short renglonPedido = 1;
                //int entrega = 1;

                var requisicionesDetalle = RequisicionDao.CargarRequisicionDetalle(requisicion);

                foreach (var requisicionDetalle in requisicionesDetalle)
                {
                    fallo.FalloDetalle = FalloDao.ConsultarFalloDetalle(fallo);

                    foreach (var falloDetalle in fallo.FalloDetalle)
                    {
                        if(requisicionDetalle.Articulo == falloDetalle.Articulo)
                        {
                            //Actualizamos la cantidad pedida fallo
                            falloDetalle.CantidadPed += requisicionDetalle.Cantidad;
                            FalloDetalleDao.Merge(falloDetalle);

                            var pedidoDetalle = new PedidoDetalle();
                            pedidoDetalle.Pedido = pedido;
                            pedidoDetalle.RenglonPedido = renglonPedido;
                            pedidoDetalle.Articulo = falloDetalle.Articulo;
                            pedidoDetalle.Cantidad = requisicionDetalle.Cantidad;
                            pedidoDetalle.PrecioUnitario = falloDetalle.PrecioFallo;
                            //pedidoDetalle.Marca = falloDetalle.

                            var pedidoEntrega = new PedidoEntrega();
                            pedidoEntrega.Entrega = 1;
                            pedidoEntrega.FechaInicial = fechaInicial;
                            pedidoEntrega.FechaFinal = fechaFinal;
                            pedidoEntrega.Cantidad = requisicionDetalle.Cantidad;
                            pedidoEntrega.PedidoDetalle = pedidoDetalle;
                            //++entrega;

                            pedidoDetalle.PedidoEntrega.Add(pedidoEntrega);
                            PedidoDetalleDao.Merge(pedidoDetalle);
                            ++renglonPedido;

                        }
                    }
                }

                requisicion.Estatus = "P";
                RequisicionDao.Merge(requisicion);
             }
        }
        private void GvPedidoDetalleCellValueChanged(object sender, CellValueChangedEventArgs e)
        {
            var rowSelectValue = e.Value;

            //Para realizar las validaciones
            PedidoActual.PedidoDetalle = bsPedidoDetalle.DataSource as List<PedidoDetalle>;

            if (e.Column.AbsoluteIndex == 1)//posicionado en el articulo
            {
                if (TieneRepetidoArticulo((int?)(rowSelectValue)))
                {
                    XtraMessageBox.Show(@"Articulo repetido clave " + rowSelectValue,
                    @"Adquisiciones", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    gvPedidoDetalle.SetRowCellValue(e.RowHandle, "DescripcionArt", "");
                    gvPedidoDetalle.SetRowCellValue(e.RowHandle, "UnidadArt", "");
                    return;
                }

                try
                {
                    var cveArt = (int)rowSelectValue;
                    var almacen = cbxAlmacen.SelectedValue as Almacen;
                    //var partida = searchLookUpEditPartida.GetFocusedRow() as CatPartida;

                    if(PedidoActual.Partida == null)
                    {
                        XtraMessageBox.Show(@"No ha seleccionado partida",
                        @"Adquisiciones", MessageBoxButtons.OK, MessageBoxIcon.Error);
                        return;
                    }

                    var articuloSelect = PedidoService.AnexoService.
                        ArticuloDao.ArticuloPartida(cveArt, almacen, PedidoActual.Partida);

                    if(articuloSelect == null)
                    {
                        XtraMessageBox.Show(@"No existe la clave", @"Adquisiciones",
                        MessageBoxButtons.OK, MessageBoxIcon.Error);

                        gvPedidoDetalle.SetRowCellValue(e.RowHandle, "DescripcionArt", "");
                        gvPedidoDetalle.SetRowCellValue(e.RowHandle, "UnidadArt", "");

                        return;
                    }

                    gvPedidoDetalle.SetRowCellValue(e.RowHandle, "Articulo", articuloSelect);
                    gvPedidoDetalle.SetRowCellValue(e.RowHandle, "DescripcionArt", articuloSelect.DesArticulo);
                    gvPedidoDetalle.SetRowCellValue(e.RowHandle, "UnidadArt", articuloSelect.Unidad);
                    gvPedidoDetalle.SetRowCellValue(e.RowHandle, "Cantidad", 0);
                    gvPedidoDetalle.SetRowCellValue(e.RowHandle, "PrecioUnitario", 0.0);

                }
                catch (Exception ee)
                {
                    gvPedidoDetalle.SetRowCellValue(e.RowHandle, "DescripcionArt", "");
                    gvPedidoDetalle.SetRowCellValue(e.RowHandle, "UnidadArt", "");

                }
            }

            //posicionado en precio
            if (e.Column.AbsoluteIndex == 7)
            {
                var precio = double.Parse(rowSelectValue.ToString());
                var cantidad = gvPedidoDetalle.GetRowCellValue(e.RowHandle, "Cantidad");

                if (cantidad == null)
                    precio = 0.0;
                var importe = double.Parse(cantidad + "") * precio;
                gvPedidoDetalle.SetRowCellValue(e.RowHandle, "Importe", importe);
            }

            //posicionado en cantidad
            if(e.Column.AbsoluteIndex == 4)
            {
                var cantidad = decimal.Parse(rowSelectValue.ToString());

                if(cantidad != (decimal)0.0)
                {
                    if (deFechaInicial.DateTime.CompareTo(deFechaFinal.DateTime) > 0)
                    {
                        XtraMessageBox.Show(@"Fecha inicial debe ser menor o igual fecha final",
                                        @"Adquisiciones", MessageBoxButtons.OK, MessageBoxIcon.Error);
                        return;
                    }

                    //Agregar un pedido entrega default
                    var pedidoDetalleSelect = gvPedidoDetalle.GetFocusedRow() as PedidoDetalle;

                    if (deFechaInicial.EditValue != null && deFechaFinal.EditValue != null)
                    {
                        pedidoDetalleSelect.PedidoEntrega.Clear();
                        var pedidoEntrega = new PedidoEntrega(deFechaInicial.DateTime,
                                                    deFechaFinal.DateTime, cantidad);
                        pedidoDetalleSelect.PedidoEntrega.Add(pedidoEntrega);
                    }
                }
                //var articulo = gvPedidoDetalle.GetRowCellValue(e.RowHandle, "Articulo");
                //decimal? sumaPedidoEntrega = PedidoActual.PedidoDetalle.
                //First(detalle=>detalle.Articulo == articulo).
                //PedidoEntrega.Sum(entrega => entrega.Cantidad);
                //if (sumaPedidoEntrega > cantidad)
                //{
                //    XtraMessageBox.Show(@"La suma de los renglones del pedido entrega debe coincidir con " + cantidad,
                //             @"Adquisiciones", MessageBoxButtons.OK, MessageBoxIcon.Error);
                //}
            }

            SumTotal();
        }
        private void CmdUpdateFechaEntregaClick(object sender, EventArgs e)
        {
            if (deFechaInicial.DateTime.CompareTo(deFechaFinal.DateTime) > 0)
            {
                XtraMessageBox.Show(@"Fecha inicial debe ser menor o igual fecha final",
                                @"Adquisiciones", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }

            foreach(var pedidoDetalle in PedidoActual.PedidoDetalle)
            {
                pedidoDetalle.PedidoEntrega.Clear();

                if(deFechaInicial.EditValue != null && deFechaFinal.EditValue != null)
                {
                    var pedidoEntrega = new PedidoEntrega(deFechaInicial.DateTime,
                                                deFechaFinal.DateTime, pedidoDetalle.Cantidad);
                    pedidoDetalle.PedidoEntrega.Add(pedidoEntrega);
                }
            }

            XtraMessageBox.Show(@"Fechas de Entrega Actualizadas todas las claves",
                   @"Adquisiciones", MessageBoxButtons.OK, MessageBoxIcon.Information);
        }