Histórico da Página
...
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 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 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 Inclusão //4 Alteração //5 Exclusão := 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 := 34 //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 | ||||||||||
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 |
---|