Documento: Exemplo de Rotina Automática - Cadastro de Dependentes - GPEA020
Informações |
---|
title | Exemplo utilizando a estrutura MVC |
---|
|
Para versão 12 em diante, com a migração da rotina do Cadastro de Dependentes GPEA020 para tecnologia MVC, recomenda-se utilizar o instanciamento do modelo de dados para utilização da rotina automática conforme documentação a seguir: Exemplo de utilização para rotina automática GPEA020 utilizando estrutura MVC: ExecAuto Cadastro de Dependentes Para mais informações, acesse a documentação completa em: Material de Apoio MVC |
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).
Basicamente, na chamada da rotina GPEA020, deverão ser informados 2 arrays:
aCabec -> Corresponde aos dados da tabela SRA - Funcionarios.
Sintaxe: { {"RA_FILIAL" , conteudo1, NIL},;
{"RA_MAT" , conteudo2, NIL};
}
aItens -> Corresponde aos dados a serem incluidos/deletados da tabela SRB - Dependentes.
Sintaxe: { {"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},;
{campoAdicional1, conteudo11, Nil},;
{campoAdicionalN, conteudoN, Nil};
}Observação: No array aItens podem ser informados os demais campos (campoAdicional1-campoAdicionalN) correspondentesaos demais campos da tabela SRB.
//No exemplo, abaixo, a chamada da funcao U_GP020AUT deverá ser realizada a partir do menu, como demonstrado no extrato de um arquivo (*.XNU) qualquer:
// ... Parte anterior do menu ....
// <MenuItem Status="Enable">
// <Title lang="pt">Rotina Auto</Title>
// <Title lang="es">Rotina Auto</Title>
// <Title lang="en">Rotina Auto</Title>
// <Function>U_GP020AUT</Function>
// <Type>1</Type>
// <Access>xxxxxxxxxx</Access>
// <Module>07</Module>
// <Owner>0</Owner>
// </MenuItem>
// ... Continuacao do menu ...
User Function GP020AUT()
Local aCabec := {}
Local aItens := {}
Local aLinha := {}
PRIVATE lMsErroAuto := .F.
//******Primeiro Funcionario ******************************************
////-- Inclusao de 2 dependentes para o funcionario da matricula '000001'
aCabec := {}
aadd(aCabec,{"RA_FILIAL" ,"01" ,Nil })
aadd(aCabec,{"RA_MAT" ,"000001" ,Nil })
aLinha := {}aItens := {}
aadd(aLinha,{"RB_FILIAL" , "01" , Nil })
aadd(aLinha,{"RB_MAT" , "000001" , Nil })
aadd(aLinha,{"RB_COD" , "01" , Nil })
aadd(aLinha,{"RB_NOME" , "MARIA DA SILVA" , Nil })
aadd(aLinha,{"RB_DTNASC" , Ctod("01/01/99") , Nil })
aadd(aLinha,{"RB_SEXO" , "F" , Nil })
aadd(aLinha,{"RB_GRAUPAR" , "F" , Nil })
aadd(aLinha,{"RB_TIPIR" , "1" , Nil })
aadd(aLinha,{"RB_TIPSF" , "1" , Nil })
aadd(aLinha,{"RB_LOCNASC" , "SP" , Nil })
aadd(aItens,aLinha)
aLinha := {}
aadd(aLinha,{"RB_FILIAL" , "01" , Nil })
aadd(aLinha,{"RB_MAT" , "000001" , Nil })
aadd(aLinha,{"RB_COD" , "02" , Nil })
aadd(aLinha,{"RB_NOME" , "PEDRO DA SILVA" , Nil })
aadd(aLinha,{"RB_DTNASC" , Ctod("01/01/02") , Nil })
aadd(aLinha,{"RB_SEXO" , "M" , Nil })
aadd(aLinha,{"RB_GRAUPAR" , "F" , Nil })
aadd(aLinha,{"RB_TIPIR" , "1" , Nil })
aadd(aLinha,{"RB_TIPSF" , "1" , Nil })
aadd(aLinha,{"RB_LOCNASC" , "SP" , Nil })
aadd(aItens,aLinha)
U_Envia(aCabec, aItens)
//*** Segundo Funcionario ******************************************* //
//-- Inclusao de 1 dependentes para funcionario da matricula '000002'
aCabec := {}
aadd(aCabec,{"RA_FILIAL" ,"01" ,Nil })
aadd(aCabec,{"RA_MAT" ,"000002" ,Nil })
aLinha := {}
aItens := {}
aadd(aLinha,{"RB_FILIAL" , "01" , Nil })
aadd(aLinha,{"RB_MAT" , "000002" , Nil })
aadd(aLinha,{"RB_COD" , "01" , Nil })
aadd(aLinha,{"RB_NOME" , "JOSE PEREIRA" , Nil })
aadd(aLinha,{"RB_DTNASC" , Ctod("01/01/03") , Nil })
aadd(aLinha,{"RB_SEXO" , "M" , Nil })
aadd(aLinha,{"RB_GRAUPAR" , "F" , Nil })
aadd(aLinha,{"RB_TIPIR" , "1" , Nil })
aadd(aLinha,{"RB_TIPSF" , "1" , Nil })
aadd(aLinha,{"RB_LOCNASC" , "PR" , Nil })
aadd(aItens,aLinha)
U_Envia(aCabec, aItens)Return(.T.)
//-- Funcao criada para exemplificar a chamada da execucao da rotina de cadastro de dependentes
//-- Demonstra-se a inclusao e exclusao de dependentes
USER Function Envia(aCabec, aItens)
Local nX
//-- 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)},3,aCabec,aItens,3) //-- Opcao 3 - Inclui registro
//-- Retorno de erro na execução da rotina
If lMsErroAuto
MostraErro()
Else
Alert("Registro(s) Incluído(s) !!!")
EndIf
//-- Excluindo o(s) dependente(s)
For nX:=1 to Len(aItens)
aLinha:=aItens[nX]
IF ( lRet:= APMSGYESNO("Deseja eliminar o dependente. Confirmar (S)im / (N)não ? ") )
//-- Faz chamada a rotina de cadastro de dependentes para eliminar os dependentes (opcao 5)
MSExecAuto({|x,y,k,w,z| GPEA020(x,y,k,w,z)},5,aCabec,{aLinha},5) //-- Opcao 5 - Elimina registro
If lMsErroAuto
MostraErro()
Else
Alert("Registro Eliminado !!!")
Endif
Endif
Next nX EndIf
Return(.T.)