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