Jump to content
Seja Membro VIP - Remova Banners de Propagandas, Tenha Liberado Qualquer Download, Além de Acessos em Áreas Exclusivas!! ×

Recommended Posts


  • Topic Count:  2
  • Topics Per Day:  0.00
  • Content Count:  6
  • Content Per Day:  0.00
  • Reputation:   0
  • Achievement Points:  50
  • Solved Content:  0
  • Days Won:  0
  • Status:  Offline

Posted

A TOTVS disponibilizou a formula abaixo, mas não sei como utilizar?

Temos três opções de planos de saúde cada um com seu evento com tabelas e valores diferenciados, e iremos proporcionalizar os descontos para o titular e dependentes, como devo utilizar esta formula para preencher a pasta criada de historico de assistência médica?

SALVAVALDEP (1º Parâmetro, 2º Parâmetro)

1º Parâmetro: Deverá informar o número do beneficiário. Sempre que o beneficiário for o funcionário deverá informar 0(zero).

2º Parâmetro: Deverá informar o valor do desconto deste beneficiário.

DECL DEP,SOMADEP,SOMAFUN;

SETVAR(DEP,1);

SETVAR(SOMADEP,0);

REPITA

SE TABDEP ('INCASSISTMEDICA' ,'V', DEP)=1 ENTAO

SE NDEPIDADE (DEP,HOJE)<=18

ENTAO SETVAR(SOMADEP,SOMADEP+121)

SALVAVALDEP(DEP,121)

SENAO

SE NDEPIDADE (DEP,HOJE)<=23

ENTAO SETVAR(SOMADEP,SOMADEP+189)

SALVAVALDEP(DEP,189)

SENAO 0 FIMSE FIMSE FIMSE;

SETVAR(DEP,DEP+1) ATE DEP=10;

SE TABCOMPL('ASSISTENCIAMEDICA','S')='S'

ENTAO SE IDADE(HOJE)<=18

ENTAO SETVAR(SOMAFUN,SOMAFUN+121)

SALVAVALDEP(0,121)

SENAO SE IDADE(HOJE)<=23

ENTAO SETVAR(SOMAFUN,SOMAFUN+189)

SALVAVALDEP(0,189)

SENAO 0

FIMSE

FIMSE

FIMSE;

SOMADEP+SOMAFUN

Obrigada,

Márcia

  • 4 weeks later...

  • Topic Count:  68
  • Topics Per Day:  0.01
  • Content Count:  997
  • Content Per Day:  0.14
  • Reputation:   4
  • Achievement Points:  5,604
  • Solved Content:  0
  • Days Won:  5
  • Status:  Offline
  • Age:  53

Posted

Alguém está usando essa fórmula, está funcionando?


  • Topic Count:  8
  • Topics Per Day:  0.00
  • Content Count:  122
  • Content Per Day:  0.02
  • Reputation:   3
  • Achievement Points:  703
  • Solved Content:  0
  • Days Won:  2
  • Status:  Offline
  • Age:  51

Posted

Tentei usar aqui proporcionalizando pelo numero de dependentes (mais o funcionário). Também não funcionou (eis a formula abaixo). Abri o chamado com a TOTVS e a mesma pediu pra eu acessar a consultoria (cobrada o minuto).

Formula jogada no evento + marcação do campo de assistência em incidências do dependente + Evento com o valor no código fixo

DECL DEP,VALMED;

SETVAR(VALMED,(CF('133') / (DA + 1)));

SETVAR(DEP,1);

REPITA

SE TABDEP ('INCASSISTMEDICA' ,'V', DEP)=1 ENTAO

SALVAVALDEP(DEP,VALMED)

SENAO

0

FIMSE;

SETVAR(DEP,DEP+1)

ATE DEP=12;

SALVAVALDEP(0,VALMED);

CF('133')


  • Topic Count:  946
  • Topics Per Day:  0.13
  • Content Count:  9,184
  • Content Per Day:  1.26
  • Reputation:   459
  • Achievement Points:  109,775
  • Solved Content:  0
  • Days Won:  266
  • Status:  Offline
  • Age:  53
  • Device:  Windows

Posted

Nao tem documentacao explicando como usar a funcao, e ligando la estao falando pra acessar a consultoria paga ? ?? :cray:


  • Topic Count:  8
  • Topics Per Day:  0.00
  • Content Count:  122
  • Content Per Day:  0.02
  • Reputation:   3
  • Achievement Points:  703
  • Solved Content:  0
  • Days Won:  2
  • Status:  Offline
  • Age:  51

Posted

Não, Jair !

Documentação, tem ! É o próprio help e váárias telas interligadas explicando como configurar a formula, parametrização de dependentes, eventos (cc), etc !

O problema é justamente esse, o pessoal do suporte considera que não consegui fazer e fecha minha ocorrência explicando pra eu procurar a consultoria. Estou vendo agora que outras pessoas estão com o mesmo problema.


  • Topic Count:  101
  • Topics Per Day:  0.02
  • Content Count:  456
  • Content Per Day:  0.07
  • Reputation:   0
  • Achievement Points:  3,290
  • Solved Content:  0
  • Days Won:  0
  • Status:  Offline
  • Age:  50

Posted

Bem... pessoal

Eu como precisava fazer a toque de caixa, todos os meses do ano de 2010, criei uma sentença onde pegava o valor pago pelo funcionário, referente a convênio e dividia pelos dependentes, pois no meu caso o processo é mais simples. E por não conseguir também usar a formula, estou pensando em fazer uma sp e jogar em um relatório e todo mês alguém do DP roda ele, somente para alimentar a tabela.

Sei lá, mas por enquanto me parece a melhor situação, tendo em vista que a variável não apresentou retorno algum.

NIK


  • Topic Count:  8
  • Topics Per Day:  0.00
  • Content Count:  122
  • Content Per Day:  0.02
  • Reputation:   3
  • Achievement Points:  703
  • Solved Content:  0
  • Days Won:  2
  • Status:  Offline
  • Age:  51

Posted

Alguém mais abriu ocorrência com o suporte ?


  • Topic Count:  0
  • Topics Per Day:  0
  • Content Count:  2
  • Content Per Day:  0.00
  • Reputation:   0
  • Achievement Points:  10
  • Solved Content:  0
  • Days Won:  0
  • Status:  Offline
  • Age:  50

Posted

Pessoal, boa tarde!

Desenvolvi a fórmula para dois planos de saúde, de acordo com a idade do titular/dependente.

Consultem e verifique se ajuda. A fórmula foi apropriada no desconto do convênio do Dependente que insere os dados na PFHSTASSMED, porém notem que na Versão 10.83.0(3) ao realizar a rotina de CANCELAMENTO DE MOVIMENTO, para um funcionário que tem registros na tabela, o sistema apresenta a mensagem de erro:

Erro de cálculo: Invalid colunm name

‘D066’

Executamos o profile e existe um erro ao excluir os registros da tabela:

