Exemplo n.º 1
0
def nonuniform_transactions_zerosum(basic_setup):
    member = basic_setup
    cutoff = datetime.datetime.now().date() - datetime.timedelta(
        days=settings.VELKOJA_NORDEACHECKER_GRACE_DAYS + 2)
    tag = TransactionTag.objects.get(tmatch='2')
    months = 6
    for refno, amount in [('109', 40), ('107', 20)]:
        for x in range(months):
            debit_date = cutoff - datetime.timedelta(days=x * 30)
            debit = TransactionFactory(owner=member,
                                       reference=refno,
                                       amount=-amount,
                                       tag=tag,
                                       stamp=datetime.datetime.combine(
                                           debit_date,
                                           datetime.datetime.min.time()))
        credit_date = cutoff - datetime.timedelta(days=months / 3 * 30)
        first_amount = amount * (months / 3)
        credit = TransactionFactory(owner=member,
                                    reference=refno,
                                    amount=first_amount,
                                    tag=tag,
                                    stamp=datetime.datetime.combine(
                                        credit_date,
                                        datetime.datetime.min.time()))
        credit2 = TransactionFactory(owner=member,
                                     reference=refno,
                                     amount=months * amount - first_amount,
                                     tag=tag,
                                     stamp=datetime.datetime.combine(
                                         cutoff, datetime.datetime.min.time()))

    return (member, cutoff)
Exemplo n.º 2
0
def test_nonuniform_overdue_emails(nonuniform_transactions_zerosum,
                                   mailoutbox):
    # FIXME: can we avoid this copy-paste with fixture or something ?
    member, cutoff = nonuniform_transactions_zerosum
    old_count = member.creditor_transactions.count()
    assert old_count > 0
    newest = member.creditor_transactions.filter(
        amount__lt=0).order_by('-stamp')[0]
    oldest = member.creditor_transactions.filter(
        amount__lt=0).order_by('stamp')[0]
    debit = TransactionFactory(owner=member,
                               reference=oldest.reference,
                               amount=oldest.amount,
                               tag=oldest.tag,
                               stamp=oldest.stamp -
                               datetime.timedelta(days=60))
    assert member.creditor_transactions.count() > old_count
    if not settings.NORDEA_BARCODE_IBAN:
        # Example IBAN from http://www.xe.com/ibancalculator/sample/?ibancountry=finland
        settings.NORDEA_BARCODE_IBAN = 'FI21 1234 5600 0007 85'
    handler = NordeaOverdueInvoicesHandler()
    assert (len(mailoutbox) == 0)
    handler.process_overdue(send=True)
    assert (len(mailoutbox) == 1)
    m = mailoutbox[0]
    assert member.email in m.to
    assert newest.reference in m.body
Exemplo n.º 3
0
def test_model_can_be_saved():
    generate_standard_set()
    member = MemberFactory()
    transaction = TransactionFactory(owner=member)
    ns = NotificationSent(email=member.email,
                          transaction_unique_id=transaction.unique_id)
    ns.save()
    assert ns.pk > 0
Exemplo n.º 4
0
def test_nonuniform_adjustment_zerosum(nonuniform_transactions_zerosum):
    member, cutoff = nonuniform_transactions_zerosum
    adjtag = TransactionTagFactory(label='Adjustment', tmatch='')
    all_debits_as_list = list(
        member.creditor_transactions.filter(amount__lt=0).order_by('stamp'))
    first_half = all_debits_as_list[:int(len(all_debits_as_list) / 2)]
    credit_sum = 0
    for trans in first_half:
        credit_sum += trans.amount
        trans.delete()

    newest = member.creditor_transactions.filter(
        amount__lt=0).order_by('-stamp')[0]
    oldest = member.creditor_transactions.filter(
        amount__lt=0).order_by('stamp')[0]

    odd_sum = TransactionFactory(owner=member,
                                 reference=oldest.reference + ' adjust',
                                 amount=credit_sum,
                                 tag=adjtag,
                                 stamp=oldest.stamp)

    debit = TransactionFactory(owner=member,
                               reference=newest.reference,
                               amount=newest.amount,
                               tag=newest.tag,
                               stamp=cutoff + datetime.timedelta(days=20))

    # First check we have overdue without tag filter
    handler = NordeaOverdueInvoicesHandler()
    overdue = handler.list_overdue()
    assert overdue

    # Then check that we don't have overdue with tag filter
    settings.VELKOJA_EXCLUDE_TAGS = ['Adjustment']
    handler = NordeaOverdueInvoicesHandler()
    overdue = handler.list_overdue()
    assert not overdue
