Esempio n. 1
0
 def concession_type(self):
     if self.member_type in MembershipType.concessions(all=True):
         long = [
             c for c in MembershipType.renewal_choices()
             if c[0] == self.member_type.value
         ][0][1]
     else:
         long = ''
     return long
Esempio n. 2
0
 def renewal_payment(self, member, upgrade):
     member_type = member.member_type_at_renewal()
     if member.status == MemberStatus.life:
         return None
     new_member = member.is_recent_new() or member.is_recent_resume()
     if new_member:
         if member_type == MembershipType.junior:
             return None
         elif member_type in MembershipType.concessions(all=True):
             return RenewalPayment.Dons_Trust_Plus_Concession_upgrade if upgrade else None
         elif member_type == MembershipType.standard:
             return RenewalPayment.Dons_Trust_Plus_Adult_upgrade if upgrade else None
     else:
         plus = upgrade or member.status == MemberStatus.plus
         if member_type == MembershipType.junior:
             return RenewalPayment.Junior_Dons_renewal
         elif member_type in MembershipType.concessions(all=True):
             return RenewalPayment.Dons_Trust_Plus_Concession if plus else RenewalPayment.Concession
         elif member_type == MembershipType.standard:
             return RenewalPayment.Dons_Trust_Plus_Adult if plus else RenewalPayment.Adult
Esempio n. 3
0
 def upgrade_dues(self, as_of=None):
     if self.status == [MemberStatus.life]:
         return 0
     if not as_of:
         as_of = current_year_end()
     type = self.member_type_at_renewal(as_of)
     if type in MembershipType.concessions():
         return PlusUpgradeDues.concession.value
     if type == MembershipType.intermediate:
         return PlusUpgradeDues.intermediate.value
     if type == MembershipType.senior:
         return PlusUpgradeDues.senior.value
     return PlusUpgradeDues.standard.value
Esempio n. 4
0
 def member_type_at_renewal(self, as_of=None):
     if self.member_type in MembershipType.concessions():
         return self.member_type
     if not as_of:
         as_of = current_year_end()
     age = self.age(as_of, True)
     if age <= AgeBand.junior.upper:
         return MembershipType.junior
     if age <= AgeBand.intermediate.upper:
         return MembershipType.intermediate
     if age < AgeBand.senior.lower:
         return MembershipType.standard
     if age >= AgeBand.senior.lower:
         return MembershipType.senior
     return MembershipType.standard
Esempio n. 5
0
 def base_dues(self, as_of=None):
     if not as_of:
         as_of = current_year_end()
     if self.status == MemberStatus.life or self.is_recent_resume(
     ) or self.is_recent_new():
         return 0
     type = self.member_type_at_renewal(as_of)
     if type in MembershipType.concessions():
         return Dues.concession.value
     if type == MembershipType.junior:
         return Dues.junior.value
     if type == MembershipType.intermediate:
         return Dues.intermediate.value
     if type == MembershipType.senior:
         return Dues.senior.value
     return Dues.standard.value
Esempio n. 6
0
 def add_member(member, member_totals):
     member_type = member.member_type
     member_totals[member_type] += 1
     if member.status == MemberStatus.life:
         if member_type == MembershipType.junior:
             member_totals[101] += 1
         else:
             member_totals[100] += 1
     if member.status == MemberStatus.plus:
         if member_type in (MembershipType.concessions() + [MembershipType.senior]):
             member_totals[103] += 1
         elif member_type == MembershipType.intermediate:
             member_totals[104] += 1
         else:
             member_totals[102] += 1
     if member.voter():
         member_totals[105] += 1
     return
