Ejemplo n.º 1
0
    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)
        }
Ejemplo n.º 2
0
    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)
        }
Ejemplo n.º 3
0
 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)
     }