Manual por processos > Mercado > Gestão de Faturamento > Processo Saída via balança

Validação da Quantidade de Reserva Exclusiva dos Pedidos

Segue abaixo o conceito da reserva exclusiva do pedido. Um pedido possuirá reserva exclusiva quando esse for utilizado em uma pré-fatura que não esteja com a situação "9 - Cancelada" ou "4 - Faturada".

O pedido também possuirá reserva exclusiva quando for utilizado em uma nota fiscal que estiver com a situação "1 - Digitada". A transação da nota fiscal precisa estar integrada com uma transação de estoque do tipo "ESN", "ESF", "ESC", "ESR", "ESB", ou seja, ela precisa movimentar estoque.

1) Qual o problema:

Quantidade de reserva exclusiva dos pedidos incoerente, que pode fazer com que os pedidos fiquem com a situação dos itens e/ou cabeçalho incorretas.

Quantidades de reserva exclusiva incoerentes podem impossibilitar o uso do pedido em notas e pré-faturas e/ou ocasionar atualizações do estoque incorretas.

2) Passo a passo para corrigir:

2.1) Diagnóstico: executar o select para buscar itens de pedido que estão com a quantidade de reserva exclusiva incorreta.

SELECT TAB.* FROM (
SELECT E120IPD.CODEMP, E120IPD.CODFIL, E120IPD.NUMPED, E120IPD.SEQIPD,
E120IPD.QTDRAE RAEPED,


( SELECT ISNULL(SUM(PES.QTDPPF),0)
FROM E135PES PES
WHERE PES.CODEMP = E120IPD.CODEMP
AND PES.FILPED = E120IPD.CODFIL
AND PES.NUMPED = E120IPD.NUMPED
AND PES.SEQIPD = E120IPD.SEQIPD
AND PES.SITPES NOT IN (9, 4) ) RAEPFA,

( SELECT ISNULL(SUM(IPV.QTDFAT),0)
FROM E140IPV IPV, E140NFV NFV
WHERE IPV.CODEMP = E120IPD.CODEMP
AND IPV.FILPED = E120IPD.CODFIL
AND IPV.NUMPED = E120IPD.NUMPED
AND IPV.SEQIPD = E120IPD.SEQIPD
AND IPV.CODEMP = NFV.CODEMP
AND IPV.CODFIL = NFV.CODFIL
AND IPV.CODSNF = NFV.CODSNF
AND IPV.NUMNFV = NFV.NUMNFV
AND NFV.SITNFV = '1'
AND ( SELECT COUNT(*)
FROM E001INT
WHERE E001INT.CODTNS = IPV.TNSPRO
AND E001INT.CODEMP = IPV.CODEMP
AND E001INT.MODINT IN ('ESN', 'ESF', 'ESC', 'ESR', 'ESB') ) > 0 )
RAENFV
FROM E120IPD
LEFT JOIN E135PES ON (E120IPD.CODEMP = E135PES.CODEMP
AND E120IPD.CODFIL = E135PES.FILPED
AND E120IPD.NUMPED = E135PES.NUMPED
AND E120IPD.SEQIPD = E135PES.SEQIPD )
LEFT JOIN E140IPV ON (E120IPD.CODEMP = E140IPV.CODEMP
AND E120IPD.CODFIL = E140IPV.CODFIL
AND E120IPD.NUMPED = E140IPV.NUMPED
AND E120IPD.SEQIPD = E140IPV.SEQIPD )
WHERE E120IPD.SEQCVP = 0
SeuFiltroAqui
GROUP BY E120IPD.CODEMP, E120IPD.CODFIL, E120IPD.NUMPED, E120IPD.SEQIPD, E120IPD.QTDRAE
) TAB
WHERE RAEPED <> (RAEPFA + RAENFV)

Observação

Pode ser adicionado um filtro customizado ao comando SQL, substituindo a linha que contém o texto SeuFiltroAqui. Caso não for necessária a utilização de um filtro, retire a linha que contém o texto SeuFiltroAqui.

