Autor Tópico: [RESOLVIDO] - Soft Delete?  (Lida 1193 vezes)

jcruz

  • Intermediário
  • ***
  • Mensagens: 117
    • Email
[RESOLVIDO] - Soft Delete?
« Online: Fevereiro 10, 2016, 02:12:42 pm »
Srs. boa tarde,

Alguém sabe se a opção Soft Delete (marcar como deletado) existe no Scriptcase?
« Última modificação: Junho 13, 2016, 02:26:47 pm por Ronyan Alves »

Jailton

  • Expert
  • *****
  • Mensagens: 2041
Re:Soft Delete?
« Responder #1 Online: Fevereiro 10, 2016, 02:20:32 pm »
Não existe, se EXCLUIR esta excluído, você poderia implementar manualmente adicionando uma coluna SoftDeleted = DateTime e quando excluir o registro fazer o update com a data timestamp nela, mas teria que controlar isso manual depois em todo o SQL com WHERE isolar os registros deletados.
O Princípio da Vibração. "Nada está parado, tudo se move, tudo vibra". Caibalion.

jcruz

  • Intermediário
  • ***
  • Mensagens: 117
    • Email
Re:Soft Delete?
« Responder #2 Online: Fevereiro 10, 2016, 02:27:20 pm »
Então fica a dica para a NETMAKE implementar futuramente!

Kleyber

  • Expert
  • *****
  • Mensagens: 2239
    • Email
Re:[RESOLVIDO] Soft Delete?
« Responder #3 Online: Fevereiro 10, 2016, 03:24:53 pm »
jcruz,

Uma pergunta: por que implementar isto automaticamente no SC, se isto é inerente ao banco de dados? Todo banco de dados faz a exclusão do registro. Gostaria de entender melhor... eu pelo menos faço como o Jailton falou, crio um campo e tive que criar meu próprio botão EXCLUIR, para colocar a data e hora lá e determinar no WHERE os registros que não tem nada nesse campo.
Kleyber Derick

ITIL® V3 Foundation Certified
Analista de Sistemas
São Luís - Maranhão
www.tkinformidia.net

Haroldo

  • Expert
  • *****
  • Mensagens: 6293
  • Conhecimento diminui limitações.△TFA△
    • Infinitus Web Gestão Empresarial/Gestão ITIL/Consultoria Scriptcase
Re:[RESOLVIDO] Soft Delete?
« Responder #4 Online: Fevereiro 11, 2016, 02:13:01 pm »
Nada a ver com SC.

Vai da modelagem como disse o Kleyber.

Implemente isso diretamente no seu banco usando trigers e filtrando adequadamente nas apps.

Willian Fernando

  • Expert
  • *****
  • Mensagens: 1154
  • .....
    • Email
Re:[RESOLVIDO] Soft Delete?
« Responder #5 Online: Fevereiro 11, 2016, 06:57:02 pm »
Então fica a dica para a NETMAKE implementar futuramente!

Vejo com muito pouco uso isso, não creio que seja implementado, nem creio que seria util para todos (quase ninguém)

saulobborges

  • Expert
  • *****
  • Mensagens: 1392
    • SGi Sistemas
    • Email
Re:[RESOLVIDO] Soft Delete?
« Responder #6 Online: Fevereiro 12, 2016, 10:08:38 am »
Concordo que poucos usariam esses recurso visto que normalmente somente grandes corporações tem esse tipo de necessidade.
Mas não seria nenhum absurdo implementar isso como recurso nativo no SC visto que seria uma pequena mudança na classe que controla o CRUD do SC.
Lembrando que o Laravel que é considerado uns dos mais robustos frameworks php do mercado e muito usado no meio corporativo devido a sua estabilidade e escalabilidade já tem essa feature implementada desde a versão 4.

Kleyber

  • Expert
  • *****
  • Mensagens: 2239
    • Email
Re:[RESOLVIDO] Soft Delete?
« Responder #7 Online: Fevereiro 12, 2016, 10:24:21 am »
Saulo,

Não discordo de você, mas de qualquer forma estaria mudando a forma do banco de dados trabalhar nativamente. Por isso que eu gosto do SC. Se não tem, não tem, mas me permite incrementar da forma que preciso.
Kleyber Derick

ITIL® V3 Foundation Certified
Analista de Sistemas
São Luís - Maranhão
www.tkinformidia.net

Haroldo

  • Expert
  • *****
  • Mensagens: 6293
  • Conhecimento diminui limitações.△TFA△
    • Infinitus Web Gestão Empresarial/Gestão ITIL/Consultoria Scriptcase
