Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.
Aviso
titleEste Ponto de Entrada é Válido a partir do Release 12.1.14 07 e superiores.

 

TROCA DE LOCALIZAÇÃO NA ÁRVORE LÓGICA CONFORME ALTERAÇÃO DE CENTRO DE CUSTO DO BEM 

Ponto de entrada para permitir realizar outras atualizações após a alteração do centro de custo e\ou centro de trabalho do bem 

Características do Requisito

Linha de Produto:

Microsiga Protheus

Segmento:

Manufatura

Módulo:

SIGAMNT - Manutenção de Ativos e Gestão de Frotas

Rotina:

Rotina

Nome Técnico

MNTA902Árvore Lógica

NGMNT00

Funções Genéricas

Consulta Gerencial de Custos

Rotina(s) envolvida(s)

Nome Técnico

MNTC935

MNTA902

Árvore Lógica

NGMNT00Funções Genéricas

Issues Relacionados

12.1.147: MNG-1385-856 - 12.1.16 - MNG-3790

País(es):

Todos

Banco(s) de Dados:

Todos

Sistema(s) Operacional(is):

Todos

Ponto de Entrada

Retorno

Descrição:

Ponto de Entrada que possibilita filtrar os dados que serão apresentados na Consulta Gerencial de Custos.para permitir realizar outras atualizações apos a alteração do centro de custo e\ou centro de trabalho do bem. 

Localização:

SIGAMNT: Consultas/Gerencial/CustosAtualizações/Controle de Oficina/Árvore/Árvore

Eventos:

