Este documento é material de especificação dos requisitos de inovação, trata-se de conteúdo extremamente técnico. |
---|
Especificação | |||
Produto | Logix | Módulo | WMS |
Segmento Executor | Supply Chain - Inovação | ||
Projeto1 | IRM1 | ||
Requisitos1 | Subtarefas1 |
| |
País | ( x ) Brasil ( ) Argentina ( ) Mexico ( ) Chile ( ) Paraguai ( ) Equador ( ) USA ( ) Colombia ( ) Outro _____________. |
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 4 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 |
Os arquivos originais(dinâmicos) utilizados e aqui apresentados em formato de imagem(estático) estão anexos a este documento.
|
Rotina | Tipo de Operação | Opção de Menu | Regras de Negócio |
WMSR41 | [Alteração] |
| Geração da ordem de serviço de ressuprimento de picking |
WMS6238 | [Alteração] | Ressuprimento de picking | |
WMS663108a | [Alteração] |
| Alocação/realocação de recursos ressuprimento |
WMS663108b | [Alteração] | Alocação/realocação direta de recursos ressuprimento | |
WMS663108c | [Alteração] | Desalocar ressuprimento | |
WMS6435a | [Alteração] | Central do planejador - Alocação/realocação (distribuição) de recursos ressuprimento | |
WMS6435b | [Alteração] | Central do planejador - Desalocar de recursos ressuprimento | |
WMS6435c | [Alteração] | Central do planejador - Alocação/realocação direta de recursos ressuprimento |
WMSR139 - RNL Geração/Exclusão e Atualização de pendência de convocação ativa.
Criar funções para:
Uma pendência de convocação ativa para a Ordem de Serviço/Atividade. O objetivo é que seja chamada após a existência das tabelas wms_os_ativ_executor ou wms_processo_moviment.
NOTA: A tabela wms_os_ativ_executor pode até não existir, porém caso exista serão assumidos os executores, um registro de pendência de convocação ativa para cada, e um registro de pendência de convocação ativa sem executor para os processos de movimento sem executor.
--inclui registros da convocacao ativa(wms_conv_ativa) para as situações onde: ------ exista usuario executor em atividade pendente e ainda nao exista pendencia de convocação ativa ------------ (usuario executor = NULL para processos de movimento sem alocação) ------------ (usuario executor <> NULL para processos de movimento com alocação) INSERT INTO wms_conv_ativa (empresa,ctr_ent_sai_veic_docum,ordem_servico,ativ, tip_classe_operacao,conv_ativa_atividade,tip_processo, usuario_executor, deposit, endereco_origem) SELECT DISTINCT wms_ordem_servico.empresa, wms_ordem_servico.ctr_ent_sai_veic_docum, wms_ordem_servico.ordem_servico, wms_ativ.ativ, wms_clas_operacao.tip_clas_operacao, wms_tip_processo.conv_ativa_atividade, wms_tip_processo.tip_processo, wms_os_ativ_executor.usuario AS usuario_executor, wms_ordem_servico.deposit, CASE WHEN (SELECT COUNT(DISTINCT mov.endereco_origem) FROM wms_processo_moviment mov WHERE mov.empresa = p_cod_empresa AND mov.ordem_servico = l_ordem_servico AND mov.ativ = l_atividade AND mov.sit_processo_moviment NOT IN ('FI','CA') AND ( ( wms_os_ativ_executor.usuario IS NOT NULL AND mov.usuario_executor = wms_os_ativ_executor.usuario) OR( wms_os_ativ_executor.usuario IS NULL AND mov.usuario_executor IS NULL) )) = 1 THEN (SELECT DISTINCT mov.endereco_origem FROM wms_processo_moviment mov WHERE mov.empresa = p_cod_empresa AND mov.ordem_servico = l_ordem_servico AND mov.ativ = l_atividade AND mov.sit_processo_moviment NOT IN ('FI','CA') AND ( ( wms_os_ativ_executor.usuario IS NOT NULL AND mov.usuario_executor = wms_os_ativ_executor.usuario) OR( wms_os_ativ_executor.usuario IS NULL AND mov.usuario_executor IS NULL) )) ELSE NULL END endereco_origem FROM wms_ordem_servico_ativ INNER JOIN wms_ordem_servico ON wms_ordem_servico.empresa = wms_ordem_servico_ativ.empresa AND wms_ordem_servico.ordem_servico = wms_ordem_servico_ativ.ordem_servico INNER JOIN wms_clas_operacao ON wms_clas_operacao.empresa = wms_ordem_servico.empresa AND wms_clas_operacao.classe_operacao = wms_ordem_servico.classe_operacao INNER JOIN wms_ativ ON wms_ativ.empresa = wms_ordem_servico_ativ.empresa AND wms_ativ.ativ = wms_ordem_servico_ativ.ativ INNER JOIN wms_tip_processo ON wms_tip_processo.tip_processo = wms_ativ.tip_processo LEFT JOIN wms_os_ativ_executor ON wms_os_ativ_executor.empresa = tt_movimentos.empresa AND wms_os_ativ_executor.ordem_servico = tt_movimentos.ordem_servico AND wms_os_ativ_executor.ativ = tt_movimentos.atividade AND (wms_os_ativ_executor.recurso_adicional = 'N' OR wms_os_ativ_executor.recurso_adicional IS NULL) AND wms_os_ativ_executor.sit_execucao NOT IN (3,5,6,7) WHERE wms_ordem_servico_ativ.empresa = p_cod_empresa AND wms_ordem_servico_ativ.ordem_servico = l_ordem_servico AND wms_ordem_servico_ativ.ativ = l_atividade AND wms_tip_processo.conv_ativa_atividade = 14 AND wms_ordem_servico_ativ.sit_ativ NOT IN (3,5,6) AND NOT EXISTS ( SELECT DISTINCT 1 FROM wms_conv_ativa cv WHERE cv.empresa = p_cod_empresa AND cv.ordem_servico = l_ordem_servico AND cv.ativ = l_atividade AND ( ( wms_os_ativ_executor.usuario IS NOT NULL AND cv.usuario_executor = wms_os_ativ_executor.usuario) OR( wms_os_ativ_executor.usuario IS NULL AND cv.usuario_executor IS NULL) )) -- atualiza as colunas que não tiveram valores inseridos NO INSERT anterior. INSERT com SELECT nao aceita variáveis -------- somente atualiza campos de alocação se realmente existir uma alocação para o usuário UPDATE wms_conv_ativa SET dat_hor_inclusao = l_data_atual, usuario_alocacao = CASE WHEN usuario_executor IS NOT NULL THEN p_user ELSE NULL END, dat_hor_alocacao_executor = CASE WHEN usuario_executor IS NOT NULL THEN l_data_atual ELSE NULL END WHERE wms_conv_ativa.empresa = p_cod_empresa AND wms_conv_ativa.ordem_servico = l_ordem_servico AND wms_conv_ativa.ativ = l_atividade AND dat_hor_inclusao IS NULL AND usuario_alocacao IS NULL AND dat_hor_alocacao_executor IS NULL |
WMSR41 - Ressuprimento de picking
WMS6238 - Ressuprimento
Atualmente o programa de ressuprimento é aberto direto do menu. Para que seja possível identificar que determinada atividade foi chamada da convocação ativa e de qual transação, deverá receber como parâmetros o código da empresa e também o código da transação da convocação ativa que originou a chamada ao programa. Sendo chamado pela convocação ativa, o programa deverá ser executa a partir da tela 4.
WMS6430 - Central do planejador
Alterar a função wms6435a_carrega_movimentos para que logo após a execução da inclusão de registros na tabela temporária tt_movimentos seja carregada também a tabela temporária tt_os_ativ_movimentos. Para carregar esta nova tabela temporária, buscar as diferentes ordens de serviço e atividades geradas para os movimentos. Veja abaixo
Comando SQL para carregar a tabela temporária tt_os_ativ_movimentos com as diferentes ordens de serviço e atividades dos movimentos processadosAlterar a função wms6435b_carrega_movimentos para que logo após a execução da inclusão de registros na tabela temporária tt_movimentos seja carregada também a tabela temporária tt_os_ativ_movimentos. Para carregar esta nova tabela temporária, buscar as diferentes ordens de serviço e atividades geradas para os movimentos. Veja abaixo
Comando SQL para carregar a tabela temporária tt_os_ativ_movimentos com as diferentes ordens de serviço e atividades dos movimentos processadosCriar uma nova função wms6435b_atualiza_conv_ativ. Esta função deverá atualizar os registros da wms_conv_ativa com base no processamento da desalocação efetuada, para isso utilizar como como base as tabelas tt_os_ativ_movimentos, wms_os_ativ_executor e wms_processo_moviment. Segue abaixo passo a passo e ao final uma sugestão de implementação considerando todos os itens:
Semelhante ao item 3, contendo apenas exclusão.
Segue sugestão de comandos SQL contendo todos os passos acima mencionados. Não foi utilizado RNL pois o processamento pode ocorrer para um volume considerável de ordens de serviço/atividade e a ideia é evitar a utilização de cursores para melhorar performance.
Este documento é material de especificação dos requisitos de inovação, trata-se de conteúdo extremamente técnico. |
---|