Páginas filhas
  • ER LOGWMS01-2183 ME 15.8.2 - Reconferência

 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

IRM1

LOGWMS01-545 - Obtendo detalhes do item... STATUS

Requisitos1

LOGWMS01-2183 - Obtendo detalhes do item... STATUS

Subtarefas1

LOGWMS01-2196 - Obtendo detalhes do item... STATUS

País

( x ) Brasil  (  ) Argentina  (  ) México  (  ) Chile  (  ) Paraguai  (  ) Equador  (  ) USA  (  ) Colômbia   (  ) Outro _____________.

 

 

ATENÇÃO!

Os requisitos tratados nesta 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.

As Especificações dos Requisitos de configuração e gerenciamento estão em:


 

Objetivo

Alterar os programas das atividade de reconferência da expedição para:

  • Pular as telas iniciais dos programas.
  • Atualizar o controle de convocação ativa ao finalizar as atividades.

 

Definição da Regra de Negócio 
 


RotinaTipo de OperaçãoOpção de MenuRegras 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 pendência deverá 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().

  1. 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).
  2. 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().
  3. 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.
    1. Usar o select abaixo para identificar se existe algum endereço que o usuário tenha acesso.
    2. 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.
    3. 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 terá acesso a nenhum endereço.

 

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


Importante!

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ção (Chamado 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 - RNL Geração/Exclusão e Atualização de Pendência de Convocação Ativa

Criar funções para: 

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

(informação) 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.

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

 

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

  3. 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 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á:
    1. 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.
    2. 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.
    3. 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.
    4. 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.

      Sugestão de comandos SQL
      --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)
  4. 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á:

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

      Sugestão de comandos SQL
      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
    2. 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).

      Sugestão de comandos SQL
      DELETE
         FROM wms_conv_ativa
        WHERE empresa = l_empresa
              AND trans_conv_ativa = l_trans_conv_ativa
    3. 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.

      Sugestão de comandos SQL
      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
    4. 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.

    5. Retornar TRUE quando sucesso e FALSE caso ocorra algum ERRO durante o processamento. 
    6. 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 

  1. WMS643402 – Alocar
  2. WMS643403  Desalocar
  3. WMS643404 – Alocação direta/Realocação direta
    1. 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.
    2. 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

  1. WMS663107a
  2. WMS663107b
  3. WMS663107c
    1. 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.
    2. Para as funções acima efetuar os mesmos tratamentos de convocação ativa 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.