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 | Logix | Módulo | WMS | ||||||||||||||||||||
Segmento Executor | Supply Chain - Inovação | ||||||||||||||||||||||
Projeto1 | LOGWMS01 | IRM/EPIC1 |
| ||||||||||||||||||||
Requisito/Story/Issue1 |
| Subtarefa1 |
| ||||||||||||||||||||
País | ( x ) Brasil ( ) Argentina ( ) Mexico ( ) Chile ( ) Paraguai ( ) Equador ( ) USA ( ) Colombia ( ) Outro _____________. |
Aviso | ||
---|---|---|
| ||
Os requisitos tratados por esta especificação fazem parte de um conjunto de requisitos destinados a atender a funcionalidade de "Convocação Ativa". O desenvolvimento será realizado de forma incremental, sendo assim, cada requisito irá incrementar a funcionalidade da convocação ativa que será considerada como completa quando todos os requisitos estiverem concluídos. Esta especificação trata do requisito 6 de um total de 13 requisitos. Sendo que as especificações dos requisitos anteriores estão em: Introdução & Requisito 1 → ER_LOGWMS01-845_ME_15.1-Convocação_Ativa-Grupo_de_Endereços Requisito 2 → ER_LOGWMS01-942_ME_15.2-Convocação_Ativa-Configuração Requisito 3 → ER_LOGWMS01-826_ME_15.3-Convocação_Ativa-Gerenciamento Requisito 4 → ER_LOGWMS01-827_ME_15.4-Convocação_Ativa-Recebimento Requisito 5 → ER_LOGWMS01-1621_ME15.5-Convocação_Ativa-Armazenagem_Transferencia |
Dica | ||
---|---|---|
| ||
Os arquivos originais(dinâmicos) utilizados e aqui apresentados em formato de imagem(estático) estão anexos a este documento.
|
Objetivos
Objetivo- Criar novos e ajustar controles para convocação ativa:
- Excluir as colunas endereço origem e destino da tabela de controle das pendências de convocação ativa;
- Gravar programa originador da criação da pendência de convocação ativa;
- Gravar programa originador da alteração do usuário executor da pendência de convocação ativa;
- Gravar programa originador da finalização/exclusão da pendência de convocação ativa bem como a data da exclusão do registro;
- Gerar pendência de convocação ativa ao liberar e gerar contagens do inventário quando parâmetro que bloqueia atividade de inventário pública estiver desabilitado;
- Atualizar/Excluir registros de pendência de convocação ativa ao alocar/desalocar usuário no plano de inventário;
- Excluir pendências de convocação ativa ao cancelar plano de inventário;
- Realizar tratamentos no programa de convocação ativa para que usuário executor em branco (= " ") tenha o mesmo comportamento de usuário executor nulo (NULL) da mesma forma que tratamentos realizados para não nulos (IS NOT NULL) sejam aplicados para diferente de branco ( <> " ");
- Atualizar registros de pendência de convocação ativa ao executar contagem de inventário através do coletor de dados pelos formatos atuais via lista pública ou particular.
- Realizar tratamentos para verificar convocação ativa de usuário para atividade de inventário realizando alocação automática para novo executor nas contagens do plano. Deverá ser respeitada a forma de alocação já existente no plano caso possuir (por plano ou endereço), assumindo como padrão a alocação por endereços caso nenhum tipo de alocação tenha sido realizada ainda. Atualizar registros de pendência de convocação ativa ao executar contagem de inventário através do coletor de dados quando executado através da convocação ativa.
- COLOCAR NO MAPA MENTAL;
- PARÂMETRO LISTA PUBLICA, SOMENTE GERA PENDENCIA DE CONVOCAÇÃO ATIVA NA LIBERAÇÃO DA CONTAGEM CASO ESTE PARÂMETRO ESTEJA ATIVO (SEM USUÁRIO EXECUTOR); NA EXECUÇÃO DO PRIMEIRO USUÁRIO VIA CONVOCAÇÃO ATIVA, IRÁ ALOCAR AUTOMATICAMENTE OS ENDEREÇOS QUE O USUÁRIO TRABALHA E ESTÃO PARA CONTAGEM, EM SEGUIDA GERARÁ NOVO REGISTRO PARA UM PRÓXIMO USUÁRIO, NESTA SITUAÇÃO SOMENTE SERÁ PERMITIDO CONTAR OS ENDEREÇOS ALOCADOS PARA O USUÁRIO. O MODO DE ALOCAÇÃO SERÁ CONSIDERADO O POR ENDEREÇO (NÃO POR PLANO);
- AO REALIZAR ALOCAÇÃO ALOCAÇÃO POR PLANO IRÁ GERAR PENDENCIA DE CONVOCAÇÃO ATIVA PARA OS USUÁRIOS ALOCADOS NO PLANO E ESTES PODRÃO CONTAR QUALQUER ENDEREÇO DO PLANO INDEPENDENTE DE SUAS CONFIGURAÇÕES DE ENDEREÇO;
- AO REALIZAR ALOCAÇÃO POR ENDEREÇO IRÁ GERAR PENDENCIA DE CONVOCAÇÃO ATIVA (SE JÁ NÃO EXISTIR) PARA OS USUÁRIO ALOCADOS E ESTES PODERÃO CONTAR SOMENTE OS ENDERÇOS EM QUE ESTÃO ALOCADOS;
- AO CONCUIR CONTAGEM DE TODOS OS ENDEREÇOS ALOCADOS PARA O USUARIO, FINALIZA PENDENCIA DE CONVOCAÇÃO ATIVA; QUANDO FOR POR PLANO, IRÁ FINALIZAR A PENDÊNCIA DO USUÁRIO E EXCLUIR AS PENDENCIAS DOS DEMAIS USUÁRIOS CASO EXISTA. (DA PARA DESALOCAR UUSÁRIO DURANTE CONTAGENS QUANDO POR PLANO?) F8 PARA ENCERRAR CONTAGEM QUANDO POR PLANO ????? INVESTIGAR MELHOR AO PRESSIONAR F8 EXCLUIR PENDENCIA DE CONVOCAÇÃO ATIVA
- um indicador que informe se o registro foi Finalizado (executado) ou foi Excluído por uma operação de desalocação por exemplo.
- Ajustar busca de atividades principal do programa WMS6743 facilitando a inclusão de novas atividades na convocação ativa.
AO ENCERRAR PLANO EXCLUI AS PENDENCIAS DE CONVOCAÇÃO ATIVA ABERTAS.
para nova opção, somente permitir reabrir participação em OS caso existam contegens em andamento.
Objetos a serem alterados ou criados
Rotina | Tipo de Operação | Opção de Menu |
---|---|---|
wmsr139 | [Alteração] | <função de regra de negócio da convocação ativa> |
wmsm274 | [Alteração] | <dml referente a tabela wms_conv_ativa> |
wms6435a | [Alteração] | <acionado através da central do planejador para atividades de armazenagem/transferência/canc. armazenagem/ressuprimento> Logix → Logística → WMS → Gerenciamento operacional → Central do planejador |
wms6435b | [Alteração] | <acionado através da central do planejador para atividades de armazenagem/transferência/canc. armazenagem/ressuprimento> Logix → Logística → WMS → Gerenciamento operacional → Central do planejador |
wms6435c | [Alteração] | <acionado através da central do planejador para atividades de armazenagem/transferência/canc. armazenagem/ressuprimento> Logix → Logística → WMS → Gerenciamento operacional → Central do planejador |
wms663108a | [Alteração] | <acionado através da central de alocação para atividades de armazenagem/transferência/canc. armazenagem/ressuprimento> Logix → Logística → WMS → Gerenciamento operacional → Alocação de recursos |
wms663108b | [Alteração] | <acionado através da central de alocação para atividades de armazenagem/transferência/canc. armazenagem/ressuprimento> Logix → Logística → WMS → Gerenciamento operacional → Alocação de recursos |
wms663108c | [Alteração] | <acionado através da central de alocação para atividades de armazenagem/transferência/canc. armazenagem/ressuprimento> Logix → Logística → WMS → Gerenciamento operacional → Alocação de recursos |
wms6743 | [Alteração] | Logix → Logística → WMS → Coletores → Diversos → Convocação Ativa |
wms6180 | [Alteração] | <acionado através da lista pública/particular para atividades de armazenagem/transferência/canc. armazenagem> Logix → Logística → WMS → Coletores → Pendências → WMS6070 - Lista pública/WMS6069 - Listaparticular |
wms6177 | [Alteração] | Logix → Logística → WMS → Movimentação armazém → Planejamento de armazenagem |
Definição da Regra de Negócio
- Criar novos e ajustar controles para convocação ativa.
- Objetivo: Excluir as colunas endereço origem e destino das tabelas de controle das pendências de convocação ativa (wms_conv_ativa e wms_conv_ativa_historico);
- Contextualização:
- As colunas de endereço origem e destino foram criadas nos primeiros requisitos referente a convocação ativa onde as atividades de
- Objetivo: Excluir as colunas endereço origem e destino das tabelas de controle das pendências de convocação ativa (wms_conv_ativa e wms_conv_ativa_historico);
Definição da Regra de Negócio
- Criar novos controles para convocação ativa.
- Objetivo: Excluir as colunas endereço origem e destino das tabelas de controle das pendências de convocação ativa (wms_conv_ativa e wms_conv_ativa_historico);
- Contextualização:
- As colunas de endereço origem e destino foram criadas nos primeiros requisitos referente a convocação ativa onde as atividades de recebimento foram as primeiras analisadas. As atividades de recebimento sempre são realizadas em apenas um endereço, neste caso então, ao ter os campos referentes aos endereços na wms_conv_ativa não se fazia necessário releitura destas informações no programa de convocação ativa (WMS6743). Atualmente já tivemos a experiência de implementar convocação ativa para outros processos além do recebimento, como por exemplo movimentação interna. Nestes processos foi possível identificar que o endereço origem e destino na wms_conv_ativa acaba tendo pouca utilização, gerando apenas esforço e processamento para manter estes campos consistentes uma vez que a cada atualização de pendências de convocação ativa a atualização destes campos se faz necessário. Atualmente a utilização destes campos se restringe apenas para apresentar as informações ao usuário no programa de convocação ativa (WMS6743) e deveria ser utilizado para identificar se o usuário possui permissão nos endereços dos movimentos, porém como geralmente existem 'N' movimentos para 1 registro da convocação ativa, a leitura desta informação acaba sendo feita diretamente nos processos de movimento.
- Segue abaixo passos para atingir o objetivo proposto:
- Pelos motivos mencionados na contextualização, os campos referente a endereço origem e destino deverão ser removidos da tabela, consequentemente as alterações abaixo serão necessárias:
Objetivo: Gerar pendência de convocação ativa ao liberar contagem do inventário quando parâmetro que bloqueia atividade de inventário pública esteja desabilitado ('N'). - Contextualização:
- Para que as atividades de inventário possam ser avaliadas para convocação ativa através do programa de convocação ativa WMS6743 faz-se necessário um registro na tabela wms_conv_ativa para cada ordem de serviço / atividade e usuário executor. Com base nisso, o programa WMS6743 irá convocar o usuário executor quando já definido, ou caso ainda não possua usuário executor definido irá avaliar e convocar qual usuário deverá realizar a atividade com base nas configurações realizadas no programa WMS6742. Identificando que o usuário executor não poderá executar todas as contagens pendentes no inventário uma nova pendência de convocação ativa será gerado pelo próprio programa WMS6743 para a mesma ordem de serviço / atividade. Vale lembrar que o relacionamento ordem de serviço x plano de inventário é de 1x1.
- Segue abaixo os passos sugeridos para atingir o objetivo proposto:
Origem das informações para inclusão de novo registro em wms_conv_ativa:
Expandir title Clique aui para verificar as indicações para implementações empresa → sup_plan_inv_ativ_endereco.empresa;
trans_conv_ativa → gerado automaticamente;
ctr_ent_sai_veic_docum → NULL;
ordem_servico → wms_ordem_servico_ativ.ordem_servico;
ativ → wms_ordem_servico_ativ.ativ;
tip_clas_operacao → wms_clas_operacao.tip_clas_operacao ;
conv_ativa_atividade → wms_tip_processo.conv_ativa_atividade;
tip_processo → wms_tip_processo.tip_processo;
dat_hor_inclusao → data e hora do momento da inclusão (CURRENT YEAR TO SECOND);
usuario_alocacao → usuário "logado" (p_user), somente quando usuario_executor IS NOT NULL;
dat_hor_alocacao_executor → data e hora do momento do processamento (CURRENT YEAR TO SECOND), somente quando usuario_executor IS NOT NULL;
usuario_executor → SE sup_plan_inv_ativ_executor.usuario_alocado = ' ' ENTÃO alocado sup_plan_inv_ativ_endereco.usuario_alocado SENÃO sup_plan_inv_ativ_executor.usuario_alocado
deposit → wms_ordem_servico.deposit;
programa_origem → log1200_nome_programa() ;
programa_alteracao → NULL;Usar como base para consulta a tabela sup_plan_inv_ativ_endereco. A partir da tabela sup_plan_inv_ativ_endereco relacionar com as demais mencionadas acima para obter os valores. Para evitar registros duplicados, utilizar a cláusula DISTINCT.
Atenção com as tabelas sup_plan_inv_ativ_executor e sup_plan_inv_ativ_endereco. A tabela sup_plan_inv_ativ_executor é gravada quando o processo de alocação é feito para todo o plano, sendo assim os usuários alocados valem para todos os endereços de uma contagem do plano. A tabela sup_plan_inv_ativ_endereco é sempre gravada, porém o usuário alocado para cada endereço só é gravado caso a alocação tenha sido feita por endereço.
Como esta função deverá ser "genérica" para geração de pendências de convocação ativa, algumas situações devem ser tratadas para garantir que não seja gerado registro incorretamente:- Situação da ordem de serviço e da atividade não pode estar 5 - Encerrada, 6 - Cancelada ou 3 - Bloqueada;
- Somente usuários com contagens pendentes ou em andamento (sit_atividade <> 'F'); Não deve duplicar registro para a mesma ordem de serviço, atividade e usuário executor.
- Alterar a função wmsr139_gera_pendencias_conv_ativa_os_ativ incluindo nova condição para a atividade de inventário (conv_ativa_atividade=12). Dentro desta nova condição, chamar uma nova função (wms_retorna_plano_inventario) a ser criada para obter o código do plano de inventário através da ordem de serviço. Após obter o plano de inventário, chamar a nova função wmsr139_gera_pendencias_conv_ativa_plano_inventario. Alterar a função sup20007_libera_plano_e_gera_contagens para que após confirmar mensagem de liberação do plano e/ou geração de contagem e tenha sido realizado o respectivo processamento, seja verificado se o parâmetro utiliza_conv_ativa = 'S' e em seguida se o parâmetro bloqueia_os_inv_lista_publica está igual a 'N'. Estando como 'N' a nova função de geração de pendência de convocação ativa para inventário deverá ser chamada wmsr139_gera_pendencias_conv_ativa_plano_inventario.
- Contextualização:
- Conforme visto no item anterior, quando o parâmetro bloqueia_os_inv_lista_publica está igual a 'N', logo após a contagem é possível executar a contagem dos itens mesmo não realizando alocações específicas para um usuário. Caso o parâmetro bloqueia_os_inv_lista_publica seja igual a 'S', então as atividades só serão direcionadas ao usuário quando realizado o processo de alocação. Existem duas formas de alocação (a) Por plano (b) Por endereço. Quando realizado alocação por endereço, um determinado usuário só poderá contar endereços alocados para ele em uma determinada contaegm do plano. Quando realizado alocação por plano, basta relacionar usuários a contagens, estes usuários poderão então realizar contagem em qualquer endereço. Independente deste formato/origem de alocação, as mesmas deverão ser replicadas para a convocação ativa de forma distinta para ordem de serviço / atividade / usuário executor.
- Segue abaixo os passos sugeridos para atingir o objetivo proposto:
- Seguindo o mesmo formato de trabalho das demais funções existentes no wmsr139, criar nova função wmsr139_atualiza_pendencias_conv_ativa_plano_inventario semelhante a função wmsr139_atualiza_pendencias_conv_ativa_transf_armz_os. Esta nova função terá o objetivo de identificar registros de convocação ativa para usuários não mais alocados para contagem e atualizar estes registros com usuários alocados em contagem ainda sem pendência de convocação ativa. Vale lembrar que diferente da função citada como exemplo, a origem das informações de alocações não estarão nos processos de movimentos e sim nas alocações em contagens gravadas em sup_plan_inv_ativ_executor quando por plano e sup_plan_inv_ativ_endereco quando por endereço. Esta nova função deverá receber como parâmetro empresa(l_empresa), plano de inventário(l_plano_inventario) e modo de exibição de mensagem (l_modo_exibicao_msg). Retornar TRUE ou FALSE no caso de um erro de processamento. Transacionar a operação realizando os mesmos controles existentes para outras funções do fonte wmsr139.
- Ainda seguindo o mesmo formato de trabalho das demais funções existentes no wmsr139, criar nova função wmsr139_ajusta_pendencias_conv_ativa_plano_inventario semelhante a função wmsr139_ajusta_pendencias_conv_ativa_transf_armz_os. Esta função deverá ter o objetivo de atualizar pendências desatualizadas através da função wmsr139_atualiza_pendencias_conv_ativa_plano_inventario , gerar novas pendências caso necessário através da função wmsr139_gera_pendencias_conv_ativa_plano_inventario e excluir pendências de usuários não mais alocados nas contagens através da função wmst274_wms_conv_ativa_exclui_condicional passando um where clause que identifique registros da wms_conv_ativa onde não possua mais uma ordem de serviço / atividade e usuário executor nas alocações do plano, seja em sup_plan_inv_ativ_executor ou sup_plan_inv_ativ_endereco. Esta nova função deverá receber como parâmetro empresa(l_empresa), plano de inventário(l_plano_inventario) e modo de exibição de mensagem (l_modo_exibicao_msg). Retornar TRUE ou FALSE no caso de um erro de processamento. Transacionar a operação realizando os mesmos controles existentes para outras funções do fonte wmsr139.
- Alterar a função wmsr139_ajusta_pendencias_conv_ativa incluindo nova condição para a atividade de inventário (conv_ativa_atividade=12). Dentro desta nova condição, chamar uma nova função (wms_retorna_plano_inventario) a ser criada para obter o código do plano de inventário através da ordem de serviço. Após obter o plano de inventário, chamar a nova função wmsr139_ajusta_pendencias_conv_ativa_plano_inventario.
- Contextualização:
- Quando um plano de inventário é cancelado, os processos relacionados a ele como por exemplo, movimentos, alocações, ordem de serviço entre outros também são cancelados. Uma vez um plano de inventário cancelado o mesmo não volta para outra situação e nenhum outro processo relacionado ao inventário é executado. Sendo assim, ao cancelar um plano de inventário, as pendências de concoação ativa devem ser removidas.
- Segue abaixo os passos sugeridos para atingir o objetivo proposto:
- Criar nova função wmsr139_exclui_pendencias_conv_ativa_plano_inventario que receba por parâmetro empresa(l_empresa), plano de inventário(l_plano_inventario) e modo de exibição de mensagem (l_modo_exibicao_msg) e efetue a exclusão das pendências de convocação ativa relacionadas ao plano através da ordme de serviço e atividade. A exclusão deverá ser feita através da função wmst274_wms_conv_ativa_exclui_condicional pois desta forma o histórico do registro será gravado em wms_conv_ativa_historico. Outras funções fazem operação semelhante como por exemplo wmsr139_exclui_pendencias_conv_ativa_transf_armz_os. Alterar a função wmsr139_exclui_pendencias_conv_ativa_os incluindo nova condição para a atividade de inventário (conv_ativa_atividade=12). Dentro desta nova condição, chamar uma nova função (wms_retorna_plano_inventario) a ser criada para obter o código do plano de inventário através da ordem de serviço. Após obter o plano de inventário, chamar a nova função wmsr139_exclui_pendencias_conv_ativa_plano_inventario.
- Objetivo: Realizar tratamentos no programa de convocação ativa para que usuário executor em branco (= " ") tenha o mesmo comportamento de usuário executor nulo (NULL) da mesma forma que tratamentos realizados para não nulos (IS NOT NULL) sejam aplicados para diferente de branco ( <> " ").
- Contextualização:
- As tabelas que servirão como base para gerar pendência de convocação ativa no inventário (sup_plan_inv_ativ_executor, sup_plan_inv_ativ_endereco) possuem o campo referente ao usuário executor da atividade(usuario_alocado) como NOT NULL e ao gravar que uma determinada contagem não possui usuário executor é gravado " " ao invés de NULL. Atualmente o programa de convocação ativa possue algumas tratativas para quando usuário IS NULL e também para IS NOT NULL. Por exemplo para buscar atividades para convocação de usuário, são avalidas atividades que estão alocadas para o uusário ou atividades que não possuem usuário. Será necessário adaptar estes pontos para que sejam realizados os mesmos tratamentos quando IS NULL e = " " da mesma forma para IS NOT NULL e <> " ".
- Segue abaixo os passos sugeridos para atingir o objetivo proposto:
Alterar as funções abaixo do wms para considerar (wms_conv_ativa.usuario_executor IS NULL OR wms_conv_ativa.usuario_executor = " "); e (wms_conv_ativa.usuario_executor IS NOT NULL AND wms_conv_ativa.usuario_executor <> " ").
Expandir title Clique aui para verificar as indicações para implementações wms6743_busca_atividades_conv_ativa
wms6743_existe_executor_atividade
- Objetivo: Atualizar registros de pendência de convocação ativa ao iniciar/finalizar contagem de inventário através do coletor de dados quando executado pelos formatos atuais via lista pública ou particular.
- Contextualização:
- O funcionamento da rotina de contagem do inventário (SUP2067) via lista pública/particular não deve sofrer mudança de comportamento da forma que é executado atualmente. Ou seja, as consistências, regras de utilização deverão permanecer as mesmas. As alterações a serem realizadas tem apenas o objetivo de atualizar os registros de pendência de convocação ativa com o objetivo de não gerar convocação ativa para contagens em endereços que já estão sendo contados por lista pública/particular por algum motivo. As atualizações devem acontecer basicamente em dois momentos, ao iniciar contagem em um novo endereço, não alocado incialmente para o usuário e ao concluir contagem de endereço não restando novos endereços alocados para contagem do usuário.sup2067_grava_contagens_concluidas
- Segue abaixo os passos sugeridos para atingir o objetivo proposto:
- Alterar a função sup2067_verifica_endereco_plano para que caso seja utilizado a convocação ativa, seja chamada a função
Abaixo funções a serem removidas e/ou alteradas:
Expandir title Clique aui aqui para verificar as indicações para implementações Funções a serem removidas:
→ wmsr139_atualiza_end_origem_destino_conv_ativa; (1)
→ wms6435a_atualiza_end_origem_destino_conv_ativa; (2)
→ wms6435b_atualiza_end_origem_destino_conv_ativa; (3)
→ wms663108a_atualiza_end_origem_destino_conv_ativa; (4)
→ wms663108b_atualiza_end_origem_destino_conv_ativa; (5)Funções a serem alteradas para remover a chamada das funções removidas mencionadas acima:
→ wms6177_incluir_processo_moviment; (1)
→ wms6177_excluir_os_reserva_processo; (1)
→ wms6180_gera_tabelas_processo_movimentacao; (1)
→ wmsr139_ajusta_pendencia_conv_ativa_movtos_os_ativ; (1)
→ wmsr139_ajusta_pendencia_conv_ativa_movtos_os_ativ; (1)
→ wms6435a_atualiza_conv_ativa; (2)
→ wms6435b_atualiza_conv_ativa; (3)
→ wms663108a_atualiza_conv_ativa; (4)
→ wms663108b_atualiza_conv_ativa; (5)Funções a serem alteradas para que seja retirado a utilização da coluna de endereco_origem e destino.
→ wms6435a_gera_pendencias_conv_ativa_transf_armz_os;
→ wms6435b_gera_pendencias_conv_ativa_transf_armz_os;
→ wms663108a_gera_pendencias_conv_ativa_transf_armz_os;
→ wms663108b_gera_pendencias_conv_ativa_transf_armz_os;
→ wmsr139_gera_conv_ativa_historico;
→ wmsr139_gera_pendencias_conv_ativa_transf_armz_os;
→ wmsr139_gera_pendencias_conv_ativa_recebto_cesv;
→ wmsr139_gera_pendencias_conv_ativa_recebto_os_ativ;WMS6743 - Programa da Convocação Ativa
→ wms6743_busca_atividades_conv_ativa;
Alterar a função para que quando a busca for realizada para atividade de recebimento, não seja mais lido/relacionado o campo wms_conv_ativa.endereco_origem e sim o campo wms_ordem_servico.endereco_origem
→ wms6743_carrega_dados_todas_atividades;
Alterar a função para remover o relacionamento com as tabelas 'apelidadas' de end_origem/end_destino e para que quando informado os filtros de endereço origem e destino seja lido ou wms_ordem_servico.endereco_origem/destino para atividades de recebimento, ou wms_processo_moviment.endereco_origem/destino para atividades diferente de recebimento onde exista algum movimento para o endereço origem/destino informado. Devido a necessidade de filtro mais elaborado para estes campos, a implementação deverá se dar verificando se a variável referente ao filtro (l_where_wmsr78) possui endereço origem/destino (wms_conv_ativa.endereco_origem ou wms_conv_ativa.endereco_destino). Possuindo, uma nova cláusula AND provavelmente utilizando EXISTS deverá ser adicionada ao where clause (l_sql_stmt_where) do SQL principal (l_sql_stmt) para tratar a necessidade de busca. O valor do código de barras do endereço informado no filtro também deverá ser obtido através da manipulação da string referente ao where clause do filtro (l_where_wmsr78), sendo que o valor estará logo após o sinal de "=", exemplo " wms_conv_ativa.endereco_origem = 10 ".
→wms6743_busca_des_reduz_end_origem / wms6743_busca_des_reduz_end_destino
Alterar a função para buscar a descrição reduzida do endereço através da ordem de serviço (wms_ordem_servico) quando recebimento ou através dos movimentos (wms_processo_moviment) quando diferente de recebimento. Caso seja encontrado mais de um endereço continuar exibindo a descrição "VARIOS ENDS. ORIG/DEST."
→ wms6743_aloca_usuario_atividade_mov_int
Remover chamada para a função wmsr139_atualiza_end_origem_destino_conv_ativa.
http://tdn.totvs.com.br/pages/viewpage.action?spaceKey=LLOG&title=ER_LOGWMS01-831_ME_15.8.1+-+Ressuprimento→ Esta especificação estava em desenvolvimento durante a criação deste documento, sendo assim, faz-se necessária uma breve verificação por referências a wms_cont_ativa.endereco_origem e wms_contiva_ativa.endereco_destino para serem excluídas.
- Objetivo: Gravar programa originador da criação da pendência de convocação ativa;
- Segue abaixo passos para atingir o objetivo proposto:
- Executar conversor de tabela (wmsxxx) referente as modificações realizadas nas tabelas wms_conv_ativa e wms_conv_ativa_historico conforme descrito no item Modelo de Dados;
Alterar as funções abaixo para que seja gravado o programa que originou a inclusão de novo registro da pendência de convocação ativa (wms_conv_ativa.programa_origem)
Expandir title Clique aui para verificar as indicações para implementações » Utilizar a função log1200_nome_programa() para buscar o nome do programa para ser gravado no campo wms_conv_ativa.programa_origem.
Funções a serem alteradas:
→ wmsr139_gera_pendencias_conv_ativa_recebto_cesv;
→ wmsr139_gera_pendencias_conv_ativa_recebto_os_ativ;
→ wmsr139_gera_pendencias_conv_ativa_transf_armz_os;
→ wms6435a_gera_pendencias_conv_ativa_transf_armz_os;
→ wms6435b_gera_pendencias_conv_ativa_transf_armz_os;
→ wms6435c_gera_pendencias_conv_ativa_transf_armz_os;
→ wms663108a_gera_pendencias_conv_ativa_transf_armz_os;
→ wms663108b_gera_pendencias_conv_ativa_transf_armz_os;
→ wms663108c_gera_pendencias_conv_ativa_transf_armz_os.
Objetivo: Gravar programa originador da alteração do usuário executor da pendência de convocação ativa; - Segue abaixo passos para atingir o objetivo proposto:
- Executar conversor mencionado no item 1. b) i. para aplicar as alterações das tabelas;
- Objetivo: Gravar programa originador da finalização/exclusão da pendência de convocação ativa bem como a data da exclusão do registro;
- Contextualização:
- Atualmente não é possível representar nos registros de histórico da convocação ativa quando um registro foi efetivamente finalizado ou apenas excluído da pendência de convocação ativa. Isso porque essas duas operações geram a exclusão do registro da wms_conv_ativa e inclusão na tabela wms_conv_ativa_historico. Existe o campo dat_hor_fim na tabela wms_conv_ativa_historico para indicar a data e hora da finalização da pendência de convocação ativa, porém finalização é diferente de exclusão, e quando esta exclusão acontece não é possível obter data e hora.
- Segue abaixo passos para atingir o objetivo proposto:
- Para resolver esta situação foi criado o campo dat_hor_exclusao conforme o item Modelo de Dados. No item iii) é possível visualizar as funções que precisam de alteração para que este novo campo seja gravado.
- Além da data e hora de exclusão do registro de pendência de convocação ativa, faz-se necessário a gravação do programa originador da exclusão. No item iii) é possível visualizar as funções que percism de alteração para que este novo campo seja gravado.
Executar conversor mencionado no item 1. b) i para aplicar as alterações das tabelas, e alterar as funções abaixo para implementar os itens i) e ii)
Expandir title Clique aui para verificar as indicações para implementações » Utilizar a função log1200_nome_programa() para buscar o nome do programa e gravar no campo wms_conv_ativa_historico.programa_exclusao.
» Buscar a data e hora atual (DATETIME YEAR TO SECOND) do processamento da função para gravar no campo wms_conv_ativa_historico.dat_hor_exclusao.
Funções a serem alteradas:
→ wmsr139_gera_conv_ativa_historico;
→ wmsm274_wms_conv_ativa_gera_historico.
Objetivo: Atualizar/Excluir registros de pendência de convocação ativa ao alocar/desalocar usuário no plano de inventário;
Objetivo: Excluir pendências de convocação ativa ao cancelar plano de inventário;Alterar as funções abaixo para que seja gravado o programa que originou a alteração de registro da pendência de convocação ativa (wms_conv_ativa.programa_alteracao)
Expandir title Clique aui para verificar as indicações para implementações » Utilizar a função log1200_nome_programa() para buscar o nome do programa para ser gravado no campo wms_conv_ativa.programa_alteracao.
Funções a serem alteradas:
→ wmsr139_atualiza_pendencias_conv_ativa_recebto_os_ativ;
→ wmsr139_atualiza_pendencias_conv_ativa_transf_armz_os.serem alteradas para remover a chamada das funções removidas mencionadas acima:
→ wms6177_incluir_processo_moviment; (1)
→ wms6177_excluir_os_reserva_processo; (1)
→ wms6180_gera_tabelas_processo_movimentacao; (1)
→ wmsr139_ajusta_pendencia_conv_ativa_movtos_os_ativ; (1)
→ wmsr139_ajusta_pendencia_conv_ativa_movtos_os_ativ; (1)
→ wms6435a_atualiza_conv_ativa; (2)
→ wms6435b_atualiza_conv_ativa; (3)
→ wms663108a_atualiza_conv_ativa; (4)
→ wms663108b_atualiza_conv_ativa; (5)Funções a serem alteradas para que seja retirado a utilização da coluna de endereco_origem e destino.
→ wms6435a_gera_pendencias_conv_ativa_transf_armz_os;
→ wms6435b_gera_pendencias_conv_ativa_transf_armz_os;
→ wms6435c_gera_pendencias_conv_ativa_transf_armz_os;
→ wms663108a_gera_pendencias_conv_ativa_transf_armz_os;
→ wms663108b_gera_pendencias_conv_ativa_transf_armz_os;
→ wms663108c_gera_pendencias_conv_ativa_transf_armz_os;
→ wmsr139_gera_conv_ativa_historico;
→
wmsr139_gera_pendencias_conv_ativa_
- Criar uma nova função sup2067_usuario_possui_endereco_alocado, através de empresa e plano, esta função deverá verificar se o usuário não possui mais alocações de contagens pendentes para execução. Lembrando que caso a alocação tenha acontecido por plano (sup_plan_inv_ativ_executor) o usuário só não terá mais alocação caso não exista nenhum endereço previsto para contagem (sup_plan_inv_ativ_endereco). Caso a alocação seja por endereço, basta verificar se existe alguma alocação em endereço (sup_plan_inv_ativ_endereco) para o usuário desconsiderando recurso.
- Criar nova função wmsr139_finaliza_pendencias_conv_ativa_plano_inventario
- Seguindo o mesmo formato de trabalho das demais funções existentes no wmsr139, criar nova função wmsr139_finaliza_pendencias_conv_ativa_plano_inventario semelhante a função wmsr139_finaliza_pendencias_conv_ativa_transf_armz Esta nova função terá o objetivo de buscar um registro na convocação ativa para o plano de inventário e usuário executor e realizar o processo de finalização da pendência de convocação ativa. Esta nova função deverá receber como parâmetro empresa(l_empresa), transação da convocação ativa(l_trans_conv_ativa), plano de inventário(l_plano_inventario), usuario(l_usuario), indicador se após a finalização realiza ou não ajuste de pendência(l_ajusta_pends_os) e por fim modo de exibição de mensagem (l_modo_exibicao_msg). Retornar TRUE ou FALSE no caso de um erro de processamento. Transacionar a operação realizando os mesmos controles existentes para outras funções do fonte wmsr139.
- Alterar a função sup2067_grava_atividades_concluidas para que caso utilize convocaçãoa tiva, após ter mudado a situação da contagem de um endereço para 'F' e não exista mais nenhum endereço previsto para contagem para o usuário no plano (sup2067_usuario_possui_endereco_alocado() = FALSE) seja então chamada a função para finalização da pendência de convocação ativa wmsr139_finaliza_pendencias_conv_ativa_plano_inventario.
- ATENÇÃO A POSSIBILIDADE DE ENCERRAR ON LINE E NÃO ON LINE VERIFICAR DIFERENÇA
- Contextualização:
- Ao ser adicionada uma nova atividade para convocação ativa, algumas alterações devem ser realizadas. A primeira é a alteração na busca de atividades (wms6743_busca_atividades_conv_ativa e wms6743_carrega_dados_todas_atividades) no progama de convocação ativa para que esta nova atividade possa ser considerada para convocação ou não do usuário. Após ter alterado o programa para buscar esta nova atividade, deve-se implementar as regras específicas desta atividade para identificar se o usuário realmente pode executar a atividade no momento em que está sendo processado o programa (wms6743_permite_executar_atividade). Para o caso do inventário essa avalição deve levar em consideração as restrições de depositante e endereços configuradas em WMS6742. As restrições de depositante já são validadas na busca das atividades, bastando então implementar a verificação da existência de contagens com endereços onde o usuário esteja configurado para trabalhar sendo que o usuário não tenha realizado contagem anterior neste endereço. Em seguida, o programa de convocação ativa deverá efetivamente alocar o usuário (wms6743_aloca_usuario_atividade) no processo de contagem com os respectivos endereços onde o usuário pode realizar contagem. Por fim, o último passo é executar o programa de contagem de inventário para que o usuário possa efetivamente realizar as contagens (wms6743_executa_atividade).
- Segue abaixo os passos sugeridos para atingir o objetivo proposto:
- Alterar a função wms6743_carrega_dados_todas_atividades para que a atividade de inventário possa ser encontrada na busca e que os respectivos filtros possíveis possam ser aplicados na nova atividade (atenção aos filtros de endereços origem e destino);
- Criar nova função wms6743_permite_executar_ativ_inventario para que seja consultado os endereços disponíveis para contagem(sup_plan_inv_ativ_endereco.sit_atividade<>'F' AND sup_plan_inv_ativ_endereco.usuario_alocado = ' ') onde o usuário não tenha realizado contagem anterior(seq_repeticao_atividade), sendo que dentre estes endereços deve existir pelo menos 1 configurado para o usuário em WMS6742 (wms_conv_ativa_config_grp_end & wms_grupo_endereco_detalhe) , isso se o usuário possuir alguma restrição de endereço configurada. Incluir chamada para esta nova função em wms6743_permite_executar_atividade quando conv_ativ_atividade = 12.
- Criar nova função wms6743_aloca_usuario_ativ_inventario para que seja identificado os endereços disponíveis para contagem (sup_plan_inv_ativ_endereco.sit_atividade<>'F' AND sup_plan_inv_ativ_endereco.usuario_alocado = ' ') onde o usuário ainda não tenha realizado uma contagem anterior e que o usuário possa trabalhar no endereço conforme WMS6742 (wms_conv_ativa_config_grp_end & wms_grupo_endereco_detalhe). Identificando a existência de endereços disponíveis para contagem, obter o modo de alocação do plano (sup_par_selecao_inventario.parametro = 'sup2033_tipo_aloca'). Em seguida realizar efetivamente a alocação do usuário conforme os itens abaixo:
- Alocar o usuário para contagem nestes endereços através de update nos campos usuario_alocado e recurso_alocado. Além da alocação nos endereços de uma contagem do inventário, deve-se verificar a alocação do usuário nos seguintes controles:
- Incluir usuário executor na ordem de serviço caso não exista (wms_os_ativ_executor → um registro por usuário na ordem de serviço)
- Incluir recurso do usuário na ordem de serviço caso não exista (wms_ordem_servico_ativ_recurso → um registro por recurso na ordem de serviço);
- Se alocação por plano, incluir novo executor de contagem caso ainda não exista (sup_plan_inv_ativ_executor → um registro por usuário/contagem);
- Se alocação por endereço, atualizar o executor da contagem no endereço (sup_plan_inv_ativ_endereco → atualizar cada registro referente aos endereços/contagem )
- Incluir usuários habilitados no plano de inventário caso ainda não exista (sup_inv_usuario_habilitado → um registro por usuário);
- Atualizar Processo de movimento (wms_processo_moviment → movimento relacionado ao plano de inventário e número da contagem (sup_plan_inv_proc_movimento))
Alterar a função wms6743_executa_atividade para que a rotina de contagem seja chamada através do wms6077 como já é feito para outras atividades.
Objetivo: Atualizar registros de pendência de convocação ativa ao iniciar/finalizar contagem de inventário através do coletor de dados quando executado através da convocação ativa. - Objetivo: Excluir as colunas endereço origem e destino das tabelas de controle das pendências de convocação ativa (wms_conv_ativa e wms_conv_ativa_historico);
Resumo dos Objetos Alterados/Criados.
<acionado através da central do planejador para atividades de armazenagem/transferência/canc. armazenagem/ressuprimento>
Logix → Logística → WMS → Gerenciamento operacional → Central do planejador
<acionado através da central do planejador para atividades de armazenagem/transferência/canc. armazenagem/ressuprimento>
Logix → Logística → WMS → Gerenciamento operacional → Central do planejador<acionado através da central de alocação para atividades de armazenagem/transferência/canc. armazenagem/ressuprimento>
Logix → Logística → WMS → Gerenciamento operacional → Alocação de recursos<acionado através da central de alocação para atividades de armazenagem/transferência/canc. armazenagem/ressuprimento>
Logix → Logística → WMS → Gerenciamento operacional → Alocação de recursos<acionado através da lista pública para atividades de armazenagem/transferência/canc. armazenagem>
Logix → Logística → WMS → Coletores → Pendências → WMS6070 - Lista pública
Estrutura de Menu
transf_armz_os;
→ wmsr139_gera_pendencias_conv_ativa_recebto_cesv;
→ wmsr139_gera_pendencias_conv_ativa_recebto_os_ativ;WMS6743 - Programa da Convocação Ativa
→ wms6743_busca_atividades_conv_ativa;
Alterar a função para que quando a busca for realizada para atividade de recebimento, não seja mais lido/relacionado o campo wms_conv_ativa.endereco_origem e sim o campo wms_ordem_servico.endereco_origem
→ wms6743_carrega_dados_todas_atividades;
Alterar a função para remover o relacionamento com as tabelas 'apelidadas' de end_origem/end_destino e para que quando informado os filtros de endereço origem e destino seja lido ou wms_ordem_servico.endereco_origem/destino para atividades de recebimento, ou wms_processo_moviment.endereco_origem/destino para atividades diferente de recebimento onde exista algum movimento para o endereço origem/destino informado. Devido a necessidade de filtro mais elaborado para estes campos, a implementação deverá se dar verificando se a variável referente ao filtro (l_where_wmsr78) possui endereço origem/destino (wms_conv_ativa.endereco_origem ou wms_conv_ativa.endereco_destino). Possuindo, uma nova cláusula AND provavelmente utilizando EXISTS deverá ser adicionada ao where clause (l_sql_stmt_where) do SQL principal (l_sql_stmt) para tratar a necessidade de busca. O valor do código de barras do endereço informado no filtro também deverá ser obtido através da manipulação da string referente ao where clause do filtro (l_where_wmsr78), sendo que o valor estará logo após o sinal de "=", exemplo " wms_conv_ativa.endereco_origem = 10 ".
→ wms6743_busca_des_reduz_end_origem / wms6743_busca_des_reduz_end_destino
Alterar a função para buscar a descrição reduzida do endereço através da ordem de serviço (wms_ordem_servico) quando recebimento ou através dos movimentos (wms_processo_moviment) quando diferente de recebimento. Caso seja encontrado mais de um endereço continuar exibindo a descrição "VARIOS ENDS. ORIG/DEST."
→ wms6743_aloca_usuario_atividade_mov_int
Remover chamada para a função wmsr139_atualiza_end_origem_destino_conv_ativa.
http://tdn.totvs.com.br/pages/viewpage.action?spaceKey=LLOG&title=ER_LOGWMS01-831_ME_15.8.1+-+Ressuprimento→ Esta especificação estava em desenvolvimento durante a criação deste documento, sendo assim, faz-se necessária uma breve verificação por referências a wms_cont_ativa.endereco_origem e wms_contiva_ativa.endereco_destino para serem excluídas.
- Objetivo: Gravar programa originador da criação da pendência de convocação ativa;
- Segue abaixo passos para atingir o objetivo proposto:
- Executar conversor de tabela (wms00593) referente as modificações realizadas nas tabelas wms_conv_ativa e wms_conv_ativa_historico conforme descrito no item Modelo de Dados;
Alterar as funções abaixo para que seja gravado o programa que originou a inclusão de novo registro da pendência de convocação ativa (wms_conv_ativa.programa_origem)
Expandir title Clique aqui para verificar as indicações para implementações » Utilizar a função log1200_nome_programa() para buscar o nome do programa para ser gravado no campo wms_conv_ativa.programa_origem.
Funções a serem alteradas:
→ wmsr139_gera_pendencias_conv_ativa_recebto_cesv;
→ wmsr139_gera_pendencias_conv_ativa_recebto_os_ativ;
→ wmsr139_gera_pendencias_conv_ativa_transf_armz_os;
→ wms6435a_gera_pendencias_conv_ativa_transf_armz_os;
→ wms6435b_gera_pendencias_conv_ativa_transf_armz_os;
→ wms6435c_gera_pendencias_conv_ativa_transf_armz_os;
→ wms663108a_gera_pendencias_conv_ativa_transf_armz_os;
→ wms663108b_gera_pendencias_conv_ativa_transf_armz_os;
→ wms663108c_gera_pendencias_conv_ativa_transf_armz_os.
→ wmsm274.
- Objetivo: Gravar programa originador da alteração do usuário executor da pendência de convocação ativa;
- Segue abaixo passos para atingir o objetivo proposto:
- Executar conversor mencionado no item 1. b) i. para aplicar as alterações das tabelas;
Alterar as funções abaixo para que seja gravado o programa que originou a alteração de registro da pendência de convocação ativa (wms_conv_ativa.programa_alteracao)
Expandir title Clique aqui para verificar as indicações para implementações » Utilizar a função log1200_nome_programa() para buscar o nome do programa para ser gravado no campo wms_conv_ativa.programa_alteracao.
Funções a serem alteradas:
→ wmsr139_atualiza_pendencias_conv_ativa_recebto_os_ativ;
→ wmsr139_atualiza_pendencias_conv_ativa_transf_armz_os.
- Objetivo: Gravar programa originador da finalização/exclusão da pendência de convocação ativa bem como um indicador que informe se o registro foi Finalizado (executado) ou foi Excluído por uma operação de desalocação por exemplo.
- Contextualização:
- Atualmente não é possível representar nos registros de histórico da convocação ativa quando um registro foi efetivamente finalizado ou apenas excluído da pendência de convocação ativa. Isso porque essas duas operações geram a exclusão do registro da wms_conv_ativa e inclusão na tabela wms_conv_ativa_historico. Existe o campo dat_hor_fim na tabela wms_conv_ativa_historico para indicar a data e hora da finalização da pendência de convocação ativa, porém finalização é diferente de exclusão, e quando esta exclusão acontece não é possível obter data e hora.
- Segue abaixo passos para atingir o objetivo proposto:
- Para resolver esta situação foi criado o campo tipo_exclusao conforme o item Modelo de Dados. No item iii) é possível visualizar as funções que precisam de alteração para que este novo campo seja gravado.
- Além da data gração do tipo de exclusão da pendência de convocação ativa, faz-se necessário a gravação do programa originador da exclusão. No item d) iii) é possível visualizar as funções que percism de alteração para que este novo campo seja gravado.
Executar conversor mencionado no item 1. b) i) para aplicar as alterações das tabelas, e alterar as funções abaixo para implementar os itens d) i) e ii)
Expandir title Clique aqui para verificar as indicações para implementações » Utilizar a função log1200_nome_programa() para buscar o nome do programa e gravar no campo wms_conv_ativa_historico.programa_exclusao.
Funções a serem alteradas:
→ wmsr139_gera_conv_ativa_historico - Além do programa que gerou a exclusão gravar 'F' no campo tipo_exclusao;
→ wmsm274_wms_conv_ativa_gera_historico. - Gravar 'E' no campo tipo_exclusao e passar a também gravar a data de finalização.
- Objetivo: Ajustar busca de atividades principal do programa WMS6743 facilitando a inclusão de novas atividades na convocação ativa.
- Contextualização:
- Atualmente no início do programa WMS6743 é feito uma busca das pendências de convocação ativa pendentes de convocação. Esta busca considera diversos critérios, conforme abaixo:
- Somente atividade que estão em andamento, interrompida ou pendente;
- Que não possuam atividade pré-requisito pendente de execução;
- Realiza a consistência de restrição de endereços e depositante quando pendência de convocação ativa ainda sem usuário executor.
- Somente atividade que estão em andamento, interrompida ou pendente;
- Este último item 3) gera uma complexidade grande na consulta SQL pois para cada atividade os endereços são validados de forma diferenciada. Exemplo:
- Atividade de recebimento o endereço fica na ordem de serviço;
- Atividade de movimentação interna o endereço fica nos processos de movimento;
- Atividade de inventário (próximo requisito), o endereço fica nos controle do inventário;
- Atividade de reconferência (próximos requisitos), os endereços a serem reconferidos ficam no próprio estoque.
- Sendo assim, o objetivo deste item é retirar esta validação desta primeira busca, e incluir no loop de avaliação de cada atividade e assim validar cada atividade individualmente
- Segue abaixo passos para atingir o objetivo proposto:
- Alterar a função wms6743_busca_atividades_conv_ativa e retirar a validação referente aos grupos de endereços para cada atividade;
- Criar funções específicas para realizar o tratamento retirado da função wms6743_busca_atividades_conv_ativa. Inicialmente é possível identificar duas possíveis funções, uma para validação de endereço através da ordem de serviço (wms6743_verifica_restricao_endereco_os) e outra para validação de endereço através dos processos de movimento (wms6743_verifica_restricao_endereco_movimentos). Estas novas funções podem ser chamadas no bloco existente para verificação de atividade pronta para ser executada (wms6743_permite_executar_atividade).
Modelo de Dados
wms_conv_ativa
Operação | Nome | Descrição | Tipo | Obrigatório |
---|---|---|---|---|
inclusão de coluna | programa_origem | Programa que criou o registro | CHAR(08) | SimNão |
inclusão de coluna | programa_alteracao | Último programa que atualizou o registro | CHAR(08) | Não |
exclusão de coluna | endereco_origem | Endereço origem | INTEGER | Não |
exclusão de coluna | endereco_destino | Endereço destino | INTEGER | Não |
wms_conv_ativa_historico
Operação | Nome | Descrição | Tipo | Obrigatório | ||
---|---|---|---|---|---|---|
inclusão de coluna | programa_origem | Programa que criou o registro | CHAR(08) | SimNão | ||
inclusão de coluna | programa_alteracao | Último programa que atualizou o registro | CHAR(08) | Não | ||
inclusão de coluna | programa_exclusao | Programa que realizou exclusão do registro | CHAR(08) | SimNão | ||
inclusão de coluna | dat_hortipo_exclusao | Data e hora em que Indica se o registro foi excluído | DATETIME YEAR TO SECOND | ou finalizado, sendo: F - Finalizado; E - Excluído. | CHAR(1) | NãoSim |
exclusão de coluna | endereco_origem | Endereço origem | INTEGER | Não | ||
exclusão de coluna | endereco_destino | Endereço destino | INTEGER | Não |
Este documento é material de especificação dos requisitos de inovação, trata-se de conteúdo extremamente técnico. |
---|