Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

...

Linha de Produto:Microsiga Protheus®
Segmento:Serviços
Módulo:SIGAGPE
Função:GPEA550 - Lançamentos Fixos
Abrangências:Microsiga Protheus 12
Versões:Microsiga Protheus 12
Sistemas Operacionais:Todos
Compatível com as Bases de Dados:Todos
Nível de Acesso:Nível 1 (Acesso Clientes)
Idiomas:Todos

...

03. INFORMAÇÕES TÉCNICAS

nOpcAuto

Operação:

4 - Inclusão/Alteração
5 - Exclusão

aCabAuto

Array com informações do funcionário a ser feita a manutenção dos lançamentos fixos:

aCabAuto[1] Filial
aCabAuto[2] Matricula

aItemAuto

Array com os campos da tabela RG1 - Lançamentos Fixos a serem informados informados:

O array deve seguir o padrão exigido pela MsGetDAuto
Sendo um array multi dimensional onde cada posição do array aItemAuto correspondente a uma linha da grid.

As informações devem ser passadas seguindo a estrutura:
[nX][1] Nome do campo
[nX][2] Conteúdo do campo
[nX][3] Nil

04. EXEMPLOS

Na inclusão, caso o campo SPJ_SEMANA não seja passado no array de cabeçalho, aTurno neste exemplo, será criada uma nova sequência.Ao efetuar as manutenções, é necessário posicionar no funcionário a ser feito o lançamento conforme exemplos abaixo:

Bloco de código
languagejava
firstline1
titleExemplo de Inclusão
linenumberstrue
collapsetrue
#INCLUDE "PROTHEUS.CH"
#INCLUDE "TBICONN.CH"

