A beautiful trigger issue. Flawed logic? Updating Orderheader when orderlines are complete THe bussiness rule is as such: The orderlines must be updated with a date stamp when all the related orderlines are marked as 'Y' denoting a completed order line.

THe trigger thus far is:

CREATE OR REPLACE TRIGGER orderComplete
after update ON orderline
DECLARE 
orderId NUMBER;
ordersNotDone NUMBER;
BEGIN

    SELECT COUNT(Orderline_fulfilled), order_id INTO ordersNotDone, orderId
    FROM orderHeader
    JOIN orderline ON
    orderHeader.Order_id = orderLine.Orderline_order
    WHERE Order_id = orderline_order
    AND orderline_fulfilled = 'N'
    GROUP BY order_id;

    if ordersNotDone = 0
    then
        UPDATE orderHeader
        set ORDER_COMPLETED = sysdate
        WHERE order_id = orderId;
    end if;

END;


Upon an update of the order line, an 'no data found' is returned- is this sugesting the orderId variable is not returning data? The queries do work, however, when taken out of the trigger and ran independently.
Your trigger checks all orderlines for completeness even when only one is updated. You should use the :NEW table prefix to filter the currently updated record.
There is no need to include the table orderHeader while counting
There is no need for a group-by  


Try the following:

CREATE OR REPLACE TRIGGER orderComplete
   AFTER UPDATE ON orderline
 FOR EACH ROW -- Added after comment by a1ex07 
 DECLARE ordersNotDone NUMBER;
 BEGIN
    SELECT COUNT(Orderline_fulfilled)
      INTO ordersNotDone
      FROM orderline
     WHERE orderline_order = :NEW.orderline_order
       AND orderline_fulfilled = 'N';

    IF ordersNotDone = 0
    THEN
        UPDATE orderHeader
        SET order_completed = sysdate
        WHERE order_id = NEW:orderline_order;
    END IF;
END;