terça-feira, 19 de março de 2013

Instalando módulos e localização brasileira

Acessem o novo endereço do blog:
http://www.odooerpnews.com.br/2013/03/19/instalando-modulos-e-localizacao-brasileira/

No OpenERP 7 existe agora o conceito de aplicativos, esses aplicativos são os antigos módulos porém eles são mantidos e instalados a partir do site do 'OpenERP SA'. Para instala-los você será redirecionado para a página online do Openerp para efetuar login, o cadastro é gratuito e você não paga nada para baixar os módulos.

E existe ainda a forma manual de instalar os módulos, que é efetuando o download do módulo, colocando o na pasta addons, e Atualizar a lista de módulos no menu Configurações. É desta forma que vamos instalar a localização brasileira, já que está ainda não está disponível para baixar através dos aplicativos.

Como os módulos já foram baixados na pasta aqui, vamos apenas precisar Atualizar a lista caso esteja algum faltando. Bom vamos lá, para que seja possível instalar é necessário uma configuração antes.
Acesse: Configurações -> Usuarios -> Selecione o usuário Admin, clique em editar.
Na aba permissões de acesso marque a opção "procedimentos técnicos" e clique em salvar.
Recarregue a página para que mais opções no menu apareçam.
Após isso você pode Atualizar a lista de módulos, e para instalar novos módulos você deve ir no menu Módulos instalados, na canto direito superior na caixa de busca desmarque a opção instalados e pronto, aparecerá todos os módulos para você.
Agora é só clicar no módulo desejado e depois em instalar.

A lista completa de módulos da localização brasileira, no Openerp você pode ver uma descrição de cada módulo, ou abrindo através do eclipse o arquivo __openerp__.py de cada módulo.




Criando banco de dados

A url default do openerp é: localhost:8069, porém ele pode estar rodando em outra porta. Caso você rode a partir do eclipse, na saída do console, vai ter o log da porta que ele está executando.
Para mudar a porta caso já tenha algum outro programa rodando você pode definir no arquivo de configuração.
Então devemos acessar o browser e ir para o endereço. Na tela de login tem um link: Manage databases.
Clicando nele temos a seguinte tela:
Em master password o padrão é admin, porém é muito importante que você mude a senha quando colocar em produção, a senha de administrador é configurada no arquivo de configuração.
admin_passwd = admin
Você deve fornecer o nome do novo banco de dados, marcar se deseja que sejam carregados dados de demonstração, a lingua default do sistema. Após instalado é possível adicionar outras traduções.
E a senha de administrador do sistema, por padrão o usuário é admin, e a senha para você acessar é que você colocar aqui.
Vai demorar um pouco até que o banco de dados seja criado.
Nesta tela você pode criar quantos bancos de dados você quiser, o OpenErp já foi pensado para trabalhar com várias instancias rodando paralelamente, ou multi-tenant (termo mais conhecido).
Voltando ao login, se você criou mais que um banco de dados no canto superior direito vai aparecer uma caixa de seleção para você escolher que banco de dados você deseja conectar. Escolha o banco e efetue o login.


quinta-feira, 14 de março de 2013

Tarefas agendadas OpenERP

O OpenERP nos permite criar tarefas para executar periodicamente como: enviar emails, processar arquivos, buscar modificações.

Se você estiver desenvolvendo um módulo e precisar dessa funcionalidade, você vai precisar duas coisas

Primeira: Dentro do xml de seu módulo criar um record do modelo ir.cron, abaixo disponibilizei um exemplo. Você deve especificar o model, e a função que vai ser executada.
Com interval_number e interval_type você configura a frequência de execução da sua tarefa. O type pode ser: (minutes, hours, days, weeks, months, years)
Pode utilizar também o parâmetro args para passar parâmetros  ou seja pode criar vários registros que chamam o mesmo método mas passar parâmetros diferentes. Ex: <field name="args" eval="'(1,False,)'" />


<?xml version="1.0" encoding="UTF-8"?>

<openerp>
    <data>
        <record forcecreate='True' id='ir_cron_send_changes_to_message_queue' model='ir.cron'>
            <field name="name">Run Schedule to get changes in ERP and send to MQ</field>
            <field name="active" eval='True' />
            <field name="user_id" ref='base.user_root'/>
            <field name="interval_number">1</field>
            <field name="interval_type">minutes</field>
            <field name="numbercall">-1</field>
            <field name="doall" eval='False' />
            <field name="model" eval="'modulo.times'" />
            <field name="function" eval="'send_changes_to_rabbitmq'" />
            <field name="args" eval="'()'" />
        </record>
    </data>
</openerp>


O Segundo é definir dentro do seu objeto o evento com o mesmo nome que você definiu no xml. A assinatura dele deve ter no minimo 3 parâmetros (self, cr, uid), caso você passe no args do xml algum parâmetro  lembre-se de acrescentar o parâmetro ao método, pois como é um método que roda no servidor, você não terá indicação de que ocorreu erro, apenas olhando no log.
cr - cursor usado para conectar ao banco de dados
uid - Id do usuário atual - configurado no xml.

def send_changes_to_rabbitmq(self, cr, uid, ids=None):  
     pass


É isso, no lugar do pass você coloca seu código do que precisa ser feito.