Pular para o conteúdo
Documentação do usuário

Relatórios personalizados

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

Para criar um novo relatório, vá para Contabilidade › Configuração › Relatórios Contábeis. A partir daqui, crie um relatório raiz <customize-reports/root> ou uma variante <customize-reports/variants>.

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.

A criação de um item de menu é necessária para acessar um novo relatório raiz. Para fazer isso, abra a configuração do relatório, clique em Ação, Criar Item de Menu e atualize a página. O relatório agora está disponível em Contabilidade › Relatórios.

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 no menu Relatórios do aplicativo Contabilidade, todas as suas variantes são exibidas no seletor de variantes de relatório no canto superior direito da visualização.

Linhas

Depois de criar um relatório (raiz ou variante), o próximo passo é preenchê-lo com linhas. Para criar uma nova linha, clique em Adicionar uma linha. Para modificar uma linha existente, clique na linha em si e edite o popup. Todas as linhas exigem um Nome e podem ter um Código opcional que permite usar o valor da linha em fórmulas.

Engine lines options.

Expressão

Cada linha pode conter uma ou múltiplas expressões. Expressões podem ser vistas como sub-variáveis necessárias por uma linha de relatório. Para criar uma expressão, clique em Adicionar uma linha dentro do popup de uma linha.

Ao criar uma expressão, você deve inserir um Rótulo usado para fazer referência a essa expressão. O rótulo deve ser único entre as expressões de cada linha de relatório. Os campos Mecanismo de Computação e Fórmula também devem ser preenchidos. O mecanismo de computação define como as 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.

Mecanismo de computação Odoo Domain

Ao usar o mecanismo de computação Odoo Domain, uma fórmula é interpretada como um domínio Odoo <reference/orm/domains> direcionado aos 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

The result is the sum of all the balances of the matched move lines.

sum_if_pos

The result is the sum of all the balances of the matched move lines if this amount is positive. Otherwise, it is 0.

sum_if_neg

The result is the sum of all the balances of the matched move lines if this amount is negative. Otherwise, it is 0.

count_rows

The result is the number of sub-lines of this expression. If the parent line has a group-by <customize-reports/lines-group-by> value, this will correspond to the number of distinct grouping keys in the matched move lines. Otherwise, it will be the number of matched move lines.

Expression line within a line report

Mecanismo de computação Tax Tags

Ao usar o mecanismo de computação Tax Tags, o conteúdo do campo Fórmula é correspondido com tags de impostos. Se tais tags 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).

Mecanismo de computação Agregar Outras Fórmulas

O mecanismo de computação Agregar Outras Fórmulas realiza operações aritméticas nos valores obtidos de 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 fazer referência a uma expressão, digite o código da linha pai seguido por 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))

The value of the arithmetic expression will be returned only if it is greater than the provided bound. Otherwise, the result will be 0.

if_below(CUR(amount))

The value of the arithmetic expression will be returned only if it is lower than the provided bound. Otherwise, the result will be 0.

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

The value of the arithmetic expression will be returned only if it is strictly between the provided bounds. Otherwise, it will be brought back to the closest bound.

if_other_expr_above(LINE_CODE.EXPRESSION_LABEL, CUR(amount))

The value of the arithmetic expression will be returned only if the value of the expression denoted by the provided line code and expression label is greater than the provided bound. Otherwise, the result will be 0.

if_other_expr_below(LINE_CODE.EXPRESSION_LABEL, CUR(amount))

The value of the arithmetic expression will be returned only if the value of the expression denoted by the provided line code and expression label is lower than the provided bound. Otherwise, the result will be 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)

Used to match an expression from another report targeted by the xml_id or the report ID itself.

Mecanismo de computação Prefixo de Códigos de Contas

O mecanismo de computação Prefixo de Códigos de Contas é usado para corresponder valores realizados em contas usando os prefixos dos códigos dessas contas como variáveis em uma expressão aritmética.

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

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.

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

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

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.

Se a etiqueta que você referencia estiver definida em um arquivo de dados, um XMLID pode ser usado em vez da ID.

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

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

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

Mecanismo de computação Valor Externo

O mecanismo de computação Valor Externo é usado para fazer referência a valores manuais e valores transportados. 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

If the result must be the sum of all the external values in the period.

most_recent

If the result must be the value of the latest external value in the period.

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

rounding=X

Replacing X with a number instructs to round the amount to X decimals.

editable

Indicates this expression can be edited manually, triggering the display of an icon in the report, allowing the user to perform this action.

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

Mecanismo de computação Função Python Personalizada

O mecanismo de computação Função Python Personalizada é um meio para desenvolvedores introduzirem computação personalizada de expressões caso a caso. O Formula é o nome de uma função python a ser chamada, e o Subfórmula é uma chave a ser obtida no dicionário retornado por esta função. Use este mecanismo de computação apenas se estiver criando um módulo personalizado.

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.

Columns of report.

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

É possível o agrupamento não padrão adicionando ou usando campos existentes no modelo Item de Diário, desde que os campos sejam relacionados e não armazenados.

Criar um novo campo no item de diário

Para criar um campo relacionado não armazenado no modelo Item de Diário, primeiro vá para Contabilidade › Itens de Diário, e clique no ícone fa-bug (bug), então clique em Campos. Clique em Novo para criar um novo campo e preencha os seguintes campos:

  • Field Name: a technical name for the field

  • Field Label: the label to be displayed for the field

  • Field Type: the type of field that this related field should point to

  • Stored: Leave this field unchecked as only non-stored fields can be used to group lines.

  • Related Model: If the field type is one2many, many2many, or many2one, select the model of the original field to group by.

  • Related Field Definition: the technical path to the field you want to group by

Agrupar linhas

Para agrupar linhas, vá para a aba Linhas <accounting/customize/lines> do relatório desejado, clique na linha que deseja agrupar e edite o campo Agrupar por. Digite o nome técnico (Nome do Campo) do campo a usar como chave de agrupamento.

Veja também:

Consolidation via grouping by account code <consolidation_account_mapping>