Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

...

Portuguese
Composition Setup
import.css=/download/attachments/327912/newLayout.css
Portuguese

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

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

Bloco de código
languagedelphi
themeMidnight
titleExemplo de Utilização - MA330TRB
linenumberstrue
#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