Páginas filhas
  • ER_PCREQ-6068_Permitir_Filtrar_e_Ordenar_Movimentos_de_Separacao

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.                                                             

  

Permitir

filtrar

Filtrar e

ordenar movimentos

Ordenar Movimentos de

separação

Separação

Informações Gerais

 

Especificação

Produto

Logix

Módulo

Wms

Segmento Executor

Distribuição e Logistica

Projeto1

IRM1

Requisito1

Subtarefa1

PDRDL-7733

Chamado2

 

Release de Entrega Planejada

12.1.911

Réplica

Sim

País

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

(  ) USA  (  ) Colombia   (  ) Outro _____________.

Outros

<Caso necessário informe outras referências que sejam pertinentes a esta especificação. Exemplo: links de outros documentos ou subtarefas relacionadas>.

   Legenda: 1 – Inovação 2 – Manutenção (Os demais campos devem ser preenchidos para ambos os processos). 

Objetivo

Permitir ao operador filtrar e ordenar os movimentos de separação, proporcionando maior agilidade na operação.

  Será

criada uma opção Serão criadas 2 novas opções para filtrar e ordenar os movimentos, onde estarão disponíveis para filtro os campos: Código de barras do endereço, coordenada 1, coordenada2, coordenada3, coordenada4. :

1 - F11/ CTRL-D - Ordenação padrão: Ao acionar essa funcionalidade, o operador poderá escolher a ordem de exibição dos movimentos de forma ascendente ou decrescente.

2 - F9/ CTRL-T - Ordenação por posicionamento: Durante Durante o processo de separação o usuário terá a opção de indicar bipar o código de barras do endereço mais próximo em que ele se encontra, para então filtrar os movimentos de separação associados a uma das coordenadas escolhidas (Bloco, Rua, Coluna, Andar, etc) através de uma nova função "Filtrar"Além disso, o usuário, também terá a opção "Ordenar" para escolher a ordem de exibição dos movimentos, utilizando informações como Coordenadas do endereço, código de barras do endereço e código do produto podendo efetuar a ordenação de forma ascendente ou descendente.ao endereço bipado.

Configuração do novo Parâmetro:

Um novo parâmetro foi criado no log0086 "wms_coord_filt_ord_sep", onde deve ser informado as coordenadas que devem ser utilizadas para efetuar filtros e ordenação nos movimentos de separação no wms6214. Nesse novo parâmetro o usuário poderá informar os seguintes valores:

  • "1" - Coordenada 1
  • "2" - Coordenada 2
  • "3" - Coordenada 3
  • "1;2" - Coordenada 1 e 2
  • "1;2;3" - Coordenada 1, 2 e 3
  • "1;3" - Coordenada 1 e 3
  • "2;3" - Coordenada 3

