This is the documentation for older versions of Odoo (formerly OpenERP).
Разработка модулей¶
Введение¶
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 |
основной супер-проект (группа) где все ошибки, функции и ЧаВо управляются |
|
openobject-bi |
проект business intelligence |
|
openobject-server |
сервер openobject |
|
openobject-client |
приложение-клиент openobject (gtk) |
|
openobject-client-web |
веб-клиент openobject web (раньше назывался eTiny) |
|
openobject-addons |
проект для всех модулей, связанных с openobject |
|
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:
Список зависимостей от других модулей: ['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", доступный среди стандартных дополнений.