User Function fExecautofExecInc()
	Local cFilialog	:= "D MG 01 "
	Local aTurno  cMatric	:= "000002"
	Local aCabAuto	:= {}
 	Local aItensaItemAuto := {}
	Local nOpcAuto aLinha	:= 0{}
	Local nI lAutom	:= 0 .T. //execucao sem interface
	Local cTipoDia
	Local cCodHe
	Local cCodHeNot
	nOpc		:= 4

	Private lMsErroAuto := .F.
	
	PREPARE ENVIRONMENT EMPRESA "T1" FILIAL "D MG 01" MODULO "GPE"cFilialog
	
	ConOut("Inicio: " + Time())

	ConOut(PadC("Rotina Automática Tabela de Horário Padrão", 80)	dbSelectArea("SRA")
		dbSetOrder(1)
	
	aAdd(aTurno, {"PJ_FILIAL", xFilial("SPJ", "D MG 01"), Nil}) // Código da Filial
	aAdd(aTurno, {"PJ_TURNO" , "001", Nil}) 				If SRA->(MsSeek(xFilial() + cMatric))
			aadd(aCabAuto, { "RG1_FILIAL",	cFilialog,	Nil })		// Código doda TurnoFilial
	
	// For para facilitar o preenchimento dos campos
	For nI := 1 To 7 // Máximo de 7 Itens, sendo um para cada dia da semana
		aAdd( aItens,{})
		
		If nI == 1
			cTipoDia := "D" // DSR
			cCodHe := "2"
			cCodHeNot := "6"
		ElseIf nI == 7
			cTipoDia := "C" // Compensado
			cCodHe := "3"
			cCodHeNot := "7"
		Else
			cTipoDia := "S"	// Trabalhado
			cCodHe := "1"
			cCodHeNot := "5"
		EndIf
		
		// Abaixo tem alguns campos, os demais campos da tabela podem ser adicionados conforme necessidade
		aAdd(aItens[nI], {"PJ_DIA"    , nI, Nil }) 			// Dia da Semana 1 = Domingo, 2 = Segunda... 7 = Sábado
		aAdd(aItens[nI], {"PJ_TPDIA"  , cTipoDia, Nil }) 	// Tipo Dia
		aAdd(aItens[nI], {"PJ_HORMENO", 05.00, Nil }) 		// Limite Inferior
		aAdd(aItens[nI], {"PJ_ENTRA1" , 09.00, Nil }) 		// 1a Entrada
		aAdd(aItens[nI], {"PJ_SAIDA1" , 12.00, Nil }) 		// 1a Saida
		aAdd(aItens[nI], {"PJ_ENTRA2" , 13.00, Nil }) 		// 2a Entrada
		aAdd(aItens[nI], {"PJ_SAIDA2" , 18.00, Nil }) 		// 2a Saida
		aAdd(aItens[nI], {"PJ_HORMAIS", 05.00, Nil }) 		// Limite Superior
		aAdd(aItens[nI], {"PJ_CODREF" , "", Nil }) 			// Codigo Refeicao
		aAdd(aItens[nI], {"PJ_TPEXT"  , cCodHe, Nil }) 		// Tipo Hora Extra Normal
		aAdd(aItens[nI], {"PJ_TPEXTN" , cCodHeNot, Nil }) 	// Tipo Hora Extra Noturna
		aAdd(aItens[nI], {"PJ_NONAHOR", "N", Nil }) 		// Nona Hora
		aAdd(aItens[nI], {"PJ_INTERV1", "S", Nil }) 		// 1a Saída Intervalo
	Next
	
	// Identifica que será uma inclusão
	nOpcAuto := 3
	
	//Chamada do ExecAuto
	MSExecAuto( {|x, y, z| PONA080(x, y, z)}, aTurno, aItens, nOpcAuto )
	
	If !lMsErroAuto
		ConOut(PadC("Cadastro realizado!", 80))
	Else
		ConOut(PadC("Erro no cadastro!", 80))
	EndIf
	
	aadd(aCabAuto, { "RG1_MAT",		cMatric,	Nil })		// Matrícula do funcionário

			//Campos RG1 a serem informados
			aadd(aLinha, { "RG1_ORDEM",		"001",				Nil	})	// Ordem do lançamento do funcionário
			aadd(aLinha, { "RG1_TPCALC",	"1",				Nil	})
			aadd(aLinha, { "RG1_PD",		"001",				Nil	})
			aadd(aLinha, { "RG1_VALOR",		1000.00,			Nil	})
			aadd(aLinha, { "RG1_DINIPG",	Ctod("02/02/2024"),	Nil	})
			aadd(aLinha, { "RG1_ROT",		"FOL",				Nil	})

			aadd(aItemAuto,aLinha)

			//Chama a rotina
			MsExecAuto({|a, b, c, d| GPEA550(a,b,c,d)}, nOpc, lAutom, aCabAuto, aItemAuto)

			//Faz a validacao
			If !lMsErroAuto
				ConOut("Inclusao efetuada!")
			Else
				MostraErro()
			EndIf
		EndIf
		ConOut("Fim : " + Time())
	
	RESET ENVIRONMENT
	
Return NILNil

Para realizar uma edição é necessário posicionar no registro que será alterado, para isso utilizamos o LINPOS em um registro específico da RG1, é necessário identificar o item pelo recurso LINPOS da MsGetDAuto

Bloco de código
languagejava
firstline1
titleExemplo de Alteração
linenumberstrue
collapsetrue
#INCLUDE "PROTHEUS.CH"
#INCLUDE "TBICONN.CH"

User Function fExecAlt()
 	Local cFilialog	:= "D MG 01 "
	Local aTurno  cMatric	:= "000002" 
    Local aCabAuto	:= {}
	    Local aItensaItemAuto := {}
	Local aAuxaLinha	 := {}
 	Local lAutom	:= .T. //execucao sem interface
    Local nOpcAuto 	:= 04
	
	    Private lMsErroAuto := .F.
	
	    PREPARE ENVIRONMENT EMPRESA "T1" FILIAL "D MG 01" cFilialog MODULO "GPE"
	
    	ConOut("Inicio: " + Time())

		ConOutdbSelectArea(PadC("Rotina Automatica Tabela de Horário Padrão", 80))
	
	aAdd(aTurno, {"PJ_FILIAL", "D MG 01 ", Nil}) 	// Código da Filial
	aAdd(aTurno, {"PJ_TURNO" , 		"001", Nil}) 	"SRA")
    	dbSetOrder(1)
	    If SRA->(MsSeek(xFilial() + cMatric))
			aAdd(aCabAuto, { "RG1_FILIAL",	cFilialog,	Nil })    // Código doda TurnoFilial
			aAdd(aTurnoaCabAuto, { "PJRG1_SEMANAMAT", 		 "01", Nil}) 	// Sequência
	
	// Utilizar o campo Dia para posicionar dentro da linha desejada de cada sequência
	// Deve informar o dia por extenso e sem acentos (Domingo, Segunda, Terca... Sabado)
	aAdd(aAux, {cMatric,	Nil })    // Matrícula do funcionário

			aadd(aLinha, { "LINPOS", "PJRG1_DIAORDEM", "Segunda001" }) 	// PosicionaIdentificando naa linha
	
	// Adiciona os campos que serão alterados
	aAdd(aAux, {"PJ_ENTRA1" , 09.00, Nil }) // 1a Entrada
	aAdd(aAux, {"PJ_SAIDA1" , 12.00 da grid pela Ordem do lançamento
 		  	//aadd(aLinha, { "AUTDELETA", "S", Nil }) 	// 1a Saida
	aAdd(aAux, {"PJ_ENTRA2" , 13.00, Nil }) // 2a Entrada
	aAdd(aAux, {"PJ_SAIDA2" , 18Uso em caso de exclusão de linha específica
	
			//Informações a serem alteradas
			aAdd(aLinha, { "RG1_VALOR", 500.00, Nil }) // 2a Saida
	
	Aadd(aItens, aAux)
	
	// Indica que será uma alteração
	nOpcAuto := 4
	


			aadd(aItemAuto,aLinha)

			//Chamada do ExecAuto
			MSExecAutoMsExecAuto( {|xa, b, yc, zd| PONA080GPEA550(x, y, za,b,c,d)}, aTurnonOpcAuto, aItenslAutom, nOpcAutoaCabAuto, aItemAuto)

		
	If !lMsErroAuto
				ConOut(PadC("CadastroManutencao realizadoconcluida!", 80))
			Else
				ConOut(PadC("Erro no cadastro!", 80)MostraErro()
			EndIf
		EndIf

    	ConOut("Fim : " + Time())
	
	    RESET ENVIRONMENT
	
Return NIL

*Para exclusão de um registro específico da RG1, utilizar a opção de alteração acima com os recursos LINPOS e AUTDELETA.

Utilizando a operação 5 - Exclusão, é possível excluir deletar todos os registros de uma mesma sequência, não sendo necessário enviar o aItens
Ao executar uma exclusão o sistema irá validar se a tabela de horário está vinculada com alguma outra tabela, se existir relacionamento a exclusão não será realizadalançamentos de um mesmo funcionário, sem especificar a linha do grid.

Bloco de código
languagejava
firstline1
titleExemplo de Exclusão
linenumberstrue
collapsetrue
#INCLUDE "PROTHEUS.CH"
#INCLUDE "TBICONN.CH"

User Function fExecautofExecExcl()
 	Local cFilialog	:= "D MG 01 "
	Local cMatric	:= "000002" 
    Local aTurno aCabAuto	:= {}
    Local aItensaItemAuto := {{}} 	// Enviar vazio
  	Local lAutom	:= .T.	// SeráExecucao enviadosem vaziointerface
    Local nOpcAuto 	:= 0
    5	// Identifica Exclusão

    Private lMsErroAuto := .F.
    
    PREPARE ENVIRONMENT EMPRESA "T1" FILIAL "D MG 01"cFilialog MODULO "GPE"
    
 	   ConOut("Inicio: " + Time())
    ConOut(PadC("Rotina Automatica Tabela de Horário Padrão", 80))

		dbSelectArea("SRA")
	    dbSetOrder(1)
	    
    aAdd(aTurnoIf SRA->(MsSeek(xFilial() + cMatric))
			aAdd(aCabAuto, {"PJRG1_FILIAL", "D MG 01 ", Nil})	,	cFilialog,	Nil})    // Código da Filial
    aAdd(aTurno, {"PJ_TURNO" , 		"001", Nil})	// Código do Turno
    aAdd(aTurnoaCabAuto, {"PJRG1_SEMANAMAT", 		 "01", cMatric,	Nil})	// Sequência
    
    // IdentificaMatrícula que será uma Exclusão
    nOpcAuto := 5
    
    do funcionário

			//Chamada do ExecAuto
    MSExecAuto( {|x, y, z| PONA080(x, y, z			MsExecAuto({|a, b, c, d| GPEA550(a,b,c,d)}, aTurnonOpcAuto, aItenslAutom, nOpcAutoaCabAuto, aItemAuto)
    
    
		If !lMsErroAuto
        			ConOut(PadC("CadastroExclusao realizadorealizada!", 80))
    Else
        ConOut(PadC("Erro no cadastro!", 80))
    EndIf
    
		Else
			MostraErro()
		EndIf
	EndIf

    ConOut("Fim : " + Time())
    
    RESET ENVIRONMENT
    
Return NIL
 


Templatedocumentos