def createData(self, cycle, bill=None, payments=None): # TODO: use Django SHORT_DATE_FORMAT membercontact = cycle.membership.get_billing_contact() # Calculate vat; copied from models.Bill#render_as_text(self) vat = Decimal(cycle.get_vat_percentage()) / Decimal(100) if self.__type__ == 'reminder': amount_paid = cycle.amount_paid() sum = cycle.sum - amount_paid non_vat_amount = sum / (Decimal(1) + vat) else: sum = cycle.sum non_vat_amount = (cycle.sum / (Decimal(1) + vat)) # Select due date if self.__type__ == 'reminder': due_date = u"HETI" elif bill: due_date = bill.due_date.strftime("%d.%m.%Y") else: due_date = datetime.now() + timedelta(days=settings.BILL_DAYS_TO_DUE) due_date = due_date.strftime("%d.%m.%Y") lineitems = [] # ['1', 'Jäsenmaksu', '04.05.2010 - 04.05.2011', '32.74 €','7.26 €','40.00 €'] cycle_start_date = cycle.start.strftime('%d.%m.%Y') cycle_end_date = cycle.end_date().strftime('%d.%m.%Y') lineitems.append(["1", u"Jäsenmaksu", u"%s - %s" % (cycle_start_date, cycle_end_date), u"%s €" % locale.format("%.2f", cycle.sum / (Decimal(1) + vat)), u"%s %%" % locale.format("%d", cycle.get_vat_percentage()), u"%s €" % locale.format("%.2f", vat * non_vat_amount), u"%s €" % locale.format("%.2f", cycle.sum)]) # Note any payments attached if self.__type__ == 'reminder' and amount_paid > 0: lineitems.append([ "2", "Maksuja huomioitu yht.", "", # start-end "", # amount "", # vat-percentage "", # vat amount "%s €" % locale.format("%.2f", -amount_paid), # total amount ]) first_bill = cycle.first_bill() if bill: bill_id = bill.id elif first_bill: bill_id = first_bill.id else: bill_id = None if bill: date = bill.created else: date = datetime.now() if payments: latest_payment_date = payments.latest_payment_date() if latest_payment_date: latest_payments = min([payments.latest_payment_date(), datetime.now()]) else: latest_payments = datetime(year=2003,month=1, day=1) else: latest_payments = datetime.now() self.data = {'name': cycle.membership.name(), 'address': membercontact.street_address, 'postal_code':membercontact.postal_code, 'postal_office':membercontact.post_office, 'date': date.strftime("%d.%m.%Y"), 'latest_payment_date': latest_payments.strftime('%d.%m.%Y'), 'member_id': cycle.membership.id, 'due_date': due_date, 'email': membercontact.email, 'bill_id': bill_id, 'vat': vat, 'sum': sum, 'pretty_sum': locale.format('%.2f', sum), 'notify_period': '%d vrk' % (settings.REMINDER_GRACE_DAYS,), 'lineitems': lineitems, 'reference_number': group_reference(cycle.reference_number) }
def createData(self, cycle, bill=None, payments=None): # TODO: use Django SHORT_DATE_FORMAT membercontact = cycle.membership.get_billing_contact() # Calculate vat; copied from models.Bill#render_as_text(self) vat = Decimal(cycle.get_vat_percentage()) / Decimal(100) if self.__type__ == 'reminder': amount_paid = cycle.amount_paid() sum = cycle.sum - amount_paid non_vat_amount = sum / (Decimal(1) + vat) else: sum = cycle.sum non_vat_amount = (cycle.sum / (Decimal(1) + vat)) # Select due date if self.__type__ == 'reminder': due_date = u"HETI" elif bill: due_date = bill.due_date.strftime("%d.%m.%Y") else: due_date = datetime.now() + timedelta( days=settings.BILL_DAYS_TO_DUE) due_date = due_date.strftime("%d.%m.%Y") lineitems = [] # ['1', 'Jäsenmaksu', '04.05.2010 - 04.05.2011', '32.74 €','7.26 €','40.00 €'] cycle_start_date = cycle.start.strftime('%d.%m.%Y') cycle_end_date = cycle.end_date().strftime('%d.%m.%Y') lineitems.append([ "1", u"Jäsenmaksu", u"%s - %s" % (cycle_start_date, cycle_end_date), u"%s €" % locale.format("%.2f", cycle.sum / (Decimal(1) + vat)), u"%s %%" % locale.format("%d", cycle.get_vat_percentage()), u"%s €" % locale.format("%.2f", vat * non_vat_amount), u"%s €" % locale.format("%.2f", cycle.sum) ]) # Note any payments attached if self.__type__ == 'reminder' and amount_paid > 0: lineitems.append([ "2", "Maksuja huomioitu yht.", "", # start-end "", # amount "", # vat-percentage "", # vat amount "%s €" % locale.format("%.2f", -amount_paid), # total amount ]) first_bill = cycle.first_bill() if bill: bill_id = bill.id elif first_bill: bill_id = first_bill.id else: bill_id = None if bill: date = bill.created else: date = datetime.now() if payments: latest_payment_date = payments.latest_payment_date() if latest_payment_date: latest_payments = min( [payments.latest_payment_date(), datetime.now()]) else: latest_payments = datetime(year=2003, month=1, day=1) else: latest_payments = datetime.now() self.data = { 'name': cycle.membership.name(), 'address': membercontact.street_address, 'postal_code': membercontact.postal_code, 'postal_office': membercontact.post_office, 'date': date.strftime("%d.%m.%Y"), 'latest_payment_date': latest_payments.strftime('%d.%m.%Y'), 'member_id': cycle.membership.id, 'due_date': due_date, 'email': membercontact.email, 'bill_id': bill_id, 'vat': vat, 'sum': sum, 'pretty_sum': locale.format('%.2f', sum), 'notify_period': '%d vrk' % (settings.REMINDER_GRACE_DAYS, ), 'lineitems': lineitems, 'reference_number': group_reference(cycle.reference_number) }
def createData(self, cycle, bill=None, payments=None): # TODO: use Django SHORT_DATE_FORMAT membercontact = cycle.membership.get_billing_contact() # Calculate proper vat percentages full = Decimal(100) vatp = cycle.get_vat_percentage() / full vat = (cycle.sum / (Decimal(1) + vatp)) * vatp amount = cycle.sum - vat if self.__type__ == 'reminder': due_date = u"HETI" elif bill: due_date = bill.due_date.strftime("%d.%m.%Y") else: due_date = datetime.now() + timedelta(days=settings.BILL_DAYS_TO_DUE) due_date = due_date.strftime("%d.%m.%Y") bills = [] # ['1', 'Jäsenmaksu', '04.05.2010 - 04.05.2011', '32.74 €','7.26 €','40.00 €'] cycle_start_date = cycle.start.strftime('%d.%m.%Y') cycle_end_date = cycle.end_date().strftime('%d.%m.%Y') bills.append(['1', u"Jäsenmaksu", u"%s - %s" % (cycle_start_date, cycle_end_date), u"%s €" % locale.format("%.2f", amount), u"%s %%" % locale.format("%d", cycle.get_vat_percentage()), u"%s €" % locale.format("%.2f", vat), u"%s €" % locale.format("%.2f", cycle.sum)]) first_bill = cycle.first_bill() if bill: bill_id = bill.id elif first_bill: bill_id = first_bill.id else: bill_id = None if bill: date = bill.created else: date = datetime.now() if payments: latest_payment_date = payments.latest_payment_date() if latest_payment_date: latest_payments = min([payments.latest_payment_date(), datetime.now()]) else: latest_payments = datetime(year=2003,month=1, day=1) else: latest_payments = datetime.now() self.data = {'name': cycle.membership.name(), 'address': membercontact.street_address, 'postal_code':membercontact.postal_code, 'postal_office':membercontact.post_office, 'date': date.strftime("%d.%m.%Y"), 'latest_payment_date': latest_payments, 'member_id': cycle.membership.id, 'due_date': due_date, 'email': membercontact.email, 'bill_id': bill_id, 'amount': amount, 'pretty_amount': locale.format('%.2f', amount), 'vat': vat, 'sum': cycle.sum, 'pretty_sum': locale.format('%.2f', cycle.sum), 'notify_period': '%d vrk' % (settings.REMINDER_GRACE_DAYS,), 'bills': bills, 'reference_number': group_reference(cycle.reference_number) }