435 lines
8.7 KiB
Python
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]"
|
|
} |