Files
Felix Baumann 148efd919d v1.0
2026-06-28 10:20:36 +00:00

435 lines
8.7 KiB
Python

import django_tables2 as tables
from .models import Item, Customer, Reminder, Invoice, InvoiceItem, Offer, OfferItem, InvoicePayment
class InvoicePaymentTable(tables.Table):
invoice = tables.Column(
verbose_name="Rechnung"
)
amount = tables.Column(
verbose_name="Betrag"
)
date = tables.DateColumn(
format="d.m.Y",
verbose_name="Datum"
)
payment_method = tables.Column(
verbose_name="Zahlungsmethode"
)
created_by = tables.Column(
verbose_name="Erfasst von"
)
class Meta:
model = InvoicePayment
fields = [
"invoice",
"amount",
"date",
"payment_method",
"created_by",
]
attrs = {
"class": "w-full text-sm"
}
class OfferItemTable(tables.Table):
unit_price_net = tables.TemplateColumn(
template_name="invoices/tables/offer_items/unit_price.html",
verbose_name="Einzelpreis",
orderable=False,
)
unit_tax_rate = tables.TemplateColumn(
template_name="invoices/tables/offer_items/tax_rate.html",
verbose_name="Steuerart",
orderable=False,
)
total = tables.TemplateColumn(
template_name="invoices/tables/offer_items/total.html",
verbose_name="Gesamt",
orderable=False,
)
actions = tables.TemplateColumn(
template_name="invoices/tables/offer_items/actions.html",
verbose_name="Aktionen",
orderable=False,
)
class Meta:
model = OfferItem
fields = (
"description",
"quantity",
"unit",
"unit_price_net",
"unit_tax_rate",
"total",
"actions",
)
attrs = {
"class": "w-full text-sm min-w-[700px]"
}
class OfferTable(tables.Table):
customer = tables.Column(
accessor="customer.company_name",
verbose_name="Kunde"
)
status = tables.Column(
accessor="get_status_display",
verbose_name="Status"
)
issue_date = tables.DateColumn(
format="d.m.Y",
verbose_name="Datum"
)
due_date = tables.DateColumn(
format="d.m.Y",
verbose_name="Gültig bis"
)
actions = tables.TemplateColumn(
template_name="invoices/tables/offers/actions.html",
verbose_name="Aktion",
orderable=False
)
class Meta:
model = Offer
fields = (
"offer_number",
"customer",
"status",
"issue_date",
"due_date",
"actions",
)
attrs = {
"class": "w-full text-sm min-w-[700px]"
}
class InvoiceItemTable(tables.Table):
service_period = tables.TemplateColumn(
template_name="invoices/tables/invoice_items/service_period.html",
verbose_name="Leistungsdatum",
orderable=False,
)
unit_price_net = tables.TemplateColumn(
template_name="invoices/tables/invoice_items/unit_price.html",
verbose_name="Einzelpreis",
orderable=False,
)
unit_tax_rate = tables.TemplateColumn(
template_name="invoices/tables/invoice_items/tax_rate.html",
verbose_name="Steuerart",
orderable=False,
)
total = tables.TemplateColumn(
template_name="invoices/tables/invoice_items/total.html",
verbose_name="Gesamt",
orderable=False,
)
actions = tables.TemplateColumn(
template_name="invoices/tables/invoice_items/actions.html",
verbose_name="Aktionen",
orderable=False,
)
class Meta:
model = InvoiceItem
fields = (
"description",
"service_period",
"quantity",
"unit",
"unit_price_net",
"unit_tax_rate",
"total",
"actions",
)
attrs = {
"class": "w-full text-sm min-w-[700px]"
}
class InvoiceTable(tables.Table):
customer = tables.Column(
accessor="customer.company_name",
verbose_name="Kunde"
)
project = tables.Column(
verbose_name="Projekt",
)
status = tables.Column(
accessor="get_status_display",
verbose_name="Status"
)
issue_date = tables.DateColumn(
format="d.m.Y",
verbose_name="Datum"
)
due_date = tables.DateColumn(
format="d.m.Y",
verbose_name="Fälligkeitsdatum"
)
actions = tables.TemplateColumn(
template_name="invoices/tables/invoices/actions.html",
verbose_name="Aktion",
orderable=False
)
class Meta:
model = Invoice
fields = (
"invoice_number",
"customer",
"project",
"status",
"issue_date",
"due_date",
"actions",
)
attrs = {
"class": "w-full text-sm min-w-[700px]"
}
class ReminderTable(tables.Table):
invoice = tables.TemplateColumn(
template_name="invoices/tables/reminders/invoice.html",
verbose_name="Rechnung",
orderable=False
)
level = tables.Column(
verbose_name="Mahnstufe"
)
status = tables.Column(
accessor="get_status_display",
verbose_name="Status"
)
issue_date = tables.DateColumn(
format="d.m.Y",
verbose_name="Datum"
)
due_date = tables.DateColumn(
format="d.m.Y",
verbose_name="Neue Zahlungsfrist"
)
actions = tables.TemplateColumn(
template_name="invoices/tables/reminders/actions.html",
verbose_name="Aktion",
orderable=False
)
class Meta:
model = Reminder
fields = (
"reminder_number",
"invoice",
"level",
"status",
"issue_date",
"due_date",
"actions",
)
attrs = {
"class": "w-full text-sm min-w-[700px]"
}
class ItemTable(tables.Table):
toggle_prefix = "item"
detail_template = (
"invoices/tables/items/detail.html"
)
class Meta:
model = Item
template_name = (
"django_tables2/table_toggle.html"
)
fields = (
"item_type",
"description",
"category",
"unit",
"price_net",
"tax_rate",
)
attrs = {
"class": "w-full text-sm min-w-[900px]",
}
class CustomerTable(tables.Table):
toggle_prefix = "customer"
detail_template = (
"invoices/tables/customer/detail.html"
)
customer_number = tables.Column(
verbose_name="Kunden-ID"
)
company_name = tables.Column(
verbose_name="Name"
)
customer_type = tables.Column(
accessor="get_customer_type_display",
verbose_name="Typ"
)
phone = tables.Column(
verbose_name="Telefon"
)
email = tables.Column(
verbose_name="E-Mail"
)
tax_number = tables.Column(
verbose_name="Steuernummer"
)
vat_number = tables.Column(
verbose_name="UST-IdNr"
)
class Meta:
model = Customer
template_name = (
"django_tables2/table_toggle.html"
)
fields = (
"customer_number",
"company_name",
"customer_type",
"phone",
"email",
"tax_number",
"vat_number",
)
attrs = {
"class": "w-full text-sm min-w-[700px]"
}
class CustomerArchivedTable(tables.Table):
toggle_prefix = "customer"
detail_template = (
"invoices/tables/customer/detail_archived.html"
)
customer_number = tables.Column(
verbose_name="Kunden-ID"
)
company_name = tables.Column(
verbose_name="Name"
)
customer_type = tables.Column(
accessor="get_customer_type_display",
verbose_name="Typ"
)
phone = tables.Column(
verbose_name="Telefon"
)
email = tables.Column(
verbose_name="E-Mail"
)
tax_number = tables.Column(
verbose_name="Steuernummer"
)
vat_number = tables.Column(
verbose_name="UST-IdNr"
)
class Meta:
model = Customer
template_name = (
"django_tables2/table_toggle.html"
)
fields = (
"customer_number",
"company_name",
"customer_type",
"phone",
"email",
"tax_number",
"vat_number",
)
attrs = {
"class": "w-full text-sm min-w-[700px]"
}