diff --git a/InvenTree/stock/forms.py b/InvenTree/stock/forms.py index a05c8caef0..6614d67d72 100644 --- a/InvenTree/stock/forms.py +++ b/InvenTree/stock/forms.py @@ -45,13 +45,34 @@ class CreateStockItemForm(HelperForm): class MoveStockItemForm(forms.ModelForm): """ Form for moving a StockItem to a new location """ + def get_location_choices(self): + locs = StockLocation.objects.all() + + choices = [(None, '---------')] + + for loc in locs: + choices.append((loc.pk, loc.pathstring + ' - ' + loc.description)) + + return choices + + location = forms.ChoiceField(label='Destination', required=True, help_text='Destination stock location') note = forms.CharField(label='Notes', required=True, help_text='Add note (required)') + transaction = forms.BooleanField(required=False, initial=False, label='Create Transaction', help_text='Create a stock transaction for these parts') + confirm = forms.BooleanField(required=False, initial=False, label='Confirm Stock Movement', help_text='Confirm movement of stock items') + + def __init__(self, *args, **kwargs): + super(MoveStockItemForm, self).__init__(*args, **kwargs) + + self.fields['location'].choices = self.get_location_choices() class Meta: model = StockItem fields = [ 'location', + 'note', + 'transaction', + 'confirm', ] diff --git a/InvenTree/stock/templates/stock/stock_move.html b/InvenTree/stock/templates/stock/stock_move.html new file mode 100644 index 0000000000..c7de8c74b2 --- /dev/null +++ b/InvenTree/stock/templates/stock/stock_move.html @@ -0,0 +1 @@ +{% extends "modal_form.html" %} \ No newline at end of file diff --git a/InvenTree/stock/urls.py b/InvenTree/stock/urls.py index 37e54750de..513fff6cb0 100644 --- a/InvenTree/stock/urls.py +++ b/InvenTree/stock/urls.py @@ -36,6 +36,8 @@ stock_urls = [ url(r'^track/?', views.StockTrackingIndex.as_view(), name='stock-tracking-list'), + url(r'^move/', views.StockItemMoveMultiple.as_view(), name='stock-item-move-multiple'), + # Individual stock items url(r'^item/(?P\d+)/', include(stock_item_detail_urls)), diff --git a/InvenTree/stock/views.py b/InvenTree/stock/views.py index 42ca16d3ba..4d0a2c8af2 100644 --- a/InvenTree/stock/views.py +++ b/InvenTree/stock/views.py @@ -5,10 +5,12 @@ Django views for interacting with Stock app # -*- coding: utf-8 -*- from __future__ import unicode_literals +from django.views.generic.edit import FormMixin from django.views.generic import DetailView, ListView from django.forms.models import model_to_dict from django.forms import HiddenInput +from InvenTree.views import AjaxView from InvenTree.views import AjaxUpdateView, AjaxDeleteView, AjaxCreateView from InvenTree.views import QRCodeView @@ -20,6 +22,7 @@ from .forms import CreateStockItemForm from .forms import EditStockItemForm from .forms import MoveStockItemForm from .forms import StocktakeForm +from .forms import MoveStockItemForm class StockIndex(ListView): @@ -120,6 +123,36 @@ class StockItemQRCode(QRCodeView): return item.format_barcode() except StockItem.DoesNotExist: return None + + +class StockItemMoveMultiple(AjaxView, FormMixin): + """ Move multiple stock items """ + + ajax_template_name = 'stock/stock_move.html' + ajax_form_title = 'Move Stock' + form_class = MoveStockItemForm + + + def get(self, request, *args, **kwargs): + + return self.renderJsonResponse(request, self.form_class()) + + def post(self, request, *args, **kwargs): + + form = self.get_form() + + valid = form.is_valid() + + print("Valid:", valid) + + data = { + 'form_valid': False, + } + + #form.errors['note'] = ['hello world'] + + return self.renderJsonResponse(request, form, data=data) + class StockItemEdit(AjaxUpdateView):