From 66876619285bf3df00359e8ab0b83aeb81af519e Mon Sep 17 00:00:00 2001 From: eeintech Date: Mon, 5 Jul 2021 17:36:10 -0400 Subject: [PATCH] Fixes for stock modal and notes propagation to tracking items --- InvenTree/stock/models.py | 2 +- InvenTree/stock/views.py | 58 +++++++++++++++++++-------------------- 2 files changed, 29 insertions(+), 31 deletions(-) diff --git a/InvenTree/stock/models.py b/InvenTree/stock/models.py index 9b3a95a20c..ee10bd3ed7 100644 --- a/InvenTree/stock/models.py +++ b/InvenTree/stock/models.py @@ -1211,7 +1211,7 @@ class StockItem(MPTTModel): # We need to split the stock! # Split the existing StockItem in two - self.splitStock(quantity, location, user) + self.splitStock(quantity, location, user, **{'notes': notes}) return True diff --git a/InvenTree/stock/views.py b/InvenTree/stock/views.py index 280b1bb533..06f9b05b20 100644 --- a/InvenTree/stock/views.py +++ b/InvenTree/stock/views.py @@ -810,6 +810,20 @@ class StockAdjust(AjaxView, FormMixin): return items + def get_stock_action_titles(self): + + # Choose form title and action column based on the action + titles = { + 'move': [_('Move Stock Items'), _('Move')], + 'count': [_('Count Stock Items'), _('Count')], + 'take': [_('Remove From Stock'), _('Take')], + 'add': [_('Add Stock Items'), _('Add')], + 'delete': [_('Delete Stock Items'), _('Delete')], + } + + self.ajax_form_title = titles[self.stock_action][0] + self.stock_action_title = titles[self.stock_action][1] + def get_context_data(self): context = super().get_context_data() @@ -818,6 +832,7 @@ class StockAdjust(AjaxView, FormMixin): context['stock_action'] = self.stock_action.strip().lower() + self.get_stock_action_titles() context['stock_action_title'] = self.stock_action_title # Quantity column will be read-only in some circumstances @@ -846,18 +861,6 @@ class StockAdjust(AjaxView, FormMixin): if self.stock_action not in ['move', 'count', 'take', 'add', 'delete']: self.stock_action = 'count' - # Choose form title and action column based on the action - titles = { - 'move': [_('Move Stock Items'), _('Move')], - 'count': [_('Count Stock Items'), _('Count')], - 'take': [_('Remove From Stock'), _('Take')], - 'add': [_('Add Stock Items'), _('Add')], - 'delete': [_('Delete Stock Items'), _('Delete')], - } - - self.ajax_form_title = titles[self.stock_action][0] - self.stock_action_title = titles[self.stock_action][1] - # Save list of items! self.stock_items = self.get_GET_items() @@ -908,7 +911,7 @@ class StockAdjust(AjaxView, FormMixin): } if valid: - result = self.do_action() + result = self.do_action(note=form.cleaned_data['note']) data['success'] = result @@ -925,9 +928,9 @@ class StockAdjust(AjaxView, FormMixin): # Instruct the form to redirect data['url'] = reverse('stock-index') - return self.renderJsonResponse(request, form, data=data) + return self.renderJsonResponse(request, form, data=data, context=self.get_context_data()) - def do_action(self): + def do_action(self, note=None): """ Perform stock adjustment action """ if self.stock_action == 'move': @@ -942,27 +945,26 @@ class StockAdjust(AjaxView, FormMixin): except ValueError: pass - return self.do_move(destination, set_default_loc) + return self.do_move(destination, set_default_loc, note=note) elif self.stock_action == 'add': - return self.do_add() + return self.do_add(note=note) elif self.stock_action == 'take': - return self.do_take() + return self.do_take(note=note) elif self.stock_action == 'count': - return self.do_count() + return self.do_count(note=note) elif self.stock_action == 'delete': - return self.do_delete() + return self.do_delete(note=note) else: return _('No action performed') - def do_add(self): + def do_add(self, note=None): count = 0 - note = self.request.POST['note'] for item in self.stock_items: if item.new_quantity <= 0: @@ -974,10 +976,9 @@ class StockAdjust(AjaxView, FormMixin): return _('Added stock to {n} items').format(n=count) - def do_take(self): + def do_take(self, note=None): count = 0 - note = self.request.POST['note'] for item in self.stock_items: if item.new_quantity <= 0: @@ -989,10 +990,9 @@ class StockAdjust(AjaxView, FormMixin): return _('Removed stock from {n} items').format(n=count) - def do_count(self): + def do_count(self, note=None): count = 0 - note = self.request.POST['note'] for item in self.stock_items: @@ -1002,13 +1002,11 @@ class StockAdjust(AjaxView, FormMixin): return _("Counted stock for {n} items".format(n=count)) - def do_move(self, destination, set_loc=None): + def do_move(self, destination, set_loc=None, note=None): """ Perform actual stock movement """ count = 0 - note = self.request.POST['note'] - for item in self.stock_items: # Avoid moving zero quantity if item.new_quantity <= 0: @@ -1022,7 +1020,7 @@ class StockAdjust(AjaxView, FormMixin): # Do not move to the same location (unless the quantity is different) if destination == item.location and item.new_quantity == item.quantity: continue - + item.move(destination, note, self.request.user, quantity=item.new_quantity) count += 1