Usuário:
Senha:
Salvar senha

 
 Todos os Fóruns
 Programação
 gerar carta de cobrança integrada com word.
 Novo tópico  Responder tópico
 
Autor  Tópico   
marcio
Membro Avançado


Brasil
1158 Mensagens
Postado - 28/07/2010 :  07:56:45        
olá amigo,s bom dia

Estou precisando de gerar no meu sistema cartas de cobrança.
Até ai blz, mas queria poder pesonaliza gerando para o word.
Por exemplo o lojista 001 TEM UM MODELO DE CARTA, já o lojista 002 TEM OUTRO e assim por diante.
Dai minha pergunta seria.
Como gerar isso para o word.

Por exemplo seria assim usando 02 tabelas.
A tabela de Clientes, onde pegaria os dados cadastrais dele.
e a tabela de Débitos que pegaria os débitos dele em aberto.


Algo parecido com isso

*==========================================================
Nome da Loja
Endereço da Loja
Bairro da Loja
Tel da Loja
*==========================================================

Prezado cliente <dados do cliente>, informamos que constam em nossas arquivos os seguintes títulos em aberto.

Numero Vencimento Valor
00023/03 01/01/2010 1.235,80
00034/02 05/01/2010 2.345,67
00043/01 10/01/2010 4.567,90


Demais dados da carta
etc.....
*-------------------------------------------------------Fim
Porem esta carta seria para um cliente ou para vários clientes de uma vez.
Então seria legal gerar em um unico arquivo de word tudo, com as devidas quebras de páginas.
ou se for complicar demais um por vez, dai tento fazer um outra forma para funcionar..

informaisvrb@gmail.com
FWHX 2.6+ SQLLIB + xDev + rpv + MYSQL 5.0 / fwh808+sqllib(atual)
Msn.: mastermarvrb@msn.com

Luisão
Membro Avançado


Brasil
618 Mensagens
Postado - 28/07/2010 :  09:02:34        
Márcio, eu ainda não usei a TRichEdit, mas acho que serviria para este caso.

Você pode criar os documentos diretamente no word e salvar como RTF.
Nesse RTF você teria textos como $CODIGO, $NOME, $VALOR, etc.
No RichEdit você abriria o modelo a sua escolha e trocaria, $CODIGO por Cli->Codigo, $NOME por Cli->Nome, etc.

Acho que por esse modo seria mais fácil, já que esta classe já possui métodos para trocar string, impressão, edição, etc.

Luis Fernando Jr. (Luisão)
Leme/SP
--
"Death smiles at us all. All a man can do is smile back"
FWH8.01 + SQLLIB 1.9d + xHB 1.10 + xDev 0.65 + @SAY + [Ghost/Java]Script
E-Mail: juninho.luisao@gmail.com
MSN: juninho_luisao@hotmail.com

marcio
Membro Avançado


Brasil
1158 Mensagens
Postado - 28/07/2010 :  09:13:45        
OK amigo
Obrigado por responder.
Se souber algo.


informaisvrb@gmail.com
FWHX 2.6+ SQLLIB + xDev + rpv + MYSQL 5.0 / fwh808+sqllib(atual)
Msn.: mastermarvrb@msn.com

marcio
Membro Avançado


Brasil
1158 Mensagens
Postado - 28/07/2010 :  12:50:37        
olá amigos, tentei usar os exemplos de pesquisa aqui, mas não funcionou

informaisvrb@gmail.com
FWHX 2.6+ SQLLIB + xDev + rpv + MYSQL 5.0 / fwh808+sqllib(atual)
Msn.: mastermarvrb@msn.com

Theotokos
Membro Avançado


Brasil
406 Mensagens
Postado - 28/07/2010 :  17:00:27      
Eu utilizo no meu sistema a classe TWord, assim:

citação:

Procedure CartaCobranca(nCliente)
LOCAL dDtVencimento, oDlg, oSay, cDBF, nNTX

DEFAULT nCliente := 0

cDBF := DBF()
nNTX := INDEXORD()

dDtVencimento := Date()
cPOrigem := "\ARQUIVOS\CartaCobranca.doc" // Arquivo Modelo Para Impressao da OS

