Заявление об отказе от ответственности: эта статья находится в стадии разработки и сочетает в себе несколько функций структуры Frappe, ERPNext и их изящных диаграмм Frappe. Как обычно и в обозримом будущем, я поясняю, что я разработчик, получающий знания из опыта работы в сельском хозяйстве, поэтому ожидайте ошибок и серьезных упущений. Это предполагает, что вы уже настроили сервер разработки ERPNext или даже производственный сервер с включенным режимом разработчика и создали приложение. Подробнее об этом см. This.

Мой поиск простых данных

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

В идеальном мире эти данные аккуратно подаются в формате информационной панели, предварительно анализируются и готовы упростить вашу задачу.

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

Открытие Frappé и ERPNext дало мне представление о будущем, в котором данные четко показаны, инструменты для их анализа легко доступны, а после разработки этих инструментов и их настройки можно тратить меньше времени в офисе или на компьютере, а ваши сотрудники изо всех сил пытаются войти в него или подготовить его к анализу.

Моя цель

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

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

Страницы

Frappe, фреймворк, который используется для запуска ERPNext, имеет в качестве основы DocType, в который вы вводите данные и управляете ими. Я добился достаточного успеха в их создании, кодировании с ними и обучении вместе с сообществом и моей командой программистов. Однако я еще не освоил представление под названием «Страница». Я думаю, что страница больше похожа на холст художника, на котором можно нарисовать что угодно.

Страница полезна для отображения данных в табличном формате или для отображения графиков. Поскольку это одна из моих конечных целей, я наконец нашел время, чтобы посвятить себя этому делу. По завершении я объединю эту статью с моей серией Руководство по основному программированию для Frappé / ERPNext Part 2.

Создание страницы

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

В веб-браузере откройте Рабочий стол и перейдите на прекрасную панель вверху. Введите Список страниц. Вы увидите все существующие Page DocTypes. Вы можете нажать кнопку Создать в правом верхнем углу, чтобы создать новую страницу.

Более быстрый и альтернативный способ - напрямую ввести на потрясающей панели следующую команду:

New Page

Оба приведенных выше пути позволят вам указать основы для создания вашего шаблона (шаблона) для страницы в ERPNext. Как минимум необходимо указать:

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

Заголовок: Хотя это не обязательно, дайте своей странице заголовок.

Модуль: выберите модуль, в котором должна отображаться страница. Если вы используете его в своем настраиваемом приложении, выберите этот модуль из раскрывающегося списка.

Стандартный: укажите, если да или нет.

Роли: добавьте роли, которые могут иметь доступ к странице.

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

Страница шаблона

Либо с помощью общей папки в VirtualBox разработки, либо на локальном компьютере, либо даже через консоль, чтобы получить доступ к каталогу для страницы шаблона:

/apps/[your-app-name]/[your-app-name]/[your-app-name]/page/[page_name]/

В этом каталоге вы найдете три файла:

__init__.py
[имя_страницы] .js
[имя_страницы] .json

Для ясности в статье мы в дальнейшем будем называть наш файл [page_name] .js следующим образом: test-page.js, откройте его, чтобы мы могли начать:

На этом этапе доступ к странице возможен только на сервере по прямой ссылке, в данном случае:

[URL сервера] / рабочий стол # testpage

Если вы введете его в свой браузер, вы найдете это:

Давайте играть

Теперь, когда у нас есть пустая страница в ERPNext, мы можем приступить к нашей работе. Мы начнем с основ, а затем перейдем к другим вопросам, которые я считаю важными.

Добавить кнопку меню

Если мы добавим кнопку меню, мы сможем предоставить пользователю элементы управления, которые позволяют ему выполнять несколько действий на странице. В этом примере мы просто добавим ссылку на страницу проектов. Делаем так:

И результат, когда мы перезагружаем страницу, таков:

Если вы щелкните ссылку, созданную в меню, вы попадете в представление списка проектов. Не стесняйтесь протестировать это. Щелкните стрелку назад в своем браузере.

Добавление навигации по хлебным крошкам

Вы также можете указать маршрут хлебных крошек в верхнем левом углу, чтобы вы могли перемещаться из ERPNext к модулю, откуда вы пришли, добавив эту строку:

frappe.breadcrumbs.add("[Module-name]")

Его необходимо добавить в функцию frappe.pages []. On_page_load.

Добавление диаграммы фраппе

Что мне очень нравится в Frappe, так это то, что он постоянно развивается. В прошлом году они развернули собственную независимую библиотеку диаграмм под названием Frappe Charts. Я лично был свидетелем презентации в Mumbai Auditorium во время конференции в октябре 2017 года, и, учитывая все, что можно было узнать об ERPNext, я до сих пор сажусь и играю с ней.

Буквально вчера мне удалось успешно загрузить на эту же страницу образец диаграммы. Хотя элемент, который я выбрал на странице, был адекватным. Я закончил с этим:

TK Ожидание загрузки изображения развертывания диаграммы, охватывающей всю страницу.

В приведенном выше коде есть два дополнительных блока кода. Каждый из них определяется с помощью const JavaScript для переменных, идентификатор переменной которых нельзя переназначить. Значение может измениться.

Проблема, с которой я столкнулся в эти выходные, когда я пытался реализовать ее, заключалась в том, что я не использовал правильное значение свойства в объекте диаграммы для родительского элемента. Наконец, обращаясь к некоторым примерам в блоге Prateeksha Frappe Chart, я наткнулся на правильную методологию, которая использует jQuery для ссылки на DOM, для тега div с class = layout-main-section

parent: $('.layout-main-section'),

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

В ожидании:

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

Некоторые диалоги для развлечения

Особая благодарность Пратикше Сингху и Фарис Ансари за их чудесное видео, которое я использую в качестве руководства при написании этой статьи.

По мере того, как я строю страницу, я чувствую себя обязанным добавлять полезные элементы, чтобы иметь своего рода «шаблон», который я могу легко использовать в качестве источника для создания страниц с аналогичным стилем в будущем путем копирования блоков кода и вставки в новый .js файл для каждой страницы, своего рода «набор инструментов» для использования в будущем.

frappe.msgprint()

Метод frappe.msgprint () откроет для пользователя окно / всплывающее окно Сообщение. Это будет всплывающее окно с кнопкой закрыть и нужным сообщением. Это полезно для подтверждения выполнения определенных действий. Используйте экономно!

Т.к. пример

frappe.throw()

Frappe.throw () похож на msgprint, за исключением того, что в нем четко отображается заголовок Ошибка.

Пользователи могут включать не только одну строку текста, они могут включать таблицу или что-то подобное, которое служит подтверждением или где пользователю может быть предложено добавить некоторые детали в DocType или проверку.

Напоминание:

Весь код, показанный после этого, должен находиться в этом элементе оболочки!

frappe.pages[‘testpage’].on_page_load = function(wrapper) {
}

Пример диалога: «Hello World»

Начнем с примера диалогового окна на нашей тестовой странице:

// en-US: This is the basic Dialog controller for Frappe. We create a dialog object, with the title attribute set to “Hi” and assign it to a variable “d”
d = new frappe.ui.Dialog({title: “Hello World”});
// en-US: Here we command that the dialog assigned to “d” be shown on the page using the show() method.
d.show()

Результат должен быть таким:

ТЗ Добавить изображение

Добавление полей в диалог