DELETE FROM PFHSTASSMED WHERE (CODCOLIGADA = 4) AND (CHAPA = '130179') AND (ANOCOMP = 2011) AND (MESCOMP = 1) AND (NROPERIODO = 3)AND (CODEVENTO = 'D066') AND (CODEVENTO IN (D066)) AND (TIPOVALOR IN (0, 2, 3, 5))....

Segue a fórmula para atender dois planos diferentes:

Decl vAssMed, vValor, vTabela, vValorDep;

SETVAR(vAssMed,TABCOMPL ('CCBENASSMED' , 'V'));

SE vAssMed = 0

ENTAO 0

SENAO SE vAssMed = 1

ENTAO SETVAR(vTabela,'AM')

SENAO SE vAssMed = 2

ENTAO SETVAR(vTabela,'AM1')

SENAO 0

FIMSE

FIMSE;

SE EXECSQL('IDEPASSMED') = VERDADE

ENTAO

REPITA

SETVAR(vValorDep,T(vTabela,NDEPIDADE(RESULTSQL('IDEPASSMED','NRODEPEND') ,ULTDIAMES(MTDATA(1,MES,ANO)))));

SALVAVALDEP(RESULTSQL('IDEPASSMED','NRODEPEND'),vValorDep);

SETVAR(vValor,T(vTabela,NDEPIDADE(RESULTSQL('IDEPASSMED','NRODEPEND') ,ULTDIAMES(MTDATA(1,MES,ANO)))) + vValor)

ATE

ProxRegSQL( 'IDEPASSMED' ) = FALSO

FIMSE;

vValor

FIMSE


  • Topic Count:  69
  • Topics Per Day:  0.01
  • Content Count:  339
  • Content Per Day:  0.05
  • Reputation:   12
  • Achievement Points:  2,393
  • Solved Content:  0
  • Days Won:  8
  • Status:  Offline
  • Age:  48

Posted

Pessoal,

Aqui desenvolvi a fórmula na minha empresa, pois utilizamos vários tipos de planos e estes estão e Valores Fixos. Aqui funciona perfeitamente.

Decl DAM, VAM, DC, DE;

SetVar(DAM,0);

SetVar(VAM, 0);

SetVar(DC,1);

SetVar(DE,0);

/*DESCONTO FUNCIONÁRIO*/

SE PERIODO=4 ENTAO 0 SENAO

SE (TABCOMPL('AMEDICA1','S')='S') ENTAO

SetVar (VAM, (F ('0033'))/2);

SALVAVALDEP(0,VAM)

Senao

SE (TABCOMPL('AMEDICA2','S')='S') ENTAO

SetVar (VAM, (F ('0034'))/2);

SALVAVALDEP(0,VAM)

Senao

SE (TABCOMPL('AMEDICA3','S')='S') ENTAO

SetVar (VAM, (F ('0036'))/2);

SALVAVALDEP(0,VAM)

Senao

SetVar(VAM,0)

FimSe

FimSe

FimSe

FimSe;

/*VALOR DEPENDENTES*/

SE PERIODO=4 ENTAO 0 SENAO

REPITA

Se TABCOMPLDEPEND ('AMEDICA1','S',DC)='S' Entao

SetVar (DE, DE+(F('0033')/2));

SALVAVALDEP(DC,(F('0033')/2)) Senao

Se TABCOMPLDEPEND ('AMEDICA2','S',DC)='S' Entao

SetVar (DE, DE+(F('0034')/2));

SALVAVALDEP(DC,(F('0034')/2)) Senao

Se TABCOMPLDEPEND ('AMEDICA3','S',DC)='S' Entao

SetVar (DE, DE+(F('0036')/2));

SALVAVALDEP(DC,(F('0036')/2)) Senao

SetVar (DE,DE)

FimSe

FimSe

FimSe;

SetVar (DC,DC+1)

ATE (DC=10)

FimSe;

SetVar (DAM,VAM+DE)

**********************

Espero ter ajudado.

  • 2 weeks later...

  • Topic Count:  13
  • Topics Per Day:  0.00
  • Content Count:  90
  • Content Per Day:  0.01
  • Reputation:   0
  • Achievement Points:  565
  • Solved Content:  0
  • Days Won:  0
  • Status:  Offline
  • Age:  39

Posted

Pessoal,

No blog TOTVS CONNECT tem um "Como Fazer" explicando essa parametrização, utilização da fórmula, etc.

Acredito que vale a pena dar uma olhada: http://totvsconnect.blogspot.com/2010/11/como-fazer-historico-de-assistencia_22.html

