Páginas filhas
  • ER_PCREQ-4840_EMPRÉSTIMO_DE_TURNO_(JAVA)

 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_TSA002

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 - Haverá duas alterações na tabela USER_SHIFT_WORK:

2.1 - Será adicionado o atributo LOAN_SHIFT na tabela USER_SHIFT_WORK;

2.2 - Será adicionado o campo "INITIAL_DATE" para fazer parte da unique UQ_USERSW_USIDT (tabela USER_SHIFT_WORK )que já contem os seguintes campos: "ID_USER_SA", "ID_SHIFT_WORK", "INITIAL_DATE_INTEGRATION.

3 - 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.

4 - 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.

5 – 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.

6 – 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.

7 – 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:

8 - A classe UserShiftWorkVO também deverá conter um campo booleano para representação de empréstimo de turno

9 - 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.

10 – 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.