toulouse-maelis: n'expirer les factures sur panier qu'après qu'on soit sûr que plus aucun paiement ne peut avoir lieu (#76855) #226

Merged
nroche merged 2 commits from wip/76855-parsifal-max-payment-delay into main 2023-04-21 15:35:25 +02:00
4 changed files with 36 additions and 3 deletions

View File

@ -24,7 +24,7 @@ class Migration(migrations.Migration):
name='cancel_invoice_delay',
field=models.PositiveIntegerField(
default='30',
verbose_name="Délais de conservation des factures issues d'un panier (en minutes)",
verbose_name="Délai de conservation des factures issues d'un panier (en minutes)",
),
),
]

View File

@ -0,0 +1,19 @@
# Generated by Django 3.2.18 on 2023-04-21 12:20
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('toulouse_maelis', '0009_auto_20230417_1836'),
]
operations = [
migrations.AddField(
model_name='toulousemaelis',
name='max_payment_delay',
field=models.PositiveIntegerField(
default='20', verbose_name='Délai maximum pour payer une facture via Lingo (en minutes)'
),
),
]

View File

@ -83,7 +83,11 @@ class ToulouseMaelis(BaseResource, HTTPResource):
)
cancel_invoice_delay = models.PositiveIntegerField(
default='30',
verbose_name="Délais de conservation des factures issues d'un panier (en minutes)",
verbose_name="Délai de conservation des factures issues d'un panier (en minutes)",
)
max_payment_delay = models.PositiveIntegerField(
default='20',
verbose_name="Délai maximum pour payer une facture via Lingo (en minutes)",
)
category = 'Connecteurs métiers'
@ -296,7 +300,8 @@ class ToulouseMaelis(BaseResource, HTTPResource):
lingo_notification_date__isnull=True,
basket_generation_date__isnull=False,
maelis_cancel_notification_date__isnull=True,
created__lte=now() - datetime.timedelta(minutes=self.cancel_invoice_delay + 20),
created__lte=now()
- datetime.timedelta(minutes=(self.cancel_invoice_delay + self.max_payment_delay)),
)
for invoice in invoices:
invoice.cancel()

View File

@ -8791,6 +8791,7 @@ def test_cancel_basket_invoice_cron(activity_service, invoice_service, con, app,
params = {'basket_id': 'S10055641661'}
Link.objects.create(resource=con, family_id='1312', name_id='local')
assert con.cancel_invoice_delay == 30
assert con.max_payment_delay == 20
# invoice created on validate basket
freezer.move_to('2023-03-03 18:30:00')
@ -8843,6 +8844,7 @@ def test_cancel_basket_invoice_cron_keep_paid_invoices(
activity_service.add_soap_response('validateBasket', get_xml_file('R_validate_basket.xml'))
invoice_service.add_soap_response('readInvoices', get_xml_file('R_read_invoices_regie_109.xml'))
assert con.cancel_invoice_delay == 30
assert con.max_payment_delay == 20
# get a basket invoice
freezer.move_to('2023-03-03 18:30:00')
@ -8916,6 +8918,7 @@ def test_cancel_basket_invoice_cron_maelis_error(activity_service, invoice_servi
params = {'basket_id': 'S10055641661'}
Link.objects.create(resource=con, family_id='1312', name_id='local')
assert con.cancel_invoice_delay == 30
assert con.max_payment_delay == 20
# invoice created on validate basket
freezer.move_to('2023-03-03 18:30:00')
@ -8965,6 +8968,7 @@ def test_cancel_basket_invoice_on_get_baskets(activity_service, con, app, freeze
Link.objects.create(resource=con, family_id='1312', name_id='local')
url = get_endpoint('get-baskets')
assert con.cancel_invoice_delay == 30
assert con.max_payment_delay == 20
# invoice created on validate basket
freezer.move_to('2023-03-03 18:30:00')
@ -9438,6 +9442,7 @@ def test_invoice_if_cancelled(activity_service, invoice_service, con, app, freez
activity_service.add_soap_response('validateBasket', get_xml_file('R_validate_basket.xml'))
invoice_service.add_soap_response('readInvoices', get_xml_file('R_read_invoices_regie_109.xml'))
url = get_endpoint('regie/109/invoice/1312-18')
assert con.cancel_invoice_delay == 30
# invoice created on validate basket
freezer.move_to('2023-03-03 18:30:00')
@ -9651,6 +9656,8 @@ def test_pay_not_yet_cancelled_basket_invoice(activity_service, invoice_service,
activity_service.add_soap_response('getFamilyBasket', get_xml_file('R_get_family_basket.xml'))
activity_service.add_soap_response('validateBasket', get_xml_file('R_validate_basket.xml'))
invoice_service.add_soap_response('readInvoices', get_xml_file('R_read_invoices_regie_109.xml'))
assert con.cancel_invoice_delay == 30
assert con.max_payment_delay == 20
url = get_endpoint('regie/109/invoice/1312-18/pay/')
data = {
'transaction_date': '2023-03-03T19:20:00',
@ -9682,6 +9689,8 @@ def test_pay_cancelled_basket_invoice(activity_service, invoice_service, con, ap
get_xml_file('R_cancel_invoice_and_delete_subscribe_list.xml'),
)
invoice_service.add_soap_response('readInvoices', get_xml_file('R_read_invoices_regie_109.xml'))
assert con.cancel_invoice_delay == 30
assert con.max_payment_delay == 20
url = get_endpoint('regie/109/invoice/1312-18/pay/')
data = {
'transaction_date': '2023-03-03T19:20:00',