Página 1 de 1

Duvidas...erro ao compilar.

Enviado: 27 Set 2006 15:25
por msilvestre
Quando estou compilando o fonte abaixo...me da esse erro...eh necessario o uso de alguma biblioteca especifica.


Reading object files and library headers.
Processing library directories.
Extracting library objects.
Unresolved externals...
"ADIREG" in module (FAT)
"BLOQREG" in module (FAT)
"BORDA" in module (FAT)
"DBREPLACE" in module (FAT)
"MESSAGE" in module (FAT)
"ROTABLES" in module (FAT)
"ROTCGCPF" in module (FAT)
"RTKBD" in module (FAT)
ERROR(#4045): Total: 8 unresolved symbols.

ERROR(#4056): Abort error level exceeded.


EXOSPACE error : link failed - .EXE not created (2)

Pois essa fonte esta no ar hoje normal, mais fiz algumas alteracoes e nao na hora de compilar esta dando erros em locais que nao foram alterados...
Acredito que falte algo no meu clipper....

Abraços

*ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ*³ Programa : FAT.PRG Data: 15/12/99
*³ Autor : Marcel Silvestre *
*ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ//#INCLUDE "INKEY.CH"
STATIC lBusca := .F.
PROCEDURE Main( cTecla )
PRIVATE menu1, menu2, cTela
IF cTecla == NIL
cTecla := "ðð"
ENDIF
SET CENTURY ON
SET EPOCH TO 1939
SET DATE BRITISH
SET DELETED ON
SET SCOREBOARD OFF
SET WRAP ON
SET INTENSITY OFF
IF "/I" $ cTecla .OR. "/i" $ cTecla
USE fat SHARED NEW
INDEX ON db_razao TO fat01
INDEX ON db_cgcpf TO fat02
INDEX ON DtoS(db_venc)+db_razao TO fat03
CLOSE ALL
ENDIF
USE fat INDEX fat01, fat02, fat03 SHARED NEW
Setcolor("w+/b,,b,")
CLS
@ 00,00,23,79 BOX "°°°°°°°°°"
Setcolor("w/w+/w")
@ 00, 00 SAY SPACE(80)
@ 00, 31 SAY "FATURAMENTO"
@ 23, 00 SAY SPACE(80)
Setcolor("w+/b,,b,")

*-- Senha --------------------------------------------------------------

cTela := SaveScreen()
senha := ""
Borda(11,31,13,48)
@ 12,33 SAY "Senha.:"
cTecla := rtkbd(12, 41, 6, 0, "_", "*", "U", "A", 30, @senha)
IF senha != "TOMALA"
CLOSE ALL
Setcolor("w/n,,n/w")
CLS
CANCEL
RETURN
ENDIF
RestScreen(,,,,cTela)

*-- Menu ---------------------------------------------------------------

PRIVATE cCgcpf, cRazao, cIE, cCidade, cEstado, cEnd, cTel,;
cFax, cContato, cCep, cNf, dDataEmi, dVenc, dUltVenc ,;
nValor, cDoc, cStatus

string := {}
setfunc(1)

*-- Tela ---------------------------------------------------------------

Borda(02,01,13,59)
* 000000001111111111222222222233333333334444444444555555555566666666667777777777
* 234567890123456789012345678901234567890123456789012345678901234567890123456789
@ 02,03 SAY " CLIENTES "
@ 03,02 SAY " Ult. Vencto..: 99/99/9999 Status: INATIVO "
@ 04,02 SAY " Razao Social.: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX "
@ 05,02 SAY " CGC/CPF......: 99.999.999/9999-99 "
@ 06,02 SAY " Insc.Estadual: "
@ 07,02 SAY " Endereco.....: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX "
@ 08,02 SAY " Cidade.......: XXXXXXXXXXXXXXXXXXXX UF:XX CEP:XXXXX-XX "
@ 09,02 SAY " Contato......: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX "
@ 10,02 SAY " TEL/FAX......: XXXXXXXXXXXXXXXXXXXX/XXXXXXXXXXXXXXX "
@ 11,02 SAY " Data Emissao.: 99/99/9999 Data Venc.: 99/99/9999 NF: X "
@ 12,02 SAY " Valor........: R$ 999,999.99 Doc..: 99999999 "
@ 13,47 SAY " <F1> Ajuda "

*-- Entrada de Dados ---------------------------------------------------

FAT->( dbGoTop() )
dsp_fields(.F.)
DO WHILE .T.
@ 03,18 SAY dUltVenc
@ 03,51 SAY IF( cStatus == "I", "Inativo", "Ativo " )
@ 04,18 GET cRazao PICTURE "@!@KS40" VALID(inp_razao())
@ 05,18 GET cCgcpf PICTURE "@!@K" VALID(inp_cgcpf())
@ 06,18 GET cIE PICTURE "@!@K"
@ 07,18 GET cEnd PICTURE "@!S40"
@ 08,18 GET cCidade PICTURE "@!S20"
@ 08,42 GET cEstado PICTURE "!!"
@ 08,49 GET cCep PICTURE "99999-999"
@ 09,18 GET cContato PICTURE "@!"
@ 10,18 GET cTel PICTURE "@!"
@ 10,39 GET cFax PICTURE "@!"
@ 11,18 SAY dDataEmi //VALID(!EMPTY(dDataEmi))
@ 11,41 GET dVenc VALID(!EMPTY(dVenc))
@ 11,57 GET cNf PICTURE "@!" VALID cNF $ "SN"
@ 12,21 GET nValor PICTURE "@E 999,999.99" VALID(!EMPTY(nValor))
@ 12,50 GET cDoc PICTURE "@!" VALID(!EMPTY(cDoc))
READ
IF LASTKEY() == 27
SetColor("W/N,N/W")
CLS
RETURN
ENDIF

FAT->( dbSetOrder( 2 ) )
FAT->( dbGoTop() )
IF !FAT->( dbSeek( cCgcpf ) )
FAT->( dbSetOrder( 1 ) )
FAT->( dbGoTop() )
IF !FAT->( dbSeek( cRazao ) )
FAT->( AdiReg() )
cStatus := "A"
dDataEmi := cTod("")
dUltVenc := cTod("")
ELSE
FAT->( BloqReg() )
cStatus := IF( FAT->db_status == "I", "I", "A" )
ENDIF
ELSE
FAT->( BloqReg() )
cStatus := IF( FAT->db_status == "I", "I", "A" )
ENDIF
FAT->( dbReplace( { "db_cgcpf" , cCgcpf ,;
"db_razao" , cRazao ,;
"db_end" , cEnd ,;
"db_ie" , cIE ,;
"db_cidade" , cCidade ,;
"db_estado" , cEstado ,;
"db_cep" , cCep ,;
"db_contato", cContato ,;
"db_tel" , cTel ,;
"db_fax" , cFax ,;
"db_dataemi", dDataEmi ,;
"db_venc" , dVenc ,;
"db_ultvenc", dUltVenc ,;
"db_nf" , cNf ,;
"db_valor" , nValor ,;
"db_status" , cStatus ,;
"db_doc" , cDoc } ) )
FAT->( dbCommit() )
FAT->( dbUnlock() )
FAT->( dbSetOrder(1) )
ENDDO
CLS
CLOSE ALL
RETURN

*ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
*³ Funcao : inp_cgcpf(lMostra)
*³ Objetivo : Validar CGC e CPF
*ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
STATIC FUNCTION inp_cgcpf(lMostra)

lMostra := IF( lMostra == NIL, .T., lMostra )

IF LASTKEY()=5 .OR. LASTKEY()=23
RETURN .T.
ENDIF
Message()
IF !EMPTY(cCgcpf)
cCgcpf := rotcgcpf(cCgcpf, 1)
IF LEN(cCgcpf) != 18
Message("CPF / CGC INVALIDO", 1)
cCgcpf := SPACE(18)
RETURN .F.
ENDIF
IF lBusca
FAT->( dbSetOrder( 2 ) )
IF FAT->( dbSeek( cCgcpf ) )
dsp_fields(.T., lMostra)
ELSE
dsp_fields(.F., lMostra)
ENDIF
ENDIF
ENDIF
FAT->( dbSetOrder( 1 ) )
lBusca := .F.
RETURN .T.

*ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
*³ Funcao : inp_razao(lMostra)
*³ Objetivo : Validar Razao social
*ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
STATIC FUNCTION inp_razao(lMostra)
lMostra := IF( lMostra == NIL, .T., lMostra )
IF LASTKEY() == 5 .OR. LASTKEY() == 23
RETURN .T.
ENDIF
Message()
IF !EMPTY(cRazao)
IF lBusca
SET SOFTSEEK ON
FAT->( dbSetOrder( 1 ) )
IF FAT->( dbSeek( Alltrim( cRazao ) ) )
dsp_fields(.T., lMostra)
ENDIF
SET SOFTSEEK OFF
ENDIF
ENDIF
FAT->( dbSetOrder( 1 ) )
lBusca := .F.
RETURN .T.

*ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
*³ Funcao : inp_contat()
*³ Objetivo : Verifica se o contato existe
*ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
STATIC FUNCTION inp_contat()
IF LASTKEY() == 5 .OR. LASTKEY() == 23
RETURN .T.
ENDIF
Message()
IF EMPTY(cContato)
cContato := FAT->db_contat
ENDIF
RETURN .T.

*ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
*³ Funcao : inp_ender()
*³ Objetivo : Varifica o endereco
*ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
STATIC FUNCTION inp_ender()
IF LASTKEY() == 5 .OR. LASTKEY() == 23
RETURN .T.
ENDIF
Message()
IF EMPTY(cEnd)
cEnd := FAT->db_end
// Message("PREENCHIMENTO OBRIGATORIO",1)
RETURN .T.
ENDIF
RETURN .T.

*ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
*³ Funcao : inp_cidade()
*³ Objetivo : Verifica a cidade
*ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
STATIC FUNCTION inp_cidade()
IF LASTKEY() == 5 .OR. LASTKEY() == 23
RETURN .T.
ENDIF
Message()
IF EMPTY(cCidade)
cCidade := FAT->db_cidade
// Message("PREENCHIMENTO OBRIGATORIO",1)
RETURN .T.
ENDIF
RETURN .T.

*ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
*³ Funcao : inp_estado()
*³ Objetivo : Valida o estado
*ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
STATIC FUNCTION inp_estado()
IF LASTKEY() == 5 .OR. LASTKEY() == 23
RETURN .T.
ENDIF
Message()
IF EMPTY(cEstado)
cEstado := FAT->db_estado
// Message("PREENCHIMENTO OBRIGATORIO",1)
RETURN .T.
ENDIF
cTecla := cEstado
IF ( rotables("ORPEC000.INI", "ESTADO", @cTecla, 2) ) < 1
Message(cTecla,1)
cEstado := " "
RETURN .F.
ENDIF
RETURN .T.

*ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
*³ Funcao : inp_cep()
*³ Objetivo : Valida o CEP
*ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
STATIC FUNCTION inp_cep()
IF LASTKEY() == 5 .OR. LASTKEY() == 23
RETURN .T.
ENDIF
Message()
IF EMPTY(cCep)
cCep = FAT->db_cep
// Message("PREENCHIMENTO OBRIGATORIO",1)
RETURN .T.
ENDIF
RETURN .T.

*ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
*³ Funcao : inp_fone()
*³ Objetivo : Verifica o Telefone
*ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
STATIC FUNCTION inp_fone()
IF LASTKEY() == 5 .OR. LASTKEY() == 23
RETURN .T.
ENDIF
Message()
IF EMPTY(cTel)
cTel := FAT->db_fone
RETURN .T.
ENDIF
RETURN .T.

*ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
*³ Funcao : inp_fax()
*³ Objetivo : Verifica o fax
*ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
STATIC FUNCTION inp_fax()
IF LASTKEY() == 5 .OR. LASTKEY() == 23
RETURN .T.
ENDIF
Message()
RETURN .T.

*ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
*³ Funcao : key_help()
*³ Objetivo : Mostra um browse de ajuda
*ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
STATIC FUNCTION key_help()
cTela := SaveScreen()
Borda(15,51,21,70)
@ 15,56 SAY " Ajuda "
@ 16,52 SAY "<F2> Consulta "
@ 17,52 SAY "<F3> Impressao "
@ 18,52 SAY "<F4> Pagina Teste"
@ 19,52 SAY "<F6> Exlcusao "
@ 20,52 SAY "<F9> Limpa cTela "
keyboard chr(inkey(0))
IF LASTKEY() == 27 .OR. LASTKEY() == 28 .OR. LASTKEY() < 0
keyboard chr(0)
ENDIF
RestScreen(,,,,cTela)
RETURN .T.

*ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
*³ Funcao : key_view()
*³ Objetivo : Nao faz nada
*ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
STATIC FUNCTION key_view()
RETURN .T.

*ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
*³ Funcao : key_print()
*³ Objetivo : Nao faz nada
*ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
STATIC FUNCTION key_print()
RETURN .T.

*ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
*³ Funcao : key_delete()
*³ Objetivo : Deleta um registro ( marca como (I)inativo )
*ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
STATIC FUNCTION key_delete()
Message()
IF !(ReadVar() == "CCGCPF" .OR. ReadVar() == "CRAZAO")
RETURN .F.
ENDIF
IF EMPTY( cRazao ) .OR. lBusca
Message("NŽO HA REGISTRO PARA EXCLUIR",1)
ELSE
IF FAT->DB_STATUS != "I"
Message("OK PARA EXCLUIR ESTE REGISTRO <S/N>",3)
ELSE
Message("OK PARA REATIVAR ESTE REGISTRO <S/N>",3)
ENDIF
IF LASTKEY() == 83 .OR. LASTKEY() == 115
cTecla := Setcolor("W+*/B")
Message("*** POR FAVOR, AGUARDE UM MOMENTO ***",1)
Setcolor(cTecla)
IF FAT->( BloqReg() )
IF FAT->DB_STATUS != "I"
FAT->( dbReplace( { "db_status", "I" } ) )
FAT->( dbCommit() )
ELSE
FAT->( dbReplace( { "db_status", "A" } ) )
FAT->( dbCommit() )
ENDIF
FAT->( dbUnlock() )
ENDIF
dsp_fields(.T.)
Message()
ENDIF
ENDIF
//keyboard chr(23)
RETURN .T.

*ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
*³ Funcao : key_clear()
*³ Objetivo : Limpa os campos
*ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
FUNCTION key_clear()
Message()
dsp_fields(.F.)
lBusca := .T.
keyboard chr(23)
RETURN .T.

*ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
*³ Funcao : key_NEXT()
*³ Objetivo : Proximo registro
*ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
FUNCTION key_next()
Message()
IF ReadVar() == "CCGCPF" .OR. ReadVar() == "CRAZAO"
FAT->( dbSkip() )
IF FAT->( EOF() )
FAT->( dbGoBottom() )
ENDIF
dsp_fields(.T.)
ENDIF
RETURN .T.

*ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
*³ Funcao : key_prev()
*³ Objetivo : Registro anterior
*ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
STATIC FUNCTION key_prev()
Message()
IF ReadVar()="CCGCPF" .OR. ReadVar() == "CRAZAO"
FAT->( dbSkip(-1) )
IF FAT->( BOF() )
FAT->( dbGoTop() )
ENDIF
dsp_fields(.T.)
ENDIF
RETURN .T.

*ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
*³ Funcao : dsp_fields(dsp_fields_x, lMostra )
*³ Objetivo : Preenche ou limpa as variaveis de tela
*ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
STATIC FUNCTION dsp_fields( dsp_fields_x, lMostra )

lMostra := IF( lMostra == NIL, .T., lMostra )

IF FAT->( !bof() ) .AND. FAT->( !eof() ) .AND. dsp_fields_x
cCgcpf := FAT->db_cgcpf
cRazao := FAT->db_razao
cIE := FAT->db_ie
cEnd := FAT->db_end
cCidade := FAT->db_cidade
cEstado := FAT->db_estado
cCep := FAT->db_cep
cContato := FAT->db_contato
cTel := FAT->db_tel
cFax := FAT->db_fax
dDataEmi := FAT->db_dataemi
dVenc := FAT->db_venc
dUltVenc := FAT->db_ultvenc
cNf := FAT->db_nf
nValor := FAT->db_valor
cDoc := FAT->db_doc
cStatus := FAT->db_status
ELSE
cCgcpf := SPACE(18)
cRazao := SPACE(40)
cIE := SPACE(20)
cEnd := SPACE(40)
cCidade := SPACE(40)
cEstado := SPACE(02)
cCep := SPACE(09)
cContato := SPACE(40)
cTel := SPACE(20)
cFax := SPACE(15)
dDataEmi := CTOD("")
dVenc := CTOD("")
dUltVenc := CTOD("")
cNf := SPACE(01)
nValor := 0
cDoc := SPACE(08)
cStatus := SPACE(01)
ENDIF
IF lMostra
@ 03,51 SAY IF( cStatus == "I", "Inativo", "Ativo " )
@ 03,18 SAY dUltVenc
@ 04,18 SAY cRazao PICTURE "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
@ 05,18 SAY cCgcpf PICTURE "@!"
@ 06,18 SAY cIE
@ 07,18 SAY cEnd PICTURE "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
@ 08,18 SAY cCidade PICTURE "!!!!!!!!!!!!!!!!!!!!"
@ 08,42 SAY cEstado PICTURE "!!"
@ 08,49 SAY cCep PICTURE "99999-999"
@ 09,18 SAY cContato PICTURE "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
@ 10,18 SAY cTel PICTURE "@!"
@ 10,39 SAY cFax PICTURE "@!"
@ 11,18 SAY dDataEmi
@ 11,41 SAY dVenc
@ 11,57 SAY cNf PICTURE "!"
@ 12,21 SAY nValor PICTURE "@E 999,999.99"
@ 12,50 SAY cDoc PICTURE "@!"
ENDIF
RETURN

*ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
*³ Funcao : setfunc(set_key)
*³ Objetivo : Ativa ou desativa as tecla de funcao
*ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
STATIC FUNCTION setfunc(set_key)
IF set_key=1
set key 28 to key_help() //<F1>
set key -1 to //<F2>
set key -2 to Impressao() //<F3>
set key -3 to ImpTeste() //<F4>
set key -4 to //<F5>
set key -5 to key_delete() //<F6>
set key -6 to //<F7>
set key -7 to //<F8>
set key -8 to key_clear() //<F9>
set key -9 to //<F10>
set key -40 to //<F11>
set key -41 to //<F12>
set key 9 to //<TAB>
set key 3 to key_NEXT() //<PGDW>
set key 18 to key_prev() //<PGUP>
ELSE
set key 28 to //<F1>
set key -1 to //<F2>
set key -2 to //<F3>
set key -3 to //<F4>
set key -4 to //<F5>
set key -5 to //<F6>
set key -6 to //<F7>
set key -7 to //<F8>
set key -8 to //<F9>
set key -9 to //<F10>
set key -40 to //<F11>
set key -41 to //<F12>
set key 9 to //<TAB>
set key 3 to //<PGDW>
set key 18 to //<PGUP>
ENDIF
RETURN

*ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
*³ Funcao : Impressao()
*³ Objetivo : Mostra uma tela
*ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
FUNCTION Impressao()
LOCAL cTela := SaveScreen(), nOp
SET INTENSITY ON
SET CURSOR OFF
DO WHILE .T.
nOp := 0
Borda(19,10,23,26,,,"Impressao")
@ 21,13 PROMPT "Nota Fiscal"
@ 22,13 PROMPT " Boleto "
MENU TO nOp
IF LastKey() != 27
IF nOp == 1
ImpNotaFiscal()
ELSEIF nOp == 2
ImpBoleto()
ELSE
EXIT
ENDIF
ELSE
EXIT
ENDIF
ENDDO
SET INTENSITY OFF
SET CURSOR ON
RestScreen(,,,,cTela)
RETURN NIL

*ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
*³ Funcao : ImpNotaFiscal()
*³ Objetivo : Imprime notas fiscais
*ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
FUNCTION ImpNotaFiscal()
LOCAL cTela := SaveScreen(), nOp1, cTela2, cDesc1, cDesc2, GetList := {},;
cCor, nLinha, dVencimento, dUltVencimento
PRIVATE cMes, dDiaMes, dEmissao
DO WHILE .T.
nLinha := 0
nOp := 0
cDesc1 := SPACE(30)
cDesc2 := SPACE(30)
cMes := SPACE(06)
dDiaMes := cTod("")
dEmissao:= cTod("")

Borda(19,27,23,44,,,"Nota Fiscal")
@ 20,28 PROMPT "Unica "
@ 21,28 PROMPT " Diaria "
@ 22,28 PROMPT " Mensal"
MENU TO nOp1
cCor := SetColor()
IF LastKey() != 27
cTela2 := SaveScreen()
Borda(10,10,17,69,"W/R")
SetColor("W/R,GR+/N")
IF nOp1 == 1
@ 11,12 SAY "Razao....:" GET cRAzao PICTURE "@!@KS40" WHEN AtivaBusca() VALID(inp_razao(.F.))
@ 12,12 SAY "Cgc/Cpf..:" GET cCgcpf PICTURE "@!@K" WHEN AtivaBusca() VALID(inp_cgcpf(.F.))

ELSEIF nOp1 == 2
CharOp := "S"
@ 11,12 SAY "Dia/Mes..:" GET dDiaMes
@ 12,12 SAY "BB Boleto:" GET CharOp pict "@!"


ELSEIF nOp1 == 3
@ 11,12 SAY "Mes......:" GET cMes PICTURE "@R 99/9999"

ENDIF
@ 14,12 SAY "Descricao:" GET cDesc1
@ 15,12 SAY " " GET cDesc2
@ 16,12 SAY "Data de Emissao:" GET dEmissao
READ
IF LastKey() != 27
IF nOp1 == 1
FAT->( dbSetOrder(2) )
IF FAT->( dbSeek( cCgcpf ) )
IF FAT->DB_STATUS != "I" .AND. FAT->DB_NF == "S"
SET CONSOLE OFF
SET DEVICE TO PRINTER
SET PRINTER TO LPT1
SetPrc(0,0)
@ nLinha + 02,58+1 SAY "Serv. Inf."
@ nLinha + 03,58+1 SAY IF( Empty(dEmissao), DATE(), dEmissao )
@ nLinha + 05,01+1 SAY FAT->DB_RAZAO
@ nLinha + 06,07+1 SAY FAT->DB_END
@ nLinha + 07,35+1 SAY FAT->DB_CIDADE
@ nLinha + 07,50+1 SAY FAT->DB_ESTADO
@ nLinha + 06,60+1 SAY FAT->DB_CEP
@ nLinha + 05,55+1 SAY FAT->DB_CGCPF
@ nLinha + 07,58+1 SAY FAT->DB_IE
@ nlinha + 12,20+1 say "VENCIMENTO:"
@ nLinha + 12,33+1 SAY FAT->DB_VENC
@ nLinha + 15,13+1 SAY cDesc1
@ nLinha + 10,60+1 SAY FAT->DB_VALOR PICTURE "999,999.99"
@ nLinha + 16,13+1 SAY cDesc2
@ nLinha + 30,60+1 SAY FAT->DB_VALOR PICTURE "999,999.99"
@ nLinha + 36,07+1 SAY " "
SET CONSOLE ON
SET DEVICE TO SCREEN
SET PRINTER TO
dVencimento := SomaData( "M", FAT->DB_VENC, 1 )
dUltVencimento := FAT->DB_VENC
IF FAT->( BloqReg() )
FAT->( dbReplace( { "DB_ULTVENC", dUltVencimento ,;
"DB_DATAEMI", IF( Empty(dEmissao), DATE(), dEmissao ),;
"DB_NF" , "N" ,;
"DB_VENC" , dVencimento } ) )
FAT->( dbCommit() )
FAT->( dbUnlock() )
ENDIF
ENDIF
ENDIF
ELSEIF nOp1 == 2
FAT->( dbSetOrder(3) )
IF FAT->( dbSeek( DtoS(dDiaMes) ) )
IF CharOp != "S"
SET CONSOLE OFF
SET DEVICE TO PRINTER
SET PRINTER TO LPT1
SetPrc(0,0)
DO WHILE FAT->( !EOF() ) .AND. MONTH( FAT->DB_VENC ) == MONTH( dDiaMes ) .AND. DAY( FAT->DB_VENC ) == DAY( dDiaMes )
IF FAT->DB_STATUS != "I" .AND. FAT->DB_NF == "S"
@ nLinha + 02,58+1 SAY "Serv. Inf."
@ nLinha + 03,58+1 SAY IF( Empty(dEmissao), DATE(), dEmissao )
@ nLinha + 05,01+1 SAY FAT->DB_RAZAO
@ nLinha + 06,07+1 SAY FAT->DB_END
@ nLinha + 07,35+1 SAY FAT->DB_CIDADE
@ nLinha + 07,50+1 SAY FAT->DB_ESTADO
@ nLinha + 06,60+1 SAY FAT->DB_CEP
@ nLinha + 05,55+1 SAY FAT->DB_CGCPF
@ nLinha + 07,58+1 SAY FAT->DB_IE
@ nlinha + 12,20+1 say "VENCIMENTO:"
@ nLinha + 12,33+1 SAY FAT->DB_VENC
@ nLinha + 15,13+1 SAY cDesc1
@ nLinha + 10,60+1 SAY FAT->DB_VALOR PICTURE "999,999.99"
@ nLinha + 16,13+1 SAY cDesc2
@ nLinha + 30,60+1 SAY FAT->DB_VALOR PICTURE "999,999.99"
@ nLinha + 36,07+1 SAY " "

nLinha += 36
ENDIF
FAT->( dbSkip() )
ENDDO
SET CONSOLE ON
SET DEVICE TO SCREEN
SET PRINTER TO
FAT->( dbSetOrder(3) )
FAT->( dbSeek( DtoS(dDiaMes) ) )
aRegistro := {}
DO WHILE FAT->( !EOF() ) .AND. MONTH( FAT->DB_VENC ) == MONTH( dDiaMes ) .AND. DAY( FAT->DB_VENC ) == DAY( dDiaMes )
IF FAT->DB_STATUS != "I" .AND. FAT->DB_NF == "S"
AADD( aRegistro, FAT->( RecNo() ) )
ENDIF
FAT->( dbSkip() )
ENDDO
IF LEN( aRegistro ) > 0
FOR x := 1 TO LEN( aRegistro )
FAT->( dbGoTo( aRegistro[x] ) )
dVencimento := SomaData( "M", FAT->DB_VENC, 1 )
dUltVencimento := FAT->DB_VENC
IF FAT->( BloqReg() )
FAT->( dbReplace( { "DB_ULTVENC", dUltVencimento ,;
"DB_DATAEMI", IF( Empty(dEmissao), DATE(), dEmissao ),;
"DB_NF" , "N" ,;
"DB_VENC" , dVencimento } ) )
FAT->( dbCommit() )
FAT->( dbUnlock() )
ENDIF
NEXT x
ENDIF
ELSE
///
///BOLETO BANCO DO BRASIL
///
SET CONSOLE OFF
SET DEVICE TO PRINTER
SET PRINTER TO LPT1
SetPrc(0,0)
DO WHILE FAT->( !EOF() ) .AND. MONTH( FAT->DB_VENC ) == MONTH( dDiaMes ) .AND. DAY( FAT->DB_VENC ) == DAY( dDiaMes )
IF FAT->DB_STATUS != "I" .AND. FAT->DB_NF == "S"
/////
/////inserir o layout aqui!!!!!
/////



/////
/////
/////
ENDIF
FAT->( dbSkip() )
ENDDO
SET CONSOLE ON
SET DEVICE TO SCREEN
SET PRINTER TO
FAT->( dbSetOrder(3) )
FAT->( dbSeek( DtoS(dDiaMes) ) )
aRegistro := {}
DO WHILE FAT->( !EOF() ) .AND. MONTH( FAT->DB_VENC ) == MONTH( dDiaMes ) .AND. DAY( FAT->DB_VENC ) == DAY( dDiaMes )
IF FAT->DB_STATUS != "I" .AND. FAT->DB_NF == "S"
AADD( aRegistro, FAT->( RecNo() ) )
ENDIF
FAT->( dbSkip() )
ENDDO
IF LEN( aRegistro ) > 0
FOR x := 1 TO LEN( aRegistro )
FAT->( dbGoTo( aRegistro[x] ) )
dVencimento := SomaData( "M", FAT->DB_VENC, 1 )
dUltVencimento := FAT->DB_VENC
IF FAT->( BloqReg() )
FAT->( dbReplace( { "DB_ULTVENC", dUltVencimento ,;
"DB_DATAEMI", IF( Empty(dEmissao), DATE(), dEmissao ),;
"DB_NF" , "N" ,;
"DB_VENC" , dVencimento } ) )
FAT->( dbCommit() )
FAT->( dbUnlock() )
ENDIF
NEXT x
ENDIF
ENDIF
ENDIF
ELSEIF nOp1 == 3
FAT->( dbSetOrder(3) )
cMes := SubStr( cMes, 3, 4 ) + SubStr( cMes, 1, 2 )
IF FAT->( dbSeek( cMes ) )
SET CONSOLE OFF
SET DEVICE TO PRINTER
SET PRINTER TO LPT1
SetPrc(0,0)
DO WHILE FAT->( !EOF() ) .AND. MONTH( FAT->DB_VENC ) == Val( SubStr( cMes, 5, 2 ) )
IF FAT->DB_STATUS != "I" .AND. FAT->DB_NF == "S"
@ nLinha + 02,58+1 SAY "Serv. Inf."
@ nLinha + 03,58+1 SAY IF( Empty(dEmissao), DATE(), dEmissao )
@ nLinha + 05,01+1 SAY FAT->DB_RAZAO
@ nLinha + 06,07+1 SAY FAT->DB_END
@ nLinha + 07,35+1 SAY FAT->DB_CIDADE
@ nLinha + 07,50+1 SAY FAT->DB_ESTADO
@ nLinha + 06,60+1 SAY FAT->DB_CEP
@ nLinha + 05,55+1 SAY FAT->DB_CGCPF
@ nLinha + 07,58+1 SAY FAT->DB_IE
@ nlinha + 12,20+1 say "VENCIMENTO:"
@ nLinha + 12,33+1 SAY FAT->DB_VENC
@ nLinha + 15,13+1 SAY cDesc1
@ nLinha + 10,60+1 SAY FAT->DB_VALOR PICTURE "999,999.99"
@ nLinha + 16,13+1 SAY cDesc2
@ nLinha + 30,60+1 SAY FAT->DB_VALOR PICTURE "999,999.99"
@ nLinha + 36,07+1 SAY " "
nLinha += 36
ENDIF
FAT->( dbSkip() )
ENDDO
SET CONSOLE ON
SET DEVICE TO SCREEN
SET PRINTER TO
FAT->( dbSetOrder( 3 ) )
FAT->( dbSeek( cMes ) )
aRegistro := {}
DO WHILE FAT->( !EOF() ) .AND. MONTH( FAT->DB_VENC ) == Val( SubStr( cMes, 5, 2 ) )
IF FAT->DB_STATUS != "I" .AND. FAT->DB_NF == "S"
AADD( aRegistro, FAT->( RecNo() ) )
ENDIF
FAT->( dbSkip() )
ENDDO
IF LEN( aRegistro ) > 0
FOR x := 1 TO LEN( aRegistro )
FAT->( dbGoTo( aRegistro[x] ) )
dVencimento := SomaData( "M", FAT->DB_VENC, 1 )
dUltVencimento := FAT->DB_VENC
IF FAT->( BloqReg() )
FAT->( dbReplace( { "DB_ULTVENC", dUltVencimento ,;
"DB_DATAEMI", IF( Empty(dEmissao), DATE(), dEmissao ),;
"DB_NF" , "N" ,;
"DB_VENC" , dVencimento } ) )
FAT->( dbCommit() )
FAT->( dbUnlock() )
ENDIF
NEXT x
ENDIF
ENDIF
ENDIF
ELSE
EXIT
ENDIF
RestScreen(,,,,cTela2)
ELSE
EXIT
ENDIF
SetColor(cCor)
ENDDO
RestScreen(,,,,cTela)
RETURN NIL

*ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
*³ Funcao : ImpBoleto()
*³ Objetivo : Imprime boletos
*ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
FUNCTION ImpBoleto()
LOCAL cTela := SaveScreen(), nOp1, cTela2, GetList := {},;
cCor, nLinha, dVencimento, dUltVencimento
PRIVATE cMes, dDiaMes
DO WHILE .T.
nLinha := 0
nOp := 0
cMes := SPACE(06)
dDiaMes := cTod("")

Borda(19,27,23,44,,,"Boleto")
@ 20,28 PROMPT "Unico "
@ 21,28 PROMPT " Diario "
@ 22,28 PROMPT " Mensal"
MENU TO nOp1
cCor := SetColor()
IF LastKey() != 27
cTela2 := SaveScreen()
Borda(10,10,16,69,"W/R")
SetColor("W/R,GR+/N")
IF nOp1 == 1
@ 11,12 SAY "Razao....:" GET cRAzao PICTURE "@!@KS40" WHEN AtivaBusca() VALID(inp_razao(.F.))
@ 12,12 SAY "Cgc/Cpf..:" GET cCgcpf PICTURE "@!@K" WHEN AtivaBusca() VALID(inp_cgcpf(.F.))

ELSEIF nOp1 == 2
@ 11,12 SAY "Dia/Mes..:" GET dDiaMes

ELSEIF nOp1 == 3
@ 11,12 SAY "Mes......:" GET cMes PICTURE "@R 99/9999"

ENDIF
READ
IF LastKey() != 27
IF nOp1 == 1
FAT->( dbSetOrder(2) )
IF FAT->( dbSeek( cCgcpf ) )
IF FAT->DB_STATUS != "I"
SET CONSOLE OFF
SET DEVICE TO PRINTER
SET PRINTER TO LPT1
SetPrc(0,0)
@ Pcol(), pRow() say chr(27)+"0"
@ nLinha + 02,01 SAY "PAGAVEL EM QUALQUER BANCO ATE O VENCIMENTO"
@ nLinha + 02,49 SAY FAT->DB_VENC
@ nLinha + 04,29 SAY "(House Cheque)"
@ nLinha + 06,00 SAY SUBSTR( DtoC( DATE() ), 1, 6 ) + SUBSTR( DtoC( DATE() ), 9, 2 )
@ nLinha + 06,12 SAY ALLTRIM(FAT->DB_DOC)
@ nLinha + 06,24 SAY "REC"
@ nLinha + 06,34 SAY SUBSTR( DtoC( DATE() ), 1, 6 ) + SUBSTR( DtoC( DATE() ), 9, 2 )
@ nLinha + 08,19 SAY "R$"
@ nLinha + 08,47 SAY DB_VALOR PICTURE "999,999.99"
@ nLinha + 16,01 SAY "APOS VENCIMENTO MULTA DE 10% + JUROS 1%A.M"
@ nLinha + 20,01 SAY FAT->DB_RAZAO
@ nLinha + 21,01 SAY FAT->DB_END
@ nLinha + 21,45 SAY FAT->DB_CGCPF
@ nLinha + 22,07 SAY FAT->DB_CEP
@ nLinha + 22,17 SAY ALLTRIM(FAT->DB_CIDADE) + " - " + FAT->DB_ESTADO
@ nLinha + 32,00 SAY " "
@ nLinha + 32,09 SAY chr(27)+"2"
SET CONSOLE ON
SET DEVICE TO SCREEN
SET PRINTER TO
ENDIF
ENDIF
ELSEIF nOp1 == 2
FAT->( dbSetOrder(3) )
IF FAT->( dbSeek( DtoS(dDiaMes) ) )
SET CONSOLE OFF
SET DEVICE TO PRINTER
SET PRINTER TO LPT1
SetPrc(0,0)
@ Pcol(), pRow() say chr(27)+"0"
DO WHILE FAT->( !EOF() ) .AND. MONTH( FAT->DB_VENC ) == MONTH( dDiaMes ) .AND. DAY( FAT->DB_VENC ) == DAY( dDiaMes )
IF FAT->DB_STATUS != "I" .AND. FAT->DB_BOLETO
@ nLinha + 02,01 SAY "PAGAVEL EM QUALQUER BANCO ATE O VENCIMENTO"
@ nLinha + 02,49 SAY FAT->DB_VENC
@ nLinha + 04,29 SAY "(House Cheque)"
@ nLinha + 06,00 SAY SUBSTR( DtoC( DATE() ), 1, 6 ) + SUBSTR( DtoC( DATE() ), 9, 2 )
@ nLinha + 06,12 SAY ALLTRIM(FAT->DB_DOC)
@ nLinha + 06,24 SAY "REC"
@ nLinha + 06,34 SAY SUBSTR( DtoC( DATE() ), 1, 6 ) + SUBSTR( DtoC( DATE() ), 9, 2 )
@ nLinha + 08,19 SAY "R$"
@ nLinha + 08,47 SAY DB_VALOR PICTURE "999,999.99"
@ nLinha + 16,01 SAY "APOS VENCIMENTO MULTA DE 10% + JUROS 1%A.M"
@ nLinha + 20,01 SAY FAT->DB_RAZAO
@ nLinha + 21,01 SAY FAT->DB_END
@ nLinha + 21,45 SAY FAT->DB_CGCPF
@ nLinha + 22,07 SAY FAT->DB_CEP
@ nLinha + 22,17 SAY ALLTRIM(FAT->DB_CIDADE) + " - " + FAT->DB_ESTADO
@ nLinha + 32,00 SAY " "
nLinha += 32
IF FAT->( Bloqreg() )
FAT->( dbReplace( { "DB_BOLETO", .F. } ) )
FAT->( dbUnlock() )
ENDIF
ENDIF
FAT->( dbSkip() )
ENDDO
@ nLinha + 32,09 SAY chr(27)+"2"
SET CONSOLE ON
SET DEVICE TO SCREEN
SET PRINTER TO
FAT->( dbGoTop() )
DO WHILE FAT->( !EOF() )
IF !FAT->DB_BOLETO
IF FAT->( Bloqreg() )
FAT->( dbReplace( { "DB_BOLETO", .T. } ) )
FAT->( dbUnlock() )
ENDIF
ENDIF
FAT->( dbSkip() )
ENDDO
ENDIF
ELSEIF nOp1 == 3
FAT->( dbSetOrder(3) )
cMes := SubStr( cMes, 3, 4 ) + SubStr( cMes, 1, 2 )
IF FAT->( dbSeek( cMes ) )
SET CONSOLE OFF
SET DEVICE TO PRINTER
SET PRINTER TO LPT1
SetPrc(0,0)
@ Pcol(), pRow() say chr(27)+"0"
DO WHILE FAT->( !EOF() ) .AND. MONTH( FAT->DB_VENC ) == Val( SubStr( cMes, 5, 2 ) )
IF FAT->DB_STATUS != "I" .AND. FAT->DB_BOLETO
@ nLinha + 02,01 SAY "PAGAVEL EM QUALQUER BANCO ATE O VENCIMENTO"
@ nLinha + 02,49 SAY FAT->DB_VENC
@ nLinha + 04,29 SAY "(House Cheque)"
@ nLinha + 06,00 SAY SUBSTR( DtoC( DATE() ), 1, 6 ) + SUBSTR( DtoC( DATE() ), 9, 2 )
@ nLinha + 06,12 SAY ALLTRIM(FAT->DB_DOC)
@ nLinha + 06,24 SAY "REC"
@ nLinha + 06,34 SAY SUBSTR( DtoC( DATE() ), 1, 6 ) + SUBSTR( DtoC( DATE() ), 9, 2 )
@ nLinha + 08,19 SAY "R$"
@ nLinha + 08,47 SAY DB_VALOR PICTURE "999,999.99"
@ nLinha + 16,01 SAY "APOS VENCIMENTO MULTA DE 10% + JUROS 1%A.M"
@ nLinha + 20,01 SAY FAT->DB_RAZAO
@ nLinha + 21,01 SAY FAT->DB_END
@ nLinha + 21,45 SAY FAT->DB_CGCPF
@ nLinha + 22,07 SAY FAT->DB_CEP
@ nLinha + 22,17 SAY ALLTRIM(FAT->DB_CIDADE) + " - " + FAT->DB_ESTADO
@ nLinha + 32,00 SAY " "
nLinha += 32
IF FAT->( Bloqreg() )
FAT->( dbReplace( { "DB_BOLETO", .F. } ) )
FAT->( dbUnlock() )
ENDIF
ENDIF
FAT->( dbSkip() )
ENDDO
@ nLinha + 32,09 SAY chr(27)+"2"
SET CONSOLE ON
SET DEVICE TO SCREEN
SET PRINTER TO
FAT->( dbGoTop() )
DO WHILE FAT->( !EOF() )
IF !FAT->DB_BOLETO
IF FAT->( Bloqreg() )
FAT->( dbReplace( { "DB_BOLETO", .T. } ) )
FAT->( dbUnlock() )
ENDIF
ENDIF
FAT->( dbSkip() )
ENDDO
ENDIF
ENDIF
ELSE
EXIT
ENDIF
RestScreen(,,,,cTela2)
ELSE
EXIT
ENDIF
SetColor(cCor)
ENDDO
RestScreen(,,,,cTela)
RETURN NIL

FUNCTION SomaData( cTipo, dData, nQuant )
LOCAL dDataRet := Ctod("")

nMes := Month(dData)
nAno := Year(dData)
nDia := Day(dData)

IF UPPER(cTipo) == "D"
dDataRet := dData + nQuant

ELSEIF UPPER(cTipo) == "M"
nMes := nMes + nQuant
DO WHILE nMes > 12
nMes -= 12
nAno++
ENDDO
dDataRet := Ctod( Str(nDia,2) + "/" + Str(nMes,2) + "/" + Str(nAno,4) )

ELSEIF UPPER(cTipo) == "A"
nAno += nQuant
dDataRet := Ctod( Str(nDia,2) + "/" + Str(nMes,2) + "/" + Str(nAno,4) )

ENDIF
RETURN dDataRet

*ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
*³ Funcao : ImpTeste()
*³ Objetivo : Imprime uma pagina para acertar a impressora
*ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
FUNCTION ImpTeste()
LOCAL cTela := SaveScreen(), nOp
SET INTENSITY ON
SET CURSOR OFF
DO WHILE .T.
nOp := 0
Borda(19,10,23,26,,,"Pagina Teste")
@ 21,13 PROMPT "Nota Fiscal"
@ 22,13 PROMPT " Boleto "
MENU TO nOp
IF LastKey() != 27
IF nOp == 1
SET CONSOLE OFF
SET DEVICE TO PRINTER
SET PRINTER TO LPT1
SetPrc(0,0)
@ 04,41+1 SAY "Servicos"
@ 05,41+1 SAY "Informacoes"
@ 06,41+1 SAY "99/99/9999"
@ 09,07+1 SAY REPLICATE("X",40)
@ 10,07+1 SAY REPLICATE("X",40)
@ 11,35+1 SAY REPLICATE("X",20)
@ 11,57+1 SAY "XX"
@ 11,63+1 SAY "99999-999"
@ 12,07+1 SAY "XX.XXX.XXX/XXXX-XX"
@ 12,37+1 SAY REPLICATE("X",20)
@ 13,47+1 SAY "99/99/9999"
@ 16,13+1 SAY REPLICATE("X",20)
@ 16,60+1 SAY "999,999.99"
@ 17,13+1 SAY REPLICATE("X",20)
@ 28,15+1 SAY "Enquadrada na Lei 9.317/96"
@ 29,22+1 SAY "S I M P L E S"
@ 32,60+1 SAY "999,999.99"
@ 36,07+1 SAY " "
SET CONSOLE ON
SET DEVICE TO SCREEN
SET PRINTER TO

ELSEIF nOp == 2
SET CONSOLE OFF
SET DEVICE TO PRINTER
SET PRINTER TO LPT1
SetPrc(0,0)
@ Pcol(), pRow() say chr(27)+"0"
@ 04,01 SAY "PAGAVEL EM QUALQUER BANCO ATE O VENCIMENTO"
@ 04,49 SAY "99/99/9999"
@ 06,29 SAY "(House Cheque)"
@ 08,00 SAY "99/99/99"
@ 08,12 SAY REPLICATE("X",08)
@ 08,24 SAY "REC"
@ 08,34 SAY "99/99/99"
@ 10,19 SAY "R$"
@ 10,47 SAY "999,999.99"
@ 16,01 SAY "APOS VENCIMENTO MULTA DE 10% + JUROS 1%A.M"
@ 22,01 SAY REPLICATE("X",40)
@ 23,01 SAY REPLICATE("X",40)
@ 23,45 SAY "XX.XXX.XXX/XXXX-XX"
@ 24,07 SAY "XXXXX-XX"
@ 24,17 SAY REPLICATE("X",20) + " - " + "XX"
@ 32,09 SAY chr(27)+"2"
SET CONSOLE ON
SET DEVICE TO SCREEN
SET PRINTER TO
ELSE
EXIT
ENDIF
ELSE
EXIT
ENDIF
ENDDO
SET INTENSITY OFF
SET CURSOR ON
RestScreen(,,,,cTela)
RETURN NIL

FUNCTION AtivaBusca()
lBusca := .T.
RETURN .T.

Enviado: 27 Set 2006 16:15
por sygecom
Não olhei completamente o seu CODIGO FONTE, mas perceba que vc esta anulando o INKEY.CH, logo abaixo de AUTOR:Marcel Silvestre inclua esse INKEY.CH em uma nova linha abaixo de Autor : Marcel Silvestre e sem o * na frente. e compila o sistema....

Abraços

Enviado: 27 Set 2006 16:38
por msilvestre
Entao cara, eu ja tinha tirado o //...e tambem nao deu certo...eu acho que eh algum pau no clipper na compilacao. Nao sei se precisa de algum biblioteca especifica...
pq o erro vem da parte, FAT->( dbGoTop() )

Abraços

Enviado: 27 Set 2006 16:56
por sygecom
Qual a versão do CLIPPER vc usa ?
Eu particularmente não uso o EXOSPACE, mas tente usar o BLINKER 7.0 acredito que vc tera um melhor desempenho.

Outra coisa post qual as LIB vc usa veja se os caminho de seus PATH estão corretos ou se vc trabalha sem path verefique se todos os arquivos estão dentro de seu diretorio, pq me parece que ele não esta compilando por falta de uma LIB que não esta linkada.....ex: CLIPPER.LIB

Abraços

Enviado: 27 Set 2006 17:26
por gvc
Veja aonde (PRG) vc tem as funções ou procedures:
ADIREG, BLOQREG, BORDA etc.

Vc pode não esta compilando ou linkando o .prg que contém esses itens.
Para testar, pegue a função do usuário ADIREG e copie para um PRG que vc sabe que esta compilando e linkando.
Se houver erro de dupla declaração, o original esta compilando e linkando.