Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Validade após vencimento #307

Closed
llatsch opened this issue Feb 1, 2021 · 19 comments
Closed

Validade após vencimento #307

llatsch opened this issue Feb 1, 2021 · 19 comments
Assignees
Labels
bug Algo não está funcionando como deveria. vencimento dúvidas e questões relacionadas à funcionalidade de cobrança com vencimento (juras, multa, etc...)
Projects

Comments

@llatsch
Copy link

llatsch commented Feb 1, 2021

Caso um pagamento tenha a data de validade finalizando em um sábado, não pode ser pago na segunda?
Por exemplo:

Vencimento: 01/02
Validade após vencimento: 5 --> 06/02 (sábado)

A cobrança não pode ser paga segunda-feira, certo?

@ninrod ninrod self-assigned this Feb 4, 2021
@ninrod ninrod added the Documentação Issues relacionados à documentação, versões, melhorias de texto, etc... label Feb 4, 2021
@ninrod
Copy link
Member

ninrod commented Feb 4, 2021

A cobrança não pode ser paga segunda-feira, certo?

Correto. Validade após vencimento é sempre utilizando dias corridos.

@ninrod ninrod closed this as completed Feb 4, 2021
@latrevisani
Copy link

E no caso da data de vencimento cair num sábado e o prazo de validade for de 1 dia? Como proceder nesse caso, já que a validade seria até domingo, mas é possível pagar na segunda por causa da data de vencimento?

@ninrod
Copy link
Member

ninrod commented Feb 5, 2021

@latrevisani, boa noite.

E no caso da data de vencimento cair num sábado e o prazo de validade for de 1 dia? Como proceder nesse caso, já que a validade seria até domingo, mas é possível pagar na segunda por causa da data de vencimento?

Procederia não atribuindo uma validadeAposVencimento tão curta.

@latrevisani
Copy link

@ninrod , eu entendo que há alternativas para evitar tais problemas. Mas como é o cliente que manda esses atributos, isso pode acontecer. Por exemplo, a situação abaixo:
Um vendedor parcela vendas em 12 parcelas mensais a serem pagas no dia 1 de cada mês. Ele não define juros nem multa, pois, caso a parcela vença, será preciso o devedor entrar em contato para renegociar o restante. Com isso a validadeAposVencimento será zero, pois a API permite esse valor. É a prática do vendedor.
O pagador paga religiosamente todo dia 1, mas em um deles, que caiu num sábado, ele esqueceu e foi pagar na segunda. Nesse caso, o PSP não aceitaria receber o pagamento pq está vencido tanto a data quanto a validadeAposVencimento. Porem, a legislação permitiria que ele pagasse na segunda sem multa.
Como proceder nesse caso?

@renatofrota
Copy link

@latrevisani , eu acho que o @ninrod se confundiu na última resposta.

Se o vencimento cair no sábado, seja o validadeAposVencimento 0 ou 1, o QR Code dinâmico relativo a essa cobrança deve ser pagável na segunda-feira de qualquer forma, por força de lei (Art. 1º Lei 7.089/1983), que obriga que o título com vencimento em dia não útil seja acatado no primeiro dia útil subsequente (sem multa ou juros, inclusive).

@ninrod
Copy link
Member

ninrod commented Feb 5, 2021

@latrevisani , eu acho que o @ninrod se confundiu na última resposta.

Não, é isso mesmo que eu disse. Ele não fica pagável, mesmo. A única solução que entendo que haveria para não cairmos nesse corner case seria forçar um validadeApósVencimento mínimo. 3 dias, por exemplo, já evitaria esse corner case.

O pagador paga religiosamente todo dia 1, mas em um deles, que caiu num sábado, ele esqueceu e foi pagar na segunda. Nesse caso, o PSP não aceitaria receber o pagamento pq está vencido tanto a data quanto a validadeAposVencimento. Porem, a legislação permitiria que ele pagasse na segunda sem multa.
Como proceder nesse caso?

Concordo. Vou falar com o DECEM para ver se podemos incluir esse valor mínimo na 2.2.1.

@ninrod ninrod reopened this Feb 5, 2021
@ninrod ninrod added bug Algo não está funcionando como deveria. vencimento dúvidas e questões relacionadas à funcionalidade de cobrança com vencimento (juras, multa, etc...) and removed Documentação Issues relacionados à documentação, versões, melhorias de texto, etc... labels Feb 5, 2021
@ninrod ninrod added this to inbox in 2.2.1 Feb 5, 2021
@renatofrota
Copy link

@latrevisani , eu acho que o @ninrod se confundiu na última resposta.

