Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

Создать модуль "Учет товаров для Беларуси"


Lilya

Recommended Posts

Всем привет.

Требуется написание модуля «Учет товаров для Беларуси».

Версия: 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.

После этого в таблице отправляемых товаров появится первая запись найденного в базе товара, и модуль снова перейдет в готовность ввода со сканера.

Модуль должен запоминать эти записи отправляемых товаров! Т.е. он должен где-то хранить информацию о предыдущих записях. Думаю, что лучше всего в каком-нибудь спец.файле в «корне» сайта. По нажатию на кнопку «Удалить таблицу» это файл стирается. Т.е. когда очередной рабочий день закончен и все документы сделаны – жмем на эту кнопку, а завтра начнем заново с пустой таблицы. Получается как-то так:

 

post-694191-0-71042200-1465573466_thumb.png

 

Обратите внимание на последние два столбца таблицы.

В предпоследнем столбце отображается результат поиска данного товара в базе. Если он 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.

Вот так копируем эти данные:

 

post-694191-0-50048300-1465573482_thumb.png

 

В результате вставки в Excel получаем там готовый под печать бланк ТН:

 

post-694191-0-25774400-1465573499_thumb.png

 

Только в этой версии бланка еще встречается количество товара 2 или даже 3. А в разработанном Вами модуле, уважаемые программисты, всегда будет количество 1шт.

 

Вот такой вот модуль необходимо разработать. Жду предложения по цене в личные сообщения. А вопросы задавайте тут (в теме).

 

Надіслати
Поділитися на інших сайтах


  • 2 weeks later...

Вам нужно десктопное приложение, которое берет код со сканера и отправляет его в админку

 

+ "модуль" - своего рода api для управления товарами из этого приложения.

 

Причем приложение должно уметь авторизоваться.

 

Т.е.

десктопное приложение отправляет известный открытый ключ, сервер его принимает - возвращает приложению, дальнейшая сессия происходит в "защищенном" / авторизованном режиме

 

С другой стороны, приложение отправляет только коды, которые накапливаются в буфере

А менеджер магазина на каждый такой код генерирует ТН

 

И третье..

Каким-то образом ТН собираются в текстовом блоке

Ctrl+C/Ctrl+V

В специальное поле - кнопка - генерировать - происходит генерация..

Надіслати
Поділитися на інших сайтах

Вам нужно десктопное приложение, которое берет код со сканера и отправляет его в админку

 

+ "модуль" - своего рода api для управления товарами из этого приложения.

 

Причем приложение должно уметь авторизоваться.

 

Т.е.

десктопное приложение отправляет известный открытый ключ, сервер его принимает - возвращает приложению, дальнейшая сессия происходит в "защищенном" / авторизованном режиме

 

С другой стороны, приложение отправляет только коды, которые накапливаются в буфере

А менеджер магазина на каждый такой код генерирует ТН

 

И третье..

Каким-то образом ТН собираются в текстовом блоке

Ctrl+C/Ctrl+V

В специальное поле - кнопка - генерировать - происходит генерация..

зачем такие сложности?)

ведь есть замечательная штука https://developer.chrome.com/apps/serial

сделать можно все в браузере

Надіслати
Поділитися на інших сайтах


Где сложности и в чем?

 

Вы показали расширение для хрома - а это есть десктопное решение

 

Тепрь.. сканер подключается к сериал порт? или к usb, должен быть мост между последовательным сериал портом и портом  сканера. Кроме того сканер должен отдавать  понятную для хром-расширения информацию..

 

Не.. Это не сложно..

Надіслати
Поділитися на інших сайтах

Где сложности и в чем?

 

Вы показали расширение для хрома - а это есть десктопное решение

 

Тепрь.. сканер подключается к сериал порт? или к usb, должен быть мост между последовательным сериал портом и портом  сканера. Кроме того сканер должен отдавать  понятную для хром-расширения информацию..

 

Не.. Это не сложно..

Сложности в каких то запутанных механизмах и всё это для получения данных со сканера

Я показал api хрома через которое расширение может общаться со сканером. Пускай это будет десктопное решение.

Мостом как раз и является api chrome.serial (Use the chrome.serial API to read from and write to a device connected to a serial port. )

Сканер должен отдавать последовательность байт (это ведь цифровое оборудование, а не аналоговое) которую мы считываем и интерпретируем как угодно. В нашем случаи переводим её в текст http://www.rtaautomation.com/images/asciitable.gif

 

