Sem resumo de edição
 
(8 revisões intermediárias pelo mesmo usuário não estão sendo mostradas)
Linha 1: Linha 1:
=='''Estrutura'''==
==[[Estrutura - Módulo]]==
[[Ficheiro:Modulosopenerp.png|thumb|Estrutura módulo]]
==[[Objetos, Campos e Métodos]]==
Um módulo poderá conter os seguintes elementos:
==[[Exibições e Eventos]]==
 
==[[Menus e Ações]]==
'''Objeto de Negócios :''' declarado como classes Python estendendo o osv.Model classe, a persistência destes recursos é completamente gerenciado pelo ORM do OpenERP.
==[[Exemplo de criação módulo]]==
 
==[[Módulo de controle de versões]]==
'''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),
==[[Declaração Relatório]]==
 
'''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<pre>openacademy</pre>subdiretório no diretório de origem / addons
 
* Criar o arquivo de importação módulo <pre>__init__.py</pre>
 
* Criar o arquivo Manifield módulo <pre>__openerp__.py</pre>
 
* 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 <pre>__init__.py</pre> 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 <pre>openacademy.py</pre> , o arquivo deve ser parecido:
 
openacademy importação
 
=='''Arquivo de manifesto __ openerp__.py'''==  
 
No diretório do módulo criado, você deve adicionar um <pre>__openerp__.py</pre> 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:
<pre>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.</pre>
 
 
Para o <pre>openacademy</pre> módulo, aqui está um exemplo de <pre>__openerp__.py</pre> arquivo de declaração:
 
 
<pre>{
    '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,
}</pre>
 
=='''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:
 
<pre><?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>
</pre>
 
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
<pre>
<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>
</pre>
Vamos analisar um exemplo retirado da fonte OpenERP (base_demo.xml no módulo de base):
<pre>
<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>
</pre>
<pre>
<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>
</pre>

Edição atual tal como às 06h46min de 11 de janeiro de 2014