/*/{Protheus.doc} fVldBanco // Função para validar digitos verificadores da Agencia/Banco do Funcionario @author Equipe Protheus RH @since 08/04/2020 @param cAgConta, character, representa Banco/Agencia Bancaria Funcionario @param cConta, character, representa Conta Bancaria Funcionario @param aDados, array, representa dados Bancarios do Funcionario @param nOpcBc, numeric, representa informacao sobre carga da Conta Bancaria do Funcionario @return lRet, flag, variavel de controle @version 1.0 /*/ User Function fVldBanco(cBcAgen,cConta,aDados,nOpcBc) Local aArea := GetArea() Local cDigito := "" Local cContEn := "" Local cBanco := "" Local cAgencia := "" Local cAgenciaDV:= "" Local cTpConta := "" Local lRet := .T. Local nPos := 0 Default cBcAgen := "" Default cConta := "" Default aDados := {} Default nOpcBc := 1 cTpConta := SRA->RA_TPCTSAL // Tipo de Conta, 1=Corrente;2=Poupanca If nOpcBc == 1 .Or. (nOpcBc == 2 .And. cTpConta == "1") // Nao leva dados bancarios ou Leva Somente Poupanca e o funcionario tem Conta Corrente aDados := {"","","","","",""} ElseIf (nOpcBc == 2 .And. cTpConta == "2") .Or. nOpcBc == 3 If !Empty(cBcAgen) .And. !Empty(cConta) cBanco := Subs(cBcAgen,1,3) cAgencia := Subs(cBcAgen,4,4) cAgenciaDV := Subs(cBcAgen,8,1) nPos := AT("-",cConta) If nPos > 0 cDigito := SubStr(cConta,nPos+1,Len(cConta)-nPos) cContEn := SubStr(cConta,1,nPos-1) Else nPos := Len(cConta) cDigito := SubStr(cConta,nPos,1) cContEn := SubStr(cConta,1,nPos-1) EndIf aAdd(aDados,PadL(AllTrim(cBanco),3,"0")) // Codigo Banco aAdd(aDados,PadL(AllTrim(cAgencia),4,"0")) // Agencia aAdd(aDados,If(!Empty(cAgenciaDV),PadL(AllTrim(cAgenciaDV),1,"0"),"")) // Digito Agencia aAdd(aDados,PadL(AllTrim(cContEn),12,"0")) // Conta Bacaria Funcionario aAdd(aDados,PadL(AllTrim(cDigito),1,"0")) // Digito Conta Bancaria Funcionario aAdd(aDados,AllTrim(cTpConta)) // Tipo de Conta, 1=Corrente;2=Poupanca Else aDados := {"","","","","",""} EndIf EndIf If Len(aDados) == 0 lRet := .F. EndIf RestArea(aArea) Return( lRet )