Usuário com melhor resposta
Controle de Estoque

Pergunta
-
Por favor, me ajudem.
Desejo criar um controle de estoque com um tipo só de mercadoria: smart card
mas, com saída de diversas formas, por exemplo: Estudantil, Idoso Funcionário, Deficiente, Deficiente com acompanhante, Vale Transporte Empresa, Vale Transporte Prefeitura, Gratuidade, Passe Fácil e Perda de Impressão - totalizando as emissões de 1ª via. É adequado que seja extratificado dessa forma.
E além disso a forma de 2ª via. Este sim basta apenas essa informação.
Como posso controlar o estoque diário desse smart card.
Alguém pode me ajudar???
Desde já agradeço.quarta-feira, 27 de agosto de 2008 14:49
Respostas
-
brother, então funciona similar ao controle de produtos, onde os tipos são: vale transporte, estudante, idoso etc.
vc deve criar as tabelas, minha simples sugestão:
01 - tabela SmartsCards, com os campos:
- ID_SC (Código do Smart Card); Inteiro longo
- NM_SC ( Descriçao/Tipo do Smart Card, como: vale transporte, deficiente, idoso, etc.); Texto
- SC_SC (Saldo Créditos do Smart Card); Tipo Moeda, Formato Padrão, 2 Casas decimais, Valor padrão 0
02 - tabela Movimento, com os campos:
- ID_MV (Código do movimento) pode ser tipo auto-numeração;
- DE_MV (Data Emissão) tipo Data, formato dd/mm/yy;
- TM_MV (Tipo do movimento: (E)Entrada ou (S)Saída, tipo Texto, vc pode fazer uma combo com uma lista de valores;
- SC_MV (O Smart Card que sofrerá as entradas ou saídas, chave estrangeira da tabela SmartsCards, tipo inteiro longo;
- NC_MV (Número/quantidade de créditos do movimento) tipo Tipo Moeda, Formato Padrão, 2 Casas decimais;
Agora, é so criar as consultas e forms em cima das tabelas e mandar ver;
Cleverson
quarta-feira, 3 de setembro de 2008 22:22 -
brother, então faz assim:
01 - tabela Lote, com os campos:
- ID_LT (Código Lote); Inteiro longo;
- DL_LT (Data Lote); Data;
- NF_LT (NF Lote); Tipo inteiro, Formato "000.000";
- QTE_LT (Quantidade de Smarts Cards) Tipo Padrão, 0 casas decimais;
- SD_LT (Saldo do Lote) Tipo Padrão, 0 casas decimais.
02 - tabela Tipo Cartão, com os campos:
- ID_TC (Código); Inteiro longo;
- NM_TC (Nome Tipo Cartão) vales transportes, estudante, idoso, etc. Texto;
- SD_TC (Saldo Tipo Cartão) Tipo Padrão, 0 casas decimais.
02 - tabela Movimento, com os campos:
- ID_MV (Código do movimento) pode ser tipo auto-numeração;
- DE_MV (Data Emissão) tipo Data, formato dd/mm/yy;
- LT_MV (Lote do movimento) Inteiro Longo;
- TC_MV (Tipo do Cartão) Inteiro longo;
- QTE_MV (Quantidade de crédito) Tipo Padrão, 0 casas decimais;
onde:
Lote: registras as entradas dos Smarts cards e atualiza o saldo;
Tipo Cartão: Cadastra os tipo de cartão para saídas;
Movimento: registra as saídas por tipo de cartão e atualiza o saldo;
dá uma analisada.
Valeu
quinta-feira, 4 de setembro de 2008 15:04 -
Caro Marco,
Basicamente teremos 03 forms, sendo 02 montados somente com as tabelas, Lote e TipoCartão, e o terceiro, Movimento, que vc montará sobre a consulta abaixo:
SELECT [tb_movimento].[ID_MV], [tb_movimento].[DE_MV], [tb_movimento].[LT_MV], [tb_movimento].[TC_MV], [tb_movimento].[QTE_MV], [tb_lote].[SD_LT], [tb_tipo_cartao].[SD_TC] FROM ([tb_tipo_cartao] INNER JOIN ([tb_lote] INNER JOIN [tb_movimento] ON [tb_lote].[ID_LT] =[tb_movimento].[LT_MV]) ON [tb_tipo_cartao].[ID_TC] =[tb_movimento].[TC_MV])
Ainda no form Movimento, cole os seguinte eventos no campo QTE_MV:
Private Sub QTE_MV_BeforeUpdate(Cancel As Integer)
If IsNull(LT_MV) Then
MsgBox "Informe o Lote"
DoCmd.CancelEvent
Exit Sub
End If
If IsNull(TC_MV) Then
MsgBox "Informe o Cartão"
DoCmd.CancelEvent
Exit Sub
End IfIf [QTE_MV] <= 0 Then
MsgBox "A quantidade deve ser maior que zero", vbInformation, "Sistema Smart Card"
DoCmd.CancelEvent
Exit Sub
End If
If IsNull(QTE_MV) Then
MsgBox "A quantidade não pode ser nula"
DoCmd.CancelEvent
Exit Sub
End IfIf [QTE_MV] > [SD_LT] Then
MsgBox "Cartão com saldo insuficiente! Temos somente " & [SD_LT] & " créditos!", vbCritical, "Sistema Smart Card"
DoCmd.CancelEvent ' Cancelar o Evento, ou seja não permitir a venda
Exit Sub ' Cair fora e não processar o restante da procedureEnd If
' 02 - Após Atualizar:
Private Sub QTE_MV_AfterUpdate()
If QTE_MV > 0 Then
SD_LT = SD_LT - QTE_MV
SD_TC = SD_TC + QTE_MVElse
Exit Sub
End If
End SubJá no form Lote, também cole os seguintes códigos nos eventos do campo QTE_LT:
'1 - Antes de atualizar
Private Sub QTE_LT_BeforeUpdate(Cancel As Integer)
If [QTE_LT] <= 0 Then
MsgBox "Quantidade do Lote deve ser maior que zero", vbInformation, "Smart Card - Estoque"
DoCmd.CancelEvent
Exit Sub
End If
If IsNull(QTE_LT) Then
MsgBox "Quantidade do Lote deve ser maior que zero"
DoCmd.CancelEvent
Exit Sub
End IfEnd Sub
'2 - Após Atualizar
Private Sub QTE_LT_AfterUpdate()
If QTE_LT > 0 Then
[SD_LT] = [SD_LT] + [QTE_LT]
Else
Exit Sub
End If
End SubBem, para testar as entradas e saídas alimente primeiro os Lotes e Tipos de Cartão e por último o Movimento.
Monte e faça os testes.
Valeu
visite:
segunda-feira, 8 de setembro de 2008 22:42 -
Muito obrigado meeesmo pela ajuda.sexta-feira, 19 de setembro de 2008 11:21
Todas as Respostas
-
brother,
Se entendi vc deseja controlar o movimento de vales-transportes?
Com que transações são alimentadas as entradas?
Poderia dar mais detalhes.
Cleverson
terça-feira, 2 de setembro de 2008 21:43 -
Bom na realidade, nos smarts cards são inseridos crédito pra serem utilizados como se fossem um cartão telefônico. O que eu estou querendo controlar é o estoque desses smarts cards sendo que, ele entra como smart card no estoque e sai de diversos modos: vale transporte, estudante, idoso, deficiente, etc.
O que desejo é ter como saber quantos smarts cards de vale transporte, estudantes, idosos e etc foram emitidos controlando o estoque para que eu possa saber quando comprar uma próxima remessa de smarts cards.
Agradeço antecipadamente pela ajuda.quarta-feira, 3 de setembro de 2008 13:01 -
brother, então funciona similar ao controle de produtos, onde os tipos são: vale transporte, estudante, idoso etc.
vc deve criar as tabelas, minha simples sugestão:
01 - tabela SmartsCards, com os campos:
- ID_SC (Código do Smart Card); Inteiro longo
- NM_SC ( Descriçao/Tipo do Smart Card, como: vale transporte, deficiente, idoso, etc.); Texto
- SC_SC (Saldo Créditos do Smart Card); Tipo Moeda, Formato Padrão, 2 Casas decimais, Valor padrão 0
02 - tabela Movimento, com os campos:
- ID_MV (Código do movimento) pode ser tipo auto-numeração;
- DE_MV (Data Emissão) tipo Data, formato dd/mm/yy;
- TM_MV (Tipo do movimento: (E)Entrada ou (S)Saída, tipo Texto, vc pode fazer uma combo com uma lista de valores;
- SC_MV (O Smart Card que sofrerá as entradas ou saídas, chave estrangeira da tabela SmartsCards, tipo inteiro longo;
- NC_MV (Número/quantidade de créditos do movimento) tipo Tipo Moeda, Formato Padrão, 2 Casas decimais;
Agora, é so criar as consultas e forms em cima das tabelas e mandar ver;
Cleverson
quarta-feira, 3 de setembro de 2008 22:22 -
Valeu Cleverson, mas talvez eu não tenha me expressado direito.
É o seguinte:
Recebo um lote de smart card. Por exemplo : 5.000 smarts cards no dia 01/09/2008 com Nota Fiscal 123456.
E no dia 02/09/2008 emiti 10 smarts cards de Vale Transporte, 55 Estudante e 30 Idoso.
No dia 03/09/2008 emiti 18 smarts cards de Vale Transporte, 75 Estudante e 0 Idoso.
O que eu pretendo é controlar o estoque de uma forma q eu tb saiba o quanto está saindo por cada tipo de cartão.
Peço desculpas pela minha dificuldade pq eu mauseio há pouco com access e estou precisando desenvolver esse Banco de Dados.
Agradeço antecipadamente.quinta-feira, 4 de setembro de 2008 14:13 -
brother, então faz assim:
01 - tabela Lote, com os campos:
- ID_LT (Código Lote); Inteiro longo;
- DL_LT (Data Lote); Data;
- NF_LT (NF Lote); Tipo inteiro, Formato "000.000";
- QTE_LT (Quantidade de Smarts Cards) Tipo Padrão, 0 casas decimais;
- SD_LT (Saldo do Lote) Tipo Padrão, 0 casas decimais.
02 - tabela Tipo Cartão, com os campos:
- ID_TC (Código); Inteiro longo;
- NM_TC (Nome Tipo Cartão) vales transportes, estudante, idoso, etc. Texto;
- SD_TC (Saldo Tipo Cartão) Tipo Padrão, 0 casas decimais.
02 - tabela Movimento, com os campos:
- ID_MV (Código do movimento) pode ser tipo auto-numeração;
- DE_MV (Data Emissão) tipo Data, formato dd/mm/yy;
- LT_MV (Lote do movimento) Inteiro Longo;
- TC_MV (Tipo do Cartão) Inteiro longo;
- QTE_MV (Quantidade de crédito) Tipo Padrão, 0 casas decimais;
onde:
Lote: registras as entradas dos Smarts cards e atualiza o saldo;
Tipo Cartão: Cadastra os tipo de cartão para saídas;
Movimento: registra as saídas por tipo de cartão e atualiza o saldo;
dá uma analisada.
Valeu
quinta-feira, 4 de setembro de 2008 15:04 -
Vlw Cleverson.Mas vou lhe abusar mais um pouco.Como faço agora para que as informações do saldo sejam atualizadas.Tenho q fazer consultas com relacionamentos.Como eu falei, estou iniciando no processo de banco de dados.Agradeço a ajuda de todos.sexta-feira, 5 de setembro de 2008 19:14
-
Caro Marco,
Basicamente teremos 03 forms, sendo 02 montados somente com as tabelas, Lote e TipoCartão, e o terceiro, Movimento, que vc montará sobre a consulta abaixo:
SELECT [tb_movimento].[ID_MV], [tb_movimento].[DE_MV], [tb_movimento].[LT_MV], [tb_movimento].[TC_MV], [tb_movimento].[QTE_MV], [tb_lote].[SD_LT], [tb_tipo_cartao].[SD_TC] FROM ([tb_tipo_cartao] INNER JOIN ([tb_lote] INNER JOIN [tb_movimento] ON [tb_lote].[ID_LT] =[tb_movimento].[LT_MV]) ON [tb_tipo_cartao].[ID_TC] =[tb_movimento].[TC_MV])
Ainda no form Movimento, cole os seguinte eventos no campo QTE_MV:
Private Sub QTE_MV_BeforeUpdate(Cancel As Integer)
If IsNull(LT_MV) Then
MsgBox "Informe o Lote"
DoCmd.CancelEvent
Exit Sub
End If
If IsNull(TC_MV) Then
MsgBox "Informe o Cartão"
DoCmd.CancelEvent
Exit Sub
End IfIf [QTE_MV] <= 0 Then
MsgBox "A quantidade deve ser maior que zero", vbInformation, "Sistema Smart Card"
DoCmd.CancelEvent
Exit Sub
End If
If IsNull(QTE_MV) Then
MsgBox "A quantidade não pode ser nula"
DoCmd.CancelEvent
Exit Sub
End IfIf [QTE_MV] > [SD_LT] Then
MsgBox "Cartão com saldo insuficiente! Temos somente " & [SD_LT] & " créditos!", vbCritical, "Sistema Smart Card"
DoCmd.CancelEvent ' Cancelar o Evento, ou seja não permitir a venda
Exit Sub ' Cair fora e não processar o restante da procedureEnd If
' 02 - Após Atualizar:
Private Sub QTE_MV_AfterUpdate()
If QTE_MV > 0 Then
SD_LT = SD_LT - QTE_MV
SD_TC = SD_TC + QTE_MVElse
Exit Sub
End If
End SubJá no form Lote, também cole os seguintes códigos nos eventos do campo QTE_LT:
'1 - Antes de atualizar
Private Sub QTE_LT_BeforeUpdate(Cancel As Integer)
If [QTE_LT] <= 0 Then
MsgBox "Quantidade do Lote deve ser maior que zero", vbInformation, "Smart Card - Estoque"
DoCmd.CancelEvent
Exit Sub
End If
If IsNull(QTE_LT) Then
MsgBox "Quantidade do Lote deve ser maior que zero"
DoCmd.CancelEvent
Exit Sub
End IfEnd Sub
'2 - Após Atualizar
Private Sub QTE_LT_AfterUpdate()
If QTE_LT > 0 Then
[SD_LT] = [SD_LT] + [QTE_LT]
Else
Exit Sub
End If
End SubBem, para testar as entradas e saídas alimente primeiro os Lotes e Tipos de Cartão e por último o Movimento.
Monte e faça os testes.
Valeu
visite:
segunda-feira, 8 de setembro de 2008 22:42 -
Muito obrigado meeesmo pela ajuda.sexta-feira, 19 de setembro de 2008 11:21