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

После прошлого поста я занялся поиском готового софта, который мог бы решить мою задачу. В целом подобный софт называется ERP (Enterprise Resource Planning, планирование ресурсов предприятия) и кроме, собственно учета склада и производства, включает еще кучу всяких функций.
Я изучил десятки программ и грубо они делятся на три группы:
1)Мелкие софтины, заточенные под конкретные задачи, часто довольно странные и чаще всего очень скудные по функционалу и не гибкие.
2)Средние софтины, часто бесплатные (или условно бесплатные), а также открытые (или условно открытые). Есть весьма навороченные.
3)Огромные монстры для огромных заводов. Стоимость подписки может составлять тысячи долларов в месяц за рабочее место (и думаю это не предел, многие просто не пишут о ценах).
Третий пункт я отмел сразу.
Первый - тоже, после того как поставил несколько таких приложений и понял, что нужного мне функционала там адекватно не получить.
И честно принялся изучать второй пункт, а если точнее, то одну из самых популярных открытых систем - Odoo, по наводке

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

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

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

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

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