Páginas filhas
  • ER-LOGWMS01-54_Separacao_Informando_os_Dimensionais_Separados

 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 - Logística - Inovação

Projeto1

LOGWMS01

IRM1/Epic

LOGWMS01-36

Requisito1/Story

LOGWMS01-54

Subtarefa1

LOGWMS01-55

País

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

(  ) USA  (  ) Colombia   (  ) Outro _____________.

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


Objetivo

Permitir que ao realizar a retirada de endereços de picking sejam indicados os dimensionais separados, para garantir a rastreabilidade do estoque.


Definição da Regra de Negócio

Alterar a rotina de separação para que seja possível informar os dimensionais do item coletado, quando o mesmo possuir controle de dimensionais e o contrato do depositante, e o Cadastro de Itens indicar que os dimensionais devem ser informados (parametrização indicada em LOGWMS01-37).

 

Rotina

Tipo de Operação

Opção de Menu

Regras de Negócio

WMSR41 - RNL para tratamento das movimentações de picking

[Alteração]

 

-

WMS6214 - Separação via Coletor[Alteração]  
WMSR411/WMSR412/WMSR413[Novo] Tela

Parametrizações do Modo Solicitação SKU Separação

  1. Obriga leitura SKU: Atualmente quando está parametrizado este modo de separação é informada a etiqueta de identificação de estoque, ou, no caso de separação em picking sem o controle de identificação de estoque, a etiqueta de endereço e posteriormente deve ser efetuada a leitura da etiqueta EAN/SKU para cada SKU separado, não informando a quantidade, pois a quantidade separada é calculada automaticamente pela quantidade de itens por SKU. 
    Com a nova parametrização para informar os dimensionais na separação, a cada etiqueta EAN/SKU informada poderão ser informados os dimensionais do item (caso este tenha controle de algum dimensional) utilizando a tecla F11/Ctrl-R ou a cada quantidade parcial (Ctrl-P). Como pode ocorrer de estar sendo informado o mesmo dimensional para um movimento, e para evitar que tenha que ser digitada a mesma informação repetidamente, a partir da segunda entrada de dimensionais será sempre sugerida a informação de dimensionais anterior.

  2. Obriga informar quantidade: nesta modalidade de separação é informada a etiqueta de identificação de estoque ou, no caso de separação em picking sem o controle de identificação de estoque, a etiqueta de endereço, sendo posteriormente informada a quantidade separada, podendo ser realizada separação da quantidade total ou parcial. 
    Com a nova parametrização, após informar a quantidade separada serão solicitados os dimensionais do item (caso o item controle dimensionais). O estoque do dimensional do item no endereço de separação deverá atender a quantidade que foi informada.
  3. Somente pede confirmação: nesta configuração de separação é apenas informada a etiqueta de identificação de estoque ou, no caso de separação em picking sem o controle de identificação de estoque, a etiqueta de endereço. Posteriormente é apenas confirmada a quantidade de Itens/SKUs separados, não podendo haver alterações nem separação parcial. 
    Quando for utilizada a nova parametrização para informar os dimensionais do item na separação em picking, o funcionamento para esta opção será o mesmo da opção 2, pois não seria possível informar dimensionais diferentes para o mesmo movimento. 

WMS6214 - Separação Coletor

  • Após ser informada a quantidade separada deverá ser aberta a tela para informação dos dimensionais, caso o item controle algum dimensional e esteja sendo realizada a separação de picking com dimensionais.

Função wms6214_coleta_etiqueta_sku_item()  

  • Dentro do Input de etiquetas, se mr_movimento.funcao for igual a deverá testar se o parâmetro que indica se informa dimensionais no picking é igual S.
  • Se for, deverá chamar a nova função wmsr41_entrada_dimensionais_picking(), que poderá retornar TRUE ou FALSE.
  • Se o retorno for FALSE deverá voltar a entrada do campo etiq_entrada.

Função wms6214_coleta_quantidade_sku_item

  • No after field do campo qtd_informada, se mr_movimento.funcao for igual a 4 deverá verificar se separação com informação de dimensionais no picking e chamar a wmsr41_entrada_dimensionais_picking(). 
  • Se a função retornar FALSE deverá voltar para o input do campo qtd_informada.

Função wms6214_confirma_coleta().

  • Se mr_movimento.funcao for igual a 4 e estiver utilizando separação com informação dos dimensionais no picking deverá chamar a função wmsr41_entrada_dimensionais_picking().
  • Se o retorno for FALSE deverá setar a variável l_cancela para TRUE.