Consulta Gerencial de Custos (MNTC935Árvore Lógica(MNTA902)

Programa Fonte:

MNTC935MNTA902.PRX

Função:

MNTC9351NGMNTCC1()

Parâmetros:

Nome

Tipo

Descrição

Obrigatório
aFiltroArrayEnvia o array com o conteúdo após aplicação do filtro.Sim

Exemplo:

#Include 'Protheus.ch'

User Function MNTC9351()

Local aFiltro := ""

Local aFiltroOld := aColsRod

Local nX := 0

// Parâmetros

// Array contendo contendo os dados que serão filtrados.

// Cada posição do Array possui 7 campos: 1 - Código, 2 - Descrição, 3 - Valor Previsto, 4 - Percentual Previsto, 5 - Valor Realizado, 6 - Percentual Realizado, 7 - Quantidade de Registros

//Cria um clone para manter o aCols original

aFiltro := aClone(aFiltroOld)

For nX := 1 to Len(aFiltro)

If Len(aFiltro) > 1 .And. !(Alltrim(aFiltro[nX][1]) == "1.001.999")

aDel(aFiltro,nX)

aSize(aFiltro,Len(aFiltro)-1)

nX--

Else

If Len(aFiltro) == nX .And. !(Alltrim(aFiltro[nX][1]) == "1.001.999") .And. !(Alltrim(aFiltro[nX][1]) $ "SIN/MUL/ABA/DOC/MUL/DOC/OFI/PNE")

aDel(aFiltro,nX)

aSize(aFiltro,Len(aFiltro)-1)

nX--

EndIf

EndIf

Next nX

PARAMIXB[1]
CaracterCódigo do Bem
PARAMIXB[2]
CaracterCentro de Custo
PARAMIXB[3]
Caracter
Centro de Trabalho

Retorno:

(Nulo)

Bloco de código
languagesql
themeEclipse
titleExemplo - Alterando o bem de localização apos a alteração de centro de custo
User Function NGMNTCC1()

    Local aArea := GetArea()

    Local cBEM    := PARAMIXB[1] //Código do Bem
    Local cCUSTO  := SubStr(PARAMIXB[2],1,10) //Centro de Custo
    Local cCenTab := PARAMIXB[3] //Centro de Trabalho
    Local cCodNiv := "" //Código Nível
    Local cNivSup := "" //Nível Superior
    //Verifica se existe o Novo Centro de Custo numa localização na Árvore Lógica
    cCodNiv := NGSEEK("TAF","001"+cCUSTO,11,"TAF_CODNIV")
    If !Empty(cCodNiv) 
	    cNivSup := NGSEEK("TAF",cCodNiv,8,"TAF_NIVSUP")
	EndIf

    dbSelectArea("TAF")
    dbSetOrder(10) //TAF_FILIAL+TAF_INDCON+TAF_CODCON+TAF_MODMNT
    If !Empty(cNivSup) .And. dbSeek(xFilial("TAF") + "1" + cBEM)
        RecLock("TAF",.F.)
        TAF->TAF_NIVSUP := cCodNiv
        MsUnLock("TAF")
    Else
        dbSelectArea("TAF")
        RecLock("TAF",.T.)
        TAF->TAF_FILIAL := xFilial("TAF")
        TAF->TAF_CODEST := "001"
        TAF->TAF_CODNIV := fRetCodNiv()
        TAF->TAF_ORDEM  := fRetCodOrd()
        TAF->TAF_NOMNIV := NGSEEK("SI3",cCUSTO,1,"Substr(I3_DESC,1,40)")
        TAF->TAF_NIVEL  := 2
        TAF->TAF_NIVSUP := "001"
        TAF->TAF_INDCON := "2"
        TAF->TAF_MODMNT := "X"
        TAF->TAF_CCUSTO := cCUSTO
        TAF->TAF_CENTRA := cCenTab
        TAF->TAF_ETAPA  := "2"
        MsUnLock("TAF")
        cCodNiv := NGSEEK("TAF","001"+Padr( cCUSTO, Len( TAF->TAF_CCUSTO) ),11,"TAF_CODNIV")
        dbSelectArea("TAF")
        dbSetOrder(10) //TAF_FILIAL+TAF_INDCON+TAF_CODCON+TAF_MODMNT
        If dbSeek(xFilial("TAF") + "1" + cBEM)
            RecLock("TAF",.F.)
            TAF->TAF_NIVSUP := cCodNiv
            MsUnLock("TAF")
        EndIf
    EndIf

    RestArea( aArea )

Return

Static Function fRetCodNiv()

    Local cQuery, cAliasQry
    Local cProxCod := "000"

    cAliasQry := GetNextAlias()
    cQuery := " SELECT MAX(TAF.TAF_CODNIV) AS cCodMax FROM "+RetSqlName("TAF")+" TAF "
    cQuery += " WHERE TAF.TAF_FILIAL = '"+xFilial("TAF")+"' AND TAF.D_E_L_E_T_ <> '*'"
    cQuery := ChangeQuery(cQuery)
    dbUseArea( .T., "TOPCONN", TCGENQRY(,,cQuery),cAliasQry, .F., .T.)

    dbSelectArea(cAliasQry)
    dbGoTop()
    If !Eof()
        cProxCod := (cAliasQry)->cCodMax
    EndIf
    (cAliasQry)->(dbCloseArea())
    cProxCod := Soma1(AllTrim(cProxCod))

Return cProxCod

Static Function fRetCodOrd()

    Local cQuery, cAliasQry
    Local cProxCod := "000"

    cAliasQry := GetNextAlias()
    cQuery := " SELECT MAX(TAF.TAF_ORDEM) AS cCodMax FROM "+RetSqlName("TAF")+" TAF "
    cQuery += " WHERE TAF.TAF_FILIAL = '"+xFilial("TAF")+"' AND TAF.D_E_L_E_T_ <> '*'"
    cQuery := ChangeQuery(cQuery)
    dbUseArea( .T., "TOPCONN", TCGENQRY(,,cQuery),cAliasQry, .F., .T.)

    dbSelectArea(cAliasQry)
    dbGoTop()
    If !Eof()
        cProxCod := (cAliasQry)->cCodMax
    EndIf
    (cAliasQry)->(dbCloseArea())
    cProxCod := Soma1(AllTrim(cProxCod))

Return cProxCod

Return aFiltro