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

PCREQ-6068

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)

Definição da Regra de Negócio

 

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

Quando o usuário bipar o endereço o sistema automaticamente irá identificar em qual posição ele se encontra se está no começo meio ou fim da rua, e ordenar os movimentos de forma a facilitar o processo. De forma prática, se ele bipar o ultimo endereço da Rua, então o sistema irá ordenar os movimentos de forma descendente, assim ele não precisará ir no começo da rua para começar a separação.

 

Além disso, o usuário, também terá a opção de escolher a ordem de exibição dos movimentos, utilizando informações como Área/Subarea, 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        Na função wms6214_exibe_array_movimentos disponibilizar duas novas opções F6-Filtrar  F7-Ordenar.

Função F6 Filtrar: 

Chamar a função

     CALL wmsr78_filtro_generico('WMS6214', 'Filtro separação') RETURNING l_status, l_where_wmsr78

Essa função irá abrir uma tela para filtros genéricos (conforme alteração abaixo do wms6499). 

Após confirmar os filtros, verificar se a variável  l_where_wmsr78 está preenchida, então usa-la para filtrar.

Função F7 Ordenar

: F9/Ctrl-T - Posicionar, F11/Ctrl-D - Ordenar e CTRL - F Filtrar

  • Função F9/Ctrl-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 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 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 F11/Ctrl-D Ordenar

1 - Abrir o nova tela wms62148.per onde o usuário poderá selecionar a ordem em que os movimentos serão apresentadosNova opção, onde ao ser acionada. Abrir o novo programa o usuário poderá selecionar a ordem de ordanação. 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  O campo código, deverá conter um zoom com as opções das 6 coordenadas e item1 a coordenada 4 e de Item. Para buscar as coordenadas do zoom, criar nova função wms6214nova 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 

CALL log2250_busca_parametro(mr_wms_tela.empresa,'des_coorden_5')
RETURNING l_des_coorden_5, l_status 

CALL log2250_busca_parametro(mr_wms_tela.empresa,'des_coorden_6')
RETURNING l_des_coorden_6, 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 .

 

Dentro da função wms6214_carrega_movimentos_lista, verificar se a variável que grava o endereço na tela do filtro está preenchida. Caso esteja preenchida, 

verificar se o campo endereço foi informado, caso esteja preenchido, chamar uma nova função para montar o filtro dos endereços.

Nessa nova função primeiro vai ter que identificar o qual o endereço , filtrando pelo código de barras dele. Ao identificar o endereço, deverá pegar a coordenada que foi parametrizada para filtrar .. e utilizar como filtro para buscar os movimentos

exemplo

vamos dizer que você 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:

 

 

Ao iniciar o processo de separação em uma nova rua, o operador terá a opção de ordenar os movimentos de separação. No coletor ele irá acionar uma opção Fx então abrira uma nova tela onde o primeiro campo é o endereço, ele deverá bipar o primeiro endereço da Rua que está, então ele poderá selecionar a ordenação de forma ascendente ou decrescente dos movimentos de separação.

 

Ao confirmar e voltar pra tela de movimentos, deverá atualizar a lista, trazendo somente os endereços referente a rua que foi bipado o endereço na tela de filtros.

 

Como sugestão, armazenar o filtro de endereço e as ordenações em variáveis e na lista de movimentos buscar via função get.

 

As teclas de atalho serão ESC-Confirmar, Crtl-C – Cancela

 

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,'S',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,'S',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','4','Coorden 3',null,'N',null,'S',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','4','Coorden 4',null,'N',null,'S',null)

 

 

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. 

 

LOG00086 - Parâmetros

  • Criar novo parâmetro no sistema:
    • Conversor: wms00524.cnv
  • Parâmetro:
    • Códigowms_coord_filt_ord_sep
    • Descrição: "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 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]

-

-

wms62141

[Criação]

-

-

wms6499[Alteração]  

 

 

 

Opcional

Protótipo de Tela

 

wms62148.per

Image Removed

 

 

 

 

Protótipo 1

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