Clipper On Line • Ver Tópico - Tabelas para um sistema de contabilidade

Tabelas para um sistema de contabilidade

Discussão sobre Banco de Dados e RDDs para Clipper/[x]Harbour.

Moderador: Moderadores

 

Tabelas para um sistema de contabilidade

Mensagempor jelias » 05 Set 2012 10:34

Bom dia amigos!

Estou começando a migrar um sistema de contabilidade em Clipper 5.2e + DBFNSX para xHarbour + Hwgui + (PostgreSQL/SQLRDD). Estou nos primeiros passos e por me sentir um estranho no ninho do PostgreSQL tenho alguma dúvidas que gostaria de compartilhar com os amigos, bem como saber a opnião de vocês sobre qual o caminho a ser seguido.
No sistema atual tenho a seguinte estrutura de banco de dados:
1) Um arquivo de plano de contas. Neste aquivo eu tenho os seguintes campos:
--- para controlar os saldos iniciais de cada mês: Saldo01, Saldo02, ....., Saldo12
--- para controlar os valores lançados durante o mês tenho os campos: cred01, cred02, ....., cred12; debi01, debi02, ...., debi12.

2) Todo mês eu gero um arquivo para receber os lançamentos.

O processo funciona da seguinte maneira. O usuário após fazer os lançamento, executa um rotina de processamento que irá transportar os dados das contas analíticas e sintéticas para o banco de dados de plano de contas, no respectivo campo do mês em processamento: Exemplo: Janeiro irá atualizar o registro cred01 e debi01.
No final do mês, após confirmar todos os dados é feito o fechamento mensal, que irá fazer um rotina simples de implantar o saldo inicial do mês seguinte. Exemplo: Terminei janeiro e quero começar a lançar fevereiro, executo o fechamento de janeiro, a rotina basicamente faz: Sald02 = (sald01+cred01-debi01). Levando em consideração a condição da conta.

Os problemas deste método de trabalho:

1 - Se você estiver em dezembro e detectar que houve um problema em janeiro e precisar fazer a correção, é necessário processar e fazer o fechameno mensal de todos os meses subsequentes. Este processo é complicado, pois se esqueçer de processar um mês o saldo ficará errado e pode gerar muito transtorno para encontrar o erro.
2 - Em dezembro é necessário fazer um fechamento anual e criar um novo plano de contas para o ano seguinte, salvando o anterior para consultas. Aqui tenho um grande problema, pois se for necessário fazer alguma correção de valor em uma contablidade já fechada, tenho que voltar cópia do banco de dados e isso eu não deixo o usuário executar, eu faço o processo manual.
3 - Quando preciso tirar um livro razão de um período maior que mensal, tenho que gerar um banco de dados, claro que isso posso realver com uma matriz hoje, mais enfim, com os dados a ser apresentado.

Existe uma outra maneira de fazer todo este processo de forma mais segura e eficaz?

Saudações,
Júlio.
xHarbour 1.2.1 (simplex) + BCC 5.8.2 + Hwgui + SQLRDD
Clipper 5.2e / Blinker 7
Júlio Cézar Elias
e-mail: jelias@tpnet.psi.br
jelias
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 210
Data de registro: 27 Ago 2008 11:32
Cidade/Estado: Minas Gerais
Curtiu: 0 vez
Mens.Curtidas: 9 vezes

Tabelas para um sistema de contabilidade

Mensagempor Imatech » 05 Set 2012 12:13

Olá !
.
.
.
Os problemas deste método de trabalho:
.
.
.
1 - Se você estiver em dezembro e detectar que houve um problema em janeiro e precisar fazer a correção, é necessário processar e fazer o fechameno mensal de todos os meses subsequentes. Este processo é complicado, pois se esqueçer de processar um mês o saldo ficará errado e pode gerar muito transtorno para encontrar o erro.

Reprocessamento anual... Seu programa pode fazer o fechamento mes a mes...
.
.
.
2 - Em dezembro é necessário fazer um fechamento anual e criar um novo plano de contas para o ano seguinte, salvando o anterior para consultas. Aqui tenho um grande problema, pois se for necessário fazer alguma correção de valor em uma contablidade já fechada, tenho que voltar cópia do banco de dados e isso eu não deixo o usuário executar, eu faço o processo manual.

Mantenha os saldos em arquivo separado... assim não existe obrigação em se fazer novo plano...
.
.
.
3 - Quando preciso tirar um livro razão de um período maior que mensal, tenho que gerar um banco de dados, claro que isso posso realver com uma matriz hoje, mais enfim, com os dados a ser apresentado.

