If it's a problem on the frontend, I did this to solve it :
in ps_order.php
just after the line (657 for me) : "require_once( CLASSPATH .'pageNavigation.class.php');"
I inserted this : (to get the functions of the backend)
"require_once (JPATH_ADMINISTRATOR . DS . 'components' . DS . 'com_vminvoice' . DS . 'helpers' . DS . 'invoicehelper.php');"
and after the lines (723 to 725 for me) like :
$tmp_cell = "<strong>".$VM_LANG->_('PHPSHOP_ORDER_PRINT_PO_STATUS').":</strong> ".$order_status;
$tmp_cell .= "<br /><strong>".$VM_LANG->_('PHPSHOP_ORDER_PRINT_PO_NUMBER').":</strong> " . sprintf("%08d", $db->f("order_id"));
$listObj->addCell( $tmp_cell );
I inserted this : (because "VM Invoice" received bad Urls from "sh404", you have to rewrite them)
$orderID = $db->f("order_id");
list($newLang, $prevLang) = InvoiceHelper::setInvoiceLanguage(JRequest::getVar('invoice_language'), $orderID); //change language for proper filename
$code ='_'.$newLang;
InvoiceHelper::setLanguage($prevLang); //set back orig. language
$pathfile = InvoiceHelper::getInvoiceSubdir($orderID,false);
$filename = trim(JText::_('COM_VMINVOICE_INVOICE_'),'*') . InvoiceHelper::getInvoiceNo($orderID). $code . '.pdf';
$pdf_url = str_replace('\\','/',JURI::base().'tmp/VM Invoices/' . $pathfile . $filename);
$open_url = "javascript:void window.open('".$pdf_url."', 'win2', 'status=no,toolbar=yes,scrollbars=yes,titlebar=no,menubar=no,resizable=yes,width=640,height=480,directories=no,location=no');";
$tmp_cell = ($db->f("order_status") == 'C' OR $db->f("order_status") == 'S') ? '<a href="'.$open_url.'"><img src="'.JURI::base().'administrator/components/com_vminvoice/assets/images/pdf.png" '.' title="'.JText::_($VM_LANG->_('PHPSHOP_ORDER_PRINT_PO_BILL')).'" /> '.' </a>' : '';
$listObj->addCell( $tmp_cell );
Hope it helps you
sorry for my english