CONTEÚDO

  1. Visão Geral
  2. Exemplo de utilização
    1. Fluxo
    2. Pré-requisitos e Restrições
    3. Configurações do JOB
    4. Configurações do Consumo de Verba
  3. Outras Ações / Ações relacionadas
  4. JOB
  5. Tabelas Utilizadas

01. VISÃO GERAL

Esta documentação visa auxiliar na configuração deste processo que será executado pelo JOB sp_AtualizaVerbaBaixaPDV ou pelos JOBs da Pkg_Mrl_VerbaSelloutConsumo.

O ERP oferece como opção a baixa de verba em modo assíncrono na importação das vendas de frente de caixa (PDV) e no faturamento de documento fiscal no ERP, especialmente para as empresas que trabalham com o modelo de verba compartilhada. Com essa opção, a atualização da verba acontece em segundo plano, permitindo que a baixa de venda ou o faturamento seja processado com maior desempenho, reduzindo a concorrência no banco de dados e otimizando a operação.

02. EXEMPLO DE UTILIZAÇÃO

Fluxo

Imagem 1 - Fluxo dos processos executados no JOB

Pré-requisitos e Restrições

Existir verbas vigentes no momento das vendas. Entende-se como verba vigente uma verba que esteja no período de validade e que tenha saldo para consumir.

Configurações do JOB

Para clientes que já utilizam o JOB sp_AtualizaVerbaBaixaPDV e vão substituir pelos novos JOBs da Pkg_Mrl_VerbaSelloutConsumo será necessário a interrupção dos Schedulers de importação de vendas e verficar se todos os dados da tabela de controle de consumo assíncrono foram finalizados, ou seja, na tabela Mrl_CtrlConsumoAssincronoVerba não podem existir linhas com Status 1 ou 2. Em seguida, também interromper os Schedulers do processo de baixa de verba.

Observação: Caso ainda existam linhas que não foram finalizadas na tabela de controle de consumo assíncrono após a interrupção dos Schedulers, será necessário entrar em contato com o Suporte para solicitar o ajuste antes da ativação dos novos JOBs

Configurar o PD CONTR_VERBA_BONIF_BAIXA_PDV do grupo BAIXA_PDV


Por padrão, é sugerido configurar para executar a cada 1 minuto.

Parâmetros


Executar para uma única divisão realizando commits a cada N linhas processadas

Configuração para clientes com muitas Divisões que possuem muitas empresas, o exemplo abaixo executará o processo para a Divisão 1, commitando os dados a cada 50 linhas processadas.

begin 
	sp_AtualizaVerbaBaixaPDV(pnQtdLinhaCommit => 50, 
							 pnNroDivisao => 1); 
end;

Executar para uma lista de divisões realizando commits a cada N linhas processadas

Configuração para clientes com muitas Divisões mas que não possuem muitas empresas, o exemplo abaixo executará o processo para as Divisões 2, 3, 4 commitando os dados a cada 50 linhas processadas.

begin
  for ListaDivisao in (select a.NroDivisao
                       from   max_Divisao a
                       where  a.NroDivisao in (2, 3, 4))
  loop
     sp_AtualizaVerbaBaixaPDV(pnQtdLinhaCommit => 50,
							  pnNroDivisao => ListaDivisao.NroDivisao);
  end loop;
end;

O objeto abaixo faz parte do novo fluxo de baixa da verba e está disponível a partir do service pack 24.01.002

Para utilizar os novos objetos é necessário configurar o PD IND_FLUXO_CONSUMO com a opção S.

Configuração para clientes com muitas Divisões que possuem muitas empresas, os exemplos abaixo executarão os processos para uma única Divisão ou Empresa, commitando os dados a cada 50 linhas processadas.

begin 
	Pkg_Mrl_VerbaSelloutConsumo.sp_InsereFila(pnNroDivisao => 1
											  pnQtdLinhaCommit => 50);
end;
begin 
	Pkg_Mrl_VerbaSelloutConsumo.sp_ConsumoAssincrono(pnNroDivisao => 1
													 pnQtdLinhaCommit => 50);
end;
begin 
	Pkg_Mrl_VerbaSelloutConsumo.sp_AtualizaVenda(pnNroEmpresa => 100
												 pnQtdLinhaCommit => 50); 
end;
begin 
	Pkg_Mrl_VerbaSelloutConsumo.sp_AtualizaCusto(pnNroEmpresa => 100
												 pnQtdLinhaCommit => 50); 
end;

Configuração para clientes com muitas Divisões mas que não possuem muitas empresas, os exemplos abaixo executarão os processos para uma lista de Divisões ou Empresas, commitando os dados a cada 50 linhas processadas.

begin
  for ListaDivisao in (select a.NroDivisao
                       from   max_Divisao a
                       where  a.NroDivisao in (2, 3, 4))
  loop  	
	Pkg_Mrl_VerbaSelloutConsumo.sp_InsereFila(pnNroDivisao => ListaDivisao.NroDivisao,
											  pnQtdLinhaCommit => 50); 
  end loop;
