diff --git a/InvenTree/common/files.py b/InvenTree/common/files.py index 91fdc61a10..1a4de55cb9 100644 --- a/InvenTree/common/files.py +++ b/InvenTree/common/files.py @@ -102,8 +102,9 @@ class FileManager: ] self.OPTIONAL_HEADERS = [ - 'Unit_Price', - 'Extended_Price', + 'Purchase_Price', + 'Reference', + 'Notes', ] # Update headers diff --git a/InvenTree/common/forms.py b/InvenTree/common/forms.py index 63ed74c378..ba844c3651 100644 --- a/InvenTree/common/forms.py +++ b/InvenTree/common/forms.py @@ -8,6 +8,8 @@ from __future__ import unicode_literals from django import forms from django.utils.translation import gettext as _ +from djmoney.forms.fields import MoneyField + from InvenTree.forms import HelperForm from .files import FileManager @@ -121,6 +123,7 @@ class MatchItem(forms.Form): for row in row_data: # Navigate column data for col in row['data']: + # Create input for required headers if col['column']['guess'] in file_manager.REQUIRED_HEADERS: # Set field name @@ -156,11 +159,37 @@ class MatchItem(forms.Form): # Set field select box self.fields[field_name] = forms.ChoiceField( choices=[('', '-' * 10)] + item_options, - required=True, + required=False, widget=forms.Select(attrs={ 'class': 'select bomselect', }) ) - # Update initial selection + # Update select box when match was found if item_match: + # Make it a required field + self.fields[field_name].required = True + # Update initial value self.fields[field_name].initial = item_match.id + + # Optional entries + elif col['column']['guess'] in file_manager.OPTIONAL_HEADERS: + # Set field name + field_name = col['column']['guess'].lower() + '-' + str(row['index']) + # Get value + value = row.get(col['column']['guess'].lower(), '') + # Set field input box + if 'price' in col['column']['guess'].lower(): + self.fields[field_name] = MoneyField( + label=_(col['column']['guess']), + default_currency='USD', + decimal_places=5, + max_digits=19, + required=False, + default_amount=value, + ) + else: + self.fields[field_name] = forms.Input( + required=True, + widget=forms.Select(attrs={ + }) + ) diff --git a/InvenTree/common/views.py b/InvenTree/common/views.py index 6186732ff2..3ebc18f5c4 100644 --- a/InvenTree/common/views.py +++ b/InvenTree/common/views.py @@ -191,6 +191,7 @@ class FileManagementFormView(MultiStepFormView): # Set keys for item matching key_item_select = 'item_select' key_quantity_select = 'quantity' + key_price_select = 'price' def get_context_data(self, form, **kwargs): context = super().get_context_data(form=form, **kwargs) @@ -314,6 +315,19 @@ class FileManagementFormView(MultiStepFormView): self.column_selections[col_name] = value def set_form_table_data(self, form=None): + """ Set the form table data """ + + if self.column_names: + # Re-construct the column data + self.columns = [] + + for key in self.column_names: + header = ({ + 'name': key, + 'guess': self.column_selections.get(key, ''), + }) + self.columns.append(header) + if self.row_data: # Re-construct the row data self.rows = [] @@ -323,12 +337,12 @@ class FileManagementFormView(MultiStepFormView): items = [] for col_idx in sorted(row.keys()): - value = row[col_idx] items.append(value) self.rows.append({ 'index': row_idx, + 'column': self.columns[row_idx], 'data': items, 'errors': {}, }) @@ -370,17 +384,8 @@ class FileManagementFormView(MultiStepFormView): row['item_select'] = self.key_item_select + '-' + str(row['index']) # Add quantity select field row['quantity_select'] = self.key_quantity_select + '-' + str(row['index']) - - if self.column_names: - # Re-construct the column data - self.columns = [] - - for key in self.column_names: - header = ({ - 'name': key, - 'guess': self.column_selections.get(key, ''), - }) - self.columns.append(header) + # Add price select field + row['price_select'] = self.key_price_select + '-' + str(row['index']) def get_column_index(self, name): """ Return the index of the column with the given name. diff --git a/InvenTree/order/templates/order/order_wizard/match_parts.html b/InvenTree/order/templates/order/order_wizard/match_parts.html index aa9776085f..0808ac4259 100644 --- a/InvenTree/order/templates/order/order_wizard/match_parts.html +++ b/InvenTree/order/templates/order/order_wizard/match_parts.html @@ -48,7 +48,7 @@
{{ row.errors.quantity }}
{% endif %} + {% elif item.column.guess == 'Purchase_Price' %} + {% for field in form.visible_fields %} + {% if field.name == row.price_select %} + {{ field }} + {% endif %} + {% endfor %} {% else %} {{ item.cell }} {% endif %} diff --git a/InvenTree/order/templates/order/order_wizard/po_upload.html b/InvenTree/order/templates/order/order_wizard/po_upload.html index 84a28cf0a3..a281725173 100644 --- a/InvenTree/order/templates/order/order_wizard/po_upload.html +++ b/InvenTree/order/templates/order/order_wizard/po_upload.html @@ -13,6 +13,7 @@ {% endblock %} {% block details %} +{% if order.status == PurchaseOrderStatus.PENDING and roles.purchase_order.change %}{% blocktrans with step=wizard.steps.step1 count=wizard.steps.count %}Step {{step}} of {{count}}{% endblocktrans %} {% if description %}- {{ description }}{% endif %}
@@ -42,6 +43,11 @@ {% endblock form_buttons_bottom %} +{% else %} +