public List <OrdenDeCompra_Articulo> TodasLasOrdenesDeUnArticulo(int id)
        {
            try
            {
                this.OpenConnection();
                NpgsqlCommand cmdSel = new NpgsqlCommand(" select oc.numero,oc.fecha_pedido,oc.plazo_entrega,oc.estado,oc.fecha_sol_aprob,oca.cantidad " +
                                                         "from orden_de_compra oc " +
                                                         "inner join orden_compra_articulos oca on oca.numero_orden = oc.numero where id_articulo=@id ", npgsqlConn);

                cmdSel.Parameters.Add("@id", NpgsqlTypes.NpgsqlDbType.Integer).Value = id;
                NpgsqlDataReader drHerramientas = cmdSel.ExecuteReader();

                List <OrdenDeCompra_Articulo> ord_artList = new List <OrdenDeCompra_Articulo>();
                while (drHerramientas.Read())
                {
                    OrdenDeCompra_Articulo ord_art = new OrdenDeCompra_Articulo();

                    ord_art.Cantidad     = (int)drHerramientas["cantidad"];
                    ord_art.Estado       = (string)drHerramientas["estado"];
                    ord_art.Fecha_pedido = (DateTime)drHerramientas["fecha_pedido"];
                    ord_art.Fecha_solicitud_aprobacion = (DateTime)drHerramientas["fecha_sol_aprob"];
                    ord_art.Numero        = (string)drHerramientas["numero"];
                    ord_art.Plazo_entrega = (DateTime)drHerramientas["plazo_entrega"];
                    ord_artList.Add(ord_art);
                }
                return(ord_artList);
            }
            finally { CloseConnection(); }
        }
        public void Insertar(OrdenDeCompra_Articulo ocA)
        {
            try
            {
                OpenConnection();
                NpgsqlCommand cmdIns = new NpgsqlCommand("INSERT INTO orden_compra_articulos(numero_orden,id_articulo,cantidad,precio_unitario,codigo_proveedor,plazo_entrega,estado_item,iva,descuento,fecha_recibido,cantidad_recibida)" +
                                                         "values(@numero_orden,@id_articulo,@cantidad,@precio_unitario,@codigo,@plazo_entrega,@estado_item,@iva,@descuento,@fecha_recibido,@cantidad_recibida)", npgsqlConn);

                cmdIns.Parameters.Add("@numero_orden", NpgsqlTypes.NpgsqlDbType.Text).Value         = ocA.Numero;
                cmdIns.Parameters.Add("@id_articulo", NpgsqlTypes.NpgsqlDbType.Text).Value          = ocA.Id_Articulo;
                cmdIns.Parameters.Add("@cantidad", NpgsqlTypes.NpgsqlDbType.Integer).Value          = ocA.Cantidad;
                cmdIns.Parameters.Add("@precio_unitario", NpgsqlTypes.NpgsqlDbType.Double).Value    = ocA.Precio_unitario;
                cmdIns.Parameters.Add("@codigo", NpgsqlTypes.NpgsqlDbType.Text).Value               = ocA.Codigo_proveedor;
                cmdIns.Parameters.Add("@plazo_entrega", NpgsqlTypes.NpgsqlDbType.Date).Value        = ocA.Plazo_entrega;
                cmdIns.Parameters.Add("@estado_item", NpgsqlTypes.NpgsqlDbType.Text).Value          = ocA.Estado;
                cmdIns.Parameters.Add("@iva", NpgsqlTypes.NpgsqlDbType.Double).Value                = ocA.IVA;
                cmdIns.Parameters.Add("@descuento", NpgsqlTypes.NpgsqlDbType.Double).Value          = ocA.Descuento;
                cmdIns.Parameters.Add("@cantidad_recibida", NpgsqlTypes.NpgsqlDbType.Integer).Value = ocA.Cantidad_Recibida;
                if (ocA.Fecha_recibido.Date == Convert.ToDateTime("01/01/0001"))
                {
                    cmdIns.Parameters.Add("@fecha_recibido", NpgsqlTypes.NpgsqlDbType.Date).Value = DBNull.Value;
                }
                else
                {
                    cmdIns.Parameters.Add("@fecha_recibido", NpgsqlTypes.NpgsqlDbType.Date).Value = ocA.Fecha_recibido;
                }



                cmdIns.ExecuteNonQuery();
            }
            finally { CloseConnection(); }
        }
        public List <OrdenDeCompra_Articulo> Ordenes_Abiertas_DeUnArticulo(string id)
        {
            try
            {
                this.OpenConnection();
                NpgsqlCommand cmdSel = new NpgsqlCommand("select oca.id_articulo,oc.numero,oc.solicitado,oc.fecha_pedido,oc.fecha_generacion,oca.plazo_entrega,oc.estado,oc.fecha_sol_aprob,(oca.cantidad - oca.cantidad_recibida) as cantidad, oc.proveedor " +
                                                         "from orden_de_compra oc " +
                                                         "inner join orden_compra_articulos oca on oca.numero_orden = oc.numero where id_articulo=@id and estado  <> 'Recibido' ", npgsqlConn);

                cmdSel.Parameters.Add("@id", NpgsqlTypes.NpgsqlDbType.Text).Value = id;
                NpgsqlDataReader drHerramientas = cmdSel.ExecuteReader();

                List <OrdenDeCompra_Articulo> ord_artList = new List <OrdenDeCompra_Articulo>();
                while (drHerramientas.Read())
                {
                    OrdenDeCompra_Articulo ord_art = new OrdenDeCompra_Articulo();
                    ord_art.Cantidad = (int)drHerramientas["cantidad"];
                    ord_art.Estado   = (string)drHerramientas["estado"];
                    try { ord_art.Fecha_pedido = (DateTime)drHerramientas["fecha_pedido"]; }
                    catch { }
                    ord_art.Fecha_generacion = (DateTime)drHerramientas["fecha_generacion"];
                    try { ord_art.Fecha_solicitud_aprobacion = (DateTime)drHerramientas["fecha_sol_aprob"]; }
                    catch { }
                    ord_art.Numero = (string)drHerramientas["numero"];
                    try { ord_art.Plazo_entrega = (DateTime)drHerramientas["plazo_entrega"]; }
                    catch { }
                    ord_art.Solicitado = (string)drHerramientas["solicitado"];
                    ord_artList.Add(ord_art);
                }
                return(ord_artList);
            }
            finally { CloseConnection(); }
        }