Skip to content
/ nekore Public

Create operating cost statements for apartment buildings.

Notifications You must be signed in to change notification settings

Starbat/nekore

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

65 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

nekore

Nekore is a library that can be used to create utility bills for apartment buildings. Nekore is being developed against the background of German regulations. It is therefore probably only of limited use for other countries.

Example

from datetime import date
from decimal import Decimal

from nekore import (
    AccountingProcessor,
    Apartment,
    ApartmentStrategy,
    BankAccount,
    Building,
    Contact,
    DirectInvoiceStrategy,
    DocumentGenerator,
    FloorAreaStrategy,
    Invoice,
    InvoiceCollection,
    InvoiceCollectionProcessor,
    Tenant,
    TimePeriod,
)

apartment_address = {
    "street": "Some street",
    "house_number": "70",
    "zip_code": "12345",
    "city": "Some city",
}

schwarz, fuchs, anderson = (
    Tenant(
        contact=Contact(name=name, **apartment_address),
        number_of_people=people,
        period=TimePeriod(date.fromisoformat(start), date.fromisoformat(end)),
        prepaid=Decimal(prepaid),
    )
    for name, prepaid, people, start, end in (
        ("Amanda Schwarz", 380.00, 3, "2021-01-01", "2021-06-30"),
        ("Peter Fuchs", 400.00, 1, "2021-07-01", "2021-12-31"),
        ("Family Anderson", 130.00, 4, "2018-04-01", "2022-01-31"),
    )
)

apartment_building = Building(
    name="apartment building in some street 70",
    apartments=[
        Apartment(
            name="ground floor", floor_space=Decimal(120), tenants=[schwarz, fuchs]
        ),
        Apartment(name="first floor", floor_space=Decimal(100), tenants=[anderson]),
    ],
)

land_tax_invoices = InvoiceCollection(
    name="Land tax",
    invoices=[
        Invoice(
            "Municipal authorities",
            gross_amount=Decimal(600),
            net_amount=Decimal(600),
            date=date.fromisoformat("2021-08-14"),
        )
    ],
)

gardening_invoices = InvoiceCollection(
    name="Gardening",
    invoices=[
        Invoice(
            "Some Gardener",
            gross_amount=Decimal(599.46),
            net_amount=Decimal(503.75),
            privileged_amount=Decimal(599.46),
            date=date.fromisoformat("2021-03-08"),
        ),
        Invoice(
            "Another Gardener",
            gross_amount=Decimal(1428),
            net_amount=Decimal(1200),
            privileged_amount=Decimal(500),
            date=date.fromisoformat("2021-08-06"),
        ),
    ],
)

schwarz_direct_invoices = InvoiceCollection(
    name="Heating maintenance",
    invoices=[
        Invoice(
            "Some heating technician",
            date=date.fromisoformat("2021-10-02"),
            gross_amount=Decimal(119),
            net_amount=Decimal(100),
            privileged_amount=Decimal(119),
        )
    ],
)


accounting_processor = AccountingProcessor(
    issuer=Contact(
        name="Me",
        city="My city",
        street="My street",
        house_number="12",
        zip_code="2345",
        bank_account=BankAccount(
            iban="DE22 1001 0050 0123 4567 89", bic="AAAA BB 11 222", bank="My bank"
        ),
    ),
    period=TimePeriod(
        start=date.fromisoformat("2021-01-01"),
        end=date.fromisoformat("2021-12-31"),
    ),
    building=apartment_building,
    invoice_collection_processors=[
        InvoiceCollectionProcessor(land_tax_invoices, FloorAreaStrategy()),
        InvoiceCollectionProcessor(gardening_invoices, ApartmentStrategy()),
        InvoiceCollectionProcessor(
            schwarz_direct_invoices, DirectInvoiceStrategy(tenant=schwarz)
        ),
    ],
)

accountings = accounting_processor.create_accountings()

document_generator = DocumentGenerator()

document_generator.create_documents("./output", accountings)

You can find the generated PDF-Files in the GitHub-Repository.

About

Create operating cost statements for apartment buildings.

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages