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 | LOGIX | Módulo | WMS | ||||||||||
Segmento Executor | Supply Chain | ||||||||||||
Projeto1 | LOGWMS01 | IRM1 |
| ||||||||||
Requisito1 |
| Subtarefa1 |
| ||||||||||
País | ( X ) Brasil ( ) Argentina ( ) Mexico ( ) Chile ( ) Paraguai ( ) Equador ( ) USA ( ) Colombia ( ) Outro _____________. | ||||||||||||
Outros | Não se Aplica |
Objetivo
Realizar ajustes nas rotinas de separação para atrelar o palete no processo atual e criar uma nova forma de conferência onde será possível informar o mesmo.
No processo de separação já existente, o palete será a referência de onde o estoque está sendo "colocado", ou seja, o palete físico que está sendo utilizado para movimentar o estoque.
Será criado um novo processo de conferência coletor com base no processo atual de conferência manual por documento, e incluída a possibilidade de realizar a conferência por palete.
Definição da Regra de Negócio
Aqui mapa mental utilizado como base
Na tabela a seguir serão listadas as rotinas envolvidas, o tipo de operação, a opção de menu e se necessário uma breve descrição das regras de negócio relacionadas a rotina.
Rotina | Tipo de Operação | Opção de Menu | Regras de Negócio |
WMS6636 | Criação | Conferencia manual coletor palete | |
WMSR137 | Criação | RNL para validar palete informado na separação | |
WMSR138 | Criação | RNL para validar/conferir o palete informado na conferência | |
WMS60018 | Alteração | Contrato / Expedição - Separação/Conferência |
|
WMS60030 | Alteração | Função de cópia de contrato | |
WMS6167 | Alteração | Função para validação de operação (inclusão do tipo de processo 315) | |
WMS6377 | Alteração | Função para busca dos processos de expedição (inclusão do tipo de processo 315) | |
WMS70006 | Alteração | Wizard (inclusão do tipo de processo 315) | |
WMS70007 | Alteração | Wizard (inclusão do tipo de processo 315) | |
WMS70007b | Alteração | Wizard (inclusão do tipo de processo 315) | |
WMS7001c | Alteração | Wizard (inclusão do tipo de processo 315) | |
WMSR120 | Alteração | RNL Inventário rotativo (inclusão do tipo de processo 315) | |
WMSR44 | Alteração | Cancelamento Expedição (inclusão do tipo de processo 315) | |
WMSR60 | Alteração | Sequencia Atividades Expedição (inclusão do tipo de processo 315) | |
WMSR70 | Alteração | Geração OS Onda Separação(inclusão do tipo de processo 315) | |
WMSR88 | Alteração | Wizard (inclusão do tipo de processo 315) | |
WMS60014 | Alteração | Contrato / Valida medição de tempo (inclusão do tipo de processo 315) | |
WMS6008 | Alteração | Serviço x Atividade (inclusão do tipo de processo 315) | |
WMS6025 | Alteração | Serviço x Atividade x Proposta (inclusão do tipo de processo 315) | |
WMS6220 | Alteração | Manutenção tabela wms_parametro_separacao (inclusão do tipo de processo 315) | |
WMS6225 | Alteração | Geração de estrutura de OS (inclusão do tipo de processo 315) | |
WMS6242 | Alteração | Capa conferência coletor (inclusão do tipo de processo 315) | |
WMS6258 | Alteração | Capa conferência desktop(inclusão do tipo de processo 315) | |
WMS6345 | Alteração | Geração de estrutura de OS (inclusão do tipo de processo 315) | |
WMS6609 | Alteração | Análises Tempo Médio Separação (inclusão do tipo de processo 315) | |
WMS6770 | Alteração | Registros padrões (inclusão do tipo de processo 315) | |
WMS6214 | Alteração | Separação coletor (Ajuste para gravar o palete informado) | |
WMSR41 | Alteração | Separação no picking (Ajuste para gravar o palete informado) |
1 - Parametrização
1.1 - Ajustes no contrato - WMS60013 - Inclusão de parâmetros no processo de separação e conferência - WMS60018
Serão criados dois parâmetros:
Informa palete destino(inf_palete_destino_separacao - Opções: S ou N): Quando marcado esse parâmetro o palete deverá ser informado em todo movimento de separação. Antes de informar a etiqueta de origem da coleta (pode ser uma identificação de estoque ou uma etiqueta de endereço quando a separação ocorrer em endereço de picking) será obrigatório informar o palete. Ele será gravado diretamente na tabela wms_identif_estoque correspondendo ao palete de cada ID separada. Deverá atender as mesmas regras de uso de palete existentes em outros pontos do sistema.
- Modo conferência palete (modo_conf_palete - Opções: 1,2, 3 ou 4): Ele irá indicar qual a forma de conferência que poderá ser utilizada. As opções são:
- Somente pede confirmação: após bipar o palete, envia mensagem para o usuário "Confirma a conferência do palete XXXXXXX como XX SKUs?" já com o campo de resposta como S. Em caso afirmativo, todos os itens do palete serão listados como conferidos. Caso contrário, volta para a tela principal do processo de conferência em questão.
- Informa quantidade total de SKU: após bipar o palete, abre tela onde deverá ser informada a quantidade total de SKUs do palete independente do item. Não será permitida informar uma quantidade de caixas diferentes da que compõe o palete. Não será exibida a quantidade esperada em nenhuma tecla, caso seja necessário identificar essa informação deverá ser utilizado o WMS6170(desktop) ou WMS6181(coletor) pesquisando pelo palete. Se o palete possuir algum item que não controla SKU, automaticamente, caso essa opção esteja marcada, será utilizada a opção 3"Informa itens e quantidade".
- Informa itens e quantidade: após bipar o palete, abre uma tela para informar o código do item e na sequencia a quantidade total do mesmo no palete. A cada item será validado essa informação e não poderá ser informado novamente o mesmo código do item. Apenas quando todos os itens do palete forem conferidos é que o estoque do palete será conferido. Caso ocorra uma interrupção ou queda de sinal nesse processo, será necessário iniciar novamente a conferência do palete. A unidade de medida da quantidade será solicitada com base no parâmetro principal do processo de conferência. (Não informa, informa quantidade em itens, e informa quantidade em SKUs).
- Informa itens, quantidade e dimensionais: passará por todas as etapas do modo anterior (Informa itens e quantidade), sendo que após informar a quantidade, irá verificar se o item controla dimensionais e se está utilizando o parâmetro restringe dimensionais.
- Alterar a função wms60030_copia_contrato para ler os novos campos criados relacionados ao contrato de origem da cópia e gravar os valores lidos para para o contrato destino da cópia.
Os parâmetros serão gravados na tabela WMS_PARAMETRO_SEPARACAO, conforme descrição realizada na parte "Dicionário de dados", e na sessão protótipo são exibidas as imagens de como ficará a tela do contrato - separação/conferência (Protótipo 1 e Protótipo 2).
1.2 - Criação de um novo processo de conferência
Incluir um novo registro na tabela WMS_TIP_PROCESSO o tipo de processo 315, conforme descrição realizada na tabela a seguir.
Inclusão de Registro na tabela WMS_TIP_PROCESSO | |
Descrição campo | Valor |
---|---|
tip_processo | 315 |
descricao_tip_processo | CONF MANUAL COLETOR PALETE |
descrição_reduzida_tip_processo | CONF.COL PALETE |
instrucao | EFETUAR A CONFERENCIA DE SOLICITACOES DE CARGA, PELO COLETOR, UTILIZANDO AS REGRAS DA CONFENCIA MANUAL PODENDO INFORMAR O PALETE SEPARADO |
tip_classe_operacao | E |
programa | WMS6636 |
padrao | S |
Para garantir o correto funcionamento dos processos de conferência de expedição já existente e suas validações, será necessário alterar os seguintes fontes:
- WMS6167 - Validação de operação: Alterar todas as validações para considerar o novo tipo de conferência 315. Utilizar como base o tipo de processo 305, uma vez que essa nova conferência, terá como base esse tipo já existe e mais a possibilidade de informar o palete separado.
- WMS6377 - Busca de processos da proposta do depositante: Incluir na função wms6377_busca_processos_proposta_depositante o tipo de processo 315.
- WMS70006 - Wizard: Incluir na função wms70006_carrega_temporaria o novo tipo de processo 315.
- WMS70007 - Wizard: Incluir na função wms70007_inclui_estrutura o novo tipo de processo 315.
- WMS70007b - Wizard: Incluir em todas as validações onde está sendo tratado o tipo de processo 305 para tratar o novo tipo de processo 315.
- WMS7001c- Wizard: Incluir na função wms7001c_busca_dados o novo tipo de processo 315. Incluir na validação da função wms7001c_validacoes o tipo de processo 315.
- WMSR120 - Inventário rotativo: Incluir na função wmsr120_analise_inventario_rotativo onde está sendo tratado o tipo de processo 305 para tratar o novo tipo de processo 315.
- WMSR44 - cancelamento de expedição: Incluir na função wmsr44_os_ativ_cria onde está sendo tratado o tipo de processo 305 para tratar o novo tipo de processo 315.
- WMSR60 - Sequencia de execução das atividades de expedição: Incluir nas funções wmsr60_exibe_instrucao_trabalho e wmsr60_verifica_atividades_finalizadas onde está sendo tratado o tipo de processo 305 para tratar o novo tipo de processo 315.
- WMSR70 - Geração de ordem de serviço de expedição: Incluir na validações onde está sendo tratado o tipo de processo 305 para tratar o novo tipo de processo 315.
- WMSR88 - Função de wizard: Incluir na validações onde está sendo tratado o tipo de processo 305 para tratar o novo tipo de processo 315.
- WMS60014 - Valida medição de tempo: Incluir na função wms60014_valida_medicao_tempo_atividade uma nova consistência para o tipo 315.
- WMS60018 - Contrato ->Separação/Conferência: Incluir na validações onde está sendo tratado o tipo de processo 305 para tratar o novo tipo de processo 315.
- WMS6008 - Serviço x Atividade: Alterar a função wms6008_valida_medicao_tempo_atividade para incluir o novo tipo de processo criado 315.
- WMS6025 - Serviço x Atividade x Proposta: Alterar a função wms6025_valida_medicao_tempo_atividade para incluir o novo tipo de processo criado 315.
- WMS6220 - Manutenção tabela WMS_PARAMETRO_SEPARACAO: Incluir na validações onde está sendo tratado o tipo de processo 305 para tratar o novo tipo de processo 315. Nos programas, onde está sendo validado o WMS6218, incluir também a validação do novo programa de conferência.
- WMS6225 - Geração de estrutura de OS: Incluir na validações onde está sendo tratado o tipo de processo 305 para tratar o novo tipo de processo 315.
- WMS6242 - Capa conferência coletor: Incluir na validações onde está sendo tratado o tipo de processo 305 para tratar o novo tipo de processo 315. Deverá ser chamado o programa novo WMS6636.
- WMS6258 - Capa conferência desktop: Incluir na validações onde está sendo tratado o tipo de processo 305 para tratar o novo tipo de processo 315. Não será possível executar esse processo de conferencia via desktop, apenas coletor.
- WMS6345 - Geração de estrutura de OS: Incluir na validações onde está sendo tratado o tipo de processo 305 para tratar o novo tipo de processo 315.
- WMS6609 - Análises Tempo Médio Separação: Alterar a função wms66092_carrega_dados_analise para incluir o novo tipo de processo criado 315.
- WMS6770 - Registros padrões: Alterar a função wms6770_processa_tip_processos para incluir o novo tipo de processo criado 315.
2 - Ajustes na rotina de separação - WMS6214
No processo de separação, quando acessar a tela indicando a origem da separação, deverá solicitar o palete antes da etiqueta de estoque.
Na função wms6214_inicia_movimento existem duas telas que são chamadas:
- WMS62143 - Etiqueta Origem - Controla SKU
- WMS6214k - Etiqueta Origem - Não Controla SKU.
Criar duas novas telas com base nas atuais, onde serão excluídos os campos área e tipo de estoque que são exibidos atualmente para permitir a inclusão do campo palete destino, conforme protótipo 3 e 4:
Para realizar a validação da utilização do palete informado, criar duas funções dentro da nova RNL WMSR137:
WMSR137_valida_palete: será chamada após informar o palete(after field do campo). Valida apenas o palete informado, sem saber a relação dele com o estoque que será colocado sobre o mesmo. Deverá ser validado se o mesmo pode ser utilizado seguindo as mesmas regras do WMS6182, campo palete receptor.
Bloco de código title Exemplo da validação collapse true 1) Remover enter no campo Criar função idêntica a essa dentro da RNL CALL wms6182_remove_enter(m_identif_palete) RETURNING m_identif_palete 2) Verificar caracteres especiais IF m_identif_palete MATCHES "*'*" OR m_identif_palete MATCHES "*""*" OR m_identif_palete MATCHES "*%*" OR m_identif_palete MATCHES "*(*" OR m_identif_palete MATCHES "*)*" OR m_identif_palete MATCHES "*=*" OR m_identif_palete MATCHES "*|*" OR m_identif_palete MATCHES "*<*" OR m_identif_palete MATCHES "*>*" THEN LET m_titulo = 'Divis/Fusao estoque' LET m_sub_titulo = 'Palete receptor invalido.' LET m_msg = 'Nao e permitido informar caracteres especiais no palete receptor.' CALL wms6085_help(m_titulo, m_sub_titulo, m_msg) CURRENT WINDOW IS w_WMS6182_principal NEXT FIELD m_identif_palete END IF 3) Verificação de inventário no palete #rotina para verificar se o palete esta em processo de inventario IF wmsr51_f2_verifica_emp_palet(p_cod_empresa, m_identif_palete) THEN LET m_titulo = 'Divis/Fusao estoque' LET m_sub_titulo = '' CALL wms6085_help(m_titulo, m_sub_titulo, 'Nao e possivel realizar divisao/fusao de estoque, pois o palete possui identificacoes de estoque que estao em processo de inventario.') CURRENT WINDOW IS w_WMS6182_principal NEXT FIELD m_identif_palete END IF 4) Verificar se o palete informado é curinga ou permite usar qualquer etiqueta (Cria curinga com o palete) # Validar se o receptor é uma etiqueta curinga IF wmsm53_wms_etiq_curinga_leitura(p_cod_empresa,m_identif_palete,TRUE,1) THEN # Se atender estas condições a etiqueta não pode ser utilizada IF wmsm53_wms_etiq_curinga_get_dat_habil() IS NULL THEN LET m_titulo = 'Divis/Fusao estoque' LET m_sub_titulo = 'Palete receptor invalido' LET m_msg = 'A etiqueta informada nao esta habilitada.' CALL wms6085_help(m_titulo, m_sub_titulo, m_msg) CURRENT WINDOW IS w_WMS6182_principal NEXT FIELD m_identif_palete END IF ELSE IF m_indica_aceita_etiq_nao_cadas = 'S' THEN IF wmsm53_wms_etiq_curinga_leitura(p_cod_empresa,m_identif_cedente,TRUE,1) THEN LET l_endereco = wmsm53_wms_etiq_curinga_get_endereco() END IF IF wmsm133_wms_identif_estoque_leitura(p_cod_empresa,m_identif_cedente,TRUE,1) THEN CALL wmsm53_wms_etiq_curinga_set_ctr_ent_sai_veic(wmsm133_wms_identif_estoque_get_ctr_ent_sai_veic_docum()) CALL wmsm53_wms_etiq_curinga_set_deposit(wmsm133_wms_identif_estoque_get_depositante()) END IF CALL wmsm53_wms_etiq_curinga_set_dat_habil(TODAY) CALL wmsm53_wms_etiq_curinga_set_empresa(p_cod_empresa) CALL wmsm53_wms_etiq_curinga_set_endereco(l_endereco) CALL wmsm53_wms_etiq_curinga_set_etiq_curinga(m_identif_palete) CALL wmsm53_wms_etiq_curinga_set_etiq_pallet(m_identif_palete) CALL wmsm53_wms_etiq_curinga_set_identif('P') CALL wmsm53_wms_etiq_curinga_set_item(m_cod_item) CALL wmsm53_wms_etiq_curinga_set_livre_1(NULL) CALL wmsm53_wms_etiq_curinga_set_livre_2(NULL) CALL wmsm53_wms_etiq_curinga_set_livre_3(NULL) CALL wmsm53_wms_etiq_curinga_set_livre_4(NULL) CALL wmsm53_wms_etiq_curinga_set_livre_5(NULL) CALL wmsm53_wms_etiq_curinga_set_livre_6(NULL) CALL wmsm53_wms_etiq_curinga_set_lote_geracao(1) CALL wmsm53_wms_etiq_curinga_set_sku(l_sku) CALL wmsm53_wms_etiq_curinga_set_utiliz('S') #LET m_etiqueta_tem_estoque = FALSE IF NOT wmst53_wms_etiq_curinga_inclui(TRUE,1) THEN LET m_titulo = 'Divis/Fusao estoque' LET m_sub_titulo = 'Etiqueta curinga' LET m_msg = 'Problemas na inclusao da etiqueta curinga.' CALL wms6085_help(m_titulo, m_sub_titulo, m_msg) CURRENT WINDOW IS w_WMS6182_principal NEXT FIELD m_identif_palete END IF ELSE LET m_titulo = 'Divis/Fusao estoque' LET m_sub_titulo = 'Etiqueta curinga' LET m_msg = 'Nova identificacao de estoque nao cadastrada como etiqueta curinga.' CALL wms6085_help(m_titulo, m_sub_titulo, m_msg) CURRENT WINDOW IS w_WMS6182_principal NEXT FIELD m_identif_palete END IF END IF END IF
WMSR137_valida_palete_com_id: antes de executar o processamento, deverá ser validado novamente, se foi possível utilizar o palete para o processo em questão, similar ao que é realizado no WMS6182 após preencher todos os campos da tela. Nesse ponto, será validado o palete e a ID que o mesmo será atrelado, seja ela física ou virtual.
Bloco de código title Exemplo da validação collapse true Fazer novamente todas as validações da função WMSR137_valida_palete Utilizando já o palete e ID que será colocada no palete 1) Verificar se o Palete já está sendo usado como ID de estoque de outra ID que não a separada WHENEVER ERROR CONTINUE SELECT DISTINCT 1 FROM estoque_lote_ender WHERE estoque_lote_ender.cod_empresa = p_cod_empresa AND estoque_lote_ender.identif_estoque = m_identif_palete AND qtd_saldo > 0 WHENEVER ERROR STOP IF sqlca.sqlcode = 0 THEN LET m_titulo = 'Divis/Fusao estoque' LET m_sub_titulo = 'ID cedente' LET m_msg = 'Palete unico nao pode receber outra ID.' CALL wms6085_help(m_titulo, m_sub_titulo, m_msg) CURRENT WINDOW IS w_WMS6182_principal NEXT FIELD m_identif_palete END IF 2) Verificar depositante do palete IF wmsm117_wms_palete_get_deposit() <> m_deposit THEN LET m_titulo = 'Divis/Fusao estoque' LET m_sub_titulo = 'Palete receptor invalido.' LET m_msg = 'Palete receptor informado nao pertence ao mesmo depositante da identificacao cedente.' CALL wms6085_help(m_titulo, m_sub_titulo, m_msg) CURRENT WINDOW IS w_WMS6182_principal NEXT FIELD m_identif_palete END IF
Depois de validado o palete que foi informado, realizar os seguintes tratamentos:
- O palete informado nesse processo será gravado no campo palete da tabela wms_identif_estoque da identificação de estoque que está sendo separada no movimento;
- Ajustar o programa para executar o processo utilizado GET e SET sem precisar passar mais parâmetros para as funções.
- As funções wmsr27_gera_palete_com_identif_estoque e wmsr18_divisao_fusao_estoque deverão utilizar o palete informado em tela para a criação do palete.
- Mesmo quando não for criada uma nova ID de estoque, o palete informado deverá ser atrelado como palete do estoque separado.
- É necessário alterar também a wmsr41_separacao_picking que chama as funções wmsr27_gera_palete_com_identif_estoque e wmsr18_divisao_fusao_estoque.
OBS: lembrar que ao consultar o estoque no WMS6170 pelo equipamento ou palete o mesmo poderá ser visualizado conforme executado na separação.
3 - Criação de novo tipo de conferência coletor com base no atual WMS6218(Conferência manual documento) - WMS6636
Esse processo será criado com base no processo já existente de conferência por documento, WMS6218, portanto, será realizada uma cópia do programa e todas as suas telas e renomeados para o WMS6636. Na sequencial, nesse novo programa, será disponibilidade a funcionalidade de conferir palete. Essa funcionalidade deverá ser feita toda em uma função que pode vir a ser reutilizada para algum outro tipo de conferência em projeto posterior.será a RNLWMSR138.
A funcionalidade de conferência de palete será iniciada no campo EAN/SKU, onde será possível bipar um palete para realizar a conferência automática do mesmo.
3.1 - Validações no palete informado, antes de realizar a conferência
WMSR138_valida_palete_conferencia: essa função será responsável por validar o palete antes de efetivamente realizar a conferência do mesmo.
Serão validados os seguintes pontos:
Verificar se o palete já conferido anteriormente: Mensagem: Esse palete já foi conferido! Deseja cancelar a conferência do mesmo? Em casa afirmativo, será realizado o cancelamento da conferência de todos os itens do palete, similar a retirada de itens de volumes. Não serão solicitadas informações adicionais, e ao final será enviado a mensagem "Palete cancelado com sucesso" ou "Não foi possível cancelar a conferencia do palete" conforme resultado do processamento da função. E voltará para a tela de palete, onde caso o usuário desejar, poderá realizar novamente a conferência do mesmo.
Bloco de código language cpp title Exemplo da validação collapse true 1) Verificar se o palete não foi conferido anteriormente SELECT situacao_palete FROM WMS_CONFERENCIA_PALETE WHERE empresa = 'XX' AND palete = 'XXXXXXXXXXXXXXXXXX' AND sequencial_conferencia = 99 Quando a situação do palete é F(finalizada). Enviar mensagem em tela solicitado ao usuário se deseja cancelar a conferencia do palete ou não. Quando a Opções A(andamento), automaticamente cancelar a conferencia de todos os itens e recomeçar o processo de conferência do palete. Isso poderá ocorrer quando o sistema for encerrado indevidamente, onde teve uma queda de sinal.
- Verificar se existe alguma reserva no palete que não está relacionada o solicitação de carga/plano que está sendo conferido. Mensagem: Não é possível realizar a conferencia desse palete. Existe reserva para mais de um documento.
- Verificar se existe algum estoque que não está reservado. Mensagem: Não é possível realizar a conferencia desse palete. Existe estoque sem reserva.
Verificar se todos os itens possuem conferência pendente. Mensagem: Não é possível realizar a conferencia desse palete. Nem todos os itens são necessários para o fechamento da conferência.
Bloco de código language cpp title Exemplo da validação collapse true 1) Verifica se o palete possui alguma reserva para outra SC SELECT DISTINCT 1 FROM wms_palete INNER JOIN wms_identif_estoque ON wms_identif_estoque.empresa = wms_palete.empresa AND wms_identif_estoque.palete = wms_palete.palete INNER JOIN est_loc_reser_end ON est_loc_reser_end.cod_empresa = wms_identif_estoque.empresa AND est_loc_reser_end.identif_estoque = wms_identif_estoque.IDENTIF_ESTOQUE WHERE wms_palete.empresa = '44' -- Empresa corrente AND wms_palete.palete = '644161110093108381' --Palete em questão --Essa parte final, deve levar em conta o tipo da conferencia - Documento ou plano -- Esse para quando a conferência for por documento AND EXISTS (SELECT 1 FROM wms_solic_carga_item_reserva WHERE wms_solic_carga_item_reserva.empresa = est_loc_reser_end.cod_empresa AND wms_solic_carga_item_reserva.reserva = est_loc_reser_end.num_reserva AND wms_solic_carga_item_reserva.tip_reserva = 'E' -- Apenas reservas de estoque AND wms_solic_carga_item_reserva.trans_solicitacao_carga_mestre <> 73247) -- Número da SC que está sendo conferida 2) -- Verifica se o palete possui alguma quantidade que não está reservada SELECT DISTINCT 1 FROM wms_palete INNER JOIN wms_identif_estoque ON wms_identif_estoque.empresa = wms_palete.empresa AND wms_identif_estoque.palete = wms_palete.palete INNER JOIN estoque_lote_ender ON estoque_lote_ender.cod_empresa = wms_identif_estoque.empresa AND estoque_lote_ender.identif_estoque = wms_identif_estoque.IDENTIF_ESTOQUE LEFT JOIN est_loc_reser_end ON est_loc_reser_end.cod_empresa = wms_identif_estoque.empresa AND est_loc_reser_end.identif_estoque = wms_identif_estoque.IDENTIF_ESTOQUE LEFT JOIN estoque_loc_reser ON est_loc_reser_end.cod_empresa = estoque_loc_reser.cod_empresa AND est_loc_reser_end.num_reserva = estoque_loc_reser.num_reserva WHERE wms_palete.empresa = '44' -- Empresa corrente AND wms_palete.palete = '644090828140540007' --Palete em questão GROUP BY estoque_lote_ender.qtd_saldo HAVING estoque_lote_ender.qtd_saldo <> sum(estoque_loc_reser.qtd_reservada) 3) Verificar se todos os itens possuem conferência pendente Copiar as validações padrões da conferência de itens: wmsr35_inclui_item_volume_sem_split Essa função devem fazer apenas a parte de validar se o item/quantidade/dimensionais pode ser conferido, não fazendo atualização nos indicativos de conferência 4) Ao final da validação do palete, deverão ser gravados os registros nas tabelas WMS_CONFERENCIA_PALETE, onde o palete deve ficar com a situação A, e na tabela WMS_CONFERENCIA_PALETE_ITEM todos os itens com situação P. Isso para não ser mais necessário ficar buscando sempre a quantidade de itens do palete e conseguir verificar quais itens e conseguir saber quando todos os itens do palete foram conferidos. -- Itens e quantidades SELECT wms_identif_estoque.item, wms_identif_estoque.QTD_ORIGEM, sum(wms_identif_estoque.QTD_ORIGEM /wms_item_sku.qtd_item) qtd_sku FROM wms_palete, wms_identif_estoque, wms_item_sku WHERE wms_palete.empresa = wms_identif_estoque.empresa AND wms_palete.palete = wms_identif_estoque.palete AND wms_identif_estoque.empresa = wms_item_sku.empresa AND wms_identif_estoque.item = wms_item_sku.item AND wms_identif_estoque.sku = wms_item_sku.sku AND wms_palete.empresa = '44' --empresa corrente AND wms_palete.palete = '644090828140540007' -- palete em questão GROUP BY wms_identif_estoque.item, wms_identif_estoque.QTD_ORIGEM
3.2 - Realizando a conferência do palete
Deverá ser criada uma função WMSR138_confirma_conferencia_palete. Essa função irá abrir as telas necessárias para a realização da conferência do palete levando em conta o modo de conferência configurado no depositante.
Poderão ser configuradas 4 opções de conferência de palete, que funcionarão da seguinte forma:
- Somente pede confirmação(Protótipo 5): envia mensagem para o usuário solicitando a confirmação. Respondendo Sim, o sistema irá realizar o processamento da conferência do palete chamando a função WMSR138_processa_conferencia_palete. Respondendo não, volta para a tela inicial do processo de conferência em questão.
Bloco de código | ||||||
---|---|---|---|---|---|---|
| ||||||
wms6085_tela_confirmacao(TITULO,SUBTITULO,MENSAGEM). Atualiza todos os itens do palete como F(Finalizado) na tabela WMS_CONFERENCIA_PALETE_ITEM |
- Informa quantidade total de SKU (Protótipo 6): antes de abrir essa tela, deve ser verificado se algum dos itens do palete não controla SKU. Se existir algum dos itens que não controla SKU, automaticamente, será aberta a tela para informar os itens e quantidade (opção descrita na sequencia), ou seja, apenas quando todos os itens do palete controlarem SKU essa opção poderá ser utilizada.Essa opção envia mensagem para o usuário solicitando a quantidade de SKUs presentes no palete. O mesmo deverá responder a quantidade total e ela será validada em relação a quantidade esperada, criar a função WMSR138_valida_qtd_palete. Quando informada uma quantidade diferente da esperada será enviada uma mensagem informando "Quantidade de SKUs informada é diferente da quantidade esperada" e volta para o campo Qtd SKUs. Quando informada a quantidade esperada de SKUs o sistema irá realizar o processamento da conferência do palete chamando a função WMSR138_processa_conferencia_palete.
Bloco de código | ||||||
---|---|---|---|---|---|---|
| ||||||
--Verifica se algum dos itens do palete não controla SKU SELECT DISTINCT 1 FROM wms_palete, wms_identif_estoque, wms_item_complemento WHERE wms_palete.empresa = wms_identif_estoque.empresa AND wms_palete.palete = wms_identif_estoque.palete AND wms_identif_estoque.empresa = wms_item_complemento.empresa AND wms_identif_estoque.item = wms_item_complemento.item AND wms_palete.empresa = '44' --empresa corrente AND wms_palete.palete = '644090828140540007' --palete em questão AND controla_sku = 'N' --indicativo de controle de SKU --Verifica a quantidade de SKUs do palete sum dos SKus da tabela WMS_CONFERENCIA_PALETE_ITEM para o palete, empresa e sequencial da conferência __________________________________ Utilizar wms6085_help(TITULO,SUBTITULO,MENSAGEM). Atualiza todos os itens do palete como F(Finalizado) na tabela WMS_CONFERENCIA_PALETE_ITEM Chama a função WMSR137_processa_conferencia_palete |
- Informa itens e quantidade(Protótipo 7): com essa opção parametrizada, o sistema deverá abrir uma nova tela, onde deverão ser informados os itens e suas respectivas quantidades conferidas. Ao informar um item e quantidade será validado se é a mesma é igual ao esperado com base na tabela WMS_CONFERENCIA_PALETE_ITEM e se o item já não foi conferido anteriormente (Situação do item é F) . A cada item conferido será verificado se ainda existem itens pendentes de conferência. Caso exista, volta para a tela de itens, caso contrário, informa que "Todos os itens do palete já foram conferidos". Após todos os itens conferidos, o usuário poderá confirmar a conferência do palete que irá chamar a função WMSR138_processa_conferencia_palete para conferir o palete.
Bloco de código | ||||||
---|---|---|---|---|---|---|
| ||||||
Após o código do item, fazer as seguintes verificações: - Item pertence ao palete (verifica se encontra registro para o item na WMS_CONFERENCIA_PALETE_ITEM) - Item já foi conferido (quando na tabela WMS_CONFERENCIA_PALETE_ITEM a situacao do item já está como F) Apos informar a quantidade de itens --Validação da quantidade e situação do itens no palete com base na tabela WMS_CONFERENCIA_PALETE_ITEM, verifica quantidade e situação Atualiza todos o item conferido como F(Finalizado) na tabela WMS_CONFERENCIA_PALETE_ITEM |
Informa itens e quantidade(Protótipo 7)
3.3 - Realizando a conferência do palete
A função WMSR138_processa_conferencia_palete deve ser criada para realizar efetivamente a conferencia de todos os itens do palete. Ela será chamada ao final de todos os modos de conferência e retornar o status final do processo. Essa função deverá fazer um cursor com base no palete e pegar as informações de itens/quantidade/dimensionais do mesmo e chamar a função wmsr35_inclui_item_volume_sem_split. Caso não seja possível fazer esse processo para todos os itens do palete, serão excluídas todas as informações do palete nas tabelas do processo de conferência por palete e será retornado que não foi possível realizar a conferência do palete. Independente de sucesso ou fracasso, ao final desse processo será retornado para
Quando realizada a conferência do palete, o mesmo deverá ser gravado nas novas tabelas para evitar que seja conferido mais vezes
Travar reiniciar a conferencia de itens
Travar retirar itens de volumes caso seja necessário utilizar a quantidade de itens do palete
Ao reiniciar a conferencia geral, deve também excluir os paletes conferidos
Sequencial de conferencia 2 - Após o cancelamento
Protótipo de Tela - Contrato - Protótipo 1
Protótipo de Tela - Contrato - Protótipo 2
Protótipo de Tela - Separação - Protótipo 3 e Protótipo 4
Protótipo de Tela - Conferencia palete: modo confirma - Protótipo 5
Protótipo de Tela - Conferencia palete: modo quantidade de SKUS - Protótipo 6
Protótipo de Tela - Conferencia palete: itens e quantidade - Protótipo 7
Dicionário de Dados
TABELA: WMS_PARAMETRO_SEPARACAO | ||||
Campo | Descrição | Tipo | Obrigatório | Campo novo? |
Empresa | Código da empresa | CHAR(02) | Não | |
Depositante | Código do depositante | CHAR(15) | Não | |
.... | ||||
informa_quantidade_conferencia | Indica como será realizada a conferência dos itens | CHAR(01) | Não | |
permt_plnjt_endereco_nao_doca | Indica se permite ou não planejar a conferência para endereços diferentes de doca/statge | CHAR(01) | Não | |
... | ||||
inf_palete_destino_separacao | Informa o palete destino no processo de separação | CHAR(01) | Sim | |
modo_conf_palete | Indica o modo que será realizada a conferência do palete - Valores possíveis: 1 - Somente pede confirmação 2 - Informa quantidade total de SKUs (default) 3- Informa itens e quantidades 4 - Informa itens, quantidades e dimensionais | CHAR(01) | Sim |
TABELA CRIADA: WMS_CONFERENCIA_PALETE | ||||
NOME | DESCRIÇÃO | TIPO | Chave Primária | OBRIGATÓRIO |
---|---|---|---|---|
empresa | Empresa | CHAR(02) | ||
palete | Código do palete conferido | CHAR(18) | ||
sequencial_conferencia | Sequencial da conferencia | INTEGER | ||
situacao_palete | Situação da conferência do palete. Opções A(andamento) F(finalizada) | CHAR(01) | ||
trans_solicitacao_carga_mestre | Número da Solicitação de carga, quando a conferência é por documento | INTEGER | ||
plano_separacao | Número do plano de separação, quando conferência é por plano | INTEGER |
TABELA CRIADA: WMS_CONFERENCIA_PALETE_ITEM | ||||
NOME | DESCRIÇÃO | TIPO | Chave primária | OBRIGATÓRIO |
---|---|---|---|---|
empresa | Empresa | CHAR(02) | ||
palete | Código do palete conferido | CHAR(18) | ||
sequencial_conferencia | Sequencial da conferencia | INTEGER | ||
item | Código do item ERP | CHAR(15) | ||
qtd_item | Quantidade de itens no palete | INTEGER | ||
qtd_sku | Quantidade de SKus do item no palete | INTEGER | ||
situacao | Situação da conferência do item. Opções: Opções P(pendente) F(finalizada) | CHAR(01) |
Este documento é material de especificação dos requisitos de inovação, trata-se de conteúdo extremamente técnico. |
---|