Painel com Dashboard para gerenciar e alertar distorções nas transações de estoque, permitindo análise e gerando notificações sobre itens críticos e distorções de custo, para que seja validado se os consumos e apontamentos de produção estão com valores  adequados.
Realizando também um checklist das tarefas de fechamento.

A funcionalidade do Onboarding tem o propósito de auxiliar o usuário no seu primeiro acesso, sendo exibido ao iniciar a aplicação em seu primeiro acesso, ou selecionando a opção de ajuda no canto superior direito, ao lado do ícone de perfil.



  • Front End

    1. Para a criação da feature, utilizamos componentes do framework PO-UI para facilitar e agilizar o desenvolvimento, sendo:

<po-modal>https://po-ui.io/documentation/po-modal

<po-checkbox> - https://po-ui.io/documentation/po-checkbox

<po-button>https://po-ui.io/documentation/po-button

  • Back End

    1. Foi desenvolvido uma classe REST de controle para entrada e saída de dados através da linguagem TLPP, sendo responsável por gerações e gravações de registros nas tabelas de perfil de usuário do Framework.
    2. Estruturação API:

  1. Especificações de Serviços


Retorna o status do perfil do usuário informado:

{
		"showModal": true,
		"userId": 000000,
		"userName": "Administrador"
}

Descrição de Campos:

  • showModal: boolean – Define se será apresentado o Onboarding
  • userId: string – Retorno o código do usuário consultado
  • userName: string – Retorna nome do usuário consultado

Permite cadastrar um novo registro de perfil de usuário com as definições passadas pelo body da requisição.

{
		"showModal": false,
}

O seu retorno esperado será:

{
		"showModal": false,
		"userId": "000000",
		"userName": "Administrador"
}

Descrição de Campos:

  • showModal: boolean – Define se será apresentado o Onboarding
  • userId: string – Retorno o código do usuário consultado
  • userName: string – Retorna nome do usuário consultado


Permite alterar o status da configuração de perfil do usuário através da informações passadas pelo body da requisição.

{
		"showModal": true,
}
{
		"showModal": true,
		"userId": "000000",
		"userName": "Administrador"
}

Descrição de Campos:

  • showModal: boolean – Define se será apresentado o Onboarding
  • userId: string – Retorno o código do usuário consultado
  • userName: string – Retorna nome do usuário consultado


Permite alterar o status da configuração de perfil do usuário através da informações passadas pelo body da requisição.

{
		"showModal": true,
}
{
		"showModal": true,
		"userId": "000000",
		"userName": "Administrador"
}

Descrição de Campos:

  • showModal: boolean – Define se será apresentado o Onboarding
  • userId: string – Retorno o código do usuário consultado
  • userName: string – Retorna nome do usuário consultado




Através do menu de fechamento é possível acessar o botão configurar parâmetros, essa uma funcionalidade foi disponibilizada para salvar as configurações previas de recalculo de custo médio e fechando para virada de saldo, essa configuração é considera para cara filial, dessa forma caso o cliente realize o processamento em mais de uma  filial será possível tratar as particularidades de processamento.

  • Acessando a primeira vez o sistema vai capturar as ultimas configurações do arquivo SX1(Pergunte) retornado em tela somente para validação, com uma ressalva dos parâmetros do tipo string (caracter) pois esses devem ser informado na primeira utilização ou serão considerados com o seu conteúdo em branco.
  • Utilização

Ao realizar a configuração o sistema vai gravar em seu perfil com a filial que realizou a configuração para processamento.

  • Alterar a configuração:

Tendo necessidade de alterar a configuração de processamento, basta acessar a rotina o sistema vai resgatar as informação do perfil depois de alterar clicar em salvar novamente.

  • Restaurar configurações:

E possível restaurar configurações padrões mediante ao SX1(cadastro de pergunte Protheus).

  • Front End

    1. Para a criação da feature, utilizamos componentes do framework PO-UI para facilitar e agilizar o desenvolvimento, sendo:

<po-modal>https://po-ui.io/documentation/po-modal

<po-checkbox> - https://po-ui.io/documentation/po-checkbox

<po-button>https://po-ui.io/documentation/po-button

<po-select> - https://po-ui.io/documentation/po-select

<po-checkbox> - https://po-ui.io/documentation/po-checkbox

<po-widget> - https://po-ui.io/documentation/po-widget

  • Back End

    1. Foi desenvolvido uma classe REST de controle para entrada e saída de dados através da linguagem TLPP, sendo responsável por gerações e gravações de registros nas tabelas de perfil de usuário do Framework
    2. Estrutura da API:
    3. Especificações de Serviços


Retorna o SX1 (Pergunte do MATA330 e MATA280 ) ou perfil salvo do usuário na filial corrente.

{
    "closing": {
        "mta280": [
            {
                "parameter": "mv_par01",
                "value": ""
            },
            {
                "parameter": "mv_par02",
                "value": false
            },
            {
                "parameter": "mv_par03",
                "value": ""
            },
            {
                "parameter": "mv_par04",
                "value": true
            }
        ]
    },
    "recalculation": {
        "mta330": [
            {
                "parameter": "mv_par01",
                "value": ""
            },
            {
                "parameter": "mv_par02",
                "value": false
            },
            {
                "parameter": "mv_par03",
                "value": false
            },
            {
                "parameter": "mv_par04",
                "value": true
            },
            {
                "parameter": "mv_par05",
                "value": 0
            },
            {
                "parameter": "mv_par06",
                "value": 1
            },
            {
                "parameter": "mv_par07",
                "value": ""
            },
            {
                "parameter": "mv_par08",
                "value": ""
            },
            {
                "parameter": "mv_par09",
                "value": false
            },
            {
                "parameter": "mv_par10",
                "value": 3
            },
            {
                "parameter": "mv_par11",
                "value": false
            },
            {
                "parameter": "mv_par12",
                "value": ""
            },
            {
                "parameter": "mv_par13",
                "value": true
            },
            {
                "parameter": "mv_par14",
                "value": 2
            },
            {
                "parameter": "mv_par15",
                "value": true
            },
            {
                "parameter": "mv_par16",
                "value": 2
            },
            {
                "parameter": "mv_par17",
                "value": 1
            },
            {
                "parameter": "mv_par18",
                "value": 1
            },
            {
                "parameter": "mv_par19",
                "value": true
            },
            {
                "parameter": "mv_par20",
                "value": 2
            },
            {
                "parameter": "mv_par21",
                "value": false
            }
        ]
    }
}

Descrição de Campos:

  • closing: string – Separador com informações dos perguntes da rotina MATA280 (Virada dos saldos)
    • parameter: string MV_PAR relacionado a rotina MATA280 vidara dos saldos 
    • value boolean - para os parâmetros do tipo sim ou não, string para os tipos texto e números para os combos 
  • recalculation: string – Retorno o código do usuário consultado.
    • parameter: string MV_PAR relacionado a rotina MATA330 recalculo do custos medio 
    • value boolean - para os parâmetros do tipo sim ou não, string para os tipos texto e números para os combos

Permite cadastrar uma configuração de parâmetros de usuário com as definições passadas pelo body da requisição.

{
    "closing": {
        "mta280": [
            {
                "parameter": "mv_par01",
                "value": ""
            },
            {
                "parameter": "mv_par02",
                "value": false
            },
            {
                "parameter": "mv_par03",
                "value": ""
            },
            {
                "parameter": "mv_par04",
                "value": true
            }
        ]
    },
    "recalculation": {
        "mta330": [
            {
                "parameter": "mv_par01",
                "value": ""
            },
            {
                "parameter": "mv_par02",
                "value": false
            },
            {
                "parameter": "mv_par03",
                "value": false
            },
            {
                "parameter": "mv_par04",
                "value": true
            },
            {
                "parameter": "mv_par05",
                "value": 0
            },
            {
                "parameter": "mv_par06",
                "value": 1
            },
            {
                "parameter": "mv_par07",
                "value": ""
            },
            {
                "parameter": "mv_par08",
                "value": "ZZZZZZZ"
            },
            {
                "parameter": "mv_par09",
                "value": false
            },
            {
                "parameter": "mv_par10",
                "value": 3
            },
            {
                "parameter": "mv_par11",
                "value": false
            },
            {
                "parameter": "mv_par12",
                "value": ""
            },
            {
                "parameter": "mv_par13",
                "value": true
            },
            {
                "parameter": "mv_par14",
                "value": 2
            },
            {
                "parameter": "mv_par15",
                "value": true
            },
            {
                "parameter": "mv_par16",
                "value": 2
            },
            {
                "parameter": "mv_par17",
                "value": 1
            },
            {
                "parameter": "mv_par18",
                "value": 1
            },
            {
                "parameter": "mv_par19",
                "value": true
            },
            {
                "parameter": "mv_par20",
                "value": 2
            },
            {
                "parameter": "mv_par21",
                "value": false
            }
        ]
    }
}

O seu retorno esperado será:

Permite cadastrar uma configuração de parâmetros de usuário com as definições passadas pelo body da requisição.

{
    "closing": {
        "mta280": [
            {
                "parameter": "mv_par01",
                "value": ""
            },
            {
                "parameter": "mv_par02",
                "value": false
            },
            {
                "parameter": "mv_par03",
                "value": ""
            },
            {
                "parameter": "mv_par04",
                "value": true
            }
        ]
    },
    "recalculation": {
        "mta330": [
            {
                "parameter": "mv_par01",
                "value": ""
            },
            {
                "parameter": "mv_par02",
                "value": false
            },
            {
                "parameter": "mv_par03",
                "value": false
            },
            {
                "parameter": "mv_par04",
                "value": true
            },
            {
                "parameter": "mv_par05",
                "value": 0
            },
            {
                "parameter": "mv_par06",
                "value": 1
            },
            {
                "parameter": "mv_par07",
                "value": ""
            },
            {
                "parameter": "mv_par08",
                "value": "ZZZZZZZ"
            },
            {
                "parameter": "mv_par09",
                "value": false
            },
            {
                "parameter": "mv_par10",
                "value": 3
            },
            {
                "parameter": "mv_par11",
                "value": false
            },
            {
                "parameter": "mv_par12",
                "value": ""
            },
            {
                "parameter": "mv_par13",
                "value": true
            },
            {
                "parameter": "mv_par14",
                "value": 2
            },
            {
                "parameter": "mv_par15",
                "value": true
            },
            {
                "parameter": "mv_par16",
                "value": 2
            },
            {
                "parameter": "mv_par17",
                "value": 1
            },
            {
                "parameter": "mv_par18",
                "value": 1
            },
            {
                "parameter": "mv_par19",
                "value": true
            },
            {
                "parameter": "mv_par20",
                "value": 2
            },
            {
                "parameter": "mv_par21",
                "value": false
            }
        ]
    }
}

Descrição de Campos:

  • closing: string – Separador com informações dos perguntes da rotina MATA280 (Virada dos saldos)
    • parameter: string MV_PAR relacionado a rotina MATA280 vidara dos saldos 
    • value boolean - para os parâmetros do tipo sim ou não, string para os tipos texto e números para os combos 
  • recalculation: string – Retorno o código do usuário consultado.
    • parameter: string MV_PAR relacionado a rotina MATA330 recalculo do custos medio 
    • value boolean - para os parâmetros do tipo sim ou não, string para os tipos texto e números para os combos


Permite alterar a configuração de parâmetros do usuário através da informações passadas pelo body da requisição.

{
    "closing": {
        "mta280": [
            {
                "parameter": "mv_par01",
                "value": ""
            },
            {
                "parameter": "mv_par02",
                "value": false
            },
            {
                "parameter": "mv_par03",
                "value": ""
            },
            {
                "parameter": "mv_par04",
                "value": true
            }
        ]
    },
    "recalculation": {
        "mta330": [
            {
                "parameter": "mv_par01",
                "value": ""
            },
            {
                "parameter": "mv_par02",
                "value": false
            },
            {
                "parameter": "mv_par03",
                "value": false
            },
            {
                "parameter": "mv_par04",
                "value": true
            },
            {
                "parameter": "mv_par05",
                "value": 0
            },
            {
                "parameter": "mv_par06",
                "value": 1
            },
            {
                "parameter": "mv_par07",
                "value": ""
            },
            {
                "parameter": "mv_par08",
                "value": ""
            },
            {
                "parameter": "mv_par09",
                "value": false
            },
            {
                "parameter": "mv_par10",
                "value": 3
            },
            {
                "parameter": "mv_par11",
                "value": false
            },
            {
                "parameter": "mv_par12",
                "value": ""
            },
            {
                "parameter": "mv_par13",
                "value": true
            },
            {
                "parameter": "mv_par14",
                "value": 2
            },
            {
                "parameter": "mv_par15",
                "value": true
            },
            {
                "parameter": "mv_par16",
                "value": 2
            },
            {
                "parameter": "mv_par17",
                "value": 1
            },
            {
                "parameter": "mv_par18",
                "value": 1
            },
            {
                "parameter": "mv_par19",
                "value": true
            },
            {
                "parameter": "mv_par20",
                "value": 2
            },
            {
                "parameter": "mv_par21",
                "value": false
            }
        ]
    }
}
{
    "closing": {
        "mta280": [
            {
                "parameter": "mv_par01",
                "value": ""
            },
            {
                "parameter": "mv_par02",
                "value": false
            },
            {
                "parameter": "mv_par03",
                "value": ""
            },
            {
                "parameter": "mv_par04",
                "value": true
            }
        ]
    },
    "recalculation": {
        "mta330": [
            {
                "parameter": "mv_par01",
                "value": ""
            },
            {
                "parameter": "mv_par02",
                "value": false
            },
            {
                "parameter": "mv_par03",
                "value": false
            },
            {
                "parameter": "mv_par04",
                "value": true
            },
            {
                "parameter": "mv_par05",
                "value": 0
            },
            {
                "parameter": "mv_par06",
                "value": 1
            },
            {
                "parameter": "mv_par07",
                "value": ""
            },
            {
                "parameter": "mv_par08",
                "value": ""
            },
            {
                "parameter": "mv_par09",
                "value": false
            },
            {
                "parameter": "mv_par10",
                "value": 3
            },
            {
                "parameter": "mv_par11",
                "value": false
            },
            {
                "parameter": "mv_par12",
                "value": ""
            },
            {
                "parameter": "mv_par13",
                "value": true
            },
            {
                "parameter": "mv_par14",
                "value": 2
            },
            {
                "parameter": "mv_par15",
                "value": true
            },
            {
                "parameter": "mv_par16",
                "value": 2
            },
            {
                "parameter": "mv_par17",
                "value": 1
            },
            {
                "parameter": "mv_par18",
                "value": 1
            },
            {
                "parameter": "mv_par19",
                "value": true
            },
            {
                "parameter": "mv_par20",
                "value": 2
            },
            {
                "parameter": "mv_par21",
                "value": false
            }
        ]
    }
}

Descrição de Campos:

  • closing: string – Separador com informações dos perguntes da rotina MATA280 (Virada dos saldos)
    • parameter: string MV_PAR relacionado a rotina MATA280 vidara dos saldos 
    • value boolean - para os parâmetros do tipo sim ou não, string para os tipos texto e números para os combos 
  • recalculation: string – Retorno o código do usuário consultado.
    • parameter: string MV_PAR relacionado a rotina MATA330 recalculo do custos medio 
    • value boolean - para os parâmetros do tipo sim ou não, string para os tipos texto e números para os combos

Permite resturar o perfil para configurações padrão do protheus 

Não necessita de envio o retorno será conforma abaixo porem com as informações do arquivo SX1 - perguntes do MATA280 e MATA330


