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é . 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 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.
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:
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 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.
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
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 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)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 ‘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:
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=2Motor ‘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.
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 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 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é 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 .No campo Subfórmula, insira
basepara reportar o valor sem impostos, outaxpara 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.
Neste cenário, sua empresa não utiliza grades de impostos. 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 utiliza isso para linhas que precisam buscar totais financeiros. Em vez de procurar por tags de transação, o Odoo busca saldos ao vivo diretamente do seu plano de contas.
No campo Fórmula, digite os dígitos iniciais das contas que você deseja rastrear (por exemplo,
40buscará 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.
Alternativamente, você pode:
Selecione Agregar Outras Fórmulas como mecanismo de cálculo. O Odoo utiliza isso para calcular subtotais, impostos líquidos ou totais gerais adicionando ou subtraindo suas outras linhas de relatório.
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.
Neste cenário, sua empresa requer filtragem avançada, substituições manuais de usuário ou lógica algorítmica complexa que tags padrão e prefixos de conta não conseguem processar:
Selecione Domínio Odoo como mecanismo de cálculo: o Odoo utiliza isso para ignorar completamente as tags de impostos 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.
Alternativamente, você pode:
Selecione Valor Externo como mecanismo de cálculo. O Odoo utiliza isso para registrar substituições manuais ou valores de saldo histórico.
No campo Fórmula, digite
sum(para adicionar todos os valores manuais em relatórios multi-período) 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.
Alternativamente, você pode:
Selecione Função Python Personalizada como mecanismo de cálculo. O Odoo utiliza isso como mecanismo de execução para executar cálculos específicos através de codificação backend quando as regras envolvem faixas progressivas, loops ou limites de múltiplos 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 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))Configuração de impostos¶
Em seguida, vá para 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
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é , 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 , 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.
Veja também