Штрих-коды для домашнего бизнеса, и причём тут ChatGPT

Всем привет! С вами сегодня Лео, и я профессионально занимаюсь оцифровкой видеокассет уже больше 7 лет.

Скоро майские праздники, и поток клиентов возрастает. Да так, что с ними стало тяжело справляться — в сутки может прийти 7–8 человек, и попробуй их запомни. До этого дня использовал для учёта самописную панельку для учёта заказов на PHP, и программу «Бизнес Пак» для печати товарных чеков. В целом, их хватало. Но когда поток людей стал превышать все мыслимые нормы, было понятно, что надо с этим что-то делать.

Вот так выглядела панелька учёта заказов до внесения правок.

Вот так выглядела панелька учёта заказов до внесения правок.

Для решения вопроса было принято решение перевести всё на систему штрих-кодов. Иду на известную площадку объявлений, и покупаю себе за 500 рублей самый дешёвый сканер.

669c1aa1669092e52255e763af178b66.jpg

Сканер этот работает в режиме эмуляции клавиатуры — навели на код, он распознал и пропечатал.

Дописал панельку таким вот образом: внизу расположил поля ввода, которые ведут на 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';");

«Пикаем» сканером по коду, и наш код успешно в базе!

029a5352f26c885d32820c1b562b5e26.JPG

Теперь при помощи штрих-кодов мы можем успешно менять номера заказов в базе, и даже смотреть телефона клиента :)

…Только вот как нам распечатать кучу кодов на одном листе? Можно конечно использовать специальный софт, но вот тащить 1,5 гб не очень хочется. В этом нам поможет Excel!

…Для этого просто скачем шрифт Code 39, и создадим 2 поля. Единичка в первом поле, двойка — во втором.

3b3bf46f070e4828786d0b494009cc10.JPG

…Затем выделяем эти 2 ячейки и тянем вниз за вот этот уголок, насколько хватит.

47d028334de2ed4f7b54ef35472a7f05.JPG

Теперь у нас очень много циферок. Добавляем к концу кода символ »*» чтоб закрыть строку, и выбираем шрифт. Далее настраиваем столбцы и строки по вкусу. Ура, у нас есть пачка штриходов, которые можно напечатать!

ec9a38e3c27897d8464b52dccc379d36.JPGВыглядит наша распечатка, кстати, так.

Выглядит наша распечатка, кстати, так.

Теперь можно клеить штрих-код к клиентскому заказу, и обновлять его статус.

…Только вот снова проблема. Мы утыкаемся в ручное заполнение товаров в программе «Бизнес-пак». Нам надо как-то сделать это быстрее.

34d4cfd732ccb68edeca1111bafd9b92.png

Берём нашу панельку в качестве основы, в таблице sales создаём несколько полей — автоматический id строки, время добавления строки, id товара, id чека. Делаем интерфейс, заточенный исключительно под сканер.

701f9601beff7b55c2e9b1fe8aafe88f.JPG

В качестве товарных позиций — ID. Например, 0001 = «Оцифровка VHS», 0002 = «Оцифровка Video8», и т.д. Их мы распечатаем, чтоб повесить на стену.

Настало время для ChatGPT. Времени у меня было очень мало, поэтому написал индусский код в виде if-else, и попросил ChatGPT оптимизировать его. Она успешно справляется!

d0899bce616b86b4b960dd607c391597.JPG

…Просим написать ещё кусок кода.

deafea4063361208a61baf3195297a25.JPG

…В JS она тоже «умеет».

6c7f818623a5f63528cee450ac128713.JPG

По итогу, с ChatGPT за час мы собрали вот такой товарный чек, который можно отправлять на печать :)

58827f472a2f07c8afeee49a7d5e502f.JPG

Формочки, заточенные под сканер, тоже есть.

8bf260027bf5512675f366845d6336f7.JPG

В общем, теперь наш сканер штрих-кода «подружился» с PHP, а скорость обработки заказов увеличилась в несколько раз. Всем добра :)

940558f16506bd805ed91ea53157bb1e.jpg

© Habrahabr.ru