Require either serial or batch number to be set for trackable part

This commit is contained in:
Oliver Walters 2020-10-27 22:00:38 +11:00
parent 54d5d2899e
commit 646fe40950
2 changed files with 15 additions and 8 deletions

View File

@ -200,6 +200,13 @@ class StockItem(MPTTModel):
super(StockItem, self).validate_unique(exclude) super(StockItem, self).validate_unique(exclude)
# If the part is trackable, either serial number or batch number must be set
if self.part.trackable:
if not self.serial and not self.batch:
msg = _('Serial or batch number must be specified for trackable stock')
raise ValidationError(msg)
# If the serial number is set, make sure it is not a duplicate
if self.serial is not None: if self.serial is not None:
# Query to look for duplicate serial numbers # Query to look for duplicate serial numbers
parts = PartModels.Part.objects.filter(tree_id=self.part.tree_id) parts = PartModels.Part.objects.filter(tree_id=self.part.tree_id)

View File

@ -3,25 +3,25 @@
<div id='button-toolbar'> <div id='button-toolbar'>
<div class='button-toolbar container-fluid' style='float: right;'> <div class='button-toolbar container-fluid' style='float: right;'>
<div class='btn-group'> <div class='btn-group'>
<button class='btn btn-default' id='stock-export' title='{% trans "Export Stock Information" %}'>{% trans "Export" %}</button> <button class='btn btn-default' id='stock-export' title='{% trans "Export Stock Information" %}'><span class='fas fa-file-download'></span> {% trans "Export" %}</button>
{% if read_only %} {% if read_only %}
{% else %} {% else %}
{% if roles.stock.add %} {% if roles.stock.add %}
<button class="btn btn-success" id='item-create'>{% trans "New Stock Item" %}</button> <button class="btn btn-success" id='item-create'><span class='fas fa-plus-circle'></span> {% trans "New Stock Item" %}</button>
{% endif %} {% endif %}
{% if roles.stock.change or roles.stock.delete %} {% if roles.stock.change or roles.stock.delete %}
<div class="btn-group"> <div class="btn-group">
<button id='stock-options' class="btn btn-primary dropdown-toggle" type="button" data-toggle="dropdown">{% trans "Options" %}<span class="caret"></span></button> <button id='stock-options' class="btn btn-primary dropdown-toggle" type="button" data-toggle="dropdown">{% trans "Options" %}<span class="caret"></span></button>
<ul class="dropdown-menu"> <ul class="dropdown-menu">
{% if roles.stock.change %} {% if roles.stock.change %}
<li><a href="#" id='multi-item-add' title='{% trans "Add to selected stock items" %}'>{% trans "Add stock" %}</a></li> <li><a href="#" id='multi-item-add' title='{% trans "Add to selected stock items" %}'><span class='fas fa-plus-circle'></span> {% trans "Add stock" %}</a></li>
<li><a href="#" id='multi-item-remove' title='{% trans "Remove from selected stock items" %}'>{% trans "Remove stock" %}</a></li> <li><a href="#" id='multi-item-remove' title='{% trans "Remove from selected stock items" %}'><span class='fas fa-minus-circle'></span> {% trans "Remove stock" %}</a></li>
<li><a href="#" id='multi-item-stocktake' title='{% trans "Stocktake selected stock items" %}'>{% trans "Count stock" %}</a></li> <li><a href="#" id='multi-item-stocktake' title='{% trans "Stocktake selected stock items" %}'><span class='fas fa-check-circle'></span> {% trans "Count stock" %}</a></li>
<li><a href='#' id='multi-item-move' title='{% trans "Move selected stock items" %}'>{% trans "Move stock" %}</a></li> <li><a href='#' id='multi-item-move' title='{% trans "Move selected stock items" %}'><span class='fas fa-exchange-alt'></span> {% trans "Move stock" %}</a></li>
<li><a href='#' id='multi-item-order' title='{% trans "Order selected items" %}'>{% trans "Order stock" %}</a></li> <li><a href='#' id='multi-item-order' title='{% trans "Order selected items" %}'><span class='fas fa-shopping-cart'></span> {% trans "Order stock" %}</a></li>
{% endif %} {% endif %}
{% if roles.stock.delete %} {% if roles.stock.delete %}
<li><a href='#' id='multi-item-delete' title='{% trans "Delete selected items" %}'>{% trans "Delete Stock" %}</a></li> <li><a href='#' id='multi-item-delete' title='{% trans "Delete selected items" %}'><span class='fas fa-trash-alt'></span> {% trans "Delete Stock" %}</a></li>
{% endif %} {% endif %}
</ul> </ul>
</div> </div>