Árvore de páginas




Ponto-de-Entrada: MA330SEQ - Permite alterar a ordem de recálculo do custo médio, alterando o campo TRB->TRB_ORDEM


Versões:Advanced Protheus 7.10 e acima.
Compatível Países:Todos
Sistemas Operacionais:Todos
Compatível às Bases de Dados:Todos
Idiomas:Espanhol , Inglês

Descrição:

LOCALIZAÇÃO : Function MATA330( ) - Função utilizada para realizar o recalculo do custo medio.

EM QUE PONTO : O Ponto de entrada é executado em varias etapas antes da gravação do arquivo de trabalho que serão utilizadas na rotina de recalculo do custo medio, nas etapas dos movimentos de entradas SD1,movimentos internos SD3 e nos movimentos de saidas SD2, quando não utilizado procedures.

Na utilização de procedures, onde o arquivo de trabalho TRB é gerado, o sistema instala o ponto de entrada padrão em procedures sem qualquer tratamento que modifique o campo ORDEM e o modelo abaixo pode ser alterado da mesma forma como é feito no ADVPL.

Lembrando que a cada nova instalação de procedures o modelo padrão sem regra será instalado e deve ser ajustado conforme customização feita. 



FONTE : MATA330

OBSERVAÇÕES : Os campos do arquivo de trabalho são:

TRB_ALIAS, TRB_ORDEM

Exemplo de Utilização - MA330TRB
#Include "Protheus.ch"

/*/{Protheus.doc} User Function MA330SEQ
    Permite alterar especificamente a ORDEM do arquivo de trabalho TRB.
    O arquivo TRB é ordenado conforme o indice:
    DTOS(TRB_DTBASE)+TRB_SEQPRO+TRB_ORDEM+TRB_NIVEL+TRB_NIVSD3+TRB_CHAVE+TRB_SEQ
    alterando o campo TRB_ORDEM, modifica a posição do registro na ordenação do arquivo
    mudando o tempo no fluxo que o registro será tratado          
    @type  Function
    @author TOTVS
    /*/
User Function MA330SEQ()
  
Local cOrdem := PARAMIXB[1] //ordem padrão do recalculo
Local cAlias := PARAMIXB[2] //Nome da tabela que esta sendo tratada no padrão do recalculo

// o modelo abaixo força que o produto TESTE seja considerado depois de todos outros produtos
// Na entrada
If cAlias == 'SD1' .and. cOrdem == '100'
    If SD1->D1_COD == 'TESTE'
        cOrdem := '101'
    EndIf
EndIf
// Na movimentação
If cAlias == 'SD3' .and. cOrdem == '300'
    If SD3->D3_COD == 'TESTE'
        cOrdem := '301'
    EndIf
EndIf
// Na saida
If cAlias == 'SD2' .and. cOrdem == '500'
    If SD2->D2_COD == 'TESTE'
        cOrdem := '501'
    EndIf
EndIf 
// Lembrando que a mudança na ordenação é uma customização que altera os resulados de custos padrão 
// do recalculo
Return cOrdem

================================================================================================================================================

Ponto de entrada MA330SEQ.SQL para uso com procedures sem regras padrão instalado no banco com o nome MA330SEQ_xx , onde xx = codigo da empresa 

-- Procedure creation 
ALTER PROCEDURE [dbo].[MA330SEQ_T1] (
@IN_ORDEM Char( 03 ) , 
@IN_CALIAS Char( 03 ) , 
@IN_RECFILE Integer , 
@OUT_ORDEM Char( 03 ) output , 
@OUT_ALIAS Char( 03 ) output , 
@OUT_RESULTADO Char( 01 ) output ) AS

-- Declaration of variables
BEGIN
        SET @OUT_ORDEM = @IN_ORDEM 
        SET @OUT_ALIAS = @IN_CALIAS 
        SET @OUT_RESULTADO = '1' 
END



ponto de entrada MA330SEQ ajustado igual ao modelo ADVPL acima

-- Procedure creation 
ALTER PROCEDURE [dbo].[MA330SEQ_T1] (
    @IN_ORDEM Char( 03 ) , 
    @IN_CALIAS Char( 03 ) , 
    @IN_RECFILE Integer , 
    @OUT_ORDEM Char( 03 )  output , 
    @OUT_ALIAS Char( 03 )  output , 
    @OUT_RESULTADO Char( 01 )  output ) AS
 
-- Declaration of variables
BEGIN
   SET @OUT_ORDEM  = @IN_ORDEM 
   SET @OUT_ALIAS  = @IN_CALIAS 
   
   -- Na Entrada
   IF  (@IN_CALIAS = 'SD1' ) and (@IN_ORDEM = '100') begin
	   If SD1.D1_COD = 'TESTE' begin
		  set @OUT_ORDEM = '101'
	   End
   End
   
   -- Na movimentação 
   IF  (@IN_CALIAS = 'SD3' ) and (@IN_ORDEM = '300') begin
	   If SD3.D3_COD = 'TESTE' begin
		  set @OUT_ORDEM = '301'
	   End
   End

   -- Na Saida 
   IF  (@IN_CALIAS = 'SD2' ) and (@IN_ORDEM = '500') begin
	   If SD2.D2_COD = 'TESTE' begin
		  set @OUT_ORDEM = '501'
	   End
   End

   SET @OUT_RESULTADO  = '1' 
END