示例#1
0
    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
    }
示例#3
0
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
    }
示例#5
0
    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