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