Clique abaixo para nos ajudar
Login

Esqueci minha senha

Estamos no Facebook
Buscar
 
 

Resultados por:
 


Rechercher Busca avançada

Quem está conectado
20 usuários online :: 1 usuário cadastrado, Nenhum Invisível e 19 Visitantes :: 2 Motores de busca

FAF

[ Ver toda a lista ]


O recorde de usuários online foi de 468 em 1/3/2012, 10:43
Últimos assuntos
» Alterar uma palavra num arquivo de texto
Ontem à(s) 12:02 por Teseu

» Buscar endereço por CEP
3/12/2016, 19:59 por pedrossian

» USAR WEBSERVICE NO VFP9
2/12/2016, 09:50 por AJC

» BANIMENTO DE USUARIO
17/11/2016, 08:31 por FAF

» Impressora Ticket
15/11/2016, 09:20 por clima238

» Gráfico
9/11/2016, 10:43 por hidroluz

» TRANSPOR TABELA
9/11/2016, 10:34 por hidroluz

» MUDANÇA DO .DBF PARA POTSGREE
9/11/2016, 09:12 por AJC

» Website com videoaulas sobre linguagens de programação
8/11/2016, 09:56 por JLDR

» Parceria para desenvolvimento de template em Wordpress
7/11/2016, 19:15 por mindix

» Data fica invertida na planilha que é gerada via programa.
27/10/2016, 11:00 por Linghston

» Maximizar report direto do menu
21/10/2016, 20:48 por Rosangela Pires

» Fechar form com tempo
21/10/2016, 10:15 por Rosangela Pires

» URGENTE: Ajuda com impressora ELGIN-L42
14/10/2016, 09:53 por megasoft

» Opções para gerar NF-e
10/10/2016, 09:07 por mavsinfo

» Google Maps
8/10/2016, 15:08 por Rosangela Pires

» Mysql
5/10/2016, 11:22 por Marcos Guedes

» Acessando Banco em MYSQL de um projeto WORDPRESS
3/10/2016, 10:58 por Marcos Guedes

» OPTION SELECT MOSTRAR CAMPOS QUASE PRONTO
26/9/2016, 21:09 por BobKuspe

» Pesquisa em grid
14/9/2016, 09:24 por AJC

Alterar uma palavra num arquivo de texto

5/12/2016, 12:02 por Teseu

Olá prezados colegas de programação!

Este é eu primeiro post no fórum e gostaria de poder …

Comentários: 0

Buscar endereço por CEP

3/12/2016, 19:59 por pedrossian

Caros amigos, meu código para buscar endereço pelo CEP não funciona mais.
Alguém pode me …

Comentários: 0

USAR WEBSERVICE NO VFP9

2/12/2016, 09:50 por AJC

Pessoal, preciso de um material ou livro que me traga instruções como
usar a consumação de …

Comentários: 0

BANIMENTO DE USUARIO

13/11/2016, 16:21 por FAF

A usuária ROSANGELA PIRES ao tentar acessar o Forum obtem sempre a mensagem de BANIMENTO.
A mesma …

Comentários: 3

Impressora Ticket

15/11/2016, 09:20 por clima238

Bom dia,
Por favor alguém me explique porque o código abaixo imprime no ecrã em vez do printer: …

Comentários: 0

Estatísticas
Temos 6962 usuários registrados
O último usuário registrado atende pelo nome de teklainfo

Os nossos membros postaram um total de 17118 mensagens em 2576 assuntos

Valor por Extenso

Ver o tópico anterior Ver o tópico seguinte Ir em baixo

Valor por Extenso

Mensagem por Rosangela Pires em 10/6/2015, 22:46

Amigos,

Alguem tem uma função que imprima por extenso um valor e que quebre o valor por linhas.
Exemplo : Quero que o valor por extenso seja dividido em 3 linhas com a separação de silabas.

No Clipper eu tinha uma função que fazia isso.

Rosangela

Rosangela Pires
Participa Bastante
Participa Bastante


Voltar ao Topo Ir em baixo

Re: Valor por Extenso

Mensagem por Julio em 12/6/2015, 10:08

Rosângela, Bom dia.

Tenho esta aqui que utilizo em uma carta mas justificado, não reparei se quebra por silabas.

Mas a do clipper pode ser utilizada fazendo pequenos ajustes.

Método EXTENSO
Código:
    Parameters nVal

