Как я написал свою "ERP"

топ 100 блогов alex_avr205.04.2017 Неделю назад я искал софтину для учета комплектующих. Вкратце, суть проблемы - я занимаюсь производством электроники и делаю много разных печатных плат (сейчас актуальных более 30 типов). На каждой плате есть компоненты, многие пересекаются, некоторые уникальны, всего сотни две наименований и десятки тысяч единиц в наличии. Разумеется, удержать это все в голове нереально и я периодически сталкиваюсь с ситуацией, что мне срочно нужно сделать какие-то платы, а какой-нибудь компонент внезапно закончился. Раньше я использовал эксель для хранения данных и расчета необходимого количества к закупке. Но экселевская таблица разрослась в итоге до таких размеров, что пользоваться ей стало практически невозможно, кроме того в экселе если и можно, то как-то сложно (и я не горел желанием изучать как) сделать некоторые полезные функции. Ну, например, сказать ему, что я произвел столько-то и столько-то таких и таких плат и автоматически пересчитать все запасы.

После прошлого поста я занялся поиском готового софта, который мог бы решить мою задачу. В целом подобный софт называется ERP (Enterprise Resource Planning, планирование ресурсов предприятия) и кроме, собственно учета склада и производства, включает еще кучу всяких функций.

Я изучил десятки программ и грубо они делятся на три группы:
1)Мелкие софтины, заточенные под конкретные задачи, часто довольно странные и чаще всего очень скудные по функционалу и не гибкие.
2)Средние софтины, часто бесплатные (или условно бесплатные), а также открытые (или условно открытые). Есть весьма навороченные.
3)Огромные монстры для огромных заводов. Стоимость подписки может составлять тысячи долларов в месяц за рабочее место (и думаю это не предел, многие просто не пишут о ценах).

Третий пункт я отмел сразу.
Первый - тоже, после того как поставил несколько таких приложений и понял, что нужного мне функционала там адекватно не получить.
И честно принялся изучать второй пункт, а если точнее, то одну из самых популярных открытых систем - Odoo, по наводке Как я написал свою ERP arhiv_6 (впрочем при поиске открытых ERP систем гугл неибежно ведет к ней).

Также на easyelectronics есть видеообзор этой системы, применительно к задаче учета электронных компонентов и посмотрев его я подумал: "идеально, то что надо!".

Как я написал свою ERP

Система ставится на компьютер (кроссплатформенна), а доступ к ней реализован через веб интерфейс. Начал играться с системой, вводя тестовые данные и почти сразу полезли грабли. Например, на странице компонентов все компоненты отображались в виде больших, абсолютно неудобных плашек, вместо очевидно удобной таблицы. Кнопочка List view переводит вид в режим таблицы, но эта настройка не сохраняется и каждый раз приходится нажимать заново (в видеообзоре это есть). Как выяснилось, проблема решаемая, но для ее решения нужно активировать специальный debug режим, нажать несколько кнопочек, вбить мало понятные данные в мало понятные поля в debug окошке и вот оно, отображается в виде раскрываемой таблицы (но не просто таблицы).

Ну ладно, не велика беда, создали компоненты, распихав их по удобной древовидной структуре, идем создавать BOM - Bill Of Materials, т.е. список деталей необходимый для того, чтобы произвести какое-то изделие. Первые же грабли тут - добавление компонентов в BOM очень неудобно. Почему-то невозможно сделать так, чтобы компоненты показывались древовидно. От дерева и след простыл, все одним списком. И как это исправить я так и не нашел. Ок, ладно, удалим все компоненты и создадим заново, с префиксами, чтобы проще было в общем списке искать. Выделяем компонент, жмем удалить и хрен там.

Как я написал свою ERP

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

Мое терпение долго держалось, подпитываемое "надо научиться пользоваться такой мощной системой, вначале всегда тяжело, зато потом будет удобный инструмент в работе и пригодится еще не раз на более крупных проектах". Но окончательно меня добил импорт CSV. Система позволяет импортировать CSV файл с компонентами, и их свойствами. Учитывая, что в CSV файл забить все компоненты банально намного проще и удобнее, чем нажимать кучу кнопок в веб интерфейсе, кроме того у меня уже есть списки в экселе - грех было не воспользоваться такой функцией. И тут поджидали очередные грабли. Импортировать список компонентов можно. Можно импортировать их цену, объем, вес, еще десяток каких-то нафиг не нужных свойств, но нельзя импортировать самого главного - количества в наличии. Нет возможности из CSV файла взять эти данные. Гугл сообщает о том, что проблема эта известная и много людей с этим сталкиваются. И есть даже инструкция, как это обойти. Состоящая из 19 пунктов...

Как я написал свою ERP

Причем включающих чуть ли не установку платного софта и работу напрямую с БД и прочие радости. Было еще много проблем, о которых мне даже рассказывать не хочется. В общем, на этом терпение не выдержало и сдалось. Плюнул на все и открыл текстовый редактор.

В итоге, тряхнул стариной, напряг память, вспомнил SQL и за несколько часов написал свою софтину. Да, она разумеется не имеет той тонны функционала, что есть в готовых системах. Зато в ней есть ровно тот функционал, который нужен мне.

Как я написал свою ERP

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

Все остальное система считает сама. А именно, в первую очередь самое главное - сколько каких компонентов нужно, чтобы произвести все те платы, которые хочется. Если компонентов не хватает, то система считает дефицит и подсвечивает ячейку красным. При этом можно указать количество заказанных компонентов и система также посчитает, хватит ли деталей с учетом заказанных. Когда детали будут на руках можно будет нажать галочку и количество автоматически обновится. Также, для справки считается сумма, на которую нужно закупить компонентов и сумма, на которую они уже есть в наличии (обнаружил, что у меня одних только не запаянных печатных плат почти на 25 тысяч лежит О_О). В таблице с платами можно задать сколько мы плат хотим произвести и система рассчитает сколько это будет стоить. Также можно нажать на шестереночку, это значит, что платы мы изготовили и система автоматически вычтет соответствующие количества компонентов из "склада".

CSV же можно легко подгрузить в базу данных используя phpmyadmin, что примечательно - процесс очень сильно похож на процесс импорта в Odoo и требует примерно одного уровня владения ПК :)

В общем вышло так, как это часто бывает - под конкретную задачу оказалось проще и быстрее написать программу состоящую из 500 строк кода, чем использовать монструозные системы, с кучей подводных камней и сложностей. Да, может быть они во многом сделаны "правильнее", но вот эта правильность иногда уж больно напоминает бюрократию в худших ее проявлениях :)

Оставить комментарий

Предыдущие записи блогера :
Архив записей в блогах:
В четверг у меня состоялась встреча с прекрасным. Со Славой Сэ из pesen_net . Мои роскошные белые локоны пришлось отрезать, дабы не затмили прекрасное. Встреча была внезапной и потому понравилась всем, включая Славу и, надеюсь, распорядителя и держателя очереди. Вот в этом ...
Подтвердился слух о том, что Управление Московской Патриархии по зарубежным учреждениям лишилось своего ключевого сотрудника - игумении Феодоры. Похоже, доверие Патриарха епископу Антонию безгранично и ему дарована самостоятельность. ...
интересно, мне дадут пизды за выкладывание в сеть этого документа? хотя я его и так уже всем показала Сегодня с утра я часа три сидела над маленьким, но симпатичным теховским файликом. В теховском файле содержалось нечто (тоже несомненно ...
http://censor.net.ua/news/369498/ssha_budut_rassledovat_finansirovanie_rossieyi_evropeyiskih_partiyi_smi А помните как всякие хазинды-фурсовы рассказывали нам как вроты кончили роков и и они наши лучшие дГузья? ;-) ...
УУуУууиИииииии! Кхм... Пардон, вырвалось. Так вот, свершился маленький шаг для человечества, но огромный скачок для меня! Я победил камеру в телефоне, и у меня впервые получились хорошие фотографии! Кроме того, я неожиданно вспомнил, что в прошлый раз забыл сделать групповую фотку ...