예제 #1
0
    def test_aendere_beiVollerDatenbank(self):
        component_under_test = Einzelbuchungen()
        component_under_test.add(datum('01.01.2017'), '3kategorie', '3name',
                                 1.54)
        component_under_test.add(datum('02.01.2017'), '2kategorie', '2name',
                                 1.54)
        component_under_test.add(datum('03.01.2017'), '1kategorie', '1name',
                                 1.54)

        assert component_under_test.content.Datum[0] == datum('01.01.2017')

        component_under_test.edit(0, datum('15.01.2017'),
                                  'some other kategorie', 'some other name',
                                  2.65)

        assert len(component_under_test.content) == 3
        assert set(component_under_test.content.Name) == set(
            ['1name', '2name', 'some other name'])
        assert set(component_under_test.content.Datum) == set(
            [datum('02.01.2017'),
             datum('03.01.2017'),
             datum('15.01.2017')])

        changed_row = component_under_test.content[
            component_under_test.content.Datum == datum('15.01.2017')]
        changed_row.reset_index(drop=True, inplace=True)
        assert changed_row.Name[0] == 'some other name'
        assert changed_row.Kategorie[0] == 'some other kategorie'
        assert changed_row.Wert[0] == 2.65
예제 #2
0
    def teste_durchschnittliche_ausgaben_pro_monat_withEinnahme_shouldReturnEmptyDict(
            self):
        component_under_test = Einzelbuchungen()
        component_under_test.add(datum('10.10.2011'), 'K', '', 10)

        assert component_under_test.durchschnittliche_ausgaben_pro_monat(
            2011) == {}
예제 #3
0
    def teste_durchschnittliche_ausgaben_pro_monat_mitNurHeute_sollteAktuellenMonatIgnorieren(
            self):
        component_under_test = Einzelbuchungen()
        component_under_test.add(date.today(), 'A', '', -10)

        assert component_under_test.durchschnittliche_ausgaben_pro_monat(
            date.today().year) == {}
예제 #4
0
    def test_getJahresausgabenNachKategorieProzentual_withEmptyDB_shouldReturnEmptyDict(
            self):
        component_under_test = Einzelbuchungen()

        result = component_under_test.get_jahresausgaben_nach_kategorie_prozentual(
            2015)

        assert result == {}
예제 #5
0
    def teste_durchschnittliche_ausgaben_pro_monat_mitAngefangenemJahr_sollteDurchAnzahlDerEntsprechendenMonateTeilen(
            self):
        component_under_test = Einzelbuchungen()
        component_under_test.add(datum('10.8.2011'), 'B', '', -10)

        assert component_under_test.durchschnittliche_ausgaben_pro_monat(
            2011) == {
                'B': '2.00'
            }
예제 #6
0
    def teste_durchschnittliche_ausgaben_pro_monat_mitNurLetztemMonat_sollteAusgabenDurchEinsTeilen(
            self):
        component_under_test = Einzelbuchungen()
        component_under_test.add(datum('10.8.2011'), 'A', '', -10)

        assert component_under_test.durchschnittliche_ausgaben_pro_monat(
            2011, today=datum('10.9.2011')) == {
                'A': '10.00'
            }
예제 #7
0
    def teste_durchschnittliche_ausgaben_pro_monat_withMatchingAndClosedYear_shouldReturnMonthlyPart(
            self):
        component_under_test = Einzelbuchungen()
        component_under_test.add(datum('10.10.2010'), 'K', '', -10)
        component_under_test.add(datum('10.10.2011'), 'K', '', -12)

        assert component_under_test.durchschnittliche_ausgaben_pro_monat(
            2011) == {
                'K': "1.00"
            }
예제 #8
0
    def test_getJahresausgabenNachKategorieProzentual_withAusgabeAußerhalbDesJahres_shouldReturnEmptyDict(
            self):
        component_under_test = Einzelbuchungen()
        component_under_test.add(datum('01.01.2014'), 'kategorie 1',
                                 'some name', -10)

        result = component_under_test.get_jahresausgaben_nach_kategorie_prozentual(
            2015)

        assert result == {}
예제 #9
0
    def test_add(self):
        component_under_test = Einzelbuchungen()
        component_under_test.add(date.today(), 'some kategorie', 'some name',
                                 1.54)

        assert len(component_under_test.content) == 1
        assert component_under_test.content.Datum[0] == date.today()
        assert component_under_test.content.Name[0] == 'some name'
        assert component_under_test.content.Kategorie[0] == 'some kategorie'
        assert component_under_test.content.Wert[0] == 1.54
        assert component_under_test.content.Tags[0] == []
예제 #10
0
    def test_getJahresausgabenNachKategorieProzentual_withOneEntry_shouldReturnKategorieWith100Percent(
            self):
        component_under_test = Einzelbuchungen()
        component_under_test.add(datum('01.01.2015'), 'kategorie 1',
                                 'some name', -10)

        result = component_under_test.get_jahresausgaben_nach_kategorie_prozentual(
            2015)

        assert set(result.keys()) == set(['kategorie 1'])
        assert result['kategorie 1'] == 100.00
예제 #11
0
    def test_get_single_einzelbuchung(self):
        component_under_test = Einzelbuchungen()
        component_under_test.add(date.today(), '1kategorie', '1name', 1.54)

        result = component_under_test.get(0)

        assert result['index'] == 0
        assert result['Datum'] == date.today()
        assert result['Name'] == '1name'
        assert result['Kategorie'] == '1kategorie'
        assert result['Wert'] == 1.54
예제 #12
0
    def test_injectZeros_shouldInjectZeroes(self):
        component_under_test = Einzelbuchungen()
        select = component_under_test.select()

        assert len(select.content) == 0

        select = select.inject_zeros_for_year(2017)
        assert len(select.content) == 12
        assert select.content.loc[0].Datum == datum('01.01.2017')
        assert select.content.loc[11].Datum == datum('01.12.2017')
        assert select.content.Wert.sum() == 0
예제 #13
0
    def test_get_einzelbuchungen_shouldReturnListSortedBy_Datum_Kategorie_Name_Wert(
            self):
        component_under_test = Einzelbuchungen()
        component_under_test.add(datum('01.01.2011'), '1kategorie', '1name', 1)
        component_under_test.add(datum('01.01.2011'), '1kategorie', '1name',
                                 10)
        component_under_test.add(datum('01.01.2011'), '1kategorie', '1name', 5)

        assert component_under_test.get_all().Wert[0] == 1
        assert component_under_test.get_all().Wert[1] == 5
        assert component_under_test.get_all().Wert[2] == 10
예제 #14
0
    def test_schliesse_kategorien_aus_einnahmen(self):
        component_under_test = Einzelbuchungen()
        component_under_test.ausgeschlossene_kategorien = set(['NeinEins'])
        component_under_test.add(datum('20.01.1990'), 'JaEins', 'SomeTitle',
                                 10)
        component_under_test.add(datum('20.01.1990'), 'NeinEins', 'SomeTitle',
                                 10)
        component_under_test.add(datum('20.01.1990'), 'JaZwei', 'SomeTitle',
                                 10)

        assert component_under_test.get_kategorien_einnahmen(
            hide_ausgeschlossene_kategorien=True) == set(['JaEins', 'JaZwei'])
예제 #15
0
    def test_edit_einzelbuchung_shouldRefreshSortingOfEinzelbuchungen(self):
        component_under_test = Einzelbuchungen()
        component_under_test.add(datum('01.01.2012'), '1kategorie', '1name', 1)
        component_under_test.add(datum('01.01.2011'), '1kategorie', '1name', 1)
        component_under_test.add(datum('01.01.2013'), '1kategorie', '1name', 1)

        component_under_test.edit(0, datum('01.01.2020'), '1kategorie',
                                  '1name', 1)

        assert component_under_test.get_all().Datum[0].year == 2012
        assert component_under_test.get_all().Datum[1].year == 2013
        assert component_under_test.get_all().Datum[2].year == 2020
예제 #16
0
 def __init__(self, name, ausgeschlossene_kategorien=set()):
     self.name = name
     self.dauerauftraege = Dauerauftraege()
     self.gemeinsamebuchungen = Gemeinsamebuchungen()
     self.einzelbuchungen = Einzelbuchungen()
     self.sparbuchungen = Sparbuchungen()
     self.sparkontos = Kontos()
     self.depotwerte = Depotwerte()
     self.order = Order()
     self.orderdauerauftrag = OrderDauerauftrag()
     self.depotauszuege = Depotauszuege()
     self.einzelbuchungen.ausgeschlossene_kategorien = ausgeschlossene_kategorien
     self.tainted = 0
예제 #17
0
 def test_delete_shouldTaint(self):
     component_under_test = Einzelbuchungen()
     component_under_test.add(datum('1.1.2010'), date.today(),
                              'some kategorie', 'some name', 1.23)
     assert component_under_test.taint_number() == 1
     component_under_test.delete(0)
     assert component_under_test.taint_number() == 2
예제 #18
0
 def test_edit_shouldTaint(self):
     component_under_test = Einzelbuchungen()
     component_under_test.add(datum('1.1.2010'), 'some kategorie',
                              'some name', 1.23)
     assert component_under_test.taint_number() == 1
     component_under_test.edit(0, datum('2.1.2010'), 'some other kategorie',
                               'some other name', 2.34)
     assert component_under_test.taint_number() == 2
예제 #19
0
    def test_get_einzelbuchungen_shouldReturnListSortedBy_Datum(self):
        component_under_test = Einzelbuchungen()
        component_under_test.add(datum('01.01.2012'), '1kategorie', '1name', 1)
        component_under_test.add(datum('01.01.2011'), '1kategorie', '1name', 1)
        component_under_test.add(datum('01.01.2013'), '1kategorie', '1name', 1)

        assert component_under_test.get_all().Datum[0].year == 2011
        assert component_under_test.get_all().Datum[1].year == 2012
        assert component_under_test.get_all().Datum[2].year == 2013
예제 #20
0
    def test_group_by_kategorie_shouldGroupValues(self):
        component_under_test = Einzelbuchungen()
        component_under_test.add(datum('20.01.1990'), 'A', '', -10)
        component_under_test.add(datum('20.01.1990'), 'A', '', -10)
        component_under_test.add(datum('20.01.1990'), 'B', '', 8)

        assert component_under_test.select().group_by_kategorie().Wert.tolist(
        ) == [-20, 8]
        assert component_under_test.select().group_by_kategorie().index.tolist(
        ) == ['A', 'B']
예제 #21
0
    def test_get_einzelbuchungen_shouldReturnListSortedBy_Datum_Kategorie_Name(
            self):
        component_under_test = Einzelbuchungen()
        component_under_test.add(datum('01.01.2011'), '1kategorie', '1name', 1)
        component_under_test.add(datum('01.01.2011'), '1kategorie', '3name', 1)
        component_under_test.add(datum('01.01.2011'), '1kategorie', '2name', 1)

        assert component_under_test.get_all().Name[0] == '1name'
        assert component_under_test.get_all().Name[1] == '2name'
        assert component_under_test.get_all().Name[2] == '3name'
def _handle_request(request):

    all_files = all_abrechnungen()

    text_report_reader = TextReportReader()
    all_content = Einzelbuchungen()

    abrechnungen = []

    for file in all_files:
        report = text_report_reader.read(''.join(file['content']))
        all_content.parse(report)
        abrechnungen.append({
            'name': file['name'],
            'content': ''.join(file['content'])
        })

    jahre = all_content.get_jahre()
    zusammenfassungen = []

    for jahr in sorted(jahre):

        year_selection = all_content.select().select_year(jahr)
        monate = []
        for monat in range(1, 13):
            monate.append(year_selection.select_month(monat).count())
        zusammenfassungen.append({'jahr': jahr, 'monate': monate})

    context = viewcore.generate_transactional_context('uebersichtabrechnungen')
    context['zusammenfassungen'] = zusammenfassungen
    context['abrechnungen'] = abrechnungen
    return context
예제 #23
0
    def teste_durchschnittliche_ausgaben_pro_monat_shouldReturnMonthlyPart(
            self):
        component_under_test = Einzelbuchungen()
        component_under_test.add(datum('10.10.2010'), 'K', '', -10)
        component_under_test.add(datum('10.10.2011'), 'B', '', -12)
        component_under_test.add(datum('10.10.2011'), 'A', '', -24)

        assert component_under_test.durchschnittliche_ausgaben_pro_monat(
            2011) == {
                'A': "2.00",
                'B': '1.00'
            }