** c = contador
** x = algarismo corrente
** p = proximo algarismo
** t = posicao do algarismo (dezena,centena,milhar)
** y = variavel p/ buscar descricao do algarismo
** z = macro que cria "y"
** d = descricao do algarismo
** k = variavel p/ controlar o primeiro caso de "l"
** l = ligador (e)
** f = verificacao da dezena, centena, milhar, ...
** u = verificacao da posicao da palavra "cem e"
** m = moeda
    N="n000"
    n000=""
    n001="Um "
    n002="Dois "
    n003="Tres "
    n004="Quatro "
    n005="Cinco "
    n006="Seis "
    n007="Sete "
    n008="Oito "
    n009="Nove "
    n010="Dez "
    n011="Onze "
    n012="Doze "
    n013="Treze "
    n014="Quatorze "
    n015="Quinze "
    n016="Dezesseis "
    n017="Dezessete "
    n018="Dezoito "
    n019="Dezenove "
    n020="Vinte "
    n030="Trinta "
    n040="Quarenta "
    n050="Cinquenta "
    n060="Sessenta "
    n070="Setenta "
    n080="Oitenta "
    n090="Noventa "
    n100="Cem "
    n200="Duzentos "
    n300="Trezentos "
    n400="Quatrocentos "
    n500="Quinhentos "
    n600="Seiscentos "
    n700="Setecentos "
    n800="Oitocentos "
    n900="Novecentos "
    nVal=Thisform.text2.value
    xvalor=Str(nVal,12,2)
    Store "0" To v0,c0
    v1=Subs(xvalor,1,1)
    v2=Subs(xvalor,2,1)
    v3=Subs(xvalor,3,1)
    v4=Subs(xvalor,4,1)
    v5=Subs(xvalor,5,1)
    v6=Subs(xvalor,6,1)
    v7=Subs(xvalor,7,1)
    v8=Subs(xvalor,8,1)
    v9=Subs(xvalor,9,1)
    c1=Subs(xvalor,11,1)
    c2=Subs(xvalor,12,1)
    f1=Val(v1+v2+v3)
    f2=Val(v4+v5+v6)
    f3=Val(v7+v8+v9)
    f4=Val(c1+c2)
    Store "" To m1,m2,m4,m5,m7,m8,m9
    m3=Iif(f1>=1,Iif(f1>1,"Milhoes ","Milhao "),"")
    m6=Iif(f2=0,"","Mil ")
    exten1=""
    Store 0 To c,T,k
    Do While c<9
        c=c+1
        x="v"+Str(c,1)
        p=Iif(c<9,"v"+Str(c+1,1),"v0")
        k=k+Val(&x)
        T=Iif(T=3,1,T+1)
        &x=Iif(&x=" ","0",&x)
        Y=Iif(T=2 .And. &x="1","n0"+&x+&p,Stuff(N,T+1,1,&x))
        c=Iif(T=2 .And. &x="1",c+1,c)
        T=Iif(T=2 .And. &x="1",T+1,T)
        p=Iif(c<9,"v"+Str(c+1,1),"v0")
        d=Iif(Val(&x)#0,&Y,"")
        l=Iif(Val(&p)#0 .And. k#0,"e ","")
        m="m"+Str(c,1)
        exten1=exten1+d+&m+l
        u=At("Cem e",exten1)
        exten1=Iif(u#0,Subs(exten1,1,u)+"ento"+Subs(exten1,u+3,Len(exten1)),exten1)
    Enddo
    o1=Iif(nVal>=1,Iif(nVal>1,Iif(f2+f3#0,"Reais ","de Reais "),"Real " ),"")
    exten1=Iif(exten1=" ","",Iif(f4=0,exten1+o1,exten1+o1+"e "))
    exten1=Iif(exten1="e ","",exten1)
    y1="n00"+c2
    y2="n0"+c1+"0"
    y3="n0"+c1+c2
    exten2=Iif(f4<10,&y1,Iif(f4<20,&y3,Iif(c2="0",&y2,&y2+"e "+&y1)))
    exten2=Iif(f4=0,"",Iif(f4=1,exten2+"Centavo",exten2+"Centavos"))
    Exten=exten1+exten2
    Thisform.text3.value=exten
    Return &&Exten

Método SEPARA EXTENSO
Código:
*---separa valor por extenso
*separa expressão onde os dois campos comportam até 50 caracteres
*fun separa_ext(for_exte) &&for_exte = <expressão>
PUBLIC for_exte,for_exte1
for_exte=Thisform.text3.value
DO CASE
  CASE LEN(RTRIM(for_exte)) > 92 AND SUBSTR(for_exte,92,1) # " " AND SUBSTR(for_exte,93,1) # " "
      for_exte1=SUBSTR(for_exte,RAT(" ",SUBSTR(for_exte,1,92)),92)
      for_exte =SUBSTR(for_exte,1,RAT(" ",SUBSTR(for_exte,1,92)))
  CASE LEN(RTRIM(for_exte)) > 92 AND (SUBSTR(for_exte,92,1) = " " OR SUBSTR(for_exte,93,1) = " ")
      for_exte1=SUBSTR(for_exte,93,50)
      for_exte =SUBSTR(for_exte,1,92)
  CASE LEN(RTRIM(for_exte)) < 92
      for_exte1=''
      for_exte =ALLTRIM(for_exte)
ENDCASE

*return for_exte, for_exte1

Julio
Usuário 5 Estrelas
Usuário 5 Estrelas


Voltar ao Topo Ir em baixo

Re: Valor por Extenso

Mensagem por Rosangela Pires em 12/6/2015, 10:48

Amigo Julio,

Esta função eu tb encontrei e estou utilizando.

Ela não quebra por silabas.

Eu tenho a função do clipper, andei olhando e como sou iniciante no visual fox, não consegui adapta-la para visual fox, ainda não tenho tanto conhecimento para tal empreitada. Sei que ela funciona perfeitamente em clipper.

Obrigado pela atenção e ajuda.

Rosangela Pires

Rosangela Pires
Participa Bastante
Participa Bastante


Voltar ao Topo Ir em baixo

Re: Valor por Extenso

Mensagem por Rosangela Pires em 12/6/2015, 11:09

Amigo Julio,

O código retorna duas variáveis : Exten1 que monta a linha com milhar, centena e Exten2 que retorna a linha com os centavos.
Para o que necessito que é impressão de cheque não serve.
Pois mesmo unindo as 02 variáveis, na quebra da 1 linha do cheque não teria a separação silábica, caso seja necessário a quebra.
Para outro uso talvez sim.

Rosangela Pires

Rosangela Pires
Participa Bastante
Participa Bastante


Voltar ao Topo Ir em baixo

Re: Valor por Extenso

Mensagem por lardecristo em 12/6/2015, 15:31

Rosangela, poste a sua em Clipper, que eu posso tentar ajustar para o VFP.

Abraços.

lardecristo
Participa Bastante
Participa Bastante


Voltar ao Topo Ir em baixo

Re: Valor por Extenso

Mensagem por Rosangela Pires em 12/6/2015, 15:52

Amigo Julio,

Segue link para o código :

[Você precisa estar registrado e conectado para ver este link.]

Rosangela Pires

Rosangela Pires
Participa Bastante
Participa Bastante


Voltar ao Topo Ir em baixo

Re: Valor por Extenso

Mensagem por lardecristo em 12/6/2015, 16:55

Ok.... Agora mudei de nome...kkkk....rsrsr... brincadeira.... vou dar um olhada e depois te falo...

Abraços.

lardecristo
Participa Bastante
Participa Bastante


Voltar ao Topo Ir em baixo

Re: Valor por Extenso

Mensagem por lardecristo em 13/6/2015, 17:47

Pronto....Ufa....kkkkk... Já converti para VFP 9.

[Você precisa estar registrado e conectado para ver este link.]

Qualquer dúvida me pergunte, tem algumas explicações no fonte.

Abraços,

LardeCristo.

lardecristo
Participa Bastante
Participa Bastante


Voltar ao Topo Ir em baixo

Re: Valor por Extenso

Mensagem por Rosangela Pires em 13/6/2015, 22:02

Amigo LardeCristo,

Sua adaptação ficou perfeita.
A rotina está funcionando corretamente.
Porem, estou com dúvidas e problemas ainda.

1 - Você criou a variavel (lsExt )e menciona que ela recebera a matriz do extenso e que ela deve ser passada por referencia usando o @. Você poderia me explicar melhor isso, se não for complicado para você ?
2- Como pretendo usar a rotina para emissão de cheque e vou quebrar o extenso em 02 linhas, joguei o retorno em uma variavel e percebi que ele é continuo, porem você na quebra coloca no final o tamanho da string. Tentei achar no código onde você inclui para poder tirar, montando assim a variavel inteira para que eu possa quebrar usando o SUBSTR()e quebrar pelo tamanho que determinei da string,e não localizei.
Você pode me ajudar ainda neste itens.

Rosangela Pires

Rosangela Pires
Participa Bastante
Participa Bastante


Voltar ao Topo Ir em baixo

Re: Valor por Extenso

Mensagem por lardecristo em 13/6/2015, 22:45

Vamos lá..

1 - Existem duas formas de se passar uma variável para uma função, "por referencia" ou "por valor".

1a. - Por valor, você passa o valor da variável para outra variável e a mesma não sofre com a alteração que houver internamente.
Ex.
Código:

lnA = 10
PassandoPorValor(lnA)
PROCEDURE PassandoPorValor(lnAux as Integer)
   lnAux = 20
ENDPROC
MESSAGEBOX(lnA)
Neste exemplo, o valor de lnA vai continuar 10, apesar da variável lnAux receber 20, ou seja foram criadas duas caixinhas de memória, uma para lnA e outra para lnAux.

1b. Por Referência, você passa o valor da variável para outra variável e a mesma sofre com a alteração que houver internamente.

Código:

lnA = 10
PassandoPorReferencia(@lnA)
PROCEDURE PassandoPorReferencia(lnAux as Integer)
   lnAux = 20
ENDPROC
MESSAGEBOX(lnA)
Neste exemplo, o valor de lnA vai mudar para 20,ou seja foi criado uma caixinha só de memória, esta sendo para lnA e a variável lnAux aponta para esta caixinha.

2 - Sobre o código que acrescenta o tamanho no final está no botão "Mostra por Extenso"
Código:
lsAux = lsAux + lsExt[lnA] + " - " + TRANSFORM(LEN(lsExt[lnA])) + CHR(13)

Substitua por este
Código:
lsAux = lsAux + lsExt[lnA] + CHR(13)

Sobre SUBSTR, você não precisa usar, porque a variável lsExt virá uma matriz, ou seja contém já a string quebrada nas linhas que você precisa.

Um código mais simples para você entender.

Código:

lsExt = ""

Extenso(1545678.20, @lsExt,2,70,"*")

? lsExt[1]
? lsExt[2]

lardecristo
Participa Bastante
Participa Bastante


Voltar ao Topo Ir em baixo

Re: Valor por Extenso

Mensagem por Rosangela Pires em 14/6/2015, 14:04

Amigo LardeCristo,

Agradeço pela sua ajuda, pelo tempo dedicado na conversão e nas explicações de minhas dúvidas.

Valeu mesmo !!!!!!

Seu pudesse Reputaria como 1000.

Obrigado.

Rosangela Pires


Rosangela Pires
Participa Bastante
Participa Bastante


Voltar ao Topo Ir em baixo

Re: Valor por Extenso

Mensagem por Rosangela Pires em 14/6/2015, 14:20

Amigo LardeCristo,

Seu Pudesse é muito bom..........

Entenda * Se eu pudesse....*

Rosangela

Rosangela Pires
Participa Bastante
Participa Bastante


Voltar ao Topo Ir em baixo

Re: Valor por Extenso

Mensagem por Julio em 15/6/2015, 11:52

Rosângela

Ia pedir para enviar a rotina q você tem ai, mas como já foi resolvido pelo LardeCristo, tento ajudar na próxima.

Abraços

Julio
Usuário 5 Estrelas
Usuário 5 Estrelas


Voltar ao Topo Ir em baixo

Re: Valor por Extenso

Mensagem por Rosangela Pires em 15/6/2015, 14:15

Amigo Julio,

Com certeza terei mais dúvidas e espero sempre contar com a sua ajuda.

Obrigado.

Rosangela Pires

Rosangela Pires
Participa Bastante
Participa Bastante


Voltar ao Topo Ir em baixo

Re: Valor por Extenso

Mensagem por Rosangela Pires em 17/6/2015, 02:12

Amigo LardeCristo,

No projeto que estou desenvolvendo defini o numero de linhas como 02. Porem quando tento na linha 02 colocar mais alguns ( * ) para complementar a linha, os astericos normais vindo da função desaparecem e nem os que defini com Repl("*",20) aparecem.
Se você puder me ajudar, como soluciono isso ????

Rosangela Pires

Rosangela Pires
Participa Bastante
Participa Bastante


Voltar ao Topo Ir em baixo

Re: Valor por Extenso

Mensagem por Julio em 26/6/2015, 09:48

Rosângela, bom dia

Será que isto não ocorre em virtude dos caracteres se ajustarem. por exemplo a letra "i" usa espaço menor que a letra "m".
Assim tem a quantidade de asterisco mas não completa até o final da linha superior.
Fiz uns testes aqui e percebi que em alguns casos a linha um tem um extenso curto os asteriscos da linha dois ficam "maiores" desalinhados. E em outros casos ocorre que na linha dois tem a quantidade certa de asterisco, mas não chega até o final da linha um.
Quanto não completar o repl posta um exemplo para dar uma olhada.

Julio
Usuário 5 Estrelas
Usuário 5 Estrelas


Voltar ao Topo Ir em baixo

Re: Valor por Extenso

Mensagem por lardecristo em 28/6/2015, 23:13

Olá Rosangela, me desculpe, só vi agora a sua pergunta.

Mas vamos lá, faça o seguinte.

Código:

lsExt[2] = lsExt[2] + REPLICATE("*", 10)
Observe que estou usando a variável que utilizei no exemplo acima, se você mudou o nome dela é só substituir, mas não esqueça que precisa ser desta forma acima.

lardecristo
Participa Bastante
Participa Bastante


Voltar ao Topo Ir em baixo

Re: Valor por Extenso

Mensagem por Conteúdo patrocinado Hoje à(s) 18:53


Conteúdo patrocinado


Voltar ao Topo Ir em baixo

Ver o tópico anterior Ver o tópico seguinte Voltar ao Topo


 
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum