Relatórios personalizados¶
O Odoo vem com uma estrutura de relatórios poderosa e fácil de usar. O mecanismo permite que você crie novos relatórios, como relatórios fiscais, ou balanços e demonstrativos de renda, com layouts e agrupamentos específicos.
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é . 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 .
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 em um dos menus principais do aplicativo de contabilidade, 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 VAT (BE) é a variante do raiz Relatório de imposto genérico.
Linhas do relatório¶
Após ter criado 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 exigem um Nome e podem ter um Código adicional opcional (de sua escolha) se você desejar usar seu valor em fórmulas.
Expressão¶
Cada linha de relatório 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 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. Tanto um Motor de Computação quanto uma Fórmula também devem ser indicados. O motor define como sua(s) fórmula(s) e subfórmula(s) são interpretadas. É possível misturar expressões usando diferentes motores 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 esse mecanismo, uma fórmula é interpretada como um domínio Odoo direcionada 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:
sumO resultado é a soma de todos os saldos das linhas de movimento correspondentes.
sum_if_posO 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_negO resultado é a soma de todos os saldos das linhas de movimentação correspondentes se esse valor for negativo. Caso contrário, será
0.count_rowsO resultado é o número de sub-linhas desta expressão. Se a linha do relatório tiver um valor de agrupamento, isso corresponderá ao número de chaves de agrupamento distintas nas linhas de lançamento correspondentes. Caso contrário, será o número de linhas de lançamento correspondentes.
Você também pode colocar um sinal - no início da subfórmula para reverter o sinal do resultado.
Mecanismo ‘Agregar de outras fórmulas’¶
Use este mecanismo quando você precisar realizar operações aritméticas nos valores obtidos para outras expressões. As fórmulas aqui são compostas de 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 do 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.
Você também pode usar a subfórmula cross_report para corresponder a uma expressão encontrada em outro relatório.
Mecanismo ‘Prefixo de códigos de conta’¶
Esse mecanismo é usado para combinar valores em contas que usam os prefixos dos códigos dessas contas como variáveis em uma expressão aritmética.
Example
21Example
21 + 10 - 521 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)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)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\()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)Se o marcador a que você faz referência estiver definido em um arquivo de dados, um xmlid poderá ser usado em vez do id.
Example
tag(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) + 1010.Os sufixos C e D podem ser usados da mesma forma que os marcadores.
Example
tag(my_module.my_tag)CA exclusão de prefixo também funciona com marcadores.
Example
tag(my_module.my_tag)\(10)10.Mecanismo “Valor externo”¶
O mecanismo de ‘valor externo’ é usado para se referir aos valores manuais e de transferências. Esses valores não são armazenados com account.move.line, mas com account.report.external.value. Cada um desses objetos aponta diretamente para a expressão que ele afeta, portanto, muito pouco precisa ser feito com relação à sua seleção aqui.
As Fórmulas podem ser uma das seguintes:
sumSe o resultado deve e ser a soma de todos os valores externos no período.
most_recentSe 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=XA substituição de
Xpor um número instrui o arredondamento do valor para X casas decimais.editableIndica 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=2Mecanismo Função Python personalizada¶
Esse mecanismo é um meio para os desenvolvedores introduzirem o 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 essa função. Use-a somente 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.
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 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 guia Linhas 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 ser usado como chave de agrupamento.
Dica
Para encontrar uma lista de todos os campos do modelo e seus nomes técnicos, vá para 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 fiscal personalizado¶
Configuração do relatório¶
Dica
Todos os termos técnicos e funções do mecanismo de relatórios do Odoo estão explicados nas seções anteriores desta página. Recomendamos fortemente a leitura dessas seções antes de configurar um relatório fiscal personalizado.
Para criar um relatório fiscal personalizado, abra o aplicativo Financeiro, navegue até e clique em Novo:
Digite 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. Uma vez criada, clique nessa linha de relatório para configurá-la:
Clique em Adicionar uma linha novamente para criar uma Expressão e nomeie-a.
Na guia Definição, selecione um Mecanismo de Cálculo para essa expressão dependendo dos seguintes cenários:
Neste cenário, sua empresa usa grades de impostos:
Selecione Etiquetas Fiscais como mecanismo de cálculo. O Odoo usa este campo para vincular a linha do 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 .No campo Subfórmula, digite
basepara reportar o valor sem impostos, outaxpara reportar o valor real do imposto cobrado/pago.
Repita este processo conforme necessário. Em seguida, Salvar e Fechar.
Como alternativa, você pode:
Selecione Agregar Outras Fórmulas como mecanismo de cálculo. O Odoo usa este campo para realizar cálculos em linhas já presentes no relatório em vez de escanear transações brutas.
No campo Fórmula, use álgebra básica referenciando seus códigos de linha (por exemplo,
LINE_10 - LINE_20).
Repita este processo conforme necessário. Em seguida, Salvar e Fechar.
Neste cenário, sua empresa não usa grades fiscais. Em vez disso, rastreia tudo estritamente por meio de contas do Razão Geral:
Selecione Prefixo de Códigos de Conta como mecanismo de cálculo: o Odoo usa isso para linhas que precisam extrair totais financeiros. Em vez de procurar tags de transação, o Odoo extrai saldos diretamente do seu plano de contas.
No campo Fórmula, digite os dígitos iniciais das contas que você deseja rastrear (por exemplo,
40extrairá o total combinado de todas as contas de receita que começam com400000,401000, etc.).
Repita este processo conforme necessário. Em seguida, Salvar e Fechar.
Como alternativa, você pode:
Selecione Agregar Outras Fórmulas como mecanismo de cálculo. O Odoo usa isso para calcular subtotais, impostos líquidos ou totais gerais adicionando ou subtraindo suas outras linhas do relatório.
No campo Fórmula, use álgebra básica referenciando seus códigos de linha (por exemplo,
LINE_10 - LINE_20).
Repita este processo conforme necessário. Em seguida, Salvar e Fechar.
Neste cenário, sua empresa requer filtragem avançada, substituições manuais do usuário ou lógica algorítmica complexa que tags padrão e prefixos de contas não conseguem lidar:
Selecione Domínio Odoo como mecanismo de cálculo: o Odoo usa isso para ignorar totalmente as tags fiscais e filtrar itens de diário brutos (
account.move.line) usando a sintaxe de pesquisa padrão do Odoo.No campo Fórmula, insira um domínio válido começando com colchetes para isolar transações isentas de impostos para categorias específicas de parceiros.
Como alternativa, você pode:
Selecione Valor Externo como mecanismo de cálculo. O Odoo usa isso para registrar substituições manuais ou valores de transferência histórica.
No campo Fórmula, digite
sum(para somar todos os valores manuais em relatórios de vários períodos) oumost_recent(para exibir apenas o valor mais recente).No campo Subfórmula, digite
editablepara exibir um ícone de edição no relatório ao vivo, permitindo que os usuários modifiquem o valor manualmente. Além disso, você pode arredondar números digitandorounding=x.
Como alternativa, você pode:
Selecione Função Python Personalizada como mecanismo de cálculo. O Odoo usa isso como mecanismo de execução para executar cálculos específicos por meio de codificação backend quando as regras envolvem faixas progressivas, loops ou limites de vários níveis.
No campo Fórmula, insira o nome técnico exato do método Python definido em seu módulo de localização personalizado.
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 transportá-los apenas quando o valor for negativo. Deixe este campo em branco se não quiser usar este recurso.
Example
if_below(EUR(0))Configuração de impostos¶
Em seguida, vá para e clique em Novo para criar e configurar novos impostos para seu relatório fiscal personalizado. Crie seus impostos de Vendas e Compras e preencha as Grades Fiscais para todos os impostos usando as grades fiscais correspondentes que você criou anteriormente. Por fim, certifique-se de especificar uma conta de impostos a pagar e uma conta de impostos a receber para cada imposto.
Example
Lançamento de fechamento¶
Para fechar impostos, um grupo de impostos deve ser especificado em cada imposto usado no seu relatório fiscal personalizado. Para fazer isso, abra o aplicativo Financeiro, navegue até , 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. Após atribuir, clique no ícone (seta para a direita) e defina tanto uma Conta de Imposto a Pagar quanto uma Conta de Imposto 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 fechamento.
Se você deseja ocultar uma conta específica de ser exibida no lançamento de fechamento fiscal, vá para , selecione o imposto e clique no ícone (ajustar configurações). A partir daí, marque a caixa Lançamento de Fechamento Fiscal para ajustar sua visibilidade.
Veja também