Regra 1 – Funcionamento padrão:

  1. Ao selecionar a lista de separação o usuário deverá ter uma opção para filtrar os endereços. Opção F9
  2. Ao acionar a nova funcionalidade, o usuário deverá bipar o endereço onde ele se encontra fisicamente.
  3. 3.      O programa irá verificar o novo parâmetro wms_maior_coord_filt_ord_sep, para saber a partir de qual coordenada deve verificar quais as coordenadas deve utilizar para filtro e ordenação para então identificar onde o operador se encontra.
  4. Digamos que o novo parâmetro está marcado com a coordenada 2 para a maior coordenada a filtrar e ordenar.
  5. Primeiro o operador deverá bipar o endereço onde ele se encontra.
  6. Então o operador bipou o endereço 32, cujas coordenadas são coord_1 = “1” coord_2 = “A” coord_3 = “8” coord_4 = 1, então como está parametrizado para maior coordenada do filtro ser a coordenada "2", deverá montar 2 Selects um Select na tabela wms_endereco filtrando pelas coordenadas desse endereço bipado para saber a localização do operador nos endereços, ou seja no filtro where_clause do select ficaria assim: where , adicionar a condição coord_1 = “1” and coord_2 = “A”.
  7. O primeiro select deve buscar o código de barras Usando a próxima coordenada depois do parâmetro(no caso seria coordenada 3), o select deve buscar a coordenada do endereço Máximo com esses filtros, e comparar para saber se o endereço encontrado no select é o mesmo bipado, se for igual, quer dizer que ele está no final, então a ordenação dos movimentos da lista deverá ocorrer de forma decrescente para que ele possa voltar, sendo que deve pegar a próxima coordenada depois do parâmetro, então no exemplo o select deve ficar assim: Select Max (coordenada_3) from wms_endereco where empresa = "empresa" and coordenada_2= 'A', com o resultado comparar com a coordenada 3 para saber se é a mesma coordenada, caso for a mesma o operador está no último endereço dessas coordenadas, então no order by dos movimentos, incluir o "DESC" para trazer os endereços por ordem decrescente a partir da coordenada  3 que é a próxima depois da coordenada parametrizada (wms_maior_coord_filt_sep). Gravar uma variável informando que é o endereço máximo.
  8. Caso não seja o Maximo, montar um select similar porém buscando o endereço Minimo.Caso seja o mínimo quer dizer que está no começo , então deverá ordenar como já é feito hoje em dia de forma ascendente. Gravar uma variável também.
  9. 10.  No order by do select dos movimentos de separação deverá ver qual das duas variáveis está preenchida e verificar o parâmetro wms_maior_coord_filt_ord_sep,  para  para saber onde aplicar o order by e o filtro.
  10. No exemplo acima, está marcado coordenada 2, então no where_clause deve incluir a coordenada 2 e no order by, na coordenada 2a coordenada 3, (no order by sempre uma a mais da parametrizada para trazer corretamente os endereços), deverá incluir ASC ou DESC de acordo com os selects de máximo ou mínimo.
  11. Caso não seja nenhum dos dois, manter o order by padrão do programa: coorden_1, coorden_2, coorden_3, coorden_4, e não aplicar nenhum tipo de filtro.
  12. 13.  Após criar a regra de ordenação, deverá verificar se no wms6499 foi marcado algum filtro. As coordenadas marcadas no wms6499 deverão ser aplicadas no select e gravadas em uma variável modular. Para fazer isso, buscar na tabela wms_filtro_coletor_atributo onde wms_filtro_coletor_atributo.rotina = ‘wms6214’ AND wms_filtro_coletor_atributo.mostra_filtro = 'S'. E Montar um where_clause das coordenadas marcadas, de acordo com as coordenadas do endereço bipado.
  13. 14.  Caso no wms6499 esteja parametrizado que deve filtrar pela coordenada 1 e coordenada 2. Então deverá montar um  where_clause encima da coordenada 1 e 2 do endereço bipado, assim como é feito o filtro dos select max e min.
  14. Após efetuar todas as regras, deverá ser criado um filtro de acordo com o endereço bipado que indica a posição em que o operador se encontra, e através do parâmetro wms_coord_filt_ord_sepverificar até qual coordenada deverá ser aplicada o filtro, de acordo com as coordenadas do endereço bipado.
  15. 15.  Caso o usuário queira fazer uma ordenação diferente das regras selecionadas acima, então ele deve acionar a nova opção F6 – F11 – Ordenação dos movimentos.
  16. 16.  Nessa nova tela ele pode informar qual a ordenação que ele quer usar, assim irá ignorar a regra de MAX/MIN.
  17. 17.  Então acionando a função F6F11, ele pode marcar que quer ordenar sempre, coorden_1 Asc, coorden_2 Asc, Coorden_3 Des, coorden_4 Asc.
  18. 18.  Ao informar essa nova ordenação, esses parâmetros deverão ser gravados na tabela wms_parametro_usuario, assim irá sempre ordenar dessa forma. A partir do momento que acionou essa nova função, não deverá mais fazer as validações de MAX/MIN e sempre respeitar essa ordenação informada.
  19. 19.  Assim deverá ler novamente os movimentos à serem separados aplicando os filtros e o order by.
  20. 20.  Ao terminar de separar os movimentos filtrados, deverá novamente ler a lista de separação, zerando a variável que guarda o where_clause do wms6499 , e trazendo todos os movimentos pendentes.

 

Regra 2

  1. 1.     Caso o operador chame a função do filtro, e não informe nenhum endereço e confirme.
  2. 2.     Verificar a tabela wms_parametro_usuario se ele tem alguma ordenação e aplica-la no select, sem filtros.

 

Regra 3 – Nenhum filtro informado no wms6499:

Caso não haja nenhum filtro informado e marcado no wms6499 para o programa wms6214, ao acionar a opção F9, deverá gerar a seguinte mensagem: “Não há
  1. filtros
parametrizados, favor verificar o programa wms6499”
  1. .

 

Alterações nos programas:

Wms6214:

       Na função wms6214_exibe_array_movimentos disponibilizar duas novas opções: F9/Ctrl-F - Filtrar e F6T - Posicionar, F11/Ctrl-D - Ordenar .e CTRL - F Filtrar

  • Função F9/Ctrl-F FiltrarT Posicionar:

1 – Abrir uma nova tela conforme protótipo 1, onde o operador deverá ler o código de barras do endereço.

2 – Essa nova tela deverá ter duas opções: “Enter/Esc – Confirmar, Ctrl-c Cancelar”

3 - Após confirmar, deverá verificar se foi informado algum endereço, e alimentar a variável m_endereco_filtro.

4 – Chamar a nova função wms6214_monta_filtros_movimentos para montar um where_clause_filtro.

A nova função deverá funcionar da seguinte maneira:

a)     Verificar se a variável m_endereco_filtro foi informada, caso não foi informada, limpar a variável m_where_clause_end e chamar wms6214_exibe_array_movimentos.

b)    Caso a variável m_endereco_filtro estiver preenchida, buscar na tabela wms_endereco as coordenadas do endereço pelo código de barras informado.

c)     Verificar novo parametro " wms_maior_coord_filt_sep", até qual coordenada deverá fazer o filtro, digamos que no parâmetro está até a coordenada 2, então alimentar variável m_where_clause_end e incluir coord 1 e coord 2. Exemplo: Vamos dizer que o operador bipou um código de barras '1234', com esse código você deverá ler a tabela WMS_ENDERECO onde o código de barras (e não o código do endereço) seja "1234" vamos dizer que você encontrou o endereço de código "9988", que tem as coordenadas 1='A' e coodernada coordernada 2= '1' e está parametrizado para filtrar até a coordenada 2.

d)    Então deve chamar novamente a função wms6214_exibe_array_movimentos para atualizar a lista de movimentos.

e)     Então deve chamar novamente a função wms6214_exibe_array_movimentos para atualizar a lista de movimentos.

 

Caso acione a tela de filtro, e não bipe um endereço, então terá que trazer todos os endereços, sem buscar max, min,

  • Função F6F11/Ctrl-D Ordenar

1 - Abrir o nova tela wms62148.per onde o usuário poderá selecionar a ordem em que os movimentos serão apresentados. Esta tela deverá conter uma grid com 3 campos, conforme protótipo 12.

Na grid os três campos são: 1-Código 2-Descrição 3-Forma ordenação. Somente o primeiro e o terceiro campo estarão disponíveis para edição.

 O campo código, deverá conter um zoom com as opções das coordenadas 1 a coordenada 4 e de Item. Para buscar as coordenadas do zoom, criar nova função wms6214_busca_desc_coordenadas_zoom(). Dentro da função utilizar:

a - CALL log2250_busca_parametro(mrp_wmscod_tela.empresa,'des_coorden_1')
RETURNING l_des_coorden_1, l_status 

b - CALL log2250_busca_parametro(mrp_wmscod_tela.empresa,'des_coorden_2')
RETURNING l_des_coorden_2, l_status 

c - CALL log2250_busca_parametro(mrp_wmscod_tela.empresa,'des_coorden_3')
RETURNING l_des_coorden_3, l_status 

d - CALL log2250_busca_parametro(mrp_wmscod_tela.empresa,'des_coorden_4')
RETURNING l_des_coorden_4, l_status 

2 - O Campo Forma ordenação deverá conter duas opções: 1-Ascendente 2-Descendente.

3 - Não deverá permitir duplicar os campos.

4 - A sequência de ordenação será conforme a ordem selecionada na grid.

5 – Buscar na tabela wms_parametro_usuario, filtrando pela empresa =p_cod_empresa, usuário =p_user e (parâmetro =’coordenada’coorden_1’ or parâmetro=’coordenada’coorden_2’ or parâmetro=’coordenada’coorden_3’ or parâmetro = ‘coordenada‘coorden_4’). Caso encontre algum registro ordenar os campos na grid conforme o campo sequencia_parametro, e a forma de ordenação conforme o campo val_parametro. Caso não encontre registros, trazer como padrão a ordenação coorde_1, coorde_2, coorde_3, coorde_4, todos com a forma de ordenação “A”.

6 - Esse novo programa deverá alimentar variáveis modulares que serão lidas dentro do wms6214 no cursor CQ_LISTA_MOVTOS antes de fazer o PREPARE para poder ordenar conforme informado.

7 - Os parâmetros de ordenação devem ser gravados na tabela wms_parametro_usuario, sendo que deverão ser gravados 4 registros. Os campos empresa, usuário e rotina deverão receber as variáveis p_cod_empresa, p_user, ‘6214’ para todos os 4 registros. Já o campo parâmetro devera receber, coordenada_1, coordenada_2, coordenada_3, coordenada_4. O campo sequencia_parametro deverá receber a sequência de ordenação e o campo val_parametro, a forma de ordenação sendo “A” ou “D”.

8 - Após sair da tela de filtros deve chamar novamente a função wms6214_exibe_array_movimentos para atualizar a lista de movimentos.

 

CTRL-F - Filtrar

1 - Chamar a função wmsr78_filtro_generico('WMS6214', 'Separacao') RETURNING l_status, m_where_filtro_generico. Sendo que a variável where retornada deve ser utilizada na query cq_lista_movtos.

 

Alteração na função wms6214_carrega_movimentos_lista.

Dentro da função wms6214_carrega_movimentos_lista, no cursor cq_lista_movtos verificar as variáveis  m_where_clause, e  m_where_clause_end, caso estejam preenchidas, incluir no where do cursor.

Também deve ser verificada as variáveis modulares de ordenação, e incluir no order by do cursor CQ_LISTA_MOVTOS caso estejam preenchidas. Caso contrário, deixar o order by como está.

Ao confirmar e voltar pra tela de movimentos, deverá atualizar a lista, ordenando conforme parametrizado. 

 

Wms6499 - Filtros genéricos

Na função wms6499_verifica_atributos antes do END FUNCTION, incluir INSERT para novos atributos conforme abaixo:

INSERT INTO wms_filtro_coletor_atributo (rotina, atributo, mostra_filtro, tabela_atributo, tip_dado, tamanho, descricao_exibicao, legenda, obrigatorio, val_inicial, considera_parcial, validacao)
VALUES ('WMS6214','COORDEN_1','N','WMS_ENDERECO','C','4','Coorden 1',null,'N',null,'N',null)

INSERT INTO wms_filtro_coletor_atributo (rotina, atributo, mostra_filtro, tabela_atributo, tip_dado, tamanho, descricao_exibicao, legenda, obrigatorio, val_inicial, considera_parcial, validacao)
VALUES ('WMS6214','COORDEN_2','N','WMS_ENDERECO','C','4','Coorden 2',null,'N',null,'N',null)

INSERT INTO wms_filtro_coletor_atributo (rotina, atributo, mostra_filtro, tabela_atributo, tip_dado, tamanho, descricao_exibicao, legenda, obrigatorio, val_inicial, considera_parcial, validacao)
VALUES ('WMS6214','COORDEN_3','N','WMS_ENDERECO','N','5','Coorden 3',null,'N',null,'N',null)

INSERT INTO wms_filtro_coletor_atributo (rotina, atributo, mostra_filtro, tabela_atributo, tip_dado, tamanho, descricao_exibicao, legenda, obrigatorio, val_inicial, considera_parcial, validacao)VALUES ('WMS6214','COORDEN_4','N','WMS_ENDERECO','N','5','Coorden 4',null,'N',null,'N',null)

LOG00086 - Parâmetros

  • Criar novo parâmetro no sistema:
    • Conversor: wms00524.cnv (fazer checkin deste conversor no projeto/tarefa):
  • Parâmetro:
    • Códigowms_maior_coord_filt_ord_sep
    • Descrição: "Maior coordenada para filtro de Coordenadas para filtrar e ordenar os movimentos para separação"
    • Área: 9 - LOGIX WMS
    • Sistema: 407 - LOGIX WMS
    • Rotina: 292
    • Tipo conteúdo: N - Numérico
    • Permitir nulo?: S
    • Case sensitive: NULL
      • Auto-incremento: N
      • Situação: A – Ativo
      • Efetuar replicação: N
      • Replicação opcional: N
      • Cliente: 105 – TOTVS
      • Valor padrão: 2
      • Comentário rodapé: NULL
      • Help: Após acionar o Filtrar na separação(wms6214), o programa irá verificar o novo parâmetro para saber a maior coordenada que deve utilizar para o filtro dos quais as coordenadas que devem ser utilizadas para filtrar e ordenar os movimentos para separação.

Rotina

Tipo de Operação

Opção de Menu

Regras de Negócio

wms6214

[Alteração]

 

 

wms6499

[Alteração]

  

 

Protótipo de Tela

 Protótipo Protótipo 1

Image RemovedImage Added

 

 

 

 Protótipo 2

Image Added

 

 

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