#INCLUDE "PROTHEUS.CH" #INCLUDE "TOPCONN.CH" #INCLUDE "TOTVS.CH" /*-----------------------------------------------------------------------------------------------------------------\ | Programa | MA330TRB | Autor | Claudio Dias Junior (Focus Consultoria) | Data | 24/08/2023 | |---------------+--------------------------------------------------------------------------------------------------| | | MATA330 - Alterando ordenação de movimentos internos - PE 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 | | | | |---------------+--------------------------------------------------------------------------------------------------| | Parametros | Nil | |---------------+--------------------------------------------------------------------------------------------------| | Retorno | Nil | |---------------+--------------------------------------------------------------------------------------------------| | Específico | | |---------------+--------------------------------------------------------------------------------------------------| | Analista Resp.| Data | Manutencao Efetuada | |---------------+--------------------------------------------------------------------------------------------------| | | / / | | \-----------------------------------------------------------------------------------------------------------------*/ /* Links úteis sobre o desenvolvimento: Cross Segmento - Backoffice (Linha Protheus) - SIGAEST - MATA330 - Alterando ordenação de movimentos internos - PE MA330TRB - Modelo https://centraldeatendimento.totvs.com/hc/pt-br/articles/6366955589015-Cross-Segmento-Backoffice-Linha-Protheus-SIGAEST-MATA330-Alterando-ordena%C3%A7%C3%A3o-de-movimentos-internos-PE-MA330TRB-Modelo?source=search Cross Segmento - TOTVS Backoffice Linha Protheus - ADVPL - Ponto de entrada MA330TRB:Recalculo não acata nova ordenação https://centraldeatendimento.totvs.com/hc/pt-br/articles/360051704414-Cross-Segmento-TOTVS-Backoffice-Linha-Protheus-ADVPL-Ponto-de-entrada-MA330TRB-Recalculo-n%C3%A3o-acata-nova-ordena%C3%A7%C3%A3o */ User Function MA330TRB() Local a_Area := GetArea() Local a_AreaTRB := TRB->(GetArea()) Local a_Fils := {} Local c_NomTRB := "TRB"+cEmpAnt+"SP" Local c_AlTRB := GetNextAlias() Local c_Query := "" Local c_ThreadID := Strzero(ThreadID(), 15) Local n_Fil := 0 //---------------------------------------------------------------------------------// // Realiza a filtragem das filiais selecionadas para esta execução // //---------------------------------------------------------------------------------// c_Query := " SELECT TRB_FILIAL " c_Query += " FROM "+c_NomTRB+" " c_Query += " WHERE D_E_L_E_T_ = ' ' " // Filtrar pela thread - Para obter as filiais do processamento atual c_Query += " AND TRB_THREAD = '" + c_ThreadID + "'" c_Query += " GROUP BY TRB_FILIAL " c_Query := ChangeQuery(c_Query) DbUseArea( .T., "TopConn", TCGenQry(,,c_Query), c_AlTRB, .F., .F. ) While !(c_AlTRB)->(EoF()) aAdd(a_Fils, (c_AlTRB)->TRB_FILIAL) (c_AlTRB)->(DbSkip()) EndDo (c_AlTRB)->(DbCloseArea()) //---------------------------------------------------------------------------------// // IMPORTANTE - RECOMENDAÇÃO TOTVS // //---------------------------------------------------------------------------------// // 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 n_Fil := 1 To Len(a_Fils) c_Query := " SELECT R_E_C_N_O_ RECTRB " c_Query += " FROM "+c_NomTRB+" " //- Filtrar pela thread - Para obter as filiais do processamento atual c_Query += " WHERE TRB_THREAD = '" + c_ThreadID + "' " c_Query += " AND TRB_FILIAL = '" + a_Fils[n_Fil] + "' " c_Query += " AND TRB_ORDEM = '300' " c_Query += " AND D_E_L_E_T_ = ' ' " c_Query := ChangeQuery(c_Query) DbUseArea( .T., "TOPCONN", TCGenQry(,,c_Query), c_AlTRB, .F., .F. ) While !(c_AlTRB)->(EoF()) TRB->(DbGoTo((c_AlTRB)->RECTRB)) If TRB->TRB_CF $ "DE7" If RecLock("TRB", .F.) TRB->TRB_NIVEL := " w" TRB->(MsUnlock()) EndIf EndIf (c_AlTRB)->(DbSkip()) EndDo (c_AlTRB)->(DbCloseArea()) Next n_Fil RestArea(a_AreaTRB) RestArea(a_Area) Return Nil //****************************************************************************************************************************************************************/