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

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

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

2 - Será criada uma nova entidade de relacionamento, antes tinha apenas UserShiftWork, agora vai ter também UserShiftWorkLoan (empréstimo de turno) relacionado com o usuário e o turno, ele deverá ter a mesma estrutura (dados, regra de negócio) que o turno normal para o usuário. Ambos terão os mesmos atributos, segue estrutura da Haverá duas alterações na tabela USER_SHIFT_WORK_LOAN.:

2.1 - Será adicionado o atributo LOAN_SHIFT na tabela create table USER_SHIFT_WORK_LOAN (

        ID numeric(19,0) identity not null,

        CREATED_DATE datetime null,

        CREATED_USER varchar(255) null,

        UPDATED_DATE datetime null,

        UPDATED_USER varchar(255) null,

        DELETED_RECORD_INTEGRATION tinyint null,

        END_DATE datetime not null,

        END_DATE_INTEGRATION datetime null,

        INITIAL_DATE datetime not null,

        INITIAL_DATE_INTEGRATION datetime null,

        INSTANCE_ID varchar(3) null,

        LOCAL_ID varchar(36) null,

        ID_SHIFT_WORK numeric(19,0) not null,

        ID_USER_SA numeric(19,0) not null,

        primary key (ID),

        unique (LOCAL_ID),

        unique (ID_USER_SA, ID_SHIFT_WORK, INITIAL_DATE_INTEGRATION));

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.

;

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

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:

Image Removed

10 - 

 

Segue abaixo exemplo:

Image Added

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

Image Added

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