Fórum Aplicação Stand Alone #469080
06/02/2014
0
Vou precisar fazer uma aplicação Stand Alone. Ou Seja preciso emitir pedidos sem a necessidade no banco de dados.
O problema e o seguinte como fazer isso?
Pelo meu ponto de vista temos duas opção.
1) Trabalha com um base de dados local e depois fazer milagre para sincronizar com a base de dados real.
2) Criar somente as tabelas necessárias em ClientDataSet e salvar em .xml Ex: Tab_Clientes, Tab_Produtos, etc...
O Inicio do dia sincroniza estas tabelas e no final do dia gera os pedidos na base de dados real.
Acho a segunda alternativa mais fácil, mais agora as duvidas!
No meu caso, são vários vendedores que vai trabalhar com esta aplicação. Eles precisa cadastrar cliente e emitir pedidos, e consultar histórico de comprar do cliente disponibilidade em estoque.
Problema. Como controlar sequencial de cadastro tanto de cliente novos e pedidos emitidos.
Vai acontecer de dois ou mais vendedor criar um cliente com o mesmo código ex: 10 e ate mesmo dois ou mais pedidos com o mesmo código 5 como exemplo.
Como posso controlar isso?
Outro problema disponibilidade em estoque! Cedo eles vai sair com o estoque certinho, mais se dois ou mais vendedor vender o mesmo produto, e a soma destas duas venda estourar o estoque.
Ai que tá né, como os caras faz isso, alguém sabe como fazer isso de forma eficiente sem dar bugs?
Fiz um exemplo de teste, para a aplicação saber se tem conexão com a base de dados ou não.
Usando Zeuos e Postgres, funciona perfeitamente pode tirar o cabo de rede, desconectar a internet, matar o procpid da conexão. Que ele caiu e avisa que aplicação esta em Stand Alone quando a rede voltar ele se reconecta ao banco de dados automaticamente. E o melhor não deixa conexões presa ao banco de dados.
Se alguém precisa do exemplo e só falar que disponibilizo ele para download.
Forte abraço pessoal, estou no aguardo de vocês! Rs
Leonardo Rehder
Curtir tópico
+ 0Posts
07/02/2014
Maxiwel Rodrigues
Problema. Como controlar sequencial de cadastro tanto de cliente novos e pedidos emitidos.
Vai acontecer de dois ou mais vendedor criar um cliente com o mesmo código ex: 10 e ate mesmo dois ou mais pedidos com o mesmo código 5 como exemplo.
Como posso controlar isso?
Outro problema disponibilidade em estoque! Cedo eles vai sair com o estoque certinho, mais se dois ou mais vendedor vender o mesmo produto, e a soma destas duas venda estourar o estoque.
Ai que tá né, como os caras faz isso, alguém sabe como fazer isso de forma eficiente sem dar bugs?
1º Como controlar sequencial de cadastro tanto de cliente novos e pedidos emitidos.
Creio que isso nao seria o mais dificil! porque seria criando um ID sequencia e um ID editável. OU seja todo cliente teria o mesmo uma sequencia de pedido difente mais com o mesmo id ex. cliente 01 -codigo a01 - cliente 02 - codigo a01 - no final do dia vc lista apenas o cliente do mesmo codigo a01- ele junat todas as suas consultas.
2º Outro problema disponibilidade em estoque! Cedo eles vai sair com o estoque certinho, mais se dois ou mais vendedor vender o mesmo produto, e a soma destas duas venda estourar o estoque.
Crie um função que o produto ao chegar no estoque <=0 de uma mensagem de estoque zerado ou mesmo < 2 estoque minino. Ligue para a central de atendimento.
Se nao ajudar podemos ver essas funções via tean vier. email pirata_pirado33@hotmail.com - skype: pirata_pirado33 - whatssap:(99)8154-3928
Gostei + 0
07/02/2014
Leonardo Rehder
Antes de mais nada, obrigado pela atenção!
Me desculpe, mais não entendi direito a solução do sequencial!
Agora a parte do estoque, desta maneira não funciona em aplicação Stand Alone.
Ex:
Imaginamos que as 10:00 da manhã, um vendedor chega em um determinado estabelecimento comercial de uma determinada cidade.
Ele vai vender Torneira com mecanismo de 1/4 de volta, por exemplo.
Todos vendedores sairão na parte da manha contendo um estoque de 20 torneira do mesmo.
Este vendedor me vende 15 torneira as 10:10 da manhã. Na aplicação dele perfeito o saldo desta torneira se ele consultar vai esta com 5 correto?
Lembrando que existe outros vendedores, mais vamos supor que as 10:10 outro vendedor chega em outro estabelecimento comercial em outra cidade.
E ele vai vender a mesma torneira, que o primeiro. Na qual e o estoque dele deste produtos está com 20 correto?
E o responsável pela primeira venda ainda não teve tempo, ou internet para sincronizar os dados com o servidor principal, mesmo se ele tiver sincronizado e o segundo vendedor não.
O estoque do segundo vendedor esta errado porque já foi feita uma venda de 15 torneira com o primeiro vendedor. Certo?
E ai o segundo vendedor me faz um venda de 10 torneira para o segundo cliente.
Pronto, meu estoque esta ferrado.
Meu cliente nunca vai conseguir atender os clientes dele com eficiência. Vai falta produto do estoque o cliente pede 10 de uma mercadoria na hora de entregar, não tem as 10 tem 5 como exemplo. Já imagino o problema que isso vai dar?
Estou falando de uma empresa que vai ter no mínimo 20 vendedores na rua todos os dias. As chances de isso ocorrer e muito grande.
Uma forma de melhorar isso, mais acredito que mesmo assim não fica 100%
E aplicação descobrir automaticamente se tem acesso ao servidor principal e por meio de Threads e se auto sincronizar.
Agora outro problema, imagina uma base de dados com 10 mil cliente e 30 mil produtos diferente o tempo que não demora para fazer isso remotamente.
Uma alternativa. Só sincronizar os registros alterados. Não posso ficar lendo todos os cliente e produtos toda hora.
Fazer isso para uma empresa pequena você não tem tantos problemas, agora o problema e fazer isso para um empresa grande, os problemas aumenta e muito.
Mais to com um prazo bom para apresentar uma solução para cliente.
Com calma chegamos a uma solução eficiente. Rs
Qualquer ajuda ou dica pessoal será bem vinda. Desde de já agradeço atenção de todos.
Gostei + 0
07/02/2014
Luiz
Quando a tabela de clientes para não duplicar vejo 2 soluções simples, uma é você pode colocar um código do vendedor (como chave primária), e gerar o código sequencialmente a partir do código do vendedor (que nunca vai repetir) - mas acredito que a melhor forma seria trabalhar com o CPF ou CNPJ (já que é um número único de cada pessoa e empresa), ou seja mesmo que você cadastre em uma aplicação off, quando você for fazer este sincronismo, você verifica se já existe, se já existir você desconsidera ou faz um update, se não existir você faz o insert. Mesmo que o cliente compre uma coisa com um vendedor, e outra com outro vendedor, irá funcionar pois afinal o cliente é o mesmo, grave o código do vendedor em uma outra tabela (histórico do cliente), onde tenha o código do cliente - código do vendedor e detalhes da compra ...
Quanto ao estoque realmente é um problema! trabalhar com aplicação offline é uma *** mesmo! O que você pode fazer é ter um banco de dados local, e a cada compra gravar registro (xml ou no banco mesmo), ter uma outra aplicação que fique procurando por conexão, quando encontrar já fazer essa sincronização - e não deixar apenas para 1 x ao dia - , e puxar o estoque para a máquina local! já envia, e já atualiza o estoque ...
O que eu sugiro também é criar um campo estoque mínimo (geral) e um estoque por vendedor no seu sistema, e caso tenha 20 vendedores que saiam diariamente para vender um produto (que pode ser vendido 10 por cada vendedor) - você teria um movimento (Estimativo de 200 itens).
Vamos supor que o estoque (geral) tenha 100, e o estoque mínimo é 200 (geral), o vendedor já vendeu os seus 20, ele até pode efetuar a venda, mas deixa claro para o cliente de que a compra terá que ser confirmada ... e não pode lhe afirmar sobre o prazo de entrega ...
Vamos supor que tem 1000 em estoque, então cada vendedor pode vender (naquele dia) até 50 itens - caso ele passe disso, precisa confirmar se tem em estoque ... ai você vai criando regras (a partir de mensagens e status) dentro de sua aplicação para não acontecer de vender mais do que tem em estoque ...
Ou seja,
Estoque Real (quanto tem real no sistema)
Estoque Mínimo (quanto é o minimo que precisa ter na empresa)
Estoque Vendedor (Quanto ele ainda pode vender)
O estoque do vendedor você consegue sempre atualizar, mesmo offline ele consegue saber quanto pode vender...
O estoque minimo é cadastrado pelo gerente .. no sistema comum a todos. (sincronizar)
O estoque real é comum a todos.
Ai é questão de planejamento, tem 500 itens em estoque o gerente defini 25 vendas para 20 vendedores ..
Quando o estoque do vendedor for acabando, ele vai até a empresa, e pede para aumentar, ai vc pode ter uma transferência de estoque, retirar de um vendedor que vendeu pouco, e aumentar o limite dele .. ou ele já pode fazer a venda - explicando para o cliente que não tem certeza do prazo - e deixando ela pré-aprovada, aprova a hora que chegar na empresa e consultar o estoque real ...
E por ai vai ...
Gostei + 0
11/02/2014
Leonardo Rehder
Desculpa a demora para te responder, pois anda muito corrido porá aqui! rs
Entendi perfeitamente. Parabéns pela sua analise.
Você me ajudo muito com a sua explicação!
Vou fazer, está aplicação com um banco de dados local, e um serviço que fará a sincronização de tempo em tempo, caso a conexão com o servidor principal.
A jogada do sequenciais perfeito. Fica de uma forma simples e clara para trabalhar.
E o esquema da divisão de estoque e um estoque por vendedor, perfeito só criar uma regra de negócio como você me disse, acredito que vai funcionar perfeitamente. rs
Valeu, mesmo você não faz ideia como abriu minha mente para fazer um aplicação Stand Alone.
Desde de já muito obrigado a todos pela colaboração.
Gostei + 0
11/02/2014
Luiz
Quem bom que pude ajudar de alguma forma!
Boa sorte com sua aplicação!
Abraços
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)