Please log in with a Shop Manager account to view orders.
';
}
$nonce = wp_create_nonce('kitchen_orders_screen_nonce');
ob_start();
?>
Overtime Kitchen Screen
Listening for new orders
Tip: keep this page open on the iPad. Use Guided Access so staff can’t leave the screen.
'Unauthorized'], 403);
}
check_ajax_referer('kitchen_orders_screen_nonce');
if (!class_exists('WooCommerce')) {
wp_send_json_error(['message' => 'WooCommerce not active'], 400);
}
$after_id = isset($_POST['after_id']) ? absint($_POST['after_id']) : 0;
$args = [
'limit' => 15,
'orderby' => 'date',
'order' => 'DESC',
'status' => ['processing','on-hold','pending'],
'return' => 'objects',
];
$orders = wc_get_orders($args);
$mapped = [];
$newest_id = 0;
$newest_unacked = 0;
foreach ($orders as $order) {
$id = $order->get_id();
if ($id > $newest_id) $newest_id = $id;
if ($id > $after_id && $id > $newest_unacked) $newest_unacked = $id;
$items = [];
foreach ($order->get_items() as $item) {
$meta = [];
foreach ($item->get_meta_data() as $m) {
$k = (string) $m->key;
$v = (string) $m->value;
if ($k && $v) $meta[] = $k . ': ' . $v;
}
$items[] = [
'name' => $item->get_name(),
'qty' => (int) $item->get_quantity(),
'meta' => $meta,
];
}
$shipping_methods = $order->get_shipping_methods();
$type = 'Pickup';
if (!empty($shipping_methods)) {
$type = 'Delivery';
}
$mapped[] = [
'id' => $id,
'created' => $order->get_date_created() ? $order->get_date_created()->date('Y-m-d g:i A') : '',
'status_label' => wc_get_order_status_name($order->get_status()),
'total' => (float) $order->get_total(),
'customer_name' => trim($order->get_billing_first_name() . ' ' . $order->get_billing_last_name()),
'phone' => $order->get_billing_phone(),
'note' => $order->get_customer_note(),
'items' => $items,
'type' => $type
];
}
wp_send_json_success([
'orders' => $mapped,
'newest_id' => $newest_id,
'newest_unacked' => $newest_unacked
]);
}