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 |
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.
PONM010.PRW
PNM010REF1 - Refeições consumidas ( ) --> aRefeicoes
-
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
- 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.
#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 )