Finally I can solve the problem after digging in the code.
place this inside controllers/front/OrderController.php within function init()
if ($orders = Order::getCustomerOrders($this->context->customer->id))
{
$statuses=array(1,8,10,11); //ids of the statuses that should be resolved before the customer can add another order.
foreach ($orders as &$order)
{
if (in_array($order['id_order_state'],$statuses))
{
if ($order['reference'])
$this->errors[] = sprintf(
Tools::displayError('You must pay order with the reference %s to place a new order. You can also ask our Customer Service to cancel the order so you can place a new order.'),$order['reference']);
else $this->errors[] = Tools::displayError('You must pay your previous order to place a new order. You can also ask our Customer Service to cancel the order so you can place a new order.');
break;
}
}
}
of course we can make this patch as overrides.
hope this help someone else