Вот это могли бы пояснить "Кроме того сканер должен отдавать  понятную для хром-расширения информацию" это что такая за информация которая понятна хром-расширению?

Змінено користувачем TheDoctor
Надіслати
Поділитися на інших сайтах


Вы понимаете как работает последовательный порт?

Вы понимаете как работает Сканер подключенный к последовательному порту?

Вы понимаете что сканер имеет систему команд?

Начать сканирование, распознать, отдать?

Т.е. с  порта должна быть подана команда на начало сканирования и получение кода

Вы знаете как это сделать? У вас есть спецификация команд сканера?

Или вы считает, что достаточно ткнуть кнопку на сканере и информация сама попадет в нужное поле?

И.. даже если это так (такое возможно), то serial расширение, должно "слушать" порт и обрабатывать полученные данные
Начало сканирования, Конец сканирования, передача данных, проверка целостности данных. Т.е. расширение должно понимать только эти команды.. Это - последовательный порт и он может слушать только одно устройство.

Змінено користувачем chukcha
Надіслати
Поділитися на інших сайтах

Вы понимаете как работает последовательный порт?

Вы понимаете как работает Сканер подключенный к последовательному порту?

Вы понимаете что сканер имеет систему команд?

Начать сканирование, распознать, отдать?

Т.е. с  порта должна быть подана команда на начало сканирования и получение кода

Вы знаете как это сделать? У вас есть спецификация команд сканера?

Или вы считает, что достаточно ткнуть кнопку на сканере и информация сама попадет в нужное поле?

И.. даже если это так (такое возможно), то serial расширение, должно "слушать" порт и обрабатывать полученные данные

Начало сканирования, Конец сканирования, передача данных, проверка целостности данных. Т.е. расширение должно понимать только эти команды.. Это - последовательный порт и он может слушать только одно устройство.

понимаю

понимаю

понимаю

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

По вашему спецификации сканеров это какая то коммерческая тайна не доступная разработчикам?

Судя по вашим ответам делаю вывод. что информацией о работе последовательных портов не владеете.

"Это - последовательный порт и он может слушать только одно устройство." очередное непонятно к какому месту высказывание. вроде бы не предлагал десяток сканеров вешать на один порт

  • +1 1
Надіслати
Поділитися на інших сайтах


Вы даже не удосужились посмотреть представленное расширение..

 

Кстати, там есть событие onReceive и на него вешается колбек функция

 

И потому - я делаю вывод... что вы бла-бла-бла

 

Далее запрашиваем, очищаем буфер.. (по секрету вам скажу, что при чтении буфер очищается) - потому  - вы не знаете

 

Хром расширение позволяет работать с сериалпортом, кто будет писать протокол обмена?

 

зачем такие сложности?)

 

Ну? вперед, помогите барышне..

Надіслати
Поділитися на інших сайтах

и мне совсем не понятно. что вы доказать хотите?

То что задача не реализуема? или то что это что то сверхсложное? 

Это вы мои слова хотели сказать  - что это несложно.

Что я изложил сложно.

Я изложил общий принцип(ы) работы с внешним устройством, даже не вдаваясь в подробности, в том числе и протокол обмена.

 

И.. такое бывает.. сканер может не иметь последовательного порта, а вернее эмулятора сериал порта. Т.е. нужно еще один виртуальный драйвер..

 

И.. теперь расскажите барышне что это не сложно..

 

А если не сложно, повторюсь,  - делайте. Тогда про бла-бла-бла - заберу слова.

Надіслати
Поділитися на інших сайтах

Вы даже не удосужились посмотреть представленное расширение..

 

Кстати, там есть событие onReceive и на него вешается колбек функция

 

И потому - я делаю вывод... что вы бла-бла-бла

 

Далее запрашиваем, очищаем буфер.. (по секрету вам скажу, что при чтении буфер очищается) - потому  - вы не знаете

 

Хром расширение позволяет работать с сериалпортом, кто будет писать протокол обмена?

 

Ну? вперед, помогите барышне..

"Вы даже не удосужились посмотреть представленное расширение..

Кстати, там есть событие onReceive и на него вешается колбек функция" иии? это то к чему?

