Source code for wtfs.forms.invoice
from onegov.core.orm.func import unaccent
from onegov.form import Form
from onegov.wtfs import _
from onegov.wtfs.models import Municipality
from wtforms.fields import DateField
from wtforms.fields import SelectField
from wtforms.fields import StringField
from wtforms.validators import InputRequired
from typing import TYPE_CHECKING
if TYPE_CHECKING:
from onegov.wtfs.models import Invoice
[docs]
class CreateInvoicesForm(Form):
[docs]
municipality_id = SelectField(
label=_('Municipality'),
choices=[],
validators=[InputRequired()]
)
[docs]
def on_request(self) -> None:
query = self.request.session.query(
Municipality.id.label('id'),
Municipality.name.label('name'),
Municipality.meta['bfs_number'].label('bfs_number'),
)
query = query.order_by(unaccent(Municipality.name))
self.municipality_id.choices = [
('-', self.request.translate(_('For all municipalities')))
]
self.municipality_id.choices += [
(r.id.hex, f'{r.name} ({r.bfs_number})') for r in query
]
[docs]
def update_model(self, model: 'Invoice') -> None:
model.from_date = self.from_date.data
model.to_date = self.to_date.data
model.cs2_user = self.cs2_user.data
model.subject = self.subject.data
model.municipality_id = None
if self.municipality_id.data != '-':
model.municipality_id = self.municipality_id.data
model.accounting_unit = self.accounting_unit.data
model.revenue_account = self.revenue_account.data