1- Para qualquer conferência, caso tenha algum pedido na posição bloqueada ou pendente e o usuário tenha permissão de acesso,a rotina deverá emitir a mensagem: Possui pedido(s) bloqueados e/ou pendentes, confirma conferência?, e permitir a conferência; 2-Buscar pedidos/cargas que os pedidos sejam condição de venda <> 4 (PCPEDC.CONDVENDA NOT IN (4,7)); 2.1- Buscar pedidos que estejam na posição montados, bloqueados e pendentes, os pedidos podem estar faturados em que ao final do processo havendo necessidade de corte a rotina irá emitir a mensagem: Possui pedido faturado e usuário com permissão de corte, porém, o corte não será permitido. Mesmo assim deseja realizar conferência?Caso seja informado um pedido ou carga faturado e o usuário tiver permissão ‘Realizar Corte’ então emitir a mensagem abaixo: "Corte não permitido para pedidos faturados" Caso seja informado um pedido/carga inexistente então deverá mostrar a mensagem : Pedido ou carga não encontrado!; Caso seja informado um pedido ou uma carga que tenha pedido bloqueado ou pendente deverá emitir a mensagem: Não é possível conferir pedido bloqueado ou pendente!”; Quando acessar um pedido/carga deverá validar se a conferência foi finalizada, e caso tenha sido então deverá mostrar a mensagem: ‘Conferência já foi finalizada por xxx (nome do conferente)!’ Caso seja informado um pedido Já faturado, a rotina irá liberar para fazer a conferência, mas ao final caso haja necessidade de corte então não poderá realizar corte mostrando a mensagem abaixo: ‘Não é permitir corte para pedidos faturados,deseja finalizar a conferência sem o corte; Caso já tenha sido finalizada a conferência então deverá mostrar a mensagem: “Conferência finalizada por xxxxx(nome do Conferente) Data: (mostrar data e hora que foi finalizado); Caso o pedido/carga informado tenha sido iniciado a conferência mas que ainda não tenha sido finalizado, mostrar a seguinte mensagem: “Conferência já iniciada por xxxxx(nome do Conferente) Data: XX / XX / XX”; Caso o pedido/carga não tenha sido iniciado a conferência então deverá registrar o início da conferência e registrar a matrícula do separador, gravando todos os produtos na tabela de conferência. Caso o pedido/carga já tenha sido iniciado pelo próprio usuário e não foi finalizado, então a rotina deverá permitir que o usuário volte para a conferência, onde deverá voltar já considerando os produtos que foram conferidos total e/ou parcial. No campo do código de barras, caso o usuário tenha permissão de acesso para usar o multiplicador então após o usuário digitar a quantidade e a tecla de multiplicador conforme item 2.2 a rotina deverá considerar essa quantidade como multiplicador do próximo produto, considerando o fator de conversão do SKU lido. Ao solicitar um produto, caso o usuário informe um produto que não é o correto, então deverá gerar ocorrência (PCOCORRENCIARF), com o registro do produto errado que foi informado, ou caso tenha bipado um código de barras não cadastrado deverá gerar o registro com o código de barras lido. Esse log de ocorrência deve gerar quando tentar conferir quantidade a maior, quando conferir quantidade a menor no caso de corte e quando passar produto que não faz parte da conferência. Caso seja informado todos os produtos e quantidades, e não for conferência cega, conforme item 2.8, então a rotina deverá ir para uma tela confirmando a conferência e caso o usuário tenha permissão de acesso para imprimir etiquetas então nessa mesma tela mostrar todas as impressoras instaladas e solicitar a quantidade de etiquetas deverá ser impressas, onde no campo com o número de etiquetas deve estar = 0 e esperar a quantidade que será informada pelo conferente, e também gravar o número de vias(PCPEDC.NUMVIASETIQUETA). Ao finalizar a conferência, caso a quantidade separada for diferente do solicitado, e se o usuário tiver a permissão de acesso de corte a rotina deverá cortar as quantidades que não foram separadas. Caso o produto a ser separado for controlado por Lote PCPRODUT.ESTOQUEPORLOTE=S, e não esteja parametrizado para Indução de Lote, então: 1.1- Ao informar o produto, utilizando a digitação pelo código do produto ou codauxiliar, deverá apresentar um campo para o usuário informar o lote separado; 1.2- Deverá ser validado se o lote informado pelo usuário consta na base de dados (PCLOTE); 2- Deverá criar permissão para permitir, ou não a conferência de lote sem estoque suficiente; 2.1- Sim: não deverá validar se a quantidade informada pelo conferente possui saldo suficiente no lote ou não; 2.2- Não: deverá validar se a quantidade informada pelo conferente possui saldo suficiente no lote ou não; 3- Ao finalizar o processo de conferência, o PCPEDI deverá ser desdobrado conforme os lotes que foram informado, atualizando as quantidades de cada linha; Observação: O cabeçalho do pedido PCPEDC, não deverá ser atualizado. O processo de desdobramento de lote não influencia nas informações do cabeçalho do pedido; 4- Caso o usuário não tenha permissão para conferir lotes com quantidades insuficientes, e a quantidade informada for maior que a quantidade do lote, a rotina deverá apresentar a mensagem: Saldo de estoque do lote insuficiente para conferência; 5- Caso estiver parametrizado para informar lote na separação, a validação deverá ser feita pela PCLOTEQTRESERV, caso não, deverá validar saldo através do cálculo de estoque disponível PCLOTE.QT - CLOTE.QTBLOQUEADA - PCLOTE.QTRESERV = Saldo disponível; Observações: - A cada inserção na planilha, deverá ser gravado o registro na tabela PCCARREGI:
update PCCARREGI set NUMCAR = :NUMCAR, CODPROD = :CODPROD, QT = :QT, QTSEPARADA = :QTSEPARADA, CODFUNCCONF = :CODFUNCCONF Reservando os Lotes: UPDATE PCLOTE SET QTRESERV = NVL(QTRESERV, 0) + :QTRESERV WHERE CODFILIAL = :CODFILIAL AND CODPROD = :CODPROD AND NUMLOTE = :NUMLOTE Atualizando as informações dos itens dos pedidos: UPDATE PCPEDI SET QTSEPARADA = QT , CODFUNCSEP = :CODFUNCSEP , CODFUNCCONF = :CODFUNCCONF , DATACONF = :DATACONF , DATACONFFIM = SYSDATE WHERE NUMCAR IN (SELECT NUMCAR FROM PCCARREG WHERE NUMCAR = :NUMCAR) - Atualizando os dados de conferência do cabeçalho do pedido de venda:
UPDATE PCCARREG SET DTFIMCHECKOUT = SYSDATE, CODFUNCCONF = :CODFUNCCONF WHERE NUMCAR IN (SELECT NUMCAR FROM PCCARREG WHERE NUMCAR = :NUMCAR) - Insert nos itens dos pedidos de venda (Desdobramento dos itens);
- Duplicar a linha do PCPEDI inserindo as informações de quantidade e lotes;
- Delete nos itens originais que estavam sem lotes informados:
DELETE PCPEDI WHERE NUMLOTE IS NULL AND NUMCAR = :NUMCAR AND NUMPED = :NUMPED AND CODPROD = :CODPROD 6- Ao informar o produto controlado por Lote PCPRODUT.ESTOQUEPORLOTE=S, utilizando a digitação pelo código do produto ou codauxiliar, deverá apresentar um campo para o usuário informar o lote separado; 7- Caso o usuário não tenha permissão para conferir lotes com quantidades insuficientes, e a quantidade informada for maior que a quantidade do lote, a rotina deverá apresentar a mensagem: Saldo de estoque do lote insuficiente para conferência. Ao bipar um código onde for encontrado mais que um resultado , mais de um produto com o mesmo código, deverá abrir uma tela mostrando a descrição e embalagem de todos os que possuem o código lido, e o usuário irá selecionar qual produto é o que deseja, caso seja diferente do produto esperado então deverá registrar uma ocorrência (PCOCORRENCIARF); |