MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

Obrigado

Administração do MaximoAccess

Dicas Ms Access, Exemplos Ms Access, Codigos VBA Ms Access, SQL Ms Access

    [Resolvido]Gerar parcelas com select case

    Compartilhe

    thiagonsilvaa
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 163
    Registrado : 12/01/2017

    [Resolvido]Gerar parcelas com select case

    Mensagem  thiagonsilvaa em 30/7/2018, 14:50

    Bom dia a todos !

    Me surgiu uma dúvida relacionada a um projeto que estou desenvolvendo.
    Estou utilizando o seguinte código, que encontrei aqui no fórum, para a geração de parcelas:

    Código:
    If Me.FormaPgto = "1" Then ' FORMA DE PAGAMENTO A VISTA
    Set db = CurrentDb()
        Set rs = db.OpenRecordset("cs_contasaReceber") 'Abre a tabela LC para lançamento dos dados
        ValorParcela = Me.txttotal / Me.parcelas
        For f = 1 To Me.parcelas  'Calcula o Loop
            'Campos e valores a serem preenchidos
            rs.AddNew
            rs("CodVenda") = Me.CodVenda
            rs("Vencimento") = DateAdd("m", f - 1, Me.DtVencimento)
            rs("valorparcela") = ValorParcela
            rs("FormaPgto") = Me.FormaPgto
            rs("Parcelas") = f 'Insere as parcelas no formato 01/10, 02/10, 03/10...
            rs("pagamento") = Date
            rs("valorpago") = ValorParcela
            rs("quitar") = -1
            rs.Update
            'Move para o Proximo
        Next
        'Termina e encerra as conexoes
        rs.Close
        db.Close
    End If
       
    Me.subContasareceber.Requery

    O mesmo repito para a forma de pagamento a prazo, cartão, etc.
    Como o próprio título do tópico diz, há alguma forma de reduzir/limpar esse código usando o select case ou alguma outra maneira a fim de gerar as parcelas de acordo com a forma de pagamento escolhida?

    Aguardo uma resposta.
    Gratidão.
    avatar
    Marco Messa
    Developer
    Developer

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 290
    Registrado : 28/06/2010

    Re: [Resolvido]Gerar parcelas com select case

    Mensagem  Marco Messa em 31/7/2018, 17:14

    Não testei, porém fiz rapidamente uma adaptação que você poderia fazer, apenas observando que no seu exemplo você diz que quer gerar parcelas mas o comentário do IF diz que é pagamento a vista.

    Crie uma Sub assim:

    Código:

    Sub GerarParcelas(CodVenda as Integer, FormaPgto As Integer, ValorTotal As Double, Parcelas As Integer, DtVencimento As Date)
       Dim ValorParcela As Double
       Set db = CurrentDb()
       Set rs = db.OpenRecordset("cs_contasaReceber") 'Abre a tabela LC para lançamento dos dados
       
       ValorParcela = ValorTotal / Parcelas
       
       For f = 1 To Parcelas 'Calcula o Loop
          'Campos e valores a serem preenchidos
          rs.AddNew
          rs("CodVenda") = CodVenda
          rs("Vencimento") = DateAdd("m", f - 1, DtVencimento)
          rs("valorparcela") = ValorParcela
          rs("FormaPgto") = FormaPgto
          rs("Parcelas") = f
          rs("pagamento") = Date
          rs("valorpago") = ValorParcela
          rs("quitar") = -1
          rs.Update
          'Move para o Proximo
       Next
       'Termina e encerra as conexoes
       rs.Close
       db.Close
    End Sub

    E utilize desta maneira:

    Código:

    Select Case Me.FormaPgto
       Case "1" ' FORMA DE PAGAMENTO A VISTA
          Call PagarAVista() ' Função inventada apenas para dar um exemplo
       Case "2" ' FORMA DE PAGAMENTO PARCELADO
          Call GerarParcelas(Me.CodVenda, Me.FormaPgto, Me.txttotal, Me.parcelas, Me.DtVencimento)
    End Select

    Me.subContasareceber.Requery


    .................................................................................
    Tea with me that I book your face [Você precisa estar registrado e conectado para ver esta imagem.]

    thiagonsilvaa
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 163
    Registrado : 12/01/2017

    Re: [Resolvido]Gerar parcelas com select case

    Mensagem  thiagonsilvaa em 31/7/2018, 19:49

    Boa tarde meu caro !
    Primeiramente, obrigado pela resposta.

    Em relação ao código que você mencionou, funcionou perfeitamente.
    Pelo que percebi, acredito que vou ter que criar várias subs né ? Pois existem N maneiras de um cliente pagar uma venda.

    Como por exemplo:
    1) Entrada (dinheiro,cartão) + Parcelas
    2) Entrada (dinheiro) + parcelas (cartão ou dinheiro)
    3) Todas as parcelas no dinheiro ou no cartão

    E assim por diante... Creio que será necessário então, a criação de cada sub correspondente, correto ?

    Abraços.
    avatar
    Marco Messa
    Developer
    Developer

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 290
    Registrado : 28/06/2010

    Re: [Resolvido]Gerar parcelas com select case

    Mensagem  Marco Messa em 31/7/2018, 20:04

    É o ideal separar em Subs pois assim você conseguiria chamar as mesmas em outras partes da aplicação.

    Em relação a parte de ter que criar uma pra cada forma de pagamento, isso depende de como elas se comportam, você pode fazer algo mais genérico para coisas parceladas, a menos que os valores de parcela sejam diferentes quando é em dinheiro, cheque ou cartão. Se os valores são os mesmos para parcelas, você pode utilizar a mesma função, pois a única coisa que mudaria seria o código do tipo de pagamento.

    No mesmo select case você consegue resolver isso, assim:

    Código:

    Select Case Me.FormaPgto
      Case "1" ' FORMA DE PAGAMENTO A VISTA
          Call PagarAVista() ' Função inventada apenas para dar um exemplo
      Case "2", "3" ' FORMA DE PAGAMENTO PARCELADO | 2 = Dinheiro / 3 = Cartão
          Call GerarParcelas(Me.CodVenda, Me.FormaPgto, Me.txttotal, Me.parcelas, Me.DtVencimento)
    End Select


    .................................................................................
    Tea with me that I book your face [Você precisa estar registrado e conectado para ver esta imagem.]

    thiagonsilvaa
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 163
    Registrado : 12/01/2017

    Re: [Resolvido]Gerar parcelas com select case

    Mensagem  thiagonsilvaa em 31/7/2018, 20:23

    Perfeito.

    E se no caso, por exemplo, o cliente desse uma entrada em dinheiro e parcelasse o restante no cartão ?
    avatar
    Marco Messa
    Developer
    Developer

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 290
    Registrado : 28/06/2010

    Re: [Resolvido]Gerar parcelas com select case

    Mensagem  Marco Messa em 31/7/2018, 20:38

    Não tenho muito Know How de sistemas financeiros, mas creio que você pode fazer um campo no seu formulário de parcelamento que definirá o valor de entrada, que abaterá do valor de txttotal e será incluído no banco na tabela respectiva.
    Até mesmo a Sub GerarParcelas pode ter um parâmetro chamado Entrada que irá abater do txttotal antes de parcelar.


    .................................................................................
    Tea with me that I book your face [Você precisa estar registrado e conectado para ver esta imagem.]

    thiagonsilvaa
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 163
    Registrado : 12/01/2017

    Re: [Resolvido]Gerar parcelas com select case

    Mensagem  thiagonsilvaa em 31/7/2018, 20:49

    Perfeito.

    Essa sub mencionada por você ajudou bastante !

    Vou utilizá-la em todos os campos referentes a esta questão, muito mais prático.

    Meu muito obrigado !!!

      Data/hora atual: 19/8/2018, 22:44