class IM_SKU_Sync {
private static $in_progress = false;
public static function get_base_sku($sku) {
if (!is_string($sku)) return '';
if (preg_match('/^(.+?)(-EBAY(?:-\d+)?)$/i', $sku, $m)) {
return $m[1];
}
return $sku;
}
public static function sync($source_sku, $qty = null, $location = null) {
global $wpdb;
if (empty($source_sku)) return;
if (self::$in_progress) return;
self::$in_progress = true;
$base = self::get_base_sku($source_sku);
$like = $wpdb->esc_like($base) . '%';
$rows = $wpdb->get_results($wpdb->prepare("
SELECT post_id FROM {$wpdb->postmeta}
WHERE meta_key = '_sku' AND meta_value LIKE %s
", $like));
foreach ($rows as $row) {
$id = (int)$row->post_id;
if ($qty !== null) {
update_post_meta($id, '_stock', $qty);
}
if ($location !== null) {
update_post_meta($id, '_product_code', $location);
}
}
self::$in_progress = false;
}
}class IM_Barcode_Scanner {
public static function render() {
global $wpdb;
echo '
Barcode Scanner
';
if (!empty($_POST['pcs_save'])) {
$post_id = intval($_POST['pcs_post_id']);
$stock = intval($_POST['pcs_stock']);
$location = sanitize_text_field($_POST['pcs_location']);
update_post_meta($post_id, '_stock', $stock);
update_post_meta($post_id, '_product_code', $location);
$sku = get_post_meta($post_id, '_sku', true);
if ($sku) {
IM_SKU_Sync::sync($sku, $stock, $location);
}
echo '
';
}
echo '
';
echo '
';
}
}class IM_Menu {
public static function init() {
add_menu_page(
'Inventory Manager',
'Inventory Manager',
'manage_woocommerce',
'inventory-manager',
'__return_null'
);
add_submenu_page(
'inventory-manager',
'Barcode Scanner',
'Barcode Scanner',
'manage_woocommerce',
'barcode-scanner',
['IM_Barcode_Scanner', 'render']
);
add_submenu_page(
'inventory-manager',
'Receive Inventory',
'Receive Inventory',
'manage_woocommerce',
'receive-inventory',
['IM_Receive_Inventory', 'render']
);
add_submenu_page(
'inventory-manager',
'Location Scanner',
'Location Scanner',
'manage_woocommerce',
'location-scanner',
['IM_Location_Scanner', 'render']
);
add_submenu_page(
'inventory-manager',
'SKU Scanner',
'SKU Scanner',
'manage_woocommerce',
'sku-scanner',
['IM_SKU_Scanner', 'render']
);
}
}
Sensationail
Skip to content