end;
begin
  for ListaDivisao in (select a.NroDivisao
                       from   max_Divisao a
                       where  a.NroDivisao in (2, 3, 4))
  loop  	
	Pkg_Mrl_VerbaSelloutConsumo.sp_ConsumoAssincrono(pnNroDivisao => ListaDivisao.NroDivisao,
													 pnQtdLinhaCommit => 50); 
  end loop;
end;
begin
  for ListaEmpresa in (select a.NroEmpresa
                       from   max_Empresa a
                       where  a.NroEmpresa in (200, 300, 400))
  loop  	
	Pkg_Mrl_VerbaSelloutConsumo.sp_AtualizaVenda(pnNroEmpresa => ListaEmpresa.NroEmpresa,
												 pnQtdLinhaCommit => 50); 
  end loop;
end;
begin
  for ListaEmpresa in (select a.NroEmpresa
                       from   max_Empresa a
                       where  a.NroEmpresa in (200, 300, 400))
  loop  	
	Pkg_Mrl_VerbaSelloutConsumo.sp_AtualizaCusto(pnNroEmpresa => ListaEmpresa.NroEmpresa,
												 pnQtdLinhaCommit => 50); 
  end loop;
end;

Executar para uma única divisão realizando commits a cada N linhas processadas

Configuração para clientes com muitas Divisões que possuem muitas empresas, o exemplo abaixo executará o processo para a Divisão 1, commitando os dados a cada 50 linhas processadas.

begin 
	Pkg_Mrl_VerbaSelloutConsumo.sp_ConsumoAssincrono(pnNroDivisao => 1
													 pnQtdLinhaCommit => 50);
end;

Executar para uma lista de divisões realizando commits a cada N linhas processadas

Configuração para clientes com muitas Divisões mas que não possuem muitas empresas, o exemplo abaixo executará o processo para as Divisões 2, 3, 4 commitando os dados a cada 50 linhas processadas.

begin
  for ListaDivisao in (select a.NroDivisao
                       from   max_Divisao a
                       where  a.NroDivisao in (2, 3, 4))
  loop  	
	Pkg_Mrl_VerbaSelloutConsumo.sp_ConsumoAssincrono(pnNroDivisao => ListaDivisao.NroDivisao,
													 pnQtdLinhaCommit => 50); 
  end loop;
end;

Executar para uma única empresa realizando commits a cada N linhas processadas

Configuração para clientes com muitas Empresas que possuem muitas vendas, o exemplo abaixo executará o processo para a Empresa 100, commitando os dados a cada 50 linhas processadas.

begin 
	Pkg_Mrl_VerbaSelloutConsumo.sp_AtualizaVenda(pnNroEmpresa => 100
												 pnQtdLinhaCommit => 50); 
end;

Executar para uma lista de empresas realizando commits a cada N linhas processadas

Configuração para clientes com muitas Empresas mas que não possuem muitas vendas, o exemplo abaixo executará o processo para as Empresas 200, 300 e 400 commitando os dados a cada 50 linhas processadas.

begin
  for ListaEmpresa in (select a.NroEmpresa
                       from   max_Empresa a
                       where  a.NroEmpresa in (200, 300, 400))
  loop  	
	Pkg_Mrl_VerbaSelloutConsumo.sp_AtualizaVenda(pnNroEmpresa => ListaEmpresa.NroEmpresa,
												 pnQtdLinhaCommit => 50); 
  end loop;
end;

Executar para uma única empresa realizando commits a cada N linhas processadas

Configuração para clientes com muitas Empresas que possuem muitas vendas, o exemplo abaixo executará o processo para a Empresa 100, commitando os dados a cada 50 linhas processadas.

begin 
	Pkg_Mrl_VerbaSelloutConsumo.sp_AtualizaCusto(pnNroEmpresa => 100
												 pnQtdLinhaCommit => 50); 
end;

Executar para uma lista de empresas realizando commits a cada N linhas processadas

Configuração para clientes com muitas Empresas mas que não possuem muitas vendas, o exemplo abaixo executará o processo para as Empresas 200, 300 e 400 commitando os dados a cada 50 linhas processadas.

begin
  for ListaEmpresa in (select a.NroEmpresa
                       from   max_Empresa a
                       where  a.NroEmpresa in (200, 300, 400))
  loop  	
	Pkg_Mrl_VerbaSelloutConsumo.sp_AtualizaCusto(pnNroEmpresa => ListaEmpresa.NroEmpresa,
												 pnQtdLinhaCommit => 50); 
  end loop;
end;

Configurações do Consumo de Verba

Configurar o PD FORMA_APLIC_VERBA_BONIF do grupo PED_VENDA

Observação: O consumo das vendas importadas do PDV será na geração do documento fiscal com exceção dos itens importados do pedido de venda no ERP que já foram consumidos.


Configurar o CGO utilizado na venda para utilizar verba.

Imagem 2 - Códigos Gerais de Operação (CGO)

03. Outras Ações / Ações relacionadas

AçãoDescrição
Código Geral de Operação (CGO) - MAX0023Configurar o CGO utilizado na venda para utilizar verba.
Parâmetros Dinâmicos - DEA0090Configurar os PDs relacionados ao processo.

04. JOB

Principais Campos e Parâmetros

Não há

05. TABELAS UTILIZADAS

Não há