Most of orders contain 1-2 items, but there could be 10+ and it becomes a problem to follow the invoice and picking items from the shelves. Any field of your choice: model, sku, etc. Here is an example how to update invoice and packing list (vqmod format):
<?xml version="1.0" encoding="utf-8"?> <modification> <id>For OpenCart</id> <version>3.0.3.2</version> <vqmver>2.5.1</vqmver> <author>alex cherednichenko</author> <link><![CDATA[https://www.alcher.info]]></link> <file name="admin/controller/sale/order.php"> <operation error="skip"> <search position="before" index="2,3"> <![CDATA[ $data['orders'][] = array( ]]></search> <add> <![CDATA[ // alcher array_multisort(array_map(function($element) { return $element['model']; }, $product_data), SORT_ASC, $product_data); // alcher ]]> </add> </operation> </file> </modification>
Source: 3 solutions for sorting multidimensional arrays by child keys or values in PHP