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
|
@ -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)",
|
||||
),
|
||||
),
|
||||
]
|
||||
|
|
|
@ -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)'
|
||||
),
|
||||
),
|
||||
]
|
|
@ -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()
|
||||
|
|
|
@ -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',
|
||||
|
|
Loading…
Reference in New Issue