Árvore de páginas

F410SCFT - Permite a utilização de pontos de entrada dentro da procedure do FINA410

Linha de Produto:

Microsiga Protheus

Versões/Release:

12

Ocorrência:

Utilização de filtros direto na procedure do FINA410.

Possibilitar filtrar os Cliente / Fornecedores que serão atualizados. 

Possibilitar definir quais títulos compõem os valores a serem atualizados nos respectivos cadastros citados. 

Parâmetros:

Nenhum

Banco de Dados:Ponto de entrada habilitado apenas para banco de dados Microsoft SQL

Retorno:

Lógico

Descrição:

Permite habilitar os pontos de entrada direto em procedure. 

Ajustar os procedures conforme filtro definido pela regra de negócio. 

Exemplo

Necessário criar o ponto de entrada em ADVPL

#Include 'PROTHEUS.CH'

User function F410SCFT()

Return .T.


Necessário que a procedure P12_09.SPS esteja atualizada com a ultima versão disponível no portal e compilada corretamente no ambiente em questão .

Necessário ajustar a condição where dentro das procedures de apoio. 

Para ajustar o filtro de clientes: 

Procedure F410SCFT_A1 

Obs: (Avaliar o nome da procedure que foi criado na base e alterar a procedure existente, no exemplo abaixo o ## representa o código da empresa e a respectiva tabela, mas podemos ter também a F140SCFT_A1_09_##) 

/* Exemplo

-- Procedure creation

ALTER PROCEDURE [dbo].[F410SCFT_A1_09_##] (
@IN_MVPAR02 Char( 01 ) ,
@cFilial_A1 Char( 8) ,
@IN_CLIDE Char( 6) ,
@IN_CLIATE Char( 6) ,
@iprimeiro_recno Integer ) AS

-- Declaration of variables
BEGIN
IF (@IN_MVPAR02 = '1' )
BEGIN
UPDATE SA1##0
WITH (ROWLOCK)
SET A1_SALDUP = 0 , A1_SALDUPM = 0 , A1_SALFIN = 0 , A1_SALFINM = 0 , A1_VACUM = 0 , A1_MSALDO = 0 , A1_METR = 0
, A1_MATR = 0 , A1_MAIDUPL = 0 , A1_ATR = 0 , A1_PAGATR = 0 , A1_NROPAG = 0 , A1_ULTCOM = ' ' , A1_MCOMPRA = 0
, A1_NROCOM = 0
WHERE A1_FILIAL = @cFilial_A1 and A1_COD between @IN_CLIDE and @IN_CLIATE and R_E_C_N_O_ between @iprimeiro_recno and @iprimeiro_recno + 1024
and D_E_L_E_T_ = ' '

/*Adicionar o controle customizado para que o cliente não seja atualizado*/
and A1_COD <> '000001'
END
ELSE
BEGIN
UPDATE SA1##0
WITH (ROWLOCK)
SET A1_SALDUP = 0 , A1_SALDUPM = 0 , A1_SALFIN = 0 , A1_SALFINM = 0 , A1_VACUM = 0
WHERE A1_FILIAL = @cFilial_A1 and A1_COD between @IN_CLIDE and @IN_CLIATE and R_E_C_N_O_ between @iprimeiro_recno and @iprimeiro_recno + 1024
and D_E_L_E_T_ = ' '

/*Adicionar o controle customizado para que o cliente não seja atualizado*/
and A1_COD <> '000001'
END
END

Para ajustar o filtro no SE1 para segregar cliente ou tipos de títulos: 

Procedure - F410SCFT_E1 

Obs: (Avaliar o nome da procedure que foi criado na base e alterar a procedure existente, no exemplo abaixo o ## representa o código da empresa e a respectiva tabela, mas podemos ter também a F140SCFT_E1_09_##) 

/* Exemplo

-- Procedure creation

ALTER PROCEDURE [dbo].[F410SCFT_E1_09_##] (
@cFilial_E1 Char( 8) ,
@cFilial_A1 Char( 8) ,
@IN_CLIDE Char( 6) ,
@IN_CLIATE Char( 6) ,
@OUT_RESULTADO Char( 1 ) output ) AS

-- Declaration of variables
BEGIN

-- Cursor declaration curSE1
DECLARE curSE1 CURSOR FOR
SELECT E1_VALOR , E1_SALDO , E1_VALLIQ , E1_VLCRUZ , E1_CLIENTE , E1_LOJA , E1_MOEDA , E1_EMISSAO , E1_TIPO , E1_VENCTO ,
E1_VENCREA , E1_BAIXA , E1_PREFIXO , E1_NUM , E1_PARCELA , E1_ORIGEM , E1_FATURA , E1_MSFIL , E1_PEDIDO , E1_SERIE
FROM SE1T10 SE1, SA1T10 SA1
WHERE SE1.E1_FILIAL = @cFilial_E1 and SA1.A1_FILIAL = @cFilial_A1 and SA1.A1_COD between @IN_CLIDE and @IN_CLIATE
and SA1.A1_COD = SE1.E1_CLIENTE and SA1.A1_LOJA = SE1.E1_LOJA and SE1.D_E_L_E_T_ = ' ' and SA1.D_E_L_E_T_ = ' '
and E1_TIPO <> 'NF' and E1_TIPO <> 'RA '

/*Adicionar o controle customizado para que o cliente não seja atualizado 
Adicionar o controle customizado para não considerar algum título em especifico*/

and A1_COD <> '000001'
and E1_TIPO <> 'RA' 

SET @OUT_RESULTADO = '1'
END */

Para ajustar o filtro de fornecedores: 

Procedure F410SCFT_A2 (onde ## é o Código da empresa e a respectiva tabela) 

Obs: (Avaliar o nome da procedure que foi criado na base e alterar a procedure existente, no exemplo abaixo o ## representa o código da empresa e a respectiva tabela, mas podemos ter também a F140SCFT_A2_09_##) 

/* Exemplo

-- Procedure creation

ALTER PROCEDURE [dbo].[F410SCFT_A2_09_##] (
@IN_MVPAR02 Char( 01 ) ,
@cFilial_A2 Char( 8) ,
@IN_FORDE Char( 6) ,
@IN_FORATE Char( 6) ,
@iprimeiro_recno Integer ) AS

-- Declaration of variables
BEGIN
IF (@IN_MVPAR02 = '1' )
BEGIN
UPDATE SA2##0
WITH (ROWLOCK)
SET A2_SALDUP = 0 , A2_SALDUPM = 0 , A2_MCOMPRA = 0 , A2_MNOTA = 0 , A2_NROCOM = 0 , A2_MSALDO = 0
WHERE A2_FILIAL = @cFilial_A2 and A2_COD between @IN_FORDE and @IN_FORATE and R_E_C_N_O_ between @iprimeiro_recno and @iprimeiro_recno + 1024
and D_E_L_E_T_ = ' '

/* Adicionar o controle customizado para que o fornecedor não seja atualizado */
and A2_COD <> '000001'
END
ELSE
BEGIN
UPDATE SA2##0
WITH (ROWLOCK)
SET A2_SALDUP = 0 , A2_SALDUPM = 0 , A2_MCOMPRA = 0 , A2_MNOTA = 0
WHERE A2_FILIAL = @cFilial_A2 and A2_COD between @IN_FORDE and @IN_FORATE and R_E_C_N_O_ between @iprimeiro_recno and @iprimeiro_recno + 1024
and D_E_L_E_T_ = ' '

/* Adicionar o controle customizado para que o fornecedor não seja atualizado */
and A2_COD <> '000001'

END
END

Para ajustar o filtro no SE2 para segregar cliente ou tipos de títulos: 

Procedure - F410SCFT_E2

Obs: (Avaliar o nome da procedure que foi criado na base e alterar a procedure existente, no exemplo abaixo o ## representa o código da empresa e a respectiva tabela, mas podemos ter também a F140SCFT_E2_09_##) 


Exemplo

-- Procedure creation

ALTER PROCEDURE [dbo].[F410SCFT_E2_09_##] (
@cFilial_E2 Char( 8) ,
@cFilial_A2 Char( 8) ,
@IN_FORDE Char( 6) ,
@IN_FORATE Char( 6) ,
@OUT_RESULTADO Char( 1 ) output ) AS

-- Declaration of variables
BEGIN

-- Cursor declaration curSE2
DECLARE curSE2 CURSOR FOR
SELECT E2_FORNECE , E2_LOJA , E2_SALDO , E2_MOEDA , E2_EMISSAO , E2_TIPO , E2_ORIGEM , E2_NUM , E2_PREFIXO , E2_VALOR
FROM SE2##0 SE2, SA2##0 SA2
WHERE SE2.E2_FILIAL = @cFilial_E2 and SA2.A2_FILIAL = @cFilial_A2 and SE2.E2_FORNECE = SA2.A2_COD and SE2.E2_LOJA = SA2.A2_LOJA
and SA2.A2_COD between @IN_FORDE and @IN_FORATE and SE2.D_E_L_E_T_ = ' ' and SA2.D_E_L_E_T_ = ' '

/* Adicionar o controle customizado para que o fornecedor não seja atualizado
Adicionar o controle customizado para não considerar algum título em especifico
and SA1.A2_COD <> '000001'
and SE2.E2_TIPO <> 'PA'

SET @OUT_RESULTADO = '1'
END