from django import forms
from django.utils import timezone
from material import Layout, Row, Fieldset

from .models import Booking, CostCenter, Account


class SimpleBookingForm(forms.ModelForm):
    description = forms.CharField(label='Beschreibung – Was soll angeschafft werden?')
    planned_amount = forms.IntegerField(
        label='Erwarteter Betrag – Welcher Betrag ist erforderlich?', help_text="in Euro, ohne Komma")
    justification = forms.CharField(label='Begründung – Begründe ggf. deinen Antrag.', required=False)

    layout = Layout(Row('description', 'planned_amount'), Row('justification'))

    class Meta:
        model = Booking
        fields = ['id', 'description', 'planned_amount', 'justification']


class CheckBookingForm(forms.ModelForm):
    account = forms.ModelChoiceField(Account.objects.filter().order_by('cost_center', 'name'))

    class Meta:
        model = Booking
        fields = ['account', ]


class CompleteBookingForm(forms.ModelForm):
    accounts = Account.objects.filter().order_by('cost_center', 'name')
    account = forms.ModelChoiceField(queryset=accounts)
    submission_date = forms.DateField(label='Bearbeitungsdatum', initial=timezone.now())

    layout = Layout(Fieldset("Allgemeines",
                             Row('description', 'justification'),
                             Row("contact", "planned_amount"),
                             Row('account', 'status')
                             ),
                    Fieldset('Details',
                             Row('firma', 'invoice_number', 'amount'),
                             Row('invoice_date', 'maturity', 'submission_date', 'booking_date'),
                             Row('payout_number', 'upload')
                             )
                    )

    class Meta:
        model = Booking
        fields = ['id', 'description', 'planned_amount', 'justification', 'account', 'contact', 'invoice_date',
                  'invoice_number', 'firma', 'amount', 'submission_date', 'payout_number', 'booking_date',
                  'maturity', 'upload', 'status']


class CostCenterForm(forms.ModelForm):
    class Meta:
        model = CostCenter
        fields = ['id', 'name', 'year']


class AccountForm(forms.ModelForm):
    class Meta:
        model = Account
        fields = ['id', 'name', 'cost_center', 'income', 'budget']