Всем привет.
Требуется написание модуля «Учет товаров для Беларуси».
Версия: ocstore 1.5.5.1.2
Куб: нету куба
Модуль/ВКмод: не важно
Модуль будет решать две задачи.
Во-первых: удаление из базы тех товаров, которые были выкуплены на других торговых площадках. До этого приходилось все такие товары ежедневно записывать на листик, а потом вручную удалять из базы через админ.часть. Теперь же с появлением штрих-кодов EAN8 на всех товарах делать это вручную не серьезно, и хочется просто «пропикивать» их сканером штрих-кода. Т.е. несколько раз за рабочий день менеджер берет сканер и пикает по тем товарам, которые готовятся к отправке.
Во-вторых: В Беларуси интернет-магазины обязаны прикреплять ко всем перемещениям своих товаров еще и накладную ТН1 (или ТН2). Это делается даже если перемещение осуществляется в пределах одного юр.адреса (Две точки на рынке? Запасайся ТНками!). Выписывать ТНку надо даже если ты просто отправила товары по почте, ибо момент передачи товара от продавца к курьеру (сама себе) тоже должен быть подкреплен накладной. Имеется в виду, что продавец – это ты сама (продавшая товар через Интернет), а курьер – это тоже ты сама (несущая товар до почты). Своё родное государство штампует ТНки, обязывает их покупать, использовать, хранить и относиться к ним как к бланкам строгой отчетности. Поэтому приходилось каждый день в Excele набирать эту штуку и распечатывать ее в двух экземплярах. Но в связи с тем, что теперь на каждом товаре есть штрих-код EAN8, то опять-же хотелось бы упростить этот процесс до минимума.
И вот какое решение мы видим:
Для первой задачи:
Это будет модуль, который работает только в админ.части. В процессе рабочего дня менеджер может несколько раз в день запустить модуль и добавить товары для отправки. Добавление товаров происходит через сканер штрих-кода. Этот сканер (как и все остальные) представляет для компьютера простую клавиатуру. И любая программа может принимать от него коды (даже «блокнот»). Т.е. в нашем модуле будет просто поле для ввода кода EAN8. Сканер после ввода кода нажимает за собой клавишу «enter». Поэтому модуль просто по нажатию на «enter» начинает искать данный код в базе. В нашем конкретном случае: код товара EAN8 – это есть столбец «model», т.е. номер товара (не id товара). Но не совсем! Код EAN8 имеет в себе восемь цифр. Первая из них – всегда 2 (это так надо), последняя – какае-то контрольная цифра. Т.е. выглядит код так: 2aaabbb9. Так вот в нашем конкретном случае aaa – это и есть искомый номер товара, а bbb – номер опции у этого товара. Получается, что карточек товаров у нас будет не более 999, и в каждой – до 999 опций! Наш интернет-магазин покупает одежду размерными рядами и, в последнее время, мы всегда стремимся создавать меньше карточек, но больше опций в каждой. Поэтому было придумано именно так. Т.е. модуль, получив код 21234569 + «enter», переделает его в номер карточки товара 123, номер опции 456.
После этого в таблице отправляемых товаров появится первая запись найденного в базе товара, и модуль снова перейдет в готовность ввода со сканера.
Модуль должен запоминать эти записи отправляемых товаров! Т.е. он должен где-то хранить информацию о предыдущих записях. Думаю, что лучше всего в каком-нибудь спец.файле в «корне» сайта. По нажатию на кнопку «Удалить таблицу» это файл стирается. Т.е. когда очередной рабочий день закончен и все документы сделаны – жмем на эту кнопку, а завтра начнем заново с пустой таблицы. Получается как-то так:
Обратите внимание на последние два столбца таблицы.
В предпоследнем столбце отображается результат поиска данного товара в базе. Если он 1) найден, 2) не найден, 3) найден, но у него нет такой опции, то это все равно должно отображаться этом столбце, т.к. все «косяки» и потерянные/внезапно_найденные товары должны быть видны менеджеру!
В последнем столбце кнопка «удалить данный товар». Мы ее нажимаем, и товар из базы удаляется. Но удаляется не полностью товар, а только данная опция товара в карточке! И даже не удаляется, а от нее просто отнимается «1». Ведь красных трусов модели 777 размера 92 может быть 7 штук! Т.е. если одни купили, то теперь их 7-1=6! И еще модуль отнимает «1» от общего количество товара в карточке (это другое поле). Т.е. уменьшает конкретную опцию и общее количество на «1». Конечно же, товары, купленные через OpenCart сами уменьшаются в количестве (в опции и в общем). Поэтому менеджер будет нажимать на кнопку «удалить» только для товаров, купленных со сторонних площадок. При этом сама строчка после нажатия на «удалить» не исчезает из таблицы. Т.е. товар из базы удалится, а строчка в этом модуле не удаляется. Она нам еще понадобиться для решения второй задачи.
В остальных столбцах таблицы пускай размещается вся другая информация – как в таблице в товарами в админ.панели (название, цена, категории, статус, количество и др.). И, кстати, если вдруг менеджер «пикнул» два раза одинаковый товар (ну купили две одинаковые майки, например), то не надо искать одинаковые товары (майки) и ставить количество «два». Пускай делается новая запись товара в таблице. Т.е. столбец «количество» будет всегда содержать цифру «1» и никак не объединяться с одинаковыми товарами. Так проще. Будет больше строк, но кол-во всегда 1.
Еще обратите внимание на столбец «isbn (оригинальное название»). Это обычное столбец «isbn». Т.к. он не используется, то, с не давнего времени, мы начали хранить в нем оригинальное название товара (от поставщика) и его код (артикул). Этот столбец нам понадобится позже.
Ну вот и все по первой части нашего модуля. Таким образом решается вопрос об удалении товаров, купленных не через OpenCart и введенных через сканер штрих-кода.
Для второй задачи: Мы будем брать из этой получившейся таблицы значения (просто копировать правой кнопкой мыши) и вставлять их в бланк накладной ТН в Excel (просто вставлять правой кнопкой мыши). Нас интересуют только столбцы «isbn оригинальное название» и «цена». Помните – «количество» всегда равно 1, поэтому этот столбец не нужен: просто в Excele будет везде пописано 1шт. В такой бланк необходимо вставлять именно оригинальное название товара, которое тянется еще от прайса поставщика, а вот цену уже указывать свою.
Наверное, это будет самый простой вариант. Есть модули в opencart, которые сами распечатывают бланки. Но их трудно потом переделывать (менять таблицу или ее содержимое). А в Excele, я сама буду подправлять бланк, если это потребуется. К тому же именно Excel потом поможет сделать парочку «полезных плюшек» в получившейся таблице: сортировка по названию, автосумма, суммы прописью, простановка дат. Так, что думаю, что эту часть пускай делает Excel, a не модуль Opencarta.
Вот так копируем эти данные:
В результате вставки в Excel получаем там готовый под печать бланк ТН:
Только в этой версии бланка еще встречается количество товара 2 или даже 3. А в разработанном Вами модуле, уважаемые программисты, всегда будет количество 1шт.
Вот такой вот модуль необходимо разработать. Жду предложения по цене в личные сообщения. А вопросы задавайте тут (в теме).