Nesse filtro pode ser feito uso de qualquer campo das seguintes tabelas: tabela de item do pedido (Vendas - Pedidos - Itens de Produto (E120IPD)), tabela de item da análise (Vendas - Análise de Embarque - Itens de Serviço e Produto (E135PES)) ou tabela de item da nota fiscal de saída (Vendas - Notas Fiscais de Saída - Itens de Produtos (E140IPV)).

Exemplo de filtro de um pedido em específico:

AND E120IPD.CODEMP = 1
AND E120IPD.CODFIL = 1
AND E120IPD.NUMPED= 23

Exemplo de filtro de uma análise em específico:

AND E135PES.CODEMP = 1
AND E135PES.CODFIL = 1
AND E135PES.NUMANE = 23

Exemplo de filtro de uma nota em específico:

AND E140IPV.CODEMP = 1
AND E140IPV.CODFIL = 1
AND E140IPV.CODSNF= "NE"
AND E140IPV.NUMNFV= 23

2.2) Comando update para alterar a quantidade de reserva exclusiva dos pedidos com base no que existe em pré-faturas e notas.

Atenção

Deve ser verificado o comando para casos onde existe integração com sistemas externos.

UPDATE E120IPD SET QTDRAE = ( SELECT ISNULL(SUM(PES.QTDPPF),0)
FROM E135PES PES
WHERE PES.CODEMP = E120IPD.CODEMP
AND PES.FILPED = E120IPD.CODFIL
AND PES.NUMPED = E120IPD.NUMPED
AND PES.SEQIPD = E120IPD.SEQIPD
AND ( PES.SITPES <> 9
AND PES.SITPES <> 4) )
+
( SELECT ISNULL(SUM(IPV.QTDFAT),0)
FROM E140IPV IPV, E140NFV NFV
WHERE IPV.CODEMP = E120IPD.CODEMP
AND IPV.FILPED = E120IPD.CODFIL
AND IPV.NUMPED = E120IPD.NUMPED
AND IPV.SEQIPD = E120IPD.SEQIPD
AND IPV.CODEMP = NFV.CODEMP
AND IPV.CODFIL = NFV.CODFIL
AND IPV.CODSNF = NFV.CODSNF
AND IPV.NUMNFV = NFV.NUMNFV
AND NFV.SITNFV = '1'
AND ( SELECT COUNT(*)
FROM E001INT
WHERE CODTNS = IPV.TNSPRO
AND CODEMP = IPV.CODEMP
AND MODINT IN ('ESN', 'ESF', 'ESC', 'ESR', 'ESB') ) > 0 )
WHERE QTDRAE <> (( SELECT ISNULL(SUM(PES.QTDPPF),0)
FROM E135PES PES
WHERE PES.CODEMP = E120IPD.CODEMP
AND PES.FILPED = E120IPD.CODFIL
AND PES.NUMPED = E120IPD.NUMPED
AND PES.SEQIPD = E120IPD.SEQIPD
AND ( PES.SITPES <> 9
AND PES.SITPES <> 4) )
+
( SELECT ISNULL(SUM(IPV.QTDFAT),0)
FROM E140IPV IPV, E140NFV NFV
WHERE IPV.CODEMP = E120IPD.CODEMP
AND IPV.FILPED = E120IPD.CODFIL
AND IPV.NUMPED = E120IPD.NUMPED
AND IPV.SEQIPD = E120IPD.SEQIPD
AND IPV.CODEMP = NFV.CODEMP
AND IPV.CODFIL = NFV.CODFIL
AND IPV.CODSNF = NFV.CODSNF
AND IPV.NUMNFV = NFV.NUMNFV
AND NFV.SITNFV = '1'
AND ( SELECT COUNT(*)
FROM E001INT
WHERE CODTNS = IPV.TNSPRO
AND CODEMP = IPV.CODEMP
AND MODINT IN ('ESN', 'ESF', 'ESC', 'ESR', 'ESB') ) > 0 ))
SeuFiltroAqui

Observação

Assim como no passo 2.1, aqui também poderá ser adicionado um filtro customizado ao comando SQL, substituindo a linha que contém o texto SeuFiltroAqui. Caso não for necessária a utilização de um filtro, retire a linha que contém o texto SeuFiltroAqui.

Nesse filtro pode ser feito uso de qualquer campo das seguintes tabelas: tabela de item do pedido (Vendas - Pedidos - Itens de Produto (E120IPD)), tabela de item da análise (Vendas - Análise de Embarque - Itens de Serviço e Produto (E135PES)) ou tabela de item da nota fiscal de saída (Vendas - Notas Fiscais de Saída - Itens de Produtos (E140IPV)).

Exemplo de filtro de um pedido em específico:

AND E120IPD.CODEMP = 1
AND E120IPD.CODFIL = 1
AND E120IPD.NUMPED= 23

Exemplo de filtro de uma análise em específico:

AND E135PES.CODEMP = 1
AND E135PES.CODFIL = 1
AND E135PES.NUMANE = 23

Exemplo de filtro de uma nota em específico:

AND E140IPV.CODEMP = 1
AND E140IPV.CODFIL = 1
AND E140IPV.CODSNF= "NE"
AND E140IPV.NUMNFV= 23

2.3) Habilitar a rotina de validação da quantidade de reserva exclusiva dos pedidos.

3) Rotina de validação da quantidade de reserva exclusiva dos pedidos:

Com essa rotina será possível verificar se as quantidades de reserva exclusiva do pedido estão corretas e apresentar/logar a informação para o cliente.

3.1) Como ativar a rotina:
Ela é ativada pelos parâmetros globais RaePedAnt e RaePedPos, podendo ter os seguintes valores: "P - Perguntar", "E - Erro", "L1 - Log" ou "N - Não Validar". Poderá ser informado apenas um dos valores mencionados, ou uma combinação destes.
Se for informada a letra "N" nesses parâmetros, nenhuma outra opção será considerada e não entrará na rotina.
Também não é possível informar a letra "P - Perguntar" junto da letra "E - Erro".

Observação

3.1) Como desabilitar a rotina em emergências
O recurso deve ser desabilitado mediante a alteração de algum dos parâmetros globais por meio da tela Manutenção dos parâmetros globais do sistema (F000PGS). Em emergências, caso não seja possível acessar essa tela, pode-se desabilitar por meio do comando SQL de Update abaixo:

UPDATE E000PXF
SET VLRCMP = 'N'
WHERE CODEMP = Informe o Código da Empresa aqui.
AND CODFIL = Informe o Código da Filial aqui.
AND CODUSU = 0
AND IDFFRM = '$PARAMETROS_GLOBAIS_SAPIENS$'
AND CMPFRM = Informe o Parâmetro Global que deseja desabilitar aqui.

3.2) A rotina é executada nas seguintes telas e web service:

* Formação de Cargas (via Pedidos) (F135FCP)
* Exclusão de Cargas (F135ECA)
* Formação de Cargas Via Produtos (F135FCA)
* Inclusão de Pedidos na Carga (F135IPC)
* Manutenção de Pré-faturas (F135MPF)
* Faturamento Agrupado de Cargas (F149GNA)
* Web service com.senior.g5.co.mcm.ven.prefatura, porta CancelarPreFatura

3.3) Como verificar os dados salvos em log:

Quando o parâmetro global RaePedAnt ou RaePedPos tiver um "L1", o sistema salvará um registro dentro da tabela Cadastros - Log Genérico (E000LOG) com as informações referentes ao processo, gravando na coluna nomtab o valor "ValidarRaePedido". Para trazer todas ocorrências utilizar o select abaixo:

SELECT * FROM E000LOG WHERE NOMTAB='ValidarRaePedido';

Quando o parâmetro global RaePedAnt ou RaePedPos tiver um "L2", o sistema utilizará a rotina do parâmetro global GerLogPed para salvar o log. Quando o GerLogPed estiver ativo e com o parâmetro dinâmico da filial configurado com "D - Depuração", o sistema salvará um registro dentro da tabela de usuário.

Este artigo ajudou você?