Página 1 de 1
Rotina p/validação da estrutura de plano de contas
Enviado: 09 Mar 2007 08:57
por Grings
Estou desenvolvendo uma rotina para estruturar os grupos do plano de contas do estoque e a coisa complicou na hora de validar a alteração da máscara, as validações na inclusão e exclusão estão ok. Gostaria de saber se alguém possui uma rotina dessas para eu dar uma olhada e trocar idéias.
Grato!
Enviado: 09 Mar 2007 11:30
por gvc
Especifique sua dúvida para poder-mos ajudar.
Enviado: 09 Mar 2007 14:15
por Grings
GVC é o seguinte:
A máscara da estrutura é fixa: 9.99.99.99.99.99
1.00.00.00.00.00 - Estoques
1.01.00.00.00.00 - Mercadoria A
1.01.01.00.00.00 - Mercadoria A1
1.02.00.00.00.00 - Meracdoria B
1.02.01.00.00.00 - Mercadoria B1
Quando incluo uma subconta verifico se a conta pai existe, não deixo excluir a conta pai se existe subconta cadastrada e assim por diante.
Imagine que eu tenha uma conta assim:
1.01.01.02.00.00
e queira alterar para:
2.02.01.03.00.00
Ou coisa parecida. Comecei escrever a função de validação da máscara quando alterada e não imagino quantas linhas terá que ter para prever todas as possibilidades de validação. Então o que preciso saber é se alguém já passou por isso e tenha uma solução mais simples.
Grato!
Enviado: 09 Mar 2007 14:50
por Clipper
Prezado Grings
Como uma conta inferior só existe se uma superior existir creio que seja fácil fazer.
Tomado por base seu exemplo :
1.01.01.02.00.00
para
2.02.01.03.00.00
A 1ª coisa é verificar se já existe uma conta cadastrada, se já existir não poderá ser feita a alteração, isso eu sei que você já imaginou.
2º Verificar a conta imediatamente superior na hierarquia.
No caso do seu exemplo :
2.02.01.00.00.00
+ ou -
DBSEEK("2.02.01.00.00.00")
IF FOUND()
@ 02,00 SAY "Conta pai existente"
ELSE
@ 02,00 SAY "Conta pai inexistente, impossivel alterar para esse código"
ENDIF
Sendo assim você não precisa verificar se 2.02.00.00.00.00 existe, pois a 2.02.01.00.00.00 só exestirá se a superior existir, levando em consideração que só se pode cadastrar de forma hierárquica.
Espero que tenha dado para entender.
Até logo.
Marcelo
Enviado: 09 Mar 2007 16:20
por Grings
Pois é Marcelo, não sei por onde eu andava com a cabeça, acho que estava complicando demais as coisas, vou testar, valeu!
Enviado: 10 Mar 2007 18:24
por Augusto
Grings...
Confesso que para "estoque" eu nunca fiz uma estrutura de planos de contas e prá falar a verdade nunca vi da maneira como vc está fazendo pois a minha é totalmente diferente e foi desenvolvida com base em vários sistemas de controle de estoque que eu conheci.
O que eu tenho de mais semelhante a sua rotina (ou lógica) é para plano de contas de "contabilidade" o que me leva a crer que não é muito diferente e então me veio em mente a seguinte dúvida ??
Até que nível da estrutura, a conta é sintética e, até que nível ela é analítica ?? Ou seja, quais níveis são totalizadores e quais recebem lançamento ??
Essa pergunta é importante... não acha ??
Acompanhe meu raciocínio...
Pelo que vc mostra sua conta tem 6 níveis com estrutura "x.xx.xx.xx.xx.xx" e suponho que o N5 totaliza o N6(nível mais a direita), o N4 totaliza o N5, o N3 totaliza o N4 e assim vai até que o N1 totalizando o N2 sendo assim "teóricamente" somente o N6 receberia lançamentos (conta analítica) estoue errado ??
Caso eu esteja certo... me diga que aí eu tenho, não só a rotina que vc deseja como também a de totalização de todo o plano (de cima para baixo) além de te passar algumas dicas que tenho certeza te ajudarão mais na frente...
Enviado: 10 Mar 2007 21:01
por Clipper
Eu creio que no caso dele os niveis não sirvam para totalização e sim para subdivisão de grupos de produtos, algumas industrias utilizam desta forma e alguns comércios também, principalmente nos segmesntos onde não há uso dos códigos EAN, um desses casos é o ramo de autopeças.
Até logo.
Marcelo
Enviado: 12 Mar 2007 09:22
por Grings
Augusto,
Os níveis das contas servem para subdivisão das mercadorias e para totalização. Não existe nível fixo para as contas de lançamentos, quando cadastro a conta existe um campo que define se a conta é totalizadora ou analítica. A conta 1.00.00.00.00.00 totaliza todo o estoque.
Enviado: 12 Mar 2007 09:24
por Grings
Augusto, a propósito, de que forma vc estrutura os estoques ?
Enviado: 12 Mar 2007 09:47
por Augusto
Grings escreveu:Augusto, a propósito, de que forma vc estrutura os estoques ?
Bem... desde o advento do código de barras que eu uso o mesmo para estruturar o estoque afinal o próprio código de barras já é estruturado e quando o produto não tem código é criado um pelo estoquista seguindo uma regra pré-definida... Nada muito complicado...
Enviado: 12 Mar 2007 10:22
por gvc
Se for para usar como é na contabilidade, vc deve primeiro verificar se a conta tem pai.
a) 1.01.01.02.00.00
b) 2.02.01.03.00.00
Faça uma rotina que apague os zeros da esquerda para direita, até o ponto (a - 1.01.01.02.00).
Verifique se o grupo seguinte é todo de zeros. Se for, apague tb (a - 1.01.01.02).
Repita até encontrar um grupo com números válidos (a - 1.01.01.02).
Apague esse último grupo (a - 1.01.01).
Procure a conta com essa código ou complete com zeros (a - 1.01.01.00.00.00). Essa é a conta pai.
Ou
Como o formato é fixo, faça uma rotina que pegue o último grupo e verifique se ele é diferente de zero.
Se não for,pegue o grupo anterior e repita a operação até encontrar um diferente de zero. (Vc esta verificando os grupo. Cada grupo corresponde aos digitos entre os posto.)
Após encontrar o grupo com valor diferente de zeros, substitua-os por zeros.
No seu exemplo: 1.01.01.02.00.00 - o grupo deiferente de zeros é o 02. Substituindo por zeros ficaria: 1.01.01.00.00.00.
Agora vc já tem a chave para procurar a conta pai.
Os mesmos métodos pode ser utilizados para verificar se existe a conta pai para o código destino, antes de transferir o produto para o novo código.
Boa sorte.