Árvore de páginas

Documento: Exemplo de Rotina Automática - Cadastro de Dependentes - GPEA020

Exemplo utilizando a estrutura MVC

Para versão 12 em diante, com a migração da rotina do Cadastro de Dependentes 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.)