Árvore de páginas

020IFunc Retorna os funcionários que serão cadastrados como Atendentes

Características do Requisito

Linha de Produto:

Microsiga Protheus

Segmento:

Serviços

Módulo:

Gestão de Serviços

Rotina:

TECA020

O ponto de entrada é indicado para retornar os funcionários que poderão ser selecionados para serem cadastrados como Atendentes


Ponto de Entrada

Descrição:

At020IFunc Retorna os funcionários que serão cadastrados como Atendentes


Localização:

Atualizações>>Cadastros>>Prestação de Serviços >>Atendentes>>Importação de Funcionários

Programa Fonte:

TECA020.PRW

Função:

TECA020

Retorno:

Nome

Tipo

Descrição

Obrigatório

 aRet

Array

Array contendo os funcionários que poderão ser selecionados para serem cadastrados como Atendente

aRet[1] - Filial do cadastro de Funcionários, o retorno deve ter o tamanho do campo RA_FUNC

aRet[2] - Matrícula do Funcionário, o retorno deve ter o tamanho do campo RA_MAT, caso seja informando a rotina de cadastro de Atendentes obterá o Nome, Função, Cargo, Turno, Centro de Custo do Cadastro de Atendentes. E validará se o Atendente já está cadastrado utilizando a busca pelo campo AA1_CDFUNC e a AA1_FUNFIL este último buscando do campo aRet[1]

aRet[3] - Nome do Funcionário, o retorno deve ter o tamanho do campo RA_NOME

aRet[4] - Cargo do Funcionário, o retorno deve ter o tamanho do campo RA_CARGO

aRet[5] - Descrição do Cargo do Funcionário, o retorno deve ter o tamanho do campo RA_DCARGO

aRet[6] - Código da Função do Funcionário, o retorno deve ter o tamanho do campo RA_CODFUNC

aRet[7] - Turno do Funcionário, o retorno deve ter o tamanho do campo RA_TNOTRAB

aRet[8] - Centro de Custo do Funcionário, o retorno deve ter o tamanho do campo RA_CC

aRet[9] - Descrição da Função do Funcionário, o retorno deve ter o tamanho do campo RA_DESCFUN

SIM

 #INCLUDE "PROTHEUS.CH"

User Function At020IFunc()
Local aStruct := {}
Local aRetorno := {}
Local aArea := GetArea()
Local nTamCDFunc := AA1->(TamSX3("AA1_CDFUNC")[1])
Local nTamFun := SRJ->(TamSX3("RJ_FUNCAO")[1])
Local nTamCC := CTT->(TamSX3("CTT_CUSTO")[1])
Local nTamTur := SR6->(TamSX3("R6_TURNO")[1])
Local nC := 0
Local aFuncImp := {}
Local nTamFunFl := AA1->(TamSX3("AA1_FUNFIL")[1])
Local cFuncs := ""
Local aAreaAA1 := AA1->(GetArea())
Local aAreaSRJ := SRJ->(GetArea())
Local aAreaCTT := CTT->(GetArea())
Local aAreaSR6 := SR6->(GetArea())
Local aAreaSRA := SRA->(GetArea())

aAdd( aFuncImp , {"D MG 01 ",;
"100002",;
"MARIANA MATHIAS",;
"",;
"",;
"01",;
"02T",;
"C001",;
"",})


aAdd( aFuncImp , {"D MG 01 ",;
"004226",;
"teste",;
"",;
"",;
"01",;
"02T",;
"C001",;
""})

aAdd( aFuncImp , {"D MG 01 ",;
"",;
"LUANA DE SOUZA",;
"",;
"",;
"01",;
"02T",;
"",;
""})


aAdd( aFuncImp , {"D MG 01 ",;
"",;
"LUANA MATHIAS",;
"",;
"",;
"",;
"",;
"C001",;
""})

aAdd( aFuncImp , {"",;
"",;
"Josefa maria",;
"002",;
"",;
"01",;
"",;
"C001",;
""})

aAdd( aFuncImp , {"D MG 01 ",;
"100004",;
"Josefa maria zinha",;
"004",;
"",;
"01",;
"",;
"C001",;
""})

