MA330TRB - Manipulação deste arquivo antes do processamento
Ponto-de-Entrada: MA330TRB - Manipulação deste arquivo antes do processamento
Versões: | Advanced Protheus 7.10 , Microsiga Protheus 8.11 , Microsiga Protheus 10 |
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 realiizar o recalculo do custo medio.
EM QUE PONTO : O Ponto de entrada e executado após a gravação de todas as partes do arquivo de trabalho que serão utilizadas na rotina de recalculo do custo medio, este ponto tem como objetivo a manipulação deste arquivo antes do processamento.
FONTE : MATA330
OBSERVAÇÕES : Os campos do arquivo de trabalho são:
TRB_ALIAS, TRB_RECNO, TRB_ORDEM, TRB_CHAVE, TRB_NIVEL, TRB_NIVSD3, TRB_COD, TRB_DTBASE, TRB_OP, TRB_CF, TRB_SEQ, TRB_SEQPRO, TRB_DTORIG, TRB_RECSD1, TRB_TES, TRB_DOC, TRB_TIPO, TRB_LOCAL, TRB_RECSBD, TRB_RECTRB e TRB_TIPONF.
Exemplo de Utilização - MA330TRB
#INCLUDE 'TOTVS.ch' /*/{Protheus.doc} User Function MA330TRB Permite alterar a ordenação do arquivo de trabalho TRB Obedecer a ordenação: DTOS(TRB_DTBASE)+TRB_SEQPRO+TRB_ORDEM+TRB_NIVEL+TRB_NIVSD3+TRB_CHAVE+TRB_SEQ - Para o método de apropriação sequêncial, o campo TRB_SEQPRO receberá o conteúdo dos campos D1_NUMSEQ, D2_NUMSEQ ou D3_NUMSEQ, de acordo com o TRB_ALIAS, ou seja, os movimentos são ordenados conforme a ordem de inclusão no sistema - Para o método de apropriação mensal ou diária, o campo TRB_SEQPRO ficará sempre vazio, ordenando conforme demais campos da chave @type Function @author TOTVS /*/ User Function MA330TRB() Local aArea := GetArea() Local aAreaTRB := TRB->(GetArea()) Local aFils := {} Local cNomTRB := "TRB"+cEmpAnt+"SP" Local cAlTRB := GetNextAlias() Local cQuery := "" Local cThreadID := Strzero(ThreadID(), 15) Local nFil := 0 //Realiza a filtragem das filiais selecionadas para esta execução cQuery := " Select TRB_FILIAL " cQuery += " From "+cNomTRB+" " cQuery += " Where TRB_THREAD = '"+cThreadID+"' " //Para obter as filiais do processamento atual cQuery += " And D_E_L_E_T_ = ' ' " //filtrar pela thread cQuery += " Group By TRB_FILIAL " cQuery := ChangeQuery(cQuery) dbUseArea( .T., "TopConn", TCGenQry(,,cQuery), cAlTRB, .F., .F. ) While !(cAlTRB)->(EoF()) AAdd(aFils, (cAlTRB)->TRB_FILIAL) (cAlTRB)->(DbSkip()) EndDo (cAlTRB)->(DbCloseArea()) // ===> IMPORTANTE <=== //Implementar filtragem da área de trabalho conforme //necessidade da alteração da ordenação dos movimentos //Neste exemplo, iremos alterar a ordem 301 para 302 //Montagem do where conforme índice 7 da TRB para melhor performance //TRB_THREAD+TRB_FILIAL+TRB_ORDEM+TRB_COD+TRB_NIVEL+TRB_NIVSD3+TRB_CHAVE+TRB_SEQ For nFil := 1 To Len(aFils) cQuery := " Select R_E_C_N_O_ RECTRB " cQuery += " From "+cNomTRB+" " cQuery += " Where TRB_THREAD = '"+cThreadID+"' " //<- sempre filtrar pela thread cQuery += " And TRB_FILIAL = '"+aFils[nFil]+"' " cQuery += " And TRB_ORDEM = '301' " cQuery += " And D_E_L_E_T_ = ' ' " cQuery := ChangeQuery(cQuery) dbUseArea( .T., "TopConn", TCGenQry(,,cQuery), cAlTRB, .F., .F. ) While !(cAlTRB)->(EoF()) TRB->(DbGoTo((cAlTRB)->RECTRB)) If RecLock('TRB', .F.) TRB->TRB_ORDEM := '302' //Alterar ordem conforme necessidade TRB->(MsUnlock()) EndIf (cAlTRB)->(DbSkip()) EndDo (cAlTRB)->(DbCloseArea()) Next nFil RestArea(aAreaTRB) RestArea(aArea) Return
Igor Santos Sousa gosta disto.
Visão Geral
Import HTML Content
Conteúdo das Ferramentas
Tarefas