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
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
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
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
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
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
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
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