Recomendo que estude os modelos adotados pelos lideres do segmento: Alterdata, FortesAC, etc...
M., Ronaldo

by: IMATECH

IMATION TECNOLOGIA
Avatar de usuário

Imatech
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 369
Data de registro: 24 Ago 2010 23:48
Cidade/Estado: Goiânia-GO
Curtiu: 4 vezes
Mens.Curtidas: 27 vezes

Tabelas para um sistema de contabilidade

Mensagempor jelias » 05 Set 2012 20:02

Amiguinho Ronaldo, obrigado pelas sugestões.

Quanto a fazer um reprocessamento anual quando o usuário é uma rotina que elimina a necessidade de processar mês a mês. Todavia, se a correção a ser feita for no mês se junho por exemplo, seria desnecessário processar os saldos dos meses anteriores. Processar a partir do mês referência seria a solução, podemos pensar. Acredito que neste contexto sim.
O que gostaria de discutir se este seria o caminho mais rápido, visto que o processamento gera muito tempo em uma contabilidade que tenha muitos lançamentos, como um cliente que tenho.
Como ele tem muitas empresas, percebo que isso acaba sendo um "gargalo" no dia-a-dia de trabalho.

Concordo com o amigo quanto a montar um banco de dados para controlar o saldo das contas e manter o cadastro do plano de contas separadamente. Sendo assim, posso sempre dar continuidade nos saldos mensalmente. Para tanto, posso ter a seguinte estrutura:

Código -> código da conta
Mesano -> mês e ano dos saldos.
saldoi -> saldo inicial de abertura do mês.
credit -> total dos créditos do mês. (valores acumulados do processamento dos lançamentos)
debito -> total dos déditos do mês. (valores acumulados do processamento dos lançamentos)

Hoje, quando apresento um Livro Razão, tenho que buscar montar um banco de dados para a apresentação do mesmo, pois os saldos iniciais das contas estão em um arquivo e os valores dos lançamento estão em outro arquvo. Coisa que gostaria muito de evitar.

Saudações,
Júlio!
xHarbour 1.2.1 (simplex) + BCC 5.8.2 + Hwgui + SQLRDD
Clipper 5.2e / Blinker 7
Júlio Cézar Elias
e-mail: jelias@tpnet.psi.br
jelias
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 210
Data de registro: 27 Ago 2008 11:32
Cidade/Estado: Minas Gerais
Curtiu: 0 vez
Mens.Curtidas: 9 vezes

Tabelas para um sistema de contabilidade

Mensagempor Imatech » 05 Set 2012 22:54

Olá Jelias !
.
.
.
Por favor: evite usar "...inho", em minha cultura isso sõa pejorativo e/ou ofensivo...
.
.
.
Quanto a base de dados (DBF ou SGDB)...
A melhor forma de armazenamento é sempre em tempo real, no caso de sistema contabil ao gerar qquer lançamento já atualizar tambem o arquivo de saldos. Assim qualquer consulta estara livre de qualquer reprocessamento...
.
Usando SGDB fica ainda + facil com o uso de Stored Procedures e Gatilhos... e não faz diferença tamanho da base ou atualização mensal/anual, pois basta-se atualizar o arquivo de saldos...
.
.
.
Sucesso...
M., Ronaldo

by: IMATECH

IMATION TECNOLOGIA
Avatar de usuário

Imatech
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 369
Data de registro: 24 Ago 2010 23:48
Cidade/Estado: Goiânia-GO
Curtiu: 4 vezes
Mens.Curtidas: 27 vezes

Tabelas para um sistema de contabilidade

Mensagempor billy1943 » 10 Set 2012 18:36

Como o Jelias pediu sugestões, aí vai a minha:

- eu tenho um arquivo principal (plano de contas) onde estão as contas, com código, nome, código reduzido, saldo anterior e saldo atual;

- os arquivos de lançamentos são 3, a saber:
a) lançamentos anteriores = lançamentos antes do período (mes) atual ou em aberto
eles correspondem ao saldo anterior das contas
b) lançamentos do período = lançamentos do período (mes) atual ou em aberto
fornecem o saldo atual das contas em função do saldo anterior
c) lançamentos futuros = lançamentos depois do período (mes) atual ou em aberto
estão invisíveis na contabilidade até que se chegue à data deles

