Updated PO upload template, moved call to button, improved cleaned_decimal method to handle comma separator

This commit is contained in:
eeintech 2021-07-19 14:20:54 -04:00
parent af68ea23c3
commit 23db7a89a9
5 changed files with 85 additions and 58 deletions

View File

@ -631,13 +631,30 @@ def clean_decimal(number):
""" Clean-up decimal value """ """ Clean-up decimal value """
# Check if empty # Check if empty
if number is None or number == '': if number is None or number == '' or number == 0:
return Decimal(0) return Decimal(0)
# Check if decimal type # Convert to string and remove spaces
try: number = str(number).replace(' ', '')
# Guess what type of decimal and thousands separators are used
count_comma = number.count(',')
count_point = number.count('.')
if count_comma == 1:
# Comma is used as decimal separator
if count_point > 0:
# Points are used as thousands separators: remove them
number = number.replace('.', '')
# Replace decimal separator with point
number = number.replace(',', '.')
elif count_point == 1:
# Point is used as decimal separator
if count_comma > 0:
# Commas are used as thousands separators: remove them
number = number.replace(',', '')
# Convert to Decimal type
clean_number = Decimal(number) clean_number = Decimal(number)
except InvalidOperation:
clean_number = number
return clean_number.quantize(Decimal(1)) if clean_number == clean_number.to_integral() else clean_number.normalize() return clean_number.quantize(Decimal(1)) if clean_number == clean_number.to_integral() else clean_number.normalize()

View File

@ -1,13 +1,34 @@
{% extends "order/order_base.html" %} {% extends "order/purchase_order_detail.html" %}
{% load inventree_extras %} {% load inventree_extras %}
{% load i18n %} {% load i18n %}
{% load static %} {% load static %}
{% block heading %} {% block menubar %}
{% trans "Upload File for Purchase Order" %} <ul class='list-group'>
{{ wizard.form.media }} <li class='list-group-item'>
<a href='#' id='po-menu-toggle'>
<span class='menu-tab-icon fas fa-expand-arrows-alt'></span>
</a>
</li>
<li class='list-group-item' title='{% trans "Return To Order" %}'>
<a href='{% url "po-detail" order.id %}' id='select-upload-file' class='nav-toggle'>
<span class='fas fa-undo side-icon'></span>
{% trans "Return To Order" %}
</a>
</li>
</ul>
{% endblock %} {% endblock %}
{% block page_content %}
<div class='panel panel-default panel-inventree' id='panel-upload-file'>
<div class='panel-heading'>
{% block heading %}
<h4>{% trans "Upload File for Purchase Order" %}</h4>
{{ wizard.form.media }}
{% endblock %}
</div>
<div class='panel-content'>
{% block details %} {% block details %}
{% if order.status == PurchaseOrderStatus.PENDING and roles.purchase_order.change %} {% if order.status == PurchaseOrderStatus.PENDING and roles.purchase_order.change %}
@ -45,6 +66,9 @@
</div> </div>
{% endif %} {% endif %}
{% endblock details %} {% endblock details %}
</div>
{% endblock %}
{% block js_ready %} {% block js_ready %}
{{ block.super }} {{ block.super }}

View File

@ -15,14 +15,6 @@
{% trans "Order Items" %} {% trans "Order Items" %}
</a> </a>
</li> </li>
{% if order.status == PurchaseOrderStatus.PENDING and roles.purchase_order.change %}
<li class='list-group-item' title='{% trans "Upload File" %}'>
<a href='{% url "po-upload" order.id %}'>
<span class='fas fa-file-upload side-icon'></span>
{% trans "Upload File" %}
</a>
</li>
{% endif %}
<li class='list-group-item' title='{% trans "Received Stock Items" %}'> <li class='list-group-item' title='{% trans "Received Stock Items" %}'>
<a href='#' id='select-received-items' class='nav-toggle'> <a href='#' id='select-received-items' class='nav-toggle'>
<span class='fas fa-sign-in-alt side-icon'></span> <span class='fas fa-sign-in-alt side-icon'></span>

View File

@ -22,6 +22,9 @@
<button type='button' class='btn btn-primary' id='new-po-line'> <button type='button' class='btn btn-primary' id='new-po-line'>
<span class='fas fa-plus-circle'></span> {% trans "Add Line Item" %} <span class='fas fa-plus-circle'></span> {% trans "Add Line Item" %}
</button> </button>
<a class='btn btn-primary' href='{% url "po-upload" order.id %}' role='button'>
<span class='fas fa-file-upload side-icon'></span> {% trans "Upload File" %}
</a>
{% endif %} {% endif %}
</div> </div>

View File

@ -393,16 +393,7 @@ class PurchaseOrderUpload(FileManagementFormView):
p_val = row['data'][p_idx]['cell'] p_val = row['data'][p_idx]['cell']
if p_val: if p_val:
# Delete commas row['purchase_price'] = p_val
p_val = p_val.replace(',', '')
try:
# Attempt to extract a valid decimal value from the field
purchase_price = Decimal(p_val)
# Store the 'purchase_price' value
row['purchase_price'] = purchase_price
except (ValueError, InvalidOperation):
pass
# Check if there is a column corresponding to "reference" # Check if there is a column corresponding to "reference"
if r_idx >= 0: if r_idx >= 0: