88 lines
3.6 KiB
Python
88 lines
3.6 KiB
Python
from django import forms
|
|
from .models import Customer, Supplier, Product, Category
|
|
|
|
class CustomerForm(forms.ModelForm):
|
|
"""Form for creating and editing customers"""
|
|
|
|
class Meta:
|
|
model = Customer
|
|
fields = ['code', 'name', 'customer_type', 'contact_person', 'email', 'phone', 'address', 'credit_limit', 'is_active']
|
|
widgets = {
|
|
'address': forms.Textarea(attrs={'rows': 3}),
|
|
}
|
|
|
|
def __init__(self, *args, **kwargs):
|
|
super().__init__(*args, **kwargs)
|
|
# Add Bootstrap classes
|
|
for field in self.fields.values():
|
|
if isinstance(field.widget, (forms.CheckboxInput, forms.RadioSelect)):
|
|
field.widget.attrs.update({'class': 'form-check-input'})
|
|
elif isinstance(field.widget, forms.Textarea):
|
|
field.widget.attrs.update({'class': 'form-control'})
|
|
else:
|
|
field.widget.attrs.update({'class': 'form-control'})
|
|
|
|
class SupplierForm(forms.ModelForm):
|
|
"""Form for creating and editing suppliers"""
|
|
|
|
class Meta:
|
|
model = Supplier
|
|
fields = ['code', 'name', 'contact_person', 'email', 'phone', 'address', 'credit_limit', 'is_active']
|
|
widgets = {
|
|
'address': forms.Textarea(attrs={'rows': 3}),
|
|
}
|
|
|
|
def __init__(self, *args, **kwargs):
|
|
super().__init__(*args, **kwargs)
|
|
# Add Bootstrap classes
|
|
for field in self.fields.values():
|
|
if isinstance(field.widget, (forms.CheckboxInput, forms.RadioSelect)):
|
|
field.widget.attrs.update({'class': 'form-check-input'})
|
|
elif isinstance(field.widget, forms.Textarea):
|
|
field.widget.attrs.update({'class': 'form-control'})
|
|
else:
|
|
field.widget.attrs.update({'class': 'form-control'})
|
|
|
|
class CategoryForm(forms.ModelForm):
|
|
"""Form for creating and editing product categories"""
|
|
|
|
class Meta:
|
|
model = Category
|
|
fields = ['name', 'description', 'parent', 'is_active']
|
|
widgets = {
|
|
'description': forms.Textarea(attrs={'rows': 3}),
|
|
}
|
|
|
|
def __init__(self, *args, **kwargs):
|
|
super().__init__(*args, **kwargs)
|
|
# Add Bootstrap classes
|
|
for field in self.fields.values():
|
|
if isinstance(field.widget, (forms.CheckboxInput, forms.RadioSelect)):
|
|
field.widget.attrs.update({'class': 'form-check-input'})
|
|
elif isinstance(field.widget, forms.Textarea):
|
|
field.widget.attrs.update({'class': 'form-control'})
|
|
else:
|
|
field.widget.attrs.update({'class': 'form-control'})
|
|
|
|
class ProductForm(forms.ModelForm):
|
|
"""Form for creating and editing products"""
|
|
|
|
class Meta:
|
|
model = Product
|
|
fields = ['code', 'name', 'description', 'category', 'unit', 'current_stock', 'min_stock_level',
|
|
'max_stock_level', 'cost_price', 'selling_price', 'weight', 'dimensions', 'is_active', 'is_manufactured']
|
|
widgets = {
|
|
'description': forms.Textarea(attrs={'rows': 3}),
|
|
'dimensions': forms.TextInput(attrs={'placeholder': 'LxWxH in cm'}),
|
|
}
|
|
|
|
def __init__(self, *args, **kwargs):
|
|
super().__init__(*args, **kwargs)
|
|
# Add Bootstrap classes
|
|
for field in self.fields.values():
|
|
if isinstance(field.widget, (forms.CheckboxInput, forms.RadioSelect)):
|
|
field.widget.attrs.update({'class': 'form-check-input'})
|
|
elif isinstance(field.widget, forms.Textarea):
|
|
field.widget.attrs.update({'class': 'form-control'})
|
|
else:
|
|
field.widget.attrs.update({'class': 'form-control'}) |