Histórico da Página
e
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 | IRM1 |
| |||||||||||||||||
Requisitos1 |
| Subtarefas1 |
| ||||||||||||||||
País | ( x ) Brasil ( ) Argentina ( ) Mexico México ( ) Chile ( ) Paraguai ( ) EquadorEquador ( ) USA ( ) Colombia Colômbia ( ) Outro _____________. |
Aviso | ||
---|---|---|
| ||
Os requisitos tratados por esta especificação nesta Especificação fazem parte de um conjunto de requisitos destinados a atender a funcionalidade de "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. As especificações Especificações dos requisitos Requisitos de configuração e gerencimaneto gerenciamento estão em:
|
Objetivo
Alterar os programas das atividade de reconferência da expedição para:
- Pular telas iniciais dos programas;
- Atualizar o controle de convocação ativa ao finalizar as atividades.
Definição da Regra de Negócio
Rotina | Tipo de Operação | Opção de Menu | Regras de Negócio |
WMSR44 | [Alteração] |
| Geração da ordem de serviço de reconferência |
WMS6310 | [Alteração] | Reconferência expedição | |
WMS663107a | [Alteração] |
| Alocação/realocação de recursos reconferência |
WMS663107b | [Alteração] | Alocação/realocação direta de recursos reconferência | |
WMS663107c | [Alteração] | Desalocar reconferência | |
WMS643402 | [Alteração] | Central do planejador - Alocação/realocação (distribuição) de recursos reconferência | |
WMS643403 | [Alteração] | Central do planejador - Desalocar de recursos reconferência | |
WMS643404 | [Alteração] | Central do planejador - Alocação/realocação direta de recursos reconferência | |
WMS6743 | [Alteração] | Convocação Ativa |
WMS6743
Na apresentação da pendencia pendência deverá apresentar exibir a descrição reduzida da atividade; depositante; endereço origem (pode ser vários) e item + instrução da atividade no texto de descrição da tarefa.
A reconferência é acionada da mesma função de gerenciamento de ordens de serviço, portanto, deverá continuar chamando o wms6077_administra_os().
- Alterar a função wms6743_busca_atividades_conv_ativa(). No select de carregamento da tt_conv_ativa deverá prever as atividades com wms_conv_ativa.tip_classe_operacao = 'E' (expedição).
- Alterar a função wms6743_permite_executar_atividade(). Criar WHEN para conv_ativa_atividade = 20 (Reconferência expedição) e dentro dessa condição chamar a função wms6743_permite_executar_ativ_reconferencia_exped().
- Criar a função wms6743_permite_executar_ativ_conferencia(). Está função terá como finalidade verificar se o usuário tem acesso a pelo menos um dos endereços onde possua item a conferir para a ordem de serviço.
- Usar o select abaixo para identificar se existe algum endereço que o usuário tenha acesso.
- Se o select retornar mais de um registro, considerar que existe de mais de um endereço e o usuário tem acesso, com isso na tela de detalhe da convocação ativa deverá exibir o texto padrão para vários endereços.
- Se o select retornar apenas um registro, deverá buscar a descrição desse endereço para que seja exibida na tela de detalhe da convocação. Se não encontrar registros deve retornar FALSE, sendo que o usuário não tem terá acesso a nenhum endereço.
- Usar o select abaixo para identificar se existe algum endereço que o usuário tenha acesso.
Bloco de código | ||
---|---|---|
| ||
SELECT DISTINCT estoque_lote_ender.endereco FROM estoque_lote_ender, wms_reconferencia_expedicao, wms_parametro_separacao, wms_identif_estoque WHERE wms_reconferencia_expedicao.empresa = 'AV' AND wms_reconferencia_expedicao.ordem_servico = 'FIL16053014455322' AND wms_reconferencia_expedicao.atividade = 'AT0026' AND wms_reconferencia_expedicao.depositante = '118' AND wms_reconferencia_expedicao.sit_reconferencia IN ('P','A') AND estoque_lote_ender.ies_situa_qtd = 'I' AND estoque_lote_ender.cod_empresa = wms_reconferencia_expedicao.empresa AND estoque_lote_ender.cod_item = wms_reconferencia_expedicao.item AND estoque_lote_ender.deposit = wms_reconferencia_expedicao.depositante AND (estoque_lote_ender.endereco IS NOT NULL AND estoque_lote_ender.endereco <> ' ') AND wms_identif_estoque.empresa = estoque_lote_ender.cod_empresa AND wms_identif_estoque.identif_estoque = estoque_lote_ender.identif_estoque AND wms_parametro_separacao.empresa = wms_identif_estoque.empresa AND wms_parametro_separacao.depositante = wms_identif_estoque.depositante AND wms_parametro_separacao.tip_estoque_reconferencia = wms_identif_estoque.tip_estoque AND wms_parametro_separacao.restricao_reconferencia = wms_identif_estoque.restricao AND (EXISTS(SELECT DISTINCT 1 FROM wms_conv_ativa_config_grp_end cfg_grp_end INNER JOIN wms_grupo_endereco_detalhe grp_end_det ON grp_end_det.empresa = cfg_grp_end.empresa AND grp_end_det.grupo_endereco = cfg_grp_end.grupo_endereco WHERE cfg_grp_end.empresa = 'AV' AND cfg_grp_end.usuario = '000704' AND (grp_end_det.endereco = estoque_lote_ender.endereco))) |
Informações |
---|
| ||
Como a ordem de serviço de reconferência é gerada por item, e o item pode estar em mais de um endereço para reconferência, na convocação ativa será exigido que o usuário tenha acesso a pelo menos um dos endereços. Atendendo essa condição o usuário irá assumir a conferência de todos os endereços onde o item esteja pendente. |
WMS6310 - Reconferência
expediçãoExpedição (
chamadoChamado a partir do WMS6069 ou WMS6070)
Quando for executada pela convocação ativa, a tarefa de reconferência deverá ser executada a partir da tela de endereços, pois a ordem de serviço é gerada por item, e um item pode se encontrar em mais de um endereço para ser reconferido.
Além disso, os endereços com reconferência pendente deverão ser filtrados por usuário, conforme parametrização da convocação ativa e que foi atribuído ao usuário.
WMSR139 -
RNLRNL Geração/Exclusão e Atualização de
pendência de convocação ativa.Pendência de Convocação Ativa
Criar funções para:
- Geração de pendência de convocação ativa de reconferência da expedição com base em Ordem de Serviço/Atividade.
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 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.
- Criar uma nova função wmsr139_gera_pendencia_conv_ativa_reconferencia_exped_os.
Esta função deverá receber como parâmetro empresa(l_empresa), ordem de serviço(l_os), e modo de exibição de mensagem(l_modo_exibicao_msg).
Com base no código da OS recebida por parâmetro a função deverá gerar novos registros na wms_conv_ativa. Utilizar consulta SQL a seguir para obter todas as informações necessárias para inclusão dos novos registros na wms_conv_ativa. Retornar TRUE em caso de sucesso e FALSE em caso de erro.
- Criar uma nova função wmsr139_gera_pendencia_conv_ativa_reconferencia_exped_os.
Bloco de código language cpp collapse true --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.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, 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 = 'AV' AND wms_os_ativ_executor.ordem_servico = 'FIL16053014455322' AND wms_os_ativ_executor.ativ = 'AT0026' 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 = 'AV' AND wms_ordem_servico_ativ.ordem_servico = 'FIL16053014455322' AND wms_ordem_servico_ativ.ativ = 'AT0026' AND wms_tip_processo.conv_ativa_atividade = 20 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 = 'AV' AND cv.ordem_servico = 'FIL16053014455322' AND cv.ativ = 'AT0026' 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
- Exclusão de pendência de convocação ativa de reconferência.
Criar uma nova função wmsr139_exclui_pendencia_conv_ativa_reconferencia_exped_os. Esta
Esta função deverá receber como parâmetro empresa(l_empresa), ordem de serviço(l_ordem_servico), atividade(l_ativ), e modo de exibição de mensagem(l_modo_exibicao_msg).
Com base no código da ordem de serviço e atividade recebido por parâmetro a função deverá excluir o(s) registro(s) da wms_conv_ativ. Retornar TRUE quando sucesso e FALSE caso ocorra alguma falha durante o processamento. - Ajuste de pendência de convocação ativa de reconferência com base em Ordem de Serviço/Atividade.
Criar uma nova função wmsr139_ajusta_pendencia_conv_ativa_reconferencia_exped_os_ativ. Esta
Esta função deverá receber como parâmetro empresa(l_empresa), ordem de serviço(l_ordem_servico), atividade(l_ativ), e modo de exibição de mensagem(l_modo_exibicao_msg).Com base no código da ordem de serviço e atividade recebido por parâmetro a função deverá:- Excluir os registros de pendência de convocação ativa que possuam usuário executor onde este usuário executor não possua mais processos de movimento em aberto para a ordem de serviço/atividade.
- Excluir os registros de pendência de convocação ativa que não possuam usuário executor e também não existam mais processos de movimento em aberto e sem usuário executor para a ordem de serviço/atividade.
- Incluir novo registro de pendência de convocação ativa por ordem de serviço/atividade e usuário executor quando existir algum processo de movimento em aberto com usuário executor para a ordem de serviço/atividade e que ainda não possua pendência de convocação ativa.
Incluir novo registro de pendência de convocação ativa por ordem de serviço/atividade sem executor quando existir algum processo de movimento em aberto sem usuário executor para a ordem de serviço/atividade e que ainda não possua pendência de convocação ativa.
Bloco de código language cpp title Sugestão de comandos SQL collapse true --exclui registros da convocacao ativa(wms_conv_ativa) onde: ------ usuario executor da convocação ativa não exista em nenhum processo de movimento das ordens de serviço/atividade processadas ------ usuario executor da convocação ativa esteja nulo e não existam processos de movimento das ordens de serviço/atividade processadas pendentes de alocação DELETE FROM wms_conv_ativa WHERE wms_conv_ativa.empresa = 'AV' AND wms_conv_ativa.ordem_servico = 'FIL16053014455322' --AND wms_conv_ativa.atividade = l_atividade AND wms_conv_ativa.conv_ativa_atividade = 20 AND (( wms_conv_ativa.usuario_executor IS NOT NULL AND NOT EXISTS (SELECT DISTINCT 1 FROM wms_reconf_exped_apontamento INNER JOIN wms_reconferencia_expedicao ON wms_reconferencia_expedicao .empresa = wms_reconf_exped_apontamento.empresa AND wms_reconferencia_expedicao.reconferencia_expedicao = wms_reconf_exped_apontamento.reconferencia_expedicao AND wms_reconferencia_expedicao.ordem_servico = 'FIL16053014455322' WHERE wms_reconf_exped_apontamento.empresa = 'AV' AND wms_reconf_exped_apontamento.usuario = wms_conv_ativa.usuario_executor)) OR (wms_conv_ativa.usuario_executor IS NULL AND NOT EXISTS (SELECT DISTINCT 1 FROM wms_reconf_exped_apontamento INNER JOIN wms_reconferencia_expedicao ON wms_reconferencia_expedicao .empresa = wms_reconf_exped_apontamento.empresa AND wms_reconferencia_expedicao.reconferencia_expedicao = wms_reconf_exped_apontamento.reconferencia_expedicao AND wms_reconferencia_expedicao.ordem_servico = 'FIL16053014455322' WHERE wms_reconf_exped_apontamento.empresa = 'AV'))) CALL wmsr139_gera_pendencia_conv_ativa_reconferencia_exped_os(l_empresa, l_ordem_servico, l_atividade, l_modo_exibicao_msg)
- Finalização de pendência de convocação ativa com base em Ordem de Serviço/Atividade. Criar uma nova função wmsr139_finaliza_pendencia_conv_ativa_reconferencia_exped. Esta função deverá receber como parâmetro empresa(l_empresa), transação da convocação ativa (l_trans_conv_ativa), ordem de serviço(l_ordem_servico), atividade(l_ativ), e modo de exibição de mensagem(l_modo_exibicao_msg). Com base na transação da convocação ativa recebida por parâmetro a função deverá:
Caso a transação da pendência de convocação ativa (l_trans_conv_ativa) não seja nulo, incluir o registro de pendência de convocação ativa no histórico (wms_conv_ativa_historico).
Bloco de código language cpp title Sugestão de comandos SQL collapse true INSERT INTO wms_conv_ativa_historico ( empresa,trans_conv_ativa,ctr_ent_sai_veic_docum,ordem_servico,ativ,tip_classe_operacao,conv_ativa_atividade,tip_processo, dat_hor_inclusao,usuario_alocacao,dat_hor_alocacao_executor,usuario_executor,deposit,endereco_origem,endereco_destino) SELECT empresa,trans_conv_ativa,ctr_ent_sai_veic_docum,ordem_servico,ativ,tip_classe_operacao,conv_ativa_atividade,tip_processo, dat_hor_inclusao,usuario_alocacao,dat_hor_alocacao_executor,usuario_executor,deposit,endereco_origem,endereco_destino FROM wms_conv_ativa WHERE empresa = l_empresa AND trans_conv_ativa = l_trans_conv_ativa UPDATE wms_conv_ativa_historico SET dat_hor_fim = l_data_hora_atual WHERE empresa = l_empresa AND trans_conv_ativa = l_trans_conv_ativa
Caso a transação da pendência de convocação ativa (l_trans_conv_ativa) não seja nulo, excluir o registro do controle de pendência de convocação ativa (wms_conv_ativa).
Bloco de código language cpp title Sugestão de comandos SQL collapse true DELETE FROM wms_conv_ativa WHERE empresa = l_empresa AND trans_conv_ativa = l_trans_conv_ativa
Caso a transação da pendência de convocação ativa (l_trans_conv_ativa) não seja nulo e ordem de serviço(l_ordem_servico) e atividade(l_atividade) sejam nulos, obter ordem de serviço(l_ordem_servico) e atividade(l_atividade) da pendência de convocação ativa.
Bloco de código language cpp title Sugestão de comandos SQL collapse true SELECT ordem_servico, atividade INTO l_ordem_servico, l_atividade FROM wms_conv_ativa WHERE empresa = l_empresa AND trans_conv_ativa = l_trans_conv_ativa
- Por fim, independente de ter ou não um código de transação de pendência de convocação ativa(l_trans_conv_ativa), caso a ordem de serviço(l_ordem_servico) e atividade(l_atividade) não sejam nulos, realizar chamada a função wmsr139_ajusta_pendencia_conv_ativa_reconferencia_exped_os_ativ passando ordem de serviço e atividade.
- Retornar TRUE quando sucesso e FALSE caso ocorra algum ERRO durante o processamento.
- Criar transação de banco de dados para englobar todos os passos acima.
WMSR44 - Geração da ordem de serviço de reconferência
Alterar a função wmsr44_inclui_reconferencia().
- Se ainda não existir ordem de serviço de reconferência para o item, após a chamada da função wmsr44_geracao_ordem_servico_reconf(), se o retorno for TRUE, deverá gerar a pendência de convocação ativa, chamando a função wmsr139_gera_pendencia_conv_ativa_reconferencia_exped_os().
WMS6430 - Central do planejador
- WMS643402 – Alocar
- WMS643403 - Desalocar
- WMS643404 – Alocação direta/Realocação direta
- Excluir, atualizar o executor e gerar novas pendências de convocação ativa com base nas operações de alocação, desalocação e realocação das atividades de reconferência da expedição.
- Para as funções acima efetuar os mesmos tratamentos de convocação ativa feitos detalhados em ER LOGWMS01-831 ME 15.8.1 - Ressuprimento BRA e desenvolvimentos anteriores da convocação ativa.
WMS6631 - Alocação de recurso
- WMS663107a
- WMS663107b
- WMS663107c
- Excluir, atualizar o executor e gerar novas pendências de convocação ativa com base nas operações de alocação, desalocação e realocação das atividades de reconferência da expedição.
- Para as funções acima efetuar os mesmos tratamentos de convocação ativa feitos detalhados em ER LOGWMS01-831 ME 15.8.1 - Ressuprimento BRA e desenvolvimentos anteriores da convocação ativa.
Este documento é material de especificação dos requisitos de inovação, trata-se de conteúdo extremamente técnico. |
---|