Home

Linha Microsiga Protheus

Páginas filhas
  • PNM010REF1 - Refeições consumidas -- 10429

Ponto-de-Entrada: PNM010REF1 - Refeições consumidas
Versões: 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:

Na rotina de Leitura/Apontamento, no processo de classificação das refeições, foi criado o ponto de entrada PNM010REF1:

Implementado para tratamento de lançamentos de refeições antes de serem geradas e gravadas as seqüências das refeições consumidas. Pode-se nesse ponto de entrada redefinir as informações de desconto da refeição. Por exemplo, caso o trabalhador consuma duas refeições, a empresa poderá ser descontada do valor correspondente à primeira refeição enquanto que a segunda poderá ser descontada do trabalhador.

Programa Fonte
PONM010.PRW
Sintaxe

PNM010REF1 - Refeições consumidas ( ) --> aRefeicoes

Retorno
    aRefeicoes(vetor)
  • Array de lançamentos de refeições modificado onde cada um desses lançamentos obedece a estrutura abaixo (essa poderá ser modificada no futuro):

    Elemento 01 - Data

    Elemento 02 - Hora

    Elemento 03 - Recno em SP5

    Elemento 04 - Centro de Custo

    Elemento 05 - Relogio

    Elemento 06 - Flag Origem Marc

    Elemento 07 - Seq. Refeicao

    Elemento 08 - Tipo Refeicao

    Elemento 09 - Gerar p/folha

    Elemento 10 - Cod. Desc. Ref. Func.

    Elemento 11 - Valor da Refeicao

    Elemento 12 - Flag de Apontamento

    Elemento 13 - Cod. da Refeicao

    Elemento 14 - Cod. Desc. Ref. Empresa

    Elemento 15 - Desc. Ref. Funcionario
Observações
  • Parâmetros enviados

            Será enviado um array  via variável ParamIXB.

            Param1 – Lançamentos de refeições. Array.   Atualmente, cada um desses lançamentos obedece a estrutura abaixo (essa poderá ser modificada no futuro):

            Elemento 01 -  Data

            Elemento 02 - Hora

            Elemento 03 - Recno em SP5

            Elemento 04 - Centro de Custo

            Elemento 05 - Relogio

            Elemento 06 - Flag Origem Marc 

            Elemento 07 - Seq. Refeicao 

            Elemento 08 - Tipo Refeicao 

            Elemento 09 - Gerar p/folha 

            Elemento 10 - Cod. Desc. Ref. Func.

            Elemento 11 - Valor da Refeicao

            Elemento 12 - Flag de Apontamento

            Elemento 13 - Cod. da Refeicao

            Elemento 14 - Cod. Desc. Ref. Empresa

            Elemento 15 - Desc. Ref. Funcionario

 

  • Retorno

 

            Deverá ser retornado o mesmo array enviado, podendo ter os seu conteúdo modificado (a estrutura enviada deverá ser preservada).

 

 Procedimentos para Implementação

1.      No Rdmake obter o array enviado.

2.      Realizar os procedimentos necessários.

3.      Obter patch do Ponm010.

 

Exemplos
#Include 'Rwmake.ch'#DEFINE REF_DATA		01	//-- 01 Data #DEFINE REF_HORA		02	//-- 02 Hora #DEFINE REF_RECNO		03	//-- 03 Recno em SP5#DEFINE REF_CC		04	//-- 04 Centro de Custo#DEFINE REF_RELOGIO	05	//-- 05 Relogio#DEFINE REF_FLAG		06 	//-- 06 Flag Origem Marc  #DEFINE REF_SEQ		07 	//-- 07 Seq. Refeicao  #DEFINE REF_TIPOREF	08	//-- 08 Tipo Refeicao  #DEFINE REF_GERAFOL	09	//-- 09 Gerar p/folha  #DEFINE REF_PD		10	//-- 10 Cod. Desc. Ref. Func. #DEFINE REF_VALREF		11	//-- 11 Valor da Refeicao#DEFINE REF_APONTA		12	//-- 12 Flag de Apontamento#DEFINE REF_CODREF		13	//-- 13 Cod. da Refeicao#DEFINE REF_PDEMPR		14	//-- 14 Cod. Desc. Ref. Empresa #DEFINE REF_DESCFUN	15	//-- 15 Desc. Ref. Funcionario 	USER FUNCTION PNM010REF1()Local aRefeicoes	    := aClone(ParamIxb)  // Array de lancamentos de RefeicoesLocal nLenRefeicoes   := Len(aRefeicoes)Local nX	  	    := 0Local lRet	    := .T.//-- Inicializa as variavies auxiliares  Local aContSeq 	:= {}	    //-- Array contador de seq de tipo ref por TipoLocal cData	:= ''       //-- Variavel para verificacao de quebra de DataLocal cTipoRef	:= '' 	  //-- Variavel para verificacao de Tipo de RefeiçãoLocal nSeqMarc 	:= 0 	//-- Sequencia da Marcacao da Refeicao          Local nPosTipo	:= 0//-- Corre Todas as Marcacoes de RefeicoesFor nX := 1 to nLenRefeicoes 		//--Verifica a Quebra de Data/Tipo da Marcacao	If (cData + cTipoRef ) <>	;	   ( Dtos( aRefeicoes[ nX,REF_DATA ] ) + aRefeicoes[ nX,REF_TIPOREF ] )  	   		//-- Se quebra de Data 		If cData <> Dtos( aRefeicoes[ nX,REF_DATA ] )			cData 		:= Dtos( aRefeicoes[ nX,REF_DATA ] )  		Endif					//Se Houve Quebra de Tipo de Refeicao na Data Lida	    If cTipoRef  <>  aRefeicoes[ nX,REF_TIPOREF ]						cTipoRef	:= aRefeicoes[ nX,REF_TIPOREF ]		    		    		    	//--Inicializa a Sequencia de Marcacoes de Refeicao 			//-- Se aContSeq nao Vazia			IF nPosTipo > 0				aContSeq[ nPosTipo , 2 ] := nSeqMarc				nSeqMarc := 0			EndIF					IF ( nPosTipo := aScan( aContSeq,{ |xtipo| xtipo[1] == cTipoRef } ) ) == 0			    aAdd( aContSeq , { cTipoRef , 0 } )					nPosTipo := Len( aContSeq )			EndIF						//-- Iguala a variavel contador de seq com o valor anterior da seq 			nSeqMarc := aContSeq[ nPosTipo , 2 ]		Endif	Endif		aRefeicoes[nX, REF_SEQ] := StrZero(++nSeqMarc,2)	//Pega Proxima Marcacao de RefeicaoNext nX Return ( aRefeicoes )