pricing: new method get_pricing_data for flat_fee_schedule mode (#67675)
This commit is contained in:
parent
5d43627364
commit
35c27548df
|
@ -399,6 +399,28 @@ class AgendaPricing(models.Model):
|
|||
|
||||
return created, agenda_pricing
|
||||
|
||||
def get_pricing_data(self, request, user_external_id, adult_external_id, subscription=None):
|
||||
# compute pricing for flat_fee_schedule mode
|
||||
# subscription is None if subscription_required is False
|
||||
data = {
|
||||
'subscription': subscription,
|
||||
}
|
||||
context = self.get_pricing_context(
|
||||
request=request,
|
||||
data=data,
|
||||
user_external_id=user_external_id,
|
||||
adult_external_id=adult_external_id,
|
||||
)
|
||||
pricing, criterias = self.compute_pricing(context=context)
|
||||
return {
|
||||
'pricing': pricing,
|
||||
'calculation_details': {
|
||||
'pricing': pricing,
|
||||
'criterias': criterias,
|
||||
'context': context,
|
||||
},
|
||||
}
|
||||
|
||||
def get_pricing_data_for_event(
|
||||
self, request, agenda, event, subscription, check_status, booking, user_external_id, adult_external_id
|
||||
):
|
||||
|
|
|
@ -927,6 +927,44 @@ def test_get_booking_modifier_booking_presence():
|
|||
}
|
||||
|
||||
|
||||
def test_get_pricing_data(context):
|
||||
agenda = Agenda.objects.create(label='Foo bar')
|
||||
category = CriteriaCategory.objects.create(label='Foo', slug='foo')
|
||||
criteria = Criteria.objects.create(label='Bar', slug='bar', condition='True', category=category)
|
||||
pricing = Pricing.objects.create(
|
||||
label='Foo bar',
|
||||
extra_variables={
|
||||
'domicile': 'commune',
|
||||
'qf': '2',
|
||||
},
|
||||
)
|
||||
pricing.criterias.add(criteria)
|
||||
pricing.categories.add(category, through_defaults={'order': 1})
|
||||
agenda_pricing = AgendaPricing.objects.create(
|
||||
pricing=pricing,
|
||||
date_start=datetime.date(year=2021, month=9, day=1),
|
||||
date_end=datetime.date(year=2021, month=10, day=1),
|
||||
pricing_data={
|
||||
'foo:bar': 42,
|
||||
},
|
||||
)
|
||||
agenda_pricing.agendas.add(agenda)
|
||||
for subscription in [None, {'foo': 'bar'}]:
|
||||
assert agenda_pricing.get_pricing_data(
|
||||
request=context['request'],
|
||||
subscription=subscription,
|
||||
user_external_id='child:42',
|
||||
adult_external_id='parent:35',
|
||||
) == {
|
||||
'pricing': 42,
|
||||
'calculation_details': {
|
||||
'pricing': 42,
|
||||
'criterias': {'foo': 'bar'},
|
||||
'context': {'domicile': 'commune', 'qf': '2'},
|
||||
},
|
||||
}
|
||||
|
||||
|
||||
def test_get_pricing_data_for_event(context):
|
||||
agenda = Agenda.objects.create(label='Foo bar')
|
||||
category = CriteriaCategory.objects.create(label='Foo', slug='foo')
|
||||
|
|
Loading…
Reference in New Issue