Follow-Up

Projeto [x]Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

paulosanchomr
Usuário Nível 1
Usuário Nível 1
Mensagens: 4
Registrado em: 18 Mar 2013 17:37
Localização: são paulo

Follow-Up

Mensagem por paulosanchomr »

bom dia!

Estou com um problema urgente e não sei como resolver, já andei pesquisando mas ainda não encontrei nada parecido, por esse motivo estou solicitando a vossa ajuda com toda vossa experiencia de programação .

É o seguinte, tenho uma base de dados com um cadastro de vendas e preciso do seguinte.
criar um sistema de fallow-up para ver todas as alterações e anexar um arquivo por exemplo um mail ao cadastro para salvar as informações passadas do cliente como prova.

Desde já agradeço a atenção e disponibilidade de todos.

Paulo
Paulo Rodrigues
alxsts
Colaborador
Colaborador
Mensagens: 3092
Registrado em: 12 Ago 2008 15:50
Localização: São Paulo-SP-Brasil

Follow-Up

Mensagem por alxsts »

Olá!

Seja bem-vindo ao fórum Paulo!

Poderia ser mais específico?
paulosanchomr escreveu:criar um sistema de fallow-up para ver todas as alterações e anexar um arquivo por exemplo um mail ao cadastro para salvar as informações passadas do cliente como prova.
Em que formato está a tua base de dados? Este follow-up seria uma auditoria para gravar log de tudo o que foi alterado nesta base de dados? Você quer anexar um arquivo: onde? que tipo de arquivo? esse e-mail a que se refere é um endereço de e-mail? ou o texto de uma mensagem de e-mail?

Creio que você saiba o que é desenvolvimento de sistemas e o quanto são importantes os mínimos detalhes.
[]´s
Alexandre Santos (AlxSts)
paulosanchomr
Usuário Nível 1
Usuário Nível 1
Mensagens: 4
Registrado em: 18 Mar 2013 17:37
Localização: são paulo

Follow-Up

Mensagem por paulosanchomr »

Obrigado pelas boas vindas.

a minha base de dados esta em formato DBF Indexado em formado CDX.
o follow-up seria isso mesmo que você falou seria uma auditoria para gravar log de tudo o que foi alterado nesta base de dados.
quanto ao anexo seria o arquivo de mensangem, ou por exemplo anexar outro arquivo em pdf ou doc. para abrir quando eu consultar o cadastro de cliente.

ficar tipo um historico de tudo
Paulo Rodrigues
alxsts
Colaborador
Colaborador
Mensagens: 3092
Registrado em: 12 Ago 2008 15:50
Localização: São Paulo-SP-Brasil

Follow-Up

Mensagem por alxsts »

Olá!

Bem, conseguimos avançar um pouco.

O que você deseja é fácil fazer. É só implementar uma rotina que grave o log em todos os programas que atualizam as tabelas que você quer auditar. Só precisamos de mais detalhes. Mais dúvidas:

- é uma tabela apenas ou várias?
- você vai gravar estes logs em alguma outra tabela. Já tem o layout? Já sabe como vai gravar, por exemplo, vai gravar imagem anterior e imagem alterada dos registros, vai gravar apenas o que foi alterado? Com certeza vai gravar a data/hora/autor da alteração. Os programas que fazem manutenção nessa(s) tabela(s) "sabem" quem está logado?
-
paulosanchomr escreveu:quanto ao anexo seria o arquivo de mensangem, ou por exemplo anexar outro arquivo em pdf ou doc. para abrir quando eu consultar o cadastro de cliente.
Isso ainda não está claro: anexar onde? Ou quer dizer gravar um arquivo em alguma pasta? Ou seria gravar um registro com o log da alteração? Poderia dar um exemplo do formato desejado?
[]´s
Alexandre Santos (AlxSts)
paulosanchomr
Usuário Nível 1
Usuário Nível 1
Mensagens: 4
Registrado em: 18 Mar 2013 17:37
Localização: são paulo

Follow-Up

Mensagem por paulosanchomr »

Olá

antes de mais nada quero agradecer a colaboração e rapidez.
para entrar no programa usamos senha por atendente,eu uso uma tabela de vendas com os dados abaixo, preciso de saber o que foi apenas alterado através desse log gravando em outra tabela para mais tarde caso o cliente reclame de alguma anomalia eu conseguir puxar o histórico de todas as alterações e ainda não tenho um layout.

Sobre anexar arquivo ao cadastro o que eu desejo é tipo o outlook que permite anexar um arquivo para enviar no mail.

TABELA DE VENDA

Código: Selecionar todos