"Далее запрашиваем, очищаем буфер.. (по секрету вам скажу, что при чтении буфер очищается) "  само очищаться ничего не будет. Только если это реализовано в конкретной обертке

ты вообще странный. скачешь как заяц с темы на тему. то интересуется моими познаниями работы последовательного порта. то начинает повествовать об обертки хрома

бррр. не люблю такое. не диалог и не дискуссия, а какой то холевар получается.

С барышней уже обсуждали 

 

Надіслати
Поділитися на інших сайтах


 

А если не сложно, повторюсь,  - делайте. Тогда про бла-бла-бла - заберу слова.

ей богу. мне всё равно на какие то слова.

если сложно.лениво.не понятно. лучше писать. что ооочень сложно. так проще чем разбираться

на работе делал коллега обертку на vba для считывания кодов со сканера и загона информации в 1С. не надорвался

у вас безумно сложно. Такая оценка задач лишь показатель уровня разработчика) 

Надіслати
Поділитися на інших сайтах


Ой! Не заметила, что Вы такую бурную беседу начали. 

Парни! Все сканеры сейчас видятся компьютером как простая клавиатура. Когда я его первый раз включила, то виндовс сама все сделала и появилась проcтая вторая клавиатура. Сканер подключается как флешка в USB.

Он просто вводит цифры из штрих кода как цифры, т.е. жмем единсвенную кнопку на сканере и подносим его к штрихкоду и он "пикает" и печатает 21234567. Это как-бы тоже самое, что вы на основной клавиатуре нажмете эти цифровые кнопки. Вот Вы в админке в таблице товаров в поле "модель" поставьте мышку и пикните по коду 123. Сканер наберет как клавиатура 123 и нажмет за собой клавишу "enter".

Змінено користувачем Lilya
Надіслати
Поділитися на інших сайтах


Я так понимаю, что вас из-угла мешком ударили. Вы мне приписывает слова которые я не говорил.

И я так понимаю, что вы сами не работали с последовательными портами, и с указанным расширением тоже..

А то что ваш коллега делал на vbs  - так вот vbs - это приложение о котором я говорил. И поинтересуйтесь у своего коллеги, сколько у него понадобилось время на чтение документации сканера, на настройку связи, на проверку и т.д.  И довел ли он ее до логического окончания, т.е. с проверкой контрольной суммы

 

А так как вы не работали с портами - то вы балабол.

Надіслати
Поділитися на інших сайтах

Ой! Не заметила, что Вы такую бурную беседу начали. 

Парни! Все сканеры сейчас видятся компьютером как простая клавиатура. Когда я его первый раз включила, то виндовс сама все сделала и появилась проcтая вторая клавиатура. Сканер подключается как флешка в USB.

Он просто вводит цифры из штрих кода как цифры, т.е. жмем единсвенную кнопку на сканере и подносим его к штрихкоду и он "пикает" и печатает 21234567. Это как-бы тоже самое, что вы на основной клавиатуре нажмете эти цифровые кнопки. Вот Вы в админке в таблице товаров в поле "модель" поставьте мышку и пикните по коду 123. Сканер наберет как клавиатура 123 и нажмет за собой клавишу "enter".

 

Ну вот :) ОНО само умеет :) А вы пробовали его включить в момент когда у вас, например, активное поле поиска?

Надіслати
Поділитися на інших сайтах

Я так понимаю, что вас из-угла мешком ударили. Вы мне приписывает слова которые я не говорил.

И я так понимаю, что вы сами не работали с последовательными портами, и с указанным расширением тоже..

А то что ваш коллега делал на vbs  - так вот vbs - это приложение о котором я говорил. И поинтересуйтесь у своего коллеги, сколько у него понадобилось время на чтение документации сканера, на настройку связи, на проверку и т.д.  И довел ли он ее до логического окончания, т.е. с проверкой контрольной суммы

 

А так как вы не работали с портами - то вы балабол.

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

https://chrome.google.com/webstore/detail/serial-monitor/ohncdkkhephpakbbecnkclhjkmbjnmlo?utm_source=chrome-ntp-icon держите невероятно-невозможное расширение

Надіслати
Поділитися на інших сайтах


Ну вот :) ОНО само умеет :) А вы пробовали его включить в момент когда у вас, например, активное поле поиска?

Я зарание у всех читающих прошу прощения...

