Versions

This is the documentation for older versions of Odoo (formerly OpenERP).

See the new Odoo user documentation.

See the new Odoo technical documentation.

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

Введение

Here you will found informations about the organisation of the community in OpenERP project. It include a description of the different tools used, the role of the differents actors, and the different process for improvement management.

Вся организация управляется через проекты на 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

Руководство по программированию

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

Модули

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

The structure of a module should be like this:

/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
Objects and fields namings
Безопасность

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

Разработка

Руководство по программированию

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

Отчёты

Общий стиль
  • Используйте везде шрифт Helvetica

  • Отступы (в миллиметрах):

    • сверху: 14

    • снизу: 16

    • слева: от 12 до 13, чтобы можно было сделать перфорацию не повреждая текст

    • справа: от 12 до 13

    Примечание

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

  • for Titles use the font Heveltica-Bold with the size 14.5

  • в каждый отчёт включайте контекст: например, для отчёта account_balance контекстом будут учётный год и периоды

  • для обозначения ячеек: используйте Заглавные Буквы если название содержит больше одного слова (пр.: Date Ordered)

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

  • для отчётов можно определить два типа массивов:

    • массив с общей информацией, например основания, дата..., используйте:

      • шрифт Helvetica-Bold, размер 8 для названия ячейки

      • шрифт Helvetica, размер 8 для содержимого

    • массив с подробной информацией, используйте:

      • шрифт Helvetica-Bold, размер 9 для названия ячейки

      • шрифт Helvetica, размер 8 для содержимого

Headers and footers for internal reports:
  • Внутренний отчёт = любой бухгалтерский и любой другой отчёт, который предназначен для внутреннего использования (не отправляется заказчику).

  • Размер заголовка должен быть меньше

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

  • Верхний колонтитул:

    • название организации: в середине каждой страницы

    • название отчёта: печатается в центре, после верхнего колонтитула

    • дата печати: не в середине отчёта, но слева в верхнем колонтитуле

    • номер страницы: справа, на каждой странице. Должен состоять из номера текущей страницы и общего числа страниц. Напр. страница 3/15

  • Нижний колонтитул:

    • чтобы избежать напрасной траты бумаги, мы отказались от нижнего колонтитула

table line separator:
  • it's prettier if each line in the table have a light grey line as separator

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

table breaking
  • следом за заголовком таблицы должны находиться минимум две строки с данными (избегайте заголовков таблиц внизу страницы)

  • когда разбивается большая таблица, заголовок должен повторяться на каждой странице

how to differentiate parents and children ?
  • При использовании более одного уровня, используйте эти стили:

  • для уровней 1 и 2: кегль 8.0 шрифт "Helvetica-Bold"

  • from the third level, use:fontName="Helvetica" fontSize="8.0" and increase the indentation with 13 (pixels) for each level

  • подчёркивайте суммы, когда элемент является родительским

Модули

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

The name of the module are all lowercase, each word separated by underscrores. Start always by the most relevant words, which are preferably names of others modules on which it depends.

Exemple:

  • account_invoice_layout

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

Each module must contains at least:

  • название

  • описание

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

Зависимости

Each module must contains:

  • Список зависимостей от других модулей: ['account','sale']

    • Указывайте только модуль верхнего уровня. Нет необходимости указывать так: ['account','base','product','sale']

  • Строка требования версии, где base — версия OpenERP в виде выражения на Python

    • account>=1.0 && base=4.4

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

Each module must contains dema data for every object defined in the module.

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

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

Views

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

  • Кнопки изменения состояния — справа от этого поля состояния

Search Criterions

Search criterions: search available on all columns of the list view

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

Мастера

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

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

The default language for every development must be U.S. english.

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

  • План счетов

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

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

    • Название -> Название заказа на продажу

    • Родитель -> Родительский перечень материалов

    • Курс -> Курс обмена валют

    • Количество -> Итого продано

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

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

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

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

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

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

  • avoid using uppercases

  • if a field should be composed of several words, start by the most important words

    • Хороший пример: sale_price, partner_address_id

    • Плохой пример: is_sellable

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

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

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

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

  • Все деревья ресурсов называются "Структура ХХХ", если только иное не оговорено отдельно

    • Правильно: Структура расположений, План счетов, Структура категорий

    • Неправильно: Дерево категорий, Дерево перечней материалов

Записывающий модуль

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

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