from django import forms from .models import Supplier, Faktur, Medicine, Batch, StockTransaction, Category class CategoryForm(forms.ModelForm): class Meta: model = Category fields = ['name', 'description'] widgets = { 'name': forms.TextInput(attrs={'class': 'form-control'}), 'description': forms.Textarea(attrs={'class': 'form-control', 'rows': 3}), } class SupplierForm(forms.ModelForm): class Meta: model = Supplier fields = ['name', 'contact_person', 'phone', 'address'] widgets = { 'name': forms.TextInput(attrs={'class': 'form-control'}), 'contact_person': forms.TextInput(attrs={'class': 'form-control'}), 'phone': forms.TextInput(attrs={'class': 'form-control'}), 'address': forms.Textarea(attrs={'class': 'form-control', 'rows': 3}), } class MedicineForm(forms.ModelForm): class Meta: model = Medicine fields = ['name', 'category', 'sku', 'unit', 'min_stock', 'main_supplier', 'alternative_supplier'] widgets = { 'name': forms.TextInput(attrs={'class': 'form-control'}), 'category': forms.Select(attrs={'class': 'form-control'}), 'sku': forms.TextInput(attrs={'class': 'form-control'}), 'unit': forms.Select(attrs={'class': 'form-control'}), 'min_stock': forms.NumberInput(attrs={'class': 'form-control'}), 'main_supplier': forms.Select(attrs={'class': 'form-control'}), 'alternative_supplier': forms.Select(attrs={'class': 'form-control'}), } class FakturForm(forms.ModelForm): class Meta: model = Faktur fields = ['faktur_number', 'supplier', 'date', 'faktur_type', 'notes'] widgets = { 'faktur_number': forms.TextInput(attrs={'class': 'form-control'}), 'supplier': forms.Select(attrs={'class': 'form-control'}), 'date': forms.DateInput(attrs={'class': 'form-control', 'type': 'date'}), 'faktur_type': forms.Select(attrs={'class': 'form-control'}), 'notes': forms.Textarea(attrs={'class': 'form-control', 'rows': 2}), } class StockInForm(forms.Form): medicine = forms.ModelChoiceField( queryset=Medicine.objects.all(), label="Nama Barang", widget=forms.Select(attrs={'class': 'form-control select2'}) ) batch_number = forms.CharField( label="Nomor Batch/Lot", widget=forms.TextInput(attrs={'class': 'form-control'}) ) expiry_date = forms.DateField( label="Tanggal Kadaluarsa", widget=forms.DateInput(attrs={'class': 'form-control', 'type': 'date'}) ) quantity = forms.IntegerField( label="Jumlah", widget=forms.NumberInput(attrs={'class': 'form-control'}) ) buying_price = forms.DecimalField( label="Harga Beli", widget=forms.NumberInput(attrs={'class': 'form-control'}) ) selling_price = forms.DecimalField( label="Harga Jual", widget=forms.NumberInput(attrs={'class': 'form-control'}) ) class StockOutForm(forms.Form): medicine = forms.ModelChoiceField( queryset=Medicine.objects.all(), label="Pilih Barang", widget=forms.Select(attrs={'class': 'form-control select2', 'id': 'id_medicine_out'}) ) batch = forms.ModelChoiceField( queryset=Batch.objects.none(), label="Pilih Batch", widget=forms.Select(attrs={'class': 'form-control', 'id': 'id_batch_out'}) ) quantity = forms.IntegerField( label="Jumlah Keluar", widget=forms.NumberInput(attrs={'class': 'form-control'}) ) note = forms.CharField( label="Keterangan", required=False, widget=forms.TextInput(attrs={'class': 'form-control'}) ) def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) if 'medicine' in self.data: try: medicine_id = int(self.data.get('medicine')) self.fields['batch'].queryset = Batch.objects.filter(medicine_id=medicine_id, quantity__gt=0) except (ValueError, TypeError): pass elif self.initial.get('medicine'): self.fields['batch'].queryset = Batch.objects.filter(medicine_id=self.initial.get('medicine'), quantity__gt=0)