WMSR413 

  • Duplicar a tela WMS6214q sem o label de teclas de funções.

WMSR41

Função wmsr41_entrada_dimensionais_picking().

  • Função responsável pela entrada dos dimensionais na separação de picking, validação do saldo de estoque e processamento das reservas de estoque.
  • Receberá os parâmetros: empresa, endereços de picking, item, SKU, quantidade itens, processo de movimentação, tipo de entrada e modo de exibição.
  • Retornará TRUE ou FALSE
    1. Chamar a função wmsr41_dimensionais_sku_endereco() que poderá retornar TRUE ou FALSE. Se o retorno for FALSE indica que ocorreu erro de SQL e deve retornar FALSE. Se a varável que indica que o item controla dimensional foi setada como FALSE deverá retornar TRUE deste ponto.
    2. Se o tipo de entrada for igual a 1, indica que é separação informando a quantidade ou confirmando a quantidade, então, deve limpar o array de dimensionais. Caso seja 0, indica que é separação por etiqueta SKU; neste caso deve manter sempre o último dimensional informado, para fins de facilitar a separação.
    3. Abrir a tela wmsr412 que deverá ser criada conforme o protótipo 01.
    4. Exibir o depositante, item depositante eSKU do array ma_item_separacao.
    5. Efetuar a entrada dos dados dos dimensionais que foram previamente carregados na função wmsr41_dimensionais_sku_endereco().
    6. No after field do campo do valor dimensional deverá fazer um teste para identificar se está na última linha dos dimensionais. 
    7. Se for a última linha dos dimensionais deverá chamar a nova função wmsr41_valida_dimensional_picking(). A função retornará o status de execução e a quantidade a reservar do dimensional. Se o retorno do status for FALSE deverá exibir a mensagem de erro e continuar no input do campo valor dimensional. Se o retorno for verdadeiro deverá sair do input.
    8. Deverá setar uma variável modular indicando que foram informados dimensionais na separação. Esta variável será utilizada na função de processamento da separação.
    9. Se a quantidade a reservar voltou zero, indica que já existe reserva do item para os dimensionais informados e não é necessário alterar as reservas de estoque picking.
    10. Se a quantidade a reservar for maior que zero deverá chamar a nova função wmsr41_processa_reserva_dimensional().
    11. Se for pressionada a tecla F11 ou Control+R, será exibida a consulta de saldo do item por dimensionais no endereço. Conforme descrito na função wmsr41_endereco_saldo_dimensional().

Função wmsr41_valida_dimensional_picking()

  • Esta função será responsável pela validação do saldo de estoque do item com os dimensionais informados.
  • Receberá os parâmetros empresa, endereço picking, item, sku, linha do array, linha do array de tela, quantidade de itens, processo de movimentação, tipo de entrada e modo de exibição de mensagem.
  • Retornará status de execução e a quantidade a reservar.

    • Testa se o dimensional é data e efetua a validação, convertendo de caractere para data.
    • Criar select das tabelas wms_reserva_picking, est_loc_reser_end, estoque_loc_reser e estoque_lote_ender.
    • Os select abaixo deverá verificar a quantidade de estoque reservada com os dimensionais informados:

