locked
Controle de Estoque RRS feed

  • 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 If

        If [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 If

        If [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  procedure

        End 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_MV

    Else

        Exit Sub
       
    End If


    End Sub

     

    Já 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 If

    End 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 Sub

     

    Bem, 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 If

        If [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 If

        If [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  procedure

        End 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_MV

    Else

        Exit Sub
       
    End If


    End Sub

     

    Já 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 If

    End 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 Sub

     

    Bem, 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