Não, é isso mesmo que eu disse. Ele não fica pagável, mesmo. A única solução que entendo que haveria para não cairmos nesse corner case seria forçar um validadeApósVencimento mínimo. 3 dias, por exemplo, já evitaria esse corner case.

O pagador paga religiosamente todo dia 1, mas em um deles, que caiu num sábado, ele esqueceu e foi pagar na segunda. Nesse caso, o PSP não aceitaria receber o pagamento pq está vencido tanto a data quanto a validadeAposVencimento. Porem, a legislação permitiria que ele pagasse na segunda sem multa.
Como proceder nesse caso?

Concordo. Vou falar com o DECEM para ver se podemos incluir esse valor mínimo na 2.2.1.

Não evitaria se o vencimento fosse no sábado que antecede o carnaval (já que a segunda-feira subsequente é feriado bancário, sendo o primeiro dia útil apenas a quarta-feira) ou uma quinta-feira feriado de ano novo (onde normalmente seria decretado feriado bancário na sexta-feira, sendo segunda-feira o primeiro dia útil subsequente), casos onde seriam necessários 4 dias.

No meu ponto de vista, a solução é simples:

dataLimite = [ max ( (vencimento + validadeAposVencimento), vencimentoEfetivo + validadeAposVencimento ) ]

onde "vencimentoEfetivo" = o próprio vencimento quando dia útil ou o primeiro dia útil subsequente.

@ninrod
Copy link
Member

ninrod commented Feb 5, 2021

Não evitaria se o vencimento fosse no sábado que antecede o carnaval (já que a segunda-feira subsequente é feriado bancário, sendo o primeiro dia útil apenas a quarta-feira) ou uma quinta-feira feriado de ano novo (onde normalmente seria decretado feriado bancário na sexta-feira, sendo segunda-feira o primeiro dia útil subsequente), casos onde seriam necessários 4 dias

Isso mesmo, talvez 5 dias de seja um bom limite mínimo.

@renatofrota
Copy link

Bom mesmo seria corrigir esse gap e permitir o valor zero para o validadeAposVencimento com a aplicação da fórmula sugerida acima (que eu entendo ser como funciona nos boletos).

@rubenskuhl
Copy link

A gente usa na nossa emissão de boletos 5 dias, mas para compensar tanto feriados quanto a recepção via agentes lotéricos.

@ninrod
Copy link
Member

ninrod commented Feb 9, 2021

Bom mesmo seria corrigir esse gap e permitir o valor zero para o validadeAposVencimento com a aplicação da fórmula sugerida acima (que eu entendo ser como funciona nos boletos).

Usaremos essa semântica. ValidadeAposVencimento aplica-se sempre à data de vencimento ajustada por feriados e finais de semana.

Exemplo:

dataDeVencimento: 2020-12-25 (sexta-feira)
ValidadeAposVencimento: 0

consequência: QR pode ser pago até dia 2020-12-28 (segunda-feira)

@renatofrota
Copy link

renatofrota commented Feb 9, 2021

Bom mesmo seria corrigir esse gap e permitir o valor zero para o validadeAposVencimento com a aplicação da fórmula sugerida acima (que eu entendo ser como funciona nos boletos).

Usaremos essa semântica. ValidadeAposVencimento aplica-se sempre à data de vencimento ajustada por feriados e finais de semana.

Exemplo:

dataDeVencimento: 2020-12-25 (sexta-feira)
ValidadeAposVencimento: 0

consequência: QR pode ser pago até dia 2020-12-28 (segunda-feira)

Certo. Então, nesse caso, se validadeAposVencimento for 1 e o vencimento 2020-12-25 (sexta-feira, feriado) será pagável até terça-feira, 2020-12-29.

Há alguma razão em particular para não se dar a possibilidade de validadeAposVencimento ser calculada a partir do vencimento original e o fato de o vencimento ser um dia não útil permitir o pagamento no primeiro dia útil subsequente como caráter de exceção e independente do valor de validadeAposVencimento?

Pergunto isso pois seria justamente uma forma de garantir que o pagamento será recebido dentro do intervalo "data de vencimento + X dias", tal qual o nome do campo se propõe, enquanto a forma sugerida acaba dando margem para um pagamento acatado 4 dias depois do vencimento (e sendo o segundo dia útil subsequente, não o primeiro) enquanto o valor do campo é 1.

A semântica, no meu ponto de vista, ficaria até bastante simples:

"O campo validadeAposVencimento aplica-se sobre o vencimento original do boleto e determina o número de dias corridos, úteis ou não, pelos quais a cobrança ainda poderá ser paga, após vencida".

