Histórico da Página
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. 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:
classe UserShiftWorkVO também deverá conter um campo booleano para representação de empréstimo de turno
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. |
---|