Páginas filhas
  • ER-LOGWMS01-54_Separacao_Informando_os_Dimensionais_Separados

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

Loigx

Módulo

WMS

Segmento Executor

D&L

Projeto1

LOGWMS01

IRM1/Epic

LOGWMS01-36

Requisito1/Story

LOGWMS01-54

Subtarefa1

LOGWMS01-55

Chamado2

 

País

(  ) 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 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 items indicar que os dimensionais devem ser informados (parametrização indica 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]  


Cenários - 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, 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, deverão ser informados os dimensionais do item (caso este tenha controle de algum dimensional). 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, e 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, após confirmada a quantidade, serão solicitados os dimensionais do item separado. Neste caso, o estoque do dimensional do item no endereço de separação deverá atender a quantidade total sendo separada.

 

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


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

    • 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 dimensiona foi setada como FALSE deverá retornar TRUE deste ponto.
    • 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.
    • Abrir a tela wmsr412 que deverá ser criada conforme o protótipo 01.
    • Exibir depositante, item depositante e sku do array ma_item_separacao.
    • Efetuar entrada dos dados dos dimensionais que foram previamente carregados na função wmsr41_dimensionais_sku_endereco(). 
    • No after field do campo do valor dimensional deverá fazer um teste para identificar se está na última linha dos dimensionais. 
    • Se for a última linha dos dimensionais deverá chamar a nova função wmsr41_valida_dimensional_picking(). A função irá 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 inpunt.
    • 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.
    • 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.
    • Se a quantidade a reservar for maior que Zero deverá chamar a nova função wmsr41_processa_reserva_dimensional().

 

Função wmsr41_valida_dimensional_picking().

Está 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 quantidade a reservar.

    • Testa se o dimensional é data e efetua a validação, convertendo de carácter 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 quantidade necessária a reservar (quantidade solicitada menos a quantidade já reservada).

 

Função wmsr41_processa_reserva_dimensional().

Está 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 fiquem 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 inciada 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_prov_picking() que retornará o status de execução e número da nova reserva gerada.
    • Se a reserva for gerada com sucesso deverá gravar um registro na tabela wms_solic_carga_item_reserva com o tipo de reserva igual "E". Utilizar as funções wmsm130 e wmst130,
    • Se não ocorrer erro na inclusão do registro deverá chamar a função já existente wmsr41_reserva_qtd_picking().
    • Se o processamento for realizado com sucesso, deverá gravar registro na tabela wms_item_onda_plano utilizando as funções wms187 e wmst187.
    • Gravar novo registro na tabela wms_solic_carga_item_reserva com tipo de reserva "P".
    • 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 feito o ajuste da quantidade reservada na estoque_loc_reser;
      • Exclusão do registro na tabela wms_item_onda_plano pertencente a reserva, wms_solic_carga_item_reserva e wms_reserva_picking , caso a mesma seja Zerada.
      • Atualização da quantidade quantidade solicitada e atendida e da situação da solicitação para "F" caso a reserva tenha sido descartada.
    • 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_prov_picking()

Está função irá 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 numero da reserva gerada.

Iniciar parâmetros de geração de reserva com os parâmetros:

    • identif_estoque - nulo
    • endereco - nulo
    • qtd_reservada  - quantidade a reservar recebida por parâmetro
    • num_docum - solicitação de carga
    • 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()

Está 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()

Está 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, 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.
    • Fazer 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.

 


Tabelas Utilizadas

wms_solicitacao_picking

wms_reserva_picking

estoque_loc_reser

est_loc_reser_end

wms_item_onda_plano

wms_solic_carga_item_reserva

Opcional

Protótipo de Tela

Tela inicial da separação não alterada (mesma tela para todos os cenários). 

 


Cenário 1 (obriga leitura SKU)

Protótipo 01

Nova tela

Protótipo 02

Nova telaNova tela

 

Nova telaNova tela

 

Cenário 2 - Obriga informar a quantidade.


Cenário 3 - Apenas confirma quantidade 

 

 

 

 

 

 

 

Fluxo do Processo

 

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