Contact Us +32 81813700

Разработка модулей

Введение

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

Вся организация управляется через проекты на launchpad: http://launchpad.net Наши проекты на launchpad в настоящий момент организованы примерно так:

Имя проекта Ссылка Описание
openobject https://launchpad.net/openobject основной супер-проект (группа) где все ошибки, функции и ЧаВо управляются
openobject-bi https://launchpad.net/openobject-bin проект business intelligence
openobject-server https://launchpad.net/openobject-server сервер openobject
openobject-client https://launchpad.net/openobject-client приложение-клиент openobject (gtk)
openobject-client-web https://launchpad.net/openobject-client-web веб-клиент openobject web (раньше назывался eTiny)
openobject-addons https://launchpad.net/openobject-addons проект для всех модулей, связанных с openobject
openerp https://launchpad.net/openerp упаковка всего связанного с openobject (подборка модулей, составляющих приложение)

Получение исходного кода

Пожалуйста, обратитесь к Как получить последний исходный код главной ветви в разделе Bazaar.

Если вы не знакомы с системой контроля версий Bazaar, прочтите документацию по Bazaar

Рекомендации по программированию

Рекомендации по разработке

Модули

Файловая структура модулей

Структура модуля выглядит примерно так:

/module_name/
/module_name/__init__.py
/module_name/__terp__.py
/module_name/module.py
/module_name/module_view.xml
/module_name/module_wizard.xml
/module_name/module_report.xml
/module_name/module_data.xml
/module_name/module_demo.xml
/module_name/module_security.xml
/module_name/wizard/
/module_name/wizard/__init__.py
/module_name/wizard/wizard_name.py
/module_name/wizard/wizard_name_view.xml
/module_name/wizard/wizard_name_workflow.xml
/module_name/report/
/module_name/report/__init__.py
/module_name/report/report_name.sxw
/module_name/report/report_name.rml
/module_name/report/report_name.py
Именование объектов и полей
Безопасность

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

Разработка

Рекомендации по программированию

Следуйте правилу Python PEP 8: http://www.python.org/dev/peps/pep-0008/

Отчёты

Общий стиль
  • Используйте везде шрифт Helvetica
  • Отступы (в миллиметрах):
    • сверху: 14
    • снизу: 16
    • слева: от 12 до 13, чтобы можно было сделать перфорацию не повреждая текст
    • справа: от 12 до 13

Note

линия-разделитель между заголовком и телом может слегка перекрывать левую и правую границы: до 9 миллиметров влево и до 12 миллиметров вправо.

  • для заголовков используйте шрифт Helvetica-Bold размером 14.5
  • в каждый отчёт включайте контекст: например, для отчёта account_balance контекстом будут учётный год и периоды
  • для обозначения ячеек: используйте Заглавные Буквы если название содержит больше одного слова (пр.: Date Ordered)
  • содержимое и название ячейки должны иметь одинаковый отступ
  • для отчётов можно определить два типа массивов:
    • массив с общей информацией, например основания, дата..., используйте:
      • шрифт Helvetica-Bold, размер 8 для названия ячейки
      • шрифт Helvetica, размер 8 для содержимого
    • массив с подробной информацией, используйте:
      • шрифт Helvetica-Bold, размер 9 для названия ячейки
      • шрифт Helvetica, размер 8 для содержимого
Верхние и нижние колонтитулы для внутренних отчётов:
  • Внутренний отчёт = любой бухгалтерский и любой другой отчёт, который предназначен для внутреннего использования (не отправляется заказчику).
  • Размер заголовка должен быть меньше
  • Измените корпоративные верхний и нижний колонтитул для внутренних отчётов. Используйте упрощённые колонтитулы для внутренних отчётов: Название организации, заголовок отчёта, дата печати и номер страницы.
  • Верхний колонтитул:
    • название организации: в середине каждой страницы
    • название отчёта: печатается в центре, после верхнего колонтитула
    • дата печати: не в середине отчёта, но слева в верхнем колонтитуле
    • номер страницы: справа, на каждой странице. Должен состоять из номера текущей страницы и общего числа страниц. Напр. страница 3/15
  • Нижний колонтитул:
    • чтобы избежать напрасной траты бумаги, мы отказались от нижнего колонтитула
разделитель строк в таблицах:
  • лучше, когда каждая строка таблицы имеет светло-серую строку в качестве разделителя
  • используйте серый разделитель столбцов только для массива, содержащего общую информацию
разбивка таблиц
  • следом за заголовком таблицы должны находиться минимум две строки с данными (избегайте заголовков таблиц внизу страницы)
  • когда разбивается большая таблица, заголовок должен повторяться на каждой странице
как различить родительские и дочерние объекты?
  • При использовании более одного уровня, используйте эти стили:
  • для уровней 1 и 2: кегль 8.0 шрифт “Helvetica-Bold”
  • начиная с третьего уровня, используйте шрифт “Helvetica” с кеглем 8.0 и увеличивайте отступ на 13 точек с каждым уровнем
  • подчёркивайте суммы, когда элемент является родительским