Não há sequer necessidade de informar o caráter de exceção, pois ele é dado por força de lei e não pelo regulamento do próprio Pix (e na eventual mudança da lei, não seria necessário atualizar documentação nenhuma e o caráter de exceção deixaria de existir). Ou, se preferirem forçar a padronização (por segurança), inclui-se a exceção criada pela lei do dia útil na própria documentação:

"O campo validadeAposVencimento aplica-se sobre o vencimento original do boleto e determina o número de dias corridos, úteis ou não, pelos quais a cobrança ainda poderá ser paga, após vencida. Este valor não se sobrepõe à possibilidade de pagamento em data posterior ao vencimento original por força de lei como, por exemplo, um vencimento determinado para um dia não útil, que deverá ser acatado no primeiro dia útil subsequente mesmo que exceda o número de dias definido neste campo".

@ninrod
Copy link
Member

ninrod commented Feb 10, 2021

Certo. Então, nesse caso, se validadeAposVencimento for 1 e o vencimento 2020-12-25 (sexta-feira, feriado) será pagável até terça-feira, 2020-12-29.

Exatamente.

Há alguma razão em particular para não se dar a possibilidade de validadeAposVencimento ser calculada a partir do vencimento original e o fato de o vencimento ser um dia não útil permitir o pagamento no primeiro dia útil subsequente como caráter de exceção e independente do valor de validadeAposVencimento?

Pergunto isso pois seria justamente uma forma de garantir que o pagamento será recebido dentro do intervalo "data de vencimento + X dias", tal qual o nome do campo se propõe, enquanto a forma sugerida acaba dando margem para um pagamento acatado 4 dias depois do vencimento (e sendo o segundo dia útil subsequente, não o primeiro) enquanto o valor do campo é 1.

A semântica, no meu ponto de vista, ficaria até bastante simples:

"O campo validadeAposVencimento aplica-se sobre o vencimento original do boleto e determina o número de dias corridos, úteis ou não, pelos quais a cobrança ainda poderá ser paga, após vencida".

Não há sequer necessidade de informar o caráter de exceção, pois ele é dado por força de lei e não pelo regulamento do próprio Pix (e na eventual mudança da lei, não seria necessário atualizar documentação nenhuma e o caráter de exceção deixaria de existir). Ou, se preferirem forçar a padronização (por segurança), inclui-se a exceção criada pela lei do dia útil na própria documentação:

"O campo validadeAposVencimento aplica-se sobre o vencimento original do boleto e determina o número de dias corridos, úteis ou não, pelos quais a cobrança ainda poderá ser paga, após vencida. Este valor não se sobrepõe à possibilidade de pagamento em data posterior ao vencimento original por força de lei como, por exemplo, um vencimento determinado para um dia não útil, que deverá ser acatado no primeiro dia útil subsequente mesmo que exceda o número de dias definido neste campo".

@renatofrota , não entendi se há alguma diferença entre o que eu e você estamos falando. Entendi que o efeito é o mesmo. Melhor explicar com exemplos.

Estamos usando exatamente a mesma semântica da fórmula dataLimite = [ max ( (vencimento + validadeAposVencimento), vencimentoEfetivo + validadeAposVencimento ) ]. Só não vamos explicar em "modo fórmula".

@renatofrota
Copy link

renatofrota commented Feb 10, 2021

@ninrod

Situação:

Cobrança com vencimento: 2020-12-25 (sexta-feira, feriado).

A semântica que você propôs:

"validadeAposVencimento aplica-se sempre à data de vencimento ajustada por feriados e finais de semana."

Resultados:

validadeAposVencimento = 0

Pagamento na sexta-feira: aceito
Pagamento no sábado: aceito
Pagamento no domingo: aceito
Pagamento na segunda-feira: aceito
Pagamento na terça-feira: recusado

validadeAposVencimento = 1

Pagamento na sexta-feira: aceito
Pagamento no sábado: aceito
Pagamento no domingo: aceito
Pagamento na segunda-feira: aceito
Pagamento na terça-feira: aceito <- esse é meu questionamento...

São 4 dias corridos e DOIS dias úteis após vencimento apesar do valor estar definido como 1. Muito fora da intenção. O cliente já tem o direito a pagar na segunda-feira, 3 dias após o vencimento, por que essa "tolerância" de 1 dia para pagamento após vencimento em situações mais corriqueiras deve interferir aqui e abrir espaço para um pagamento QUATRO DIAS após vencimento?

E essa semântica não atende a fórmula dataLimite = [ max ( (vencimento + validadeAposVencimento), vencimentoEfetivo + validadeAposVencimento ) ]

A semântica que eu proponho (e que atende à formula):

