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 | IRM1/Epic | ||
Requisito1/Story | Subtarefa1 | ||
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
- 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. - 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. - 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 4 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
- 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.
- 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 o depositante, item depositante eSKU do array ma_item_separacao.
- Efetuar a 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 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.
- 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().
- 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_reserva | Item | Num_lote | Qtd_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. |
---|