01. DADOS GERAIS
Produto: | TOTVS Prestadores de Serviços Terceirização |
---|---|
Linha de Produto: | Linha Protheus |
Segmento: | Serviços |
Módulo: | Terceirização (SIGATEC) |
Função: | TECA353 |
País: | Brasil |
Ticket: | Não há |
Requisito/Story/Issue (informe o requisito relacionado) : | DSERSGS-5422 |
02. SITUAÇÃO/REQUISITO
Ponto de Entrada para Exportação de Adicional de Periculosidade, que será habilitado caso o parâmetro MV_GSRHOTP contenha o valor 2.
03. SOLUÇÃO
Implementação do ponto de entrada AT353EnvRH
Descrição: | Microsiga Protheus | ||||||||||||||||||||||||
Localização: | Serviços | ||||||||||||||||||||||||
Programa Fonte: | TECA353.PRW | ||||||||||||||||||||||||
Função: | at353EnvRH | ||||||||||||||||||||||||
Parâmetros: |
|
#INCLUDE "PROTHEUS.CH" #INCLUDE "FILEIO.CH" #DEFINE INSALUBRIDADE 1 #DEFINE PERICULOSIDADE 2 #DEFINE NENHUM "" #DEFINE MINIMO "2" #DEFINE MEDIO "3" #DEFINE MAXIMO "4" #DEFINE INTEGRAL "2" #DEFINE PROPORCIONAL "3" #DEFINE ADICIONAIS_FILMAT 1 #DEFINE ADICIONAIS_MATRICULA 2 #DEFINE ADICIONAIS_CODTEC 3 #DEFINE ADICIONAIS_ADICIONAL 4 #DEFINE ADICIONAIS_TIPO 5 #DEFINE ADICIONAIS_GRAU 6 #DEFINE ADICIONAIS_HORAS 7 #DEFINE ADICIONAIS_PREV 7 User Function At353EvRH() Local nY := 0 Local cDetLinha := "" Local nC := 0 Local cDirArq := "\EXPCSVTEC\"+FWGrpCompany()+"\" + StrTran(FwCodFil(), " ", "_")+"\" Local cMsg := "" Local lRet := .F. Local cCodTecDe := "" Local cCodTecAt := "" Local dDataDe := CtoD("") Local dDataAte := Ctod("") Local dDataRef := Ctod("") Local lEnvio := .F.//"1" Local lLogtot := .F. //"1" Local nTotReg := 0 Local aAdicionais := {} Local nPos := 0 Local cAliasA := GetNextAlias() Local cQuery := "" If ValType(PARAMIXB) == "A" .AND. Len(PARAMIXB) >= 7 If !ExistDir(cDirArq) MakeDir("\EXPCSVTEC\") MakeDir("\EXPCSVTEC\"+FWGrpCompany()+"\") MakeDir(cDirArq) EndIf cCodTecDe := PARAMIXB[01] cCodTecAt := PARAMIXB[02] dDataDe := PARAMIXB[03] dDataAte := PARAMIXB[04] dDataRef := PARAMIXB[05] lEnvio := PARAMIXB[06] == 1 lLogtot := PARAMIXB[07] == 1 cNomeArq := "U_At353EvRH"+Dtos(Date())+IIF(lEnvio, "3", "5")+".txt" cQuery :="SELECT AA1.AA1_FUNFIL AS RA_FILIAL, AA1.AA1_CDFUNC AS RA_MAT, SRA.RA_NOME, SRA.RA_ADCINS, SRA.RA_ADCPERI, SRA.RA_PROCES, SRA.RA_HRSMES, SRA.RA_CC, SRA.RA_CODFUNC, " cQuery += CRLF + "TFF.TFF_PERICU, TFF.TFF_INSALU, TFF.TFF_GRAUIN, TFF.TFF_FUNCAO, " cQuery += CRLF + "AA1.AA1_FUNFIL, AA1.AA1_CDFUNC, AA1.AA1_NOMTEC, AA1.AA1_CODTEC, " cQuery += CRLF + "ABS.ABS_CCUSTO, " cQuery += CRLF + "AB9.R_E_C_N_O_ AS RECAB9, ABA_QUANT HORAS " cQuery += CRLF + " FROM " + RetSqlName("ABB")+ " ABB " cQuery += CRLF + " INNER JOIN " + RetSqlName("AA1")+ " AA1 ON " cQuery += CRLF + "( AA1.AA1_FILIAL = '"+ xFilial("AA1") +"'" cQuery += CRLF + " AND AA1.AA1_CODTEC = ABB.ABB_CODTEC" cQuery += CRLF + " AND AA1.D_E_L_E_T_ = ' ' )" cQuery += CRLF + " LEFT JOIN " + RetSqlName("SRA")+ " SRA ON " cQuery += CRLF + " ( SRA.RA_FILIAL = AA1.AA1_FUNFIL" cQuery += CRLF + " AND SRA.RA_MAT = AA1.AA1_CDFUNC" cQuery += CRLF + " AND SRA.D_E_L_E_T_ = ' ' ) " cQuery += CRLF + " INNER JOIN " + RetSqlName("AB9")+ " AB9 ON " cQuery += CRLF + " ( AB9.AB9_FILIAL = '"+ xFilial("AB9") +"'" cQuery += CRLF + " AND AB9.AB9_ATAUT = ABB.ABB_CODIGO" cQuery += CRLF + " AND SUBSTRING( AB9.AB9_NUMOS, 1, 6 ) = ABB.ABB_NUMOS" cQuery += CRLF + " AND AB9.AB9_CODTEC = ABB.ABB_CODTEC" cQuery += CRLF + " AND AB9.D_E_L_E_T_ = ' ' )" cQuery += CRLF + " INNER JOIN " + RetSqlName("ABA")+ " ABA ON " cQuery += CRLF + " ( ABA.ABA_FILIAL = '"+ xFilial("ABA") +"'" cQuery += CRLF + " AND ABA.ABA_NUMOS = AB9.AB9_NUMOS" cQuery += CRLF + " AND ABA.ABA_SEQ = AB9.AB9_SEQ" cQuery += CRLF + " AND ABA.D_E_L_E_T_ = ' ' )" cQuery += CRLF + " INNER JOIN " +RetSqlName("ABQ")+ " ABQ ON " cQuery += CRLF + " ( ABQ.ABQ_FILIAL = '"+ xFilial("ABQ") +"'" cQuery += CRLF + " AND ABQ.ABQ_CONTRT || ABQ.ABQ_ITEM || ABQ.ABQ_ORIGEM = ABB.ABB_IDCFAL" cQuery += CRLF + " AND ABQ.D_E_L_E_T_ = ' ' ) " cQuery += CRLF + " INNER JOIN " + RetSqlName("TFF")+ " TFF ON " cQuery += CRLF + " ( TFF.TFF_FILIAL = ABQ.ABQ_FILTFF" cQuery += CRLF + " AND TFF.TFF_COD = ABQ.ABQ_CODTFF" cQuery += CRLF + " AND (TFF.TFF_PERICU <> '1' OR TFF.TFF_INSALU <> '1')" cQuery += CRLF + " AND TFF.D_E_L_E_T_ = ' ' ) " cQuery += CRLF + " INNER JOIN " + RetSqlName("ABS")+ " ABS ON " cQuery += CRLF + " ( ABS.ABS_FILIAL = '"+ xFilial("ABS") +"'" cQuery += CRLF + " AND ABS.ABS_LOCAL = ABB.ABB_LOCAL " cQuery += CRLF + " AND ABS.D_E_L_E_T_ = ' ' ) " cQuery += CRLF + " WHERE ABB.ABB_FILIAL = '"+ xFilial("ABB") +"'" cQuery += CRLF + " AND ABB.ABB_CODTEC BETWEEN '"+ cCodTecDe +"' AND '"+ cCodTecAt +"'" cQuery += CRLF + " AND ABB.ABB_DTINI >= '"+ DtoS(dDataDe) +"'" cQuery += CRLF + " AND ABB.ABB_DTFIM <= '"+ DtoS(dDataAte) +"'" cQuery += CRLF + " AND ABB.ABB_ATENDE = '1'" cQuery += CRLF + " AND ABB.ABB_ATIVO = '1'" cQuery += CRLF + " AND ABB.ABB_LOCAL <> ' '" cQuery += CRLF + " AND ABB.D_E_L_E_T_ = ' '" cQuery += CRLF + " ORDER BY ABB.ABB_CODTEC" cQuery := ChangeQuery(cQuery) DbUseArea( .T., 'TOPCONN', TCGENQRY(,,cQuery), cAliasA , .T., .T.) aEval( ABB->(DbStruct()),{|x| If(x[2] != "C", TcSetField(cAliasA, AllTrim(x[1]), x[2], x[3], x[4]),Nil)}) While (cAliasA)->(!Eof()) //Periculosidade If !Empty((cAliasA)->TFF_PERICU) .AND. (cAliasA)->TFF_PERICU != "1" //Busca posição por tipo e grau nPos := aScan(aAdicionais, {|x| x[ADICIONAIS_FILMAT] == (cAliasA)->RA_FILIAL .AND. ; x[ADICIONAIS_MATRICULA] == (cAliasA)->RA_MAT.and. ; x[ADICIONAIS_CODTEC] == (cAliasA)->AA1_CODTEC .and. ; x[ADICIONAIS_ADICIONAL] == PERICULOSIDADE .AND.; x[ADICIONAIS_TIPO] == (cAliasA)->TFF_PERICU .AND.; x[ADICIONAIS_GRAU] == NENHUM}) If nPos == 0 aAdd(aAdicionais, Array(ADICIONAIS_PREV)) nPos := Len(aAdicionais) aAdicionais[nPos][ADICIONAIS_FILMAT] := (cAliasA)->RA_FILIAL aAdicionais[nPos][ADICIONAIS_MATRICULA] := (cAliasA)->RA_MAT aAdicionais[nPos][ADICIONAIS_CODTEC] := (cAliasA)->AA1_CODTEC aAdicionais[nPos][ADICIONAIS_ADICIONAL] := PERICULOSIDADE aAdicionais[nPos][ADICIONAIS_TIPO] := (cAliasA)->TFF_PERICU aAdicionais[nPos][ADICIONAIS_GRAU] := NENHUM aAdicionais[nPos][ADICIONAIS_HORAS] := (cAliasA)->HORAS Else aAdicionais[nPos][ADICIONAIS_HORAS] += (cAliasA)->HORAS EndIf EndIf //Insalubridade If !Empty((cAliasA)->TFF_INSALU) .AND. (cAliasA)->TFF_INSALU != "1" //Busca posição por tipo e grau nPos := aScan(aAdicionais, {|x| x[ADICIONAIS_FILMAT] == (cAliasA)->RA_FILIAL .AND. ; x[ADICIONAIS_MATRICULA] == (cAliasA)->RA_MAT.and. ; x[ADICIONAIS_CODTEC] == (cAliasA)->AA1_CODTEC .and. ; x[ADICIONAIS_ADICIONAL] == INSALUBRIDADE .AND. ; x[ADICIONAIS_TIPO] == (cAliasA)->TFF_INSALU .AND.; x[ADICIONAIS_GRAU] == (cAliasA)->TFF_GRAUIN}) If nPos == 0 aAdd(aAdicionais, Array(ADICIONAIS_PREV)) nPos := Len(aAdicionais) aAdicionais[nPos][ADICIONAIS_FILMAT] := (cAliasA)->RA_FILIAL aAdicionais[nPos][ADICIONAIS_MATRICULA] := (cAliasA)->RA_MAT aAdicionais[nPos][ADICIONAIS_CODTEC] := (cAliasA)->AA1_CODTEC aAdicionais[nPos][ADICIONAIS_ADICIONAL] := INSALUBRIDADE aAdicionais[nPos][ADICIONAIS_TIPO] := (cAliasA)->TFF_INSALU aAdicionais[nPos][ADICIONAIS_GRAU] := (cAliasA)->TFF_GRAUIN aAdicionais[nPos][ADICIONAIS_HORAS] := (cAliasA)->HORAS Else aAdicionais[nPos][ADICIONAIS_HORAS] += (cAliasA)->HORAS EndIf EndIf (cAliasA)->(DbSkip()) End If Len(aAdicionais) = 0 cMsg := "Não há dados, verifique parâmetros" Else If File(cDirArq+cNomeArq) fErase(cDirArq+cNomeArq) EndIf If !File(cDirArq+cNomeArq) nHandle := FCreate(cDirArq+cNomeArq) EndIf If nHandle <> -1 cCab := "RA_FILIAL;RA_MAT;AA1_CODTEC;ADICIONAL;TIPO;GRAU;HORAS"+CRLF fWrite(nHandle, cCab) For nC := 1 to Len(aAdicionais) cDetLinha := "" For nY := 1 to Len(aAdicionais[nC]) cDetLinha += Alltrim(IIF( ValType(aAdicionais[nC, nY])<> "D",cValToChar(aAdicionais[nC, nY]) , DtoS(aAdicionais[nC, nY])))+";" Next nY cDetLinha := Substr(cDetLinha, 1, Len(cDetLinha)-1) + CRLF fWrite(nHandle, cDetLinha) Next nC lRet := .T. fClose(nHandle) Else cMsg := "Problemas na criação do arquivo" EndIf EndIf (cAliasA)->(DbCloseArea()) Else cMsg := "Não enviados dados válidos referente à periculosidade" EndIf If !lRet Help(,,"At353EvRH",cMsg,,1,0) EndIf Return
04. DEMAIS INFORMAÇÕES
Não há.
05. ASSUNTOS RELACIONADOS
Visão Geral
Import HTML Content
Conteúdo das Ferramentas
Tarefas