Модули

Соглашение об именовании

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

Пример:

  • account_invoice_layout

Требуемая информация

Каждый модуль должен содержать:

  • название
  • описание

Описание модулей

Зависимости

Каждый модуль должен содержать:

  • Список зависимостей от других модулей: [‘account’,’sale’]
    • Указывайте только модуль верхнего уровня. Нет необходимости указывать так: [‘account’,’base’,’product’,’sale’]
  • Строка требования версии, где base — версия OpenERP в виде выражения на Python
    • account>=1.0 && base=4.4

Содержимое модуля

Каждый модуль должен содержать демонстрационные данные для каждого объекта, объявленного в модуле.

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

Руководство по пользовательским интерфейсам

Меню

Организация меню

Вот качественный пример:

  • Счета (список)
    • Счета заказчикам (список)
  • Черновые счета заказчикам (список)
  • Открытые счета заказчикам (список)
  • Новый счёт заказчику (форма)
  • Счета от поставщиков
  • ...

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

Если вы используете папки с действием по щелчку мыши, их потомки должны быть объектами того же типа. Мы полагаем что наследуемые являются теми же объектами.

Списки должны быть во множественном числе:

  • Пункт Счет заказчику, должен называться Счета Заказчикам

Если вы хотите создать меню, фильтрующее по пользователю (Все и Мои), располагайте их на одном уровне:

  • Задания
  • Мои задания

А не:

  • Задания
    • Мои задания

По возможности избегайте использования сокращений в меню. Пример:

  • Строки П.М. -> Строки Перечня материалов
Меню Отчётов

Меню Инфо-панели должно находиться под разделом отчетов каждого основного меню.

  • Правильно: Управление продажами / Отчёты / Инфо-панели / Менеджер продаж
  • Неправильно: Инфо-панель / Продажи / Менеджер продаж

Если вы хотите использовать пункты Этот месяц/Все месяцы, расположите их на самом нижнем уровне:

  • Отчёты/Табель пользователя/Все месяцы
  • Отчёты/Табель пользователя/Этот месяц
Значки в меню
  • Значок меню должен быть установлен в соответствии с завершающим действием мастера, например
    • мастер, печатающий отчёт, должен использовать значок отчёта, а не мастера
    • мастер, открывающий список в результате работы, должен использовать значок списка, а не мастера
Порядок пунктов меню

Меню настройки должен быть в верхней части списка. Используйте параметр sequence=0

Меню Отчёты должно быть в самом низу списка. Используйте параметр sequence=50.

Типичные ошибки
  • Правка категорий -> Категории
  • Список категорий -> Категории

Виды

Объекты с состоянием
  • Поле состояния, если присутствует, должно располагаться в левом нижнем углу вида
  • Кнопки изменения состояния — справа от этого поля состояния
Критерии поиска

Критерии поиска: поиск доступен по всем столбцам при просмотре в виде списка

Названия действий

Мастера

Терминология

Язык по-умолчанию

Основной язык для каждой разработки — Американский английский

Для меню и полей, первые буквы должны быть в верхнем регистре, исключая союзы:

  • Chart of Accounts

Соглашение об именовании полей

  • Избегайте общих слов в названиях полей и используйте, по возможности, точные термины. Например:
    • Название -> Название заказа на продажу
    • Родитель -> Родительский перечень материалов
    • Курс -> Курс обмена валют
    • Количество -> Итого продано

Вот несколько правил, которые надо соблюдать:

  • поля many2one (много-к-одному) должны подпадать под регулярное выражение: ‘.*_id’

  • поля one2many (один-ко-многим) должны подпадать под регулярное выражение: ‘.*_ids’

  • таблица отношений one2many (один-ко-многим) должна подпадать под регулярное выражение: ‘.*_rel’

  • поля many2many (многие-ко-многим) должны подпадать под регулярное выражение: ‘.*_ids’

  • для разделения слов используйте знак подчёркивания

  • избегайте использование верхнего регистра

  • если поле должно состоять из нескольких слов — начните с самых важных слов

    • Хороший пример: sale_price, partner_address_id
    • Плохой пример: is_sellable

Соглашение об именовании объектов

  • Названия объектов должны начинаться с названия модуля, в котором они определены.
  • Если название объекта состоит из нескольких слов — используйте точки для разделения слов.

Некоторые условия

  • Все деревья ресурсов называются “Структура ХХХ”, если только иное не оговорено отдельно
    • Правильно: Структура расположений, План счетов, Структура категорий
    • Неправильно: Дерево категорий, Дерево перечней материалов

Модуль Recorder

Рецензия качества

  • Вы можете проверить качество своего модуля, используя модуль “base_module_quality”, доступный среди стандартных дополнений.

The documentation is editable by everyone on Launchpad.

Table Of Contents

Previous topic

Bazaar, система контроля версий

Next topic

Процесс документирования

This Page