Máscara contábil

Delphi

12/01/2011

Senhores,
Preciso desenvolver um cadastro de plano de conta, mas não tenho o nível da conta contábil, o tamanho da conta e nem a máscara contábil, o cadastro tem que se adaptar as necessidade do cliente.
Alguem tem algum exemplo, qualquer coisa para ajudar???
Uso Delphi 7 e Firebird 2.0
Obrigado
 


Silvio Morelo

Silvio Morelo

Curtidas 0

Respostas

Rodrigo Santos

Rodrigo Santos

12/01/2011

Amigo, boa tarde.

  Como você precisa fazer um cadastro que depende do usuário para criar as sub categorias e você precisa cadastrar isso em forma de tabela no banco de dados, fica difícil você definir quantas categorias e quantas tabelas irá ter que fazer. O pior acontece quando o usuário vem e diz que terá mais um nível de detalhamento nas contas e daí você precisa cadastrar mais uma tabela no banco e mexer em várias partes da sua aplicação para corrigir o problema.

Uma sugestão que te dou é o seguinte, crie você mesmo um sistema de codificação do seu plano de contas. Como? Bem, vou tentar deixar bem claro pra você através de um exemplo.
 Temos dois grandes grupos que são receitas e despesas, até aqui tudo bem. Poderiíamos criar uma tabela para estes grupos de contas, colocar um ID auto incrementado nesta tabela e aí cadastrar os grupos.

Primeiro grande problema, na minha opinião, você teria uma tabela no seu banco que não passaria de dois registros, concorda? Ou uma conta é receita ou é despesa? Acredito não haver um terceiro grupo. Mas ainda que houvesse, seriam 3 registros apenas.

Sendo assim, você pode criar uma tabela onde o sistema de código não será auto incrementado através de generators e triggers mas, criado por você mesmo. Este esquema é um pouco mais complicado de implementar mas você tem um ganho muito grande quando precisa dar manutenção no seu programa. E não preciso nem dizer aqui porque devemos nos preocupar com isso não é mesmo?

Tente algo assim: Uma tabela plano_contas com os campos, codigo_plano, descricao_plano, tipo_plano.

Para cadastrar as receitas usaríamos algo como codigo = 1, descricao = 'Receitas', tipo = 'C'
as despesas seriam codigo = 2, descricao = 'Despesas', tipo = 'D'

Este é nosso primeiro grupo.

Os subgrupos seriam cadastrados na mesma tabela seguindo um padrão de codificação que fica fácil definir através de comandos de manipulação de string do delphi. Ex: cadastrar o grupo custo fixo. Bem, isso seria uma despesa, ok? Enão o codigo começa com 2 e acrescentariamos aqui o próximo valor. Então, o cadastro ficaria assim:
codigo = 201, descricao = 'Custo Fixo', tipo = 'D'. E se formos cadastrar o grupo Custo Variável?
codigo = 202, descricao = 'Custo Variável', tipo = 'D'. Agora cadastramos o grupo telefone, em outra tabela? Não na mesma tabela porém, nosso código já está no terceiro nível, assim, teríamos algo como codigo = 20001, descricao = 'Despesas com telefone', tipo = 'D' e assim por diante. Repare que no primeiro grupo eu usei um dígito e dois nos outros mas você pode adaptar o modelo de acordo com suas necessidades. Também estou gravando como se fossem inteiros mas poderia ser um varchar() separados por ponto, por exemplo '2.00.01'. Bem, espero ter ajudado com esta descrição, como eu lhe disse no começo, a modelagem da solução é um pouco mais complicada mas acredito que você irá ganhar tempo depois na manutenção do seu programa. Não precisaria criar uma nova tabela no seu banco para cada nova categoria do seu plano de contas.

Grande abraço

Att,
GOSTEI 0
Benedito Assis.

Benedito Assis.

12/01/2011

Amigo, Boa Noite.   Já algum tempo tempo ver isso, vc não teria um demo bd deste plano de contas p/ poder estudar, fico grato si puder ajudar. Agradecido.
GOSTEI 0
Edmar Silva

Edmar Silva

12/01/2011

Crie uma tabela de grupo de contas tipo: Codigo 1 - Ativo Mascara 9.99.999.999 Natureza D - Debito Codigo 2 - Passivo Mascara 9.99.999.999 Natureza C - Debito Depois na tabela de contas referencie este codigo assim: Código : 1 Grupo de Contas: 1 - Ativo Classificação : 1. . . Obs: Utilize um maskedit para exibir a mascara claro tem que fazer varias outras validações. Nome : Ativo Essa é a solução que utilizo em meu sistema contábil e funciona satisfatoriamente..
GOSTEI 0
Emerson Nascimento

Emerson Nascimento

12/01/2011

não sei como é seu sistema, mas você deveria ter uma tabela de parâmetros, onde estariam gravados alguns dados genéricos do sistema:

formato da data,
dados do servidor smtp e pop (no caso de o sistema enviar e receber emails),
formato da moeda,
formato da conta contábil,
etc.

para a conta contábil você precisa somente de uma tabela, pois ela poderá ser 'recursiva'.

a estrutura deverá ser parecida com essa:

ContaContabil
------------------
ID int (PK)
Codigo varchar
Descricao varchar
ID_Pai int (FK)
etc.

e o conteúdo deverá ser assim:


ID  Codigo         Descricao             ID_Pai
--  -------------  --------------------- ------
1   1              Ativo                 null
2   1.1            Ativo circulante      1
3   1.1.01         Disponivel            2
4   1.1.01.01      Caixa geral           3
5   1.1.01.01.001  Caixa                 4
6   1.1.01.02      Bancos                3
7   1.1.01.02.001  Banespa               6
8   1.1.01.02.002  Bradesco              6
9   1.1.01.02.003  Itau                  6

o código será baseado na máscara indicada na tabela de parâmetros e todo o tratamento da árvore deverá ser feito no seu programa.






GOSTEI 0
Silvio Morelo

Silvio Morelo

12/01/2011

Emerson,
Vc teria um exemplo de como efetuar o cadastro dessas informações (Código Contábil)
Obrigado,
GOSTEI 0
POSTAR