Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

Índice
maxLevel4

01. VISÃO GERAL

Conciliação contábil é a ação de comparar os valores debitados e creditados nas contas de uma organização, para verificar a ocorrência de divergências tributárias e assegurar a precisão contábil. Por meio da comparação do que entra e do que sai, a empresa é capaz de verificar a existência de erros que possam comprometer os valores finais do balanço patrimonial ou fraudes e corrigi-los.

...

Informações
titleAtenção

Este conjunto de funcionalidades estará disponível apenas no release 12.1.33

02. ARQUITETURA

draw.io Diagram
bordertrue
viewerToolbartrue
fitWindowfalse
diagramNameConciliação
simpleViewerfalse
width
diagramWidth1093
revision2

03. CONFIGURAÇÃO

O desenvolvimento da funcionalidade Conciliação Contábil será realizada na plataforma web, assim, será necessária a utilização de desenvolvimento client-side (Front-End) com a tecnologia Angular e a biblioteca PO-UI e server-side (Back-End) com a tecnologia ADVPL.

...

Visão Geral

Repositório

Configuração


Criando um novo projeto Angular com PO UI

Pré-requisitos:

...

Fonte: PO UI - Primeiros passos

Menu

O desenvolvimento será On-Premises, ou seja, será necessário adicionar o item Conciliação Contábil no Menu Protheus para que esteja disponível, como trata-se de uma funcionalidade web, esses aplicativos devem se armazenados no RPO e possuir um controle de alterações:

...

Exemplo de fonte chamando a função FwCallApp  FwCallApp para abertura de rotinas PO-UI no menu Protheus:

...

Tdn: Abrindo Aplicativos Web no Protheus

04. Tela principal

DASHBOARD

