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

Versões comparadas

Chave

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

 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_TSA001TSA002

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 Haverá duas alterações 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

:

2.1 - Será adicionado o atributo LOAN_SHIFT na tabela 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);
  • ;

    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

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

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

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

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

    9 8 - 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:

    Image Removed

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

    Image Added

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