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
TRB_ALIAS, TRB_ORDEM
#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