Hello,
Even if it's not totally optimized, a solution can be to change these lines :
foreach($this->order->products as $product){
if($group && $product->order_product_option_parent_id) continue;
By :
$this->database = JFactory::getDBO();
foreach($this->order->products as $product){
if($group && $product->order_product_option_parent_id) continue;
And use that php code to display your product warehouse name inside the foreach loop :
$query='SELECT product_warehouse_id FROM '.hikashop_table('product').' WHERE product_id ='.$product->product_id;
$this->database->setQuery($query);
$product_warehouse_id = $this->database->loadResult();
if($product_warehouse_id != 0){
$query='SELECT warehouse_name FROM '.hikashop_table('warehouse').' WHERE warehouse_id ='.$product_warehouse_id;
$this->database->setQuery($query);
$warehouse_name = $this->database->loadResult();
echo $warehouse_name;
}