def create_default_event_item_groups(): from events.utils import (get_event_object_by_id, get_public_event_registration_type_object) event = get_event_object_by_id(1) event_registration_type = get_public_event_registration_type_object( event) data = [ { 'name': dict(DEFAULT_EVENT_ITEM_GROUPS).get(REGISTRATION), 'event': event, 'is_multi_select': False, 'event_registration_type': event_registration_type }, { 'name': dict(DEFAULT_EVENT_ITEM_GROUPS).get(ACCOMMODATION), 'event': event, 'is_multi_select': False, 'event_registration_type': event_registration_type }, { 'name': dict(DEFAULT_EVENT_ITEM_GROUPS).get(TRANSPORTATION), 'event': event, 'is_multi_select': False, 'event_registration_type': event_registration_type }, ] for each in data: event_item_group, created = EventItemGroup.objects.update_or_create( name=each['name'], defaults=each) print('Default event item groups are created')
def get_cart_item_dict_from_ordered_items_for_cancellation( ordered_item, selected_items, main_attendee=None, event=None): from events.utils import get_public_event_registration_type_object return { 'user': ordered_item.user, 'event_attendee': ordered_item.event_attendee, 'ordered_by_user': main_attendee.user, 'ordered_by_attendee': main_attendee, 'event': ordered_item.event_attendee.event, 'transaction_type': dict(ORDER_ITEM_TRANSACTION_TYPE_CHOICES).get(CANCEL), 'event_registration_type': get_public_event_registration_type_object(event), # self ordered item is cancelled , hence canceled_ordered_item is ordered_item 'canceled_ordered_item': ordered_item, 'selected_items': selected_items }
def get_attendee_cart_related_dict(request, user, attendee, main_attendee, event): selected_items = get_event_item_related_data( request.data['selected_registration_items']) attendee_cart_data = { 'user': user, 'event_attendee': attendee, 'ordered_by_user': main_attendee.user, 'ordered_by_attendee': main_attendee, 'event': event, 'event_registration_type': get_public_event_registration_type_object(event), 'transaction_type': dict(ORDER_ITEM_TRANSACTION_TYPE_CHOICES).get(SALE), 'selected_items': selected_items, } return attendee_cart_data
def get_basic_cart_item_dict_for_main_user(main_user, selected_items, transaction_type, main_attendee=None, event=None, canceled_ordered_item=None): from events.utils import get_public_event_registration_type_object return { 'user': main_user, 'event_attendee': main_attendee, 'ordered_by_user': main_user, 'ordered_by_attendee': main_attendee, 'event': event, 'event_registration_type': get_public_event_registration_type_object(event), 'transaction_type': transaction_type, 'canceled_ordered_item': canceled_ordered_item, 'selected_items': selected_items }
def create_test_event_items(): from items.utils import get_item_master_object_by_id from events.utils import (get_event_item_group_by_id, get_event_object_by_id, get_public_event_registration_type_object) event = get_event_object_by_id(1) event_registration_type = get_public_event_registration_type_object( event) event_item_data = [ # onsite registration items start { 'item_master': get_item_master_object_by_id(15), 'group': get_event_item_group_by_id(1), 'event': event, 'event_registration_type': event_registration_type, 'discount_before_early_bird': '10.00', 'discount_after_early_bird': '0.00', 'group_type': 'Both', 'item_capacity': 1000, 'item_sharing_count': 1, 'is_day_pass_item': False, 'senior_citizen_discount_applicable': True }, # offsite registration items end # accommodation items starts { 'item_master': get_item_master_object_by_id(16), 'group': get_event_item_group_by_id(2), 'event': event, 'event_registration_type': event_registration_type, 'discount_before_early_bird': '10.00', 'discount_after_early_bird': '0.00', 'group_type': 'OnSite', 'item_capacity': 1000, 'item_sharing_count': 1, 'is_day_pass_item': False, }, { 'item_master': get_item_master_object_by_id(17), 'group': get_event_item_group_by_id(2), 'event': event, 'event_registration_type': event_registration_type, 'discount_before_early_bird': '10.00', 'discount_after_early_bird': '0.00', 'group_type': 'OnSite', 'item_capacity': 1000, 'item_sharing_count': 2, 'is_day_pass_item': False, }, { 'item_master': get_item_master_object_by_id(18), 'group': get_event_item_group_by_id(2), 'event': event, 'event_registration_type': event_registration_type, 'discount_before_early_bird': '10.00', 'discount_after_early_bird': '0.00', 'group_type': 'OnSite', 'item_capacity': 1000, 'item_sharing_count': 1, 'is_day_pass_item': False, }, { 'item_master': get_item_master_object_by_id(19), 'group': get_event_item_group_by_id(2), 'event': event, 'event_registration_type': event_registration_type, 'discount_before_early_bird': '10.00', 'discount_after_early_bird': '0.00', 'group_type': 'OnSite', 'item_capacity': 1000, 'item_sharing_count': 2, 'is_day_pass_item': False, }, { 'item_master': get_item_master_object_by_id(20), 'group': get_event_item_group_by_id(2), 'event': event, 'event_registration_type': event_registration_type, 'discount_before_early_bird': '10.00', 'discount_after_early_bird': '0.00', 'group_type': 'OnSite', 'item_capacity': 1000, 'item_sharing_count': 3, 'is_day_pass_item': False, }, { 'item_master': get_item_master_object_by_id(21), 'group': get_event_item_group_by_id(2), 'event': event, 'event_registration_type': event_registration_type, 'discount_before_early_bird': '10.00', 'discount_after_early_bird': '0.00', 'group_type': 'OnSite', 'item_capacity': 1000, 'item_sharing_count': 1, 'is_day_pass_item': False, }, { 'item_master': get_item_master_object_by_id(22), 'group': get_event_item_group_by_id(2), 'event': event, 'event_registration_type': event_registration_type, 'discount_before_early_bird': '10.00', 'discount_after_early_bird': '0.00', 'group_type': 'OnSite', 'item_capacity': 1000, 'item_sharing_count': 2, 'is_day_pass_item': False, }, { 'item_master': get_item_master_object_by_id(23), 'group': get_event_item_group_by_id(2), 'event': event, 'event_registration_type': event_registration_type, 'discount_before_early_bird': '10.00', 'discount_after_early_bird': '0.00', 'group_type': 'OnSite', 'item_capacity': 1000, 'item_sharing_count': 1, 'is_day_pass_item': False, }, { 'item_master': get_item_master_object_by_id(24), 'group': get_event_item_group_by_id(2), 'event': event, 'event_registration_type': event_registration_type, 'discount_before_early_bird': '10.00', 'discount_after_early_bird': '0.00', 'group_type': 'OnSite', 'item_capacity': 1000, 'item_sharing_count': 2, 'is_day_pass_item': False, }, { 'item_master': get_item_master_object_by_id(25), 'group': get_event_item_group_by_id(2), 'event': event, 'event_registration_type': event_registration_type, 'discount_before_early_bird': '10.00', 'discount_after_early_bird': '0.00', 'group_type': 'OnSite', 'item_capacity': 1000, 'item_sharing_count': 3, 'is_day_pass_item': False, }, { 'item_master': get_item_master_object_by_id(26), 'group': get_event_item_group_by_id(2), 'event': event, 'event_registration_type': event_registration_type, 'discount_before_early_bird': '10.00', 'discount_after_early_bird': '0.00', 'group_type': 'OnSite', 'item_capacity': 1000, 'item_sharing_count': 4, 'is_day_pass_item': False, }, { 'item_master': get_item_master_object_by_id(27), 'group': get_event_item_group_by_id(2), 'event': event, 'event_registration_type': event_registration_type, 'discount_before_early_bird': '10.00', 'discount_after_early_bird': '0.00', 'group_type': 'OnSite', 'item_capacity': 1000, 'item_sharing_count': 1, 'is_day_pass_item': False, }, { 'item_master': get_item_master_object_by_id(28), 'group': get_event_item_group_by_id(2), 'event': event, 'event_registration_type': event_registration_type, 'discount_before_early_bird': '10.00', 'discount_after_early_bird': '0.00', 'group_type': 'OnSite', 'item_capacity': 1000, 'item_sharing_count': 1, 'is_day_pass_item': False, }, { 'item_master': get_item_master_object_by_id(29), 'group': get_event_item_group_by_id(2), 'event': event, 'event_registration_type': event_registration_type, 'discount_before_early_bird': '10.00', 'discount_after_early_bird': '0.00', 'group_type': 'OnSite', 'item_capacity': 1000, 'item_sharing_count': 2, 'is_day_pass_item': False, }, { 'item_master': get_item_master_object_by_id(30), 'group': get_event_item_group_by_id(2), 'event': event, 'event_registration_type': event_registration_type, 'discount_before_early_bird': '10.00', 'discount_after_early_bird': '0.00', 'group_type': 'OnSite', 'item_capacity': 1000, 'item_sharing_count': 2, 'is_day_pass_item': False, }, # end of acoomodation type items # start of transporation type event items { 'item_master': get_item_master_object_by_id(31), 'group': get_event_item_group_by_id(3), 'event': event, 'event_registration_type': event_registration_type, 'discount_before_early_bird': '10.00', 'discount_after_early_bird': '0.00', 'group_type': 'OnSite', 'item_capacity': 1000, 'item_sharing_count': 1, 'is_day_pass_item': False, 'ask_for_arrival_datetime': True, 'ask_for_departure_datetime': True, 'ask_for_pickup_location': False }, { 'item_master': get_item_master_object_by_id(32), 'group': get_event_item_group_by_id(3), 'event': event, 'event_registration_type': event_registration_type, 'discount_before_early_bird': '10.00', 'discount_after_early_bird': '0.00', 'group_type': 'OnSite', 'item_capacity': 1000, 'item_sharing_count': 1, 'is_day_pass_item': False, 'ask_for_arrival_datetime': True, 'ask_for_departure_datetime': False, 'ask_for_pickup_location': True }, { 'item_master': get_item_master_object_by_id(33), 'group': get_event_item_group_by_id(3), 'event': event, 'event_registration_type': event_registration_type, 'discount_before_early_bird': '10.00', 'discount_after_early_bird': '0.00', 'group_type': 'OnSite', 'item_capacity': 1000, 'item_sharing_count': 1, 'is_day_pass_item': False, 'ask_for_arrival_datetime': True, 'ask_for_departure_datetime': True, 'ask_for_pickup_location': True }, { 'item_master': get_item_master_object_by_id(34), 'group': get_event_item_group_by_id(3), 'event': event, 'event_registration_type': event_registration_type, 'discount_before_early_bird': '10.00', 'discount_after_early_bird': '0.00', 'group_type': 'OnSite', 'item_capacity': 1000, 'item_sharing_count': 1, 'is_day_pass_item': False, 'ask_for_arrival_datetime': False, 'ask_for_departure_datetime': True, 'ask_for_pickup_location': True }, { 'item_master': get_item_master_object_by_id(35), 'group': get_event_item_group_by_id(3), 'event': event, 'event_registration_type': event_registration_type, 'discount_before_early_bird': '10.00', 'discount_after_early_bird': '0.00', 'group_type': 'OnSite', 'item_capacity': 1000, 'item_sharing_count': 1, 'is_day_pass_item': False, 'ask_for_arrival_datetime': True, 'ask_for_departure_datetime': True, 'ask_for_pickup_location': True }, { 'item_master': get_item_master_object_by_id(36), 'group': get_event_item_group_by_id(3), 'event': event, 'event_registration_type': event_registration_type, 'discount_before_early_bird': '10.00', 'discount_after_early_bird': '0.00', 'group_type': 'OnSite', 'item_capacity': 1000, 'item_sharing_count': 1, 'is_day_pass_item': False, 'ask_for_arrival_datetime': True, 'ask_for_departure_datetime': True, 'ask_for_pickup_location': True }, # end of transporation type event items # start of offsite resgistation items { 'item_master': get_item_master_object_by_id(37), 'group': get_event_item_group_by_id(1), 'event': event, 'event_registration_type': event_registration_type, 'discount_before_early_bird': '10.00', 'discount_after_early_bird': '0.00', 'group_type': 'OffSite', 'item_capacity': 1000, 'item_sharing_count': 1, 'is_day_pass_item': True, }, { 'item_master': get_item_master_object_by_id(38), 'group': get_event_item_group_by_id(1), 'event': event, 'event_registration_type': event_registration_type, 'discount_before_early_bird': '10.00', 'discount_after_early_bird': '0.00', 'group_type': 'OffSite', 'item_capacity': 1000, 'item_sharing_count': 1, 'is_day_pass_item': True, }, { 'item_master': get_item_master_object_by_id(39), 'group': get_event_item_group_by_id(1), 'event': event, 'event_registration_type': event_registration_type, 'discount_before_early_bird': '10.00', 'discount_after_early_bird': '0.00', 'group_type': 'OffSite', 'item_capacity': 1000, 'item_sharing_count': 1, 'is_day_pass_item': True, }, { 'item_master': get_item_master_object_by_id(40), 'group': get_event_item_group_by_id(1), 'event': event, 'event_registration_type': event_registration_type, 'discount_before_early_bird': '10.00', 'discount_after_early_bird': '0.00', 'group_type': 'OffSite', 'item_capacity': 1000, 'item_sharing_count': 1, 'is_day_pass_item': True, }, { 'item_master': get_item_master_object_by_id(41), 'group': get_event_item_group_by_id(1), 'event': event, 'event_registration_type': event_registration_type, 'discount_before_early_bird': '10.00', 'discount_after_early_bird': '0.00', 'group_type': 'OffSite', 'item_capacity': 1000, 'item_sharing_count': 1, 'is_day_pass_item': True, } # end of offsite registration items ] for data in event_item_data: event_item, created = EventItem.objects.update_or_create( item_master=data['item_master'], event=event, defaults=data) print('test event items are created')
def get_or_create_applicable_tax_cart_item_or_service_charge_cart_item( user, selected_taxable_cart_items, cart_item_type_list, main_user, main_attendee=None, event=None): from carts.utils import hard_delete_item_cart from events.utils import (get_public_event_registration_type_object) service_charge_and_tax_items = [] total_service_charge = 0.00 total_applicable_tax = 0.00 total_canceled_tax = 0.00 total_canceled_service_charge = 0.00 added_items = selected_taxable_cart_items.filter( transaction_type=dict(ORDER_ITEM_TRANSACTION_TYPE_CHOICES).get(SALE)) canceled_items = selected_taxable_cart_items.filter( transaction_type=dict(ORDER_ITEM_TRANSACTION_TYPE_CHOICES).get(CANCEL)) if added_items: for cart_item in added_items: total_service_charge = Decimal(total_service_charge) + Decimal( cart_item.item_sc) total_applicable_tax = Decimal(total_applicable_tax) + Decimal( cart_item.item_tax) if canceled_items: for cart_item in canceled_items: total_canceled_service_charge = Decimal( total_canceled_service_charge) + Decimal(cart_item.item_sc) total_canceled_tax = Decimal(total_canceled_tax) + Decimal( cart_item.item_tax) selected_items = [] if dict(DEFAULT_ITEM_MASTERS_NAME).get( ADDED_SERVICE_CHARGE_ITEM) in cart_item_type_list: item_master = get_item_master_object_by_name( dict(DEFAULT_ITEM_MASTERS_NAME).get(ADDED_SERVICE_CHARGE_ITEM)) if total_service_charge != 0: selected_items.append({ 'item_master': item_master, 'rate': total_service_charge }) else: hard_delete_item_cart( Q(item_master=item_master, event=event, ordered_by_user=user)) if dict(DEFAULT_ITEM_MASTERS_NAME).get( APPLICABLE_TAX_ITEM) in cart_item_type_list: item_master = get_item_master_object_by_name( dict(DEFAULT_ITEM_MASTERS_NAME).get(APPLICABLE_TAX_ITEM)) if total_applicable_tax != 0: selected_items.append({ 'item_master': item_master, 'rate': total_applicable_tax }) else: hard_delete_item_cart( Q(item_master=item_master, event=event, ordered_by_user=user)) if dict(DEFAULT_ITEM_MASTERS_NAME).get( CANCELED_SERVICE_CHARGE_ITEM) in cart_item_type_list: item_master = get_item_master_object_by_name( dict(DEFAULT_ITEM_MASTERS_NAME).get(CANCELED_SERVICE_CHARGE_ITEM)) if total_canceled_service_charge != 0: selected_items.append({ 'item_master': item_master, 'rate': total_canceled_service_charge }) else: hard_delete_item_cart( Q(item_master=item_master, event=event, ordered_by_user=user)) if dict(DEFAULT_ITEM_MASTERS_NAME).get( CANCELED_TAX_ITEM) in cart_item_type_list: item_master = get_item_master_object_by_name( dict(DEFAULT_ITEM_MASTERS_NAME).get(CANCELED_TAX_ITEM)) if total_canceled_tax != 0: selected_items.append({ 'item_master': item_master, 'rate': total_canceled_tax }) else: hard_delete_item_cart( Q(item_master=item_master, event=event, ordered_by_user=user)) main_attendee_cart_data = { 'user': user, 'event_attendee': main_attendee, 'ordered_by_user': main_user, 'ordered_by_attendee': main_attendee, 'event': event, 'event_registration_type': get_public_event_registration_type_object(event), 'transaction_type': dict(ORDER_ITEM_TRANSACTION_TYPE_CHOICES).get(TAX_OR_SERVICE_CHARGE), 'selected_items': selected_items, } selected_items = main_attendee_cart_data.pop('selected_items') for item in selected_items: main_attendee_cart_data.update({ 'event_item': item.get('event_item', None), 'item_master': item['item_master'], 'rate': item['rate'], 'transportation_info': item.get('transportation_info', None) }) # here we ge update or create to avoid addition of exactly same item for event by an attendee event_item_cart, created = ItemCart.objects.update_or_create( item_master=main_attendee_cart_data['item_master'], event=event, ordered_by_user=user, defaults=main_attendee_cart_data) service_charge_and_tax_items.append(event_item_cart) # final add them all to get net tax and service charge amount net_service_charge_and_tax_amount = Decimal( total_service_charge) + Decimal(total_applicable_tax) + Decimal( total_canceled_service_charge) + Decimal(total_canceled_tax) return service_charge_and_tax_items, net_service_charge_and_tax_amount