Versões: | Microsiga Protheus 10 |
Compatível Países: | Todos |
Compatível às Bases de Dados: | Todos |
Na rotina de Fechamento Banco de Horas, foi criado um ponto de entrada que terá como finalidade alterar o modo como o banco de horas é gravado.
PONM080.PRX
PNM80GRV - Gravação do banco de horas ( [ cEveProv ], [ cEveDesc ], [ aSPI ], [ aDelSPI ], [ dDataGrv ], [ cEveResc ] )
Nome | Tipo | Descrição | Default | Obrigatório | Referência | ||||||||||||
cEveProv | Caracter | Evento de Provento do Banco de Horas | |||||||||||||||
cEveDesc | Array of Record | Evento de Desconto do Banco de Horas | |||||||||||||||
aSPI | Array of Record | Array com os Valores do Banco de Horas | |||||||||||||||
aDelSPI | Array of Record | Array com os Registros a serem Baixados | |||||||||||||||
dDataGrv | Array of Record | Data Para a Gravação dos Valores nos Resultados | |||||||||||||||
cEveResc | Array of Record | Evento de Base para total de meses do B.Horas |
-
()
O Ponto de Entrada deverá ter um retorno lógico, que identificará se a rotina padrão de gravação deverá ser executada. Se o retorno for verdadeiro, toda a rotina padrão será executada, do contrário, a função de gravação padrão não é realizada.
Parâmetros passados no ponto de entrada:
cEveProv -> Evento de Provento do Banco de Horas
cEveDesc -> Evento de Desconto do Banco de Horas
aSPI -> Array com os Valores do Banco de Horas
aDelSPI -> Array com os Registros a serem Baixados
dDataGrv -> Data Para a Gravação dos Valores nos Resultados
cEveResc -> Evento de Base para total de meses do B.Horas
Procedimentos que deverão ser realizados para que a gravação seja feita corretamente, no caso da não execução da gravação padrão (Retorno .F.).
- Na tabela SPB (Resultados), deverá ser gravado o evento da folha que for definido para o Banco de Horas.
- Deverão ser criados eventos específicos de acordo com a faixa de Hora Extra (70%, 80%, etc), caso os eventos de hora extras tenham que ser desmembrados.
- Antes da gravação do campo PB_HORAS, o conteúdo do array aSPI deverá ser alterado para decimal, pode-se utilizar a seguinte função: fConvHr( aSPI[ nX , 2 ] , "D" )
- O Conteúdo do aDelSPI deverá ser baixado ou deletado, de acordo com a opção escolhida nos parâmetros da rotina (Lançamentos B.H. ?), no caso de baixa, o campo PI_DTBAIX deve receber o conteúdo do parâmetro da rotina (Data de Pagto. Folha ? ) e o campo PI_STATUS deve receber "B".
#INCLUDE 'PROTHEUS.CH'User Function PNM80GRV()Local aArea := GetArea()Local cEveProv := Paramixb[1]//Evento de Provento do Banco de HorasLocal cEveDesc := Paramixb[2]//Evento de Desconto do Banco de HorasLocal aSPI := Paramixb[3]//Array com os Valores do Banco de HorasLocal aDelSPI := Paramixb[4]//Array com os Registros a serem BaixadosLocal dDataGrv := Paramixb[5]//Data Para a Gravacao dos Valores nos ResultadosLocal cEveResc := Paramixb[6]//Evento de Base para total de meses do B.Horas Local lAddNew := .F.Local nLenX := 0Local nX := 0Local nY := 0Alert("Passou pelo PE PNM80GRV")aEveProv := {"999","998","997"}aEveDesc := {"996","995","994"}//Na tabela SPB (Resultados), devera ser gravado o evento da folha que for//definido para o Banco de Horas. //Deverao ser criados eventos especificos de acordo com a faixa de Hora Extra (70%, 80%, etc),//caso os eventos de hora extras tenham que ser desmembrados.//Antes da gravacao do campo PB_HORAS, o conteudo do array aSPI devera ser alterado para//decimal, pode-se utilizar a seguinte funcao: fConvHr( aSPI[ nX , 2 ] , "D" )nLenX := Len( aSPI )For nX := 1 To nLenX For nY := 1 To Len( aEveProv ) lAddNew := !SPB->( dbSeek( cFilMat + IF( aSPI[ nX , 4 ] $ "1*3" , aEveProv[ nY ] , aEveDesc[ nY ] ) + aSPI[ nX , 3 ] ) ) If aSPI[ nX , 1 ] == cEveResc lAddNew := !SPB->( dbSeek( cFilMat + cEveResc + aSPI[ nX , 3 ] ) ) Endif IF RecLock( "SPB" , lAddNew ) IF SPB->PB_TIPO2 == "I" SPB->PB_HORAS := ( SPB->PB_HORAS + fConvHr( aSPI[ nX , 2 ] , "D" ) ) Else SPB->PB_FILIAL := SRA->RA_FILIAL SPB->PB_CC := aSPI[ nX , 3 ] SPB->PB_MAT := SRA->RA_MAT SPB->PB_PD := IF ( aSPI[nX,1] # cEveResc, IF( aSPI[ nX , 4 ] $ "1*3" , aEveProv[ nY ] , aEveDesc[ nY ] ), cEveResc) SPB->PB_HORAS := IF ( aSPI[nX,1] # cEveResc, fConvHr( aSPI[ nX , 2 ] , "D" ), 0) //aSPI[ nX , 2 ]) SPB->PB_DATA := dDataGrv SPB->PB_TIPO1 := IF ( aSPI[nX,1] # cEveResc, "H" , "V") SPB->PB_TIPO2 := "G" SPB->PB_VALOR := IF ( aSPI[nX,1] # cEveResc, 0, aSPI[ nX , 2 ]) EndIF SPB->( MsUnlock() ) EndIF Next nYNext nX//O Conteudo do aDelSPI devera ser baixado ou deletado, de acordo com a opcao escolhida nos//parametros da rotina (Lançamentos B.H. ?). No caso de baixa, o campo PI_DTBAIX deve receber o//conteudo do parametro da rotina (Data de Pagto. Folha ?) e o campo PI_STATUS deve receber "B".nLenX := Len( aDelSPI )For nX := 1 To nLenX SPI->( dbGoto( aDelSPI[ nX ] ) ) IF RecLock("SPI") IF nLimpa == 1// Limpa IF !SPI->( FkDelete( @cMsgErr ) ) SPI->( RollBackDelTran( cMsgErr ) ) EndIF Else// Baixa SPI->PI_DTBAIX := dDtPagto SPI->PI_STATUS := "B" EndIF SPI->( MsUnlock() ) EndIFNext nXRestArea( aArea )Return ( .F. )
Nome | Tipo | Escopo | Pode Alterar | descrição | ||||||||||
Array of Record | Global | Não |