private void dgv_pedidos_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {
            if (dgv_pedidos.CurrentCell is DataGridViewButtonCell)
            {
                int idPedido    = Convert.ToInt32(dgv_pedidos.Rows[dgv_pedidos.CurrentRow.Index].Cells["idPedido"].Value);
                int estadoDesde = Convert.ToInt32(dgv_pedidos.Rows[dgv_pedidos.CurrentRow.Index].Cells["idestado"].Value);
                int estadoHasta = estadoDesde;

                switch (estadoDesde)
                {
                case 2:
                    estadoHasta = 5;
                    if (tieneProductosFinalizados())
                    {
                        try
                        {
                            PedidoDAO.UpdateEstados(idPedido, estadoHasta);
                            MessageBox.Show("Fin Preparación ", "Exito", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1);
                            cargarGrilla();
                        }
                        catch (ApplicationException ex)
                        {
                            MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1);
                        }
                    }
                    else
                    {
                        MessageBox.Show("Faltan Productos Por Preparar ", "Atención", MessageBoxButtons.OK, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button1);
                    }
                    break;

                case 5:
                    estadoHasta = 6;

                    //Abrir Interface de Factura

                    int idPed = (int)dgv_pedidos.CurrentRow.Cells["idPedido"].Value;
                    RegistrarFactura factura = new RegistrarFactura();
                    factura._idPedido = idPed;
                    factura.ShowDialog();
                    //Si se registro la factura hacer
                    if (factura._estado == estados.guardado)
                    {
                        try
                        {
                            //PedidoDAO.UpdateEstados(idPedido, estadoHasta);
                            MessageBox.Show("Factura Registrada", "Exito", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1);
                            cargarGrilla();
                        }
                        catch (ApplicationException ex)
                        {
                            MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1);
                        }


                        Emitir_Factura fact = new Emitir_Factura();

                        fact.ShowDialog();
                    }


                    break;

                case 6:
                    estadoHasta = 7;


                    if (pagaronLaFactura(idPedido))
                    {
                        try
                        {
                            for (int i = 0; i < dgv_detalle_pedido.Rows.Count; i++)
                            {
                                DetallePedido det = new DetallePedido();
                                det.producto = new Producto()
                                {
                                    idProducto = (int)dgv_detalle_pedido.Rows[i].Cells["idProd"].Value
                                };
                                det.cantidad = (double)dgv_detalle_pedido.Rows[i].Cells["cant"].Value;


                                ProductoDAO.UpdateStockReservadoYActualdePedidoEntregado(det, idPedido, estadoHasta);
                            }

                            MessageBox.Show("Registro de Entrega Completado ", "Exito", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1);
                            cargarGrilla();
                        }
                        catch (ApplicationException ex)
                        {
                            MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1);
                        }
                    }
                    else
                    {
                        MessageBox.Show("Falta el Pago de la Factura ", "Atención", MessageBoxButtons.OK, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button1);
                    }


                    break;
                }
            }
        }
        private void dgv_pedidos_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {
            if (dgv_pedidos.CurrentCell is DataGridViewButtonCell)
            {
                int idPedido = Convert.ToInt32(dgv_pedidos.Rows[dgv_pedidos.CurrentRow.Index].Cells["idPedido"].Value);
                int estadoDesde = Convert.ToInt32(dgv_pedidos.Rows[dgv_pedidos.CurrentRow.Index].Cells["idestado"].Value);
                int estadoHasta = estadoDesde;

                switch (estadoDesde)
                {
                    case 2:
                        estadoHasta = 5;
                        if (tieneProductosFinalizados())
                        {
                            try
                            {
                                PedidoDAO.UpdateEstados(idPedido, estadoHasta);
                                MessageBox.Show("Fin Preparación ", "Exito", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1);
                                cargarGrilla();
                            }
                            catch (ApplicationException ex)
                            {
                                MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1);
                            }
                        }
                        else
                        {
                            MessageBox.Show("Faltan Productos Por Preparar ", "Atención", MessageBoxButtons.OK, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button1);
                        }
                        break;
                    case 5:
                        estadoHasta = 6;

                        //Abrir Interface de Factura

                        int idPed = (int)dgv_pedidos.CurrentRow.Cells["idPedido"].Value;
                        RegistrarFactura factura = new RegistrarFactura();
                        factura._idPedido = idPed;
                        factura.ShowDialog();
                        //Si se registro la factura hacer
                        if (factura._estado==estados.guardado)
                        {
                            try
                            {
                                //PedidoDAO.UpdateEstados(idPedido, estadoHasta);
                                MessageBox.Show("Factura Registrada", "Exito", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1);
                                cargarGrilla();
                            }
                            catch (ApplicationException ex)
                            {
                                MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1);
                            }

                            Emitir_Factura fact = new Emitir_Factura();

                            fact.ShowDialog();
                        }

                        break;
                    case 6:
                        estadoHasta = 7;

                        if (pagaronLaFactura(idPedido))
                        {
                            try
                            {

                                for (int i = 0; i < dgv_detalle_pedido.Rows.Count; i++)
                                {
                                    DetallePedido det = new DetallePedido();
                                    det.producto = new Producto() { idProducto = (int)dgv_detalle_pedido.Rows[i].Cells["idProd"].Value };
                                    det.cantidad = (double)dgv_detalle_pedido.Rows[i].Cells["cant"].Value;

                                    ProductoDAO.UpdateStockReservadoYActualdePedidoEntregado(det, idPedido, estadoHasta);
                                }

                                MessageBox.Show("Registro de Entrega Completado ", "Exito", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1);
                                cargarGrilla();
                            }
                            catch (ApplicationException ex)
                            {
                                MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1);
                            }
                        }
                        else
                        {
                            MessageBox.Show("Falta el Pago de la Factura ", "Atención", MessageBoxButtons.OK, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button1);
                        }

                        break;

                }
            }
        }