Home

Linha Microsiga Protheus

Skip to end of metadata
Go to start of metadata

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

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 dependentesUSER 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)},NIL,aCabec,aItens,3)  //-- Opcao 3 - Inclui registro//-- Retorno de erro na execução da rotinaIf lMsErroAuto 	MostraErro()Else 	Alert("Registro(s) Incluído(s) !!!")  	//-- 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)},NIL,aCabec,{aLinha},5)  //-- Opcao 5 - Elimina registro   			If lMsErroAuto    				MostraErro()			Else    				Alert("Registro Eliminado !!!")   			Endif   		Endif 	Next nX EndIfReturn(.T.) 
 

 

  • No labels