Histórico da Página
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 | IRM1/Epic | ||
Requisito1/Story | Subtarefa1 | ||
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.
- 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.
- 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.
- 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 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.
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
Tela do protótipo 01.
A entrada dos dimensionais deverá ser acionada na função wms6214_coleta_quantidade_sku_item no After Field do campo qtd_informada dentro do tratamento para mr_movimento.funcao = 4 antes de atualizar o contador de itens do volume - IF ma_tipo_lista[m_ind_lista] = 'V' THEN LET ma_qtd_itens_sku_volume[m_ind_volume] = m_qtd_separada_picking END IF
Caso esteja parametrizado para realizar o processo de separação com dimensionais em picking, deverá ser feito um desvio na lógica de processamento e chamar a nova função a ser criadas WMSR41_separacao_picking_com_dimensionais()
Criar função WMSR41_entrada_dimensionais_picking()
Está nova função será responsável pela separação de picking com controle de dimensionais (baseada na wmsy15_informa_dimensionais), deverá receber como parâmetros empresa, endereço de picking, item, sku e quantidade de itens, retornará true ou false.
- Para verificar se o item controla dimensional deverá ser utilizada a função já existente wms6214_existe_dimensionais(), se o item não controla dimensional retorna true nesta verificação.
- Abrir nova tela conforme protótipo 02, utilizar o array ma_dimensional carregado na função anterior para alimentar as informações de dimensionais do item na tela. Os valores para alimentar os campos item e SKU já estão em variáveis modulares da tela anterior.
- Deverá ser criada uma validação no after field do campo val_dimensional conforme descrito na função abaixo. Se a função retornar FALSE, deverá continuar no Input de dimensionais.
Criar função wmsr41_valida_dimensional_picking()
Está função para verificar se o dimensional possui saldo de estoque no endereço informado. Deverá receber como parâmetros: empresa, endereço picking, item, sku, l_arr_curr, l_scr_line e quantidade de itens.
- Passo 1: Verificar se possui reserva pro item/dimensional
Validação semelhante a da função wmsy15_valida_dimensional(), se a quantidade reservada for maior ou igual a quantidade solicitada, deve retornar true, senão continua para o passo 2.
- Passo 2: Verificar se tem saldo do dimensional no endereço. Deverá motar select da tabela estoque_lote_ender, filtrando por empresa, cod_item, endereco, dimensionais e qtd_saldo > 0
Se a quantidade disponível retornada for menor que a quantidade solicitada deverá exibir a mensagem "Quantidade solicitada maior que a quantidade disponível para os dimensionais informados." e retornar FALSE
- Passo 3: Se econtrou saldo do dimensional, porém não estava reservado, deverá efetuar a seguir a nova reserva de estoque.
Criar cursor das identificações de estoque reservadas para o processo.
Cada reserva de estoque deverá ser transferida para a nova identificação correspondente ao lote, para isso deverá ser criado um cursor das identificações disponíveis para o dimensional informado.
Processar as identificações até que a quantidade a separar informada em tela seja atendida.
Tabelas Utilizadas
Cenário 1 - Manteve o mesmo dimensional da reserva.
wms_solicitacao_picking | |||||||||
---|---|---|---|---|---|---|---|---|---|
EMPRESA | SOLICITACAO_PICKING | ENDERECO | ITEM | SKU | PROCESSO_MOVIMENTO | QTD_SOLICITADA | SIT_SOLICITACAO | QTD_RETIRADA | RESERVA_PICKING |
AV | 1786 | 75 | 4 | SVT-01-PK | 5 | P | 0 | 1 | |
5 | F | 5 | 1 | ||||||
wms_reserva_picking | |||||||||
EMPRESA | RESERVA | ENDERECO | ITEM | SKU | IDENTIFICACAO_ESTOQUE | IDENTIFICACAO_ESTOQUE_ QUEBRA | RESERVA_ESTOQUE | ||
AV | 1 | 75 | 4 | SVT-01-PK | 6AV160623160320766 | 0 | 887061 | ||
Registro excluído | |||||||||
estoque_loc_reser/est_loc_reser_end | |||||||||
NUM_RESERVA | NUM_LOTE | DAT_HOR_PRODUCAO | QTD_RESERVADA | IDENTIF_ESTOQUE | |||||
887061 | 1 | 01.01.2016 00:00:00 | 5 | 6AV160623160320766 | |||||
wms_item_onda_plano | |||||||||
EMPRESA | ONDA_SEPARACAO | PROCESSO_MOVIMENT | TRANS_PLANO_SEPARACAO_ ITEM | QTD_ITEM | ENDERECO | RESERVA | TIP_RESERVA | ||
AV | 67164 | 4054661 | 6335 | 5 | 75 | 1786 | P | ||
Atualiza | 6335 | 5 | null | 887061 | E | ||||
wms_solic_carga_item_reserva | |||||||||
EMPRESA | TRANS_SOLICITACAO_CARGA_ MESTRE | SEQUENCIAL_ITEM | RESERVA | TIP_RESERVA | |||||
AV | 10169 | 1 | 1786 | P | |||||
Atualiza | 887061 | E | |||||||
Cenário 2 - Informando dimensionais diferentes na separação
wms_solicitacao_picking | |||||||||
---|---|---|---|---|---|---|---|---|---|
EMPRESA | SOLICITACAO_PICKING | ENDERECO | ITEM | SKU | PROCESSO_MOVIMENTO | QTD_SOLICITADA | SIT_SOLICITACAO | QTD_RETIRADA | RESERVA_PICKING |
wms_reserva_picking | |||||||||
EMPRESA | RESERVA | ENDERECO | ITEM | SKU | IDENTIFICACAO_ESTOQUE | IDENTIFICACAO_ESTOQUE_ QUEBRA | RESERVA_ESTOQUE | ||
estoque_loc_reser/est_loc_reser_end | |||||||||
NUM_RESERVA | NUM_LOTE | DAT_HOR_PRODUCAO | QTD_RESERVADA | IDENTIF_ESTOQUE | |||||
wms_item_onda_plano | |||||||||
EMPRESA | ONDA_SEPARACAO | PROCESSO_MOVIMENT | TRANS_PLANO_SEPARACAO_ ITEM | QTD_ITEM | ENDERECO | RESERVA | TIP_RESERVA | ||
wms_solic_carga_item_reserva | |||||||||
EMPRESA | TRANS_SOLICITACAO_CARGA_ MESTRE | SEQUENCIAL_ITEM | RESERVA | TIP_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
Protótipo 02
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. |
---|