Devido à descontinuação da versão 5.10.3, que ocorrerá em 30/09/2025, informamos que este manual não receberá atualizações a partir desta data. Para mais informações sobre a evolução do Gestão Empresarial | ERP, acesse a documentação sobre a PCVV - Política do Ciclo de Vida das Versões.

Informamos que as funcionalidades da Reforma Tributária estão disponíveis apenas a partir da versão 5.10.4 do Gestão Empresarial.
Acesse o Portal de Exigências Legais da Senior para saber como preparar o seu negócio!

Ajuda por telas > Mercado > Gestão de Distribuição > Cargas > Validação da Quantidade de Reserva Exclusiva dos Pedidos

Validação da Quantidade de Reserva Exclusiva dos Pedidos

1) Conceito

Um pedido possui reserva exclusiva quando está vinculado a uma pré-fatura cuja situação não seja "9 – Cancelada" ou "4 – Faturada".

Além disso, o pedido também terá reserva exclusiva quando estiver vinculado a uma nota fiscal com a situação "1 – Digitada", desde que a transação dessa nota fiscal esteja integrada a uma transação de estoque dos tipos: "ESN", "ESF", "ESC", "ESR" ou "ESB", ou seja, que gere movimentação de estoque.

2) Quais os problemas:

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.

3) Passo a passo para corrigir:

3.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 )
LEFT JOIN
E075PRO
ON
(
E120IPD.CODEMP = E075PRO.CODEMP
AND E120IPD.CODPRO = E075PRO.CODPRO )
WHERE
1=1
AND E075PRO.INDKIT <> 'S'
— AND 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. O canal, suporte ou manutenção podem incluir filtros em qualquer uma das tabelas envolvidas no comando SQL, conforme a necessidade.

Nesse filtro, é possível utilizar 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

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

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

4) 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.

4.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 simples", "L2 - Log aprimorado" ou "N - Não Validar". Poderá ser informado apenas um dos valores mencionados, ou uma combinação destes.

Regras de preenchimento

Pré-requisitos

Observação

4.2) Como a rotina funciona
Quando são encontradas divergências na quantidade de reserva exclusiva dos pedidos, antes e/ou depois do processamento das rotinas em que essa validação se aplica (a depender do parâmetro global utilizado e da configuração de cada um), o sistema pode perguntar ao usuário o que deve ser feito, gerar um erro, logar ou não validar.

4.3) 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.

4.4) A rotina é executada nas seguintes telas, processos automáticos 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)
* Atendimento Automático de Pedidos (Análise de embarque) (F135AEA)
* Processo automático 01 - Análise de Embarque
* Processo automático 145 - Integração Pré-fatura
* Web service com.senior.g5.co.mcm.ven.prefatura, porta CancelarPreFatura

4.5) Como consultar os dados salvos em log:

Para consultar as divergências encontradas pela validação da quantidade de reserva exclusiva, deve-se proceder de uma das seguintes formas:

SELECT * FROM E000LOG WHERE NOMTAB='ValidarRaePedido';

SELECT * FROM USU_T120PEDLOG;

5) Onde o sistema pode e onde não pode executar a validação

Os parâmetros dinâmicos PEDIDO.VALIDARQTDRAE.ONDE.PERMITE e PEDIDO.VALIDARQTDRAE.ONDE.NAOPERMITE definem as telas, rotinas e web services em que a validação da quantidade reservada exclusivamente de um pedido poderá, respectivamente, ser executada e não executada.

Como o sistema usa os dois parâmetros para saber se a validação será ou não realizada

O sistema executa os passos na ordem descrita abaixo. Quando, no entanto, não é permitida a validação, o restante dos passos não é seguido.

1. Se existe informação dentro do parâmetro PEDIDO.VALIDARQTDRAE.ONDE.NAOPERMITE e a tela, rotina e/ou web service executado está listado dentro do parâmetro, então não ocorre validação. Os demais passos não são executados.

2. Se não existe informação dentro do parâmetro PEDIDO.VALIDARQTDRAE.ONDE.NAOPERMITE, então o sistema passa para o passo 3.

3. Se existe informação dentro do parâmetro PEDIDO.VALIDARQTDRAE.ONDE.PERMITE e a tela, rotina e/ou web service executado está listado dentro do parâmetro, então ocorre validação. Os demais passos não são executados.

4. Se não existe informação dentro do parâmetro PEDIDO.VALIDARQTDRAE.ONDE.PERMITE, então ocorre a validação. Os demais passos não são executados.

5. Se não há informação em nenhum dos parâmetros, então ocorre a validação.

Exemplo: Geração de uma pré-fatura pela tela Formação de Cargas (via Pedidos) (F135FCP).

Lista Valor Resultado
Não Permite (vazio) Pode validar.
Permite (vazio) Pode validar.

Vai executar a validação: sim.

Lista Valor Resultado
Não Permite F135FCP Não pode validar. Dessa forma, nem chega a executar a lista "Permite".
Permite (vazio) -

Vai executar a validação: não.

Lista Valor Resultado
Não Permite (vazio) Pode validar.
Permite F135FCP Pode validar.

Vai executar a validação: sim.

Lista Valor Resultado
Não Permite F135FCP Não pode validar. Dessa forma, nem chega a executar a lista "Permite".
Permite F135FCP -

Vai executar a validação: não.

Lista Valor Resultado
Não Permite F135ECA Pode validar.
Permite (vazio) Pode validar.

Vai executar a validação: sim.

Lista Valor Resultado
Não Permite F135ECA Pode validar.
Permite F135ECA Não pode validar.

Vai executar a validação: não.

Lista Valor Resultado
Não Permite (vazio) Pode validar.
Permite F135ECA Não pode validar.

Vai executar a validação: não.

Observação

Ao utilizar um processo automático que usa a tela para processamento, serão considerados tanto o nome da tela quanto o código da rotina do processo automático. O mesmo acontece com web services que utilizem a tela para processamento.

6) Identificador de regra VEN-000VARAE01

Com o objetivo de disponibilizar um ponto de regras para uso genérico na rotina de validação da quantidade de reserva exclusiva dos pedidos, foi criado o identificador de regras VEN-000VARAE01. Para acessá-lo, clique aqui.

Este artigo ajudou você?