//Monta a estrutura dos campos
Aadd(aStruct, TamSX3("RA_FILIAL")[1])//01
Aadd(aStruct, TamSX3("RA_MAT")[1])//02
Aadd(aStruct, TamSX3("RA_NOME")[1])//03
Aadd(aStruct, TamSX3("RA_CARGO")[1])//04
Aadd(aStruct, TamSX3("RA_DCARGO")[1])//05
Aadd(aStruct, TamSX3("RA_CODFUNC")[1])//06
Aadd(aStruct, TamSX3("RA_TNOTRAB")[1])//07 
Aadd(aStruct, TamSX3("RA_CC")[1])//08
Aadd(aStruct, TamSX3("RA_DESCFUN")[1])//09


AA1->(DbSetOrder(7)) //AA1_FILIAL + AA1_CDFUNC + AA1_FUNFIL
SRJ->(DbSetOrder(1))
CTT->(DbSetOrder(1))
SR6->(DbSetOrder(1))
SRA->(DbSetOrder(1))

For nC := 1 to Len(aFuncImp)

If (Empty(aFuncImp[nC, 02]) .OR. SRA->(DbSeek(xFilial("SRA")+ PadR(aFuncImp[nC, 02], aStruct[01])))) .AND. ;
(Empty(aFuncImp[nC, 02]) .OR. !AA1->(DbSeek(xFilial("AA1")+ PadR( aFuncImp[nC, 02], nTamCDFunc)+ PadR( aFuncImp[nC, 01], nTamFunFl))) )

//Se localizou o colaborador na SRA, obtém os dados
If SRA->(Found())
aAdd(aRetorno, {SRA->RA_FILIAL, ; //**
SRA->RA_MAT,;// **
SRA->RA_NOME, ;// **
SRA->RA_CARGO,;
PadR(aFuncImp[nC, 05],aStruct[05] ), ;
SRA->RA_CODFUNC,; //**
SRA->RA_TNOTRAB, ;
SRA->RA_CC,; //**
PadR(aFuncImp[nC, 09],aStruct[09] )}) //**

ElseIf (Empty(aFuncImp[nC, 06]) .OR. SRJ->(DbSeek(xFilial("SRJ")+ PadR(aFuncImp[nC, 06], nTamFun))) ) .AND.;
(Empty(aFuncImp[nC, 08]) .OR. CTT->(DbSeek(xFilial("CTT")+ PadR(aFuncImp[nC, 08], nTamCC))) ) .AND.;
(Empty(aFuncImp[nC, 07]) .OR. SR6->(DbSeek(xFilial("SR6") + PadR(aFuncImp[nC, 07], nTamTur))) )


aAdd(aRetorno, {PadR(aFuncImp[nC, 01],aStruct[01] ), ; //**
PadR(aFuncImp[nC, 02],aStruct[02]),;// **
PadR(aFuncImp[nC, 03],aStruct[03] ), ;// **
PadR(aFuncImp[nC, 04],aStruct[04]),;
PadR(aFuncImp[nC, 05],aStruct[05] ), ;
PadR(aFuncImp[nC, 06],aStruct[06]),; //**
PadR(aFuncImp[nC, 07],aStruct[07] ), ;
PadR(aFuncImp[nC, 08],aStruct[08]),; //**
PadR(aFuncImp[nC, 09],aStruct[09] )}) //**


Else
cFuncs += CRLF + aFuncImp[nC, 03] + "/" + aFuncImp[nC, 02]
EndIf
Else
cFuncs += CRLF + aFuncImp[nC, 03] + "/" + aFuncImp[nC, 02]
EndIf

Next nC

If !Empty(cFuncs)
   ConOut("At020IFunc - Registros ignorados. Funcionario/Matrícula " + cFuncs)

EndIf

RestArea(aAreaAA1)
RestArea(aAreaSRJ)
RestArea(aAreaCTT)
RestArea(aAreaSR6)
RestArea( aAreaSRA)
RestArea(aArea) 
Return aRetorno