56 lines
2.5 KiB
Python
56 lines
2.5 KiB
Python
from django import forms
|
|
from .models import PurchaseOrder, PurchaseOrderItem
|
|
from inventory.models import Product, Supplier
|
|
|
|
class PurchaseOrderForm(forms.ModelForm):
|
|
"""Form for creating and editing purchase orders"""
|
|
|
|
class Meta:
|
|
model = PurchaseOrder
|
|
fields = ['supplier', 'date', 'expected_delivery_date', 'status', 'notes', 'terms_conditions']
|
|
widgets = {
|
|
'date': forms.DateInput(attrs={'type': 'date'}),
|
|
'expected_delivery_date': forms.DateInput(attrs={'type': 'date'}),
|
|
'notes': forms.Textarea(attrs={'rows': 3}),
|
|
'terms_conditions': forms.Textarea(attrs={'rows': 3}),
|
|
}
|
|
|
|
def __init__(self, *args, **kwargs):
|
|
super().__init__(*args, **kwargs)
|
|
# Update the supplier field queryset to only show active suppliers
|
|
from inventory.models import Supplier
|
|
self.fields['supplier'].queryset = Supplier.objects.filter(is_active=True).order_by('name')
|
|
self.fields['supplier'].widget.attrs.update({'class': 'form-control'})
|
|
|
|
# Add Bootstrap classes to other fields
|
|
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'})
|
|
elif isinstance(field.widget, forms.DateInput):
|
|
field.widget.attrs.update({'class': 'form-control'})
|
|
elif not isinstance(field.widget, forms.Select): # Skip Select widgets as we already handled them
|
|
field.widget.attrs.update({'class': 'form-control'})
|
|
|
|
# Removed _get_supplier_choices method as it's no longer needed
|
|
|
|
class PurchaseOrderItemForm(forms.ModelForm):
|
|
"""Form for purchase order items"""
|
|
|
|
class Meta:
|
|
model = PurchaseOrderItem
|
|
fields = ['product', 'quantity', 'unit_price', 'description', 'notes']
|
|
widgets = {
|
|
'description': forms.TextInput(),
|
|
'notes': forms.Textarea(attrs={'rows': 2}),
|
|
}
|
|
|
|
def __init__(self, *args, **kwargs):
|
|
super().__init__(*args, **kwargs)
|
|
# Add Bootstrap classes
|
|
for field in self.fields.values():
|
|
if isinstance(field.widget, forms.Textarea):
|
|
field.widget.attrs.update({'class': 'form-control'})
|
|
else:
|
|
field.widget.attrs.update({'class': 'form-control'}) |