Home

Linha Microsiga Protheus

Páginas filhas
  • PONCALR - Apuração de refeições -- 10451

Ponto-de-Entrada: PONCALR - Apuração de refeições
Versões: Advanced Protheus 5.08 , Advanced Protheus 6.09 , Advanced Protheus 7.10 , Microsiga Protheus 8.11 , Microsiga Protheus 10
Compatível Países: Todos
Sistemas Operacionais: Todos
Compatível às Bases de Dados: Todos
Idiomas: Espanhol , Inglês
Descrição:

Apuração Específica de Refeições.

Considerando que a existência desse Ponto de Entrada fará com que o sistema desconsidere a função de Apuração de Refeições do Sistema todo o Tratamento de Refeições deverá ser feito pelo Ponto de Entrada. Segue abaixo Modelo para a confeção do Ponto de Entrada.

Eventos

Chamada no Programa PONM070 (Cálculo Mensal) no lugar da Função de Apuração das Refeições.
 

Programa Fonte
PONM070.PRW
Sintaxe

PONCALR - Apuração de refeições ( < aTotais> , < aCodRef> ) --> aTotais

Parâmetros:
Nome Tipo Descrição Default Obrigatório Referência
aTotais Array of Record Array com os Totais do Ponto X
aCodRef Array of Record Array com os Codigos de Refeicao X
Retorno
    aTotais(array_of_record)
  • Dever  ser Retornado o Próprio ParamIxb com as Devidas Alteraçõe.
Observações
  • Parametros

aTotais:        Item 01-  Data do Evento. Tipo data.

                       Item 02 - Codigo do Evento. Tipo caracter

                       Item 03 - Quantidade do Evento. Tipo numérico

                       Item 04 - Codigo para a Folha (código da verba). Tipo caracter.

                       Item 05 - Centro de Custo do Evento. Tipo caracter.

                       Item 06 - Valor do evento. Tipo numérico.

                       Item 07 - String de Data. Tipo caracter.

 

aCodRef:       Item 01 - Codigo da Verba (aTotais[ nPos , 04 ])

 

 

Exemplos
Exemplo para a Versão 5.08User Function PONCALR()Local aArea := GetArea() //Salva a área de Trabalho Local aAreaSP5 := SP5->( GetArea() ) //Salva a área de Trabalho SP5Local nRefeicao := 0.00Local nHorRefDe := 0.00Local nHorRefAte := 0.00Local nX := 0.00IF SP5->(dbSeek(SRA->(RA_FILIAL+RA_MAT),.F.))While SP5->(!Eof().and.SRA->(RA_FILIAL+cMat)==P5_FILIAL+P5_MAT) IF SP5->(P5_DATA >= dPerIni .and. P5_DATA <= dPerFim )//-- Reinicializa o Intervalo de Refeit¢rio em caso de Troca de Turno For nX := 1 to Len(aTurnos)IF SP5->(P5_DATA >= aTurnos[nX,2] .and. nX < Len(aTurnos) .and.; P5_DATA < aTurnos[nX+1,2] .or. ;P5_DATA >= aTurnos[nX,2] .and. nX == Len(aTurnos) )IF SR6->(dbSeek(fFilFunc('SR6') + aTurnos[nX, 1], .F.))IF SR6->R6_REFEINI + SR6->R6_REFEFIM > 0nHorRefDe := SR6->R6_REFEINInHorRefAte := SR6->R6_REFEFIMElsenHorRefDe := mv_par18nHorRefAte := mv_par19EndIFEndIFExitEndIFNext nXIF SP5->( P5_HORA >= nHorRefDe .and. P5_HORA <= nHorRefAte )nRefeicao ++EndIFEndIfSP5->(dbSkip())End WhileEndIFIF nRefeicao > 0aAdd(ParamIxb[1], {})aAdd(ParamIxb[1,Len(ParamIxb[1])],Ctod("//"))aAdd(ParamIxb[1,Len(ParamIxb[1])],cCodRef)aAdd(ParamIxb[1,Len(ParamIxb[1])],nRefeicao)EndIFRestArea( aAreaSP5 ) //Restaura a área SP5RestArea( aArea ) //Restarua a área de Entrada Return( ParamIxb )Exemplo para a Versão 6.09 ou superiorUser Function PonCalR()Local cFil := SRA->RA_FILIALLocal cMat := SRA->RA_MAT//-- Posiciona no Inicio das Marcacoes de Refeicao do FuncionarioIF SP5->( dbSeek( cFil + cMat, .F.) )//-- Corre Marcacoes Refeicao para a Matricula LidaWhile SP5->( !Eof() .And. cFil + cMat == P5_FILIAL + P5_MAT )//-- Verifica se marcacao esta Dentro do periodo IF SP5->( P5_DATA < dPerIni .or. P5_DATA > dPerFim )SP5->( dbSkip() )LoopEndIF//-- Verifica se Tipo de Refeicao esta Dentro do Intervalo de Tipos EscolhidoIF SP5->(P5_TIPOREF < cTipoRefDe .or. P5_TIPOREF > cTipoRefAte .or. ;( P5_HORA == 0.00 .and. P5_VALREF == 0.00 ) )SP5->( dbSkip() )LoopEndIFIF SP5->P5_GERAFOL == "S"//Calcula Desc.Refeicao Parte Funcionario aAdd(ParamIxb[1],{})aAdd(ParamIxb[1,Len(ParamIxb[1])],SP5->P5_DATA)aAdd(ParamIxb[1,Len(ParamIxb[1])],SP5->P5_PD)aAdd(ParamIxb[1,Len(ParamIxb[1)],1.00)aAdd(ParamIxb[1,Len(ParamIxb[1])],PosSP9(SP5->P5_PD,;SRA->RA_FILIAL,"P9_CODFOL",1) )aAdd(ParamIxb[1,Len(ParamIxb[1]],SP5->P5_CC)aAdd(ParamIxb[1,Len(ParamIxb[1]],SP5->P5_DESCFUN) IF aScan(ParamIxb[2],{|x|x==ParamIxb[1,Len(ParamIxb[1]),04 ] }); == 0aAdd( ParamIxb[2], ParamIxb[1,Len(ParamIxb[1]),04])EndIFEndIF//-- Calcula Desc.Refeicao Parte EmpresaaAdd(ParamIxb, {})aAdd(ParamIxb[1,Len(ParamIxb[1])], SP5->P5_DATA )aAdd(ParamIxb[1,Len(ParamIxb[1])], SP5->P5_PDEMPR )aAdd(ParamIxb[1,Len(ParamIxb[1])], 1.00 )aAdd(ParamIxb[1,Len(ParamIxb[1])],; PosSP9(SP5->P5_PDEMPR,SRA->RA_FILIAL,"P9_CODFOL",1) )aAdd(ParamIxb[1,Len(ParamIxb[1])], SP5->P5_CC ) //-- Calcula Valor da Refeicao Parte EmpresaaAdd(ParamIxb[1,Len(ParamIxb)],SP5->P5_VALREF-SP5->P5_DESCFUN )IF aScan(ParamIxb[2],{|x|x==ParamIxb[1,Len(ParamIxb[1]),04 ] });== 0aAdd( ParamIxb[2], ParamIxb[1,Len(ParamIxb[1]),04])EndIFSP5->( dbSkip() )End WhileEndIFReturn( ParamIxb )