Но бл*дь, chukcha, ты издеваешься, что ли? ты даже не читал тз?? и начал дискутировать ?

" Это будет модуль, который работает только в админ.части. В процессе рабочего дня менеджер может несколько раз в день запустить модуль и добавить товары для отправки. Добавление товаров происходит через сканер штрих-кода. Этот сканер (как и все остальные) представляет для компьютера простую клавиатуру. И любая программа может принимать от него коды (даже «блокнот»). Т.е. в нашем модуле будет просто поле для ввода кода EAN8. Сканер после ввода кода нажимает за собой клавишу «enter»"

Змінено користувачем TheDoctor
  • +1 1
Надіслати
Поділитися на інших сайтах


Chu!, TheDoctor - хватит уже ссорится! Тут все гораздо проще! Не надо сложной электроники и программ! "Несколько десятков молодых китайцев" уже все продумали и сделали за нас. Сканер - это вторая клавиатура. Самое сложное - это преобразование штрих кода для работы в таблице товаров. Надо так: 2aaabbbN, где aaa - модель товара, bbb - номер опции этого товара. 

  • +1 1
Надіслати
Поділитися на інших сайтах


Lilya, в отличии от виртуального оппонента, я все понял..
Т.е. по сути теперь нужен только скрипт (морда) где будет поле для ввода штрих кода, а все остальное должен сделать серверный код по заданным ТС правилам,
и подготовить ТН1 и/или ТН2 для печати.

Надіслати
Поділитися на інших сайтах

...в отличии от виртуального оппонента...

Напрасно Вы так. Оппонент тоже профессионал. Думаю, Вы бы сработались...  :-)  Это у Вас так: притирка по знаниям и умениям.

 

...подготовить ТН1 и/или ТН2 для печати...

Да - подготовка только для copy-paste. Остальное вставится в Excel и распечатается. Это только excel, потому как - я его знаю и могу потом что-либо переделать бесплатно под себя. Это гарантия работоспособности.

 

Chu!, Вы, наконец-то, прочитали ТЗ?  :-) Desktop - это лишнее, правильно?

Змінено користувачем Lilya
Надіслати
Поділитися на інших сайтах


Ну Вы же поймите, что в Excele я еще их и "складирую", учитываю, анализирую под себя, а потом оптом печатаю. Можно как-бы пленку отмотать и посмотреть если чего-то не так...

Надіслати
Поділитися на інших сайтах


Вот сканер подключен к компьютеру и я набираю сообщение 

привет
4810368008879
4810368008879
4810368008879
4810368008879
4810368008879
4810368008879
4810368008879
4810368008879
4810368008879
4810368008879
4810368008879
4810368008879
как дела
4810368008879
4810368008879
4810368008879
4810368008879
4603934001219
4603934001219
4603934001219
4603934001219
4603934001219
4603934001219
4603934001219
7926947027838
7926947027838
7926947027838
7926947027838
7926947027838
7926947027838
7926947027838
7926947027838
7926947027838
... и клавиша ENTER за собой.
481... - это код для Беларуси, 460... - это для России. а 792... - это мы вчера с детьми китайскую игрушку в магазине вытащили из "лапы".
Это длинные коды (13 цифр), а в модуле должно быть только 8 (т.н. короткие коды для маленьких товаров или внутренний маркировки)
Надіслати
Поділитися на інших сайтах


Давайте лучше поэтапно и малыми порциями.

1. в админке нужно создать раздел с полем в которое будет вписываться, либо с клавиатуры либо со сканера(который по сути является клавиатурой), код товара

2. после занесения кода, который имеет формат 2XXXXXXN, нажимается Enter

3. код улетает на сервер и начинается магия.

3.1 я убираю из кода первую цифру (2), убираю цифру N

3.2 разбиваю оставшиеся число XXXXXX на две равные части по три цифры. получаем

первые три цифры

XXX-номер карточки товара

вторые три цифры

XXX-номер опции

3.3 Нахожу карточку товара. и указанную модель. (могу ничего не найти. или найти товар. но не найти модель. всё это отображаем на этапе 4)

4. далее происходит формирование таблицы 

https://opencartforu...-1465573466.png

 

Абсолютно правильно! Я в первом после просто очень долго описывала то, что хотела. Но Вы правильно все поняли.

Змінено користувачем Lilya
Надіслати
Поділитися на інших сайтах


Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз

×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.