Árvore de páginas

Versões comparadas

Chave

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

...

nOpcAuto

Operação

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

aTurno

Array com informações do turno que será vinculada com o tabela de horário padrão criada via execauto

aTurno[1] Filial
aTurno[2] Turno
aTurno[3] Sequência 

Caso a sequência não seja informada e for uma inclusão o sistema irá realizar o cadastro na próxima sequência

aItens

Array com as informações do dia da semana da tabela de horário padrão.

O array deve seguir o padrão exigido pela MsGetDAuto
Sendo um array multi dimensional onde cada posição do array aItens 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

OBS: A rotina permite manipular apenas uma sequência da tabela por vez, com isso o tamanho máximo do aItens é 7, sendo uma posição para cada dia da semana, enviar mais de 7 registros pode gerar o erro de chave duplicada.


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.

<!-- esconder o menu --> <style> div.theme-default .ia-splitter #main { margin-left: 0px; } .ia-fixed-sidebar, .ia-splitter-left { display: none; } #main { padding-left: 10px; padding-right: 10px; overflow-x: hidden; } .aui-header-primary .aui-nav, .aui-page-panel { margin-left: 0px !important; } .aui-header-primary .aui-nav { margin-left: 0px !important; } </style>
Bloco de código
languagejava
firstline1
titleExemplo de Inclusão
linenumberstrue
collapsetrue
#INCLUDE "PROTHEUS.CH"
#INCLUDE "TBICONN.CH"

User Function fExecauto()
	
	Local aTurno := {}
	Local aItens := {}
	Local nOpcAuto := 0
	Local nI := 0
	Local cTipoDia
	Local cCodHe
	Local cCodHeNot
	
	Private lMsErroAuto := .F.
	
	PREPARE ENVIRONMENT EMPRESA "T1" FILIAL "D MG 01" MODULO "GPE"
	
	ConOut("Inicio: " + Time())
	ConOut(PadC("Rotina AutomaticaAutomática Tabela de Horário Padrão", 80))
	
	aAdd(aTurno, {"PJ_FILIAL", xFilial("SPJ", "D MG 01"), Nil}) // Código da Filial
	aAdd(aTurno, {"PJ_TURNO" , "001", Nil}) 					// Código do Turno
	
	// 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
	
	ConOut("Fim : " + Time())
	
	RESET ENVIRONMENT
	
Return NIL

HTML


Para realizar uma edição é necessário posicionar no registro que será alterado, para isso utilizamos o LINPOS 

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

User Function fExecAlt()
	
	Local aTurno := {}
	Local aItens := {}
	Local aAux	 := {}
	Local nOpcAuto := 0
	
	Private lMsErroAuto := .F.
	
	PREPARE ENVIRONMENT EMPRESA "T1" FILIAL "D MG 01" MODULO "GPE"
	
	ConOut("Inicio: " + Time())
	ConOut(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}) 	// Código do Turno
	aAdd(aTurno, {"PJ_SEMANA", 		 "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, {"LINPOS", "PJ_DIA", "Segunda" }) // Posiciona na linha
	
	// Adiciona os campos que serão alterados
	aAdd(aAux, {"PJ_ENTRA1" , 09.00, Nil }) // 1a Entrada
	aAdd(aAux, {"PJ_SAIDA1" , 12.00, Nil }) // 1a Saida
	aAdd(aAux, {"PJ_ENTRA2" , 13.00, Nil }) // 2a Entrada
	aAdd(aAux, {"PJ_SAIDA2" , 18.00, Nil }) // 2a Saida
	
	Aadd(aItens, aAux)
	
	// Indica que será uma alteração
	nOpcAuto := 4
	
	//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
	
	ConOut("Fim : " + Time())
	
	RESET ENVIRONMENT
	
Return NIL


Utilizando a operação 5 - Exclusão é possível excluir 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á realizada.

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

User Function fExecauto()
    
    Local aTurno := {}
    Local aItens := {{}} // Será enviado vazio
    Local nOpcAuto := 0
    
    Private lMsErroAuto := .F.
    
    PREPARE ENVIRONMENT EMPRESA "T1" FILIAL "D MG 01" MODULO "GPE"
    
    ConOut("Inicio: " + Time())
    ConOut(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})	// Código do Turno
    aAdd(aTurno, {"PJ_SEMANA", 		 "01", Nil})	// Sequência
    
    // Identifica que será uma Exclusão
    nOpcAuto := 5
    
    //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
    
    ConOut("Fim : " + Time())
    
    RESET ENVIRONMENT
    
Return NIL


Templatedocumentos