94 lines
3.5 KiB
Python
94 lines
3.5 KiB
Python
|
import csv
|
||
|
import math
|
||
|
import datetime
|
||
|
from django import forms
|
||
|
from datetime import date
|
||
|
from .models import Client, Contract, Prestation
|
||
|
from django_select2.forms import Select2MultipleWidget, ModelSelect2Widget
|
||
|
|
||
|
|
||
|
class ClientForm(forms.ModelForm):
|
||
|
class Meta:
|
||
|
model = Client
|
||
|
fields = ("name", "address", "postal_code", "city", "contact", "company_number")
|
||
|
widgets = {
|
||
|
"name": forms.TextInput(
|
||
|
attrs={"class": "form-control", "placeholder": "Nom du client"}
|
||
|
),
|
||
|
"address": forms.TextInput(
|
||
|
attrs={"class": "form-control col-sm-6 col-md-6 col-lg-6 col-xl-6", "placeholder": "Rue et numéro"}
|
||
|
),
|
||
|
"postal_code": forms.TextInput(
|
||
|
attrs={"class": "form-control col-md-2 col-lg-2 col-xl-2", "placeholder": "Code postal"}
|
||
|
),
|
||
|
"city": forms.TextInput(
|
||
|
attrs={"class": "form-control col-md-4 col-lg-4 col-xl-4", "placeholder": "Ville"}
|
||
|
),
|
||
|
"contact": forms.TextInput(
|
||
|
attrs={"class": "form-control", "placeholder": "Nom du contact client"}
|
||
|
),
|
||
|
"is_company": forms.TextInput(
|
||
|
attrs={"class": "form-control", "placeholder": "Routine's long name"}
|
||
|
),
|
||
|
"company_number": forms.TextInput(
|
||
|
attrs={"class": "form-control", "placeholder": "Numéro BCE"}
|
||
|
)
|
||
|
}
|
||
|
|
||
|
class ContractForm(forms.ModelForm):
|
||
|
class Meta:
|
||
|
model = Contract
|
||
|
fields = ("title", "client", "advance", "reference", "is_finished", "is_paid", "description")
|
||
|
widgets = {
|
||
|
"title": forms.TextInput(
|
||
|
attrs={"class": "form-control", "placeholder": "Titre de la facture"}
|
||
|
),
|
||
|
"client": ModelSelect2Widget(
|
||
|
search_fields=["title__icontains", "contact__icontains", "city__icontains"],
|
||
|
max_results=10,
|
||
|
attrs={"data-minimum-input-length": 0, "class": "form-control"},
|
||
|
),
|
||
|
"advance": forms.TextInput(
|
||
|
attrs={"class": "form-control", }
|
||
|
),
|
||
|
"reference": forms.TextInput(
|
||
|
attrs={"class": "form-control", }
|
||
|
),
|
||
|
"is_finished": forms.CheckboxInput(
|
||
|
attrs={"class": "form-control", }
|
||
|
),
|
||
|
"is_paid": forms.CheckboxInput(
|
||
|
attrs={"class": "form-control", }
|
||
|
),
|
||
|
"description": forms.Textarea(
|
||
|
attrs={"class": "form-control", "placeholder": "Description du contract."}
|
||
|
)
|
||
|
}
|
||
|
|
||
|
|
||
|
class PrestationForm(forms.ModelForm):
|
||
|
class Meta:
|
||
|
model = Prestation
|
||
|
fields = ("contract", "date", "label", "unit", "unit_price")
|
||
|
widgets = {
|
||
|
"contract": ModelSelect2Widget(
|
||
|
search_fields=["contract__icontains",],
|
||
|
max_results=10,
|
||
|
attrs={"data-minimum-input-length": 0, "class": "form-control"},
|
||
|
),
|
||
|
"date": forms.DateInput(
|
||
|
attrs={
|
||
|
"class": "form-control datepicker",
|
||
|
"value": date.today().strftime("%Y-%m-%d"),
|
||
|
}
|
||
|
),
|
||
|
"label": forms.TextInput(
|
||
|
attrs={"class": "form-control", }
|
||
|
),
|
||
|
"unit": forms.TextInput(
|
||
|
attrs={"class": "form-control", }
|
||
|
),
|
||
|
"unit_price": forms.TextInput(
|
||
|
attrs={"class": "form-control", }
|
||
|
)
|
||
|
}
|