"SELECT SUM(estoque_loc_reser.qtd_reservada)",
" FROM wms_reserva_picking,",
" est_loc_reser_end,",
" estoque_loc_reser,",
" estoque_lote_ender",
" WHERE wms_reserva_picking.empresa = '",l_empresa ,"'",
" AND wms_reserva_picking.item = '",l_item_moviment CLIPPED,"'",
" AND wms_reserva_picking.sku = '",l_sku_moviment CLIPPED,"'",
" AND wms_reserva_picking.endereco = ", l_endereco_picking,
" AND wms_reserva_picking.endereco = est_loc_reser_end.endereco",
" AND wms_reserva_picking.empresa = est_loc_reser_end.cod_empresa",
" AND wms_reserva_picking.reserva_estoque = est_loc_reser_end.num_reserva",
" AND est_loc_reser_end.cod_empresa = estoque_loc_reser.cod_empresa",
" AND est_loc_reser_end.num_reserva = estoque_loc_reser.num_reserva",
" AND est_loc_reser_end.cod_empresa = estoque_lote_ender.cod_empresa",
" AND est_loc_reser_end.identif_estoque = estoque_lote_ender.identif_estoque",
" AND estoque_lote_ender.qtd_saldo > 0",
" AND wms_reserva_picking.reserva_estoque IS NOT NULL"

    • Se a quantidade retornada no select for nula deverá ser atribuído Zero.
    • Se o tipo de entrada for Zero, deverá efetuar o select abaixo na tabela temporária tt_dimens_pkg para buscar a quantidade já informada para o dimensional no processo de movimentação em andamento e subtrair da quantidade reservada.
    • Se a quantidade reservada for maior ou igual a quantidade de itens solicitado deverá retornar TRUE e Zero.
    • Quando a quantidade reservada for menos que a quantidade solicitada, então deverá fazer uma consulta do saldo de estoque do item, SKU, endereço e dimensionais chamando a nova função wmsr41_busca_saldo_dimensionais(). A função retornará status e o saldo disponível. Se o status retornado for FALSE deverá retornar FALSE e Zero.
    • Se a quantidade já reservada mais o saldo disponível for menor que a quantidade separada deverá exibir a mensagem: "Quantidade solicitada maior que quantidade disponivel para os dimen informados. Solicitada: l_qtd_itens. Disponivel: l_saldo_disponivel."
    • Senão retorna TRUE e A quantidade necessária a reservar (quantidade solicitada menos a quantidade já reservada).

Função wmsr41_processa_reserva_dimensional().

  • Esta função será responsável por efetuar novas reservas de picking utilizando os dimensionais em tela e ajustar as reservas já existentes, para que as quantidades não permaneçam divergentes.
  • Receberá: empresa, endereço de picking, item, SKU, quantidade a reservar e processo de movimentação.
  • Retornará: status e quantidade reservada.
    • No início da função deverá ser iniciada a transação.
    • Criar cursor da tabela tt_wms_est_lot_end que foi carregada na função wmsr41_valida_dimensional_picking().
    • Executar o Foreach do cursor criado. Deverá efetuar a reserva de estoque da quantidade necessária para atender a quantidade solicitada.
    • Efetuar a reserva provisória da quantidade chamando a nova função wmsr41_realiza_reserva_picking_dimensional() que retornará o status de execução e número da nova reserva gerada.
    • Chamar a função wmsr41_proxima_reserva_ressuprimento().
    • Carregar as variáveis e executar a função wmst214_wms_reserva_picking_inclui().
    • Para cada nova reserva deverá efetuar o ajuste das reservas já existentes, buscando todas as reservas de picking relacionadas ao processo de movimentação.
      • Deverá ser efetuado o ajuste da quantidade reservada na estoque_loc_reser.
      • Exclusão do registro na tabela wms_reserva_picking , caso a mesma seja zerada.
      • Neste ajuste deverão ser descartadas as reservas geradas no processo atual e as reservar que tenham algum dimensional já informado.
    • Se o processamento chegar ao final sem erros deve retornar true e a quantidade reservada, caso contrário retornar FALSE e Zero.

Função wmsr41_realiza_reserva_picking_dimensional()

  • Esta função incluirá uma reserva provisória do saldo solicitado do item, necessária para realizar a reserva de picking posteriormente.
  • Parâmetros recebidos: empresa, lr_estoque_lote_ender, tipo de estoque, restrição, quantidade a reservar, solicitação de carga, sequencial item, modo exibição.
  • Retornará: status e número da reserva gerada.
  • Iniciar os parâmetros de geração de reserva com os parâmetros:
    • qtd_reservada  - quantidade a reservar recebida por parâmetro
    • tipo_operacao - 'I'
    • Utilizar as funções padrões de geração de reserva wmsr105_centraliza_atualizacao_reservas().
  • Se ocorrer algum erro na geração de reserva deve retornar FALSE e nulo.
  • Se a operação for executada com sucesso deve retornar TRUE e número da reserva gerada.

Função wmsr41_limpa_tt_dimens_pkg()

  • Esta função deverá fazer delete da tabela tt_dimens_pkg.
  • Deverá ser chamada da função wms6214_coleta_etiqueta_sku_item() antes do início do WHILE e no ON KEY F4-control-p.

Função wmsr41_busca_saldo_dimensionais()

  • Esta função será responsável pela consulta de saldo do item com filtros por endereço e dimensionais.
  • Parâmetros recebidos: empresa, item, SKU, processo de movimentação, endereço, quantidade solicitada e modo de exibição.
  • Retornará: Status de execução e quantidade de saldo disponível.
  • Buscar o tipo de estoque, restrição e depositantes 

