SISTEMA DE VENDAS
Então Adilso esta é a alternativa que postei
veja
CodVenda - NroVenda - Item
0013201 - 00132 - 200 gramas de café
0013202 - 00132 - 07 pctes de esponja
0013203 - 00132 - 03 Kilos de Farinha
0013301 - 00133 - 3 pacts de bala
0013302 - 00133 - 5 kilos de feijao
0013401 - 00134 - 6 caixas de sabao
repare que o código de venda será sempre diferente, porém o numeroda venda podrá ser extraido criando uma autonumeração
ou seja para pegar o numero da venda
(select max(nroVenda) + 1 As ProximoNumero From tabela)
se o ultimo numero venda for 00134 então ProximoNumero será 00135
manter este numero e ao salvar crie o código da venda (codvenda+nrovenda) para não haver as duplicidades e salve como no exemplo:
veja
CodVenda - NroVenda - Item
0013201 - 00132 - 200 gramas de café
0013202 - 00132 - 07 pctes de esponja
0013203 - 00132 - 03 Kilos de Farinha
0013301 - 00133 - 3 pacts de bala
0013302 - 00133 - 5 kilos de feijao
0013401 - 00134 - 6 caixas de sabao
repare que o código de venda será sempre diferente, porém o numeroda venda podrá ser extraido criando uma autonumeração
ou seja para pegar o numero da venda
(select max(nroVenda) + 1 As ProximoNumero From tabela)
se o ultimo numero venda for 00134 então ProximoNumero será 00135
manter este numero e ao salvar crie o código da venda (codvenda+nrovenda) para não haver as duplicidades e salve como no exemplo:
sSQL = [Ô]INSERT INTO tabela (CodVenda, NroVenda, Item) VALUES ([ô][Ô] & ProxNumero+itemvendido & [Ô][ô],[ô][Ô] & proximonumero & [ô][Ô],[ô][Ô] & Item & [Ô][ô])[Ô]
entendi... mas como adicionar no bd os dados do msflexgrid?
assim
Wtih MSFlexgrid1
For f =1 To .Rows - 1
sSQL = [Ô]INSERT INTO tabela (campo1, campo2, campo3) Values ([ô][Ô] & .TextMatrix(f, 0) & [Ô][ô],[ô][Ô] & .TextMatrix(f, 1) & [Ô][ô],[ô][Ô] & TextMatrix(f, 2) & [Ô][ô])[Ô]
Set RS = Con.Execute(sSQL)
Next f
End With
Assim que chegar em casa vou testar, valeu...
ADilson, não sei qual o ramo e nem qual o método que vc está utlizando para efetuar suas vendas...mas....
Supondo que seja uma venda tipo mercado.
Seu sistema poderá ter as seguintes tabelas :
tblVenda - Irá armazenar os dados relativo a venda(cliente, prazo, forma pgto, etc...etc....e o NUMERO DA VENDA)
tblMovItens - Irá armazenar os dados relativo aos produtos da venda(independente se concluir ou não a venda).(codigo da venda, codigo do item, quantidade) isso já bastaria para um sistema simples.No meu caso tenho mais informações que julgo necessário.
A lógica que utilizo é a seguinte :
Inicio uma venda e gravo na tabela de venda apenas os dados de abertura da venda(codigo da venda, data da venda), com isso eu já gerei no banco o código da venda, com isso eu já sei qual será o código a ser utilizado na tabela que armazenará os produtos.
Registro todos os itens em um listview(pode ser o grid de sua preferencia).
Caso queira poderá implementar uma forma de capturar outras informações para o pedido(codigo do cliente, forma de pagamento, prazo, etc....)
Ao final dos lançamentos do produtos, eu inicio o processo de finalização da venda, para isso utilizo-me de outras tabelas que não citei acima(por exemplo, formas de pagamentos, vendedores, etc....)
O processo de finalização consiste em captar o restante das informações necessárias para a conclusão da venda. Com essas informações na tela eu atualizo(update) o registro que iniciei a venda, informando as demais informações.
IMPORTANTE: Utilizo-me de artificios que criei para que se de alguma forma algum problema ocorrer durante o prcesso de venda(do inicio ao fim) eu posso recuperar a venda e seus itens.
Em casos de cancelamento da venda ou do item fica fácil,pois basta excluir um ou outro.
Somente insiro os itens no final do fechamento da venda, isso pode causar alguma instabilidade númerica ao que diz respeito ESTOQUE, pois se imaginar que no momento em que estiver passando um determinado item(com uma unica unidade em estoque na frente de caixa) e o seu telemarketing tbem estiver vendendo esse item, irá ocorrer um erro de negócio, pois para o telemarketing ainda existe tal produto no estoque(até que vc finalize a venda). Isso pode ser tratado de diversas maneiras, porém deve-se estudar cada caso.
O estoque somente é baixado na conclusão da venda.
Supondo que seja uma venda tipo mercado.
Seu sistema poderá ter as seguintes tabelas :
tblVenda - Irá armazenar os dados relativo a venda(cliente, prazo, forma pgto, etc...etc....e o NUMERO DA VENDA)
tblMovItens - Irá armazenar os dados relativo aos produtos da venda(independente se concluir ou não a venda).(codigo da venda, codigo do item, quantidade) isso já bastaria para um sistema simples.No meu caso tenho mais informações que julgo necessário.
A lógica que utilizo é a seguinte :
Inicio uma venda e gravo na tabela de venda apenas os dados de abertura da venda(codigo da venda, data da venda), com isso eu já gerei no banco o código da venda, com isso eu já sei qual será o código a ser utilizado na tabela que armazenará os produtos.
Registro todos os itens em um listview(pode ser o grid de sua preferencia).
Caso queira poderá implementar uma forma de capturar outras informações para o pedido(codigo do cliente, forma de pagamento, prazo, etc....)
Ao final dos lançamentos do produtos, eu inicio o processo de finalização da venda, para isso utilizo-me de outras tabelas que não citei acima(por exemplo, formas de pagamentos, vendedores, etc....)
O processo de finalização consiste em captar o restante das informações necessárias para a conclusão da venda. Com essas informações na tela eu atualizo(update) o registro que iniciei a venda, informando as demais informações.
IMPORTANTE: Utilizo-me de artificios que criei para que se de alguma forma algum problema ocorrer durante o prcesso de venda(do inicio ao fim) eu posso recuperar a venda e seus itens.
Em casos de cancelamento da venda ou do item fica fácil,pois basta excluir um ou outro.
Somente insiro os itens no final do fechamento da venda, isso pode causar alguma instabilidade númerica ao que diz respeito ESTOQUE, pois se imaginar que no momento em que estiver passando um determinado item(com uma unica unidade em estoque na frente de caixa) e o seu telemarketing tbem estiver vendendo esse item, irá ocorrer um erro de negócio, pois para o telemarketing ainda existe tal produto no estoque(até que vc finalize a venda). Isso pode ser tratado de diversas maneiras, porém deve-se estudar cada caso.
O estoque somente é baixado na conclusão da venda.
Bom dia gente, bom, eu estava pensando, vou fazer assim...
TabItens: CodVenda repetindo a cada item, CodItem, QtdeItem, UnitItem, TotalItem
TabVendas: CodVenda que será único, CodCliente, CodVendedor, DataVenda, HoraVenda, CondPgto, Vcto,
A TabVendas eu vou inserir um NOVO registro gravando só o código selecionando o MAXIMO e somando 1, se caso o usuário cancelar a VENDA, eu excluo o registro.
Será que finalmente estou no caminho certo?
TabItens: CodVenda repetindo a cada item, CodItem, QtdeItem, UnitItem, TotalItem
TabVendas: CodVenda que será único, CodCliente, CodVendedor, DataVenda, HoraVenda, CondPgto, Vcto,
A TabVendas eu vou inserir um NOVO registro gravando só o código selecionando o MAXIMO e somando 1, se caso o usuário cancelar a VENDA, eu excluo o registro.
Será que finalmente estou no caminho certo?
Bom amigos, acho que esse tópico chegou ao fim, com a ajuda de vocês já consegui a ter uma noção muito boa de como funciona um Sistema de Vendas, agora é botar a CUCA pra funcionar e ver oque sai, hehe, bem, por enquanto muito obrigado a todos.
Tópico encerrado , respostas não são mais permitidas