Relatórios personalizados

O Odoo vem com um framework de relatórios poderoso e fácil de usar. O mecanismo permite que você crie novos relatórios, como relatórios fiscais ou balanços patrimoniais e demonstrações de resultados com agrupamentos específicos e layouts.

Importante

Ative o modo de desenvolvedor para acessar a interface de criação de relatórios contábeis.

Para criar um novo relatório, abra o aplicativo Financeiro e navegue até Configuração ‣ Relatórios Contábeis. A partir daqui, você pode criar um relatório raiz ou uma variante.

Relatórios raiz

Os relatórios raiz podem ser considerados como relatórios contábeis genéricos e neutros. Servem como modelos nos quais as versões contábeis locais são criadas. Se um relatório não tiver um relatório raiz, ele será considerado um relatório raiz.

Example

Um relatório fiscal da Bélgica e dos EUA usaria a mesma versão genérica como base e a adaptaria para suas regulamentações domésticas.

Ao criar um novo relatório raiz, você precisa criar um item de menu para ele. Para fazer isso, abra o relatório e, nesse mesmo relatório, clique no ícone (Ações), depois selecione Criar Item de Menu. Atualize a página; o relatório agora está disponível em Financeiro ‣ Relatórios.

Nota

Os casos que exigem a criação de um novo relatório raiz são raros, como quando as autoridades fiscais de um país exigem um tipo novo e específico de relatório.

Variantes

As variantes são versões específicas de país dos relatórios raiz e, portanto, sempre se referem a um relatório raiz. Para criar uma variante, selecione um relatório genérico (raiz) no campo Relatório raiz ao criar um novo relatório.

Quando um relatório raiz é aberto a partir de um dos menus principais do aplicativo Financeiro, todas as suas variantes são exibidas no seletor de variantes no canto superior direito da visualização.

Example

Na imagem a seguir, Relatório de IVA (BE) é a variante do Relatório fiscal genérico raiz.

Linhas de relatório

Depois de criar um relatório (raiz ou variante), você precisa preenchê-lo com linhas de relatório. Você pode criar uma nova clicando em Adicionar uma linha, ou modificar uma linha de relatório existente clicando nela. Todas as linhas de relatório requerem um Nome, e podem ter um Código adicional opcional (à sua escolha) se você desejar usar seu valor em fórmulas.

Opções de linhas do mecanismo.

Expressão

Cada linha de relatório pode conter uma ou várias expressões. Expressões podem ser vistas como subvariáveis necessárias para uma linha de relatório. Para criar uma expressão, clique em Adicionar uma linha dentro de uma linha de relatório.

Ao criar uma expressão, você deve atribuir um Rótulo usado para se referir a essa expressão. Portanto, ele deve ser único entre as expressões de cada linha. Um Mecanismo de Computação e uma Fórmula também devem ser indicados. O mecanismo define como suas fórmulas e subfórmulas são interpretadas. É possível misturar expressões usando diferentes mecanismos de computação sob a mesma linha, se necessário.

Nota

Dependendo do mecanismo, as subfórmulas também pode ser necessárias.

Mecanismo ‘Domínio Odoo’

Com este mecanismo, uma fórmula é interpretada como um domínio Odoo direcionado a objetos account.move.line.

A subfórmula permite que você defina como as linhas de movimentação que correspondem ao domínio são usadas para calcular o valor da expressão:

sum

O resultado é a soma de todos os saldos das linhas de movimento correspondentes.

sum_if_pos

O resultado é a soma de todos os saldos das linhas de movimentação correspondentes, se esse valor for positivo. Caso contrário, será 0.

sum_if_neg

O resultado é a soma de todos os saldos das linhas de movimentação correspondentes se esse valor for negativo. Caso contrário, será 0.

count_rows

O resultado é o número de sublinhas desta expressão. Se a linha de relatório tiver um valor de agrupamento, isso corresponderá ao número de chaves de agrupamento distintas nas linhas de movimentação correspondentes. Caso contrário, será o número de linhas de movimentação correspondentes.

Você também pode colocar um sinal - no início da subfórmula para inverter o sinal do resultado.

Linha de expressão em um relatório de linha

Mecanismo ‘Etiquetas Fiscais’

Uma fórmula feita para este mecanismo consiste em um nome usado para corresponder etiquetas fiscais. Se essas etiquetas não existirem ao criar a expressão, elas serão criadas.

