diff --git a/InvenTree/stock/forms.py b/InvenTree/stock/forms.py
index 1727c35329..ca9d6f6360 100644
--- a/InvenTree/stock/forms.py
+++ b/InvenTree/stock/forms.py
@@ -46,6 +46,16 @@ class MoveStockItemForm(forms.ModelForm):
]
+class StocktakeForm(forms.ModelForm):
+
+ class Meta:
+ model = StockItem
+
+ fields = [
+ 'quantity',
+ ]
+
+
class EditStockItemForm(HelperForm):
class Meta:
diff --git a/InvenTree/stock/serializers.py b/InvenTree/stock/serializers.py
index db253d69c5..a9c5c3248a 100644
--- a/InvenTree/stock/serializers.py
+++ b/InvenTree/stock/serializers.py
@@ -15,6 +15,7 @@ class StockItemSerializer(serializers.ModelSerializer):
'part',
'supplier_part',
'location',
+ 'in_stock',
'belongs_to',
'customer',
'quantity',
diff --git a/InvenTree/stock/templates/stock/item.html b/InvenTree/stock/templates/stock/item.html
index 18ed7c507e..c0fa277896 100644
--- a/InvenTree/stock/templates/stock/item.html
+++ b/InvenTree/stock/templates/stock/item.html
@@ -97,6 +97,7 @@
{% if item.in_stock %}
+
{% endif %}
@@ -127,6 +128,15 @@
reload: true,
});
});
+
+ $("#stocktake").click(function() {
+ launchModalForm("#modal-form",
+ "{% url 'stock-item-stocktake' item.id %}",
+ {
+ reload: true
+ });
+ });
+
{% endif %}
$("#delete-item").click(function () {
diff --git a/InvenTree/stock/urls.py b/InvenTree/stock/urls.py
index 2f4d0c1c67..090ffcac53 100644
--- a/InvenTree/stock/urls.py
+++ b/InvenTree/stock/urls.py
@@ -15,6 +15,8 @@ stock_item_detail_urls = [
url(r'^edit/?', views.StockItemEdit.as_view(), name='stock-item-edit'),
url(r'^delete/?', views.StockItemDelete.as_view(), name='stock-item-delete'),
url(r'^move/?', views.StockItemMove.as_view(), name='stock-item-move'),
+ url(r'^stocktake/?', views.StockItemStocktake.as_view(), name='stock-item-stocktake'),
+
url('^.*$', views.StockItemDetail.as_view(), name='stock-item-detail'),
]
diff --git a/InvenTree/stock/views.py b/InvenTree/stock/views.py
index c3bcfe4a82..e3f38724bd 100644
--- a/InvenTree/stock/views.py
+++ b/InvenTree/stock/views.py
@@ -10,10 +10,13 @@ from InvenTree.views import AjaxUpdateView, AjaxDeleteView, AjaxCreateView
from part.models import Part
from .models import StockItem, StockLocation
+import datetime
+
from .forms import EditStockLocationForm
from .forms import CreateStockItemForm
from .forms import EditStockItemForm
from .forms import MoveStockItemForm
+from .forms import StocktakeForm
class StockIndex(ListView):
model = StockItem
@@ -135,3 +138,29 @@ class StockItemMove(AjaxUpdateView):
form_class = MoveStockItemForm
+class StockItemStocktake(AjaxUpdateView):
+ model = StockItem
+ template_name = 'modal_form.html'
+ context_object_name = 'item'
+ ajax_form_title = 'Item stocktake'
+ form_class = StocktakeForm
+
+ def post(self, request, *args, **kwargs):
+
+ form = self.form_class(request.POST, instance=self.get_object())
+
+ if form.is_valid():
+ obj = form.save()
+
+ obj.stocktake_date = datetime.datetime.now()
+ obj.stocktake_user = request.user
+
+ obj.save()
+
+ data = {
+ 'form_valid': form.is_valid()
+ }
+
+ return self.renderJsonResponse(request, form, data)
+
+