Simple and fast - Create file order_status.php:
<?php $allow = array("192.168.0.1", "192.168.0.2", "192.168.0.3"); //allowed IPs
if(!in_array($_SERVER['REMOTE_ADDR'], $allow) && !in_array($_SERVER["HTTP_X_FORWARDED_FOR"], $allow)) {
header("Location: http://youraddress.com"); //redirect
exit();
}
require(dirname(__FILE__).'/config/config.inc.php');
if(isset($_GET['data'])){
$name = $_GET['data'];
$new_order_state = 34;
$get_orders = array();
array_push($get_orders,$name);
foreach ($get_orders as $orders) {
$order = new Order($orders);
$_state = (int) $order->current_state;
if ($_state == $new_order_state)
{Continue;}
elseif ($_state == 33 )
{
$history = new OrderHistory();
$history->id_order = (int)$order->id;
$history->changeIdOrderState((int) $new_order_state, $order->id);
if ($history->save())
{echo '<div class="ok-status"> OK - '.$orders.' </div><br />';}
else
{echo '<div class="nok-status"> Error - '.$orders.' </div><br />';}
}
}
} else {
$name = "Empty";
}
?>
<style>
.ok-status { font-weight: 600; font-size: 50px; line-height: 60px; color: green; }
.nok-status { font-weight: 600; font-size: 50px; line-height: 60px; color: red; }
.send-input { height: 65px; width: 300px; font-weight: 600; font-size: 50px; line-height: 60px; }
.send-button { height: 65px; width: 150px; font-weight: 600; font-size: 50px; line-height: 60px; background-color: #0093d4;}
</style>
<?php
echo "<form method='get' name='form' action='order_status.php'>
<input type='text' placeholder='ID ...' id='focus' class='send-input' maxlength='6' minlength='6' name='data'>
<input type='submit' class='send-button' value='OK'> </form>";
?>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1/jquery.js"></script>
<script>
$(document).ready(function(){
$('#focus').focus();
});
$("body").click(function(){
$('#focus').focus();
});
</script>
<?
On top u can allow access only to your IP.
So $new_order_state = 34; ( here u set up new state with id, u can look it up in backend - orders - statuses ), next u can edit this part: elseif ($_state == 33 ) ( so for me it means it wont update state to 34 if original state wasnt 33 u can change it by yourself - for example: elseif ($_state != 33 ) means it update every order but with state 33 and so on.. )
Style - customize as u wish
Form part, u can also carefully edit it by yourself, we have orders with id 160000+ so i set up max a min length to 6 characters. (action calls to itself so same as we named our file - order_status.php )
Next we call jquery and few simple lines to autofocus input after realod and by clicking on body.
Save file and upload it to root of yr TB - to access script just type /order_status.php after yr domain. (we use iframe in prestato display it on dashboard and etc )
We use barcode scanner to scan id from invoice, then u dont have to type, u just scan, scan, scan,... Thats it 😉
I do recomment testing it on your demo / test first..