First pass of automated tracking data

- When stock item is moved
- When stocktake is performed
- Yes it is  bad - needs improvement!
This commit is contained in:
Oliver 2018-04-30 21:36:50 +10:00
parent f9138f4997
commit 37b109b8fc
3 changed files with 43 additions and 6 deletions

View File

@ -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

View File

@ -84,8 +84,8 @@
{% for track in item.tracking_info.all %}
<li class='list-group-item'>
<b>{{ track.title }}</b>
{% if track.description %}
<br><br>{{ track.description }}</i>
{% if track.notes %}
<br><br>{{ track.notes }}</i>
{% endif %}
<span class='badge'>{{ track.date }}</span>
</li>

View File

@ -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()