Esempio n. 7
0
 def get_dd_payment_plan(payment_method, member, upgrade):
     if payment_method == PaymentMethod.dd:
         plus = upgrade or member.status == MemberStatus.plus
         member_type = member.member_type_at_renewal()
         if member.status == MemberStatus.life:
             return None
         new_member = member.is_recent_new() or member.is_recent_resume()
         if member_type == MembershipType.junior:
             if new_member:
                 return EmandatePaymentPlan.Junior_Dons_new
             else:
                 return EmandatePaymentPlan.Junior_Dons_renewal
         elif member_type in MembershipType.concessions(all=True):
             return EmandatePaymentPlan.Dons_Trust_Plus_Concession if plus else EmandatePaymentPlan.Concession
         elif member_type == MembershipType.standard:
             return EmandatePaymentPlan.Dons_Trust_Plus_Adult if plus else EmandatePaymentPlan.Adult
     else:
         return None
Esempio n. 8
0
 def renewal_notes(self):
     age = self.age_at_renewal(default=True)
     new_member = self.is_recent_new()
     recent_resume = self.is_recent_resume()
     renewal_dues = '£' + str(self.dues())
     renewal_cost = "The renewal cost is {}. ".format(renewal_dues) if not (
         new_member or recent_resume) else ''
     upgrade_dues = '£' + str(self.upgrade_dues() if (
         new_member or recent_resume) else self.dues() +
                              self.upgrade_dues())
     if not self.is_pending_upgrade():
         upgrade_para = "You may upgrade to Dons Trust Plus membership at a total cost of {}.".format(
             upgrade_dues) if self.status != MemberStatus.plus else ''
     else:
         upgrade_para = 'You have chosen to upgrade to Dons Trust Plus membership'
     member_type = self.member_type_at_renewal()
     life_member = self.status == MemberStatus.life
     member_type_switch = member_type != self.member_type and not life_member
     junior = member_type == MembershipType.junior
     notes = []
     if life_member:
         notes = [
             "As you are a life member, there is no payment required. " \
             "We will send your new membership card in due course.", ]
     else:
         if member_type == MembershipType.intermediate:
             if member_type_switch:
                 notes = [
                     "As you have passed your 18th birthday, your membership will change to Young Adult (18-21)", \
                     "{}{}".format(renewal_cost, upgrade_para)]
             else:
                 notes = ["{}{}".format(renewal_cost, upgrade_para)]
         elif junior:
             notes = [
                 "{}".format(renewal_cost),
             ]
         if member_type == MembershipType.senior:
             if member_type_switch:
                 notes = [
                     "As you have passed your 65th birthday, your membership will change to Senior (65+)", \
                     "{}{}".format(renewal_cost, upgrade_para)]
             else:
                 notes = [
                     "{}{}".format(renewal_cost, upgrade_para),
                 ]
         elif member_type in MembershipType.concessions():
             notes = [
                 "According to our records, you currently have a concessionary membership ({})."
                 .format(member_type.name),
                 "{}{}".format(renewal_cost, upgrade_para),
                 "**If your circumstances have changed please choose the appropriate membership type."
             ]
         else:
             if member_type == MembershipType.standard:
                 if member_type_switch:
                     notes = [
                         "As you have passed your 21st birthday, you membership will change to Adult (22+)", \
                         "{}{}".format(renewal_cost, upgrade_para)]
                 else:
                     notes = [
                         "{}{}".format(renewal_cost, upgrade_para),
                     ]
     if self.last_payment_method == PaymentMethod.dd and not (
             new_member or recent_resume):
         up = "Unless you wish to upgrade to Dons Trust Plus, you need take no action about payment." \
             if not junior and self.status != MemberStatus.plus else ''
         notes = [
             "According to our records you currently pay by direct debit. "
             + up,
             "Provided the payment is taken successfully, your membership will be automatically updated.",
         ] + notes
     if new_member and not life_member:
         notes = [
                     "As you joined relatively late during the membership year we will automatically extend " \
                     "your membership until August 2022.", ] + notes
     if recent_resume and not life_member:
         notes = [
                     "As you resumed a lapsed membership recently we will automatically extend " \
                     "your membership until August 2022.", ] + notes
     return notes