Всем привет! С вами сегодня Лео, и я профессионально занимаюсь оцифровкой видеокассет уже больше 7 лет.
Скоро майские праздники, и поток клиентов возрастает. Да так, что с ними стало тяжело справляться - в сутки может прийти 7-8 человек, и попробуй их запомни. До этого дня использовал для учёта самописную панельку для учёта заказов на PHP, и программу "Бизнес Пак" для печати товарных чеков. В целом, их хватало. Но когда поток людей стал превышать все мыслимые нормы, было понятно, что надо с этим что-то делать.
Для решения вопроса было принято решение перевести всё на систему штрих-кодов. Иду на известную площадку объявлений, и покупаю себе за 500 рублей самый дешёвый сканер.
Сканер этот работает в режиме эмуляции клавиатуры - навели на код, он распознал и пропечатал.
Дописал панельку таким вот образом: внизу расположил поля ввода, которые ведут на add.php, inwork.php, и т.п., которые выполняют запрос в базу. Максимально просто, но работает.
На радостях скачал шрифты для создания кодов, распечатал на бумаге... И ничего! Сканер просто не сканирует код, либо сканирует с 5-6 попытки.
...Напечатал на глянцевой бумаге - работает! Как выяснилось, дело было в стандарте - в Code128 нужно было добавлять управляющие символы в начале и конце строки. И если на глянцевой бумаге сканер кое-как, но понимал код с ошибкой, то на матовой бумаге уже не мог его отсканировать.
Проблему решил использованием стандарта Code 39 - он намного проще для печати из любого текстового редактора, чем другие виды штрих-кодов.
Для этого достаточно закодировать номер в формате *1234567890*.
Не вникая в теорию, проще говоря, звёздочки здесь - управляющие символы.
Печатаем, сканируем код... Всё работает!
Однако, сканер нам отдаёт код вида T000001.
Как я понял после чтения документации на сканер - символ T
здесь образуется из нескольких бит информации, которые он отдаёт софту, который должен понять что используется сканер.
Можно конечно перенастроить, но мы этот символ в PHP просто вырежем:
$num = htmlspecialchars($_POST["num"]);
$num = preg_replace('/[^0-9]/', '', $num);
if (strlen2($abc)<3)
{
echo "Номер заказа не может быть менее 3-х символов";
exit;
}
mysql_query ("UPDATE myloveclients SET `status` = 'open' WHERE `number` = '$num';");
"Пикаем" сканером по коду, и наш код успешно в базе!
Теперь при помощи штрих-кодов мы можем успешно менять номера заказов в базе, и даже смотреть телефона клиента :)
...Только вот как нам распечатать кучу кодов на одном листе? Можно конечно использовать специальный софт, но вот тащить 1,5 гб не очень хочется. В этом нам поможет Excel!
...Для этого просто скачем шрифт Code 39, и создадим 2 поля. Единичка в первом поле, двойка - во втором.
...Затем выделяем эти 2 ячейки и тянем вниз за вот этот уголок, насколько хватит.
Теперь у нас очень много циферок. Добавляем к концу кода символ "*" чтоб закрыть строку, и выбираем шрифт. Далее настраиваем столбцы и строки по вкусу. Ура, у нас есть пачка штриходов, которые можно напечатать!
Теперь можно клеить штрих-код к клиентскому заказу, и обновлять его статус.
...Только вот снова проблема. Мы утыкаемся в ручное заполнение товаров в программе "Бизнес-пак". Нам надо как-то сделать это быстрее.
Берём нашу панельку в качестве основы, в таблице sales
создаём несколько полей - автоматический id строки, время добавления строки, id товара, id чека. Делаем интерфейс, заточенный исключительно под сканер.
В качестве товарных позиций - ID. Например, 0001 = "Оцифровка VHS", 0002 = "Оцифровка Video8", и т.д. Их мы распечатаем, чтоб повесить на стену.
Настало время для ChatGPT. Времени у меня было очень мало, поэтому написал индусский код в виде if-else, и попросил ChatGPT оптимизировать его. Она успешно справляется!
...Просим написать ещё кусок кода.
...В JS она тоже "умеет".
По итогу, с ChatGPT за час мы собрали вот такой товарный чек, который можно отправлять на печать :)
Формочки, заточенные под сканер, тоже есть.
В общем, теперь наш сканер штрих-кода "подружился" с PHP, а скорость обработки заказов увеличилась в несколько раз. Всем добра :)