예제 #24
0
    def test_getJahresausgabenNachKategorieProzentual_withTwoEntrys_shouldReturnResult(
            self):
        component_under_test = Einzelbuchungen()
        component_under_test.add(datum('01.01.2015'), 'kategorie 1',
                                 'some name', -7.5)
        component_under_test.add(datum('01.01.2015'), 'kategorie 2',
                                 'some name', -2.5)

        result = component_under_test.get_jahresausgaben_nach_kategorie_prozentual(
            2015)

        assert set(result.keys()) == set(['kategorie 1', 'kategorie 2'])
        assert result['kategorie 1'] == 75.00
        assert result['kategorie 2'] == 25.00
예제 #25
0
    def test_aendere_beiEinzigerEinzelbuchung(self):
        component_under_test = Einzelbuchungen()
        component_under_test.add(date.today(), 'some kategorie', 'some name',
                                 1.54)
        component_under_test.edit(0, date.today(), 'some other kategorie',
                                  'some other name', 2.65)

        assert len(component_under_test.content) == 1
        assert component_under_test.content.Datum[0] == date.today()
        assert component_under_test.content.Name[0] == 'some other name'
        assert component_under_test.content.Kategorie[
            0] == 'some other kategorie'
        assert component_under_test.content.Wert[0] == 2.65
예제 #26
0
    def test_sumMonthly_withDuplicatedMonths_shouldSumValues(self):
        component_under_test = Einzelbuchungen()
        component_under_test.add(
            datum('01.02.2017'),
            '',
            '',
            5,
        )
        component_under_test.add(
            datum('01.01.2017'),
            '',
            '',
            20,
        )
        component_under_test.add(
            datum('01.02.2017'),
            '',
            '',
            10,
        )

        result = component_under_test.select().sum_monthly()

        assert result == ['20.00', '15.00']
예제 #27
0
    def test_get_static_content_should_filter_dynamic_content(self):
        component_under_test = Einzelbuchungen()
        component_under_test.add(datum('01.01.2012'), '1kategorie', '1name', 1)
        component_under_test.add(datum('02.02.2013'),
                                 '2kategorie',
                                 '2name',
                                 2,
                                 dynamisch=True)

        static_content = component_under_test.get_static_content()

        assert len(static_content) == 1
        assert static_content.Datum[0] == datum('01.01.2012')
        assert static_content.Kategorie[0] == '1kategorie'
        assert static_content.Name[0] == '1name'
        assert static_content.Wert[0] == 1
        assert 'Dynamisch' not in static_content.columns
예제 #28
0
    def test_sumMonthly_withUniqueMonths(self):
        component_under_test = Einzelbuchungen()
        component_under_test.add(
            datum('01.01.2017'),
            '',
            '',
            20,
        )
        component_under_test.add(
            datum('01.02.2017'),
            '',
            '',
            10,
        )

        result = component_under_test.select().sum_monthly()

        assert result == ['20.00', '10.00']
예제 #29
0
 def test_sum_kategorien_monthly(self):
     component_under_test = Einzelbuchungen()
     component_under_test.add(
         datum('01.02.2017'),
         'kat1',
         '',
         5,
     )
     component_under_test.add(
         datum('01.02.2017'),
         'kat2',
         '',
         10,
     )
     result = component_under_test.select().sum_kategorien_monthly()
     assert len(result) == 1
     assert len(result[2]) == 2
     assert result[2]['kat1'] == '5.00'
     assert result[2]['kat2'] == '10.00'
예제 #30
0
 def test_inject_zeroes_for_year_and_kategories_shouldInjectZeroes(self):
     component_under_test = Einzelbuchungen()
     component_under_test.add(
         datum('01.02.2017'),
         'kat1',
         '',
         5,
     )
     component_under_test.add(
         datum('01.02.2017'),
         'kat2',
         '',
         5,
     )
     result = component_under_test.select(
     ).inject_zeroes_for_year_and_kategories(2017).raw_table()
     assert len(result) == 26
     assert datum('01.01.2017') in set(result.Datum)
     assert datum('01.12.2017') in set(result.Datum)
     assert result.Wert.sum() == 10
     assert set(['kat1', 'kat2']) == set(result.Kategorie)