{
    "closing": {
        "mta280": [
            {
                "parameter": "mv_par01",
                "value": ""
            },
            {
                "parameter": "mv_par02",
                "value": false
            },
            {
                "parameter": "mv_par03",
                "value": ""
            },
            {
                "parameter": "mv_par04",
                "value": true
            }
        ]
    },
    "recalculation": {
        "mta330": [
            {
                "parameter": "mv_par01",
                "value": ""
            },
            {
                "parameter": "mv_par02",
                "value": false
            },
            {
                "parameter": "mv_par03",
                "value": false
            },
            {
                "parameter": "mv_par04",
                "value": true
            },
            {
                "parameter": "mv_par05",
                "value": 0
            },
            {
                "parameter": "mv_par06",
                "value": 1
            },
            {
                "parameter": "mv_par07",
                "value": ""
            },
            {
                "parameter": "mv_par08",
                "value": ""
            },
            {
                "parameter": "mv_par09",
                "value": false
            },
            {
                "parameter": "mv_par10",
                "value": 3
            },
            {
                "parameter": "mv_par11",
                "value": false
            },
            {
                "parameter": "mv_par12",
                "value": ""
            },
            {
                "parameter": "mv_par13",
                "value": true
            },
            {
                "parameter": "mv_par14",
                "value": 2
            },
            {
                "parameter": "mv_par15",
                "value": true
            },
            {
                "parameter": "mv_par16",
                "value": 2
            },
            {
                "parameter": "mv_par17",
                "value": 1
            },
            {
                "parameter": "mv_par18",
                "value": 1
            },
            {
                "parameter": "mv_par19",
                "value": true
            },
            {
                "parameter": "mv_par20",
                "value": 2
            },
            {
                "parameter": "mv_par21",
                "value": false
            }
        ]
    }
}

Descrição de Campos:

  • closing: string – Separador com informações dos perguntes da rotina MATA280 (Virada dos saldos)
    • parameter: string MV_PAR relacionado a rotina MATA280 vidara dos saldos 
    • value boolean - para os parâmetros do tipo sim ou não, string para os tipos texto e números para os combos 
  • recalculation: string – Retorno o código do usuário consultado.
    • parameter: string MV_PAR relacionado a rotina MATA330 recalculo do custos medio 
    • value boolean - para os parâmetros do tipo sim ou não, string para os tipos texto e números para os combos

Novo Fechamento, recurso que permite iniciar a jornada de fechamento basta definir o tipo de contabilização e clicar em novo fechamento.


Na abertura da funcionalidade de Fechamentos, será exibido uma estrutura com os últimos fechamentos realizados em forma de lista  ao qual seguirá em duas configurações:

  • 1º Configuração

Não havendo fechamento realizado através da jornada da nova funcionalidade, será apenas exibido o último fechamento de estoque realizado pela rotina de Virada de Saldos (MATA280), analisando a tabela Saldos Iniciais (SB9).

  • 2º Configuração

Com a estrutura devidamente implementada, o sistema terá a tabela Logs de Fechamento (D3X). Realizando a jornada de fechamento, o sistema gerará logs detalhados de todo o processo de fechamento, que abrangem:

  • Recálculo do Custo Médio
  • Virada de Saldo
  • Saldo Atual para Final


Seguem informações técnicas de Front-End e Back-End:

Componentes principais utilizados para a construção da feature:

  • <po-list-view>

Permite listar o histórico de fechamentos realizados:















A automação de testes será conduzida de duas formas:

Para realizar a automação do front-end utilizamos os recursos de Jasmine + Karma para garantir a qualidade por meio de testes unitários, já a execução dos testes é realizada com auxilio do Drone CI que é acionado a cada alteração (commit) e subida (push) para o repositório (Gitea)

Para realizar a automação do Back-end utilizamos os recursos do TLPP para garantir a qualidade por meio de testes unitários acionado pela esteira de testes da equipe de engenharia TOTVS. 

                  

Para garantir a padronização e internacionalização do produto, seguimos as normativas e serviços disponibilizados abaixo:

Event Viewer (Meu Protheus)

Event Viewer - Termino do Recalculo de Custo