Este documento é material de especificação dos requisitos de inovação, trata-se de conteúdo extremamente técnico.                                                             

  

Informações Gerais

 

Especificação

Produto

TOTVS 12

Módulo

TSA

Segmento Executor

Manufatura

Projeto1

D_MAN_TSA001

IRM1

PCREQ-363

Requisito1

PCREQ-4840

Subtarefa1

PDRMAN-4391

Release de Entrega Planejada

12.1.8

País

( x ) Brasil

Objetivo

  • Melhorar a performance da integração do turno e empréstimo do turno;
  • Facilitar a codificação para atender a regra de negócios de turnos do TSA;
  • Interagir turno e empréstimo de turno de maneira mais abrangente;

Definição da Regra de Negócio

1 - Criar um novo webservice chamado de UserShiftWorkIntegrationServiceBean para executar as operações da relação de usuário e turno (USER_SHIFT_WORK) e criar uma nova entidade para gerenciar os empréstimo de turno, chamada de (USER_SHIFT_WORK_LOAN) para a integração com o sistema externo.

Este webservice irá conter os seguintes métodos para receber as mensagens do sistema externo:

  • insertOrUpdateUserShiftWork;
  • removeUserShiftWork;
  • insertOrUpdateUserShiftWorkLoan;
  • removeUserShiftWorkLoan;


2 - Será adicionado o atributo LOAN_SHIFT na tabela USER_SHIFT_WORK

 

Observação: SQL Server utilizado para representação da tabela.

3 – A entidade UserShiftWorkLoan conterá os mesmos atributos que o UserShiftWork, no caso, UserSa e ShiftWork, além disso terá os índices assim como a entidade UserShiftWork, porem com adição do “Loan” ao final dos nomes dos índices.

  • create index IDX_USER_SHIFT_WORK_LOAN_INSTC on USER_SHIFT_WORK_LOAN (INSTANCE_ID);
  • create index IDX_USERSWLOAN_USER_KEY on USER_SHIFT_WORK_LOAN (ID_USER_SA);
  • create index IDX_USERSWLOAN_SHIFTWORK_KEY on USER_SHIFT_WORK_LOAN (ID_SHIFT_WORK);

Observação: SQL Server utilizado para representação dos índices.

4 - Não poderá haver dois turnos ativos com datas sobrepostas, isso é valido também para o empréstimo de turno e também para um turno e um empréstimo de turno.

5 - A classe DTO que irá receber as informações do relacionamento usuário e turno (e também para o empréstimo de turno), no caso, UserShiftWorkDTO conterá os seguintes campos:

  • private String userExternalKey;
  • private String shiftWorkExternalKey;
  • private Date initialDate;
  • private Date endDate;

Observação: Antes havia uma classe chamada UserShiftWorkInsertDTO (para inserir ou alterar um novo UserShiftWork) e UserShiftWorkRemoveDTO(para remover um UserShiftWork), agora como os relacionamentos (usuário, turno e empréstimo de turno) passará a ter um próprio webservice para controle, foi vista a necessidade da criação da classe citada acima, UserShiftWorkDTO, lembrando que as classes UserShiftWorkInsertDTO e UserShiftWorkRemoveDTO não serão removidas, até porque outras o sistema externo pode optar por enviar a mensagem através deste novo webservice ou do antigo.

6 – Caso a mensagem for recebida pelo TSA seja de inserção ou atualização (insertOrUpdate) tanto para o userShiftWork como para o userShiftWorkLoan o método deverá verificar através da chave externa do usuário para verificar se deve inserir na base do TSA ou então atualizar o usuário especifico, pois este método irá complementar as funções do usuário no sistema, deverá ser feita a validação se o usuário existe. Além disso, será feita toda a regra de negócio para finalização de turno ativo, ou finalização de empréstimo de turno, ou reativar turno e assim por diante, ou seja, os casos de testes e considerando os possíveis tipos de recebimento de mensagens do sistema externo.

7 – Caso a mensagem for recebida pelo TSA seja de remoção (remove) tanto para o userShiftWork como para o userShiftWorkLoan o método deverá verificar antes se o usuário e o relacionamento existem no sistema.

8 – Adicionar mensagens da integração, como nos outros webservices. Usar item da Enumeration InformationKind (LOAN_SHIFT), para representar os empréstimos de turno no monitor de integrações. Além disso, contabilizar os empréstimos de turno. Segue abaixo exemplo:

9 - A nível de entidade, UserShiftWork e UserShiftWorkLoan serão diferentes, porem a nível de VO e para apresentação em tela, será utilizado para ambos a classe UserShiftWorkVO, contudo será adicionado um atributo booleano isShiftWorkLoan para identificar se é um empréstimo de turno, segue abaixo exemplo de apresentação em tela:

10 - Este webservice também irá conter o método para fazer a sincronização de TSA com o sistema externo, neste caso, verificar quais relacionamento estão no sistema externo mas que não estão no TSA, por exemplo, verificar se o usuário TA-USER1 está relacionado com TA-SW2 assim como no sistema externo, ou seja, este método irá verificar a integridade dos dados vindos do sistema externo.O sistema externo que irá fazer a chamada deste método.

11 – Exemplos de casos de teste:

  • Inserir turno novo para o usuário;
  • Inserir novo empréstimo de turno para o usuário;
  • Atualizar turno (apenas a data por exemplo) para o usuário;
  • Atualizar empréstimo de turno para o usuário;
  • Remover turno do usuário;
  • Remover empréstimo de turno do usuário;
  • Remover turno e adicionar um novo turno para o usuário;
  • Remover empréstimo de turno e adicionar um novo empréstimo de turno para o usuário;

 Este documento é material de especificação dos requisitos de inovação, trata-se de conteúdo extremamente técnico.