Ao avaliar a expressão, o cálculo da expressão pode ser expresso aproximadamente como: (quantidade de linhas de movimentação com + marcador) - (quantidade de linhas de movimentação com - marcador).

Example

Se a fórmula for tag_name, o mecanismo corresponde às etiquetas fiscais +tag_name e -tag_name, criando-as se necessário. Para exemplificar: duas etiquetas são correspondidas pela fórmula. Se a fórmula for A, ela exigirá (e criará, se necessário) as etiquetas +A e -A.

Mecanismo ‘Agregar Outras Fórmulas’

Use este mecanismo quando precisar realizar operações aritméticas nos valores obtidos para outras expressões. As fórmulas aqui são compostas por referências a expressões separadas por um dos quatro operadores aritméticos básicos (adição +, subtração -, divisão / e multiplicação *). Para se referir a uma expressão, digite o código da linha de relatório seguido de um ponto . e o rótulo da expressão (ex. código.rótulo).

As subfórmulas podem ser uma das seguintes:

if_above(CUR(amount))

O valor da expressão aritmética será retornado somente se for maior que o limite fornecido. Caso contrário, o resultado será 0.

if_below(CUR(amount))

O valor da expressão aritmética será retornado somente se for menor que o limite fornecido. Caso contrário, o resultado será 0.

if_between(CUR1(amount1), CUR2(amount2))

O valor da expressão aritmética será retornado somente se estiver estritamente entre os limites fornecidos. Caso contrário, será retornado para o limite mais próximo.

if_other_expr_above(LINE_CODE.EXPRESSION_LABEL, CUR(amount))

O valor da expressão aritmética será retornado somente se o valor da expressão denotado pelo código de linha fornecido e pelo rótulo da expressão for maior que o limite fornecido. Caso contrário, o resultado será 0..

if_other_expr_below(LINE_CODE.EXPRESSION_LABEL, CUR(amount))

O valor da expressão aritmética será retornado somente se o valor da expressão denotado pelo código de linha fornecido e pelo rótulo da expressão for menor que o limite fornecido. Caso contrário, o resultado será 0..

CUR é o código da moeda em letras maiúsculas e amount é o valor do vínculo expresso nessa moeda.

cross_report(xml_id | report_id)

Usado para corresponder a uma expressão de outro relatório direcionado pelo xml_id ou pelo próprio ID do relatório.

Mecanismo ‘Prefixo de Códigos de Conta’

Este mecanismo é usado para corresponder valores feitos em contas usando os prefixos dos códigos dessas contas como variáveis em uma expressão aritmética.

Example

21
As expressões aritméticas também podem ser um único prefixo, como aqui.

Example

21 + 10 - 5
Essa fórmula soma os saldos das linhas de movimentação feitas em contas cujos códigos começam com 21 e 10 e subtrai o saldo das linhas feitas em contas com o prefixo 5.

Também é possível ignorar uma seleção de subprefixos.

Example

21 + 10\(101, 102) - 5\(57)
Essa fórmula funciona da mesma forma que o exemplo anterior, mas ignora os prefixos 101, 102 e 57.

Você pode aplicar “subfiltragem” de créditos e débitos usando os sufixos C e D. Nesse caso, uma conta só será considerada se o seu prefixo corresponder e se o saldo total das linhas de movimentação feitas nessa conta for crédito/débito.

Example

A conta 210001 tem um saldo de -42 e a conta 210002 tem um saldo de 25. A fórmula 21D só corresponde à conta 210002 e, portanto, retorna 25. A conta 210001 não é correspondida, pois seu saldo é crédito.

As exclusões de prefixo podem ser combinadas com os sufixos C e D.

Example

21D + 10\(101, 102)C - 5\(57)
Essa fórmula soma os saldos das linhas de movimentação feitas em contas cujo código começa com 21 se for débito (D) e 10 se for crédito (C), mas ignora os prefixos 101, 102, e subtrai o saldo das linhas feitas em contas com o prefixo 5, ignorando o prefixo 57.

Para combinar a letra C ou D em um prefixo e não usá-la como sufixo, use uma exclusão vazia ().

Example

21D\()
Essa fórmula corresponde a contas cujo código começa com 21D, independentemente do sinal de saldo.

Além de usar os prefixos de código para incluir contas, você também pode combiná-los com marcadores de contas. Isso é especialmente útil, por exemplo, se o seu país não tiver um plano de contas padronizado, em que o mesmo prefixo pode ser usado para finalidades diferentes entre as empresas.

Example