SELECT wms_identif_estoque.tip_estoque,
wms_identif_estoque.restricao,
estoque_lote_ender.deposit
INTO m_tip_estoque_pkg,
m_restricao_pkg,
l_deposit
FROM wms_reserva_picking,
est_loc_reser_end,
estoque_loc_reser,
estoque_lote_ender,
wms_identif_estoque
WHERE wms_reserva_picking.empresa = l_empresa
AND wms_reserva_picking.item = l_item_picking
AND wms_reserva_picking.sku = l_sku_picking
AND wms_reserva_picking.endereco = l_endereco_picking
AND wms_reserva_picking.endereco = est_loc_reser_end.endereco
AND wms_reserva_picking.empresa = est_loc_reser_end.cod_empresa
AND wms_reserva_picking.reserva_estoque = est_loc_reser_end.num_reserva
AND wms_identif_estoque.empresa = estoque_lote_ender.cod_empresa
AND wms_identif_estoque.depositante = estoque_lote_ender.deposit
AND wms_identif_estoque.identif_estoque = estoque_lote_ender.identif_estoque
AND est_loc_reser_end.cod_empresa = estoque_loc_reser.cod_empresa
AND est_loc_reser_end.num_reserva = estoque_loc_reser.num_reserva
AND est_loc_reser_end.cod_empresa = estoque_lote_ender.cod_empresa
AND est_loc_reser_end.identif_estoque = estoque_lote_ender.identif_estoque
AND estoque_lote_ender.qtd_saldo > 0
AND wms_reserva_picking.reserva_estoque IS NOT NULL
GROUP BY wms_identif_estoque.tip_estoque,
wms_identif_estoque.restricao,
estoque_lote_ender.deposit

  • Inicializar e carregar as variáveis lr_estoque_lote_ender necessárias para a consulta de estoque.
  • Efetuar Select SUM da tabela tt_wms_est_lot_end para trazer o saldo de estoque.
  • Se a operação for realizada com sucesso retornar TRUE e saldo de estoque, caso contrário, retornar FALSE e Zero.

Função wmsr41_endereco_saldo_dimensional().

  • Esta função será acionada pelas teclas F11 e Ctrll R, na tela de entrada dos dimensionais e exibirá o saldo e dimensionais armazenados no endereço de coleta, conforme o protótipo 02.
  • Efetuar a consulta de estoque sem considerar as reservas de saldo, pois durante o processamento da separação do picking poderá ocorrer a atualização das reservas.

Função wmsr41_exibe_dimensionais_pkg().

  • Função para exibir a consulta de saldo de estoque e dimensionais acionada pela techa F11-Ctrl R na entrada dos dimensionais.
  • Se for pressionada a tecla F2-Ctrl Z deverá chamar a função wmsr41_legenda_dimensionais()

Função wmsr41_exibe_dimensionais_sequencia()

  • Função auxiliar para exibição dos dimensionais do na consulta da função wmsr41_endereco_saldo_dimensional.

Função wmsr41_legenda_dimensionais().

  • Replicar a função WMS6214_legenda_dimensionais, porém deverá abrir a tela wmsr413, que deverá ser criada conforme o protótipo 03.

Tabelas Utilizadas

  • wms_solicitacao_picking

  • wms_reserva_picking

  • estoque_loc_reser

  • est_loc_reser_end

  • wms_item_onda_plano

  • wms_solic_carga_item_reserva

 

Protótipo de Tela

  • Telas iniciais do processo não alteradas.


  • Obriga leitura SKU, Obriga informar quantidade, Apenas confirma


Protótipo 01

Tela para entrada dos dimensionais.


Protótipo 02 

Tela para consulta de saldo de estoque por dimensional. 

 

Protótipo 03

Tela de legenda dos dimensionais.

 

Fluxo do Processo

O Fluxo abaixo foi alterado para que a opção de separação apenas confirmando a quantidade tenha o mesmo funcionamento da opção Obriga informar quantidade item/sku.

Também foi alterada a opção de separação Informa EAN/SKU, sendo adicionada a opção F11/CTRL-R para informar os dimensionais, sendo assim, não será aberta a tela de entrada de dimensionais a cada bipe de etiqueta de SKU. Será necessário que o operador tecle F11 para efetuar a entrada dos dimensionais,  ou quando a quantidade solicitada for atendida será solicitado automaticamente os dimensionais.

 

 


