CONTEÚDO
- Visão Geral
- Exemplo de utilização
- Configuração e execução
- Tabelas utilizadas
01. VISÃO GERAL
Exemplo de como executar a rotina de cadastramento de dependentes através da execauto (rotina automática).
A rotina automática, no cadastro de dependentes, tem a finalidade de efetuar o lançamento automático de dependentes para um ou mais funcionários (que devem estar previamente cadastrados na tabela
SRA - Funcionários).
Na chamada da rotina GPEA020, deverão ser informados 2 arrays:
- aCabec
Corresponde aos dados da tabela SRA - Funcionários.
aCabec := { {"RA_FILIAL" , conteudo1, NIL},;
{"RA_MAT" , conteudo2, NIL};
}
- aItens
Corresponde aos dados a serem incluídos/deletados da tabela SRB - Dependentes.
aItens := { {"RB_FILIAL" , conteudo1 , Nil},;
{"RB_MAT" , conteudo2 , Nil},;
{"RB_COD" , conteudo3 , Nil},;
{"RB_NOME" , conteudo4 , Nil},;
{"RB_DTNASC" , conteudo5 , Nil},;
{"RB_SEXO" , conteudo6 , Nil},;
{"RB_GRAUPAR" , conteudo7 , Nil},;
{"RB_TIPIR" , conteudo8 , Nil},;
{"RB_TIPSF" , conteudo9 , Nil},;
{"RB_LOCNASC" , conteudo10 , Nil},;
{campo 1 , conteudo11 , Nil},;
{campo N , conteudoN , Nil};
}
Observação: No array aItens podem ser informados os demais campos correspondentes aos campos da tabela SRB.
02. EXEMPLO DE UTILIZAÇÃO
Segue um exemplo de montagem da execauto da rotina GPEA020 e de retorno da execução.
User Function GP020AUT()
Local aCabec := {}
Local aItens := {}
Local aLinha := {}
PRIVATE lMsErroAuto := .F.
aCabec := {}
aadd(aCabec,{"RA_FILIAL" ,"D MG 01 " ,Nil })
aadd(aCabec,{"RA_MAT" ,"000002" ,Nil })
aLinha := {}
aItens := {}
aadd(aLinha,{"RB_FILIAL" , "D MG 01 " , Nil })
aadd(aLinha,{"RB_MAT" , "000002" , Nil })
aadd(aLinha,{"RB_COD" , "01" , Nil })
aadd(aLinha,{"RB_NOME" , "MARIA DA SILVA" , Nil })
aadd(aLinha,{"RB_DTNASC" , Ctod("10/03/2010") , Nil })
aadd(aLinha,{"RB_SEXO" , "F" , Nil })
aadd(aLinha,{"RB_GRAUPAR" , "F" , Nil })
aadd(aLinha,{"RB_TIPIR" , "2" , Nil })
aadd(aLinha,{"RB_TIPSF" , "2" , Nil })
aadd(aLinha,{"RB_TPDEP" , "03" , Nil })
aadd(aLinha,{"RB_LOCNASC" , "SP" , Nil })
aadd(aLinha,{"RB_CIC" , "" , Nil })
aadd(aItens,aLinha)
aLinha := {}
aadd(aLinha,{"RB_FILIAL" , "D MG 01 " , Nil })
aadd(aLinha,{"RB_MAT" , "000002" , Nil })
aadd(aLinha,{"RB_COD" , "02" Nil })
aadd(aLinha,{"RB_NOME" , "PEDRO DA SILVA" , Nil })
aadd(aLinha,{"RB_DTNASC" , Ctod("19/05/1982") , Nil })
aadd(aLinha,{"RB_SEXO" , "M" , Nil })
aadd(aLinha,{"RB_GRAUPAR" , "C" , Nil })
aadd(aLinha,{"RB_TIPIR" , "4" , Nil })
aadd(aLinha,{"RB_TIPSF" , "2" , Nil })
aadd(aLinha,{"RB_LOCNASC" , "SP" , Nil })
aadd(aLinha,{"RB_TPDEP" , "01" , Nil })
aadd(aLinha,{"RB_CIC" , "40363918876" , Nil })
aadd(aItens,aLinha)
aLinha := {}
aadd(aLinha,{"RB_FILIAL" , "D MG 01 " , Nil })
aadd(aLinha,{"RB_MAT" , "000002" , Nil })
aadd(aLinha,{"RB_COD" , "03" , Nil })
aadd(aLinha,{"RB_NOME" , "JOAO DA SILVA" , Nil })
aadd(aLinha,{"RB_DTNASC" , Ctod("07/08/2010") , Nil })
aadd(aLinha,{"RB_SEXO" , "M" , Nil })
aadd(aLinha,{"RB_GRAUPAR" , "F" , Nil })
aadd(aLinha,{"RB_TIPIR" , "2" , Nil })
aadd(aLinha,{"RB_TIPSF" , "2" , Nil })
aadd(aLinha,{"RB_TPDEP" , "03" , Nil })
aadd(aLinha,{"RB_LOCNASC" , "SP" , Nil })
aadd(aLinha,{"RB_CIC" , "" , Nil })
aadd(aItens,aLinha)
IF ( lRet:= APMSGYESNO("Executar atraves do MVC. Confirmar (S) Sim / (N) Nao ? ") )
U_EnvMVC(aCabec, aItens)
Else
U_Envia(aCabec, aItens)
EndIf
Return(.T.)
// Função para enviar via ExecAuto
USER Function Envia(aCabec, aItens)
//-- Faz chamada a rotina de cadastro de dependentes para incluir os dependentes (opcao 3)
MSExecAuto({|x,y,k,w,z| GPEA020(x,y,k,w,z)},4,aCabec,aItens,4) //-- Opcao 3 - Inclui registro
//Retorno de erro na execução da rotina
If lMsErroAuto
MostraErro()
Else
Alert("Registro(s) Incluido(s) !!!")
EndIf
Return(.T.)
//Função para enviar via MVC
USER Function EnvMVC(aCabec, aItens)
Local aErro := {}
Local oModel := Nil
Local oSubMdl := ""
Local cArqErrAuto := ""
Local cCodigo := ""
Local cNome := ""
Local nX := 0
Local nY := 0
cFilMat := aCabec[1][2]
cMat := aCabec[2][2]
SRA->(DbSetOrder(1))
SRA->(DbSeek(cFilMat+cMat))
oModel := FWLoadModel("GPEA020")
oModel:SetOperation(3)
If(oModel:Activate())
oSubMdl := oModel:GetModel("GPEA020_SRB")
For nX := 1 to Len(aItens)
If (oSubMdl:Length() > 0)
oSubMdl:AddLine()
EndIf
For nY := 1 to Len(aItens[nX])
If !(aItens[nX][nY][1] $ "RB_MAT")
oSubMdl:SetValue(aItens[nX][nY][1], aItens[nX][nY][2])
EndIf
Next nY
// Performa validação da linha
If !oSubMdl:VldLineData()
lRet := .F.
cCodigo := aItens[nX][3][2]
cNome := aItens[nX][4][2]
Exit
EndIf
Next nX
If lRet .And. (oModel:VldData())
oModel:CommitData()
Else
aErro := oModel:GetErrorMessage()
cArqErrAuto := "Id do formulário de origem:" + ' [' + AllToChar( aErro[1] ) + ']' + Chr(13) + Chr(10)
cArqErrAuto += "Id do campo de origem: " + ' [' + AllToChar( aErro[2] ) + ']' + Chr(13) + Chr(10)
cArqErrAuto += "Id do formulário de erro: " + ' [' + AllToChar( aErro[3] ) + ']' + Chr(13) + Chr(10)
cArqErrAuto += "Mensagem do erro: " + ' [' + AllToChar( aErro[6] ) + ']' + Chr(13) + Chr(10)
cArqErrAuto += "Chave: Filial - Matricula - Código - Nome " + ' [' + cFilMat + ' - ' + cMat + ' - ' + cCodigo + ' - ' + cNome + ']'
Alert ('Falha no ExecAuto MVC: ' + (Chr(13) + Chr(10)) + cArqErrAuto)
EndIf
oModel:DeActivate()
oModel:Destroy()
oModel := Nil
EndIf
Return(.T.)
03. CONFIGURAÇÃO E EXECUÇÃO
No exemplo, acima, a chamada da função GP020AUT deverá ser realizada a partir do menu via configurador:
Execução da rotina via menu do modulo SIGAGPE:
Caso de sucesso:
Caso de erro:
04. TABELAS UTILIZADAS
- SRA - Funcionários
- SRB - Dependentes