marcadores(25)
Esta fórmula corresponde a contas cujas etiquetas associadas contêm aquela com id 25.

Se a etiqueta que você referencia estiver definida em um arquivo de dados, um xmlid pode ser usado em vez do id.

Example

tag(my_module.my_tag)
Essa fórmula corresponde a contas cujos marcadores associados incluem o marcador denotado por my_module.my_tag.

Você também pode usar expressões aritméticas com marcadores, possivelmente combinando-as com seleções de prefixo.

Example

tag(my_module.my_tag) + tag(42) + 10
Os saldos das contas marcadas como my_module.my_tag serão somados aos das contas vinculadas ao marcador com ID 42 e às contas com o prefixo de código 10.

Os sufixos C e D podem ser usados da mesma forma que os marcadores.

Example

tag(my_module.my_tag)C
Essa fórmula corresponde a contas com o marcador my_module.my_tag e um saldo de crédito.

A exclusão de prefixo também funciona com marcadores.

Example

tag(my_module.my_tag)\(10)
Essa fórmula corresponde a contas com o marcador my_module.my_tag e um código que não começa com 10.

Mecanismo ‘Valor Externo’

O mecanismo ‘valor externo’ é usado para se referir a valores manuais e valores de transporte. Esses valores não são armazenados usando account.move.line, mas com account.report.external.value. Cada um desses objetos aponta diretamente para a expressão que impacta, então muito pouco precisa ser feito sobre sua seleção aqui.

As Fórmulas podem ser uma das seguintes:

sum

Se o resultado deve e ser a soma de todos os valores externos no período.

most_recent

Se o resultado deve ser o valor do último valor externo no período.

Além disso, as subfórmulas podem ser usadas de duas maneiras:

rounding=X

A substituição de X por um número instrui o arredondamento do valor para X casas decimais.

editable

Indica que é possível editar essa expressão manualmente acionando a exibição de um ícone no relatório, o que permite que o usuário execute tal ação.

Nota

Os valores manuais são criados na date_to atualmente selecionada no relatório.

Ambas as subfórmulas podem ser misturadas, separando-as com ;.

Example

editable;rounding=2
é uma subfórmula correta que mistura ambos os comportamentos.

Motor ‘Função Python Personalizada’

Este motor é um meio para os desenvolvedores introduzirem cálculo personalizado de expressões caso a caso. A fórmula é o nome de uma função python a ser chamada, e a subfórmula é uma chave a ser buscada no dicionário retornado por esta função. Use-o apenas se estiver criando um módulo personalizado próprio.

Colunas

Os relatórios podem ter um número indefinido de colunas a serem exibidas. Cada coluna obtém seus valores das expressões declaradas nas linhas. O campo expression_label da coluna fornece o rótulo das expressões cujo valor é exibido. Se uma linha não tiver nenhuma expressão nesse campo, nada será exibido para ela nessa coluna. Se forem necessárias várias colunas, você deverá usar rótulos de expressão diferentes.

Colunas do relatório.

Ao usar o recurso de comparação de períodos encontrado na aba Opções de um relatório contábil, todas as colunas são repetidas em e para cada período.

Agrupamento de linhas

Agrupamento não padrão é possível adicionando ou usando campos existentes no modelo Item de Lançamento, desde que os campos sejam relacionados e não armazenados.

Nota

Agrupar linhas requer que o relatório tenha linhas de relatório explícitas que possam ser editadas. Os relatórios diferidos, por exemplo, não suportam agrupamento de linhas, pois usam linhas dinâmicas que são geradas.

Criar um novo campo no item de lançamento

Para criar um campo relacionado não armazenado no modelo Item de Lançamento, primeiro vá para Financeiro ‣ Itens de Lançamento e clique no ícone (bug), depois clique em Campos. Clique em Novo para criar um novo campo e preencha os seguintes campos:

  • Nome do campo: um nome técnico para o campo

  • Rótulo do campo: o rótulo a ser exibido para o campo

  • Tipo de campo: o tipo de campo para o qual este campo relacionado deve apontar

  • Armazenado: Deixe este campo desmarcado, pois apenas campos não armazenados podem ser usados para agrupar linhas.

  • Modelo relacionado: Se o tipo de campo for one2many, many2many ou many2one, selecione o modelo do campo original para agrupar.

  • Definição do campo relacionado: o caminho técnico para o campo que você deseja agrupar

    Example

    Para agrupar pela equipe de vendas do parceiro comercial, defina a definição do campo relacionado como move_id.team_id.

