Página 2 de 2

Função extenso passo a passo

Enviado: 18 Abr 2021 12:46
por JoséQuintas
O "E" quando for centena redonda

Código: Selecionar todos

         IF Len( cTxt ) != 0
            cTxt += " "
            IF nCentena == Int( nCentena / 100 ) * 100
               cTxt += "E "
            ENDIF
         ENDIF
Trocar HUM MIL, POR MIL, .... ainda precisa confirmar

Código: Selecionar todos

         //IF nGrupo != 4 .OR. nCentena != 1 // grupo milhar valor 1 diferente
            cTxt += ze_ExtensoCentena( nCentena )
         //ENDIF
O mesmo referente a HUM
Uma alternativa seria:

Código: Selecionar todos

cTxt := StrTran( cTxt, "HUM", "UM" )
Pensei parecido para trocar UM MIL, mas não dá, porque VINTE E UM MIL seria trocado também.
Será desbloquear o bloco indicado anteriormente.

Função extenso passo a passo

Enviado: 18 Abr 2021 12:51
por JoséQuintas
Pendências:

Confirmar se os bancos, no preenchimento por computador, exigem:

- HUM no lugar de UM
- UM MIL no lugar de MIL

Função extenso passo a passo

Enviado: 18 Abr 2021 13:47
por JoséQuintas
Na internet só encontrei sobre o HUM mesmo, pra evitar fraudes, porque escrito a mão, como foi postado num link anterior, dá pra facilmente transformar UM em CEM, o HUM é justamente pra evitar isso.

O mil, sem HUM MIL, é mais pra evitar que alguém coloque algum texto antes de mil.

Existe a alternativa de escrever entre parênteses, ou com sinal de igual.
=MIL
(MIL)

Não encontrei nada oficial dos bancos sobre "o que é oficial", nem no caso de escrita a mão, nem no caso de escrita por computador.

Talvez confirmar com clientes sobre isso.

Na rotina de extenso dá pra deixar " UM ", e por strtran() trocar " UM " pra " HUM ", ou vice-versa.

Função extenso passo a passo

Enviado: 18 Abr 2021 13:48
por JoséQuintas
Ficamos no aguardo de informações oficiais.

Função extenso passo a passo

Enviado: 18 Abr 2021 19:45
por JoséQuintas
extenso.png
Rotina em MySQL, conforme aquele site.

Função extenso passo a passo

Enviado: 20 Abr 2021 16:50
por JoséQuintas
Tem gente que ainda se perde com isso.
Como funciona o conjunto?

222

Passa pra rotina de centena 222.
A rotina de centena tem "DUZENTOS E" e chama a de dezena passando 22

A rotina de dezena recebe 22.
A rotina de dezena tem "VINTE E" e chama a de unidade passando 2

A rotina de unidade recebe 2.
A rotina de unidade devolve "DOIS" pra dezena

A dezena junta "VINTE E DOIS" e devolve pra centena

A centena junta "DUZENTOS E VINTE E DOIS" e devolve pra quem chamou

E é assim que tudo vai se formando, cada função recebe um valor e devolve um texto.
Não precisamos chamar cada uma, basta chamar uma principal que ela faz uso das outras, se precisar.

Com certeza, nessas horas é importantíssimo declarar variáveis como LOCAL no Harbour, pra não ter mistura de variáveis.
No MySQL isso já é feito por padrão.