Páginas filhas
  • ER LOGWMS01-829 ME 15.6.1 Convocação Ativa - Ajustes nos controles da convocação ativa BRA

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

 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

Jira
serverJIRA Produção
columnskey,summary,type,created,updated,due,assignee,reporter,priority,status,resolution
serverId0c783de1-186e-383b-975c-a1acd7d76cb5
keyLOGWMS01-545

Requisito/Story/Issue1

Jira
serverJIRA Produção
columnskey,summary,type,created,updated,due,assignee,reporter,priority,status,resolution
serverId0c783de1-186e-383b-975c-a1acd7d76cb5
keyLOGWMS01-829

Subtarefa1

Jira
serverJIRA Produção
columnskey,summary,type,created,updated,due,assignee,reporter,priority,status,resolution
serverId0c783de1-186e-383b-975c-a1acd7d76cb5
keyLOGWMS01-1877

País

( x ) Brasil  (  ) Argentina  (  ) Mexico  (  ) Chile  (  ) Paraguai  (  ) Equador

(  ) USA  (  ) Colombia   (  ) Outro _____________.

Aviso
titleATENÇÃO!

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
titleSUGESTÃO

Os arquivos originais(dinâmicos) utilizados e aqui apresentados em formato de imagem(estático) estão anexos a este documento.

Objetivo

  • Criar novos e ajustar controles para 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;
    • Excluir as colunas endereço origem e destino da tabela de controle das pendências de convocação ativa;

  • Permitir que seja realizada convocação ativa da atividade de inventário.
    • Gerar pendência de convocação ativa ao liberar primeira contagem do inventário quando parâmetro que bloqueia atividade de inventário pública estiver desabilitado;
    • Atualizar pendência de convocação ativa ao liberar contagens do inventário;
    • 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;
    • Preparar o programa de convocação ativa para tratar usuário executor em branco da mesma forma que usuário executor nulo (NULL);
    • Atualizar registros de pendência de convocação ativa ao iniciar/finalizar contagem de inventário através do coletor de dados.


Definição da Regra de Negócio

  1. Criar novos controles para convocação ativa.
    1. Objetivo: Gravar programa originador da criação da pendência de convocação ativa;
      • Segue abaixo passos para atingir o objetivo proposto:
      1. 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;
      2. 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
        titleClique 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.

         

    2. 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:
      1. Executar conversor mencionado no item 1. a) i. para aplicar as alterações das tabelas;
      2. 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
        titleClique 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.

    3. 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:
      1. 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:
      1. 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.
      2. 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.
      3. Executar conversor mencionado no item 1. a) i para aplicar as alterações das tabelas, e alterar as funções abaixo para implementar os itens i) e ii)

        Expandir
        titleClique 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.

    4. 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:
      1. 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 referente 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 única utilização destes campos é no programa da convocação ativa (WMS6743) para apresentar as informações ao usuário 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:
      1. 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:
        • Abaixo funções a serem removidas e/ou alteradas:

          Expandir
          titleClique aui 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)

           

          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

          Removar chamada para a função wmsr139_atualiza_end_origem_destino_conv_ativa.

           

  2. Permitir que seja realizada convocação ativa da atividade de inventário.
    1. 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:
      1. 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 para atingir o objetivo proposto:
      1. Criar função wmsr139_gera_pendencias_conv_ativa_plano_inventario. Esta 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). Com base nestas informações e considerando o relacionamento 1x1 do inventário e ordem de serviço, a função deverá gerar novos registros na wms_conv_ativa para cada ordem de serviço, atividade e usuário alocado (caso exista) do plano de inventário. Por ser uma função RNL que pode será chamada de outros pontos, ao gerar registros para convocação ativa onde já existam usuários alocados, considerar as duas possibilidades de alocação, por plano(sup_plan_inv_ativ_executore por endereço(sup_plan_inv_ativ_endereco). A função deverá retornar TRUE quando sucesso e FALSE em caso de algum erro de processamento. Transacionar a operação realizando os mesmos controles existentes para outras funções do fonte wmsr139.
        • Origem das informações para inclusão de novo registro em wms_conv_ativa:

          Expandir
          titleClique 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

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

    2. Objetivo: Atualizar/Excluir pendências de convocação ativa ao gerar novas contagens.
      • A implementação anterior já atende este objetivo.

    3. Objetivo: Atualizar/Excluir registros de pendência de convocação ativa ao alocar/desalocar usuário no plano de inventário;
      • Contextualização:  
      1. Conforme visto nos dois últimos itens, 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 para atingir o objetivo proposto:
      1. 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.
      2. 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.
      3. Alterar a função sup2033_after_confirm_toolbar para que após a confirmação da alocação, seja por endereço ou por plano, sejam atualizadas as pendências de convocação ativa do plano através da nova função wmsr139_ajusta_pendencias_conv_ativa_plano_inventario. Condicionar a chamada da função a utiliza_conv_ativa = 'S'.
    4. Excluir pendências de convocação ativa ao cancelar plano de inventário;
    5. Preparar o programa de convocação ativa para tratar usuário executor em branco da mesma forma que usuário executor nulo (NULL);
    6. Atualizar registros de pendência de convocação ativa ao iniciar/finalizar contagem de inventário através do coletor de dados.

 

Resumo dos Objetos Alterados/Criados.

RotinaTipo de OperaçãoOpção de Menu
wmsr139[Alteração]<função de regra de negócio>
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

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

wms6743[Alteração]Logix → Logística → WMS → Coletores → Diversos → Convocação Ativa
wms6180[Alteração]

<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

wms6177[Alteração]Logix → Logística → WMS → Movimentação armazém Planejamento de armazenagem
sup20007[Alteração]Logix → Logística → WMS → Inventário  → SUP2000 - Plano de inventário → Contagens → Gerar
sup2033[Alteração]Logix → Logística → WMS → Inventário  → SUP2000 - Plano de inventário → Alocação de recursos Confirmar


Estrutura de Menu

 

Modelo de Dados

  • wms_conv_ativa 

OperaçãoNomeDescriçãoTipoObrigatório
inclusão de colunaprograma_origemPrograma que criou o registroCHAR(08)Sim
inclusão de colunaprograma_alteracaoÚltimo programa que atualizou o registroCHAR(08)Não
exclusão de colunaendereco_origemEndereço origemINTEGERNão
exclusão de colunaendereco_destinoEndereço destinoINTEGERNão

 

  • wms_conv_ativa_historico

OperaçãoNomeDescriçãoTipoObrigatório
inclusão de colunaprograma_origemPrograma que criou o registroCHAR(08)Sim
inclusão de colunaprograma_alteracaoÚltimo programa que atualizou o registroCHAR(08)Não
inclusão de colunaprograma_exclusaoPrograma que realizou exclusão do registroCHAR(08)Sim
inclusão de colunadat_hor_exclusaoData e hora em que o registro foi excluídoDATETIME YEAR TO SECONDSim
exclusão de colunaendereco_origemEndereço origemINTEGERNão
exclusão de colunaendereco_destinoEndereço destinoINTEGERNão



 Este documento é material de especificação dos requisitos de inovação, trata-se de conteúdo extremamente técnico.