Se não me engano, a variável SALVALDEP não busca valor anterior, ela somente armazena a partir de quando foi criada/utilizada. Logo, para os meses de Jan e Fev, acredito que deverá ser lançado direto no sistema. E quanto mais meses passarem, mais meses a serem lançados. :(

Espero que ajude.

Abraços!

Fernanda.


  • Topic Count:  22
  • Topics Per Day:  0.00
  • Content Count:  124
  • Content Per Day:  0.02
  • Reputation:   2
  • Achievement Points:  828
  • Solved Content:  0
  • Days Won:  1
  • Status:  Offline
  • Age:  47

Posted

Pessoal

Fiz esta Fórmula que faz os calculos e funcionou bacana.

Quem quiser está a disposição

DECL DEP,SOMADEP,SOMAFUN,VALORDEP,NRODEP;

SETVAR (NRODEP,DA);

SE NRODEP=0 ENTAO SETVAR(NRODEP,1) SENAO SETVAR(NRODEP,DA) FIMSE;

SETVAR (VALORDEP, CF ('014')/NRODEP );

SETVAR(DEP,1);

SETVAR(SOMADEP,0);

REPITA

SE TABDEP ('INCASSISTMEDICA' ,'V', DEP )=1

ENTAO SETVAR(SOMADEP,SOMADEP+VALORDEP);

SALVAVALDEP(DEP,VALORDEP)

SENAO 0 FIMSE ;

SETVAR(DEP,DEP+1 ) ATE DEP=10;

SE TABCOMPL('ASSISTENCIAMEDICA','S')='S' E DEP=NRODEP

ENTAO

SETVAR(SOMADEP,SOMADEP+VALORDEP) ;

SALVAVALDEP(DEP,VALORDEP)

SENAO 0

FIMSE

;

SOMADEP+SOMAFUN


  • Topic Count:  21
  • Topics Per Day:  0.00
  • Content Count:  269
  • Content Per Day:  0.05
  • Reputation:   15
  • Achievement Points:  1,574
  • Solved Content:  0
  • Days Won:  12
  • Status:  Offline
  • Age:  43

Posted

Bom dia a todos!!

Hoje utilizo esta fórmula parea o desconto do plano de saúde, alguém poderia me ajudar inserindo na posição correta a variável SALVAVALDEP para o preenchimento do histórico no cadastro do funcionário? Obrigado

DECL(FE,FQ,FS,AAV,CONT);

SE TABCOMPL('TPBRAD','S') <> ''

ENTAO

SE TABCOMPL('TPBRAD','S') = '001'

ENTAO SETVAR(FE,FE + (T('TNE1',IDADE(ULTDIAMES(MTDATA(1,MES,ANO))))* (T('0005',RC) / 100) ) )

SENAO

SE TABCOMPL('TPBRAD','S') = '002'

ENTAO SETVAR(FQ,FQ + (T('TNQ2',IDADE(ULTDIAMES(MTDATA(1,MES,ANO))))* (T('0005',RC) / 100) ) )

SENAO

SE TABCOMPL('TPBRAD','S') = '003'

ENTAO SETVAR(FS,FS + (T('SIQ3',IDADE(ULTDIAMES(MTDATA(1,MES,ANO))))* (T('0005',RC) / 100) ) )

/* Quando o funcionário assume a diferença em relação ao plano superior.

SENAO SETVAR(FQ,FQ + (T('TNE1',IDADE(ULTDIAMES(MTDATA(1,MES,ANO))))* (T('0005',RC)) / 100)

+ T('TNQ2',IDADE(ULTDIAMES(MTDATA(1,MES,ANO))))

- T('TNE1',IDADE(ULTDIAMES(MTDATA(1,MES,ANO)))))

*/

FIMSE

FIMSE

FIMSE;

SE EXECSQL('NDEPEND') = 1

ENTAO

SETVAR(CONT,CONT+1);

REPITA

SE ((TABDEP('GRAUPARENTESCO','S',CONT) = '1' E NDEPIDADE(CONT,ULTDIAMES(MTDATA(1,MES,ANO))) < 25) OU

TABDEP('GRAUPARENTESCO','S',CONT) = '3' OU

TABDEP('GRAUPARENTESCO','S',CONT) = '5' OU

TABDEP('GRAUPARENTESCO','S',CONT) = 'C') E

TABCOMPLDEPEND('TPBRAD','S',CONT) = '001'

ENTAO

SETVAR(FE,FE + (T('TNE1',NDEPIDADE(CONT,ULTDIAMES(MTDATA(1,MES,ANO))))* (T('0005',RC)) /100 ) )

SENAO

SE ((TABDEP('GRAUPARENTESCO','S',CONT) = '1' E NDEPIDADE(CONT,ULTDIAMES(MTDATA(1,MES,ANO))) < 29) OU

TABDEP('GRAUPARENTESCO','S',CONT) = '3' OU

TABDEP('GRAUPARENTESCO','S',CONT) = '5' OU

TABDEP('GRAUPARENTESCO','S',CONT) = 'C') E

TABCOMPLDEPEND('TPBRAD','S',CONT) = '002'

ENTAO

SETVAR(FQ,FQ + (T('TNQ2',NDEPIDADE(CONT,ULTDIAMES(MTDATA(1,MES,ANO))))* (T('0005',RC)) /100 ) )

SENAO

/* Quando o funcionário assume a diferença em relação ao plano superior.

SETVAR(FQ,FQ + (T('TQ2',NDEPIDADE(CONT,ULTDIAMES(MTDATA(1,MES,ANO))))* (T('0005',RC)) /100)

+ T('TNQ2',NDEPIDADE(CONT,ULTDIAMES(MTDATA(1,MES,ANO))))

- T('TNE1',NDEPIDADE(CONT,ULTDIAMES(MTDATA(1,MES,ANO)))) )

SENAO

*/

SE ((TABDEP('GRAUPARENTESCO','S',CONT) = '1' E NDEPIDADE(CONT,ULTDIAMES(MTDATA(1,MES,ANO))) < 29) OU

TABDEP('GRAUPARENTESCO','S',CONT) = '3' OU

TABDEP('GRAUPARENTESCO','S',CONT) = '5' OU

TABDEP('GRAUPARENTESCO','S',CONT) = 'C') E

TABCOMPLDEPEND('TPBRAD','S',CONT) = '003'

ENTAO

SETVAR(FQ,FQ + (T('SIQ3',NDEPIDADE(CONT,ULTDIAMES(MTDATA(1,MES,ANO))))* (T('0005',RC)) /100 ) )

SENAO

SE TABCOMPLDEPEND('TPBRAD','S',CONT) = '001'

ENTAO

SETVAR(FE,FE + T('TNE1',NDEPIDADE(CONT,ULTDIAMES(MTDATA(1,MES,ANO)))))

SENAO

SE TABCOMPLDEPEND('TPBRAD','S',CONT) = '002'

ENTAO

SETVAR(FQ,FQ + T('TNQ2',NDEPIDADE(CONT,ULTDIAMES(MTDATA(1,MES,ANO)))))

SENAO

SE TABCOMPLDEPEND('TPBRAD','S',CONT) = '003'

ENTAO

SETVAR(FS,FS + T('SIQ3',NDEPIDADE(CONT,ULTDIAMES(MTDATA(1,MES,ANO)))))

SENAO

0

FIMSE

FIMSE

FIMSE

FIMSE

FIMSE

FIMSE;

SETVAR(AAV,AAV + TABCOMPLDEPEND('VALUNI','V',CONT));

SETVAR(CONT,CONT+1)

ATE CONT > RESULTSQL('NDEPEND','QTDDEP')

SENAO 0

FIMSE;

FE+FQ+FS+AAV

SENAO 0

FIMSE

/*

DECL(FE,FQ,FS,AAV,CONT);

SE TABCOMPL('TPBRAD','S') <> ''

ENTAO

SE TABCOMPL('TPBRAD','S') = '001'

ENTAO SETVAR(FE,FE + (T('TNE1',IDADE(ULTDIAMES(MTDATA(1,MES,ANO))))* (T('0005',RC) / 100) ) )

SENAO SETVAR(FQ,FQ + (T('TNE1',IDADE(ULTDIAMES(MTDATA(1,MES,ANO))))*T('0005',RC))

+ T('TNQ2',IDADE(ULTDIAMES(MTDATA(1,MES,ANO))))

- T('TNE1',IDADE(ULTDIAMES(MTDATA(1,MES,ANO)))))

FIMSE;

SE EXECSQL('NDEPEND') = 1

ENTAO

SETVAR(CONT,CONT+1);

REPITA

SE ((TABDEP('GRAUPARENTESCO','S',CONT) = '1' E NDEPIDADE(CONT,ULTDIAMES(MTDATA(1,MES,ANO))) < 25) OU

TABDEP('GRAUPARENTESCO','S',CONT) = '3' OU

TABDEP('GRAUPARENTESCO','S',CONT) = '5' OU

TABDEP('GRAUPARENTESCO','S',CONT) = 'C') E

TABCOMPLDEPEND('TPBRAD','S',CONT) = '001'

ENTAO

SETVAR(FE,FE + (T('TNE1',NDEPIDADE(CONT,ULTDIAMES(MTDATA(1,MES,ANO))))* (T('0005',RC)) /100 ) )

SENAO

SE ((TABDEP('GRAUPARENTESCO','S',CONT) = '1' E NDEPIDADE(CONT,ULTDIAMES(MTDATA(1,MES,ANO))) < 25) OU

TABDEP('GRAUPARENTESCO','S',CONT) = '3' OU

TABDEP('GRAUPARENTESCO','S',CONT) = '5' OU

TABDEP('GRAUPARENTESCO','S',CONT) = 'C') E

TABCOMPLDEPEND('TPBRAD','S',CONT) = '002'

ENTAO

SETVAR(FQ,FQ + (T('TNE1',NDEPIDADE(CONT,ULTDIAMES(MTDATA(1,MES,ANO))))* (T('0005',RC)) /100)

+ T('TNQ2',NDEPIDADE(CONT,ULTDIAMES(MTDATA(1,MES,ANO))))

- T('TNE1',NDEPIDADE(CONT,ULTDIAMES(MTDATA(1,MES,ANO)))) )

SENAO

SE TABCOMPLDEPEND('TPBRAD','S',CONT) = '001'

ENTAO

SETVAR(FS,FS + T('SIQ3',NDEPIDADE(CONT,ULTDIAMES(MTDATA(1,MES,ANO)))))

SENAO

SE TABCOMPLDEPEND('TPBRAD','S',CONT) = '002'

ENTAO

SETVAR(FS,FS + T('SIQ3',NDEPIDADE(CONT,ULTDIAMES(MTDATA(1,MES,ANO)))))

SENAO

0

FIMSE

FIMSE

FIMSE

FIMSE;

SETVAR(AAV,AAV + TABCOMPLDEPEND('VALUNI','V',CONT));

SETVAR(CONT,CONT+1)

ATE CONT > RESULTSQL('NDEPEND','QTDDEP')

SENAO 0

FIMSE;

FE+FQ+FS+AAV

SENAO 0

FIMSE

*/

  • 1 month later...

  • Topic Count:  68
  • Topics Per Day:  0.01
  • Content Count:  997
  • Content Per Day:  0.14
  • Reputation:   4
  • Achievement Points:  5,604
  • Solved Content:  0
  • Days Won:  5
  • Status:  Offline
  • Age:  53

Posted

Pessoal, usei uma das fórmulas descritas aqui porém não está inserindo dados no "Histórico Assistência à Saúde", alguém sabe se existe algum detalhe por mim esquecido?


  • Topic Count:  8
  • Topics Per Day:  0.00
  • Content Count:  122
  • Content Per Day:  0.02
  • Reputation:   3
  • Achievement Points:  703
  • Solved Content:  0
  • Days Won:  2
  • Status:  Offline
  • Age:  51

Posted

Jefferson,

além do detalhe das versões ... tinham algumas com problemas, vc verificou se não está usando alguma das comentadas aqui ?


  • Topic Count:  68
  • Topics Per Day:  0.01
  • Content Count:  997
  • Content Per Day:  0.14
  • Reputation:   4
  • Achievement Points:  5,604
  • Solved Content:  0
  • Days Won:  5
  • Status:  Offline
  • Age:  53

Posted

Usei a sua Luis Valadares, rs rs rs.

DECL DEP,VALMED;

SETVAR(VALMED,(CF('133') / (DA + 1)));

SETVAR(DEP,1);

REPITA

SE TABDEP ('INCASSISTMEDICA' ,'V', DEP)=1 ENTAO

SALVAVALDEP(DEP,VALMED)

SENAO

0

FIMSE;

SETVAR(DEP,DEP+1)

ATE DEP=12;

SALVAVALDEP(0,VALMED);

CF('133')


  • Topic Count:  8
  • Topics Per Day:  0.00
  • Content Count:  122
  • Content Per Day:  0.02
  • Reputation:   3
  • Achievement Points:  703
  • Solved Content:  0
  • Days Won:  2
  • Status:  Offline
  • Age:  51

Posted

Foi mal,

é que ja tratei disso em tantos posts. Tivemos problemas de versão. No meu caso consegui fazer funcionar a formula na versão Labore 10.83.10(29). Tivemos pessoas com problemas da 11.00 também.

Ve esse post:


  • Topic Count:  68
  • Topics Per Day:  0.01
  • Content Count:  997
  • Content Per Day:  0.14
  • Reputation:   4
  • Achievement Points:  5,604
  • Solved Content:  0
  • Days Won:  5
  • Status:  Offline
  • Age:  53

Posted

Pessoal, entrei em contato com o suporte e me foi enviada a "Versão Especial: 11.20.16 (22) minha versão anterior era a 11.20.10 (17) com essa nova versão ao efetuar o lançamento do evento de assistência médica o campo "Histórico Assistência à Saúde" é preenchido automaticamente, porém além de informar os valores por dependentes que estejam com o campo "Assistência Médica" marcado em Cadastros/Funcionários/Base Cálculo/Dependentes/Incidências, também é informado o valor do titular, no meu caso a regra de cálculo da assistência médica é muito simples, ou seja, R$ 35,00 por titular e R$ 35,00 por cada dependente, esse valor é informado manualmente lá nos códigos fixos, sendo assim preferi usar a fórmula postado por nosso colega Luis Valadares, conforme abaixo:

DECL DEP,VALMED;

SETVAR(VALMED,(CF('133') / (DA + 1)));

SETVAR(DEP,1);

REPITA

SE TABDEP ('INCASSISTMEDICA' ,'V', DEP)=1 ENTAO

SALVAVALDEP(DEP,VALMED)

SENAO

0

FIMSE;

SETVAR(DEP,DEP+1)

ATE DEP=12;

SALVAVALDEP(0,VALMED);

CF('133')


  • Topic Count:  68
  • Topics Per Day:  0.01
  • Content Count:  997
  • Content Per Day:  0.14
  • Reputation:   4
  • Achievement Points:  5,604
  • Solved Content:  0
  • Days Won:  5
  • Status:  Offline
  • Age:  53

Posted

Detalhe apurado agora, no momento da emissão do Informe de Rendimentos é demonstrado o valor desmembrado, ou seja, por titular e dependente, porém o titular está com valor errado, exemplo:

Janeiro/2011

Histórico Assistência à Saúde

Titular R$ 35,00

Dependente A R$ 35,00

Dependente B R$ 35,00

Informe de Rendimentos

Titular R$ 140,00 (= R$ 35 * 3 + R$ 35,00)

Dependente A R$ 35,00

Dependente B R$ 35,00

Espero ter sido claro.

  • 1 year later...

  • Topic Count:  1
  • Topics Per Day:  0.00
  • Content Count:  5
  • Content Per Day:  0.00
  • Reputation:   0
  • Achievement Points:  35
  • Solved Content:  0
  • Days Won:  0
  • Status:  Offline

Posted

Olá Pessoal,

Poderiam me ajudar nessa fórmula:

O que eu tenho parametrizado está assim:

1ª FORMULA

Código: MA01

Texto: ((DA+1) * F('MA01')) * 0.5

2ª Fórmula

Cógido: PLFILIAL

Texto:

SE TABCOMPL ('PLANOSAUDE', 'S')='' ENTAO 0 SENAO

SE TABCOMPL ('PLANOSAUDE', 'S')='MA01' ENTAO FOR('MA01') SENAO

SE TABCOMPL ('PLANOSAUDE', 'S')='MA02' ENTAO FOR('MA02') SENAO

SE TABCOMPL ('PLANOSAUDE', 'S')='MA03' ENTAO FOR('MA03') SENAO

SE TABCOMPL ('PLANOSAUDE', 'S')='MA04' ENTAO FOR('MA04') SENAO

SE TABCOMPL ('PLANOSAUDE', 'S')='MA05' ENTAO FOR('MA05') SENAO

SE TABCOMPL ('PLANOSAUDE', 'S')='MA06' ENTAO FOR('MA06') SENAO 0

FIMSE FIMSE FIMSE FIMSE FIMSE FIMSE FIMSE

Como a fórmula de assistência médica está amarrada a outra, estou confuso onde amarrar a função SALVAVALDEP, se na primeira ou na segunda fórmula, talvez o ideal fosse contruir uma única formula....

Abraços e obrigado desde já pela força!

Edney.-


  • Topic Count:  1
  • Topics Per Day:  0.00
  • Content Count:  5
  • Content Per Day:  0.00
  • Reputation:   0
  • Achievement Points:  35
  • Solved Content:  0
  • Days Won:  0
  • Status:  Offline

Posted

Olá Pessoal,

Poderiam me ajudar nessa fórmula:

O que eu tenho parametrizado está assim:

1ª FORMULA

Código: MA01

Texto: ((DA+1) * F('MA01')) * 0.5

2ª Fórmula

Cógido: PLFILIAL

Texto:

SE TABCOMPL ('PLANOSAUDE', 'S')='' ENTAO 0 SENAO

SE TABCOMPL ('PLANOSAUDE', 'S')='MA01' ENTAO FOR('MA01') SENAO

SE TABCOMPL ('PLANOSAUDE', 'S')='MA02' ENTAO FOR('MA02') SENAO

SE TABCOMPL ('PLANOSAUDE', 'S')='MA03' ENTAO FOR('MA03') SENAO

SE TABCOMPL ('PLANOSAUDE', 'S')='MA04' ENTAO FOR('MA04') SENAO

SE TABCOMPL ('PLANOSAUDE', 'S')='MA05' ENTAO FOR('MA05') SENAO

SE TABCOMPL ('PLANOSAUDE', 'S')='MA06' ENTAO FOR('MA06') SENAO 0

FIMSE FIMSE FIMSE FIMSE FIMSE FIMSE FIMSE

Como a fórmula de assistência médica está amarrada a outra, estou confuso onde amarrar a função SALVAVALDEP, se na primeira ou na segunda fórmula, talvez o ideal fosse contruir uma única formula....

Abraços e obrigado desde já pela força!

Edney.-

O jeito que encontrei foi criar uma única fórmula, achei menos complicado... Abraços!
  • 5 months later...

  • Topic Count:  21
  • Topics Per Day:  0.00
  • Content Count:  269
  • Content Per Day:  0.05
  • Reputation:   15
  • Achievement Points:  1,574
  • Solved Content:  0
  • Days Won:  12
  • Status:  Offline
  • Age:  43

Posted

Pessoal, boa tarde!

Já tentei de várias formas e não consegui inserir a variável SALVAVALDEP nesta fórmula, será que alguém pode me dar um help pois estou precisando com uma certa urgência. Obrigado!

DECL(CONT,SOMA);

SE EXECSQL('NDEPEND') = 1 ENTAO

SETVAR(CONT,1);

REPITA

SE INCDEP (CONT , 1) = 1 ENTAO

SETVAR(SOMA,SOMA + TABCOMPLDEPEND ('VALUNI' , 'V' , CONT))

SENAO

0

FIMSE;

SETVAR(CONT,CONT+1)

ATE CONT > RESULTSQL('NDEPEND' , 'QTDDEP');

SOMA

SENAO 0 FIMSE;

SE TABCOMPL ('TPUNI' , 'S') = '001' ENTAO

( ( F('UNI1') * (DA+1)) * T('0001',RC) ) + SOMA

SENAO

SE TABCOMPL ('TPUNI' , 'S') = '002' ENTAO

( ( ( F('UNI1') * (DA+1) ) * T('0001',RC) ) + ( ( F('UNI2') - F('UNI1') ) * ( DA+1) ) ) + SOMA

SENAO

SE TABCOMPL ('TPUNI' , 'S') = '003' ENTAO

( ( ( F('UNI1') * (DA+1) ) * T('0001',RC) ) + ( ( F('UNI3') - F('UNI1') ) * ( DA+1) ) ) + SOMA

SENAO

SE TABCOMPL ('TPUNI' , 'S') = '004' ENTAO

( ( ( F('UNI1') * (DA+1) ) * T('0001',RC) ) + ( ( F('UNI4') - F('UNI1') ) * ( DA+1) ) ) + SOMA

SENAO

0

FIMSE

FIMSE

FIMSE

FIMSE


  • Topic Count:  21
  • Topics Per Day:  0.00
  • Content Count:  269
  • Content Per Day:  0.05
  • Reputation:   15
  • Achievement Points:  1,574
  • Solved Content:  0
  • Days Won:  12
  • Status:  Offline
  • Age:  43

Posted

Pessoal, boa tarde!

Já tentei de várias formas e não consegui inserir a variável SALVAVALDEP nesta fórmula, será que alguém pode me dar um help pois estou precisando com uma certa urgência. Obrigado!

DECL(CONT,SOMA);

SE EXECSQL('NDEPEND') = 1 ENTAO

SETVAR(CONT,1);

REPITA

SE INCDEP (CONT , 1) = 1 ENTAO

SETVAR(SOMA,SOMA + TABCOMPLDEPEND ('VALUNI' , 'V' , CONT))

SENAO

0

FIMSE;

SETVAR(CONT,CONT+1)

ATE CONT > RESULTSQL('NDEPEND' , 'QTDDEP');

SOMA

SENAO 0 FIMSE;

SE TABCOMPL ('TPUNI' , 'S') = '001' ENTAO

( ( F('UNI1') * (DA+1)) * T('0001',RC) ) + SOMA

SENAO

SE TABCOMPL ('TPUNI' , 'S') = '002' ENTAO

( ( ( F('UNI1') * (DA+1) ) * T('0001',RC) ) + ( ( F('UNI2') - F('UNI1') ) * ( DA+1) ) ) + SOMA

SENAO

SE TABCOMPL ('TPUNI' , 'S') = '003' ENTAO

( ( ( F('UNI1') * (DA+1) ) * T('0001',RC) ) + ( ( F('UNI3') - F('UNI1') ) * ( DA+1) ) ) + SOMA

SENAO

SE TABCOMPL ('TPUNI' , 'S') = '004' ENTAO

( ( ( F('UNI1') * (DA+1) ) * T('0001',RC) ) + ( ( F('UNI4') - F('UNI1') ) * ( DA+1) ) ) + SOMA

SENAO

0

FIMSE

FIMSE

FIMSE

FIMSE

Alguém poderia dar um help aqui?

  • 12 years later...

  • Topic Count:  1
  • Topics Per Day:  0.00
  • Content Count:  7
  • Content Per Day:  0.01
  • Reputation:   2
  • Achievement Points:  46
  • Solved Content:  0
  • Days Won:  2
  • Status:  Offline
  • Device:  Windows

Posted

Pessoal, bom dia. Sei que ja se passaram anos dessa solicitação mas acho que pode ser valido inserir mais uma formula aqui,para o historico de dependente. 

Aqui trabalhamos com 4 tabelas de planos de saúde. 

Criei um campo complementar,dentro do cadastro de dependente, e associei a tabela de acordo com o plano escolhido. 

Ao recalcular o envelope, gerou corretamente o histórico do dependente, 

Espero que ajude!

DECL DEP,SOMADEP,SOMAFUN;

SETVAR(DEP,1);

SETVAR(SOMADEP,1);

 REPITA

/*SE TABDEP ('INCASSISTMEDICA' ,'V', DEP)=1 ENTAO*/

SE TABCOMPLDEPEND('ASSISTENCIAMEDICA','V',DEP)= '06' ENTAO

SE NDEPIDADE (DEP,HOJE)<=18
ENTAO SALVAVALDEP(0,0158.23);
SETVAR(SOMADEP,SOMADEP+158.23)

SENAO
SE NDEPIDADE (DEP,HOJE)<=23
ENTAO SALVAVALDEP(0,214.73);
SETVAR(SOMADEP,SOMADEP+214.73)

SENAO
SE NDEPIDADE (DEP,HOJE)<=28
ENTAO SALVAVALDEP(0,236.20);
SETVAR(SOMADEP,SOMADEP+236.20)

SENAO
SE NDEPIDADE (DEP,HOJE)<=33
ENTAO SALVAVALDEP(0,257.45);
SETVAR(SOMADEP,SOMADEP+257.45)

SENAO
SE NDEPIDADE (DEP,HOJE)<=38
ENTAO SALVAVALDEP(0,261.30);
SETVAR(SOMADEP,SOMADEP+261.30)

SENAO
SE NDEPIDADE (DEP,HOJE)<=43
ENTAO SALVAVALDEP(0,274.36);
SETVAR(SOMADEP,SOMADEP+274.36)


SENAO
SE NDEPIDADE (DEP,HOJE)<=48
ENTAO SALVAVALDEP(0,388.77);
SETVAR(SOMADEP,SOMADEP+388.77)

SENAO
SE NDEPIDADE (DEP,HOJE)<=53
ENTAO SALVAVALDEP(0,524.83);
SETVAR(SOMADEP,SOMADEP+524.83)

SENAO
SE NDEPIDADE (DEP,HOJE)<=58
ENTAO SALVAVALDEP(0,629.78);
SETVAR(SOMADEP,SOMADEP+629.78)


SENAO
SE NDEPIDADE (DEP,HOJE)> 58
ENTAO SALVAVALDEP(0,948.45);
SETVAR(SOMADEP,SOMADEP+948.45);

SETVAR(DEP,DEP+1) ATE DEP=10

FIMSE FIMSE  FIMSE FIMSE FIMSE FIMSE FIMSE FIMSE FIMSE FIMSE FIMSE;


SE TABCOMPLDEPEND('ASSISTENCIAMEDICA','V',DEP)= '07'

ENTAO SE IDADE(HOJE)<=18
ENTAO SALVAVALDEP(0,226.79);
SETVAR(SOMAFUN,SOMAFUN+226.79)

SENAO
SE IDADE(HOJE)<=23
ENTAO SALVAVALDEP(0,307.97);
SETVAR(SOMAFUN,SOMAFUN+307.97)

SENAO 
SE IDADE(HOJE)<=28
ENTAO SALVAVALDEP(0,338.75);
SETVAR(SOMAFUN,SOMAFUN+338.75)

SENAO 
SE IDADE(HOJE)<=33
ENTAO SALVAVALDEP(0,369.23);
SETVAR(SOMAFUN,SOMAFUN+369.23)

SENAO 
SE IDADE(HOJE)<=38
ENTAO SALVAVALDEP(0,374.77);
SETVAR(SOMAFUN,SOMAFUN+374.77)


SENAO 
SE IDADE(HOJE)<=43
ENTAO SALVAVALDEP(0,393.50);
SETVAR(SOMAFUN,SOMAFUN+393.50)

SENAO 
SE IDADE(HOJE)<=48
ENTAO SALVAVALDEP(0,557.58);
SETVAR(SOMAFUN,SOMAFUN+557.58)

SENAO 
SE IDADE(HOJE)<=53
ENTAO SALVAVALDEP(0,752.74);
SETVAR(SOMAFUN,SOMAFUN+752.74)

SENAO 
SE IDADE(HOJE)<=58
ENTAO SALVAVALDEP(0,903.28);
SETVAR(SOMAFUN,SOMAFUN+903.28)

SENAO 
SE IDADE(HOJE)>58
ENTAO SALVAVALDEP(0,1360.33);
SETVAR(SOMAFUN,SOMAFUN+1360.33);
SETVAR(DEP,DEP+1) ATE DEP=10;

FIMSE
FIMSE
FIMSE
FIMSE FIMSE FIMSE FIMSE FIMSE FIMSE FIMSE FIMSE FIMSE;

SE TABCOMPLDEPEND('ASSISTENCIAMEDICA','V',DEP)= '08'

ENTAO SE IDADE(HOJE)<=18
ENTAO SALVAVALDEP(0,249.52);
SETVAR(SOMAFUN,SOMAFUN+249.52)

SENAO
SE IDADE(HOJE)<=23
ENTAO SALVAVALDEP(0,338.84);
SETVAR(SOMAFUN,SOMAFUN+338.84)

SENAO 
SE IDADE(HOJE)<=28
ENTAO SALVAVALDEP(0,372.71);
SETVAR(SOMAFUN,SOMAFUN+372.71)

SENAO 
SE IDADE(HOJE)<=33
ENTAO SALVAVALDEP(0,406.26);
SETVAR(SOMAFUN,SOMAFUN+406.26)

SENAO 
SE IDADE(HOJE)<=38
ENTAO SALVAVALDEP(0,412.35);
SETVAR(SOMAFUN,SOMAFUN+412.35)


SENAO 
SE IDADE(HOJE)<=43
ENTAO SALVAVALDEP(0,432.96);
SETVAR(SOMAFUN,SOMAFUN+432.96)


SENAO 
SE IDADE(HOJE)<=48
ENTAO SALVAVALDEP(0,613.50);
SETVAR(SOMAFUN,SOMAFUN+613.50)

SENAO 
SE IDADE(HOJE)<=53
ENTAO SALVAVALDEP(0,828.22);
SETVAR(SOMAFUN,SOMAFUN+828.22)

SENAO 
SE IDADE(HOJE)<=58
ENTAO SALVAVALDEP(0,993.86);
SETVAR(SOMAFUN,SOMAFUN+993.86)

SENAO 
SE IDADE(HOJE)>58
ENTAO SALVAVALDEP(0,1496.75);
SETVAR(SOMAFUN,SOMAFUN+1496.75);
SETVAR(DEP,DEP+1) ATE DEP=10; 
FIMSE
FIMSE
FIMSE
FIMSE   
FIMSE FIMSE FIMSE FIMSE FIMSE FIMSE FIMSE FIMSE


SE TABCOMPLDEPEND('ASSISTENCIAMEDICA','V',DEP)= '09'

ENTAO SE IDADE(HOJE)<=18
ENTAO SALVAVALDEP(0,68.41);
SETVAR(SOMAFUN,SOMAFUN+68.41)

SENAO
SE IDADE(HOJE)<=23
ENTAO SALVAVALDEP(0,92.90);
SETVAR(SOMAFUN,SOMAFUN+92.90)

SENAO 
SE IDADE(HOJE)<=28
ENTAO SALVAVALDEP(0,102.19);
SETVAR(SOMAFUN,SOMAFUN+102.19)

SENAO 
SE IDADE(HOJE)<=33
ENTAO SALVAVALDEP(0,111.39);
SETVAR(SOMAFUN,SOMAFUN+111.39)

SENAO 
SE IDADE(HOJE)<=38
ENTAO SALVAVALDEP(0,113.06);
SETVAR(SOMAFUN,SOMAFUN+113.06)


SENAO 
SE IDADE(HOJE)<=43
ENTAO SALVAVALDEP(0,118.71);
SETVAR(SOMAFUN,SOMAFUN+118.71)


SENAO 
SE IDADE(HOJE)<=48
ENTAO SALVAVALDEP(0,168.21);
SETVAR(SOMAFUN,SOMAFUN+168.21)

SENAO 
SE IDADE(HOJE)<=53
ENTAO SALVAVALDEP(0,227.08);
SETVAR(SOMAFUN,SOMAFUN+227.08)

SENAO 
SE IDADE(HOJE)<=58
ENTAO SALVAVALDEP(0,272.50);
SETVAR(SOMAFUN,SOMAFUN+272.50)

SENAO 
SE IDADE(HOJE)>58
ENTAO SALVAVALDEP(0,410.39);
SETVAR(SOMAFUN,SOMAFUN+410.39);

FIMSE
FIMSE
FIMSE
FIMSE   
FIMSE FIMSE FIMSE FIMSE FIMSE FIMSE FIMSE FIMSE
SETVAR(DEP,DEP+1) ATE DEP=10; 

 SOMADEP+SOMAFUN


  • Topic Count:  946
  • Topics Per Day:  0.13
  • Content Count:  9,184
  • Content Per Day:  1.26
  • Reputation:   459
  • Achievement Points:  109,775
  • Solved Content:  0
  • Days Won:  266
  • Status:  Offline
  • Age:  53
  • Device:  Windows

Posted

Só uma coisa, acho que está errada sua fórmula. Ela está calculando todos os blocos e salvando sempre no DEP(0), que é o funcionário, e não salvando os valores por dependente, como deveria. E tem bloco que usa o SOMADEP e ora o SOMAFUN... não entendi se isso estaria certo mesmo ou não. 

Uma dica para facilitar a manutenção e até atualizações nesta sua fórmula @Camillafs, é usar tabelas, onde segundo a idade, você define o valor a ser usado. Neste seu caso, é só criar uma tabela conforme o tipo de ASSISTENCIAMEDICA (conforme seu campo complementar), 06, outra para o 07, 08 e 09. O que você testa aqui nessa parte abaixo em vários blocos:

(TABCOMPLDEPEND('ASSISTENCIAMEDICA','V',DEP)= 'XX'

 

Você usando os valores de Idade como faixas das tabelas, pode inserir os valores que serão usados para cada faixa, e otimiza assim a sua fórmula. Cada bloco só vai alterar a tabela, de acordo com cada caso, por exemplo:

Você retira:

...

SE TABCOMPLDEPEND('ASSISTENCIAMEDICA','V',DEP)= '06' ENTAO

SE NDEPIDADE (DEP,HOJE)<=18
ENTAO SALVAVALDEP(0,0158.23);
SETVAR(SOMADEP,SOMADEP+158.23)

SENAO
SE NDEPIDADE (DEP,HOJE)<=23
ENTAO SALVAVALDEP(0,214.73);
SETVAR(SOMADEP,SOMADEP+214.73)

SENAO
SE NDEPIDADE (DEP,HOJE)<=28
ENTAO SALVAVALDEP(0,236.20);
SETVAR(SOMADEP,SOMADEP+236.20)

SENAO
SE NDEPIDADE (DEP,HOJE)<=33
ENTAO SALVAVALDEP(0,257.45);
SETVAR(SOMADEP,SOMADEP+257.45)

SENAO
SE NDEPIDADE (DEP,HOJE)<=38
ENTAO SALVAVALDEP(0,261.30);
SETVAR(SOMADEP,SOMADEP+261.30)

SENAO
SE NDEPIDADE (DEP,HOJE)<=43
ENTAO SALVAVALDEP(0,274.36);
SETVAR(SOMADEP,SOMADEP+274.36)


SENAO
SE NDEPIDADE (DEP,HOJE)<=48
ENTAO SALVAVALDEP(0,388.77);
SETVAR(SOMADEP,SOMADEP+388.77)

SENAO
SE NDEPIDADE (DEP,HOJE)<=53
ENTAO SALVAVALDEP(0,524.83);
SETVAR(SOMADEP,SOMADEP+524.83)

SENAO
SE NDEPIDADE (DEP,HOJE)<=58
ENTAO SALVAVALDEP(0,629.78);
SETVAR(SOMADEP,SOMADEP+629.78)


SENAO
SE NDEPIDADE (DEP,HOJE)> 58
ENTAO SALVAVALDEP(0,948.45);
SETVAR(SOMADEP,SOMADEP+948.45);

SETVAR(DEP,DEP+1) ATE DEP=10

FIMSE FIMSE  FIMSE FIMSE FIMSE FIMSE FIMSE FIMSE FIMSE FIMSE FIMSE;

...

FIMSE
FIMSE
FIMSE
FIMSE   
FIMSE FIMSE FIMSE FIMSE FIMSE FIMSE FIMSE FIMSE
SETVAR(DEP,DEP+1) ATE DEP=10; 

 SOMADEP+SOMAFUN

 

Alterando por :

 

DECL DEP, SOMADEP, PLANO, IDADE_DEP, VALOR;
SETVAR(DEP, 1);
SETVAR(SOMADEP, 0);

REPITA
    /* 1. Identifica o plano do dependente atual */
    SETVAR(PLANO, TABCOMPLDEPEND('ASSISTENCIAMEDICA', 'V', DEP));
    
    /* 2. Verifica se o plano está entre os que usam tabela (06, 07, 08, 09) */
    SE PLANO = '06' OU PLANO = '07' OU PLANO = '08' OU PLANO = '09' ENTAO
        
        SETVAR(IDADE_DEP, NDEPIDADE(DEP, HOJE));
        
        /* 3. Busca os valores nas tabelas criadas (Ex: TABX06, TABX07...)
           Os valores nas tabelas, devem usar as faixas associando às idades, e assim, usa o 
           valor no campo LIMITESUPERIOR para indicar o valor desejado para uso na fórmula */
        SETVAR(VALOR, TABCALCULO('LIMITESUPERIOR', 'TABX' + PLANO, HOJE, IDADE_DEP));
        
        /* 4. Executa as ações de salvamento e soma apenas se houver valor */
        SE VALOR > 0 ENTAO
            SALVAVALDEP(0, VALOR);
            SETVAR(SOMADEP, SOMADEP + VALOR)
        FIMSE
    FIMSE;
    
    SETVAR(DEP, DEP + 1)
ATE DEP > 10;

SOMADEP

 

----------------------------------------------------------


Caso queira testar se funciona para você essa forma de tratar, cria as suas tabelas (TABX06, 07, 08 e 09) e preencha os valores por faixa (idade) nos campos LIMITESUPERIOR, e teste se é o que deseja o resultado. 


Valide inicialmente em ambiente de testes, ok?

 

PS.: Nem levei em consideração a tratativa de avaliar por SQL antes, a quantidade de dependentes para não ficar fazendo o loop 10 vezes sempre a cada funcionário varrendo os dependentes. Se quiser podemos ajustar melhor isso, mas desta forma que apresentei acima, quis mostrar como pode otimizar a fórmula, na escrita, e na manutenção para esses casos.  


  • Topic Count:  1
  • Topics Per Day:  0.00
  • Content Count:  7
  • Content Per Day:  0.01
  • Reputation:   2
  • Achievement Points:  46
  • Solved Content:  0
  • Days Won:  2
  • Status:  Offline
  • Device:  Windows

Posted

Aquela estrutura que eu tinha enviado antes acabou não gerando o histórico do dependente como eu esperava. No fim, precisei refazer.

Acabei seguindo algo bem parecido com o que você orientou.
Inclusive achei bom porque dá mais autonomia para o DP, já que agora não precisam mexer na fórmula quando muda valor, apenas ajustar a tabela de cálculo.

Fiz a formula do titular assim:

(temos mais de um plano,entao tratei por condição):

DECL vDATA,vFAI,vVLRFUN,vPLANO;

SETVAR(vDATA,ULTDIAMES(MTDATA(01,MES,ANO)));
SETVAR(vVLRFUN,0);
SETVAR(vPLANO,TABCOMPL('ASSISTENCIAMEDICA','S'));

SE vPLANO <> '02'
ENTAO
   SE vPLANO = '01'
   ENTAO
      SETVAR(vFAI,FAIXATABCALC('PL01',vDATA,IDADE(vDATA)));
      SETVAR(vVLRFUN,TABCALCULO('VALDEDUZIR','PL01',vDATA,vFAI));

   SENAO SE vPLANO = '03'
   ENTAO
      SETVAR(vFAI,FAIXATABCALC('PL03',vDATA,IDADE(vDATA)));
      SETVAR(vVLRFUN,TABCALCULO('VALDEDUZIR','PL03',vDATA,vFAI));
   FIMSE
   SALVAVALDEP(0,vVLRFUN)
SENAO
   SETVAR(vVLRFUN,0)
FIMSE;

Pra dependente acabei criando uma SQL nesse primeiro momento só pra garantir a identificação dos dependentes que tem plano, pra conseguir gerar o histórico. Mas a ideia é justamente refinar a formula pra eliminar essa consulta. 

Se no campo de dependentes,no cadastro de funcionario, aba Incidencias, tiver flegado o campo Assistencia Medica/odontologica retornará o numero do dependente. 

O sql ficou assim:

SELECT NRODEPEND
FROM PFDEPEND DEP
INNER JOIN PFUNC FUN 
   ON DEP.CODCOLIGADA = FUN.CODCOLIGADA 
  AND DEP.CHAPA = FUN.CHAPA
INNER JOIN PFCOMPL COM 
   ON FUN.CODCOLIGADA = COM.CODCOLIGADA 
  AND FUN.CHAPA = COM.CHAPA
WHERE COM.ASSISTENCIAMEDICA <> '02'
  AND DEP.INCASSISTMEDICA = '1'
  AND COM.CHAPA = :FRM_CHAPA

E associei ela na formula do Dependente:

DECL vDATA,vFAI,vNDP,vVLRDEP,vPLANO;

SETVAR(vDATA,ULTDIAMES(MTDATA(01,MES,ANO)));
SETVAR(vVLRDEP,0);
SETVAR(vPLANO,TABCOMPL('ASSISTENCIAMEDICA','S'));

SE EXECSQL('ASSMED01') = 1
ENTAO REPITA

   SETVAR(vNDP,RESULTSQL('ASSMED01','NRODEPEND'));
   SE vPLANO = '01'
   ENTAO
      SETVAR(vFAI,FAIXATABCALC('PL01',vDATA,NDEPIDADE(vNDP,vDATA)));
      SETVAR(vVLRDEP,
             vVLRDEP + TABCALCULO('VALACRESCENTAR','PL01',vDATA,vFAI));
      SALVAVALDEP(vNDP,
                  TABCALCULO('VALACRESCENTAR','PL01',vDATA,vFAI));

   SENAO SE vPLANO = '03'
   ENTAO
      SETVAR(vFAI,FAIXATABCALC('PL03',vDATA,NDEPIDADE(vNDP,vDATA)));
      SETVAR(vVLRDEP,
             vVLRDEP + TABCALCULO('VALACRESCENTAR','PL03',vDATA,vFAI));
      SALVAVALDEP(vNDP,
                  TABCALCULO('VALACRESCENTAR','PL03',vDATA,vFAI));
   FIMSE
ATE PROXREGSQL('ASSMED01') = 0
FIMSE;

vVLRDEP


Fiz tudo na homologacao e,dessa vez, deu certinho.rs

Muito obrigadaa

  • Like 1

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.