diff --git a/InvenTree/stock/models.py b/InvenTree/stock/models.py index 528349931c..8bec540b20 100644 --- a/InvenTree/stock/models.py +++ b/InvenTree/stock/models.py @@ -180,6 +180,18 @@ class StockItem(models.Model): def has_tracking_info(self): return self.tracking_info.count() > 0 + def add_transaction_note(self, title, user, notes='', system=True): + track = StockItemTracking.objects.create( + item=self, + title=title, + user=user, + date=datetime.now().date(), + notes=notes, + system=system + ) + + track.save() + @transaction.atomic def stocktake(self, count, user): """ Perform item stocktake. @@ -197,6 +209,11 @@ class StockItem(models.Model): self.stocktake_user = user self.save() + self.add_transaction_note('Stocktake', + user, + notes='Counted {n} items'.format(n=count), + system=True) + @transaction.atomic def add_stock(self, amount): """ Add items to stock diff --git a/InvenTree/stock/templates/stock/item.html b/InvenTree/stock/templates/stock/item.html index c0fa277896..b3b4b8ad6a 100644 --- a/InvenTree/stock/templates/stock/item.html +++ b/InvenTree/stock/templates/stock/item.html @@ -84,8 +84,8 @@ {% for track in item.tracking_info.all %}
  • {{ track.title }} - {% if track.description %} -

    {{ track.description }} + {% if track.notes %} +

    {{ track.notes }} {% endif %} {{ track.date }}
  • diff --git a/InvenTree/stock/views.py b/InvenTree/stock/views.py index e3f38724bd..3a28b715d4 100644 --- a/InvenTree/stock/views.py +++ b/InvenTree/stock/views.py @@ -137,6 +137,28 @@ class StockItemMove(AjaxUpdateView): ajax_submit_text = 'Move' form_class = MoveStockItemForm + def post(self, request, *args, **kwargs): + form = self.form_class(request.POST, instance=self.get_object()) + + if form.is_valid(): + obj = form.save() + + try: + loc = StockLocation.objects.get(pk=form['location'].value()) + loc_path = loc.pathstring + except StockLocation.DoesNotExist: + loc_path = '' + + obj.add_transaction_note("Moved item to '{where}'".format(where=loc_path), + request.user, + system=True) + + data = { + 'form_valid': form.is_valid(), + } + + return self.renderJsonResponse(request, form, data) + class StockItemStocktake(AjaxUpdateView): model = StockItem @@ -150,12 +172,10 @@ class StockItemStocktake(AjaxUpdateView): 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 = self.get_object() - obj.save() + obj.stocktake(form.data['quantity'], request.user) data = { 'form_valid': form.is_valid()