public static List<UnidadMedida> GetAll()
        {
            Acceso ac = new Acceso();

            List<UnidadMedida> unidades = new List<UnidadMedida>();

            string sql = "SELECT idUnidad, nombre FROM UnidadMedida  where descripcion <> ' '";
            SqlCommand cmd = new SqlCommand();
            SqlConnection conexion = new SqlConnection(ac.getCadenaConexion());

            try
            {
                conexion.Open();

                cmd.Connection = conexion;
                cmd.CommandText = sql;
                cmd.CommandType = CommandType.Text;

                SqlDataReader dr = cmd.ExecuteReader();

                UnidadMedida u;

                while (dr.Read())
                {
                    u = new UnidadMedida();

                    u.IDUnidad = Convert.ToInt32(dr["idUnidad"]);
                    u.Nombre = dr["nombre"].ToString();

                    unidades.Add(u);

                }

            }
            catch (InvalidOperationException ex)
            {
                throw new ApplicationException(ex.Message);
            }
            catch (SqlException ex)
            {
                throw new ApplicationException("Error en BD:" + ex.Message);
            }
            finally
            {
                conexion.Close();
            }

            return unidades ;
        }
Example #2
0
 public override int CompareTo(object obj)
 {
     if (obj is UnidadMedida)
     {
         UnidadMedida oVar = obj as UnidadMedida;
         return(String.Compare(this.ToString(), oVar.ToString(), true));
     }
     else if (obj is string)
     {
         return(String.Compare(this.ToString(), obj as string));
     }
     else
     {
         return(-1);
     }
 }
        private void dgv_pedidos_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {
            if (dgv_pedidos.CurrentCell is DataGridViewButtonCell)
            {
                if ((int)dgv_pedidos.Rows[dgv_pedidos.CurrentRow.Index].Cells["idestado"].Value==31)
                {
                    if (cerraronLosHIjo())
                    {
                        try
                        {
                            List<DetalleOrdenCompra> detalle = new List<DetalleOrdenCompra>();

                            double montoReal = 0;
                            for (int i = 0; i < dgv_detalle_pedido.Rows.Count; i++)//SE CARGA CADA DETALLE PARA LUEGO ACTUALIZAR STOCK DE MP
                            {
                                DetalleOrdenCompra det = new DetalleOrdenCompra();

                                det.producto = new Producto() { idProducto = (int)dgv_detalle_pedido.Rows[i].Cells["codProd"].Value };
                                det.cantidadRealIngresada = Convert.ToDouble(dgv_detalle_pedido.Rows[i].Cells["cantReal"].Value);
                                UnidadMedida u = new UnidadMedida();

                                if ((string)dgv_detalle_pedido.Rows[i].Cells["unidadReal"].Value == "g")
                                {
                                    u.Descripcion = "g";
                                }
                                else
                                    u.Descripcion = "";
                                det.producto.Unidad = u;
                                det.precio = (Double)dgv_detalle_pedido.Rows[i].Cells["precio"].Value;
                                if(((string)dgv_detalle_pedido.Rows[i].Cells["unidad"].Value).Equals("g"))
                                {
                                    det.precio = det.precio/1000;
                                }
                                montoReal += det.cantidadRealIngresada * det.precio;
                                detalle.Add(det);
                            }

                            OrdenDeCompra ord = new OrdenDeCompra();
                            ord.montoReal=montoReal;
                            ord.detalleOrdenCompra = detalle;
                            ord.idOrdenCompra = (int)dgv_pedidos.CurrentRow.Cells["idOrden"].Value;
                            ord.estado = new Estado() { idEstado = 32 };

                            OrdenDeCompraDAO.UpdateEstadoOrdenCompra(ord);

                            MessageBox.Show("Finalizado con éxito", "Exito", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1);

                        }
                        catch (ApplicationException ex)
                        {
                            MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1);
                        }
                    }
                    else
                    {
                        MessageBox.Show("Falta Registrar la Cantidades de Productos", "Atención", MessageBoxButtons.OK, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button1);
                    }

                    cargarGrilla();
                    dgv_detalle_pedido.Rows.Clear();
                }
            }
        }
 public void unidadSeleccionada(UnidadMedida uni)
 {
     unidad = uni;
 }
 public void UnidadTiempoSeleccionada(UnidadMedida  ut)
 {
     unidadTiempo  = ut;
 }
        public static List<DetalleFactura> GetDetalleFactura(int idFactura)
        {
            Acceso ac = new Acceso();

            List<DetalleFactura> detalles = new List<DetalleFactura>();

            string sql = "SELECT * from CONSULTAR_DETALLE_FACTURA where idFactura = @id";
            SqlCommand cmd = new SqlCommand();
            cmd.Parameters.AddWithValue("@id", idFactura);
            SqlConnection conexion = new SqlConnection(ac.getCadenaConexion());

            try
            {
                conexion.Open();

                cmd.Connection = conexion;
                cmd.CommandText = sql;
                cmd.CommandType = CommandType.Text;

                SqlDataReader dr = cmd.ExecuteReader();

                DetalleFactura detalle;
                Producto producto;
                Producto productoPedido;
                UnidadMedida unidad;
                UnidadMedida unidadPedido;

                while (dr.Read())
                {
                    unidad = new UnidadMedida();
                    unidadPedido = new UnidadMedida();

                    unidad.Nombre = dr["unidadProducto"].ToString();
                    unidadPedido.Nombre = dr["unidadProdPedido"].ToString();

                    producto = new Producto();
                    productoPedido = new Producto();

                    producto.Unidad = unidad;
                    producto.Nombre = dr["nombreProd"].ToString();
                    producto.idProducto = Convert.ToInt32(dr["idProducto"]);

                    productoPedido.Unidad = unidadPedido;
                    productoPedido.Nombre = dr["nombreProdPedido"].ToString();
                    productoPedido.idProducto = Convert.ToInt32(dr["idProductoPedido"]);

                    detalle = new DetalleFactura();

                    detalle.cantidad = Convert.ToDouble(dr["cantidad"]);
                    detalle.producto = producto;
                    detalle.detPedido = new DetallePedido() { producto = productoPedido };
                    detalle.subTotal = Convert.ToDouble(dr["subtotal"]);
                    detalle.iva = Convert.ToDouble(dr["iva"]);
                    detalle.idDetalle = Convert.ToInt32(dr["idDetalleFactura"]);

                    detalles.Add(detalle);

                }

            }
            catch (InvalidOperationException ex)
            {
                throw new ApplicationException(ex.Message);
            }
            catch (SqlException ex)
            {
                throw new ApplicationException("Error en BD: " + ex.Message);
            }
            finally
            {
                conexion.Close();
            }

            return detalles;
        }
 public void nuevoProducto()
 {
     nombreProducto="";
     stockRiesgo=0;
     precio=0;
     descripcion="";
     categoria=null;
     unidad=null;
     codProducto = 0;
     precioMayorista = 0;
     unidadTiempo = null;
     tiempo = 0;
     cantProductos = 0;
 }
        public static List<DetalleProducto> GetAllInsumosDeProductoFinal(int id,SqlTransaction tran, SqlConnection con)
        {
            Acceso ac = new Acceso();

            List<DetalleProducto> productos = new List<DetalleProducto>();

            string sql = "SELECT idProducto, idProductoDetalle, ProductoDetalle, cantidad, Producto, idCategoria, categoria, descCategoria, idUnidad, unidad, descUnidad, codProducto, idUnidadTiempo, UnidadTiempo, descUnidadTiempo, cantidadProductos, tiempoProduccion, tipoMaquinaria, idTipoMaquinaria  from CONSULTA_ESTRUCTURA_PRODUCTOS where idcategoria = 4 and idProducto =" + id ;
            SqlCommand cmd = new SqlCommand();
            SqlConnection conexion = new SqlConnection(ac.getCadenaConexion());

            try
            {

                cmd.Connection = con;
                cmd.Transaction  = tran;

                cmd.CommandText = sql;
                cmd.CommandType = CommandType.Text;

                SqlDataReader dr = cmd.ExecuteReader();

                DetalleProducto p;
                Categoria c;
                UnidadMedida u;
                UnidadMedida uT;
                TipoMaquinaria TM;

                while (dr.Read())
                {
                    u = new UnidadMedida();

                    u.IDUnidad = Convert.ToInt32(dr["idUnidad"]);
                    u.Nombre = dr["unidad"].ToString();
                    u.Descripcion = dr["descUnidad"].ToString();

                    c = new Categoria();
                    c.IDCategoria = Convert.ToInt32(dr["idCategoria"]);
                    c.Nombre = dr["categoria"].ToString();
                    c.Descripcion = dr["descCategoria"].ToString();

                    uT = new UnidadMedida();
                    uT.IDUnidad = Convert.ToInt32(dr["idUnidadTiempo"]);
                    uT.Nombre = dr["unidadTiempo"].ToString();
                    uT.Descripcion = dr["descUnidadTiempo"].ToString();

                    TM = new TipoMaquinaria();

                    TM.idTipoMaquinaria = Convert.ToInt32(dr["idTipoMaquinaria"].ToString());
                    TM.Nombre = dr["tipoMaquinaria"].ToString();

                    p = new DetalleProducto();

                    p.CODProducto = Convert.ToInt32(dr["codProducto"]);
                    p.Nombre = dr["ProductoDetalle"].ToString();
                    p.Categoria = c;
                    p.Unidad = u;
                    p.cantidad = double.Parse(dr["cantidad"].ToString());
                    p.idProducto = Convert.ToInt32(dr["idProductoDetalle"]);
                    p.idProductoPadre = Convert.ToInt32(dr["idProducto"]);
                    p.tiempoProduccion = double.Parse(dr["tiempoProduccion"].ToString());
                    p.cantidadProductos = double.Parse(dr["cantidadProductos"].ToString());
                    p.UnidadTiempo = uT;
                    p.TipoMaquinaria = TM;

                    //p.foto = (Image)(dr["foto"]);

                    productos.Add(p);

                }
                dr.Close();

            }

            catch (InvalidOperationException ex)
            {
                throw new ApplicationException(ex.Message);
            }
            catch (SqlException ex)
            {
                throw new ApplicationException("Error en BD: " + ex.Message);
            }
            finally
            {

            }

            return productos;
        }
        public static List<Producto> GetAllSinEstructura()
        {
            Acceso ac = new Acceso();

            List<Producto> productos = new List<Producto>();

            string sql = "SELECT codProducto, nombre, descripcion, precio, categoria, unidad, stockDeRiesgo, idCategoria, descCat, idUnidad, descUni, idProducto, idTipoMaquinaria, tipoMaquinaria from CONSULTA_PRODUCTOS P where (idCategoria = 1 OR idCategoria = 2) AND NOT EXISTS (Select 1 From CONSULTA_ESTRUCTURA_PRODUCTOS C where C.idProducto = P.idProducto)";
            SqlCommand cmd = new SqlCommand();
            SqlConnection conexion = new SqlConnection(ac.getCadenaConexion());

            try
            {
                conexion.Open();

                cmd.Connection = conexion;
                cmd.CommandText = sql;
                cmd.CommandType = CommandType.Text;

                SqlDataReader dr = cmd.ExecuteReader();

                Producto p;
                Categoria c;
                UnidadMedida u;
                TipoMaquinaria TM;

                while (dr.Read())
                {
                    u = new UnidadMedida();

                    u.IDUnidad = Convert.ToInt32(dr["idUnidad"]);
                    u.Nombre = dr["unidad"].ToString();
                    u.Descripcion = dr["descUni"].ToString();

                    c = new Categoria();
                    c.IDCategoria = Convert.ToInt32(dr["idCategoria"]);
                    c.Nombre = dr["categoria"].ToString();
                    c.Descripcion = dr["descCat"].ToString();

                    TM = new TipoMaquinaria();

                    TM.idTipoMaquinaria = Convert.ToInt32(dr["idTipoMaquinaria"].ToString());
                    TM.Nombre = dr["tipoMaquinaria"].ToString();

                    p = new Producto();

                    p.CODProducto = Convert.ToInt32(dr["codProducto"]);
                    p.Nombre = dr["nombre"].ToString();
                    p.Categoria = c;
                    p.Descripcion = dr["descripcion"].ToString();
                    p.Unidad = u;
                    p.StockRiesgo = Convert.ToInt32(dr["stockDeRiesgo"]);
                    p.precio = Convert.ToDouble(dr["precio"]);
                    p.idProducto = Convert.ToInt32(dr["idProducto"]);
                    p.tipoMaquina = TM;

                    //p.foto = (Image)(dr["foto"]);

                    productos.Add(p);

                }

            }

            catch (InvalidOperationException ex)
            {
                throw new ApplicationException(ex.Message);
            }
            catch (SqlException ex)
            {
                throw new ApplicationException("Error en BD: " + ex.Message);
            }
            finally
            {
                conexion.Close();
            }

            return productos;
        }
        private void btnAgregar_Click(object sender, EventArgs e)
        {
            if (txtCantidad.Text == "")
            {
                MessageBox.Show("Falta cantidad", "Atencion", MessageBoxButtons.OK, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button1);
                return;
            }

            DetalleProducto det;
            Categoria cat;
            UnidadMedida u;
            UnidadMedida uT;

            if (DGVEstructuraProductos.Rows.Count == 0)
            {
                det = new DetalleProducto();
                cat = new Categoria();
                u = new UnidadMedida();
                uT = new UnidadMedida();
                det.idProductoPadre = int.Parse(DGVProductos.SelectedRows[0].Cells["idProduct"].Value.ToString());
                det.idProducto = int.Parse(DGVProductosAAgregar.SelectedRows[0].Cells["idProd"].Value.ToString());
                det.Nombre = DGVProductosAAgregar.SelectedRows[0].Cells["nombreProductoAAgregar"].Value.ToString();

                cat.IDCategoria = int.Parse(DGVProductosAAgregar.SelectedRows[0].Cells["idCategoriaAAgregar"].Value.ToString());
                cat.Nombre = DGVProductosAAgregar.SelectedRows[0].Cells["categoriaAAgregar"].Value.ToString();

                det.cantidad = double.Parse(txtCantidad.Text);

                u.IDUnidad = int.Parse(DGVProductosAAgregar.SelectedRows[0].Cells["idUnidadAAgregar"].Value.ToString());
                u.Nombre = DGVProductosAAgregar.SelectedRows[0].Cells["unidadMedidaAAgregar"].Value.ToString();

                det.cantidadProductos = double.Parse(DGVProductosAAgregar.SelectedRows[0].Cells["cantidadDeProductos1"].Value.ToString());
                det.tiempoProduccion = double.Parse(DGVProductosAAgregar.SelectedRows[0].Cells["tiempoProduccion1"].Value.ToString());
                uT.Nombre = DGVProductosAAgregar.SelectedRows[0].Cells["unidadTiempo1"].Value.ToString();

                DGVEstructuraProductos.Rows.Add(det.idProductoPadre, det.idProducto, det.Nombre, det.cantidad, cat.Nombre, det.cantidadProductos, u.Nombre, det.tiempoProduccion, uT.Nombre);

            }
            else
            {
                int band = 0;
                if (estructuraProductoSeleccionado == false)
                {
                    for (int i = 0; i < DGVEstructuraProductos.Rows.Count; i++)
                    {
                        if (int.Parse(DGVEstructuraProductos.Rows[i].Cells["idProducto"].Value.ToString()) == int.Parse(DGVProductosAAgregar.SelectedRows[0].Cells["idProd"].Value.ToString()))
                        {
                            band = 1;
                            DGVEstructuraProductos.Rows[i].Cells["cantidad"].Value = txtCantidad.Text;
                            break;
                        }
                    }

                    if (band == 0)
                    {
                        det = new DetalleProducto();
                        cat = new Categoria();
                        u = new UnidadMedida();
                        uT = new UnidadMedida();
                        det.idProductoPadre = int.Parse(DGVProductos.SelectedRows[0].Cells["idProduct"].Value.ToString());
                        det.idProducto = int.Parse(DGVProductosAAgregar.SelectedRows[0].Cells["idProd"].Value.ToString());
                        det.Nombre = DGVProductosAAgregar.SelectedRows[0].Cells["nombreProductoAAgregar"].Value.ToString();

                        cat.IDCategoria = int.Parse(DGVProductosAAgregar.SelectedRows[0].Cells["idCategoriaAAgregar"].Value.ToString());
                        cat.Nombre = DGVProductosAAgregar.SelectedRows[0].Cells["categoriaAAgregar"].Value.ToString();

                        det.cantidad = double.Parse(txtCantidad.Text);

                        u.IDUnidad = int.Parse(DGVProductosAAgregar.SelectedRows[0].Cells["idUnidadAAgregar"].Value.ToString());
                        u.Nombre = DGVProductosAAgregar.SelectedRows[0].Cells["unidadMedidaAAgregar"].Value.ToString();

                        det.cantidadProductos = double.Parse(DGVProductosAAgregar.SelectedRows[0].Cells["cantidadDeProductos1"].Value.ToString());
                        det.tiempoProduccion = double.Parse(DGVProductosAAgregar.SelectedRows[0].Cells["tiempoProduccion1"].Value.ToString());
                        uT.Nombre = DGVProductosAAgregar.SelectedRows[0].Cells["unidadTiempo1"].Value.ToString();

                        DGVEstructuraProductos.Rows.Add(det.idProductoPadre, det.idProducto, det.Nombre, det.cantidad, cat.Nombre, det.cantidadProductos, u.Nombre, det.tiempoProduccion, uT.Nombre);
                    }
                }
                else
                {
                    DGVEstructuraProductos.SelectedRows[0].Cells["cantidad"].Value = txtCantidad.Text;
                }
            }
            btnAgregar.Enabled = false;
            DGVEstructuraProductos.Enabled = true;
            DGVProductosAAgregar.Enabled = true;
        }
        public static List<OrdenDeTrabajo> GetAllOTPadre()
        {
            Acceso ac = new Acceso();

            List<OrdenDeTrabajo> ordenes = new List<OrdenDeTrabajo>();

            string sql = "SELECT * from CONSULTAR_OT_Padre order by fechaCreacion desc, horaInicio desc";
            SqlCommand cmd = new SqlCommand();
            SqlConnection conexion = new SqlConnection(ac.getCadenaConexion());

            try
            {
                conexion.Open();

                cmd.Connection = conexion;
                cmd.CommandText = sql;
                cmd.CommandType = CommandType.Text;

                SqlDataReader dr = cmd.ExecuteReader();

                Producto p;

                UnidadMedida u;
                Maquinaria m;
                Estado e;
                OrdenDeTrabajo ot;
                Empleado em;
                while (dr.Read())
                {
                    em = new Empleado();
                    em.idEmpleado = Convert.ToInt32(dr["idEmpleado"]);
                    em.Nombre = dr["empleado"].ToString();
                    em.Apellido = dr["apellido"].ToString();

                    e = new Estado();
                    e.idEstado = Convert.ToInt32(dr["idEstado"]);
                    e.Nombre = dr["estado"].ToString();

                    m = new Maquinaria();
                    m.idMaquinaria = Convert.ToInt32(dr["idMaquinaria"]);
                    m.Nombre = dr["maquinaria"].ToString();

                    u = new UnidadMedida();

                    u.Nombre = dr["unidad"].ToString();

                    //c = new Categoria();
                    ////c.IDCategoria = Convert.ToInt32(dr["idCategoria"]);
                    //c.Nombre = dr["categoria"].ToString();

                    p = new Producto();
                    p.idProducto = Convert.ToInt32(dr["idProducto"]);
                    p.Nombre = dr["producto"].ToString();
                    //p.Categoria = c;
                    p.Unidad = u;

                    ot = new OrdenDeTrabajo();

                    ot.idOrdenTrabajo = Convert.ToInt32(dr["idOrdenTrabajo"]);
                    ot.idPlan = Convert.ToInt32(dr["idPlan"]);
                    ot.fechaPlan = Convert.ToDateTime(dr["fechaPlan"]);
                    ot.horaInicio = Convert.ToDateTime(dr["horaInicio"]);
                    ot.horaFin = Convert.ToDateTime(dr["horaFin"]);
                    ot.fechaCreacion = Convert.ToDateTime(dr["fechaCreacion"]);
                    ot.estado = e;
                    ot.empleado = em;
                    ot.maquinaria = m;
                    ot.producto = p;
                    ot.cantidadReal = Convert.ToDouble(dr["cantReal"]);
                    ot.cantidad = Convert.ToDouble(dr["cantidad"]);
                    ordenes.Add(ot);

                }

            }

            catch (InvalidOperationException ex)
            {
                throw new ApplicationException(ex.Message);
            }
            catch (SqlException ex)
            {
                throw new ApplicationException("Error en BD: " + ex.Message);
            }
            finally
            {
                conexion.Close();
            }

            return ordenes;
        }
        private void dgv_OTproductosPadres_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {
            if (dgv_OTproductosPadres.CurrentCell is DataGridViewButtonCell)
                {
                    if (dgv_OTproductosPadres.Rows[dgv_OTproductosPadres.CurrentRow.Index].DefaultCellStyle.BackColor != Color.LightGreen)
                    {
                        if (tieneHijosFinalizados() == true)
                        {
                            try
                            {
                                double cant = (double)dgv_OTproductosPadres.Rows[dgv_OTproductosPadres.CurrentRow.Index].Cells["cantidad"].Value;
                                if (dgv_OTproductosPadres.CurrentRow.Cells["cantiReal"].Value != String.Empty)
                                {
                                    double cantidadPlan = 0;
                                    double cantidadPedido = DetallePlanProduccionDAO.GetCantidadPedidosParaOT((int)dgv_OTproductosPadres.Rows[dgv_OTproductosPadres.CurrentRow.Index].Cells["idProducto"].Value, Convert.ToDateTime(dgv_OTproductosPadres.Rows[dgv_OTproductosPadres.CurrentRow.Index].Cells["fechaCreacion"].Value));
                                    cantidadPlan = cant - cantidadPedido;
                                    DateTime fecha = Convert.ToDateTime(dgv_OTproductosPadres.Rows[dgv_OTproductosPadres.CurrentRow.Index].Cells["fechaCreacion"].Value);

                                    OrdenDeTrabajo orden = new OrdenDeTrabajo();
                                    orden.idOrdenTrabajo = int.Parse(dgv_OTproductosPadres.Rows[dgv_OTproductosPadres.CurrentRow.Index].Cells["idOrden"].Value.ToString());
                                    Producto prod = new Producto();
                                    prod.idProducto = int.Parse(dgv_OTproductosPadres.Rows[dgv_OTproductosPadres.CurrentRow.Index].Cells["idProducto"].Value.ToString());
                                    prod.Nombre = dgv_OTproductosPadres.Rows[dgv_OTproductosPadres.CurrentRow.Index].Cells["nomProducto"].Value.ToString();
                                    UnidadMedida unidad = new UnidadMedida();
                                    unidad.Nombre = dgv_OTproductosPadres.Rows[dgv_OTproductosPadres.CurrentRow.Index].Cells["unidad"].Value.ToString();
                                    prod.Unidad = unidad;
                                    orden.fechaCreacion = fecha;
                                    orden.producto = prod;
                                    orden.cantidad = cant;
                                    ActualizarStock act = new ActualizarStock(orden, cantidadPedido,cantidadPlan);
                                    act.ShowDialog();
                                    if (orden.estado != null)
                                    {
                                        if (orden.estado.Nombre == "LISTO")
                                        {
                                            MessageBox.Show("Finalizado con éxito", "Exito", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1);
                                            dgv_OTproductosPadres.CurrentRow.DefaultCellStyle.BackColor = Color.LightGreen;
                                            dgv_OTproductosPadres.CurrentRow.Cells["cantiReal"].Value = orden.cantidadReal;
                                            cargarGrilla();
                                        }
                                    }
                                }
                            }
                            catch (FormatException ex)
                            {

                                MessageBox.Show("Ingrese solo números", "Error", MessageBoxButtons.OK, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button1);

                            }
                            catch (ApplicationException ex)
                            {
                                MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1);
                            }

                        }
                        else
                        {
                            MessageBox.Show("Primero debe Finalizar las Ordenes de Trabajo de los Productos Intermedios", "Error", MessageBoxButtons.OK, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button1);

                        }

                    }

            }
        }
        private void dgv_productos_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
        {
            Gestion_de_Producto gestProd = new Gestion_de_Producto();
            gestProd._estado = estados.modificar;

            Categoria cat = new Categoria()
            {
                IDCategoria = (int)dgv_productos.Rows[dgv_productos.CurrentRow.Index].Cells["codCategoria"].Value,
                Nombre = (string)dgv_productos.Rows[dgv_productos.CurrentRow.Index].Cells["cat"].Value,
            };
            UnidadMedida uni = new UnidadMedida()
            {
                IDUnidad = (int)dgv_productos.Rows[dgv_productos.CurrentRow.Index].Cells["idUnidad"].Value,
                Nombre = (string)dgv_productos.Rows[dgv_productos.CurrentRow.Index].Cells["Unidad"].Value,
            };
            TipoMaquinaria tm = new TipoMaquinaria ()
            {
                idTipoMaquinaria = (int)dgv_productos.Rows[dgv_productos.CurrentRow.Index].Cells["idTipoMaquinaria"].Value,
            };
            UnidadMedida  ut = new UnidadMedida ()
            {
                IDUnidad  = (int)dgv_productos.Rows[dgv_productos.CurrentRow.Index].Cells["idUnidadTiempo"].Value,
            };
            Producto prodModificar = new Producto()
            {
                CODProducto = (int)dgv_productos.Rows[dgv_productos.CurrentRow.Index].Cells["codigo"].Value,
                Nombre = (string)dgv_productos.Rows[dgv_productos.CurrentRow.Index].Cells["Nombre"].Value,
                Descripcion = (string)dgv_productos.Rows[dgv_productos.CurrentRow.Index].Cells["Desc"].Value,
                precio=(double)dgv_productos.Rows[dgv_productos.CurrentRow.Index].Cells["precio"].Value,
                StockRiesgo = (double )dgv_productos.Rows[dgv_productos.CurrentRow.Index].Cells["stock_riesg"].Value,
                Categoria =cat,
                Unidad=uni,
                UnidadTiempo = ut,
                foto  = (Byte[])dgv_productos.Rows[dgv_productos.CurrentRow.Index].Cells["foto"].Value,
                precioMayorista = (double)dgv_productos.Rows[dgv_productos.CurrentRow.Index].Cells["precioMayorista"].Value,
                tiempoProduccion = (double)dgv_productos.Rows[dgv_productos.CurrentRow.Index].Cells["tiempo"].Value,
                tipoMaquina = tm,
                cantidadProductos = (double)dgv_productos.Rows[dgv_productos.CurrentRow.Index].Cells["cantidadProductos"].Value,
            };

            gestProd._prodModificar=prodModificar;
            gestProd.ShowDialog();
            cargarGrilla();
        }
        private void dgv_OTproductosHijos_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {
            if (dgv_OTproductosHijos.CurrentCell is DataGridViewButtonCell)
            {
                if (dgv_OTproductosHijos.Rows[dgv_OTproductosHijos.CurrentRow.Index].DefaultCellStyle.BackColor != Color.LightGreen)
                {
                    try
                    {
                        double canti = (double)dgv_OTproductosHijos.Rows[dgv_OTproductosHijos.CurrentRow.Index].Cells["cant"].Value;
                        OrdenDeTrabajo orden = new OrdenDeTrabajo();
                        orden.idOrdenTrabajo = (int)dgv_OTproductosHijos.Rows[dgv_OTproductosHijos.CurrentRow.Index].Cells["idOT"].Value;
                        Producto prod = new Producto();
                        prod.idProducto =(int)dgv_OTproductosHijos.Rows[dgv_OTproductosHijos.CurrentRow.Index].Cells["idProd"].Value;
                        prod.Nombre = dgv_OTproductosHijos.Rows[dgv_OTproductosHijos.CurrentRow.Index].Cells["poductoDetalle"].Value.ToString();
                        UnidadMedida unidad = new UnidadMedida();
                        unidad.Nombre = dgv_OTproductosHijos.Rows[dgv_OTproductosHijos.CurrentRow.Index].Cells["unidadMedida"].Value.ToString();
                        prod.Unidad = unidad;
                        orden.producto = prod;
                        orden.cantidad = canti;
                        ActualizarStock act = new ActualizarStock(orden);
                        act.ShowDialog();
                        if (orden.estado != null)
                        {
                            if (orden.estado.Nombre == "LISTO")
                            {
                                MessageBox.Show("Finalizado con éxito", "Exito", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1);
                                dgv_OTproductosHijos.CurrentRow.DefaultCellStyle.BackColor = Color.LightGreen;
                                dgv_OTproductosHijos.CurrentRow.Cells["cantReal"].Value = orden.cantidadReal;
                            }
                        }
                    }
                    catch (ApplicationException ex)
                    {
                        MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1);
                    }
                    catch (FormatException ex)
                    {

                        MessageBox.Show("Ingrese solo números", "Error", MessageBoxButtons.OK, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button1);

                    }

                }

             }
            dgv_OTproductosHijos.ClearSelection();
        }
        public static List<DetalleOrdenCompra> GetDetalleXOrdenDeCompra(int oc)
        {
            Acceso ac = new Acceso();

            List<DetalleOrdenCompra> detalles = new List<DetalleOrdenCompra>();

            string sql = "SELECT * from CONSULTAR_DETALLE_ORDEN_COMPRA where idOrdenCompra = @oc";
            SqlCommand cmd = new SqlCommand();
            cmd.Parameters.AddWithValue("@oc", oc);
            SqlConnection conexion = new SqlConnection(ac.getCadenaConexion());

            try
            {
                conexion.Open();

                cmd.Connection = conexion;
                cmd.CommandText = sql;
                cmd.CommandType = CommandType.Text;

                SqlDataReader dr = cmd.ExecuteReader();

                DetalleOrdenCompra d;
                Producto p;
                UnidadMedida u;
                OrdenDeCompra o;

                while (dr.Read())
                {
                    o = new OrdenDeCompra();
                    o.idOrdenCompra = Convert.ToInt32(dr["idOrdenCompra"]);

                    u = new UnidadMedida();

                    u.IDUnidad = Convert.ToInt32(dr["idUnidadMedida"]);
                    u.Nombre = dr["Unidad"].ToString();

                    p = new Producto();

                    p.Nombre = dr["nombre"].ToString();
                    p.Unidad = u;
                    p.idProducto = Convert.ToInt16(dr["idProducto"]);
                    p.StockDisponible = Convert.ToDouble(dr["stockDisponible"]);
                    p.StockRiesgo = Convert.ToDouble(dr["stockdeRiesgo"]);
                    p.StockActual = Convert.ToDouble(dr["stockactual"]);
                    p.StockReservado = Convert.ToDouble(dr["stockreservado"]);

                    d = new DetalleOrdenCompra();

                    d.cantidad = Convert.ToDouble(dr["cantidad"]);
                    d.producto = p;
                    d.precio = Convert.ToDouble(dr["precio"]);
                    d.subTotal = Convert.ToDouble(dr["subTotal"]);
                    d.cantidadRealIngresada = Convert.ToDouble(dr["cantidadRealIngresada"]);
                    d.ordenCompra = o;

                    detalles.Add(d);

                }

            }
            catch (InvalidOperationException ex)
            {
                throw new ApplicationException(ex.Message);
            }
            catch (SqlException ex)
            {
                throw new ApplicationException("Error en BD: " + ex.Message);
            }
            finally
            {
                conexion.Close();
            }

            return detalles;
        }
        public static List<DetallePlanProduccion> GetDetalleXPlan(int plan)
        {
            Acceso ac = new Acceso();

             List<DetallePlanProduccion> detalles = new List<DetallePlanProduccion>();

             string sql = "SELECT * from CONSULTA_DETALLE_PLAN_PRODUCCION where idPlan = @plan";
             SqlCommand cmd = new SqlCommand();
             cmd.Parameters.AddWithValue("@plan", plan );
             SqlConnection conexion = new SqlConnection(ac.getCadenaConexion());

             try
             {
                 conexion.Open();

                 cmd.Connection = conexion;
                 cmd.CommandText = sql;
                 cmd.CommandType = CommandType.Text;

                 SqlDataReader dr = cmd.ExecuteReader();

                 DetallePlanProduccion  d;
                 Producto p;
                 UnidadMedida u;
                 Categoria c;

                 while (dr.Read())
                 {

                     u = new UnidadMedida();

                     u.IDUnidad = Convert.ToInt32(dr["idUnidadMedida"]);
                     u.Nombre = dr["unidad"].ToString();

                     p = new Producto();

                     p.CODProducto = Convert.ToInt32(dr["codProducto"]);
                     p.Nombre = dr["nombre"].ToString();
                     p.Unidad = u;
                     p.idProducto = Convert.ToInt16(dr["idProducto"]);

                     d = new DetallePlanProduccion ();

                     d.cantidadPLan = Convert.ToInt32(dr["cantidadPLan"]);
                     d.cantidadPedido = Convert.ToInt32(dr["cantidadPedido"]);
                     d.fechaProduccion = Convert.ToDateTime(dr["fechaProduccion"]);
                     d.producto = p;

                     detalles.Add(d);

                 }

             }
             catch (InvalidOperationException ex)
             {
                 throw new ApplicationException(ex.Message);
             }
             catch (SqlException ex)
             {
                 throw new ApplicationException("Error en BD: " + ex.Message);
             }
             finally
             {
                 conexion.Close();
             }

             return detalles;
        }
        public static List<ProductoXProveedor> buscarProductosXProveedor()
        {
            Acceso ac = new Acceso();

            List<ProductoXProveedor> productos = new List<ProductoXProveedor>();

            string sql = "SELECT idProveedor, idProducto, fecha, precio, nombre, descripcion, stockDisponible, stockDeRiesgo, stockActual, stockReservado, unidad, idUnidad, razonSocial, CUIT, nombreRepresentante, apellido, email, telefonoContacto, idCategoria from CONSULTAR_PRODUCTOS_X_PROVEEDOR order by nombre asc";
            SqlCommand cmd = new SqlCommand();
            SqlConnection conexion = new SqlConnection(ac.getCadenaConexion());

            try
            {
                conexion.Open();

                cmd.Connection = conexion;
                cmd.CommandText = sql;
                cmd.CommandType = CommandType.Text;

                SqlDataReader dr = cmd.ExecuteReader();

                Producto prod;
                Persona prov;
                Categoria c;
                UnidadMedida u;
                ProductoXProveedor PPP;

                while (dr.Read())
                {
                    u = new UnidadMedida();
                    u.IDUnidad = Convert.ToInt32(dr["idUnidad"]);
                    u.Nombre = dr["unidad"].ToString();

                    prod = new Producto();

                    prod.idProducto = Convert.ToInt32(dr["idProducto"]);
                    prod.Nombre = dr["nombre"].ToString();
                    prod.Descripcion = dr["descripcion"].ToString();
                    prod.Unidad = u;
                    prod.StockRiesgo = Convert.ToInt32(dr["stockDeRiesgo"]);
                    prod.StockDisponible = Convert.ToInt32(dr["stockDisponible"]);
                    prod.StockActual = Convert.ToInt32(dr["stockActual"]);
                    prod.StockReservado = Convert.ToInt32(dr["stockReservado"]);

                    prov = new Persona();

                    prov.NroProveedor = Convert.ToInt32(dr["idProveedor"]);
                    prov.RazonSocial = dr["razonSocial"].ToString();
                    prov.cuil = dr["CUIT"].ToString();
                    prov.Nombre = dr["nombreRepresentante"].ToString();
                    prov.Apellido = dr["apellido"].ToString();
                    prov.mail = dr["email"].ToString();
                    prov.telefono = dr["telefonoContacto"].ToString();
                    //prov.idPersona = Convert.ToInt32(dr["idPersona"]);

                    PPP = new ProductoXProveedor();

                    PPP.fechaPrecio = Convert.ToDateTime(dr["fecha"]);
                    PPP.precioProveedor = Convert.ToDouble(dr["precio"]);
                    PPP.producto = prod;
                    PPP.proveedor = prov;

                    productos.Add(PPP);
                }

            }

            catch (InvalidOperationException ex)
            {
                throw new ApplicationException(ex.Message);
            }
            catch (SqlException ex)
            {
                throw new ApplicationException("Error en BD: " + ex.Message);
            }
            finally
            {
                conexion.Close();
            }

            return productos;
        }
        public static List<ProductoXProveedor> GetByIdProd(int idProv)
        {
            Acceso ac = new Acceso();
            SqlConnection conexion = new SqlConnection(ac.getCadenaConexion());
            List <ProductoXProveedor >  productos = new List <ProductoXProveedor > ();
            SqlCommand cmd = new SqlCommand();
            string sql = "Select * From CONSULTAR_PRODUCTOS_X_PROVEEDOR where idProveedor = @idProv";
            cmd.Parameters.AddWithValue("@idProv", idProv);
            Persona pr;
            Producto p;
            UnidadMedida u;
            ProductoXProveedor pp;
            try
            {
                conexion.Open();

                cmd.Connection = conexion;
                cmd.CommandText = sql;
                cmd.CommandType = CommandType.Text ;

                SqlDataReader dr = cmd.ExecuteReader();

                while (dr.Read())
                {
                    pr = new Persona();
                    pr.Apellido = dr["apellido"].ToString();
                    pr.Nombre = dr["nombreRepresentante"].ToString();
                    pr.telefono = dr["telefonoContacto"].ToString();
                    pr.mail=  dr["email"].ToString();
                    pp = new ProductoXProveedor();
                    //u.IDUnidad = Convert.ToInt32(dr["idunidad"]);
                    u = new UnidadMedida();
                    p = new Producto();
                    p.idProducto = Convert.ToInt32(dr["idProducto"]);
                    p.Unidad = new UnidadMedida() { Nombre = dr["unidad"].ToString() };
                    p.Nombre = dr["nombre"].ToString() ;
                    p.Descripcion = dr["descripcion"].ToString();
                    p.StockActual = Convert.ToDouble(dr["stockActual"]);
                    p.StockDisponible  = Convert.ToDouble(dr["stockDisponible"]);
                    p.StockReservado = Convert.ToDouble(dr["StockReservado"]);
                    p.StockRiesgo = Convert.ToDouble(dr["StockdeRiesgo"]);

                    pp.producto = p;
                    pp.fechaPrecio = Convert.ToDateTime (dr["fecha"]);
                    pp.precioProveedor = Convert.ToDouble(dr["precio"]);
                    pp.proveedor = pr;
                    productos.Add(pp);

                }

            }

            catch (InvalidOperationException ex)
            {
                throw new ApplicationException(ex.Message);
            }
            catch (SqlException ex)
            {
                throw new ApplicationException("Error en BD: " + ex.Message);
            }
            finally
            {
                conexion.Close();
            }

            return productos;
        }
        private void btn_agregar_a_factura_Click(object sender, EventArgs e)
        {
            if (dgv_detalle.Rows.Count >= 1)
            {
                  List<DetalleFactura> detalle = new List<DetalleFactura>();

                  for (int c = 0; c < dgv_detalle.RowCount; c++)
                    {
                      DetalleFactura de = new DetalleFactura();
                      Producto p = new Producto();
                      UnidadMedida u = new  UnidadMedida();

                      p.idProducto = (int)dgv_detalle.Rows[c].Cells["idProductodetalle"].Value;
                      p.CODProducto = (int)dgv_detalle.Rows[c].Cells["codigo"].Value;
                      p.Nombre = (string )dgv_detalle.Rows[c].Cells["nombreproductodetalle"].Value;
                      u.Nombre = (string)dgv_detalle.Rows[c].Cells["unidadmedida"].Value;
                      p.Unidad = u;
                      p.precio  = (double)dgv_detalle.Rows[c].Cells["preciodetalle"].Value;
                      de.cantidad = Convert.ToDouble(dgv_detalle.Rows[c].Cells["cantidad"].Value);
                      de.producto = p;
                      detalle.Add(de);
                    }

                Vista.iniciador.detalle = detalle;
                Close();
                Dispose();
            }
        }
        public static List<OrdenDeTrabajo> GetAllOTHija(int idProd, DateTime fecha, int idPlan)
        {
            Acceso ac = new Acceso();

            List<OrdenDeTrabajo> ordenes = new List<OrdenDeTrabajo>();

            string sql = "SELECT * from CONSULTAR_OT_HIJA where fechaCreacion = @fecha and idPlan = @idPlan and idProducto = @idProd ";
            SqlCommand cmd = new SqlCommand();
            cmd.Parameters.AddWithValue("@fecha", fecha);
            cmd.Parameters.AddWithValue("@idPlan", idPlan);
            cmd.Parameters.AddWithValue("@idProd", idProd);
            SqlConnection conexion = new SqlConnection(ac.getCadenaConexion());

            try
            {
                conexion.Open();

                cmd.Connection = conexion;
                cmd.CommandText = sql;
                cmd.CommandType = CommandType.Text;

                SqlDataReader dr = cmd.ExecuteReader();

                Producto pi;
                //Categoria c;
                UnidadMedida u;
                Maquinaria m;
                Estado e;
                OrdenDeTrabajo ot;
                Empleado em;
                while (dr.Read())
                {
                    em = new Empleado();
                    em.idEmpleado = Convert.ToInt32(dr["idEmpleado"]);
                    em.Nombre = dr["nombre"].ToString();
                    em.Apellido = dr["apellido"].ToString();

                    e = new Estado();
                    e.idEstado = Convert.ToInt32(dr["idEstado"]);
                    e.Nombre = dr["estado"].ToString();

                    m = new Maquinaria();
                    m.idMaquinaria  = Convert.ToInt32(dr["idMaquinaria"]);
                    m.Nombre = dr["maquinaria"].ToString();

                    u = new UnidadMedida();
                    u.Nombre = dr["unidad"].ToString();

                    pi = new Producto();
                    pi.idProducto = Convert.ToInt32(dr["idProdIntermedio"]);
                    pi.Nombre = dr["nombreHijo"].ToString();
                    //pi.Categoria = c;
                    pi.Unidad = u;

                    ot = new OrdenDeTrabajo();

                    ot.idOrdenTrabajo = Convert.ToInt32(dr["idOrdenTrabajo"]);
                    ot.idOrdenTrabajoPadre = Convert.ToInt32(dr["idOTPadre"]);
                    //ot.fechaPlan = Convert.ToDateTime(dr["fechaPlan"]);
                    ot.horaInicio = Convert.ToDateTime(dr["horaInicio"]);
                    ot.horaFin = Convert.ToDateTime(dr["horaFin"]);
                    ot.fechaCreacion = Convert.ToDateTime(dr["fechaCreacion"]);
                    ot.estado = e;
                    ot.empleado = em;
                    ot.maquinaria = m;

                    ot.productoIntermedio = pi;
                    ot.cantidad = Convert.ToDouble (dr["cantidad"]);
                    ot.cantidadReal = Convert.ToDouble(dr["cantReal"]);

                    ordenes.Add(ot);

                }

            }

            catch (InvalidOperationException ex)
            {
                throw new ApplicationException(ex.Message);
            }
            catch (SqlException ex)
            {
                throw new ApplicationException("Error en BD: " + ex.Message);
            }
            finally
            {
                conexion.Close();
            }

            return ordenes;
        }