If Empty(nCliente)
DEFINE DIALOG oDlg TITLE "Até o Vencimento" FROM 10, 10 TO 18, 40 ;
COLOR RGB(250, 250, 0), RGB(128, 128, 250) OF oDlg

@ 000, 001 SAY oSay PROMPT "Carta até o Vencimento" OF oDlg COLOR RGB(0,0,0), RGB(128,128,250)
@ 0.8, 0.5 GET dDtVencimento Picture "99/99/9999" OF oDlg Valid (!Empty(dDtVencimento))

@ 1.2,10 BUTTON oBtn PROMPT "OK" SIZE 50, 20 ACTION (oDlg:End()) UPDATE OF oDlg

ACTIVATE DIALOG oDlg CENTERED
End

Sel("BanClien",1)
DbGoTop()

While !EOF()

If !Empty(nCliente)
If D_NUMERO <> nCliente
DbSkip(1)
Loop
End
End

cArq := "C"+StrZero(D_NUMERO,5)

If !File("DBF\PRAZO\"+cArq+".DBF")
DbSkip(1)
Loop
End

cStrNota := ''
cStrVenc := ''
nTotal := 0.00

Sel(cArq,3)
DbGoTop()
While !EOF()
If VA_DATVENC <= dDtVencimento
nTotal += CalcPrestacao(VA_VALPRES,VA_DATVENC)
cStrVenc += ", "+DtoC(VA_DATVENC)
cStrNota += ", "+AllTrim(Str(VA_NUMPEDI))
End
DbSkip(1)
End
DbCloseArea()

If !Empty(nCliente)
If Empty(nTotal)
MsgStop( "ESTE CLIENTE NAO ESTA INADIMPLENTE","INADIMPLENTE")
Exit
End
End

Sel('BanClien',1)

cPArqDoc1 := "\OS\Carta_"+cArq+".doc"
*
aCampos := { }
AADD(aCampos, {"cliente" , D_NOME })
AADD(aCampos, {"cpf" , "CPF : "+D_CNPJ+", "+"RG : "+D_INSCRICA })
AADD(aCampos, {"endereco" , D_Endereco})
AADD(aCampos, {"bairro" , D_Bairro })
AADD(aCampos, {"cidade" , D_Cidade })
AADD(aCampos, {"estado" , D_ESTADO })
AADD(aCampos, {"cep" , D_CEP })
*
AADD(aCampos, {"nota" , cStrNota })
AADD(aCampos, {"vencimento" , cStrVenc })
AADD(aCampos, {"total" , Transform(nTotal,"@E R$ 9,999.99")})
*
nCopia := 1
*
PrtWord( aCampos, cPOrigem, cPArqDoc1, .f., nCopia )
*
If !Empty(nCliente)
If D_NUMERO = nCliente
Exit
End
End
*
DbSkip(1)
*
End
DbCloseArea()

If !Empty(cDBF)
Sel(cDBF,nNTX)
End

Return

Function PrtWord( aCampos, cPOrigem, cPArqDoc, lTela, nPrtCopia )
Local oWord

DEFAULT lTela := .F.
DEFAULT nPrtCopia := 1

// Copia Modelo do Recibo
cOrigem := curdrive()+":\"+GetCurDir()+cPOrigem
cArqDoc := curdrive()+":\"+GetCurDir()+cPArqDoc

COPY FILE (cOrigem) TO (cArqDoc)

// Imprime Recibo
oWord := TWord():New()
If ( oWord:IsVisible() )
oWord:Hide()
Endif
oWord:OpenDoc( cArqDoc )
// Inicio
for x=1 to len( aCampos )
oWord:Replace( '['+aCampos[x,1]+']' , aCampos[x,2] )
next
// Fim
If lTela
oWord:Save( cArqDoc ) // ASSIM PARA VISUALIZAR
oWord:Visualizar()
Else
oWord:Save( cArqDoc )
oWord:PrintDoc( .f., , , , , , , nPrtcopia)
oWord:Close()
End
Return(.T.)




Desta forma eu crio o arquivo no Word com suas formatações necessarias, imagem o que precisar, e os campos que precisa substituir tipo [cliente], [endereco], etc.

Editado por - theotokos on 28/07/2010 17:02:32

   
 Novo tópico  Responder tópico
Pular para:

© Copyright 2002 FiveWin Brasil
Todos os Direitos Reservados