MaximoAccess

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

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração


Participe do fórum, é rápido e fácil

MaximoAccess

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

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração

MaximoAccess

Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

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

2 participantes

    Contas a Receber - Parcelamento.

    avatar
    rogerparana
    Novato
    Novato

    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 10
    Registrado : 09/09/2012

    Contas a Receber - Parcelamento. Empty Contas a Receber - Parcelamento.

    Mensagem  rogerparana 8/7/2021, 23:54

    Olá a tds. Saudações!
    Estou desenvolvendo um BD cujo objetivo é um controle financeiro englobando contas a receber e a pagar.
    Meu problema  é o seguinte:

    Possuo 02 formas de recebimento:
    - Pagamento em apenas uma parcela  que pode ser 5, 7, 15, 21, 28, 30, 35, 42, 45, 60 e 75 dias após a data do recebimento;
    - Pagamento em 04 parcelas sendo 15 / 30 / 45 e 60 dias após a data do recebimento ou 30 / 45 / 60 e 75 dias após a data do recebimento

    Quando é uma parcela, eu consigo gerar a parcela normalmente, porém quando entra na segunda opção não consigo gerar as parcelas com a diferença de dias entre as parcelas (15 dias a partir da data de recebimento na primeira situação, repetindo os 15 dias entre as parcelas e 30 dias na segunda situação, porém, com intervalos de 15 dias entre as parcelas;

    Estou usando este código para tentar solucionar mas sem sucesso (pesquisado aqui do site) :

    Dim db As Database, rs As Recordset
       Dim ValParc, valdes, valmen As Currency, i As Byte
       Dim data As Date
       Set db = CurrentDb()
       Set rs = db.OpenRecordset("Tbl_Receitas") 'Abre tbl_Parcelas
       ValParc = Me.curValor 'Valor Recebido
       
       For i = 1 To Me.bytParcelas  'Insere as Parcela na Tabela
           rs.AddNew
           rs("IdPedido") = Me.IdPedido
           rs("ped_DatadoPedido") = DatadoPedido
           rs("ped_Cliente") = CLIENTE
           rs("ped_Acabamento") = ACABAMENTO
           rs("ped_TotalPedido") = TotalAreceber
           rs("ValorRecebido") = ValParc
           rs("qtdParcelas") = i
           rs("ped_Serviço") = Serviço
           rs("RecebidoPor") = RecebidoPor
           
           'Calcula as datas de Vencto através da função DateAdd()
           rs("DataRecebimento") = DateAdd("m", i - 1, Me.DataRecebimento)
           rs.Update
       Next
                   
       rs.Close
       db.Close

    As parcelas são geradas mas com intervalo de 30 dias.
    Alguém poderia me auxiliar:
    avatar
    Anslu
    Intermediário
    Intermediário

    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 90
    Registrado : 11/01/2018

    Contas a Receber - Parcelamento. Empty Re: Contas a Receber - Parcelamento.

    Mensagem  Anslu 12/7/2021, 01:34

    Boa noite!
    tente adaptar ao seu sistema.

    de 7 em 7 dias

    Set db = CurrentDb()
       Set rs = db.OpenRecordset("tbl_LancChequeDet") 'Abre Tbl_ContasAreceber
           ValorCheque = Me.txtTotalRecebe / Me.QtdeParcelas 'Valor de cada Parcela
           ProximaData = [txtDt_1Parcela]  'inicaliza
           
       For I = 1 To Me.QtdeParcelas  'Insere as Parcela na Tbl_ContasAreceber
           ProximaData = DateAdd("d", 7, ProximaData) 'adiciona 7 dias
           rs.AddNew
           rs("Cod_Lançamento") = Me.Cod_Lance
           rs("NumCheque") = Right("000" & I, 3) & "/" & Right("000" & Me.QtdeParcelas, 3)
           rs("ValorCheque") = Me.txtTotalRecebe / Me.QtdeParcelas
           rs("VencCheque") = ProximaData 'Calcula as datas de Vencto através da função DateAdd()
           rs("DataLanc") = Me.txtDataLanc
           rs("Taxa") = Me.txtTaxa
           rs.Update
       Next
       rs.Close
       db.Close

    de 15 em 15 dias

    Set db = CurrentDb()
       Set rs = db.OpenRecordset("tbl_LancChequeDet") 'Abre Tbl_ContasAreceber
           ValorCheque = Me.txtTotalRecebe / Me.QtdeParcelas 'Valor de cada Parcela
           ProximaData = [txtDt_1Parcela]  'inicaliza
           
       For I = 1 To Me.QtdeParcelas  'Insere as Parcela na Tbl_ContasAreceber
           ProximaData = DateAdd("d", 15, ProximaData) 'adiciona 15 dias
           rs.AddNew
           rs("Cod_Lançamento") = Me.Cod_Lance
           rs("NumCheque") = Right("000" & I, 3) & "/" & Right("000" & Me.QtdeParcelas, 3)
           rs("ValorCheque") = Me.txtTotalRecebe / Me.QtdeParcelas
           rs("VencCheque") = ProximaData 'Calcula as datas de Vencto através da função DateAdd()
           rs("DataLanc") = Me.txtDataLanc
           rs("Taxa") = Me.txtTaxa
           rs.Update
       Next
       rs.Close
       db.Close

    de 30 em 30 dias

    Set db = CurrentDb()
       Set rs = db.OpenRecordset("tbl_LancChequeDet") 'Abre Tbl_ContasAreceber
           ValorCheque = Me.txtTotalRecebe / Me.QtdeParcelas 'Valor de cada Parcela
       
       For I = 1 To Me.QtdeParcelas  'Insere as Parcela na Tbl_ContasAreceber
           rs.AddNew
           rs("Cod_Lançamento") = Me.Cod_Lance
           rs("NumCheque") = Right("000" & I, 3) & "/" & Right("000" & Me.QtdeParcelas, 3)
           rs("ValorCheque") = Me.txtTotalRecebe / Me.QtdeParcelas
           rs("VencCheque") = DateAdd("m", I - 1, Me.txtDt_1Parcela) 'Calcula as datas de Vencto através da função DateAdd()
           rs("DataLanc") = Me.txtDataLanc
           rs("Taxa") = Me.txtTaxa
           rs.Update
       Next
       rs.Close
       db.Close

    rogerparana gosta desta mensagem

    avatar
    rogerparana
    Novato
    Novato

    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 10
    Registrado : 09/09/2012

    Contas a Receber - Parcelamento. Empty Contas a Receber - Parcelamento.

    Mensagem  rogerparana 12/7/2021, 14:57

    Obrigado,  Anslu pela resposta.

    Eu "enjambrei" uma alternativa aqui. Não ficou muito profissional mas atende minha necessidade.
    Os primeiros intervalos que são diferentes (15 e 30 dias) eu tratei via textbox no form como nova data.
    A data de Pagamento + o intervalo de dias (15 ou 30) me traz a nova data.

    data 1 recebe novadata + 7 dias
    data 2 recebe Data 1 + 7 dias
    data 3 recebe data2 + 1 dia, totalizando os 15 dias de intervalo.
    Fiz os testes e funcionou.

           data1 = DateAdd("ww", i - 1, Me.NovaData)
           data2 = DateAdd("ww", i - 1, data1)
           data3 = DateAdd("d", i - 1, data2)
           rs("DataRecebimento") = data3
           rs.Update

    Vlw!!!
    avatar
    Anslu
    Intermediário
    Intermediário

    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 90
    Registrado : 11/01/2018

    Contas a Receber - Parcelamento. Empty Re: Contas a Receber - Parcelamento.

    Mensagem  Anslu 13/7/2021, 15:07

    Bom dia, nós que agradecemos!

      Data/hora atual: 18/9/2021, 18:04