Linha 165: Linha 165:
     <field name="report_xsl">account/report/invoice.xsl</field>
     <field name="report_xsl">account/report/invoice.xsl</field>
     <field name="report_xml">account/report/invoice.xml</field>
     <field name="report_xml">account/report/invoice.xml</field>
</record>
</pre>
<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>
</record>
</pre>
</pre>

Edição das 06h31min de 11 de janeiro de 2014

Estrutura

Estrutura módulo

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>
<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>