Será uma área onde teremos alguns gráficos para exibir ao usuário alguns dados relevantes sobre a conciliação contábil da empresa, exemplo: o percentual de conciliação de uma determinada conta. 90% conciliados, 10% não conciliados, em forma de gráfico. Ainda não temos muitas informações sobre essa seção. (#025).

MENU LATERAL

O menu será construído com o componente Menu do PO UI. Quando um novo projeto Angular é criado com o PO UI, o sistema pergunta se o usuário quer gerar uma estrutura padrão que é utilizada nos projetos da TOTVS. Selecionando essa opção, o menu é gerado automaticamente junto com a estrutura, sendo somente necessário adicionar os links.

Image Removed

FILTROS

Solução que possibilita o usuário filtrar os resultados dos registros apresentados na lista de lançamentos contábeis/lançamentos de origem.

Deploy


Deploy de pipeline PO-UI usando Gitea + Drone

Os processos de desenvolvimento, testes, empacotamento e distribuição de software utilizando PO-UI devem ser realizados com Deploy de pipeline PO-UI usando Gitea + Drone, estas são as ferramenta adotadas pela Totvs para realização das tarefas de modo simples e automatizado.


Controle e versionamento
Todo controle e versionamento de repositórios deverá ser feita através do Gitea.

Gitea


Ferramenta de orquestração
A ferramenta de orquestração, ou seja, que organizará os scripts para execuções, deverá ser feita através do Drone CI.

Drone CI


Pipeline
Scripts (sequências de comandos) a serem criados e salvos com a extensão .sh (Shell script) e que serão utilizados pelo Drone CI para que seja capaz de realizar de forma automatizada testes e disponibilizar builds de desenvolvimentos para publicação.

Pipeline


Informações
titleConceitos Importantes

Fundamentos de Devops

POUI - Desenvolvimentos e expedições

04. Tela principal

DASHBOARD

Será uma área onde teremos alguns gráficos para exibir ao usuário alguns dados relevantes sobre a conciliação contábil da empresa, exemplo: o percentual de conciliação de uma determinada conta. 90% conciliados, 10% não conciliados, em forma de gráfico. Ainda não temos muitas informações sobre essa seção. (#025).

MENU LATERAL

O menu será construído com o componente Menu do PO UI. Quando um novo projeto Angular é criado com o PO UI, o sistema pergunta se o usuário quer gerar uma estrutura padrão que é utilizada nos projetos da TOTVS. Selecionando essa opção, o menu é gerado automaticamente junto com a estrutura, sendo somente necessário adicionar os links.


Image Added

FILTROS

Solução que possibilita o usuário filtrar os resultados dos registros apresentados na lista de lançamentos contábeis/lançamentos de origem.

Totvs custom tabs box
tabsImplementação,Imagens
idsfiltros_implementacao,filtros_imagens
Totvs custom tabs box items
defaultyes
referenciafiltros_implementacao

Front-End:

Os campos do filtro serão construídos com o componente DynamicForm do PO UI. Ao carregar a tela, será necessário chamar uma API que recupera os filtros já salvos pelo usuário. Caso o endpoint retorne vazio, significa que o usuário ainda não salvou nenhum filtro. 

Por questão de performance, os endpoints dos selects/multiselects vão ser chamados somente quando clicados nos inputs. 

Os campos serão por seleção, ou seja, o usuário poderá selecionar todos os itens ou um item específico. Os inputs serão construídos com o módulo MultiSelect do PO UI. (#001)

Abaixo todos os filtros que vão estar disponíveis para configuração:

  • Filial (multiselect)
  • Data (de/até) (date)
  • Conta contábil (multiselect)
  • Moeda (select)
  • Conciliar por (select) (dependendo do filtro, abrirá um novo campo para o usuário colocar o número do processo ou extrato bancário) (#003), (#028)
  • Lançamento Padrão (multiselect) (#006)
  • Filtra entidade (select boolean)
  • Centro de custo (multiselect)
  • Item contábil (multiselect)
  • Clvl (multiselect)
  • Lote (#002)
  • Valor mínimo (#019)
  • Valor máximo (#019)

Teremos um filtro de valor mínimo e valor máximo para que o sistema desconsidere a divergência de valores (caso haja) nos itens conciliados automaticamente. (#019)

Como citado acima, após salvar o formulário, o front fará uma requisição para o back-end enviando os dados que o usuário selecionou nos filtros. Quando o usuário acessar novamente, os filtros estarão salvos. (#007)

Cada campo terá um parâmetro onde será possível adicionar um texto de ajuda para aquele campo específico. O local de exibição da ajuda na tela ainda não está definido. (#008)

Como o PO UI não tem a função de ordenar colunas arrastando e soltando como existe no Protheus, só é possível alterar a ordem das colunas por meio do gerenciador de colunas que existe nas tabelas do PO UI. (#023) 

Back-End:

Será necessário uma API para salvar os filtros do usuário e uma outra API para recuperar o filtro já salvo.

Para que o filtro que o usuário realizou reflita nos grids, o front vai chamar as APIs que trazem as informações dos grids passando os valores dos filtros como query strings, assim a API vai saber o que filtrar na hora de trazer o resultado.

Os filtros deverão possuir help para facilitar entendimento do usuário.


Serão necessárias disponibilidade das APIs abaixo:

  • API para informações de Filiais - Branch (SM0)
Bloco de código
Totvs custom tabs box
tabsImplementação,Imagens
idsfiltros_implementacao,filtros_imagens
Totvs custom tabs box items
defaultyes
referenciafiltros_implementacao

Front-End:

Os campos do filtro serão construídos com o componente DynamicForm do PO UI. Ao carregar a tela, será necessário chamar uma API que recupera os filtros já salvos pelo usuário. Caso o endpoint retorne vazio, significa que o usuário ainda não salvou nenhum filtro. 

Por questão de performance, os endpoints dos selects/multiselects vão ser chamados somente quando clicados nos inputs. 

Os campos serão por seleção, ou seja, o usuário poderá selecionar todos os itens ou um item específico. Os inputs serão construídos com o módulo MultiSelect do PO UI. (#001)

Abaixo todos os filtros que vão estar disponíveis para configuração:

  • Filial (multiselect)
  • Data (de/até) (date)
  • Conta contábil (multiselect)
  • Moeda (select)
  • Conciliar por (select) (dependendo do filtro, abrirá um novo campo para o usuário colocar o número do processo ou extrato bancário) (#003), (#028)
  • Lançamento Padrão (multiselect) (#006)
  • Filtra entidade (select boolean)
  • Centro de custo (multiselect)
  • Item contábil (multiselect)
  • Clvl (multiselect)
  • Lote (#002)
  • Valor mínimo (#019)
  • Valor máximo (#019)

Teremos um filtro de valor mínimo e valor máximo para que o sistema desconsidere a divergência de valores (caso haja) nos itens conciliados automaticamente. (#019)

Como citado acima, após salvar o formulário, o front fará uma requisição para o back-end enviando os dados que o usuário selecionou nos filtros. Quando o usuário acessar novamente, os filtros estarão salvos. (#007)

Cada campo terá um parâmetro onde será possível adicionar um texto de ajuda para aquele campo específico. O local de exibição da ajuda na tela ainda não está definido. (#008)

Como o PO UI não tem a função de ordenar colunas arrastando e soltando como existe no Protheus, só é possível alterar a ordem das colunas por meio do gerenciador de colunas que existe nas tabelas do PO UI. (#023) 

Back-End:

Será necessário uma API para salvar os filtros do usuário e uma outra API para recuperar o filtro já salvo.

Para que o filtro que o usuário realizou reflita nos grids, o front vai chamar as APIs que trazem as informações dos grids passando os valores dos filtros como query strings, assim a API vai saber o que filtrar na hora de trazer o resultado.

Os filtros deverão possuir help para facilitar entendimento do usuário.

Serão necessárias disponibilidade das APIs abaixo:

  • API para informações de Filiais - Branch (SM0)
Bloco de código
languagecoldfusion
themeDJango
firstline1
titleJson Request
linenumberstrue
collapsetrue
[]
Bloco de código
languagecoldfusion
themeDJango
firstline1
titleJson ResponseRequest
linenumberstrue
collapsetrue
[]
Bloco de código
languagecoldfusion
themeDJango
firstline1
titleJson Response
linenumberstrue
collapsetrue
{
 {
    "items": [
        {
            "id":"T1D MG 01",
			"label":"D MG 01",
			"codevalue":"D MG 01",
			"deleted":""
        },
        {
           "id":"T1D RJ 01",
			"code"label":"D RJ 01",
			"value":"D RJ 01",
			"deleted":""
        },
        {
            "id":"T1M PR 01",
			"code"label":"M PR 01",
			"value":"M PR 01",
			"deleted":""
        },
        {
            "id":"T1M SP 01",
			"codelabel":"M SP 01",
			"value":"D SP 01",
			"deleted":""
        }      
    ],
	"hasNext":true,
    "po_sync_date":"2021-02-09T21:00:38Z"
}


  • API para informações do Plano de Contas Contábeis - AccountantAccount (CT1)
Bloco de código
languagecoldfusion
themeDJango
firstline1
titleJson Request
linenumberstrue
collapsetrue
"Branchs": [
	{ "BranchId": "D MG 01"},
	{ "BranchId": "D RJ 02"}
]
Bloco de código
languagecoldfusion
themeDJango
firstline1
titleJson Response
linenumberstrue
collapsetrue
{
	"items": [
		{
            "idvalue": "T1D MG 01000001",
			"branch":"D MG 01",
			"codelabel":"000001",
			"deleted":""
        },
        {
         	"idvalue": "T1D MG 01000003",
			"branch":"D MG 01",
			"codelabel":"000003",
			"deleted":""
        },
        {
          	"idvalue": "T1D MG 01000005",
			"branch":"D MG 01",
			"codelabel":"000005",
			"deleted":""
        },
        {
            "idvalue": "T1D RJ 02000001",
			"branchId":"D RJ 02",
			"codelabel":"000001",
			"deleted":""
        },
	    {
            "idvalue": "T1D RJ 02000005",
			"branch":"D RJ 02",
			"codelabel":"000005",
			"deleted":""
        }  
    ],
	"hasNext":true,
    "po_sync_date":"2021-02-09T21:00:38Z"
}


  • API para informações de Lançamento Padrão - StandardEntry (CT5)
Bloco de código
languagecoldfusion
themeDJango
firstline1
titleJson Request
linenumberstrue
collapsetrue
"Branchs": [
    { "BranchId": "D MG 01"},
    { "BranchId": "D RJ 02"}
]
Bloco de código
languagecoldfusion
themeDJango
firstline1
titleJson Response
linenumberstrue
collapsetrue
{
	"items": [
        {
            "idvalue": "T1D MG 01595",
			"branch":"D MG 01",
			"codelabel":"595",
			"sequential":"001",
			"deleted":""
        },
        {
           	"idvalue": "T1D MG 01596",
			"branch":"D MG 01",
			"codelabel":"596",
			"sequential":"001",
			"deleted":""
        },
        {
           	"idvalue": "T1D MG 01598",
			"branch":"D MG 01",
			"codelabel":"598",
			"sequential":"001",
			"deleted":""
        },
        {
            "idvalue": "T1D RJ 02595",
			"branch":"D RJ 02",
			"codelabel":"595",
			"sequential":"001",
			"deleted":""
        },
	    {
            "idvalue": "T1D RJ 02597",
			"branch":"D RJ 02",
			"codelabel":"597",
			"sequential":"001",
			"deleted":""
        }  
    ],
	"hasNext":true,
    "po_sync_date":"2021-02-09T21:00:38Z"
}


  • API para informações de Centro de Custo - CostCenter (CTT)
Bloco de código
languagecoldfusion
themeDJango
firstline1
titleJson Request
linenumberstrue
collapsetrue
"Branchs": [
    { "BranchId": "D MG 01"},
    { "BranchId": "D RJ 02"}
]
Bloco de código
languagecoldfusion
themeDJango
firstline1
titleJson Response
linenumberstrue
collapsetrue
{
	"items": [
        {
            "idvalue": "T1D MG 01CC000001",
			"branch":"D MG 01",
			"codelabel":"CC000001",
			"deleted":""
        },
        {
           	"idvalue": "T1D MG 01CC000002",
			"branch":"D MG 01",
			"codelabel":"CC000002",
			"deleted":""
        },
        {
           	"idvalue": "T1D MG 01CC000005",
			"branch":"D MG 01",
			"codelabel":"CC000005",
			"deleted":""
        },
        {
            "idvalue": "T1D RJ 02CC000002",
			"branch":"D RJ 02",
			"codelabel":"CC000002",
			"deleted":""
        },
	    {
            "idvalue": "T1D RJ 02CC000003",
			"branch":"D RJ 02",
			"codelabel":"CC000003",
			"deleted":""
        }  
    ],
	"hasNext":true,
    "po_sync_date":"2021-02-09T21:00:38Z"
}


  • API para informações de Itens Contábeis - Department (CTD)
Bloco de código
languagecoldfusion
themeDJango
firstline1
titleJson Request
linenumberstrue
collapsetrue
"Branchs": [
    { "BranchId": "D MG 01"},
    { "BranchId": "D RJ 02"}
]
Bloco de código
languagecoldfusion
themeDJango
firstline1
titleJson Response
linenumberstrue
collapsetrue
{
	"items": [
        {
            "idvalue": "T1D MG 01CTD00001",
			"branch":"D MG 01",
			"codelabel":"CTD00001",
			"deleted":""
        },
        {
           	"idvalue": "T1D MG 01CTD00005",
			"branch":"D MG 01",
			"codelabel":"CTD00005",
			"deleted":""
        },
        {
           	"idvalue": "T1D MG 01CTD00008",
			"branchId":"D MG 01",
			"codelabel":"CTD00008",
			"deleted":""
        },
        {
            "idvalue": "T1|D RJ 02CTD00001",
			"branch":"D RJ 02",
			"codelabel":"CTD00001",
			"deleted":""
        },
	    {
            "idvalue": "T1D RJ 02CTD00002",
			"branch":"D RJ 02",
			"codelabel":"CTD00002",
			"deleted":""
        }  
    ],
	"hasNext":true,
    "po_sync_date":"2021-02-09T21:00:38Z"
}


  • API para informações de Classe de Valor - ClassValue (CTH)
Bloco de código
languagecoldfusion
themeDJango
firstline1
titleJson Request
linenumberstrue
collapsetrue
"Branchs": [
    { "BranchId": "D MG 01"},
    { "BranchId": "D RJ 02"}
]
Bloco de código
languagecoldfusion
themeDJango
firstline1
titleJson Response
linenumberstrue
collapsetrue
{
	"items": [
        {
            "idvalue": "T1D MG 01CTH00001",
			"branch":"D MG 01",
			"codelabel":"CTH00001",
			"deleted":""
        },
        {
           	"idvalue": "T1D MG 01CTH00005",
			"branch":"D MG 01",
			"codelabel":"CTH00005",
			"deleted":""
        },
        {
            "idvalue": "T1D MG 01CTH00008",
			"branch":"D MG 01",
			"codelabel":"CTH00008",
			"deleted":""
        },
        {
            "idvalue": "T1D RJ 02CTH00001",
			"branch":"D RJ 02",
			"codelabel":"CTH00001",
			"deleted":""
        },
	    {
            "idvalue": "T1D RJ 02CTH00002",
			"branch":"D RJ 02",
			"codelabel":"CTH00002",
			"deleted":""
        }  
    ],
	"hasNext":true,
    "po_sync_date":"2021-02-09T21:00:38Z"
}


  • API para informações de Moedas - Currency (SMOCTO)
Bloco de código
languagecoldfusion
themeDJango
firstline1
titleJson Request
linenumberstrue
collapsetrue
"Branchs": [
    { "BranchId": "D MG 01"},
    { "BranchId": "D RJ 02"}
]
Bloco de código
languagecoldfusion
themeDJango
firstline1
titleJson Response
linenumberstrue
collapsetrue
{
	"items": [
        {
            "idvalue": "T1D MG 0101",
			"branch":"D MG 01",
			"codelabel":"01",
			"description":"REAL",
			"deleted":""
        },
        {
           	"idvalue": "T1D MG 0102",
			"branch":"D MG 01",
			"codelabel":"02",
			"description":"DOLAR",
			"deleted":""
        },
        {
           	"idvalue": "T1D MG 0103",
			"branch":"D MG 01",
			"codelabel":"03",
			"description":"EURO",
			"deleted":""
        },
        {
            "idvalue": "T1|D RJ 0201",
			"branch":"D RJ 02",
			"codelabel":"01",
			"description":"REAL",
			"deleted":""
        },
	    {
            "idvalue": "T1|D RJ 0202",
			"branch":"D RJ 02",
			"codelabel":"02",
			"description":"DOLAR",
			"deleted":""
        }  
    ],
	"hasNext":true,
    "po_sync_date":"2021-02-09T21:00:38Z"
}


  • API para informações bancárias - Bank (SA6) com a opção Get (#014)
Bloco de código
languagecoldfusion
themeDJango
firstline1
titleJson Request
linenumberstrue
collapsetrue
"Branchs": [
    { "BranchId": "D MG 01"},
    { "BranchId": "D RJ 02"}
]
Bloco de código
languagecoldfusion
themeDJango
firstline1
titleJson Response
linenumberstrue
collapsetrue
{
	"items": [
        {
            "id": "T1|D MG 01001000010000000001,
			"branch":"D MG 01",
			"code":"001",
			"number":"00001",
			"acountantaccountcode":"0000000001",
			"deleted":""
        },
        {
           	"id": "T1D MG 01002000010000000001,
			"branch":"D MG 01",
			"code":"002",
			"number":"00001",
			"acountantaccountcode":"0000000001",
			"deleted":""
        },
        {
           	"id": "T1|D MG 01001000020000000010,
			"branch":"D MG 01",
			"code":"001",
			"number":"00002",
			"acountantaccountcode":"0000000010",
			"deleted":""
        },
        {
            "id": "T1D MG 01001000010000000005,
			"branch":"D RJ 02",
			"code":"001",
			"number":"00001",
			"acountantaccountcode":"0000000005",
			"deleted":""
        },
	    {
            "id": "T1D MG 01001000030000000008,
			"branch":"D RJ 02",
			"code":"001",
			"number":"00003",
			"acountantaccountcode":"0000000008",
			"deleted":""
        }  
    ],
	"hasNext":true,
    "po_sync_date":"2021-02-09T21:00:38Z"
}


API para informações de Lotes Contábeis - BatchNumber (SX5, tabela 09)

Bloco de código
languagecoldfusion
themeDJango
firstline1
titleJson Request
linenumberstrue
collapsetrue
"Branchs": [
    { "BranchId": "D MG 01"},
    { "BranchId": "D RJ 02"}
]
Bloco de código
languagecoldfusion
themeDJango
firstline1
titleJson Response
linenumberstrue
collapsetrue
{
	"items": [
        {
            "idvalue": "T1 8850,
			"branch":"",
			"codelabel":"8850",
			"deleted":""
        },
        {
           	"idvalue": "T1 8800,
			"branch":"",
			"codelabel":"8800",
			"deleted":""
        },
        {
           	"idvalue": "T1 8860,
			"branch":"",
			"codelabel":"8860",
			"deleted":""
        }
    ],
	"hasNext":true,
    "po_sync_date":"2021-02-09T21:00:38Z"
}



Informações
titleAtenção

As APIs que forem disponibilizadas para clientes deverão ser desenvolvidas e documentadas conforme padrão de Api Totvs

Totvs custom tabs box items
defaultno
referenciafiltros_imagens

...

GRID

Apresenta os lançamentos contábeis e os lançamentos da origem baseados nos filtros que o cliente selecionou.

Totvs custom tabs box
tabsImplementação,Grid, Modal de Confirmação, Alerta de Status
idsgrid_implementacao,grid_imagem,grid_modal,grid_alert
Totvs custom tabs box items
defaultyes
referenciagrid_implementacao

Front-end:

A tabela será construída com o componente Table do PO UI. Na aba Exemplos já existe um exemplo de como construir a tabela no mesmo modelo que o especificado.

Antes do usuário ter acesso as informações do grid, ele precisa primeiro preencher os filtros para que sejam retornados os valores conforme o filtro ele selecionou.

Como citado na seção de filtros, é necessário o front passar uma query string com os filtros selecionados na chamada desses endpoints para que eles realizem o filtro de registros ao buscar no banco de dados.

No final de cada linha, teremos um botão "..." que conterá mais ações que o usuário poderá realizar com o registro selecionado, como Edição, Exclusão, Impressão, etc (as ações citadas estão pendentes de um protótipo de alta fidelidade no Figma com as telas das ações).

O usuário poderá configurar a exibição das colunas conforme a sua preferência. Após o usuário alterar a visibilidade das colunas e fechar o modal de configuração, o front enviará para a API as colunas que o usuário selecionou, e da próxima vez que ele atualizar a tela, a API vai trazer essas informações com as colunas que o usuário selecionou. O usuário poderá resetar a seleção de colunas abrindo o gerenciador de colunas e clicando em "restaurar padrão". (#022)

Na tabela de lançamentos contábeis, será possível adicionar lançamentos manuais, para que seja possível conciliar com a tabela de origem. (#009)

Acima das tabelas, teremos um combobox onde o usuário poderá filtrar por registros conciliados ou não conciliados ou registros contabilizados ou não contabilizados. O front fará o filtro sozinho, sem o auxilio da API. (#04, #011, #027)

Teremos essas opções no combobox citado acima: 

  • Registros contabilizados e conciliados
  • Registros não contabilizados e conciliados
  • Registros contabilizados e não conciliados
  • Registros não contabilizados e não conciliados

Após clicar no botão "Conciliar", um modal (aba 3) será exibido para que o usuário confirme sua ação. O modal será construído com o componente Modal do PO UI. Depois da confirmação do usuário, o sistema irá exibir um alerta para o usuário informando o usuário sobre o resultado da ação (aba 4). O alerta será construído com o Interceptor do PO UI, em conjunto com o back-end.

Abaixo dos grids, haverá dois totalizadores que vão calcular o valor de cada grid respectivamente. (#012).

Grid deverá possuir uma opção na parte superior para "Marcar Todos" ou marcar registro individual no check do próprio item (#015).  

Ao clicar no item origem ou destino, este item e seu correspondente na outra grid devem mudar de cor, dessa forma, facilitará a identificação (#016, #020).

Grid deve apresentar uma coluna "CTB" nos registros de origem, para indicar quando já foram contabilizados (#017).

Quando o valor da contabilização não bater com o valor origem, item deve apresentar uma cor diferente para identificação de divergências (#018).

Será possível realizar a exportação das tabelas via excel. Ao exportar o arquivo, os matches precisam estar alinhados para facilitar a visualização. No arquivo também terá a informação dos filtros que foram selecionados. (#020, #021).

Ao clicar sobre o registro de origem, sistema deverá exibir o rastreio, por exemplo se foi um lançamento com Nota Fiscal de Saída, Nota Fiscal de Entrada, Movimentação Bancária etc (#024).

Caso nos filtros seja selecionado fazer uma conciliação por saldo, as colunas da tabela serão alteradas para atender esse estilo de contabilidade. Os extratos terão um drill drown onde será possível ver todos os descontos dentro daquele extrato caso clicado para expandir a linha. Segue um exemplo: PO Table - Airfare (#028)

Back-end:

Será necessária disponibilidade das API abaixo, as consultas serão realizadas conforme os parâmetros informados:

  • API para Lançamentos Contábeis (CT2) com as opções Get, Post, Put e Delete, receberá os parâmetros: Filial, Data, Número de Lote, Sub-Lote, Documento, Conciliados e Lançamento Padrão. Deve-se preencher o ComboBox com o status do lançamento: Conciliados, Não Conciliados

Na opção Get, deve-se retornar  dois objetos, um contendo os registros origens (SN4, SC5, SC7, SF1, SF2, SE1, SE2, FK5) dos lançamentos contábeis recuperados, quando tratar-se de lançamentos contábeis aglutinados, será necessário trazer cada origem relacionada e outro contendo as contabilizações destes registros juntamente com a conciliação quando já ocorreu (#010).

A apresentação dos registros de origem poderão ser Por Processos, onde serão retornadas as informações conforme o processo selecionado (Ativo Fixo, Compras/Estoque Custos, Contas a Pagar, Contas a Receber e Faturamento) ou Por Extrato Bancário, neste caso, a conciliação ocorre de maneira sintética, por saldo bancário olhando o extrato bancário (#028).

Quando apresentação por Extrato Bancário e um Recebimento de Título no Financeiro ocorreu no período filtrado, este será apresentado no grid de origem e sistema deverá apresentar também o lançamento que originou esse recebimento, mesmo que em outro período, exemplo: Lançamento que ocorreu em Novembro e o Recebimento em Dezembro e data informada no Filtro de Dezembro, deve-se apresentar os títulos origem de Novembro (#005).

Ainda na apresentação por Extrato Bancário, deve-se retornar os valores Saldo Inicial e Saldo Atual, com base na tabela SE8 (E8_SALATUA e E8_DTSALAT), ver função fa380Rec no fonte FINA380.PRX (#013). 

A opção Post, deve realizar a inclusão de novas conciliações de acordo com os parâmetros informados, Put deverá realizar alterações nas Conciliações Contábeis já existentes e finalmente a opção Delete, realizará a exclusão das Conciliações Contábeis selecionadas.

Para melhor performance, necessário avaliar a possível criação de stored procedure para consultas e manipulações das informações na Conciliação Contábil e processo de retorno das informações deve ocorrer de forma assíncrona.


  • API para informações de Origem dos Lançamentos:
Bloco de código
language
Bloco de código
languagecoldfusion
themeDJango
firstline1
titleJson Request
linenumberstrue
collapsetrue
1
titleJson Request
linenumberstrue
collapsetrue
{
	"branchs": [],
	"dataMin": '10/01/2021',
	"dataMax": '21/01/2021',
	"AccountantAccounts": [],
	"conciliateBy": 1 */ 1 = processo, 2 = extrato bancário */,
	"process":  1 */ 1 = ativo fixo, 2 = materiais, 3 = faturamento, 4 = contas a pagar, 5 = contas a receber */,
	"bankStatement": {code: '', number: '', acountantaccountcode: ''},
	"operation": 1 */ 1 = ativo fixo, 2 = materiais, 3 = faturamento, 4 = contas a pagar, 5 = contas a receber */,
	"filterEntity": true,
	"costCenters": [],
	"accountingItems": [],
	"clvl": []
}
Bloco de código
languagecoldfusion
themeDJango
firstline1
titleJson Response: Get
linenumberstrue
collapsetrue
{
    "items":[
		{
			"branch":"D MG 01",
			"originentry":"D MG 0103-04-2020001000010000000001",
			"originvalue":1000.00,
			"origintable":"SN4",
			"originoperation":"1",
			"accounted":true,
			"reconcilied":true
		},
		{
			"branch":"D MG 01",
			"originentry":"D MG 0103-04-2020001000010000000001",
			"originvalue":1000.00,
			"origintable":"SN4",
			"originoperation":"1",
			"accounted":true,
			"reconcilied":true
		},
		{
			"branch":"D RJ 02",
			"originentry":"D RJ 0205-04-2020001000020000000010",
			"originvalue":5000.00,
			"origintable":"SF2",
			"originoperation":"3",
			"accounted":true,
			"reconcilied":false
		},
		{
			"branch":"D RJ 02",
			"originentry":"D RJ 0206-04-2020001000020000000002",
			"originvalue":20000.00,
			"origintable":"SE1",
			"originoperation":"5",
			"accounted":true,
			"reconcilied":true
		}
    ],
	"hasNext":true,
    "po_sync_date":"2021-02-09T21:00:38Z"{
	"branchs": [],
	"dataMin": '10/01/2021',
	"dataMax": '21/01/2021',
	"AccountantAccounts": [],
	"conciliateBy": 1 */ 1 = processo, 2 = extrato bancário */,
	"process":  1 */ 1 = ativo fixo, 2 = materiais, 3 = faturamento, 4 = contas a pagar, 5 = contas a receber */,,
	"bankStatement": {bank: '', account: '', agency: ''},
	"operation": 1 */ 1 = ativo fixo, 2 = materiais, 3 = faturamento, 4 = contas a pagar, 5 = contas a receber */,
	"filterEntity": true,
	"costCenters": [],
	"accountingItems": [],
	"clvl": []
}
Bloco de código
languagecoldfusion
themeDJango
firstline1
titleJson Response: GetPost, Put e Delete
linenumberstrue
collapsetrue
{
	"items": [
		{
			"accountingentry": "D  "OriginEntries":[MG 0103-04-2020001000010000000001",
		{
			"branchsuccess":"D MG 01" true
		},
		{
			"originentryaccountingentry": "D MG 0103-04-20200010000100000000012020001000010000000002",
			"originvaluesuccess":1000.00, true
		},
		{
			"accountedaccountingentry":true :"D RJ 0205-04-2020001000020000000003",
			"reconciliedsuccess":true false
		},
		{
			"branchaccountingentry": :"D RJ 0205-04-2020001000020000000010",
			"success": true
		}
	],
	"hasNext":true,
    "po_sync_date":"2021-02-09T21:00:38Z"
}


  • API para informações de Lançamentos Contabilizados:
Bloco de código
languagecoldfusion
themeDJango
firstline1
titleJson Request
linenumberstrue
collapsetrue
{
	"branchs": [],
	"dataMin": '10/01/2021',
	"dataMax": '21/01/2021',
	"AccountantAccounts": [],
	"conciliateBy": 1 */ 1 = processo, 2 = extrato bancário */,
	"process":  1 */ 1 = ativo fixo, 2 = materiais, 3 = faturamento, 4 = contas a pagar, 5 = contas a receber */,
	"bankStatement": {code: '', number: '', acountantaccountcode: ''},
	"operation": 1 */ 1 = ativo fixo, 2 = materiais, 3 = faturamento, 4 = contas a pagar, 5 = contas a receber */,
	"filterEntity": true,
	"costCenters": [],
	"accountingItems": [],
	"clvl": []
}
Bloco de código
languagecoldfusion
themeDJango
firstline1
titleJson Response: Get
linenumberstrue
collapsetrue
{
	"itemsMG 01",
			"originentry":"D MG 0103-04-2020001000010000000001",
			"originvalue":1000.00,
			"accounted":true,
			"reconcilied":true
		},
		{
			"branch":"D RJ 02",
			"originentry":"D RJ 0205-04-2020001000020000000010",
			"originvalue":5000.00,
			"accounted":true,
			"reconcilied":false
		},
		{
			"branch":"D RJ 02",
			"originentry":"D RJ 0206-04-2020001000020000000002",
			"originvalue":20000.00,
			"accounted":true,
			"reconcilied":true
		}
	],
	"AccountingEntries": [
        {
            "branch":"D MG 01",
            "movementdate":"03-04-2020",
			"batchnumber":"08850",
			"subLot":"001",
			"document":"000001",
			"item":"001",
			"itemtype":"1",
			"entryvalue":1000.00,
			"reconcilied":true
        },
        {
         	"branch":"D MG 01",
            "movementdate":"03-04-2020",
			"batchnumber":"08850",
			"sublot":"001",
			"document":"000001",
			"item":"002",
			"itemtype":"2",
			"entryvalue":1000.00,
			"reconcilied":true
        },
        {
           	"branch":"D RJ 02",
            "movementdate":"05-04-2020",
			"batchnumber":"08850",
			"sublot":"001",
			"document":"000001",
			"item":"001",
			"itemType":"3",
			"entryValue":5000.00,
			"reconcilied":false
        },
        {
            "branch":"D RJ 01",
            "movementdate":"06-04-2020",
			"batchnumber":"08850",
			"sublot":"001",
			"document":"000005",
			"item":"001",
			"itemtype":"1",
			"entryvalue":20000.00,
			"reconcilied":true
        }
    ],
	"hasNext":true,
    "po_sync_date":"2021-02-09T21:00:38Z"
}
Bloco de código
languagecoldfusion
themeDJango
firstline1
titleJson Response: Post, Put e Delete
linenumberstrue
collapsetrue
{
	"items": [
		{
			"accountingentry": "D MG 0103-04-2020001000010000000001",
			"success": true
		},
		{
			"accountingentry": "D MG 0103-04-2020001000010000000002",
			"success": true
		},
		{
			"accountingentry": :"D RJ 0205-04-2020001000020000000003",
			"success": false
		},
		{
			"accountingentry": :"D RJ 0205-04-2020001000020000000010",
			"success": true
		}
	],
	"hasNext":true,
    "po_sync_date":"2021-02-09T21:00:38Z"
}


Também é necessário que o back-end retorne a propriedade _messages no objeto de retorno nas APIs de exclusão, edição e salvamento da conciliação de registros, como explicado detalhadamente nesta página do PO UI. Resumindo, essa propriedade serve para que o front-end exiba as mensagens de alerta conforme o status da requisição.


05. Campos e Parâmetros

Campo

Titulo

Descrição

XXXQLA_FILIALFilialFilial do Sistema
XXXQLA_CODIGOCodigo Codigo da Conciliacao
XXQLA_TABORITabela OrigemTabela de Origem
XXXQLA_CHVORIChave OrigemChave Registro Origem
XXXQLA_CHVCTBChave ContabilChave Registro Contabil
XXXQLA_USERUsuarioUsuario da Conciliacao
XXXQLA_DATAData ConcData da Conciliacao
XXXQLA_HORAHora ConcHora da Conciliacao

06. Tabelas Utilizadas

  • XXX QLA - Conciliacao Contabil


Informações
titleImportante

Serão realizadas as gravações de data, hora e usuário responsável pela conciliação (#026).

Totvs custom tabs box items
defaultno
referenciagrid_imagem

Totvs custom tabs box items
defaultno
referenciagrid_modal

Totvs custom tabs box items
defaultno
referenciagrid_alert

...