mirror of
				https://github.com/inventree/InvenTree.git
				synced 2025-10-31 13:15:43 +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:
		| @@ -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 | ||||
|   | ||||
| @@ -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> | ||||
|   | ||||
| @@ -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() | ||||
|   | ||||
		Reference in New Issue
	
	Block a user