| Linha 190: | Linha 190: | ||
Este último registro define o usuário admin: | Este último registro define o usuário admin: | ||
---- | |||
*Os campos de login, senha, etc, são simples. | *Os campos de login, senha, etc, são simples. | ||
*O atributo ref permite preencher as relações entre os registros: | *O atributo ref permite preencher as relações entre os registros: | ||
---- | |||
<pre><field name="company_id" ref="main_company"/></pre> | <pre><field name="company_id" ref="main_company"/></pre> | ||
O campo company_id é uma relação muitos-para-um a partir do objeto de usuário para o objeto da empresa e main_company é o id de associado. | |||
---- | |||
*O eval atributo permite colocar algum código python no xml: aqui o campo groups_id é um many2many. Para essa área ", [(6,0, [group_admin])]" significa: Remova todos os grupos associados ao usuário atual e usar a lista [group_admin] como os novos grupos associados (e group_admin é o id de outro recorde ). | |||
*A pesquisa atributo permite localizar o registro para associar quando você não sabe o seu id xml. Assim, você pode especificar um critério de pesquisa para localizar o registro desejado. O critério é uma lista de tuplas da mesma forma que para o método de busca predefinido. Se existem vários resultados, arbitrária será escolhida (o primeiro): | |||
---- | |||
Edição das 06h34min de 11 de janeiro de 2014
Estrutura

Um módulo poderá conter os seguintes elementos:
Objeto de Negócios : declarado como classes Python estendendo o osv.Model classe, a persistência destes recursos é completamente gerenciado pelo ORM do OpenERP.
Dados : Os arquivos XML / CSV com meta-dados (pontos de vista e declaração de fluxos de trabalho), os dados de configuração (módulos de parametrização) e dados de demonstração (opcional, mas recomendado para o teste),
Relatórios : RML (formato XML). HTML / MAKO ou OpenOffice modelos de relatório, a ser mesclado com qualquer tipo de dados de negócios, além de gerar HTML, ODT ou relatórios em PDF.
Cada módulo está contido em seu próprio diretório dentro ou o / bin / addons do servidor ou outro diretório de addons, configurado na instalação do servidor. Para criar um novo módulo, por exemplo, o módulo 'OpenAcademy', são necessárias as seguintes etapas:
- Criar um
openacademy
subdiretório no diretório de origem / addons
- Criar o arquivo de importação módulo
__init__.py
- Criar o arquivo Manifield módulo
__openerp__.py
- Criar Python arquivos contendo objetos
- Criar. xml segurando os dados do módulo, como visualizações, entradas de menu ou dados de demonstração
- Opcionalmente, criar relatórios ou workflows
Arquivo de importação Python __ init__.py
O
__init__.py
arquivo é o arquivo de importação Python, porque um módulo OpenERP também é um módulo Python regular. O arquivo deve importar todos os outros arquivos python ou submódulos. Por exemplo, se um módulo contém um único arquivo python chamado
openacademy.py
, o arquivo deve ser parecido:
openacademy importação
Arquivo de manifesto __ openerp__.py
No diretório do módulo criado, você deve adicionar um
__openerp__.py
arquivo. Esse arquivo, que deve ser um dicionário Python literal, é responsável por
determinar os arquivos XML que serão analisados durante a inicialização do servidor, e também para determinar as dependências do módulo criado. declarar metadados adicionais Este arquivo deve conter um dicionário Python com os seguintes valores:
name O nome do módulo em Inglês.
version A versão do módulo.
summary resumo descrição ou palavras-chave
description A descrição do módulo (texto).
category A categoria do módulo
author O autor do módulo.
website URL do site do módulo
license A licença do módulo (default: AGPL-3).
depends Lista de módulos em que este módulo depende ao lado de base.
data Lista de arquivos XML para carregar quando o módulo é instalado ou atualizado.
demo Lista de arquivos xml adicional. para carregar quando o módulo é
instalado ou atualizado e bandeira de demonstração está ativo.
installable Verdadeiro ou Falso. Determina se o módulo é instalado
ou não.
auto_install Verdadeiro ou Falso (padrão: False). Se definido como "É verdade", o
módulo é um link. Ele será instalado assim
como todas as suas dependências estão instaladas.
Para o
openacademy
módulo, aqui está um exemplo de
__openerp__.py
arquivo de declaração:
{
'name' : "OpenAcademy",
'version' : "1.0",
'author' : "OpenERP SA",
'category' : "Tools",
'depends' : ['mail'],
'data' : [
'openacademy_view.xml',
'openacademy_data.xml',
'report/module_report.xml',
'wizard/module_wizard.xml',
],
'demo' : [
'openacademy_demo.xml'
],
'installable': True,
}
Objetos
Todos os recursos são objetos OpenERP: faturas, parceiros. Metadados são também objeto também: menus, ações, relatórios ... Nomes de objeto são hierárquicos, como nos exemplos a seguir:
- account.transfer: a transferência de dinheiro
- account.invoice: uma factura
- account.invoice.line: uma linha de factura
Geralmente, a primeira palavra é o nome do módulo: conta, estoque, venda.
Aqueles objeto são declaradas em python ser subclasse osv.Model
O ORM do OpenERP é construído sobre PostgreSQL. Assim, é possível consultar o objeto usado pelo OpenERP utilizando a interface de objeto (ORM) ou usando diretamente instruções SQL.
Mas é perigoso para escrever ou ler diretamente no banco de dados PostgreSQL, como você vai atalho passos importantes, como as restrições de verificação ou de modificação de fluxo de trabalho.
Arquivos XML
Arquivos XML localizados no diretório do módulo são usados para inicializar ou atualizar o banco de dados quando o módulo é instalado ou atualizado. Eles são usados para muitas finalidades, dentre as quais podemos citar:
- inicialização e declaração de dados de demonstração,
- declaração pontos de vista,
- declaração relatórios,
- declaração workflows.
Estrutura geral de arquivos XML OpenERP é mais detalhado no XML de dados de serialização seção. Olha aqui, se você estiver interessado em aprender mais sobre a inicialização e de demonstração de declaração de dados de arquivos XML. A seção a seguir só estão relacionados com XML específico para ações, entradas do menu, relatórios, assistentes e fluxos de trabalho de declaração.
Os dados podem ser inseridos ou atualizados nas tabelas do PostgreSQL correspondentes aos objetos OpenERP usando arquivos XML. A estrutura geral de um ficheiro XML OpenERP é como se segue:
<?xml version="1.0"?>
<openerp>
<data>
<record model="model.name_1" id="id_name_1">
<field name="field1"> "field1 content" </field>
<field name="field2"> "field2 content" </field>
(...)
</record>
<record model="model.name_2" id="id_name_2">
(...)
</record>
(...)
</data>
</openerp>
Grave Tag
Descrição
A adição de novos dados é feita com o tag de ficha. Este leva um atributo obrigatório: Modelo. Modelo é o nome do objeto em que a inserção tem de ser feito. O registro de marca também pode ter um atributo opcional: id. Se este atributo é dado, uma variável deste nome pode ser usado mais tarde, no mesmo arquivo, para fazer referência ao ID do recurso recém-criado.
A tag registro pode conter marcas de campo. Eles indicam os campos de valor do registro. Se um campo não for especificado, o valor padrão será usado.
A tag campo do registro'
Os atributos para a tag campo são os seguintes:
Nome : obrigatório o nome do campo
eval : opcional expressão python que indica o valor a adicionar
ref referência a um ID definido neste arquivo
modelo modelo a ser pesquisado na busca
pesquisa uma consulta
Exemplo
<record model="ir.actions.report.xml" id="l0">
<field name="model">account.invoice</field>
<field name="name">Invoices List</field>
<field name="report_name">account.invoice.list</field>
<field name="report_xsl">account/report/invoice.xsl</field>
<field name="report_xml">account/report/invoice.xml</field>
</record>
Vamos analisar um exemplo retirado da fonte OpenERP (base_demo.xml no módulo de base):
<record model="res.company" id="main_company">
<field name="name">Tiny sprl</field>
<field name="partner_id" ref="main_partner"/>
<field name="currency_id" ref="EUR"/>
</record>
<record model="res.users" id="user_admin">
<field name="login">admin</field>
<field name="password">admin</field>
<field name="name">Administrator</field>
<field name="signature">Administrator</field>
<field name="action_id" ref="action_menu_admin"/>
<field name="menu_id" ref="action_menu_admin"/>
<field name="address_id" ref="main_address"/>
<field name="groups_id" eval="[(6,0,[group_admin])]"/>
<field name="company_id" ref="main_company"/>
</record>
Este último registro define o usuário admin:
- Os campos de login, senha, etc, são simples.
- O atributo ref permite preencher as relações entre os registros:
<field name="company_id" ref="main_company"/>
O campo company_id é uma relação muitos-para-um a partir do objeto de usuário para o objeto da empresa e main_company é o id de associado.
- O eval atributo permite colocar algum código python no xml: aqui o campo groups_id é um many2many. Para essa área ", [(6,0, [group_admin])]" significa: Remova todos os grupos associados ao usuário atual e usar a lista [group_admin] como os novos grupos associados (e group_admin é o id de outro recorde ).
- A pesquisa atributo permite localizar o registro para associar quando você não sabe o seu id xml. Assim, você pode especificar um critério de pesquisa para localizar o registro desejado. O critério é uma lista de tuplas da mesma forma que para o método de busca predefinido. Se existem vários resultados, arbitrária será escolhida (o primeiro):