aadd(a_dbf,{'codigo','n',06,0})
               aadd(a_dbf,{'cod_excur','c',15,0})
               aadd(a_dbf,{'d_saida','d',08,0})
               aadd(a_dbf,{'n_reserva','c',10,0})
               aadd(a_dbf,{'cod_vend','n',06,0})
               aadd(a_dbf,{'nome_vend','c',30,0})
               aadd(a_dbf,{'recibo','c',10,0})
               aadd(a_dbf,{'cliente','c',30,0})
               aadd(a_dbf,{'valor','n',10,2})
               aadd(a_dbf,{'contactos','m',10,0})
               aadd(a_dbf,{'alteracao','m',10,0})
               aadd(a_dbf,{'obs','m',10,0})
               aadd(a_dbf,{'tipo_pag','n',03,0})
               aadd(a_dbf,{'caixa','n',03,0})
               aadd(a_dbf,{'data_pag','d',08,0})
               aadd(a_dbf,{'d_criacao','d',08,0})
               aadd(a_dbf,{'usuario','c',30,0})
               aadd(a_dbf,{'voos','m',10,0})
               aadd(a_dbf,{'contratosn','c',01,0})
               aadd(a_dbf,{'pag_sn','c',01,0})
               aadd(a_dbf,{'vouchersn','c',01,0})
               aadd(a_dbf,{'porte_dsn','c',01,0})
               aadd(a_dbf,{'cancelado','c',01,0})
abraço
Editado pela última vez por Pablo César em 19 Mar 2013 18:41, em um total de 1 vez.
Razão: Mensagem editada para colocar a tag [ code ]<br>Veja como utilizar esta tag: http://www.pctoledo.com.br/forum/faq.php?mode=bbcode#f2r1
Paulo Rodrigues
Avatar do usuário
rochinha
Administrador
Administrador
Mensagens: 4664
Registrado em: 18 Ago 2003 20:43
Localização: São Paulo - Brasil
Contato:

Follow-Up

Mensagem por rochinha »

Amiguinho,

Analise minha idéia de como implementar auditoria de registros de forma indolor.

Código: Selecionar todos

#command APPEND BLANK           => dbNetAppend( 0 ) ; dbCommitLog('I', PROCNAME() )
#command APPEND BLANK <n>       => dbNetAppend( <n> )
#command APPEND TO <(file)>     => AppendToFile( <(file)> )
#command APPEND REG FROM <(file)>     => AppendFromFile( <(file)> )
#command PACK                   => __dbPack() ; dbCommitLog('E', PROCNAME())
#command ZAP                    => __dbZap()  ; dbCommitLog('E', PROCNAME())
#command COMMIT                 => dbUnlock() ; dbCommitAll()
#command SKIP 0                 => dbUnlock() ; dbCommitAll()
#command REGLOCK                => dbNetRegLock( 0 )    ; dbCommitLog('M', PROCNAME())
#command REGLOCK <n>            => dbNetRegLock( <n> )  ; dbCommitLog('M', PROCNAME())
#command FILELOCK               => dbNetFileLock( 0 )   ; dbCommitLog('M', PROCNAME())
#command FILELOCK <n>           => dbNetFileLock( <n> ) ; dbCommitLog('M', PROCNAME())
#command DELETE => dbNetRegLock(0);         dbDelete() ; dbCommitLog('E', PROCNAME())

#define LOG_USER
Voce coloca o trecho acima no inicio do primeiro .PRG de seu aplicativo e estes comandos passam a trabalhar de forma tunada, ou seja, vão fazer o mesmo de antes mas irão passar antes pela função de marcação de auditoria.

Código: Selecionar todos

FUNCTION dbCommitLog( LOG_TIPO )
#ifdef LOG_USER // Habilito se for decidido usar auditoria de usuario
    LOG_AREA := SELECT()
    USE NF.LOG NEW ALIAS NFLOG
    dbNetAppend( 0 )
    NFLOG->IDLOG   := RECCO()+1
    NFLOG->DATA    := DATE()
    NFLOG->HORA    := TIME()
    NFLOG->USUARIO := M->USUARIO
    IF     LOG_TIPO = 'I'
           NFLOG->ACAO    := 'INCLUSAO'
    ELSEIF LOG_TIPO = 'E'
           NFLOG->ACAO    := 'EXCLUSAO'
    ELSEIF LOG_TIPO = 'M'
           NFLOG->ACAO    := 'MANUTENCAO'
    ENDIF
    NFLOG->MODULO  := PROCNAME()
    dbUnlock()
    dbCommitAll()
    USE
    SELECT( LOG_AREA )
#endif
RETURN .T.
A função de auditoria captura o nome do usuario em uma variável publica e dependendo da ação executada no correr do uso de aplicativo irá marcar o que foi feito.

Crie o arquivo de .LOG com a seguinte estrutura:

Código: Selecionar todos

IDLOG - Numerico de 5
DATA - Data de 8
HORA - Caracter de 8
USUARIO - Caracter de 20
ACAO - Caracter de 20
MODULO - Caracter de 20
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para [url=mailto://fivolution@hotmail.com]fivolution@hotmail.com[/url]. Agradecido.

@braços : ? )

A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
paulosanchomr
Usuário Nível 1
Usuário Nível 1
Mensagens: 4
Registrado em: 18 Mar 2013 17:37
Localização: são paulo

Follow-Up

Mensagem por paulosanchomr »

Obrigado pela sua prontidão

Irei fazer como indica e assim que terminar informo o resultado.
abraço
Paulo Rodrigues
Responder