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.                                                             

  

(Obrigatório)

Permitir Filtrar e Ordenar Movimentos de 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.

9

11

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

(Obrigatório)

Objetivo

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

 

(Obrigatório)

Serão criadas 2 novas opções para filtrar e ordenar os movimentos:

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

Definição da Regra de Negócio

 

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

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 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
uma das coordenadas escolhidas (Bloco, Rua, Coluna, Andar, etc) através de uma nova função "Filtrar"
  1. 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. O programa irá verificar o novo parâmetro wms_coord_filt_ord_sep, para saber 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 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 coordenada do filtro ser a coordenada "2", deverá montar 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 where_clause do select, adicionar a condição coord_2 = “A”.
  7. 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, 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, quer dizer que está no começo então ordenar como já é feito hoje em dia de forma ascendente.
  9. 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_coord_filt_ord_sep,  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, a 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.
  12. 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.
  13. Caso o usuário queira fazer uma ordenação diferente das regras selecionadas acima, então ele deve acionar a nova opção F11 – Ordenação dos movimentos.
  14. Nessa nova tela ele pode informar qual a ordenação que ele quer usar, assim irá ignorar a regra de MAX/MIN.
  15. Então acionando a função F11, ele pode marcar que quer ordenar sempre, coorden_1 Asc, coorden_2 Asc, Coorden_3 Des, coorden_4 Asc.
  16. 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.
  17. Assim deverá ler novamente os movimentos à serem separados aplicando os filtros e o order by.
  18. Ao terminar de separar os movimentos filtrados, deverá novamente ler a lista de separação, zerando a variável que guarda o where_clause, e trazendo todos os movimentos pendentes.

 

Regra 2

  1. Caso o operador chame a função do filtro, e não informe nenhum endereço e confirme.
  2. Verificar a tabela wms_parametro_usuario se ele tem alguma ordenação e aplica-la no select, sem filtros
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
  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 Filtrar:

                     1 - Chamar função CALL wmsr78_filtro_generico('WMS6238', 'Ressuprimento') RETURNING l_status, m_where_clause. Que irá abrir a tela de filtros. 

                     2 - Após informar os filtros chamar a função: 

                           CALL wmsr78_retorna_valor_atributo('WMS6238','COD_BARRAS_ENDERECO') RETURNING m_endereco

  • T 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                      3 - Verificar se a variável m_endereco estará preenchida. Caso esteja preenchida, deverá chamar uma nova função wms6214_monta_filtros_movimentos para montar um                                      wherewhere_clause_filtro.

                           A 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                               a - Buscar na tabela wms_endereco as coordenadas do endereço pelo código de barras informado.

                              b - c)     Verificar novo parametro "XXXXXX 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                                                        mm_where_clause_end e incluir coord 1 e coord 2. ExemploExemplo: Vamos dizer que o operador bipou um código de barras '1234', com  com esse código você deverá ler a tabela                                        WMSdeverá ler a tabela WMS_ENDERECO onde o código de barras (e não o código do endereço) seja "1234" vamos  vamos dizer que você encontrou o endereço de código "9988", que tem as                                              coordenadas coordenadas 1='A' e coodernada coordernada 2= '1' e está parametrizado para filtrar até a coordenada 2.

                              c - d)    Então deve chamar novamente a função wms6214função wms6214_exibe_array_movimentos para atualizar a lista de movimentos.                              d - Caso a variável m_endereco esteja nula, verificar se a variável m_where_clause possui algum dado, se possuir, quer dizer que algum outro filtro foi informado.       

                      e - e)     Então deve chamar novamente a função wms6214funçã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 F11Função F6/Ctrl-D Ordenar

            1 - Abrir 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 1.protótipo 2.

Na                   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 nova função wms6214_busca_desc_coordenadas_zoom()dentro . Dentro da função utilizar:

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

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

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

d - CALL log2250_busca_parametro(mrp_wmscod_tela.empresa,'des_coorden_4')
RETURNING l_des_coorden_4, l_status 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 =’coorden_1’ or parâmetro=’coorden_2’ or parâmetro=’coorden_3’ or parâmetro = ‘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

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

cursos

cursor.

Também deve ser

verificadas

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','COD_BARRAS_ENDERECO','N','WMS_ENDERECO','C','20','Endereço',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_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: wms00XXX.cnv (fazer checkin deste conversor no projeto/tarefa):wmsXXXX.cnv - colar o conversor aquiwms00524.cnv
  • 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: verificar qual rotina292
    • 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:
    10
      • 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.
wms6499

Rotina

Tipo de Operação

Opção de Menu

Regras de Negócio

wms6214

[Alteração]

-

-

[Alteração]    

 

Opcional

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.