mirror of
https://github.com/inventree/InvenTree.git
synced 2025-04-29 20:16:44 +00:00
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:
parent
f9138f4997
commit
37b109b8fc
@ -180,6 +180,18 @@ class StockItem(models.Model):
|
|||||||
def has_tracking_info(self):
|
def has_tracking_info(self):
|
||||||
return self.tracking_info.count() > 0
|
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
|
@transaction.atomic
|
||||||
def stocktake(self, count, user):
|
def stocktake(self, count, user):
|
||||||
""" Perform item stocktake.
|
""" Perform item stocktake.
|
||||||
@ -197,6 +209,11 @@ class StockItem(models.Model):
|
|||||||
self.stocktake_user = user
|
self.stocktake_user = user
|
||||||
self.save()
|
self.save()
|
||||||
|
|
||||||
|
self.add_transaction_note('Stocktake',
|
||||||
|
user,
|
||||||
|
notes='Counted {n} items'.format(n=count),
|
||||||
|
system=True)
|
||||||
|
|
||||||
@transaction.atomic
|
@transaction.atomic
|
||||||
def add_stock(self, amount):
|
def add_stock(self, amount):
|
||||||
""" Add items to stock
|
""" Add items to stock
|
||||||
|
@ -84,8 +84,8 @@
|
|||||||
{% for track in item.tracking_info.all %}
|
{% for track in item.tracking_info.all %}
|
||||||
<li class='list-group-item'>
|
<li class='list-group-item'>
|
||||||
<b>{{ track.title }}</b>
|
<b>{{ track.title }}</b>
|
||||||
{% if track.description %}
|
{% if track.notes %}
|
||||||
<br><br>{{ track.description }}</i>
|
<br><br>{{ track.notes }}</i>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
<span class='badge'>{{ track.date }}</span>
|
<span class='badge'>{{ track.date }}</span>
|
||||||
</li>
|
</li>
|
||||||
|
@ -137,6 +137,28 @@ class StockItemMove(AjaxUpdateView):
|
|||||||
ajax_submit_text = 'Move'
|
ajax_submit_text = 'Move'
|
||||||
form_class = MoveStockItemForm
|
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):
|
class StockItemStocktake(AjaxUpdateView):
|
||||||
model = StockItem
|
model = StockItem
|
||||||
@ -150,12 +172,10 @@ class StockItemStocktake(AjaxUpdateView):
|
|||||||
form = self.form_class(request.POST, instance=self.get_object())
|
form = self.form_class(request.POST, instance=self.get_object())
|
||||||
|
|
||||||
if form.is_valid():
|
if form.is_valid():
|
||||||
obj = form.save()
|
|
||||||
|
|
||||||
obj.stocktake_date = datetime.datetime.now()
|
obj = self.get_object()
|
||||||
obj.stocktake_user = request.user
|
|
||||||
|
|
||||||
obj.save()
|
obj.stocktake(form.data['quantity'], request.user)
|
||||||
|
|
||||||
data = {
|
data = {
|
||||||
'form_valid': form.is_valid()
|
'form_valid': form.is_valid()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user