Exemplo n.º 5
0
def generate_all():
    with transaction.atomic():
        members.tests.fixtures.types.generate_standard_set()
        members.tests.fixtures.tags.generate_standard_set()
        MemberFactory.create_batch(100)
        MembershipApplicationFactory.create_batch(25)
    
        tokentypes.generate_standard_set()
        accesstypes.generate_standard_set()
        NonMemberTokenFactory.create_batch(10)
    
        creditor.tests.fixtures.tags.generate_standard_set()
        Membershipfee4all()
    
        TransactionFactory.build_batch(100)
        MemberNoteFactory.create_batch(50)
        TokenFactory.create_batch(50)
        GrantFactory.create_batch(50)

        for m in Member.objects.filter(access_granted__atype=AccessType.objects.get(bit=0)):
            KeyholderfeeFactory(owner=m)
        for t in RecurringTransaction.objects.all():
            ret = t.conditional_add_transaction()
Exemplo n.º 6
0
def generate_all():
    with transaction.atomic():
        members.tests.fixtures.types.generate_standard_set()
        members.tests.fixtures.tags.generate_standard_set()
        MemberFactory.create_batch(100)
        MembershipApplicationFactory.create_batch(25)

        tokentypes.generate_standard_set()
        accesstypes.generate_standard_set()
        NonMemberTokenFactory.create_batch(10)

        creditor.tests.fixtures.tags.generate_standard_set()
        Membershipfee4all()

        TransactionFactory.build_batch(100)
        MemberNoteFactory.create_batch(50)
        TokenFactory.create_batch(50)
        GrantFactory.create_batch(50)

        for m in Member.objects.filter(
                access_granted__atype=AccessType.objects.get(bit=0)):
            KeyholderfeeFactory(owner=m)
        for t in RecurringTransaction.objects.all():
            ret = t.conditional_add_transaction()
Exemplo n.º 7
0
def test_uniform_no_overdue_after_cutoff(uniform_transactions_zerosum):
    member, cutoff = uniform_transactions_zerosum
    old_count = member.creditor_transactions.count()
    assert old_count > 0
    templ = member.creditor_transactions.filter(
        amount__lt=0).order_by('-stamp')[0]
    debit = TransactionFactory(owner=member,
                               reference=templ.reference,
                               amount=templ.amount,
                               tag=templ.tag,
                               stamp=cutoff + datetime.timedelta(days=20))
    assert member.creditor_transactions.count() > old_count
    assert member.credit < 0
    handler = NordeaOverdueInvoicesHandler()
    overdue = handler.list_overdue()
    assert not overdue
Exemplo n.º 8
0
def test_nonuniform_overdue(nonuniform_transactions_zerosum):
    member, cutoff = nonuniform_transactions_zerosum
    old_count = member.creditor_transactions.count()
    assert old_count > 0
    newest = member.creditor_transactions.filter(
        amount__lt=0).order_by('-stamp')[0]
    oldest = member.creditor_transactions.filter(
        amount__lt=0).order_by('stamp')[0]
    debit = TransactionFactory(owner=member,
                               reference=oldest.reference,
                               amount=oldest.amount,
                               tag=oldest.tag,
                               stamp=oldest.stamp -
                               datetime.timedelta(days=60))
    assert member.creditor_transactions.count() > old_count
    assert member.credit < 0
    handler = NordeaOverdueInvoicesHandler()
    overdue = handler.list_overdue()
    assert overdue
    # The overdue one should be the one with the newest stamp
    assert overdue[0].unique_id == newest.unique_id
Exemplo n.º 9
0
 def handle(self, *args, **options):
     for i in range(options['amount']):
         trans = TransactionFactory()
         print("Generated transaction %s" % trans)