Agrupar linhas

Para agrupar linhas, vá para a aba Linhas do relatório desejado, clique na linha que deseja agrupar e edite o campo Agrupar por. Insira o nome técnico (Nome do Campo) do campo a ser usado como chave de agrupamento.

Dica

Para encontrar uma lista de todos os campos do modelo e seus nomes técnicos, vá para Financeiro ‣ Itens de diário e clique no ícone (bug), depois clique em Campos. O nome técnico de cada campo está listado na coluna Nome do campo.

Configuração de relatório de impostos personalizado

Configuração do relatório

Dica

Todos os termos técnicos e funções do motor de relatórios do Odoo são explicados nas seções anteriores desta página. Recomendamos fortemente a leitura destas seções antes de configurar um relatório de impostos personalizado.

Para criar um relatório de impostos personalizado, abra o aplicativo Financeiro, navegue até Configuração ‣ Relatórios Contábeis e clique em Novo:

  • Insira um nome para o seu relatório.

  • Selecione um Relatório Raiz.

  • No campo Disponibilidade, selecione País Corresponde e, em seguida, selecione o País correspondente à sua empresa.

Em seguida, crie uma linha de relatório clicando em Adicionar uma linha. Após criada, clique nessa linha de relatório para configurá-la:

  • Clique em Adicionar uma linha novamente para criar uma Expressão e nomeá-la.

  • Na aba Definição, selecione um Motor de Cálculo para essa expressão dependendo dos seguintes cenários:

Neste cenário, sua empresa usa grades de impostos:

  • Selecione Etiquetas de Impostos como motor de cálculo. O Odoo usa este campo para vincular a linha de relatório aos seus impostos.

  • No campo Fórmula, digite seu identificador curto de grade (por exemplo, vat_sales_base). O Odoo gera automaticamente as variantes + e - desta etiqueta para você mapear dentro de Configuração ‣ Impostos.

  • No campo Subfórmula, insira base para reportar o valor sem impostos, ou tax para reportar o valor real de imposto coletado/pago.

Repita este processo conforme necessário. Em seguida, Salvar e Fechar.

Alternativamente, você pode:

  • Selecione Agregar Outras Fórmulas como mecanismo de cálculo. O Odoo utiliza este campo para realizar operações matemáticas em linhas já presentes no relatório em vez de analisar transações brutas.

  • No campo Fórmula, utilize álgebra básica fazendo referência aos seus códigos de linha (por exemplo, LINE_10 - LINE_20).

Repita este processo conforme necessário. Em seguida, Salvar e Fechar.

Na aba Opções de uma Expressão, preencha o campo Transportar Para com uma fórmula para sempre transportar saldos ou somente transportá-los quando o valor for negativo. Deixe este campo em branco se não quiser utilizar este recurso.

Example

if_below(EUR(0))
Esta fórmula transportará apenas valores abaixo de 0,00 EUR.

Configuração de impostos

Em seguida, vá para Configuração ‣ Impostos e clique em Novo para criar e configurar novos impostos para seu relatório de impostos personalizado. Crie seus impostos de Vendas e Compras e preencha as Grades de Impostos para todos os impostos usando as grades de impostos correspondentes que você criou anteriormente. Por fim, certifique-se de especificar tanto uma conta de impostos a pagar quanto uma conta de impostos a receber para cada imposto.

Example

Configuração de grades de impostos.

Lançamento de encerramento

Para encerrar impostos, um grupo de impostos deve ser especificado em cada imposto usado em seu relatório de impostos personalizado. Para fazer isso, abra o aplicativo Financeiro, navegue até Configuração ‣ Impostos, abra um imposto que requer um grupo de impostos, clique na aba Opções Avançadas e selecione um grupo no campo Grupo de Impostos. Depois de atribuído, clique no ícone (seta para a direita) e defina tanto uma Conta de Impostos a Pagar quanto uma Conta de Impostos a Receber.

Dica

  • Quando tudo estiver configurado, certifique-se de testar seu relatório criando faturas, contas a pagar e notas de crédito usando os impostos específicos para esse relatório. Por fim, teste o próprio lançamento de encerramento.

  • Se você deseja ocultar uma conta específica de ser exibida no lançamento de encerramento de impostos, vá para Configuração ‣ Impostos, selecione o imposto e clique no ícone (ajustar configurações). A partir daí, marque a caixa Lançamento de Encerramento de Impostos para ajustar sua visibilidade.