Histórico da Página
CONTEÚDO
- Visão Geral
- Descrição
- Informações Técnicas
- Exemplo
01. VISÃO GERAL
Linha de Produto: | Microsiga Protheus® |
Segmento: | Serviços |
Módulo: | SIGAGPE - Recursos HumanosSIGAPON |
Função: | PONA080 - Tabela de Horário Padrão |
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 |
02. DESCRIÇÃO
Função utilizada para inclusão, alteração ou exclusão de uma tabela de horário padrão via rotina automática (ExecAuto).
Cada chamada da rotina automática permite manipular uma sequência da tabela de horário, seja para inclusão, alteração ou exclusão.
03. INFORMAÇÕES TÉCNICAS
nOpcAuto | Operação 3 - Inclusã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 |
aItens[x,2] Tipo Dia
aItens[x,3] Limite Inferior
aItens[x,4] 1a Entrada
aItens[x,5] 1a Saida
aItens[x,6] 2a Entrada
aItens[x,7] 2a Saida
aItens[x,8] 3a Entrada
aItens[x,9] 3a Saida
aItens[x,10] 4a Entrada
aItens[x,11] 4a Saida
aItens[x,12] Limite Superior
aItens[x,13] Codigo Refeicao
aItens[x,14] Tipo Hora Extra Normal
aItens[x,15] Tipo Hora Extra Noturna
aItens[x,16] Nona Hora
aItens[x,17] 1a Saída Intervalo
aItens[x,18] 2a Saída Intervalo
aItens[x,19] 3a Saída Intervalo
aItens[x,20] 1a Jor Cont.
aItens[x,21] 2a Jor Cont.
aItens[x,22] 3a Jor Cont.
aItens[x,23] 4a Jor Cont.
04. EXEMPLO
...
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 nI:=1 To 7
aAdd( aItens,{})
If nI == 1
cTipoDia := "D"
cCodHe := "2"
cCodHeNot := "6"
ElseIf nI == 7
cTipoDia := "C"
cCodHe := "3"
cCodHeNot := "7"
Else
cTipoDia := "S"
cCodHe := "1"
cCodHeNot := "5"
EndIf
aAdd(aItens[nI],{"PJ_DIA" ,nI ,Nil }) // Dia da Semana
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_ENTRA3" ,00.00 ,Nil }) // 3a Entrada
aAdd(aItens[nI],{"PJ_SAIDA3" ,00.00 ,Nil }) // 3a Saida
aAdd(aItens[nI],{"PJ_ENTRA4" ,00.00 ,Nil }) // 4a Entrada
aAdd(aItens[nI],{"PJ_SAIDA4" ,00.00 ,Nil }) // 4a 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
aAdd(aItens[nI],{"PJ_INTERV2" ,"N" ,Nil }) // 2a Saída Intervalo
aAdd(aItens[nI],{"PJ_INTERV3" ,"N" ,Nil }) // 3a Saída Intervalo
aAdd(aItens[nI],{"PJ_JND1CON" ,"N" ,Nil }) // 1a Jor Cont.
aAdd(aItens[nI],{"PJ_JND2CON" ,"N" ,Nil }) // 2a Jor Cont.
aAdd(aItens[nI],{"PJ_JND3CON" ,"N" ,Nil }) // 3a Jor Cont.
aAdd(aItens[nI],{"PJ_JND4CON" ,"N" ,Nil }) // 4a Jor Cont.
Next
// nOpcAuto
//3 Inclusão
//4 Alteração
//5 Exclusão
nOpcAuto := 3
//Chamada do ExecAuto
MSExecAuto( {|x,y,z| PONA080(x,y,z)}, aTurno, aItens,nOpcAuto )
...
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 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.
Bloco de código | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||
#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 Automá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
|
Para realizar uma edição é necessário posicionar no registro que será alterado, para isso utilizamos o LINPOS
Bloco de código | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||
#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 | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||
#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 |
---|
RESET ENVIRONMENT
Return NIL
...