public static function barcode_instance($item, $barcode_config)
 {
     $barcode_instance = Barcode_lib::get_barcode_instance($barcode_config['barcode_type']);
     $is_valid = empty($item['item_number']) && $barcode_config['barcode_generate_if_empty'] || $barcode_instance->validate($item['item_number']);
     // if barcode validation does not succeed,
     if (!$is_valid) {
         $barcode_instance = Barcode_lib::get_barcode_instance();
     }
     $seed = Barcode_lib::barcode_seed($item, $barcode_instance, $barcode_config);
     $barcode_instance->setData($seed);
     return $barcode_instance;
 }