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(' ', '')
clean_number = Decimal(number)
except InvalidOperation: # Guess what type of decimal and thousands separators are used
clean_number = number 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)
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,50 +1,74 @@
{% 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 details %} {% block page_content %}
{% if order.status == PurchaseOrderStatus.PENDING and roles.purchase_order.change %}
<p>{% blocktrans with step=wizard.steps.step1 count=wizard.steps.count %}Step {{step}} of {{count}}{% endblocktrans %} <div class='panel panel-default panel-inventree' id='panel-upload-file'>
{% if description %}- {{ description }}{% endif %}</p> <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 %}
{% if order.status == PurchaseOrderStatus.PENDING and roles.purchase_order.change %}
{% block form_alert %} <p>{% blocktrans with step=wizard.steps.step1 count=wizard.steps.count %}Step {{step}} of {{count}}{% endblocktrans %}
{% endblock form_alert %} {% if description %}- {{ description }}{% endif %}</p>
<form action="" method="post" class='js-modal-form' enctype="multipart/form-data"> {% block form_alert %}
{% csrf_token %} {% endblock form_alert %}
{% load crispy_forms_tags %}
{% block form_buttons_top %} <form action="" method="post" class='js-modal-form' enctype="multipart/form-data">
{% endblock form_buttons_top %} {% csrf_token %}
{% load crispy_forms_tags %}
<table class='table table-striped' style='margin-top: 12px; margin-bottom: 0px'> {% block form_buttons_top %}
{{ wizard.management_form }} {% endblock form_buttons_top %}
{% block form_content %}
{% crispy wizard.form %}
{% endblock form_content %}
</table>
{% block form_buttons_bottom %} <table class='table table-striped' style='margin-top: 12px; margin-bottom: 0px'>
{% if wizard.steps.prev %} {{ wizard.management_form }}
<button name="wizard_goto_step" type="submit" value="{{ wizard.steps.prev }}" class="save btn btn-default">{% trans "Previous Step" %}</button> {% block form_content %}
{% endif %} {% crispy wizard.form %}
<button type="submit" class="save btn btn-default">{% trans "Upload File" %}</button> {% endblock form_content %}
</form> </table>
{% endblock form_buttons_bottom %}
{% else %} {% block form_buttons_bottom %}
<div class='alert alert-danger alert-block' role='alert'> {% if wizard.steps.prev %}
{% trans "Order is already processed. Files cannot be uploaded." %} <button name="wizard_goto_step" type="submit" value="{{ wizard.steps.prev }}" class="save btn btn-default">{% trans "Previous Step" %}</button>
</div> {% endif %}
{% endif %} <button type="submit" class="save btn btn-default">{% trans "Upload File" %}</button>
{% endblock details %} </form>
{% endblock form_buttons_bottom %}
{% else %}
<div class='alert alert-danger alert-block' role='alert'>
{% trans "Order is already processed. Files cannot be uploaded." %}
</div>
{% endif %}
{% 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: