Merge pull request #644 from SchrodingersGat/supplier-part-tabs

Supplier part tabs
This commit is contained in:
Oliver 2020-02-12 12:55:54 +11:00 committed by GitHub
commit f03f6c4386
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
17 changed files with 809 additions and 391 deletions

View File

@ -1,172 +0,0 @@
{% extends "base.html" %}
{% load static %}
{% load i18n %}
{% block page_title %}
InvenTree | {{ company.name }} - {% trans "Parts" %}
{% endblock %}
{% block content %}
<div class='row'>
<div class='col-sm-6'>
<h3>{% trans "Supplier Part" %}</h3>
<div class='btn-row'>
<div class='btn-group'>
<button type='button' class='btn btn-default btn-glyph' id='edit-part' title='Edit supplier part'>
<span class='glyphicon glyphicon-edit'/>
</button>
<button type='button' class='btn btn-default btn-glyph' id='delete-part' title='Delete supplier part'>
<span class='glyphicon glyphicon-trash'/>
</button>
</div>
</div>
</div>
<div class='col-sm-6'>
<div class='media-left'>
<img class='part-thumb'
{% if part.part.image %}
src='{{ part.part.image.url }}'
{% else %}
src="{% static 'img/blank_image.png' %}"
{% endif %}/>
</div>
</div>
</div>
<hr>
<div class='row'>
<div class='col-sm-6'>
<h4>{% trans "Supplier Part Details" %}</h4>
<table class="table table-striped table-condensed">
<tr>
<td>{% trans "Internal Part" %}</td>
<td>
{% if part.part %}
<a href="{% url 'part-suppliers' part.part.id %}">{{ part.part.full_name }}</a>
{% endif %}
</td>
</tr>
<tr><td>{% trans "Supplier" %}</td><td><a href="{% url 'company-detail-parts' part.supplier.id %}">{{ part.supplier.name }}</a></td></tr>
<tr><td>{% trans "SKU" %}</td><td>{{ part.SKU }}</tr></tr>
{% if part.URL %}
<tr><td>{% trans "URL" %}</td><td><a href="{{ part.URL }}">{{ part.URL }}</a></td></tr>
{% endif %}
{% if part.description %}
<tr><td>{% trans "Description" %}</td><td>{{ part.description }}</td></tr>
{% endif %}
{% if part.manufacturer %}
<tr><td>{% trans "Manufacturer" %}</td><td>{{ part.manufacturer }}</td></tr>
<tr><td>{% trans "MPN" %}</td><td>{{ part.MPN }}</td></tr>
{% endif %}
{% if part.note %}
<tr><td>{% trans "Note" %}</td><td>{{ part.note }}</td></tr>
{% endif %}
</table>
</div>
<div class='col-sm-6'>
<h4>{% trans "Pricing Information" %}</h4>
<table class="table table-striped table-condensed">
<tr><td>{% trans "Order Multiple" %}</td><td>{{ part.multiple }}</td></tr>
{% if part.base_cost > 0 %}
<tr><td>{% trans "Base Price (Flat Fee)" %}</td><td>{{ part.base_cost }}</td></tr>
{% endif %}
<tr>
<th>{% trans "Price Breaks" %}</th>
<th>
<div style='float: right;'>
<button class='btn btn-primary' id='new-price-break' type='button'>{% trans "New Price Break" %}</button>
</div>
</th>
</tr>
<tr>
<th>{% trans "Quantity" %}</th>
<th>{% trans "Price" %}</th>
</tr>
{% if part.price_breaks.all %}
{% for pb in part.price_breaks.all %}
<tr>
<td>{{ pb.quantity }}</td>
<td>
{% if pb.currency %}{{ pb.currency.symbol }}{% endif %}
{{ pb.cost }}
{% if pb.currency %}{{ pb.currency.suffix }}{% endif %}
<div class='btn-group' style='float: right;'>
<button title='Edit Price Break' class='btn btn-default btn-sm pb-edit-button' type='button' url="{% url 'price-break-edit' pb.id %}"><span class='glyphicon glyphicon-edit'></span></button>
<button title='Delete Price Break' class='btn btn-default btn-sm pb-delete-button' type='button' url="{% url 'price-break-delete' pb.id %}"><span class='glyphicon glyphicon-trash'></span></button>
</div>
</td>
</tr>
{% endfor %}
{% else %}
<tr>
<td colspan='2'>
<span class='warning-msg'><i>{% trans "No price breaks have been added for this part" %}</i></span>
</td>
</tr>
{% endif %}
</table>
</div>
</div>
<hr>
<h4>{% trans "Purchase Orders" %}</h4>
{% include "order/po_table.html" with orders=part.purchase_orders %}
{% endblock %}
{% block js_ready %}
{{ block.super }}
$('#edit-part').click(function () {
launchModalForm(
"{% url 'supplier-part-edit' part.id %}",
{
reload: true
}
);
});
$('#delete-part').click(function() {
launchModalForm(
"{% url 'supplier-part-delete' %}?part={{ part.id }}",
{
redirect: "{% url 'company-detail-parts' part.supplier.id %}"
}
);
});
$('#new-price-break').click(function() {
launchModalForm("{% url 'price-break-create' %}",
{
reload: true,
data: {
part: {{ part.id }},
}
}
);
});
$('.pb-edit-button').click(function() {
var button = $(this);
launchModalForm(button.attr('url'),
{
reload: true,
}
);
});
$('.pb-delete-button').click(function() {
var button = $(this);
launchModalForm(button.attr('url'),
{
reload: true,
}
);
});
{% endblock %}

View File

@ -0,0 +1,68 @@
{% extends "base.html" %}
{% load static %}
{% load i18n %}
{% block page_title %}
InvenTree | {% trans "Supplier Part" %}
{% endblock %}
{% block content %}
<div class='row'>
<div class='col-sm-6'>
<h3>{% trans "Supplier Part" %}</h3>
<div class='btn-row'>
<div class='btn-group'>
<button type='button' class='btn btn-default btn-glyph' id='edit-part' title='Edit supplier part'>
<span class='glyphicon glyphicon-edit'/>
</button>
<button type='button' class='btn btn-default btn-glyph' id='delete-part' title='Delete supplier part'>
<span class='glyphicon glyphicon-trash'/>
</button>
</div>
</div>
</div>
<div class='col-sm-6'>
<div class='media-left'>
<img class='part-thumb'
{% if part.part.image %}
src='{{ part.part.image.url }}'
{% else %}
src="{% static 'img/blank_image.png' %}"
{% endif %}/>
</div>
</div>
</div>
<hr>
<div class='container-fluid'>
{% block details %}
<!-- Particular SupplierPart page goes here ... -->
{% endblock %}
</div>
{% endblock %}
{% block js_ready %}
{{ block.super }}
$('#edit-part').click(function () {
launchModalForm(
"{% url 'supplier-part-edit' part.id %}",
{
reload: true
}
);
});
$('#delete-part').click(function() {
launchModalForm(
"{% url 'supplier-part-delete' %}?part={{ part.id }}",
{
redirect: "{% url 'company-detail-parts' part.supplier.id %}"
}
);
});
{% endblock %}

View File

@ -0,0 +1,44 @@
{% extends "company/supplier_part_base.html" %}
{% load static %}
{% load i18n %}
{% block details %}
{% include "company/supplier_part_tabs.html" with tab='details' %}
<hr>
<h4>{% trans "Supplier Part Details" %}</h4>
<table class="table table-striped table-condensed">
<tr>
<td>{% trans "Internal Part" %}</td>
<td>
{% if part.part %}
<a href="{% url 'part-suppliers' part.part.id %}">{{ part.part.full_name }}</a>
{% endif %}
</td>
</tr>
<tr><td>{% trans "Supplier" %}</td><td><a href="{% url 'company-detail-parts' part.supplier.id %}">{{ part.supplier.name }}</a></td></tr>
<tr><td>{% trans "SKU" %}</td><td>{{ part.SKU }}</tr></tr>
{% if part.URL %}
<tr><td>{% trans "URL" %}</td><td><a href="{{ part.URL }}">{{ part.URL }}</a></td></tr>
{% endif %}
{% if part.description %}
<tr><td>{% trans "Description" %}</td><td>{{ part.description }}</td></tr>
{% endif %}
{% if part.manufacturer %}
<tr><td>{% trans "Manufacturer" %}</td><td>{{ part.manufacturer }}</td></tr>
<tr><td>{% trans "MPN" %}</td><td>{{ part.MPN }}</td></tr>
{% endif %}
{% if part.note %}
<tr><td>{% trans "Note" %}</td><td>{{ part.note }}</td></tr>
{% endif %}
</table>
{% endblock %}
{% block js_ready %}
{{ block.super }}
{% endblock %}

View File

@ -0,0 +1,31 @@
{% extends "company/supplier_part_base.html" %}
{% load static %}
{% load i18n %}
{% block details %}
{% 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>
<table class='table table-striped table-condensed po-table' id='purchase-order-table' data-toolbar='#button-bar'>
</table>
{% endblock %}
{% block js_ready %}
{{ block.super }}
loadPurchaseOrderTable($("#purchase-order-table"), {
url: "{% url 'api-po-list' %}?supplier_part={{ part.id }}",
});
{% endblock %}

View File

@ -0,0 +1,92 @@
{% extends "company/supplier_part_base.html" %}
{% load static %}
{% load i18n %}
{% load inventree_extras %}
{% block details %}
{% include "company/supplier_part_tabs.html" with tab='pricing' %}
<hr>
<h4>{% trans "Pricing Information" %}</h4>
<table class="table table-striped table-condensed">
<tr><td>{% trans "Order Multiple" %}</td><td>{{ part.multiple }}</td></tr>
{% if part.base_cost > 0 %}
<tr><td>{% trans "Base Price (Flat Fee)" %}</td><td>{{ part.base_cost }}</td></tr>
{% endif %}
<tr>
<th>{% trans "Price Breaks" %}</th>
<th>
<div style='float: right;'>
<button class='btn btn-primary' id='new-price-break' type='button'>{% trans "New Price Break" %}</button>
</div>
</th>
</tr>
<tr>
<th>{% trans "Quantity" %}</th>
<th>{% trans "Price" %}</th>
</tr>
{% if part.price_breaks.all %}
{% for pb in part.price_breaks.all %}
<tr>
<td>{% decimal pb.quantity %}</td>
<td>
{% if pb.currency %}{{ pb.currency.symbol }}{% endif %}
{% decimal pb.cost %}
{% if pb.currency %}{{ pb.currency.suffix }}{% endif %}
<div class='btn-group' style='float: right;'>
<button title='Edit Price Break' class='btn btn-default btn-sm pb-edit-button' type='button' url="{% url 'price-break-edit' pb.id %}"><span class='glyphicon glyphicon-edit'></span></button>
<button title='Delete Price Break' class='btn btn-default btn-sm pb-delete-button' type='button' url="{% url 'price-break-delete' pb.id %}"><span class='glyphicon glyphicon-trash'></span></button>
</div>
</td>
</tr>
{% endfor %}
{% else %}
<tr>
<td colspan='2'>
<span class='warning-msg'><i>{% trans "No price breaks have been added for this part" %}</i></span>
</td>
</tr>
{% endif %}
</table>
{% endblock %}
{% block js_ready %}
{{ block.super }}
$('#new-price-break').click(function() {
launchModalForm("{% url 'price-break-create' %}",
{
reload: true,
data: {
part: {{ part.id }},
}
}
);
});
$('.pb-edit-button').click(function() {
var button = $(this);
launchModalForm(button.attr('url'),
{
reload: true,
}
);
});
$('.pb-delete-button').click(function() {
var button = $(this);
launchModalForm(button.attr('url'),
{
reload: true,
}
);
});
{% endblock %}

View File

@ -0,0 +1,72 @@
{% extends "company/supplier_part_base.html" %}
{% load static %}
{% load i18n %}
{% block details %}
{% include "company/supplier_part_tabs.html" with tab='stock' %}
<hr>
<h4>{% trans "Supplier Part Stock" %}</h4>
{% include "stock_table.html" %}
{% endblock %}
{% block js_load %}
{{ block.super }}
<script type='text/javascript' src="{% static 'script/inventree/stock.js' %}"></script>
{% endblock %}
{% block js_ready %}
{{ block.super }}
loadStockTable($("#stock-table"), {
params: {
supplier_part: {{ part.id }},
location_detail: true,
part_detail: true,
},
groupByField: 'location',
buttons: ['#stock-options'],
url: "{% url 'api-stock-list' %}",
});
$("#stock-export").click(function() {
launchModalForm("{% url 'stock-export-options' %}", {
submit_text: '{% trans "Export" %}',
success: function(response) {
var url = "{% url 'stock-export' %}";
url += "?format=" + response.format;
url += "&cascade=" + response.cascade;
url += "&supplier_part={{ part.id }}";
location.href = url;
},
});
});
$("#item-create").click(function() {
launchModalForm("{% url 'stock-item-create' %}", {
reload: true,
data: {
part: {{ part.part.id }},
supplier_part: {{ part.id }},
},
secondary: [
{
field: 'location',
label: '{% trans "New Location" %}',
title: '{% trans "Create New Location" %}',
url: "{% url 'stock-location-create' %}",
}
]
});
return false;
});
{% endblock %}

View File

@ -0,0 +1,16 @@
{% load i18n %}
<ul class='nav nav-tabs'>
<li{% if tab == 'details' %} class='active'{% endif %}>
<a href="{% url 'supplier-part-detail' part.id %}">{% trans "Details" %}</a>
</li>
<li{% if tab == 'pricing' %} class='active'{% endif %}>
<a href="{% url 'supplier-part-pricing' part.id %}">{% trans "Pricing" %}</a>
</li>
<li{% if tab == 'stock' %} class='active'{% endif %}>
<a href="{% url 'supplier-part-stock' part.id %}">{% trans "Stock" %}</a>
</li>
<li {% if tab == 'orders' %} class='active'{% endif %}>
<a href="{% url 'supplier-part-orders' part.id %}">{% trans "Orders" %}</a>
</li>
</ul>

View File

@ -47,7 +47,11 @@ price_break_urls = [
] ]
supplier_part_detail_urls = [ supplier_part_detail_urls = [
url(r'edit/?', views.SupplierPartEdit.as_view(), name='supplier-part-edit'), url(r'^edit/?', views.SupplierPartEdit.as_view(), name='supplier-part-edit'),
url(r'^pricing/', views.SupplierPartDetail.as_view(template_name='company/supplier_part_pricing.html'), name='supplier-part-pricing'),
url(r'^orders/', views.SupplierPartDetail.as_view(template_name='company/supplier_part_orders.html'), name='supplier-part-orders'),
url(r'^stock/', views.SupplierPartDetail.as_view(template_name='company/supplier_part_stock.html'), name='supplier-part-stock'),
url('^.*$', views.SupplierPartDetail.as_view(), name='supplier-part-detail'), url('^.*$', views.SupplierPartDetail.as_view(), name='supplier-part-detail'),
] ]

View File

@ -149,7 +149,7 @@ class CompanyDelete(AjaxDeleteView):
class SupplierPartDetail(DetailView): class SupplierPartDetail(DetailView):
""" Detail view for SupplierPart """ """ Detail view for SupplierPart """
model = SupplierPart model = SupplierPart
template_name = 'company/partdetail.html' template_name = 'company/supplier_part_detail.html'
context_object_name = 'part' context_object_name = 'part'
queryset = SupplierPart.objects.all() queryset = SupplierPart.objects.all()

View File

@ -6,7 +6,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: \n" "Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-02-11 23:25+0000\n" "POT-Creation-Date: 2020-02-12 00:31+0000\n"
"PO-Revision-Date: 2020-02-02 08:07+0100\n" "PO-Revision-Date: 2020-02-02 08:07+0100\n"
"Last-Translator: Christian Schlüter <chschlue@gmail.com>\n" "Last-Translator: Christian Schlüter <chschlue@gmail.com>\n"
"Language-Team: C <kde-i18n-doc@kde.org>\n" "Language-Team: C <kde-i18n-doc@kde.org>\n"
@ -254,7 +254,7 @@ msgstr "Teile bestellen"
#: build/templates/build/allocate_view.html:18 #: build/templates/build/allocate_view.html:18
#: company/templates/company/index.html:54 #: company/templates/company/index.html:54
#: company/templates/company/partdetail.html:57 #: company/templates/company/supplier_part_detail.html:27
#: order/templates/order/purchase_order_detail.html:26 #: order/templates/order/purchase_order_detail.html:26
#: part/templates/part/detail.html:33 #: part/templates/part/detail.html:33
msgid "Description" msgid "Description"
@ -281,7 +281,7 @@ msgid "Title"
msgstr "Titel" msgstr "Titel"
#: build/templates/build/detail.html:20 #: build/templates/build/detail.html:20
#: company/templates/company/partdetail.html:85 #: company/templates/company/supplier_part_pricing.html:27
#: order/templates/order/purchase_order_detail.html:29 #: order/templates/order/purchase_order_detail.html:29
#: stock/templates/stock/item_base.html:90 #: stock/templates/stock/item_base.html:90
#: stock/templates/stock/stock_adjust.html:18 #: stock/templates/stock/stock_adjust.html:18
@ -308,7 +308,7 @@ msgstr "Los"
#: build/templates/build/detail.html:42 #: build/templates/build/detail.html:42
#: company/templates/company/detail_part.html:90 #: company/templates/company/detail_part.html:90
#: company/templates/company/partdetail.html:54 #: company/templates/company/supplier_part_detail.html:24
#: part/templates/part/detail.html:50 part/templates/part/part_base.html:81 #: part/templates/part/detail.html:50 part/templates/part/part_base.html:81
#: stock/templates/stock/item_base.html:120 #: stock/templates/stock/item_base.html:120
msgid "URL" msgid "URL"
@ -351,8 +351,9 @@ msgstr "Speichern"
msgid "Edit notes" msgid "Edit notes"
msgstr "Bermerkungen bearbeiten" msgstr "Bermerkungen bearbeiten"
#: build/templates/build/tabs.html:5 company/templates/company/tabs.html:5 #: build/templates/build/tabs.html:5
#: part/templates/part/tabs.html:6 #: company/templates/company/supplier_part_tabs.html:5
#: company/templates/company/tabs.html:5 part/templates/part/tabs.html:6
msgid "Details" msgid "Details"
msgstr "Details" msgstr "Details"
@ -438,7 +439,7 @@ msgstr "Bau-Fertigstellung bestätigen"
msgid "Invalid location selected" msgid "Invalid location selected"
msgstr "Ungültige Teileauswahl" msgstr "Ungültige Teileauswahl"
#: build/views.py:290 stock/views.py:884 #: build/views.py:290 stock/views.py:916
#, python-brace-format #, python-brace-format
msgid "The following serial numbers already exist: ({sn})" msgid "The following serial numbers already exist: ({sn})"
msgstr "Die folgende Seriennummer existiert bereits: ({sn})" msgstr "Die folgende Seriennummer existiert bereits: ({sn})"
@ -600,7 +601,7 @@ msgid "Supplier stock keeping unit"
msgstr "Stock Keeping Units (SKU) des Zulieferers" msgstr "Stock Keeping Units (SKU) des Zulieferers"
#: company/models.py:240 company/templates/company/detail_part.html:81 #: company/models.py:240 company/templates/company/detail_part.html:81
#: company/templates/company/partdetail.html:60 #: company/templates/company/supplier_part_detail.html:30
msgid "Manufacturer" msgid "Manufacturer"
msgstr "Hersteller" msgstr "Hersteller"
@ -662,7 +663,7 @@ msgstr "Kunde"
#: company/templates/company/detail.html:17 #: company/templates/company/detail.html:17
#: company/templates/company/index.html:46 #: company/templates/company/index.html:46
#: company/templates/company/partdetail.html:51 #: company/templates/company/supplier_part_detail.html:21
#: order/templates/order/order_base.html:67 #: order/templates/order/order_base.html:67
#: stock/templates/stock/item_base.html:126 #: stock/templates/stock/item_base.html:126
msgid "Supplier" msgid "Supplier"
@ -674,12 +675,13 @@ msgid "Supplier Parts"
msgstr "Zulieferer-Teile" msgstr "Zulieferer-Teile"
#: company/templates/company/detail_part.html:13 #: company/templates/company/detail_part.html:13
#: part/templates/part/stock.html:81
#, fuzzy #, fuzzy
#| msgid "Supplier Part" #| msgid "Supplier Part"
msgid "New Supplier Part" msgid "New Supplier Part"
msgstr "Zulieferer-Teil" msgstr "Zulieferer-Teil"
#: company/templates/company/detail_part.html:15 #: company/templates/company/detail_part.html:15 templates/stock_table.html:10
msgid "Options" msgid "Options"
msgstr "" msgstr ""
@ -690,12 +692,11 @@ msgid "Delete Parts"
msgstr "Anhang löschen" msgstr "Anhang löschen"
#: company/templates/company/detail_part.html:73 #: company/templates/company/detail_part.html:73
#: company/templates/company/partdetail.html:52 #: company/templates/company/supplier_part_detail.html:22
msgid "SKU" msgid "SKU"
msgstr "" msgstr ""
#: company/templates/company/detail_purchase_orders.html:8 #: company/templates/company/detail_purchase_orders.html:8
#: company/templates/company/partdetail.html:116
#: company/templates/company/tabs.html:15 part/templates/part/tabs.html:43 #: company/templates/company/tabs.html:15 part/templates/part/tabs.html:43
msgid "Purchase Orders" msgid "Purchase Orders"
msgstr "Bestellungen" msgstr "Bestellungen"
@ -713,6 +714,8 @@ msgid "Supplier Stock"
msgstr "Zulieferer-Teil" msgstr "Zulieferer-Teil"
#: company/templates/company/detail_stock.html:33 #: company/templates/company/detail_stock.html:33
#: company/templates/company/supplier_part_stock.html:38
#: part/templates/part/stock.html:53 templates/stock_table.html:5
msgid "Export" msgid "Export"
msgstr "" msgstr ""
@ -733,10 +736,8 @@ msgstr "Zulieferer"
msgid "ID" msgid "ID"
msgstr "" msgstr ""
#: company/templates/company/index.html:69 #: company/templates/company/index.html:69 part/templates/part/category.html:73
#: company/templates/company/partdetail.html:6 #: templates/navbar.html:10 templates/stats.html:7 templates/stats.html:10
#: part/templates/part/category.html:73 templates/navbar.html:10
#: templates/stats.html:7 templates/stats.html:10
msgid "Parts" msgid "Parts"
msgstr "Teile" msgstr "Teile"
@ -750,71 +751,112 @@ msgid "Are you sure you want to delete the following Supplier Parts?"
msgstr "" msgstr ""
"Sind Sie sicher, dass sie die folgenden Zulieferer-Teile löschen möchten?" "Sind Sie sicher, dass sie die folgenden Zulieferer-Teile löschen möchten?"
#: company/templates/company/partdetail.html:13 #: company/templates/company/supplier_part_base.html:6
#: company/templates/company/supplier_part_base.html:13
#: stock/templates/stock/item_base.html:130 #: stock/templates/stock/item_base.html:130
msgid "Supplier Part" msgid "Supplier Part"
msgstr "Zulieferer-Teil" msgstr "Zulieferer-Teil"
#: company/templates/company/partdetail.html:41 #: company/templates/company/supplier_part_detail.html:11
#, fuzzy #, fuzzy
#| msgid "Supplier Parts" #| msgid "Supplier Parts"
msgid "Supplier Part Details" msgid "Supplier Part Details"
msgstr "Zulieferer-Teile" msgstr "Zulieferer-Teile"
#: company/templates/company/partdetail.html:44 #: company/templates/company/supplier_part_detail.html:14
#, fuzzy #, fuzzy
#| msgid "Internal Part Number" #| msgid "Internal Part Number"
msgid "Internal Part" msgid "Internal Part"
msgstr "Interne Teilenummer" msgstr "Interne Teilenummer"
#: company/templates/company/partdetail.html:61 #: company/templates/company/supplier_part_detail.html:31
#, fuzzy #, fuzzy
#| msgid "IPN" #| msgid "IPN"
msgid "MPN" msgid "MPN"
msgstr "IPN (Interne Produktnummer)" msgstr "IPN (Interne Produktnummer)"
#: company/templates/company/partdetail.html:64 #: company/templates/company/supplier_part_detail.html:34
#: order/templates/order/purchase_order_detail.html:33 #: order/templates/order/purchase_order_detail.html:33
msgid "Note" msgid "Note"
msgstr "Notiz" msgstr "Notiz"
#: company/templates/company/partdetail.html:70 #: company/templates/company/supplier_part_orders.html:11
#, fuzzy
#| msgid "Supplier Parts"
msgid "Supplier Part Orders"
msgstr "Zulieferer-Teile"
#: company/templates/company/supplier_part_pricing.html:12
#, fuzzy #, fuzzy
#| msgid "Show pricing information" #| msgid "Show pricing information"
msgid "Pricing Information" msgid "Pricing Information"
msgstr "Kosteninformationen ansehen" msgstr "Kosteninformationen ansehen"
#: company/templates/company/partdetail.html:72 #: company/templates/company/supplier_part_pricing.html:14
#, fuzzy #, fuzzy
#| msgid "Order notes" #| msgid "Order notes"
msgid "Order Multiple" msgid "Order Multiple"
msgstr "Bestell-Notizen" msgstr "Bestell-Notizen"
#: company/templates/company/partdetail.html:74 #: company/templates/company/supplier_part_pricing.html:16
msgid "Base Price (Flat Fee)" msgid "Base Price (Flat Fee)"
msgstr "" msgstr ""
#: company/templates/company/partdetail.html:77 #: company/templates/company/supplier_part_pricing.html:19
msgid "Price Breaks" msgid "Price Breaks"
msgstr "" msgstr ""
#: company/templates/company/partdetail.html:80 #: company/templates/company/supplier_part_pricing.html:22
msgid "New Price Break" msgid "New Price Break"
msgstr "" msgstr ""
#: company/templates/company/partdetail.html:86 #: company/templates/company/supplier_part_pricing.html:28
msgid "Price" msgid "Price"
msgstr "" msgstr ""
#: company/templates/company/partdetail.html:106 #: company/templates/company/supplier_part_pricing.html:48
msgid "No price breaks have been added for this part" msgid "No price breaks have been added for this part"
msgstr "" msgstr ""
#: company/templates/company/supplier_part_stock.html:11
#, fuzzy
#| msgid "Supplier part"
msgid "Supplier Part Stock"
msgstr "Zulieferer-Teil"
#: company/templates/company/supplier_part_stock.html:61
#: part/templates/part/stock.html:90
#, fuzzy
#| msgid "Location"
msgid "New Location"
msgstr "Standort"
#: company/templates/company/supplier_part_stock.html:62
#: part/templates/part/stock.html:91
#, fuzzy
#| msgid "Create new Stock Location"
msgid "Create New Location"
msgstr "Neuen Lager-Standort erstellen"
#: company/templates/company/supplier_part_tabs.html:8
#, fuzzy
#| msgid "Part packaging"
msgid "Pricing"
msgstr "Teile-Packaging"
#: company/templates/company/supplier_part_tabs.html:11
#: company/templates/company/tabs.html:12 part/templates/part/tabs.html:17 #: company/templates/company/tabs.html:12 part/templates/part/tabs.html:17
#: templates/navbar.html:11 #: templates/navbar.html:11
msgid "Stock" msgid "Stock"
msgstr "Lagerbestand" msgstr "Lagerbestand"
#: company/templates/company/supplier_part_tabs.html:14
#: templates/navbar.html:14
#, fuzzy
#| msgid "On Order"
msgid "Orders"
msgstr "bestellt"
#: company/templates/company/tabs.html:21 #: company/templates/company/tabs.html:21
msgid "Sales Orders" msgid "Sales Orders"
msgstr "Bestellungen" msgstr "Bestellungen"
@ -871,7 +913,7 @@ msgstr "Firmenadresse"
msgid "Edit Supplier Part" msgid "Edit Supplier Part"
msgstr "Zulieferer-Teil" msgstr "Zulieferer-Teil"
#: company/views.py:179 #: company/views.py:179 part/templates/part/stock.html:82
#, fuzzy #, fuzzy
#| msgid "Supplier Part" #| msgid "Supplier Part"
msgid "Create new Supplier Part" msgid "Create new Supplier Part"
@ -1547,6 +1589,18 @@ msgstr "Teil auswählen"
msgid "Upload new image" msgid "Upload new image"
msgstr "" msgstr ""
#: part/templates/part/stock.html:75
#, fuzzy
#| msgid "Part"
msgid "New Part"
msgstr "Teil"
#: part/templates/part/stock.html:76
#, fuzzy
#| msgid "Create new Stock Item"
msgid "Create New Part"
msgstr "Neues Lagerobjekt hinzufügen"
#: part/templates/part/tabs.html:9 #: part/templates/part/tabs.html:9
msgid "Parameters" msgid "Parameters"
msgstr "Parameter" msgstr "Parameter"
@ -2041,135 +2095,135 @@ msgstr "QR-Code für diesen Standort"
msgid "Stock Export Options" msgid "Stock Export Options"
msgstr "Lagerbestandsexportoptionen" msgstr "Lagerbestandsexportoptionen"
#: stock/views.py:264 #: stock/views.py:278
msgid "Stock Item QR Code" msgid "Stock Item QR Code"
msgstr "Lagerobjekt-QR-Code" msgstr "Lagerobjekt-QR-Code"
#: stock/views.py:287 #: stock/views.py:301
msgid "Adjust Stock" msgid "Adjust Stock"
msgstr "Lagerbestand anpassen" msgstr "Lagerbestand anpassen"
#: stock/views.py:396 #: stock/views.py:410
msgid "Move Stock Items" msgid "Move Stock Items"
msgstr "Lagerobjekte bewegen" msgstr "Lagerobjekte bewegen"
#: stock/views.py:397 #: stock/views.py:411
msgid "Count Stock Items" msgid "Count Stock Items"
msgstr "Lagerobjekte zählen" msgstr "Lagerobjekte zählen"
#: stock/views.py:398 #: stock/views.py:412
msgid "Remove From Stock" msgid "Remove From Stock"
msgstr "Aus Lagerbestand entfernen" msgstr "Aus Lagerbestand entfernen"
#: stock/views.py:399 #: stock/views.py:413
msgid "Add Stock Items" msgid "Add Stock Items"
msgstr "Lagerobjekte hinzufügen" msgstr "Lagerobjekte hinzufügen"
#: stock/views.py:400 #: stock/views.py:414
msgid "Delete Stock Items" msgid "Delete Stock Items"
msgstr "Lagerobjekte löschen" msgstr "Lagerobjekte löschen"
#: stock/views.py:428 #: stock/views.py:442
msgid "Must enter integer value" msgid "Must enter integer value"
msgstr "Nur Ganzzahl eingeben" msgstr "Nur Ganzzahl eingeben"
#: stock/views.py:433 #: stock/views.py:447
msgid "Quantity must be positive" msgid "Quantity must be positive"
msgstr "Anzahl muss positiv sein" msgstr "Anzahl muss positiv sein"
#: stock/views.py:440 #: stock/views.py:454
#, python-brace-format #, python-brace-format
msgid "Quantity must not exceed {x}" msgid "Quantity must not exceed {x}"
msgstr "Anzahl darf {x} nicht überschreiten" msgstr "Anzahl darf {x} nicht überschreiten"
#: stock/views.py:448 #: stock/views.py:462
msgid "Confirm stock adjustment" msgid "Confirm stock adjustment"
msgstr "Bestands-Anpassung bestätigen" msgstr "Bestands-Anpassung bestätigen"
#: stock/views.py:519 #: stock/views.py:533
#, python-brace-format #, python-brace-format
msgid "Added stock to {n} items" msgid "Added stock to {n} items"
msgstr "Vorrat zu {n} Lagerobjekten hinzugefügt" msgstr "Vorrat zu {n} Lagerobjekten hinzugefügt"
#: stock/views.py:534 #: stock/views.py:548
#, python-brace-format #, python-brace-format
msgid "Removed stock from {n} items" msgid "Removed stock from {n} items"
msgstr "Vorrat von {n} Lagerobjekten entfernt" msgstr "Vorrat von {n} Lagerobjekten entfernt"
#: stock/views.py:547 #: stock/views.py:561
#, python-brace-format #, python-brace-format
msgid "Counted stock for {n} items" msgid "Counted stock for {n} items"
msgstr "Bestand für {n} Objekte erfasst" msgstr "Bestand für {n} Objekte erfasst"
#: stock/views.py:575 #: stock/views.py:589
msgid "No items were moved" msgid "No items were moved"
msgstr "Keine Lagerobjekte wurden bewegt" msgstr "Keine Lagerobjekte wurden bewegt"
#: stock/views.py:578 #: stock/views.py:592
#, python-brace-format #, python-brace-format
msgid "Moved {n} items to {dest}" msgid "Moved {n} items to {dest}"
msgstr "{n} Teile nach {dest} bewegt" msgstr "{n} Teile nach {dest} bewegt"
#: stock/views.py:597 #: stock/views.py:611
#, python-brace-format #, python-brace-format
msgid "Deleted {n} stock items" msgid "Deleted {n} stock items"
msgstr "{n} Teile im Lager gelöscht" msgstr "{n} Teile im Lager gelöscht"
#: stock/views.py:609 #: stock/views.py:623
msgid "Edit Stock Item" msgid "Edit Stock Item"
msgstr "Lagerobjekt bearbeiten" msgstr "Lagerobjekt bearbeiten"
#: stock/views.py:645 #: stock/views.py:659
msgid "Create new Stock Location" msgid "Create new Stock Location"
msgstr "Neuen Lager-Standort erstellen" msgstr "Neuen Lager-Standort erstellen"
#: stock/views.py:666 #: stock/views.py:680
msgid "Serialize Stock" msgid "Serialize Stock"
msgstr "Lagerbestand erfassen" msgstr "Lagerbestand erfassen"
#: stock/views.py:746 #: stock/views.py:760
msgid "Create new Stock Item" msgid "Create new Stock Item"
msgstr "Neues Lagerobjekt hinzufügen" msgstr "Neues Lagerobjekt hinzufügen"
#: stock/views.py:810 #: stock/views.py:824
msgid "Copy Stock Item" msgid "Copy Stock Item"
msgstr "Lagerobjekt kopieren" msgstr "Lagerobjekt kopieren"
#: stock/views.py:860 #: stock/views.py:892
msgid "Invalid quantity" msgid "Invalid quantity"
msgstr "Ungültige Menge" msgstr "Ungültige Menge"
#: stock/views.py:863 #: stock/views.py:895
msgid "Invalid part selection" msgid "Invalid part selection"
msgstr "Ungültige Teileauswahl" msgstr "Ungültige Teileauswahl"
#: stock/views.py:910 #: stock/views.py:942
#, fuzzy, python-brace-format #, fuzzy, python-brace-format
#| msgid "Created new stock item" #| msgid "Created new stock item"
msgid "Created {n} new stock items" msgid "Created {n} new stock items"
msgstr "Neues Lagerobjekt erstellt" msgstr "Neues Lagerobjekt erstellt"
#: stock/views.py:927 stock/views.py:940 #: stock/views.py:959 stock/views.py:972
msgid "Created new stock item" msgid "Created new stock item"
msgstr "Neues Lagerobjekt erstellt" msgstr "Neues Lagerobjekt erstellt"
#: stock/views.py:957 #: stock/views.py:989
msgid "Delete Stock Location" msgid "Delete Stock Location"
msgstr "Standort löschen" msgstr "Standort löschen"
#: stock/views.py:970 #: stock/views.py:1002
msgid "Delete Stock Item" msgid "Delete Stock Item"
msgstr "Lagerobjekt löschen" msgstr "Lagerobjekt löschen"
#: stock/views.py:981 #: stock/views.py:1013
msgid "Delete Stock Tracking Entry" msgid "Delete Stock Tracking Entry"
msgstr "Lagerbestands-Tracking-Eintrag löschen" msgstr "Lagerbestands-Tracking-Eintrag löschen"
#: stock/views.py:998 #: stock/views.py:1030
msgid "Edit Stock Tracking Entry" msgid "Edit Stock Tracking Entry"
msgstr "Lagerbestands-Tracking-Eintrag bearbeiten" msgstr "Lagerbestands-Tracking-Eintrag bearbeiten"
#: stock/views.py:1007 #: stock/views.py:1039
msgid "Add Stock Tracking Entry" msgid "Add Stock Tracking Entry"
msgstr "Lagerbestands-Tracking-Eintrag hinzufügen" msgstr "Lagerbestands-Tracking-Eintrag hinzufügen"
@ -2207,12 +2261,6 @@ msgstr "InvenTree-Dokumentation"
msgid "View Code on GitHub" msgid "View Code on GitHub"
msgstr "Code auf GitHub ansehen" msgstr "Code auf GitHub ansehen"
#: templates/navbar.html:14
#, fuzzy
#| msgid "On Order"
msgid "Orders"
msgstr "bestellt"
#: templates/navbar.html:23 #: templates/navbar.html:23
msgid "Admin" msgid "Admin"
msgstr "" msgstr ""
@ -2240,3 +2288,45 @@ msgstr ""
#| msgid "Status" #| msgid "Status"
msgid "Statistics" msgid "Statistics"
msgstr "Status" msgstr "Status"
#: templates/stock_table.html:7
#, fuzzy
#| msgid "Stock Item"
msgid "New Stock Item"
msgstr "Lagerobjekt"
#: templates/stock_table.html:12
#, fuzzy
#| msgid "Add Stock Items"
msgid "Add stock"
msgstr "Lagerobjekte hinzufügen"
#: templates/stock_table.html:13
#, fuzzy
#| msgid "Remove From Stock"
msgid "Remove stock"
msgstr "Aus Lagerbestand entfernen"
#: templates/stock_table.html:14
#, fuzzy
#| msgid "Count Stock Items"
msgid "Count stock"
msgstr "Lagerobjekte zählen"
#: templates/stock_table.html:15
#, fuzzy
#| msgid "Move Stock Items"
msgid "Move stock"
msgstr "Lagerobjekte bewegen"
#: templates/stock_table.html:16
#, fuzzy
#| msgid "On Order"
msgid "Order stock"
msgstr "bestellt"
#: templates/stock_table.html:17
#, fuzzy
#| msgid "Delete Stock Item"
msgid "Delete Stock"
msgstr "Lagerobjekt löschen"

View File

@ -8,7 +8,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-02-11 23:25+0000\n" "POT-Creation-Date: 2020-02-12 00:31+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"
@ -250,7 +250,7 @@ msgstr ""
#: build/templates/build/allocate_view.html:18 #: build/templates/build/allocate_view.html:18
#: company/templates/company/index.html:54 #: company/templates/company/index.html:54
#: company/templates/company/partdetail.html:57 #: company/templates/company/supplier_part_detail.html:27
#: order/templates/order/purchase_order_detail.html:26 #: order/templates/order/purchase_order_detail.html:26
#: part/templates/part/detail.html:33 #: part/templates/part/detail.html:33
msgid "Description" msgid "Description"
@ -274,7 +274,7 @@ msgid "Title"
msgstr "" msgstr ""
#: build/templates/build/detail.html:20 #: build/templates/build/detail.html:20
#: company/templates/company/partdetail.html:85 #: company/templates/company/supplier_part_pricing.html:27
#: order/templates/order/purchase_order_detail.html:29 #: order/templates/order/purchase_order_detail.html:29
#: stock/templates/stock/item_base.html:90 #: stock/templates/stock/item_base.html:90
#: stock/templates/stock/stock_adjust.html:18 #: stock/templates/stock/stock_adjust.html:18
@ -301,7 +301,7 @@ msgstr ""
#: build/templates/build/detail.html:42 #: build/templates/build/detail.html:42
#: company/templates/company/detail_part.html:90 #: company/templates/company/detail_part.html:90
#: company/templates/company/partdetail.html:54 #: company/templates/company/supplier_part_detail.html:24
#: part/templates/part/detail.html:50 part/templates/part/part_base.html:81 #: part/templates/part/detail.html:50 part/templates/part/part_base.html:81
#: stock/templates/stock/item_base.html:120 #: stock/templates/stock/item_base.html:120
msgid "URL" msgid "URL"
@ -344,8 +344,9 @@ msgstr ""
msgid "Edit notes" msgid "Edit notes"
msgstr "" msgstr ""
#: build/templates/build/tabs.html:5 company/templates/company/tabs.html:5 #: build/templates/build/tabs.html:5
#: part/templates/part/tabs.html:6 #: company/templates/company/supplier_part_tabs.html:5
#: company/templates/company/tabs.html:5 part/templates/part/tabs.html:6
msgid "Details" msgid "Details"
msgstr "" msgstr ""
@ -415,7 +416,7 @@ msgstr ""
msgid "Invalid location selected" msgid "Invalid location selected"
msgstr "" msgstr ""
#: build/views.py:290 stock/views.py:884 #: build/views.py:290 stock/views.py:916
#, python-brace-format #, python-brace-format
msgid "The following serial numbers already exist: ({sn})" msgid "The following serial numbers already exist: ({sn})"
msgstr "" msgstr ""
@ -561,7 +562,7 @@ msgid "Supplier stock keeping unit"
msgstr "" msgstr ""
#: company/models.py:240 company/templates/company/detail_part.html:81 #: company/models.py:240 company/templates/company/detail_part.html:81
#: company/templates/company/partdetail.html:60 #: company/templates/company/supplier_part_detail.html:30
msgid "Manufacturer" msgid "Manufacturer"
msgstr "" msgstr ""
@ -621,7 +622,7 @@ msgstr ""
#: company/templates/company/detail.html:17 #: company/templates/company/detail.html:17
#: company/templates/company/index.html:46 #: company/templates/company/index.html:46
#: company/templates/company/partdetail.html:51 #: company/templates/company/supplier_part_detail.html:21
#: order/templates/order/order_base.html:67 #: order/templates/order/order_base.html:67
#: stock/templates/stock/item_base.html:126 #: stock/templates/stock/item_base.html:126
msgid "Supplier" msgid "Supplier"
@ -633,10 +634,11 @@ msgid "Supplier Parts"
msgstr "" msgstr ""
#: company/templates/company/detail_part.html:13 #: company/templates/company/detail_part.html:13
#: part/templates/part/stock.html:81
msgid "New Supplier Part" msgid "New Supplier Part"
msgstr "" msgstr ""
#: company/templates/company/detail_part.html:15 #: company/templates/company/detail_part.html:15 templates/stock_table.html:10
msgid "Options" msgid "Options"
msgstr "" msgstr ""
@ -645,12 +647,11 @@ msgid "Delete Parts"
msgstr "" msgstr ""
#: company/templates/company/detail_part.html:73 #: company/templates/company/detail_part.html:73
#: company/templates/company/partdetail.html:52 #: company/templates/company/supplier_part_detail.html:22
msgid "SKU" msgid "SKU"
msgstr "" msgstr ""
#: company/templates/company/detail_purchase_orders.html:8 #: company/templates/company/detail_purchase_orders.html:8
#: company/templates/company/partdetail.html:116
#: company/templates/company/tabs.html:15 part/templates/part/tabs.html:43 #: company/templates/company/tabs.html:15 part/templates/part/tabs.html:43
msgid "Purchase Orders" msgid "Purchase Orders"
msgstr "" msgstr ""
@ -664,6 +665,8 @@ msgid "Supplier Stock"
msgstr "" msgstr ""
#: company/templates/company/detail_stock.html:33 #: company/templates/company/detail_stock.html:33
#: company/templates/company/supplier_part_stock.html:38
#: part/templates/part/stock.html:53 templates/stock_table.html:5
msgid "Export" msgid "Export"
msgstr "" msgstr ""
@ -680,10 +683,8 @@ msgstr ""
msgid "ID" msgid "ID"
msgstr "" msgstr ""
#: company/templates/company/index.html:69 #: company/templates/company/index.html:69 part/templates/part/category.html:73
#: company/templates/company/partdetail.html:6 #: templates/navbar.html:10 templates/stats.html:7 templates/stats.html:10
#: part/templates/part/category.html:73 templates/navbar.html:10
#: templates/stats.html:7 templates/stats.html:10
msgid "Parts" msgid "Parts"
msgstr "" msgstr ""
@ -696,61 +697,90 @@ msgstr ""
msgid "Are you sure you want to delete the following Supplier Parts?" msgid "Are you sure you want to delete the following Supplier Parts?"
msgstr "" msgstr ""
#: company/templates/company/partdetail.html:13 #: company/templates/company/supplier_part_base.html:6
#: company/templates/company/supplier_part_base.html:13
#: stock/templates/stock/item_base.html:130 #: stock/templates/stock/item_base.html:130
msgid "Supplier Part" msgid "Supplier Part"
msgstr "" msgstr ""
#: company/templates/company/partdetail.html:41 #: company/templates/company/supplier_part_detail.html:11
msgid "Supplier Part Details" msgid "Supplier Part Details"
msgstr "" msgstr ""
#: company/templates/company/partdetail.html:44 #: company/templates/company/supplier_part_detail.html:14
msgid "Internal Part" msgid "Internal Part"
msgstr "" msgstr ""
#: company/templates/company/partdetail.html:61 #: company/templates/company/supplier_part_detail.html:31
msgid "MPN" msgid "MPN"
msgstr "" msgstr ""
#: company/templates/company/partdetail.html:64 #: company/templates/company/supplier_part_detail.html:34
#: order/templates/order/purchase_order_detail.html:33 #: order/templates/order/purchase_order_detail.html:33
msgid "Note" msgid "Note"
msgstr "" msgstr ""
#: company/templates/company/partdetail.html:70 #: company/templates/company/supplier_part_orders.html:11
msgid "Supplier Part Orders"
msgstr ""
#: company/templates/company/supplier_part_pricing.html:12
msgid "Pricing Information" msgid "Pricing Information"
msgstr "" msgstr ""
#: company/templates/company/partdetail.html:72 #: company/templates/company/supplier_part_pricing.html:14
msgid "Order Multiple" msgid "Order Multiple"
msgstr "" msgstr ""
#: company/templates/company/partdetail.html:74 #: company/templates/company/supplier_part_pricing.html:16
msgid "Base Price (Flat Fee)" msgid "Base Price (Flat Fee)"
msgstr "" msgstr ""
#: company/templates/company/partdetail.html:77 #: company/templates/company/supplier_part_pricing.html:19
msgid "Price Breaks" msgid "Price Breaks"
msgstr "" msgstr ""
#: company/templates/company/partdetail.html:80 #: company/templates/company/supplier_part_pricing.html:22
msgid "New Price Break" msgid "New Price Break"
msgstr "" msgstr ""
#: company/templates/company/partdetail.html:86 #: company/templates/company/supplier_part_pricing.html:28
msgid "Price" msgid "Price"
msgstr "" msgstr ""
#: company/templates/company/partdetail.html:106 #: company/templates/company/supplier_part_pricing.html:48
msgid "No price breaks have been added for this part" msgid "No price breaks have been added for this part"
msgstr "" msgstr ""
#: company/templates/company/supplier_part_stock.html:11
msgid "Supplier Part Stock"
msgstr ""
#: company/templates/company/supplier_part_stock.html:61
#: part/templates/part/stock.html:90
msgid "New Location"
msgstr ""
#: company/templates/company/supplier_part_stock.html:62
#: part/templates/part/stock.html:91
msgid "Create New Location"
msgstr ""
#: company/templates/company/supplier_part_tabs.html:8
msgid "Pricing"
msgstr ""
#: company/templates/company/supplier_part_tabs.html:11
#: company/templates/company/tabs.html:12 part/templates/part/tabs.html:17 #: company/templates/company/tabs.html:12 part/templates/part/tabs.html:17
#: templates/navbar.html:11 #: templates/navbar.html:11
msgid "Stock" msgid "Stock"
msgstr "" msgstr ""
#: company/templates/company/supplier_part_tabs.html:14
#: templates/navbar.html:14
msgid "Orders"
msgstr ""
#: company/templates/company/tabs.html:21 #: company/templates/company/tabs.html:21
msgid "Sales Orders" msgid "Sales Orders"
msgstr "" msgstr ""
@ -791,7 +821,7 @@ msgstr ""
msgid "Edit Supplier Part" msgid "Edit Supplier Part"
msgstr "" msgstr ""
#: company/views.py:179 #: company/views.py:179 part/templates/part/stock.html:82
msgid "Create new Supplier Part" msgid "Create new Supplier Part"
msgstr "" msgstr ""
@ -1437,6 +1467,14 @@ msgstr ""
msgid "Upload new image" msgid "Upload new image"
msgstr "" msgstr ""
#: part/templates/part/stock.html:75
msgid "New Part"
msgstr ""
#: part/templates/part/stock.html:76
msgid "Create New Part"
msgstr ""
#: part/templates/part/tabs.html:9 #: part/templates/part/tabs.html:9
msgid "Parameters" msgid "Parameters"
msgstr "" msgstr ""
@ -1868,134 +1906,134 @@ msgstr ""
msgid "Stock Export Options" msgid "Stock Export Options"
msgstr "" msgstr ""
#: stock/views.py:264 #: stock/views.py:278
msgid "Stock Item QR Code" msgid "Stock Item QR Code"
msgstr "" msgstr ""
#: stock/views.py:287 #: stock/views.py:301
msgid "Adjust Stock" msgid "Adjust Stock"
msgstr "" msgstr ""
#: stock/views.py:396 #: stock/views.py:410
msgid "Move Stock Items" msgid "Move Stock Items"
msgstr "" msgstr ""
#: stock/views.py:397 #: stock/views.py:411
msgid "Count Stock Items" msgid "Count Stock Items"
msgstr "" msgstr ""
#: stock/views.py:398 #: stock/views.py:412
msgid "Remove From Stock" msgid "Remove From Stock"
msgstr "" msgstr ""
#: stock/views.py:399 #: stock/views.py:413
msgid "Add Stock Items" msgid "Add Stock Items"
msgstr "" msgstr ""
#: stock/views.py:400 #: stock/views.py:414
msgid "Delete Stock Items" msgid "Delete Stock Items"
msgstr "" msgstr ""
#: stock/views.py:428 #: stock/views.py:442
msgid "Must enter integer value" msgid "Must enter integer value"
msgstr "" msgstr ""
#: stock/views.py:433 #: stock/views.py:447
msgid "Quantity must be positive" msgid "Quantity must be positive"
msgstr "" msgstr ""
#: stock/views.py:440 #: stock/views.py:454
#, python-brace-format #, python-brace-format
msgid "Quantity must not exceed {x}" msgid "Quantity must not exceed {x}"
msgstr "" msgstr ""
#: stock/views.py:448 #: stock/views.py:462
msgid "Confirm stock adjustment" msgid "Confirm stock adjustment"
msgstr "" msgstr ""
#: stock/views.py:519 #: stock/views.py:533
#, python-brace-format #, python-brace-format
msgid "Added stock to {n} items" msgid "Added stock to {n} items"
msgstr "" msgstr ""
#: stock/views.py:534 #: stock/views.py:548
#, python-brace-format #, python-brace-format
msgid "Removed stock from {n} items" msgid "Removed stock from {n} items"
msgstr "" msgstr ""
#: stock/views.py:547 #: stock/views.py:561
#, python-brace-format #, python-brace-format
msgid "Counted stock for {n} items" msgid "Counted stock for {n} items"
msgstr "" msgstr ""
#: stock/views.py:575 #: stock/views.py:589
msgid "No items were moved" msgid "No items were moved"
msgstr "" msgstr ""
#: stock/views.py:578 #: stock/views.py:592
#, python-brace-format #, python-brace-format
msgid "Moved {n} items to {dest}" msgid "Moved {n} items to {dest}"
msgstr "" msgstr ""
#: stock/views.py:597 #: stock/views.py:611
#, python-brace-format #, python-brace-format
msgid "Deleted {n} stock items" msgid "Deleted {n} stock items"
msgstr "" msgstr ""
#: stock/views.py:609 #: stock/views.py:623
msgid "Edit Stock Item" msgid "Edit Stock Item"
msgstr "" msgstr ""
#: stock/views.py:645 #: stock/views.py:659
msgid "Create new Stock Location" msgid "Create new Stock Location"
msgstr "" msgstr ""
#: stock/views.py:666 #: stock/views.py:680
msgid "Serialize Stock" msgid "Serialize Stock"
msgstr "" msgstr ""
#: stock/views.py:746 #: stock/views.py:760
msgid "Create new Stock Item" msgid "Create new Stock Item"
msgstr "" msgstr ""
#: stock/views.py:810 #: stock/views.py:824
msgid "Copy Stock Item" msgid "Copy Stock Item"
msgstr "" msgstr ""
#: stock/views.py:860 #: stock/views.py:892
msgid "Invalid quantity" msgid "Invalid quantity"
msgstr "" msgstr ""
#: stock/views.py:863 #: stock/views.py:895
msgid "Invalid part selection" msgid "Invalid part selection"
msgstr "" msgstr ""
#: stock/views.py:910 #: stock/views.py:942
#, python-brace-format #, python-brace-format
msgid "Created {n} new stock items" msgid "Created {n} new stock items"
msgstr "" msgstr ""
#: stock/views.py:927 stock/views.py:940 #: stock/views.py:959 stock/views.py:972
msgid "Created new stock item" msgid "Created new stock item"
msgstr "" msgstr ""
#: stock/views.py:957 #: stock/views.py:989
msgid "Delete Stock Location" msgid "Delete Stock Location"
msgstr "" msgstr ""
#: stock/views.py:970 #: stock/views.py:1002
msgid "Delete Stock Item" msgid "Delete Stock Item"
msgstr "" msgstr ""
#: stock/views.py:981 #: stock/views.py:1013
msgid "Delete Stock Tracking Entry" msgid "Delete Stock Tracking Entry"
msgstr "" msgstr ""
#: stock/views.py:998 #: stock/views.py:1030
msgid "Edit Stock Tracking Entry" msgid "Edit Stock Tracking Entry"
msgstr "" msgstr ""
#: stock/views.py:1007 #: stock/views.py:1039
msgid "Add Stock Tracking Entry" msgid "Add Stock Tracking Entry"
msgstr "" msgstr ""
@ -2031,10 +2069,6 @@ msgstr ""
msgid "View Code on GitHub" msgid "View Code on GitHub"
msgstr "" msgstr ""
#: templates/navbar.html:14
msgid "Orders"
msgstr ""
#: templates/navbar.html:23 #: templates/navbar.html:23
msgid "Admin" msgid "Admin"
msgstr "" msgstr ""
@ -2058,3 +2092,31 @@ msgstr ""
#: templates/navbar.html:33 #: templates/navbar.html:33
msgid "Statistics" msgid "Statistics"
msgstr "" msgstr ""
#: templates/stock_table.html:7
msgid "New Stock Item"
msgstr ""
#: templates/stock_table.html:12
msgid "Add stock"
msgstr ""
#: templates/stock_table.html:13
msgid "Remove stock"
msgstr ""
#: templates/stock_table.html:14
msgid "Count stock"
msgstr ""
#: templates/stock_table.html:15
msgid "Move stock"
msgstr ""
#: templates/stock_table.html:16
msgid "Order stock"
msgstr ""
#: templates/stock_table.html:17
msgid "Delete Stock"
msgstr ""

View File

@ -8,7 +8,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-02-11 23:25+0000\n" "POT-Creation-Date: 2020-02-12 00:31+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"
@ -250,7 +250,7 @@ msgstr ""
#: build/templates/build/allocate_view.html:18 #: build/templates/build/allocate_view.html:18
#: company/templates/company/index.html:54 #: company/templates/company/index.html:54
#: company/templates/company/partdetail.html:57 #: company/templates/company/supplier_part_detail.html:27
#: order/templates/order/purchase_order_detail.html:26 #: order/templates/order/purchase_order_detail.html:26
#: part/templates/part/detail.html:33 #: part/templates/part/detail.html:33
msgid "Description" msgid "Description"
@ -274,7 +274,7 @@ msgid "Title"
msgstr "" msgstr ""
#: build/templates/build/detail.html:20 #: build/templates/build/detail.html:20
#: company/templates/company/partdetail.html:85 #: company/templates/company/supplier_part_pricing.html:27
#: order/templates/order/purchase_order_detail.html:29 #: order/templates/order/purchase_order_detail.html:29
#: stock/templates/stock/item_base.html:90 #: stock/templates/stock/item_base.html:90
#: stock/templates/stock/stock_adjust.html:18 #: stock/templates/stock/stock_adjust.html:18
@ -301,7 +301,7 @@ msgstr ""
#: build/templates/build/detail.html:42 #: build/templates/build/detail.html:42
#: company/templates/company/detail_part.html:90 #: company/templates/company/detail_part.html:90
#: company/templates/company/partdetail.html:54 #: company/templates/company/supplier_part_detail.html:24
#: part/templates/part/detail.html:50 part/templates/part/part_base.html:81 #: part/templates/part/detail.html:50 part/templates/part/part_base.html:81
#: stock/templates/stock/item_base.html:120 #: stock/templates/stock/item_base.html:120
msgid "URL" msgid "URL"
@ -344,8 +344,9 @@ msgstr ""
msgid "Edit notes" msgid "Edit notes"
msgstr "" msgstr ""
#: build/templates/build/tabs.html:5 company/templates/company/tabs.html:5 #: build/templates/build/tabs.html:5
#: part/templates/part/tabs.html:6 #: company/templates/company/supplier_part_tabs.html:5
#: company/templates/company/tabs.html:5 part/templates/part/tabs.html:6
msgid "Details" msgid "Details"
msgstr "" msgstr ""
@ -415,7 +416,7 @@ msgstr ""
msgid "Invalid location selected" msgid "Invalid location selected"
msgstr "" msgstr ""
#: build/views.py:290 stock/views.py:884 #: build/views.py:290 stock/views.py:916
#, python-brace-format #, python-brace-format
msgid "The following serial numbers already exist: ({sn})" msgid "The following serial numbers already exist: ({sn})"
msgstr "" msgstr ""
@ -561,7 +562,7 @@ msgid "Supplier stock keeping unit"
msgstr "" msgstr ""
#: company/models.py:240 company/templates/company/detail_part.html:81 #: company/models.py:240 company/templates/company/detail_part.html:81
#: company/templates/company/partdetail.html:60 #: company/templates/company/supplier_part_detail.html:30
msgid "Manufacturer" msgid "Manufacturer"
msgstr "" msgstr ""
@ -621,7 +622,7 @@ msgstr ""
#: company/templates/company/detail.html:17 #: company/templates/company/detail.html:17
#: company/templates/company/index.html:46 #: company/templates/company/index.html:46
#: company/templates/company/partdetail.html:51 #: company/templates/company/supplier_part_detail.html:21
#: order/templates/order/order_base.html:67 #: order/templates/order/order_base.html:67
#: stock/templates/stock/item_base.html:126 #: stock/templates/stock/item_base.html:126
msgid "Supplier" msgid "Supplier"
@ -633,10 +634,11 @@ msgid "Supplier Parts"
msgstr "" msgstr ""
#: company/templates/company/detail_part.html:13 #: company/templates/company/detail_part.html:13
#: part/templates/part/stock.html:81
msgid "New Supplier Part" msgid "New Supplier Part"
msgstr "" msgstr ""
#: company/templates/company/detail_part.html:15 #: company/templates/company/detail_part.html:15 templates/stock_table.html:10
msgid "Options" msgid "Options"
msgstr "" msgstr ""
@ -645,12 +647,11 @@ msgid "Delete Parts"
msgstr "" msgstr ""
#: company/templates/company/detail_part.html:73 #: company/templates/company/detail_part.html:73
#: company/templates/company/partdetail.html:52 #: company/templates/company/supplier_part_detail.html:22
msgid "SKU" msgid "SKU"
msgstr "" msgstr ""
#: company/templates/company/detail_purchase_orders.html:8 #: company/templates/company/detail_purchase_orders.html:8
#: company/templates/company/partdetail.html:116
#: company/templates/company/tabs.html:15 part/templates/part/tabs.html:43 #: company/templates/company/tabs.html:15 part/templates/part/tabs.html:43
msgid "Purchase Orders" msgid "Purchase Orders"
msgstr "" msgstr ""
@ -664,6 +665,8 @@ msgid "Supplier Stock"
msgstr "" msgstr ""
#: company/templates/company/detail_stock.html:33 #: company/templates/company/detail_stock.html:33
#: company/templates/company/supplier_part_stock.html:38
#: part/templates/part/stock.html:53 templates/stock_table.html:5
msgid "Export" msgid "Export"
msgstr "" msgstr ""
@ -680,10 +683,8 @@ msgstr ""
msgid "ID" msgid "ID"
msgstr "" msgstr ""
#: company/templates/company/index.html:69 #: company/templates/company/index.html:69 part/templates/part/category.html:73
#: company/templates/company/partdetail.html:6 #: templates/navbar.html:10 templates/stats.html:7 templates/stats.html:10
#: part/templates/part/category.html:73 templates/navbar.html:10
#: templates/stats.html:7 templates/stats.html:10
msgid "Parts" msgid "Parts"
msgstr "" msgstr ""
@ -696,61 +697,90 @@ msgstr ""
msgid "Are you sure you want to delete the following Supplier Parts?" msgid "Are you sure you want to delete the following Supplier Parts?"
msgstr "" msgstr ""
#: company/templates/company/partdetail.html:13 #: company/templates/company/supplier_part_base.html:6
#: company/templates/company/supplier_part_base.html:13
#: stock/templates/stock/item_base.html:130 #: stock/templates/stock/item_base.html:130
msgid "Supplier Part" msgid "Supplier Part"
msgstr "" msgstr ""
#: company/templates/company/partdetail.html:41 #: company/templates/company/supplier_part_detail.html:11
msgid "Supplier Part Details" msgid "Supplier Part Details"
msgstr "" msgstr ""
#: company/templates/company/partdetail.html:44 #: company/templates/company/supplier_part_detail.html:14
msgid "Internal Part" msgid "Internal Part"
msgstr "" msgstr ""
#: company/templates/company/partdetail.html:61 #: company/templates/company/supplier_part_detail.html:31
msgid "MPN" msgid "MPN"
msgstr "" msgstr ""
#: company/templates/company/partdetail.html:64 #: company/templates/company/supplier_part_detail.html:34
#: order/templates/order/purchase_order_detail.html:33 #: order/templates/order/purchase_order_detail.html:33
msgid "Note" msgid "Note"
msgstr "" msgstr ""
#: company/templates/company/partdetail.html:70 #: company/templates/company/supplier_part_orders.html:11
msgid "Supplier Part Orders"
msgstr ""
#: company/templates/company/supplier_part_pricing.html:12
msgid "Pricing Information" msgid "Pricing Information"
msgstr "" msgstr ""
#: company/templates/company/partdetail.html:72 #: company/templates/company/supplier_part_pricing.html:14
msgid "Order Multiple" msgid "Order Multiple"
msgstr "" msgstr ""
#: company/templates/company/partdetail.html:74 #: company/templates/company/supplier_part_pricing.html:16
msgid "Base Price (Flat Fee)" msgid "Base Price (Flat Fee)"
msgstr "" msgstr ""
#: company/templates/company/partdetail.html:77 #: company/templates/company/supplier_part_pricing.html:19
msgid "Price Breaks" msgid "Price Breaks"
msgstr "" msgstr ""
#: company/templates/company/partdetail.html:80 #: company/templates/company/supplier_part_pricing.html:22
msgid "New Price Break" msgid "New Price Break"
msgstr "" msgstr ""
#: company/templates/company/partdetail.html:86 #: company/templates/company/supplier_part_pricing.html:28
msgid "Price" msgid "Price"
msgstr "" msgstr ""
#: company/templates/company/partdetail.html:106 #: company/templates/company/supplier_part_pricing.html:48
msgid "No price breaks have been added for this part" msgid "No price breaks have been added for this part"
msgstr "" msgstr ""
#: company/templates/company/supplier_part_stock.html:11
msgid "Supplier Part Stock"
msgstr ""
#: company/templates/company/supplier_part_stock.html:61
#: part/templates/part/stock.html:90
msgid "New Location"
msgstr ""
#: company/templates/company/supplier_part_stock.html:62
#: part/templates/part/stock.html:91
msgid "Create New Location"
msgstr ""
#: company/templates/company/supplier_part_tabs.html:8
msgid "Pricing"
msgstr ""
#: company/templates/company/supplier_part_tabs.html:11
#: company/templates/company/tabs.html:12 part/templates/part/tabs.html:17 #: company/templates/company/tabs.html:12 part/templates/part/tabs.html:17
#: templates/navbar.html:11 #: templates/navbar.html:11
msgid "Stock" msgid "Stock"
msgstr "" msgstr ""
#: company/templates/company/supplier_part_tabs.html:14
#: templates/navbar.html:14
msgid "Orders"
msgstr ""
#: company/templates/company/tabs.html:21 #: company/templates/company/tabs.html:21
msgid "Sales Orders" msgid "Sales Orders"
msgstr "" msgstr ""
@ -791,7 +821,7 @@ msgstr ""
msgid "Edit Supplier Part" msgid "Edit Supplier Part"
msgstr "" msgstr ""
#: company/views.py:179 #: company/views.py:179 part/templates/part/stock.html:82
msgid "Create new Supplier Part" msgid "Create new Supplier Part"
msgstr "" msgstr ""
@ -1437,6 +1467,14 @@ msgstr ""
msgid "Upload new image" msgid "Upload new image"
msgstr "" msgstr ""
#: part/templates/part/stock.html:75
msgid "New Part"
msgstr ""
#: part/templates/part/stock.html:76
msgid "Create New Part"
msgstr ""
#: part/templates/part/tabs.html:9 #: part/templates/part/tabs.html:9
msgid "Parameters" msgid "Parameters"
msgstr "" msgstr ""
@ -1868,134 +1906,134 @@ msgstr ""
msgid "Stock Export Options" msgid "Stock Export Options"
msgstr "" msgstr ""
#: stock/views.py:264 #: stock/views.py:278
msgid "Stock Item QR Code" msgid "Stock Item QR Code"
msgstr "" msgstr ""
#: stock/views.py:287 #: stock/views.py:301
msgid "Adjust Stock" msgid "Adjust Stock"
msgstr "" msgstr ""
#: stock/views.py:396 #: stock/views.py:410
msgid "Move Stock Items" msgid "Move Stock Items"
msgstr "" msgstr ""
#: stock/views.py:397 #: stock/views.py:411
msgid "Count Stock Items" msgid "Count Stock Items"
msgstr "" msgstr ""
#: stock/views.py:398 #: stock/views.py:412
msgid "Remove From Stock" msgid "Remove From Stock"
msgstr "" msgstr ""
#: stock/views.py:399 #: stock/views.py:413
msgid "Add Stock Items" msgid "Add Stock Items"
msgstr "" msgstr ""
#: stock/views.py:400 #: stock/views.py:414
msgid "Delete Stock Items" msgid "Delete Stock Items"
msgstr "" msgstr ""
#: stock/views.py:428 #: stock/views.py:442
msgid "Must enter integer value" msgid "Must enter integer value"
msgstr "" msgstr ""
#: stock/views.py:433 #: stock/views.py:447
msgid "Quantity must be positive" msgid "Quantity must be positive"
msgstr "" msgstr ""
#: stock/views.py:440 #: stock/views.py:454
#, python-brace-format #, python-brace-format
msgid "Quantity must not exceed {x}" msgid "Quantity must not exceed {x}"
msgstr "" msgstr ""
#: stock/views.py:448 #: stock/views.py:462
msgid "Confirm stock adjustment" msgid "Confirm stock adjustment"
msgstr "" msgstr ""
#: stock/views.py:519 #: stock/views.py:533
#, python-brace-format #, python-brace-format
msgid "Added stock to {n} items" msgid "Added stock to {n} items"
msgstr "" msgstr ""
#: stock/views.py:534 #: stock/views.py:548
#, python-brace-format #, python-brace-format
msgid "Removed stock from {n} items" msgid "Removed stock from {n} items"
msgstr "" msgstr ""
#: stock/views.py:547 #: stock/views.py:561
#, python-brace-format #, python-brace-format
msgid "Counted stock for {n} items" msgid "Counted stock for {n} items"
msgstr "" msgstr ""
#: stock/views.py:575 #: stock/views.py:589
msgid "No items were moved" msgid "No items were moved"
msgstr "" msgstr ""
#: stock/views.py:578 #: stock/views.py:592
#, python-brace-format #, python-brace-format
msgid "Moved {n} items to {dest}" msgid "Moved {n} items to {dest}"
msgstr "" msgstr ""
#: stock/views.py:597 #: stock/views.py:611
#, python-brace-format #, python-brace-format
msgid "Deleted {n} stock items" msgid "Deleted {n} stock items"
msgstr "" msgstr ""
#: stock/views.py:609 #: stock/views.py:623
msgid "Edit Stock Item" msgid "Edit Stock Item"
msgstr "" msgstr ""
#: stock/views.py:645 #: stock/views.py:659
msgid "Create new Stock Location" msgid "Create new Stock Location"
msgstr "" msgstr ""
#: stock/views.py:666 #: stock/views.py:680
msgid "Serialize Stock" msgid "Serialize Stock"
msgstr "" msgstr ""
#: stock/views.py:746 #: stock/views.py:760
msgid "Create new Stock Item" msgid "Create new Stock Item"
msgstr "" msgstr ""
#: stock/views.py:810 #: stock/views.py:824
msgid "Copy Stock Item" msgid "Copy Stock Item"
msgstr "" msgstr ""
#: stock/views.py:860 #: stock/views.py:892
msgid "Invalid quantity" msgid "Invalid quantity"
msgstr "" msgstr ""
#: stock/views.py:863 #: stock/views.py:895
msgid "Invalid part selection" msgid "Invalid part selection"
msgstr "" msgstr ""
#: stock/views.py:910 #: stock/views.py:942
#, python-brace-format #, python-brace-format
msgid "Created {n} new stock items" msgid "Created {n} new stock items"
msgstr "" msgstr ""
#: stock/views.py:927 stock/views.py:940 #: stock/views.py:959 stock/views.py:972
msgid "Created new stock item" msgid "Created new stock item"
msgstr "" msgstr ""
#: stock/views.py:957 #: stock/views.py:989
msgid "Delete Stock Location" msgid "Delete Stock Location"
msgstr "" msgstr ""
#: stock/views.py:970 #: stock/views.py:1002
msgid "Delete Stock Item" msgid "Delete Stock Item"
msgstr "" msgstr ""
#: stock/views.py:981 #: stock/views.py:1013
msgid "Delete Stock Tracking Entry" msgid "Delete Stock Tracking Entry"
msgstr "" msgstr ""
#: stock/views.py:998 #: stock/views.py:1030
msgid "Edit Stock Tracking Entry" msgid "Edit Stock Tracking Entry"
msgstr "" msgstr ""
#: stock/views.py:1007 #: stock/views.py:1039
msgid "Add Stock Tracking Entry" msgid "Add Stock Tracking Entry"
msgstr "" msgstr ""
@ -2031,10 +2069,6 @@ msgstr ""
msgid "View Code on GitHub" msgid "View Code on GitHub"
msgstr "" msgstr ""
#: templates/navbar.html:14
msgid "Orders"
msgstr ""
#: templates/navbar.html:23 #: templates/navbar.html:23
msgid "Admin" msgid "Admin"
msgstr "" msgstr ""
@ -2058,3 +2092,31 @@ msgstr ""
#: templates/navbar.html:33 #: templates/navbar.html:33
msgid "Statistics" msgid "Statistics"
msgstr "" msgstr ""
#: templates/stock_table.html:7
msgid "New Stock Item"
msgstr ""
#: templates/stock_table.html:12
msgid "Add stock"
msgstr ""
#: templates/stock_table.html:13
msgid "Remove stock"
msgstr ""
#: templates/stock_table.html:14
msgid "Count stock"
msgstr ""
#: templates/stock_table.html:15
msgid "Move stock"
msgstr ""
#: templates/stock_table.html:16
msgid "Order stock"
msgstr ""
#: templates/stock_table.html:17
msgid "Delete Stock"
msgstr ""

View File

@ -18,6 +18,7 @@ from InvenTree.status_codes import OrderStatus
import os import os
from part.models import Part from part.models import Part
from company.models import SupplierPart
from .models import PurchaseOrder, PurchaseOrderLineItem from .models import PurchaseOrder, PurchaseOrderLineItem
from .serializers import POSerializer, POLineItemSerializer from .serializers import POSerializer, POLineItemSerializer
@ -62,6 +63,14 @@ class POList(generics.ListCreateAPIView):
except (Part.DoesNotExist, ValueError): except (Part.DoesNotExist, ValueError):
pass pass
# Attempt to filter by supplier part
if 'supplier_part' in request.GET:
try:
supplier_part = SupplierPart.objects.get(pk=request.GET['supplier_part'])
queryset = queryset.filter(id__in=[p.id for p in supplier_part.purchase_orders()])
except (ValueError, SupplierPart.DoesNotExist):
pass
data = queryset.values( data = queryset.values(
'pk', 'pk',
'supplier', 'supplier',

View File

@ -1,5 +1,6 @@
{% extends "part/part_base.html" %} {% extends "part/part_base.html" %}
{% load static %} {% load static %}
{% load i18n %}
{% block details %} {% block details %}
{% include 'part/tabs.html' with tab='stock' %} {% include 'part/tabs.html' with tab='stock' %}
@ -49,7 +50,7 @@
$("#stock-export").click(function() { $("#stock-export").click(function() {
launchModalForm("{% url 'stock-export-options' %}", { launchModalForm("{% url 'stock-export-options' %}", {
submit_text: "Export", submit_text: "{% trans 'Export' %}",
success: function(response) { success: function(response) {
var url = "{% url 'stock-export' %}"; var url = "{% url 'stock-export' %}";
@ -71,14 +72,14 @@
secondary: [ secondary: [
{ {
field: 'part', field: 'part',
label: 'New Part', label: '{% trans "New Part" %}',
title: 'Create New Part', title: '{% trans "Create New Part" %}',
url: "{% url 'part-create' %}", url: "{% url 'part-create' %}",
}, },
{ {
field: 'supplier_part', field: 'supplier_part',
label: 'New Supplier Part', label: '{% trans "New Supplier Part" %}',
title: 'Create new Supplier Part', title: '{% trans "Create new Supplier Part" %}',
url: "{% url 'supplier-part-create' %}", url: "{% url 'supplier-part-create' %}",
data: { data: {
part: {{ part.id }} part: {{ part.id }}
@ -86,8 +87,8 @@
}, },
{ {
field: 'location', field: 'location',
label: 'New Location', label: '{% trans "New Location" %}',
title: 'Create New Location', title: '{% trans "Create New Location" %}',
url: "{% url 'stock-location-create' %}", url: "{% url 'stock-location-create' %}",
} }
] ]

View File

@ -301,6 +301,7 @@ class StockList(generics.ListCreateAPIView):
'part__category', 'part__category',
'part__category__name', 'part__category__name',
'part__category__description', 'part__category__description',
'supplier_part',
) )
# Reduce the number of lookups we need to do for categories # Reduce the number of lookups we need to do for categories
@ -371,7 +372,13 @@ class StockList(generics.ListCreateAPIView):
except PartCategory.DoesNotExist: except PartCategory.DoesNotExist:
pass pass
# Filter by supplier # Filter by supplier_part ID
supplier_part_id = self.request.query_params.get('supplier_part', None)
if supplier_part_id:
stock_list = stock_list.filter(supplier_part=supplier_part_id)
# Filter by supplier ID
supplier_id = self.request.query_params.get('supplier', None) supplier_id = self.request.query_params.get('supplier', None)
if supplier_id: if supplier_id:

View File

@ -24,7 +24,7 @@ from InvenTree.helpers import ExtractSerialNumbers
from decimal import Decimal, InvalidOperation from decimal import Decimal, InvalidOperation
from datetime import datetime from datetime import datetime
from company.models import Company from company.models import Company, SupplierPart
from part.models import Part from part.models import Part
from .models import StockItem, StockLocation, StockItemTracking from .models import StockItem, StockLocation, StockItemTracking
@ -212,6 +212,16 @@ class StockExport(AjaxView):
except (ValueError, Company.DoesNotExist): except (ValueError, Company.DoesNotExist):
pass pass
# Check if a particular supplier_part was specified
sup_part_id = request.GET.get('supplier_part', None)
supplier_part = None
if sup_part_id:
try:
supplier_part = SupplierPart.objects.get(pk=sup_part_id)
except (ValueError, SupplierPart.DoesNotExist):
pass
# Check if a particular part was specified # Check if a particular part was specified
part_id = request.GET.get('part', None) part_id = request.GET.get('part', None)
part = None part = None
@ -244,7 +254,11 @@ class StockExport(AjaxView):
if supplier: if supplier:
stock_items = stock_items.filter(supplier_part__supplier=supplier) stock_items = stock_items.filter(supplier_part__supplier=supplier)
if supplier_part:
stock_items = stock_items.filter(supplier_part=supplier_part)
# Filter out stock items that are not 'in stock' # Filter out stock items that are not 'in stock'
# TODO - This might need some more thought in the future...
stock_items = stock_items.filter(customer=None) stock_items = stock_items.filter(customer=None)
stock_items = stock_items.filter(belongs_to=None) stock_items = stock_items.filter(belongs_to=None)
@ -816,6 +830,11 @@ class StockItemCreate(AjaxCreateView):
part_id = self.request.GET.get('part', None) part_id = self.request.GET.get('part', None)
loc_id = self.request.GET.get('location', None) loc_id = self.request.GET.get('location', None)
sup_part_id = self.request.GET.get('supplier_part', None)
part = None
location = None
supplier_part = None
# Part field has been specified # Part field has been specified
if part_id: if part_id:
@ -824,14 +843,27 @@ class StockItemCreate(AjaxCreateView):
initials['part'] = part initials['part'] = part
initials['location'] = part.get_default_location() initials['location'] = part.get_default_location()
initials['supplier_part'] = part.default_supplier initials['supplier_part'] = part.default_supplier
except Part.DoesNotExist: except (ValueError, Part.DoesNotExist):
pass
# SupplierPart field has been specified
# It must match the Part, if that has been supplied
if sup_part_id:
try:
supplier_part = SupplierPart.objects.get(pk=sup_part_id)
if part is None or supplier_part.part == part:
initials['supplier_part'] = supplier_part
except (ValueError, SupplierPart.DoesNotExist):
pass pass
# Location has been specified # Location has been specified
if loc_id: if loc_id:
try: try:
initials['location'] = StockLocation.objects.get(pk=loc_id) location = StockLocation.objects.get(pk=loc_id)
except StockLocation.DoesNotExist: initials['location'] = location
except (ValueError, StockLocation.DoesNotExist):
pass pass
return initials return initials

View File

@ -1,18 +1,18 @@
{% load i18n %}
<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;'>
<button class='btn btn-default' id='stock-export' title='Export Stock Information'>Export</button> <button class='btn btn-default' id='stock-export' title='Export Stock Information'>{% trans "Export" %}</button>
{% if not part or part.is_template == False %} <button class="btn btn-success" id='item-create'>{% trans "New Stock Item" %}</button>
<button class="btn btn-success" id='item-create'>New Stock Item</button>
{% endif %}
<div class="dropdown" style='float: right;'> <div class="dropdown" style='float: right;'>
<button id='stock-options' class="btn btn-primary dropdown-toggle" type="button" data-toggle="dropdown">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">
<li><a href="#" id='multi-item-add' title='Add to selected stock items'>Add stock</a></li> <li><a href="#" id='multi-item-add' title='Add to selected stock items'>{% trans "Add stock" %}</a></li>
<li><a href="#" id='multi-item-remove' title='Remove from selected stock items'>Remove stock</a></li> <li><a href="#" id='multi-item-remove' title='Remove from selected stock items'>{% trans "Remove stock" %}</a></li>
<li><a href="#" id='multi-item-stocktake' title='Stocktake selected stock items'>Count stock</a></li> <li><a href="#" id='multi-item-stocktake' title='Stocktake selected stock items'>{% trans "Count stock" %}</a></li>
<li><a href='#' id='multi-item-move' title='Move selected stock items'>Move stock</a></li> <li><a href='#' id='multi-item-move' title='Move selected stock items'>{% trans "Move stock" %}</a></li>
<li><a href='#' id='multi-item-order' title='Order selected items'>Order stock</a></li> <li><a href='#' id='multi-item-order' title='Order selected items'>{% trans "Order stock" %}</a></li>
<li><a href='#' id='multi-item-delete' title='Delete selected items'>Delete Stock</a></li> <li><a href='#' id='multi-item-delete' title='Delete selected items'>{% trans "Delete Stock" %}</a></li>
</ul> </ul>
</div> </div>
</div> </div>