2024-06-07 03:47:15 +08:00
|
|
|
from django import forms
|
2024-06-16 23:36:08 +08:00
|
|
|
|
2024-06-07 03:47:15 +08:00
|
|
|
from .models import *
|
2024-06-16 23:36:08 +08:00
|
|
|
from ..org_mgnt.models import PrimaryDepartment
|
2024-06-07 03:47:15 +08:00
|
|
|
|
|
|
|
|
|
|
|
class GroupBusinessTargetForm(forms.ModelForm):
|
2024-06-16 23:36:08 +08:00
|
|
|
primary_department = forms.ModelChoiceField(
|
|
|
|
queryset=PrimaryDepartment.objects.all(),
|
|
|
|
widget=forms.Select(attrs={'class': 'form-control'}),
|
|
|
|
empty_label="选择一级部门",
|
|
|
|
label="一级部门"
|
|
|
|
)
|
|
|
|
|
2024-06-07 03:47:15 +08:00
|
|
|
class Meta:
|
|
|
|
model = GroupBusinessTarget
|
|
|
|
fields = '__all__'
|
|
|
|
widgets = {
|
|
|
|
'year': forms.NumberInput(attrs={'class': 'form-control'}),
|
|
|
|
'project_nature': forms.Select(attrs={'class': 'form-control'}),
|
|
|
|
'sales': forms.NumberInput(attrs={'class': 'form-control'}),
|
|
|
|
'total_revenue_target': forms.NumberInput(attrs={'class': 'form-control'}),
|
|
|
|
'new_revenue_target': forms.NumberInput(attrs={'class': 'form-control'}),
|
|
|
|
'existing_revenue_target': forms.NumberInput(attrs={'class': 'form-control'}),
|
|
|
|
'cost_limit': forms.NumberInput(attrs={'class': 'form-control'}),
|
|
|
|
'gross_profit': forms.NumberInput(attrs={'class': 'form-control'}),
|
|
|
|
'expense_limit': forms.NumberInput(attrs={'class': 'form-control'}),
|
|
|
|
'operating_profit': forms.NumberInput(attrs={'class': 'form-control'}),
|
|
|
|
}
|
|
|
|
|
2024-06-16 23:36:08 +08:00
|
|
|
def __init__(self, *args, **kwargs):
|
|
|
|
super(GroupBusinessTargetForm, self).__init__(*args, **kwargs)
|
|
|
|
if 'instance' in kwargs:
|
|
|
|
self.fields['primary_department'].initial = kwargs['instance'].primary_department
|
|
|
|
print(f"Initial primary department: {self.fields['primary_department'].initial}") # 调试输出
|
|
|
|
|
|
|
|
def clean(self):
|
|
|
|
cleaned_data = super().clean()
|
|
|
|
primary_department = cleaned_data.get('primary_department')
|
|
|
|
year = cleaned_data.get('year')
|
|
|
|
project_nature = cleaned_data.get('project_nature')
|
|
|
|
|
|
|
|
if primary_department and year and project_nature:
|
|
|
|
if GroupBusinessTarget.objects.filter(primary_department=primary_department, year=year, project_nature=project_nature).exists():
|
|
|
|
raise forms.ValidationError("该一级部门在同一年已经有一个相同项目性质的业绩目标。")
|
|
|
|
|
|
|
|
return cleaned_data
|
|
|
|
|
2024-06-07 03:47:15 +08:00
|
|
|
|
|
|
|
class EmployeePerformanceTargetForm(forms.ModelForm):
|
|
|
|
class Meta:
|
|
|
|
model = EmployeePerformanceTarget
|
|
|
|
fields = '__all__'
|
|
|
|
widgets = {
|
|
|
|
'name': forms.TextInput(attrs={'class': 'form-control'}),
|
|
|
|
'department': forms.Select(attrs={'class': 'form-control'}),
|
|
|
|
'year': forms.NumberInput(attrs={'class': 'form-control'}),
|
|
|
|
'project_nature': forms.Select(attrs={'class': 'form-control'}),
|
|
|
|
'sales_target': forms.NumberInput(attrs={'class': 'form-control'}),
|
|
|
|
'total_revenue_target': forms.NumberInput(attrs={'class': 'form-control'}),
|
|
|
|
'new_revenue_target': forms.NumberInput(attrs={'class': 'form-control'}),
|
|
|
|
'existing_revenue_target': forms.NumberInput(attrs={'class': 'form-control'}),
|
|
|
|
}
|