/**
   * Send a member installment to member when a member installment is created
   *
   * @param memberInstallment Member installment with information for mail content
   */
  private void sendMemberInstallmentNotice(MemberInstallment memberInstallment) {
    Config conf = ConfigFactory.load();
    String sendFromEmail = conf.getString("play.mailer.user");
    String sendFromName = Messages.get("app.global.title");
    String subject = sendFromName + ": " + Messages.get("adminUser.mail.subject.newAccount");

    Email email = new Email();
    email.setSubject(subject);
    email.setFrom(sendFromName + "<" + sendFromEmail + ">");
    email.addTo(
        memberInstallment.getMember().toString()
            + "<"
            + memberInstallment.getMember().getEmail()
            + ">");
    String body =
        views
            .html
            .subscription
            .memberInstallment
            .memberInstallmentNotice
            .render(subject, memberInstallment)
            .body();
    email.setBodyHtml(body);

    mailer.send(email);
  }
 /** {@inheritDoc} */
 public void createMemberInstallment(Member member, Installment installment) {
   MemberInstallment memberInstallment = getModel();
   memberInstallment.setMember(member);
   memberInstallment.setInstallment(installment);
   memberInstallment.save();
   sendMemberInstallmentNotice(memberInstallment);
 }
 /** {@inheritDoc} */
 public Double getAmountDue(String token) {
   if (token != null) {
     MemberInstallment memberInstallment = getModel().get("token", token);
     if (memberInstallment != null) {
       return memberInstallment.getAmountDue();
     }
   }
   return 0.0;
 }
 /** {@inheritDoc} */
 public void setMemberInstallments(Member member) {
   InstallmentService installmentService = new InstallmentService();
   for (Subscription subscription : member.getSubscriptions()) {
     if (subscription != null) {
       boolean isMemberInstallmentSet = false;
       Installment lastInstallment =
           installmentService.getSubscriptionLastInstallment(subscription);
       for (MemberInstallment memberInstallment : member.getMemberInstallments()) {
         isMemberInstallmentSet =
             (memberInstallment.getInstallment().equals(lastInstallment))
                 || isMemberInstallmentSet;
       }
       if (!isMemberInstallmentSet) createMemberInstallment(member, lastInstallment);
     }
   }
 }
 /** {@inheritDoc} */
 public void setPaid(MemberInstallment memberInstallment) {
   memberInstallment.setAsPaid();
 }