Página 1 de 1

Follow-Up

Enviado: 19 Mar 2013 10:58
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

Follow-Up

Enviado: 19 Mar 2013 11:23
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.

Follow-Up

Enviado: 19 Mar 2013 11:35
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

Follow-Up

Enviado: 19 Mar 2013 13:05
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?

Follow-Up

Enviado: 19 Mar 2013 15:08
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

Follow-Up

Enviado: 19 Mar 2013 17:53
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

Follow-Up

Enviado: 19 Mar 2013 20:16
por paulosanchomr
Obrigado pela sua prontidão

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