"O campo validadeAposVencimento aplica-se sobre o vencimento original do boleto e determina o número de dias corridos, úteis ou não, pelos quais a cobrança ainda poderá ser paga, após vencida". (opcionalmente com o adendo: "Este valor não se sobrepõe à possibilidade de pagamento em data posterior ao vencimento original por força de lei como, por exemplo, um vencimento determinado para um dia não útil, que deverá ser acatado no primeiro dia útil subsequente mesmo que exceda o número de dias definido neste campo").

Resultados:

validadeAposVencimento = 0

Pagamento na sexta-feira: aceito
Pagamento no sábado: aceito
Pagamento no domingo: aceito
Pagamento na segunda-feira: aceito
Pagamento na terça-feira: recusado

validadeAposVencimento = 1

Pagamento na sexta-feira: aceito
Pagamento no sábado: aceito
Pagamento no domingo: aceito
Pagamento na segunda-feira: aceito
Pagamento na terça-feira: recusado <- continua recusado

Aqui, a terça-feira excede sexta-feira + 1 = sábado e, ao mesmo tempo, excede a segunda-feira, que é a data limite determinada por força de lei, devido à sexta-feira ser feriado. Assim, o campo validadeAposVencimento se torna muito mais útil. Do contrário (sua semântica proposta - e que precisa de outra fórmula), o efeito prático do campo é tão inesperado (sem querer ofender, quase inútil) que praticamente força o uso de valor para validadeAposVencimento em 0 e um ajuste manual muito mais criterioso e trabalhoso para o EC na hora de definir as datas de vencimento mês a mês para serviços com recorrência, carnês, etc.

@ninrod
Copy link
Member

ninrod commented Feb 10, 2021

Ok, @renatofrota, ficaram claras as diferenças.

@ninrod
Copy link
Member

ninrod commented Feb 10, 2021

Aqui, a terça-feira excede sexta-feira + 1 = sábado e, ao mesmo tempo, excede a segunda-feira, que é a data limite determinada por força de lei, devido à sexta-feira ser feriado. Assim, o campo validadeAposVencimento se torna muito mais útil. Do contrário (sua semântica proposta - e que precisa de outra fórmula), o efeito prático do campo é tão inesperado (sem querer ofender, quase inútil) que praticamente força o uso de valor para validadeAposVencimento em 0 e um ajuste manual muito mais criterioso e trabalhoso para o EC na hora de definir as datas de vencimento mês a mês para serviços com recorrência, carnês, etc.

Particularmente acho os dois modelos válidos e não tenho uma preferência, mas agradeço por indicar essa nuance, ajuda a tomar uma decisão mais informada. De qualquer maneira, a decisão caberá ao DECEM. Apresentarei os dois modelos, obrigado.

edit: devemos utilizar o segundo modelo:

Caso: Cobrança com vencimento: 2020-12-25 (sexta-feira, feriado).

Resultados:

validadeAposVencimento = 0

Pagamento na sexta-feira: aceito
Pagamento no sábado: aceito
Pagamento no domingo: aceito
Pagamento na segunda-feira: aceito
Pagamento na terça-feira: recusado

validadeAposVencimento = 1

Pagamento na sexta-feira: aceito
Pagamento no sábado: aceito
Pagamento no domingo: aceito
Pagamento na segunda-feira: aceito
Pagamento na terça-feira: recusado <- continua recusado

@renatofrota
Copy link

@ninrod

Obrigado pela atenção. Só uma correção a respeito do que eu falei antes. Eu usei "max" onde deveria ser "min" na fórmula. Corrigindo:

dataLimite = [ min ( (vencimento + validadeAposVencimento), vencimentoEfetivo + validadeAposVencimento ) ]

De qualquer forma, talvez haja uma fórmula mais simples de explicar. Mas fico feliz que minha sugestão tenha sido aceita. 😃

@ninrod
Copy link
Member

ninrod commented Feb 10, 2021

Obrigado pelas contribuições.

Acho que vou complementar a explicação com os exemplos mesmo. Fica mais didático.

@ninrod ninrod moved this from inbox to Fazendo in 2.2.1 Feb 10, 2021
@ninrod
Copy link
Member

ninrod commented Feb 10, 2021

Prezados,

já está no master.

@ninrod ninrod closed this as completed Feb 10, 2021
@ninrod ninrod moved this from Fazendo to Feito in 2.2.1 Feb 10, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Algo não está funcionando como deveria. vencimento dúvidas e questões relacionadas à funcionalidade de cobrança com vencimento (juras, multa, etc...)
Projects
No open projects
2.2.1
Feito
Development

No branches or pull requests

5 participants