- assim, posso voltar ao mês que eu precisar, e sistema faz todas as transferências necessárias, tanto no avanço de data como
no retrocesso

- somente existe um mês em aberto, mas não tem nenhum fechado
- todos os relatórios e posições somente enxergam esse período em aberto
- as datas são controladas no arquivo da empresa
- existe um arquivo de históricos padronizados para suprir a parte inicial dos lançamentos, reduzindo a digitação

Esse sistema funciona há muito tempo, sem problemas, permitindo estar com a contabilidade em dia, e quando precisar voltar
a algum período para trás, basta informar qual é ele, e, após feitas as inclusões, exclusões e acertos, volta-se à data atual;

Simples, e funciona.
O bom do computador é que ele resolve os problemas, sem nunca levantar nenhum.
Hoje atuo mais com Clipper 52E, e um pouquinho com XHarbour.
Avatar de usuário

billy1943
Usuário Nível 4

Usuário Nível 4
 
Mensagens: 574
Data de registro: 12 Mai 2009 17:33
Cidade/Estado: Bauru-SP
Curtiu: 1 vez
Mens.Curtidas: 18 vezes

Tabelas para um sistema de contabilidade

Mensagempor rochinha » 06 Jan 2013 00:33

Amiguinhos,

A melhor técnica para este tipo de aplicativo é criar pastas para manter as tabelas de cada ano. Se o sistema for multi-empresa, uma pasta para cada empresa e sub-pastas para cada ano contábil lançado.

Ao entrar no sistema, com certeza voces já criticam a empresa e o ano base, então bastará pular para dentro das pastas e trabalhar normalmente.
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para fivolution@hotmail.com. Agradecido.

@braços : ? )

A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
Avatar de usuário

rochinha
Membro Master

Membro Master
 
Mensagens: 4209
Data de registro: 18 Ago 2003 20:43
Cidade/Estado: São Paulo - Brasil
Curtiu: 499 vezes
Mens.Curtidas: 182 vezes

Tabelas para um sistema de contabilidade

Mensagempor JoséQuintas » 12 Mai 2013 17:40

Isso não tem a ver com banco de dados.

Sugestão: (do jeito que uso)
Cada mes apenas com o movimento do mes, e um saldo anterior.
Digitou/alterou/excluiu lançamento, já altera lá o saldo do mês.
Pra qualquer relatório, de qualquer mês, é só somar.
E pode ter uma variável com "atualiza sintética sim/não".
Sem pensar em velocidade, código enxuto, etc, apenas pra mostrar como é possível:

FUNCTION Debitos( nMes )
   DO CASE
   CASE nMes == 0
      RETURN  0
   CASE nMes == 1
    RETURN plano->Debitos01
   CASE nMes == 2
   RETURN plano->Debitos02
   ...
   ENDCASE
RETURN 0

FUNCTION Creditos( nMes )
Igual a Debitos(), mas ao invés de plano->Debitos01, use planos->Creditos01
RETURN 0

FUNCTION SaldoMes( nMes )
   LOCAL nValor
   nValor := plano->SaldoAnterior
   FOR nCont = 1 TO nMes
      nValor := nValor + Debitos( nMes ) - Creditos( nMes )
   NEXT
   RETURN nValor


Pronto. Com essas funções já faz um balancete de qualquer período.

@ 2, 10 SAY "QUAL MES" GET nMes
READ

SELECT plano
GOTO TOP
DO WHILE .NOT. Eof()
    ? "conta:", plano->Nome, Saldo( nMes - 1 ), Debitos( nMes ), Creditos( nMes ), Saldo( nMes )
   SKIP
ENDDO


Neste caso, se mexer em janeiro, basta atualizar os valores de janeiro, e todos os meses vão sair atualizados.

Mas ao pegar o jeito com um servidor de banco de dados, pode configurar essas atualizações no próprio servidor, diferente dos DBFs.
José M. C. Quintas
Harbour 3.4, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, hbnetio, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
Avatar de usuário

JoséQuintas
Colaborador

Colaborador
 
Mensagens: 11588
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 12 vezes
Mens.Curtidas: 740 vezes




Retornar para Banco de Dados

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 1 visitante


Ola Amigo, espero que meu site e forum tem lhe beneficiado, com exemplos e dicas de programacao.
Entao divulgue o link da Doacao abaixo para seus amigos e redes sociais ou faça uma doacao para o site forum...
MUITO OBRIGADO PELA SUA DOACAO!
Faça uma doação para o forum
cron
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro