mirror of
https://github.com/inventree/InvenTree
synced 2024-08-30 18:33:04 +00:00
Merge remote-tracking branch 'inventree/master'
This commit is contained in:
commit
4604d7c90d
@ -354,7 +354,7 @@ function renderErrorMessage(xhr) {
|
||||
|
||||
var html = '<b>' + xhr.statusText + '</b><br>';
|
||||
|
||||
html += '<b>Status Code - ' + xhr.status + '</b><br><hr>';
|
||||
html += '<b>Error Code - ' + xhr.status + '</b><br><hr>';
|
||||
|
||||
html += `
|
||||
<div class='panel-group'>
|
||||
@ -811,16 +811,37 @@ function launchModalForm(url, options = {}) {
|
||||
$(modal).modal('hide');
|
||||
|
||||
// Permission denied!
|
||||
if (xhr.status == 403) {
|
||||
if (xhr.status == 400) {
|
||||
showAlertDialog(
|
||||
"Permission Denied",
|
||||
"Error 400: Bad Request",
|
||||
"Server returned error code 400"
|
||||
);
|
||||
} else if (xhr.status == 401) {
|
||||
showAlertDialog(
|
||||
"Error 401: Not Authenticated",
|
||||
"Authentication credentials not supplied"
|
||||
);
|
||||
} else if (xhr.status == 403) {
|
||||
showAlertDialog(
|
||||
"Error 403: Permission Denied",
|
||||
"You do not have the required permissions to access this function"
|
||||
);
|
||||
|
||||
return;
|
||||
} else if (xhr.status == 404) {
|
||||
showAlertDialog(
|
||||
"Error 404: Resource Not Found",
|
||||
"The requested resource could not be located on the server"
|
||||
);
|
||||
} else if (xhr.status == 408) {
|
||||
showAlertDialog(
|
||||
"Error 408: Timeout",
|
||||
"Connection timeout while requesting data from server"
|
||||
);
|
||||
} else {
|
||||
showAlertDialog('Error requesting form data', renderErrorMessage(xhr));
|
||||
}
|
||||
|
||||
showAlertDialog('Error requesting form data', renderErrorMessage(xhr));
|
||||
console.log("Modal form error: " + xhr.status);
|
||||
console.log("Message: " + xhr.responseText);
|
||||
}
|
||||
};
|
||||
|
||||
|
@ -423,12 +423,16 @@ class SupplierPart(models.Model):
|
||||
return str(self)
|
||||
|
||||
def __str__(self):
|
||||
s = "{supplier} ({sku})".format(
|
||||
sku=self.SKU,
|
||||
supplier=self.supplier.name)
|
||||
s = ''
|
||||
|
||||
if self.part.IPN:
|
||||
s += f'{self.part.IPN}'
|
||||
s += ' | '
|
||||
|
||||
s += f'{self.supplier.name} | {self.SKU}'
|
||||
|
||||
if self.manufacturer_string:
|
||||
s = s + ' - ' + self.manufacturer_string
|
||||
s = s + ' | ' + self.manufacturer_string
|
||||
|
||||
return s
|
||||
|
||||
|
@ -94,7 +94,7 @@ src="{% static 'img/blank_image.png' %}"
|
||||
{% block js_ready %}
|
||||
{{ block.super }}
|
||||
|
||||
$('#order-part').click(function() {
|
||||
$('#order-part, #order-part2').click(function() {
|
||||
launchModalForm(
|
||||
"{% url 'order-parts' %}",
|
||||
{
|
||||
|
@ -6,18 +6,18 @@
|
||||
|
||||
{% include "company/supplier_part_tabs.html" with tab='orders' %}
|
||||
|
||||
<hr>
|
||||
|
||||
<h4>{% trans "Supplier Part Orders" %}</h4>
|
||||
|
||||
<div id='button-bar'>
|
||||
<div class='btn-group'>
|
||||
<button class='btn btn-primary' type='button' id='part-order2' title='Order part'>Order Part</button>
|
||||
</div>
|
||||
</div>
|
||||
<hr>
|
||||
|
||||
<table class='table table-striped table-condensed po-table' id='purchase-order-table' data-toolbar='#button-bar'>
|
||||
</table>
|
||||
<div id='button-bar'>
|
||||
<div class='btn-group'>
|
||||
<button class='btn btn-primary' type='button' id='order-part2' title='Order part'>Order Part</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<table class='table table-striped table-condensed po-table' id='purchase-order-table' data-toolbar='#button-bar'>
|
||||
</table>
|
||||
|
||||
{% endblock %}
|
||||
|
||||
|
@ -7,10 +7,10 @@
|
||||
|
||||
{% include "company/supplier_part_tabs.html" with tab='pricing' %}
|
||||
|
||||
<hr>
|
||||
|
||||
<h4>{% trans "Pricing Information" %}</h4>
|
||||
|
||||
<hr>
|
||||
|
||||
<div id='price-break-toolbar' class='btn-group'>
|
||||
<button class='btn btn-primary' id='new-price-break' type='button'>{% trans "Add Price Break" %}</button>
|
||||
</div>
|
||||
|
@ -6,10 +6,10 @@
|
||||
|
||||
{% include "company/supplier_part_tabs.html" with tab='stock' %}
|
||||
|
||||
<hr>
|
||||
|
||||
<h4>{% trans "Supplier Part Stock" %}</h4>
|
||||
|
||||
<hr>
|
||||
|
||||
{% include "stock_table.html" %}
|
||||
|
||||
{% endblock %}
|
||||
|
34
InvenTree/order/templates/order/po_received_items.html
Normal file
34
InvenTree/order/templates/order/po_received_items.html
Normal file
@ -0,0 +1,34 @@
|
||||
{% extends "order/order_base.html" %}
|
||||
|
||||
{% load inventree_extras %}
|
||||
{% load i18n %}
|
||||
{% load static %}
|
||||
|
||||
{% block details %}
|
||||
|
||||
{% include 'order/po_tabs.html' with tab='received' %}
|
||||
|
||||
<h4>{% trans "Received Items" %}</h4>
|
||||
<hr>
|
||||
|
||||
{% include "stock_table.html" with read_only=True %}
|
||||
|
||||
{% endblock %}
|
||||
|
||||
{% block js_ready %}
|
||||
{{ block.super }}
|
||||
|
||||
loadStockTable($("#stock-table"), {
|
||||
params: {
|
||||
purchase_order: {{ order.id }},
|
||||
part_detail: true,
|
||||
supplier_detail: true,
|
||||
location_detail: true,
|
||||
},
|
||||
buttons: [
|
||||
'#stock-options',
|
||||
],
|
||||
filterkey: "postock"
|
||||
});
|
||||
|
||||
{% endblock %}
|
@ -2,7 +2,10 @@
|
||||
|
||||
<ul class='nav nav-tabs'>
|
||||
<li{% ifequal tab 'details' %} class='active'{% endifequal %}>
|
||||
<a href="{% url 'po-detail' order.id %}">{% trans "Items" %}</a>
|
||||
<a href="{% url 'po-detail' order.id %}">{% trans "Line Items" %}</a>
|
||||
</li>
|
||||
<li {% if tab == 'received' %} class='active'{% endif %}>
|
||||
<a href="{% url 'po-received' order.id %}">{% trans "Received Items" %}</a>
|
||||
</li>
|
||||
<li{% if tab == 'attachments' %} class='active'{% endif %}>
|
||||
<a href="{% url 'po-attachments' order.id %}">{% trans "Attachments" %}
|
||||
|
@ -13,7 +13,7 @@
|
||||
|
||||
<div id='order-toolbar-buttons' class='btn-group' style='float: right;'>
|
||||
{% if order.status == PurchaseOrderStatus.PENDING and roles.purchase_order.change %}
|
||||
<button type='button' class='btn btn-default' id='new-po-line'>{% trans "Add Line Item" %}</button>
|
||||
<button type='button' class='btn btn-primary' id='new-po-line'>{% trans "Add Line Item" %}</button>
|
||||
{% endif %}
|
||||
</div>
|
||||
|
||||
|
@ -21,6 +21,7 @@ purchase_order_detail_urls = [
|
||||
|
||||
url(r'^notes/', views.PurchaseOrderNotes.as_view(), name='po-notes'),
|
||||
|
||||
url(r'^received/', views.PurchaseOrderDetail.as_view(template_name='order/po_received_items.html'), name='po-received'),
|
||||
url(r'^attachments/', views.PurchaseOrderDetail.as_view(template_name='order/po_attachments.html'), name='po-attachments'),
|
||||
url(r'^.*$', views.PurchaseOrderDetail.as_view(), name='po-detail'),
|
||||
]
|
||||
|
@ -498,6 +498,11 @@ class StockList(generics.ListCreateAPIView):
|
||||
if sales_order:
|
||||
queryset = queryset.filter(sales_order=sales_order)
|
||||
|
||||
purchase_order = params.get('purchase_order', None)
|
||||
|
||||
if purchase_order is not None:
|
||||
queryset = queryset.filter(purchase_order=purchase_order)
|
||||
|
||||
# Filter stock items which are installed in another (specific) stock item
|
||||
installed_in = params.get('installed_in', None)
|
||||
|
||||
|
@ -228,7 +228,7 @@ InvenTree | {% trans "Stock Item" %} - {{ item }}
|
||||
{% if item.uid %}
|
||||
<tr>
|
||||
<td><span class='fas fa-barcode'></span></td>
|
||||
<td>{% trans "Unique Identifier" %}</td>
|
||||
<td>{% trans "Barcode Identifier" %}</td>
|
||||
<td>{{ item.uid }}</td>
|
||||
</tr>
|
||||
{% endif %}
|
||||
|
@ -262,7 +262,7 @@ function loadStockTable(table, options) {
|
||||
formatNoMatches: function() {
|
||||
return '{% trans "No stock items matching query" %}';
|
||||
},
|
||||
url: options.url,
|
||||
url: options.url || "{% url 'api-stock-list' %}",
|
||||
queryParams: filters,
|
||||
customSort: customGroupSorter,
|
||||
groupBy: true,
|
||||
|
Loading…
Reference in New Issue
Block a user