Re:[RESOLVIDO] Soft Delete?
« Responder #8 Online: Fevereiro 12, 2016, 11:47:37 am »
Eu tenho isso implementado a anos, uma simples classe php uma tabela para guardar os ids deletados e nome das tabelas (mais fácil do que criar um campo em cada tabela para controlar a deleção), a classe  me  incrementa o where necessário para filtrar os deletados e a mesma classe realiza a deleção fantasma.

 framework precisa sim de um dicionario de dados inteligente e robusto,  melhorias na responsividade, reformulação de mestre/detalhe, correção de falhas no menu e muitos outros bugs.

http://www.scriptcase.com.br/forum/index.php/topic,330.msg892.html#msg892

Jailton

  • Expert
  • *****
  • Mensagens: 2041
Re:[RESOLVIDO] Soft Delete?
« Responder #9 Online: Fevereiro 12, 2016, 12:36:28 pm »
Eu tenho isso implementado a anos, uma simples classe php uma tabela para guardar os ids deletados e nome das tabelas (mais fácil do que criar um campo em cada tabela para controlar a deleção), a classe  me  incrementa o where necessário para filtrar os deletados e a mesma classe realiza a deleção fantasma.

 framework precisa sim de um dicionario de dados inteligente e robusto,  melhorias na responsividade, reformulação de mestre/detalhe, correção de falhas no menu e muitos outros bugs.

http://www.scriptcase.com.br/forum/index.php/topic,330.msg892.html#msg892


Haroldo suas sugestões vão fazer aniversário de 10 anos...hehe

O Princípio da Vibração. "Nada está parado, tudo se move, tudo vibra". Caibalion.

saulobborges

  • Expert
  • *****
  • Mensagens: 1392
    • SGi Sistemas
    • Email
Re:[RESOLVIDO] Soft Delete?
« Responder #10 Online: Fevereiro 12, 2016, 01:36:51 pm »
Saulo,

Não discordo de você, mas de qualquer forma estaria mudando a forma do banco de dados trabalhar nativamente. Por isso que eu gosto do SC. Se não tem, não tem, mas me permite incrementar da forma que preciso.

Então Kleyber não é questão de mudar a forma do banco trabalhar, isso tem mais haver com regra de negócio, o banco de dados é apenas um repositório de informações.
A opção de softdelete é bem vinda para projetos de empresas que tem como exigência que os dados mesmo que obsoletos sejam mantidos.

Quanto ao SC é como eu disse, e o Haroldo acabou de confirmar, não seria um bicho de sete cabeças para a NM implementar, e concordo que há muitas coisas para serem melhoradas e implementadas antes disso, coisas mais popularmente usadas por todos.

Kleyber

  • Expert
  • *****
  • Mensagens: 2239
    • Email
Re:[RESOLVIDO] Soft Delete?
« Responder #11 Online: Fevereiro 12, 2016, 02:22:46 pm »
Então Kleyber não é questão de mudar a forma do banco trabalhar, isso tem mais haver com regra de negócio, o banco de dados é apenas um repositório de informações.

Rapaz, falando assim me dá a sensação que um banco SQL é igual a um DBF... bancos SQL tem regras próprias também, mas não estou aqui pra discutir sobre isso... enfim, cada solução tem seu espaço. Só não vejo o softdelete como relevante para o SC no momento. Mas blz, respeito tua opinião.
Kleyber Derick

ITIL® V3 Foundation Certified
Analista de Sistemas
São Luís - Maranhão
www.tkinformidia.net

Alexandre Pereira Bühler

  • Expert
  • *****
  • Mensagens: 1658
  • Nunca estabeleça um teto para os seus rendimentos.
    • Simão & Bühler Ltda
    • Email
Re:[RESOLVIDO] Soft Delete?
« Responder #12 Online: Fevereiro 14, 2016, 03:32:11 pm »
Conheci o dbase III -> delete, recall, pack e zap. Maravilha.
Usei o dbase IV -> delete, recall, pack e zap e por fim corrupção do dbf
Veio o clipper -> Corrupção do dbf. Desisti dos dbf´s.

Mas ainda tenho o módulo no php para acessar dbf´s ativo no meu servidor para importar e exportar dados de arquivos dbf´s.
Pena que o acesso pelo php seja desastroso:

Aviso
Não há suporte para índices ou campos memo. Não há suporte para travas também. Dois processos do servidor web concorrentes modificando o mesmo banco de dados normalmente irá arruinar o banco de dados.
Nós recomendamos que você não use seus arquivos dbase como seu banco de dados de produção. Escolha ao invés um servidor SQL real; » MySQL ou » Postgres são escolhas comuns com o php. O suporte ao Dbase esta aqui para permitir a você importar e exportar dados para e a partir do seu banco de dados web, porque o formato é normalmente entendido por planilhas e organizadores do Windows.

Vendo este post fiquei curioso pois sem que ainda tem pessoas que usam o dbase, clipper, xharbour, harbour e afins.
Pesquisei:
dBASE PLUS 10.3 FULL - Download
List Price: $499.00
Our Price: $499.00
http://www.dbase.com/

Mas voltando ao assunto do tópico.
Os SGDB´s da atualidade costumam seguir o padrão SQL.
Até onde eu saiba... Acho que o padrão SQL-92 até o SQL-2003 não suporta nativo o soft delete. Somente o hard delete. Apagou tá apagado.
Logo, mesmo que a Netmake cria-se uma função nativa para soft delete ainda dependeria de campos específicos na sua tabela para que:
1) O campo fosse reconhecido como marcado para ser apagado;
2) O campo marcado para ser apagado não entrasse nos selects;
3) A função para apagar em definitivo pudesse saber quais foram os campos marcados para serem apagados.
Se é você que cria este campos tudo bem. Mas se for para o scritpcase criar estes campos extras...
Depois de me acostumar com tanto bug... não iria querer o scriptcase mexendo nas estruturas das minhas tabelas.



--
Alexandre Pereira Bühler
https://www.simaoebuhler.com.br
Hospedagem compartilhada Scriptcase desenvolvimento e produção. Temos servidores dedicados Scriptcase.
Eu RTFM todo dia e você?

Alexandre Pereira Bühler

  • Expert
  • *****
  • Mensagens: 1658
  • Nunca estabeleça um teto para os seus rendimentos.
    • Simão & Bühler Ltda
    • Email
Re:[RESOLVIDO] Soft Delete?
« Responder #13 Online: Fevereiro 14, 2016, 03:48:45 pm »
Pensei agora nesta situação.
Aqui vai uma possível solução:
1) Criar um campo a mais na tabela tipo boleano, integer, char de acordo com sua preferência e  com nome sugestivo "deleted"
Valores permitidos:
0 não deletado (ativo)
1 deletado ( não ativo )
2) Você pode tirar do Form o botão excluir.
3) Deixe apenas insert e update.
4) Crie uma caixa de seleção.
No insert desative a caixa de seleção.
No update deixe ativo a caixa de seleção com nome "Deletar registro."
Se o cliente marcar e der update o registro e "deletado" (fica  inativo).
5) Por último faça todos os selects com um where para mostrar somente os registros que tem o campo deleted marcado como 0.
Mas lembre-se sua tabela irá inchar com o tempo. Tome as medidas para manter a performance.
6) Crie um if onde caso o usuário seja administrador possa ver o campo deletado e fazer sua recuperação.
Se gastar 10 a 20 linhas de programação para fazer isto é muito


« Última modificação: Fevereiro 14, 2016, 03:51:53 pm por Alexandre Pereira Bühler »
--
Alexandre Pereira Bühler
https://www.simaoebuhler.com.br
Hospedagem compartilhada Scriptcase desenvolvimento e produção. Temos servidores dedicados Scriptcase.
Eu RTFM todo dia e você?

Jailton

  • Expert
  • *****
  • Mensagens: 2041
Re:[RESOLVIDO] Soft Delete?
« Responder #14 Online: Fevereiro 14, 2016, 06:54:33 pm »
Nos ERPS atuais para seguir as novas e exigências PAF, ECF, NFe não tem opção para 'EXCLUIR' nada, apenas INATIVAR cada tipo de cadastro: pessoas, produtos, etc., é que como os dados são amarrados nas tabelas de movimento por PK e FK se forem excluídos e depois for gerado algum relatório retroativo de períodos as informações ficariam incosistentes.



Mas por hora para fazer isso no SC como eu e amigos relataram só fazendo 'manualmente' esse controle.

Eu mesmo tenho um sistema rodando um um convênio que tive que remover a opção excluir no cadastro de associados e só deixar para marcar 'cancelado' para nunca excluírem a ficha do cliente, vendedores, e caso aquele cliente retornar eles reativam.
« Última modificação: Fevereiro 14, 2016, 06:59:04 pm por Jailton »
O Princípio da Vibração. "Nada está parado, tudo se move, tudo vibra". Caibalion.