Simulação de Tabelas:

Situação atual onde não é permitido informar os dimensionais.

Tabela:

Estoque_loc_reser

 

 

 

Num_reserva

Item

Num_lote

Qtd_reservada

 

 

 

 

 

887162

4

2016-1

10

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Tabela:

Est_loc_reser_end

 

 

 

Num_reserva

Dimensionais

(dat_hor_producao)

Endereco

Identif_Estoque

Deposit

 

 

 

 

887162

01/01/2016

75

1AV160503090849310           

47

 

 

 

 

 

 

 

 

 

 

 

 

 

Tabela:

Wms_solicitacao_picking

 

 

 

Solicitacao_picking

Endereco

Item

SKU

Processo_

movimento

Qtd_solicitada

Qtd_retirada

Sit_

solicitacao

Reserva_

picking

100

75

4

1

 

10

0

P

1

100

75

4

1

4048000

10

10

F

1

 

 

 

 

 

 

 

 

 

Tabela:

Wms_reserva_picking

 

 

 

Reserva

Endereco

Item

SKU

identificacao_

estoque

identificacao_estoque_

quebra

Reserva_estoque

 

 

1

75

4

1

1AV160503090849310           

 

887162

 

 

Registro excluído

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Tabela:

Wms_solic_carga_item_reserva

 

 

 

Trans_solicitacao_carga_

mestre

Sequencial_item

Reserva

Tip_reserva

 

 

 

 

 

10990

1

100

P

 

 

 

 

 

10990

1

887162

E

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Tabela:

Wms_item_onda_plano_reserva

 

 

 

Onda_separacao

Processo_moviment

Trans_plano_

separacao_item

Qtd_item

Endereco

Reserva

Tip_reserva

 

 

63162

4048000

1513

10

75

100

P

 

 

63162

4048000

1513

10

75

887162

E

 

 

 

 

 

 

 

 

 

 

 

 

Situação pós alteração, informando dimensionais na separação. 

Tabela:

Estoque_loc_reser

 

 

 

Num_reservaItemNum_loteQtd_reservada

 

 

 

 

 

887162

4

2016-1

10

 

 

 

 

 

887163

4

2016-2

10

 

 

 

 

 

887162

4

2016-1

0

 

 

 

 

 

Tabela:

Est_loc_reser_end

 

 

 

Num_reserva

Dimensionais

(dat_hor_producao)

Endereco

Identif_Estoque

Deposit

 

 

 

 

887162

01/01/2016

75

1AV160503090849310           

47

 

 

 

 

887163

01/06/2016

75

1AV160503090848589

47

 

 

 

 

 

 

 

 

 

 

 

 

 

Tabela:

Wms_solicitacao_picking

 

 

 

Solicitacao_

picking

Endereco

Item

SKU

Processo_

movimento

Qtd_solicitada

Qtd_retirada

Sit_

solicitacao

Reserva_

picking

100

75

4

1

 

10

0

P

1

101

75

4

1

 

10

 

P

2

100

75

4

1

 

10

10

F

1

 

 

 

 

 

 

 

 

 

Tabela:

Wms_reserva_picking

 

 

 

Reserva

Endereco

Item

SKU

identificacao_

estoque

identificacao_

estoque_quebra

Reserva_

estoque

 

 

1

75

4

1

1AV160503090849310           

 

887162

 

 

Registro excluído

 

 

 

 

 

 

 

 

2

75

4

1

1AV160503090848589

 

887163

 

 

 

 

 

 

 

 

 

 

 

Tabela:

Wms_solic_carga_item_reserva

 

 

 

Trans_solicitacao_

carga_mestre

Sequencial_item

Reserva

Tip_reserva

 

 

 

 

 

10990

1

100

P

 

 

 

 

 

Registro excluído

 

 

 

 

 

 

 

 

10990

1

101

P

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Tabela:

Wms_item_onda_plano_reserva

 

 

 

Onda_separacao

Processo_

moviment

Trans_plano_

separacao_item

Qtd_item

Endereco

Reserva

Tip_

reserva

 

 

63162

4048000

1513

10

75

100

P

 

 

Registro excluído

 

 

 

 

 

 

 

 

63162

4048000

1513

10

75

101

P

 

 

 

  

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