From 4fd7b24e3c0d8d2b261c4bedd9dbfa6cec866242 Mon Sep 17 00:00:00 2001 From: Oliver Walters Date: Tue, 28 Apr 2020 08:36:13 +1000 Subject: [PATCH 01/10] Update buttons for part BOM view --- InvenTree/InvenTree/static/css/inventree.css | 4 ++++ InvenTree/part/templates/part/bom.html | 23 +++++++++++--------- 2 files changed, 17 insertions(+), 10 deletions(-) diff --git a/InvenTree/InvenTree/static/css/inventree.css b/InvenTree/InvenTree/static/css/inventree.css index 2a1215d7a8..a1358341cc 100644 --- a/InvenTree/InvenTree/static/css/inventree.css +++ b/InvenTree/InvenTree/static/css/inventree.css @@ -384,6 +384,10 @@ padding-bottom: 2px; } +.action-button { + font-size: 125%; +} + .action-buttons .btn { font-size: 175%; align-content: center; diff --git a/InvenTree/part/templates/part/bom.html b/InvenTree/part/templates/part/bom.html index 374acc94fd..b35a0f1b5a 100644 --- a/InvenTree/part/templates/part/bom.html +++ b/InvenTree/part/templates/part/bom.html @@ -1,5 +1,6 @@ {% extends "part/part_base.html" %} {% load static %} +{% load i18n %} {% block css %} @@ -9,7 +10,7 @@ {% include 'part/tabs.html' with tab='bom' %} -

Bill of Materials

+

{% trans "Bill of Materials" %}

{% if part.has_complete_bom_pricing == False %}
@@ -33,18 +34,16 @@
{% if editing_enabled %} - - - - - - + + + + {% elif part.active %} - + {% if part.is_bom_valid == False %} - + {% endif %} - + {% endif %}
@@ -76,6 +75,10 @@ location.href = "{% url 'part-bom' part.id %}"; }); + $('#bom-upload').click(function() { + location.href = "{% url 'upload-bom' part.id %}"; + }); + $("#bom-item-new").click(function () { launchModalForm( "{% url 'bom-item-create' %}?parent={{ part.id }}", From 5727e27ae61eeca77d490ded80ec8ec372dbbad9 Mon Sep 17 00:00:00 2001 From: Oliver Walters Date: Tue, 28 Apr 2020 08:44:10 +1000 Subject: [PATCH 02/10] Filter by 'in stock' items when auto-allocating to build --- InvenTree/build/models.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/InvenTree/build/models.py b/InvenTree/build/models.py index 8a00f0ad63..f5dd359a0b 100644 --- a/InvenTree/build/models.py +++ b/InvenTree/build/models.py @@ -189,7 +189,11 @@ class Build(MPTTModel): # How many parts required for this build? q_required = item.quantity * self.quantity - stock = StockItem.objects.filter(part=item.sub_part) + # Grab a list of StockItem objects which are "in stock" + stock = StockItem.objects.filter(StockItem.IN_STOCK_FILTER) + + # Filter by part reference + stock = stock.filter(part=item.sub_part) # Ensure that the available stock items are in the correct location if self.take_from is not None: From abbd0bb16a2dbaf5199442577284a0b844660325 Mon Sep 17 00:00:00 2001 From: Oliver Walters Date: Tue, 28 Apr 2020 09:05:06 +1000 Subject: [PATCH 03/10] Bug fix in supplier-part table rendering --- InvenTree/InvenTree/static/script/inventree/company.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/InvenTree/InvenTree/static/script/inventree/company.js b/InvenTree/InvenTree/static/script/inventree/company.js index 86974630ef..d5c37ce363 100644 --- a/InvenTree/InvenTree/static/script/inventree/company.js +++ b/InvenTree/InvenTree/static/script/inventree/company.js @@ -148,7 +148,7 @@ function loadSupplierPartTable(table, url, options) { field: 'SKU', title: "Supplier Part", formatter: function(value, row, index, field) { - return renderLink(value, row.url); + return renderLink(value, `/supplier-part/${row.pk}/`); } }, { From 440fe155ff702ceb7506e1e7ae06ba131ce4e56b Mon Sep 17 00:00:00 2001 From: Oliver Walters Date: Tue, 28 Apr 2020 09:31:51 +1000 Subject: [PATCH 04/10] Change glyphicons for fontawesome I think I gottem all --- .../InvenTree/static/script/inventree/bom.js | 8 ++++---- .../InvenTree/static/script/inventree/build.js | 4 ++-- .../InvenTree/static/script/inventree/stock.js | 4 ++-- InvenTree/build/templates/build/notes.html | 2 +- InvenTree/build/templates/build/tabs.html | 2 +- InvenTree/company/templates/company/notes.html | 2 +- .../templates/company/supplier_part_base.html | 10 +++++----- .../templates/company/supplier_part_pricing.html | 4 ++-- InvenTree/company/templates/company/tabs.html | 2 +- InvenTree/order/templates/order/order_notes.html | 2 +- .../order/order_wizard/select_parts.html | 4 ++-- .../templates/order/order_wizard/select_pos.html | 2 +- .../order/templates/order/po_attachments.html | 6 +++--- InvenTree/order/templates/order/po_tabs.html | 2 +- .../order/templates/order/receive_parts.html | 2 +- .../order/templates/order/sales_order_notes.html | 2 +- .../order/templates/order/so_attachments.html | 4 ++-- InvenTree/order/templates/order/so_tabs.html | 2 +- InvenTree/part/templates/part/attachments.html | 4 ++-- .../templates/part/bom_upload/select_fields.html | 4 ++-- .../templates/part/bom_upload/select_parts.html | 4 ++-- InvenTree/part/templates/part/notes.html | 2 +- InvenTree/part/templates/part/params.html | 15 ++++++++------- InvenTree/part/templates/part/part_thumb.html | 4 ++-- InvenTree/part/templates/part/set_category.html | 13 +++++++------ InvenTree/stock/templates/stock/item_notes.html | 2 +- InvenTree/stock/templates/stock/location.html | 14 +++++++------- InvenTree/stock/templates/stock/stock_adjust.html | 2 +- InvenTree/stock/templates/stock/tabs.html | 2 +- .../templates/InvenTree/settings/currency.html | 4 ++-- InvenTree/templates/InvenTree/settings/part.html | 11 ++++++----- InvenTree/templates/InvenTree/settings/tabs.html | 8 ++++---- 32 files changed, 78 insertions(+), 75 deletions(-) diff --git a/InvenTree/InvenTree/static/script/inventree/bom.js b/InvenTree/InvenTree/static/script/inventree/bom.js index def3910999..55337e3fa8 100644 --- a/InvenTree/InvenTree/static/script/inventree/bom.js +++ b/InvenTree/InvenTree/static/script/inventree/bom.js @@ -237,11 +237,11 @@ function loadBomTable(table, options) { cols.push({ formatter: function(value, row, index, field) { - var bValidate = ""; - var bValid = ""; + var bValidate = ""; + var bValid = ""; - var bEdit = ""; - var bDelt = ""; + var bEdit = ""; + var bDelt = ""; var html = "
"; diff --git a/InvenTree/InvenTree/static/script/inventree/build.js b/InvenTree/InvenTree/static/script/inventree/build.js index 28767c99b4..bb2de7fb81 100644 --- a/InvenTree/InvenTree/static/script/inventree/build.js +++ b/InvenTree/InvenTree/static/script/inventree/build.js @@ -119,8 +119,8 @@ function loadAllocationTable(table, part_id, part, url, required, button) { formatter: function(value, row, index, field) { var html = parseFloat(value); - var bEdit = ""; - var bDel = ""; + var bEdit = ""; + var bDel = ""; html += "
" + bEdit + bDel + "
"; diff --git a/InvenTree/InvenTree/static/script/inventree/stock.js b/InvenTree/InvenTree/static/script/inventree/stock.js index e21971bb0f..4e4b61aa93 100644 --- a/InvenTree/InvenTree/static/script/inventree/stock.js +++ b/InvenTree/InvenTree/static/script/inventree/stock.js @@ -475,8 +475,8 @@ function loadStockTrackingTable(table, options) { formatter: function(value, row, index, field) { // Manually created entries can be edited or deleted if (!row.system) { - var bEdit = ""; - var bDel = ""; + var bEdit = ""; + var bDel = ""; return "
" + bEdit + bDel + "
"; } else { diff --git a/InvenTree/build/templates/build/notes.html b/InvenTree/build/templates/build/notes.html index 6e05a40c95..f54172ac21 100644 --- a/InvenTree/build/templates/build/notes.html +++ b/InvenTree/build/templates/build/notes.html @@ -30,7 +30,7 @@

{% trans "Build Notes" %}

- +

diff --git a/InvenTree/build/templates/build/tabs.html b/InvenTree/build/templates/build/tabs.html index 24b1e53a15..ca2e92f290 100644 --- a/InvenTree/build/templates/build/tabs.html +++ b/InvenTree/build/templates/build/tabs.html @@ -11,6 +11,6 @@ {% trans "Build Outputs" %}{% if build.output_count > 0%}{{ build.output_count }}{% endif %} - {% trans "Notes" %}{% if build.notes %} {% endif %} + {% trans "Notes" %}{% if build.notes %} {% endif %} \ No newline at end of file diff --git a/InvenTree/company/templates/company/notes.html b/InvenTree/company/templates/company/notes.html index 467bf49d2d..5ee1706acd 100644 --- a/InvenTree/company/templates/company/notes.html +++ b/InvenTree/company/templates/company/notes.html @@ -27,7 +27,7 @@

{% trans "Company Notes" %}

- +

diff --git a/InvenTree/company/templates/company/supplier_part_base.html b/InvenTree/company/templates/company/supplier_part_base.html index 5083af4f3a..5a3d49a10e 100644 --- a/InvenTree/company/templates/company/supplier_part_base.html +++ b/InvenTree/company/templates/company/supplier_part_base.html @@ -19,12 +19,12 @@ src="{% static 'img/blank_image.png' %}"

{% trans "Supplier Part" %}

{{ part.supplier.name }} - {{ part.SKU }}

-
- -
diff --git a/InvenTree/company/templates/company/supplier_part_pricing.html b/InvenTree/company/templates/company/supplier_part_pricing.html index bed8d9ed35..080871ace7 100644 --- a/InvenTree/company/templates/company/supplier_part_pricing.html +++ b/InvenTree/company/templates/company/supplier_part_pricing.html @@ -36,8 +36,8 @@ {% decimal pb.cost %} {% if pb.currency %}{{ pb.currency.suffix }}{% endif %}
- - + +
diff --git a/InvenTree/company/templates/company/tabs.html b/InvenTree/company/templates/company/tabs.html index 8e01bf30c0..9fd00ceb11 100644 --- a/InvenTree/company/templates/company/tabs.html +++ b/InvenTree/company/templates/company/tabs.html @@ -23,6 +23,6 @@ {% endif %} - {% trans "Notes" %}{% if company.notes %} {% endif %} + {% trans "Notes" %}{% if company.notes %} {% endif %} diff --git a/InvenTree/order/templates/order/order_notes.html b/InvenTree/order/templates/order/order_notes.html index 1d2c19c6cb..237098e10d 100644 --- a/InvenTree/order/templates/order/order_notes.html +++ b/InvenTree/order/templates/order/order_notes.html @@ -29,7 +29,7 @@

{% trans "Order Notes" %}

- +

diff --git a/InvenTree/order/templates/order/order_wizard/select_parts.html b/InvenTree/order/templates/order/order_wizard/select_parts.html index d0e65e8f22..9c7c90ac26 100644 --- a/InvenTree/order/templates/order/order_wizard/select_parts.html +++ b/InvenTree/order/templates/order/order_wizard/select_parts.html @@ -40,7 +40,7 @@ @@ -67,7 +67,7 @@ diff --git a/InvenTree/order/templates/order/order_wizard/select_pos.html b/InvenTree/order/templates/order/order_wizard/select_pos.html index bd6c30f71b..a24c342e0f 100644 --- a/InvenTree/order/templates/order/order_wizard/select_pos.html +++ b/InvenTree/order/templates/order/order_wizard/select_pos.html @@ -45,7 +45,7 @@ title='Create new purchase order for {{ supplier.name }}' type='button' onclick='newPurchaseOrderFromOrderWizard()'> - + diff --git a/InvenTree/order/templates/order/po_attachments.html b/InvenTree/order/templates/order/po_attachments.html index e8e2b4bbff..388b7197b6 100644 --- a/InvenTree/order/templates/order/po_attachments.html +++ b/InvenTree/order/templates/order/po_attachments.html @@ -8,7 +8,7 @@ {% include 'order/po_tabs.html' with tab='attachments' %} -

{% trans "Purchase Order Attachments" %} +

{% trans "Purchase Order Attachments" %}


@@ -34,10 +34,10 @@
diff --git a/InvenTree/order/templates/order/po_tabs.html b/InvenTree/order/templates/order/po_tabs.html index a04c97eba5..d5c7286c3f 100644 --- a/InvenTree/order/templates/order/po_tabs.html +++ b/InvenTree/order/templates/order/po_tabs.html @@ -12,6 +12,6 @@ - {% trans "Notes" %}{% if order.notes %} {% endif %} + {% trans "Notes" %}{% if order.notes %} {% endif %} diff --git a/InvenTree/order/templates/order/receive_parts.html b/InvenTree/order/templates/order/receive_parts.html index 3ebaa66889..f71959cdc0 100644 --- a/InvenTree/order/templates/order/receive_parts.html +++ b/InvenTree/order/templates/order/receive_parts.html @@ -41,7 +41,7 @@ Receive outstanding parts for {{ order }} - {{ order.description }} diff --git a/InvenTree/order/templates/order/sales_order_notes.html b/InvenTree/order/templates/order/sales_order_notes.html index 671b592569..959746667b 100644 --- a/InvenTree/order/templates/order/sales_order_notes.html +++ b/InvenTree/order/templates/order/sales_order_notes.html @@ -34,7 +34,7 @@ InvenTree | {% trans "Sales Order" %}

{% trans "Order Notes" %}

- +

diff --git a/InvenTree/order/templates/order/so_attachments.html b/InvenTree/order/templates/order/so_attachments.html index 82248fd5eb..ca4170beff 100644 --- a/InvenTree/order/templates/order/so_attachments.html +++ b/InvenTree/order/templates/order/so_attachments.html @@ -34,10 +34,10 @@
diff --git a/InvenTree/order/templates/order/so_tabs.html b/InvenTree/order/templates/order/so_tabs.html index cb3740a073..95ccac7933 100644 --- a/InvenTree/order/templates/order/so_tabs.html +++ b/InvenTree/order/templates/order/so_tabs.html @@ -20,6 +20,6 @@ - {% trans "Notes" %}{% if order.notes %} {% endif %} + {% trans "Notes" %}{% if order.notes %} {% endif %} \ No newline at end of file diff --git a/InvenTree/part/templates/part/attachments.html b/InvenTree/part/templates/part/attachments.html index 88cb965eeb..b89a40e654 100644 --- a/InvenTree/part/templates/part/attachments.html +++ b/InvenTree/part/templates/part/attachments.html @@ -32,10 +32,10 @@
diff --git a/InvenTree/part/templates/part/bom_upload/select_fields.html b/InvenTree/part/templates/part/bom_upload/select_fields.html index 21849f31f8..d49b1c12ce 100644 --- a/InvenTree/part/templates/part/bom_upload/select_fields.html +++ b/InvenTree/part/templates/part/bom_upload/select_fields.html @@ -38,7 +38,7 @@ {{ col.name }} @@ -67,7 +67,7 @@ {{ forloop.counter }} diff --git a/InvenTree/part/templates/part/bom_upload/select_parts.html b/InvenTree/part/templates/part/bom_upload/select_parts.html index 9faeacc3ea..f5851e5d43 100644 --- a/InvenTree/part/templates/part/bom_upload/select_parts.html +++ b/InvenTree/part/templates/part/bom_upload/select_parts.html @@ -48,7 +48,7 @@ @@ -58,7 +58,7 @@ {% if item.column.guess == 'Part' %} {% endif %} - + {% endfor %} diff --git a/InvenTree/stock/templates/stock/tabs.html b/InvenTree/stock/templates/stock/tabs.html index 378f74e28e..62ee68bc4b 100644 --- a/InvenTree/stock/templates/stock/tabs.html +++ b/InvenTree/stock/templates/stock/tabs.html @@ -14,6 +14,6 @@ {% endif %} - {% trans "Notes" %}{% if item.notes %} {% endif %} + {% trans "Notes" %}{% if item.notes %} {% endif %} \ No newline at end of file diff --git a/InvenTree/templates/InvenTree/settings/currency.html b/InvenTree/templates/InvenTree/settings/currency.html index 4eb9420f05..9c602a67fc 100644 --- a/InvenTree/templates/InvenTree/settings/currency.html +++ b/InvenTree/templates/InvenTree/settings/currency.html @@ -67,8 +67,8 @@ { formatter: function(value, row, index, field) { - var bEdit = ""; - var bDel = ""; + var bEdit = ""; + var bDel = ""; var html = "
" + bEdit + bDel + "
"; diff --git a/InvenTree/templates/InvenTree/settings/part.html b/InvenTree/templates/InvenTree/settings/part.html index 2bbfaf2b03..96507c7ec6 100644 --- a/InvenTree/templates/InvenTree/settings/part.html +++ b/InvenTree/templates/InvenTree/settings/part.html @@ -1,14 +1,15 @@ {% extends "InvenTree/settings/settings.html" %} +{% load i18n %} {% block tabs %} {% include "InvenTree/settings/tabs.html" with tab='part' %} {% endblock %} {% block settings %} -

Part Parameter Templates

+

{% transa "Part Parameter Templates" %}

- +
@@ -24,7 +25,7 @@ queryParams: { ordering: 'name', }, - formatNoMatches: function() { return "No part parameter templates found"; }, + formatNoMatches: function() { return '{% trans "No part parameter templates found" %}'; }, columns: [ { field: 'pk', @@ -43,8 +44,8 @@ }, { formatter: function(value, row, index, field) { - var bEdit = ""; - var bDel = ""; + var bEdit = ""; + var bDel = ""; var html = "
" + bEdit + bDel + "
"; diff --git a/InvenTree/templates/InvenTree/settings/tabs.html b/InvenTree/templates/InvenTree/settings/tabs.html index c33f823be2..7b049e4fc6 100644 --- a/InvenTree/templates/InvenTree/settings/tabs.html +++ b/InvenTree/templates/InvenTree/settings/tabs.html @@ -1,16 +1,16 @@ \ No newline at end of file From b91397100804c4114b5bf23dfb462c49e74f3532 Mon Sep 17 00:00:00 2001 From: Oliver Walters Date: Tue, 28 Apr 2020 09:32:33 +1000 Subject: [PATCH 05/10] Add more translatable strings --- InvenTree/locale/de/LC_MESSAGES/django.mo | Bin 26245 -> 25831 bytes InvenTree/locale/de/LC_MESSAGES/django.po | 1548 ++++++++++++++------- InvenTree/locale/en/LC_MESSAGES/django.po | 1355 +++++++++++------- InvenTree/locale/es/LC_MESSAGES/django.po | 1355 +++++++++++------- 4 files changed, 2740 insertions(+), 1518 deletions(-) diff --git a/InvenTree/locale/de/LC_MESSAGES/django.mo b/InvenTree/locale/de/LC_MESSAGES/django.mo index 6cd6ed477ebc14df3564db68199751b661859d4c..84a39a22c6057a91a94248c8655a8247a799ee22 100644 GIT binary patch delta 7646 zcmZA53w+4s9>?)#H)FQh=CZNbhMCPUY_6LzM#gL|b2rOnE=Ml8c8EVo2vG~krHgW? zT(XpF=cJTEoaHV=$*o)xq8#V*-T&#loc^!ZZ|~=M{?Gsa-2Y~?4tQMr(!)6u;=R~# z_4hC)0{zPx^9|`gDyr0&_En8Z!c5Gc5`Yl|CLDeq(Cnig=%0Xs(b}%jf+qt*o}H{A8LlavHpOX+S}G@ zF>ZsMP#qbB+9MNe`5aWoR>d&?s<54cy0{-T;`^wn4yozRM5MJDY6^2v9qEr+>mkTs z%|fh)n^EsMhZ^}k)XbENb(bUxH4{k=3Ek*~ewc@v`eCRBW}?=19%@FGVIACr>fmW) z(B?8~1_EjsLtCa9Hp6_>0GFXRzKeQp6Kan*J4uux@ul?;dXYbdTH{lwssA0B6ywcs zWjt!hvQZryggSPUt;xC@y77YFf}m^+aPV3XKeX9Hoq6u z;0;uVeQMhe7HWp#(FdEL_Dl;@Ls?iFhuHGbsF6>@aytL>Na&a>M|EJM&0j+`=*hfl z#G$CQOhxULuBaDJN7b8)8sREbhc=?7d>5+0-Kfod5H(|$Fo5>WLlWAJ0W7RGQ9SBJ zS*Q`@p&p!sp126rU?FOX*P;fn!{!g7Hs5(vL-$b~38vSYp-QOtMWCZZBN7^UHmZRI zsF5u~KU{`o@h$5n>rT|>+H3PCQJeWktdDn4|EAR9NN8XgsHGW->iEQZ%)cI(OMzU5 zY-F3RqxQGq$C)5l@CA!bmM}P9IP|tNjy{8w_2jigj*m~3^-G}LTC6W2h zAW?_zHozy5{bg2TG#)@cisl*yU=WppFcNi46H&*l12)1jNZ-sFEQ3c-?>mcuSccx~ zRD~hi%QSUJsHcN42A{VTHlo(*pv@maU-GxH4L(54OgjI<=rnXfbu8EB3s4O{f!YI8 zupGXGT8cMOGv@3ep|vhXb>tK>SmT-OR!lM<)qfU4 za20BX-p2~K3$+J|ZT<$9oPQsNqaId7HB<}LP+z2u8IC%hucJn~6SbzNP*dvD)NP<5 zYERTgou;<7{8?nbnPsRY`4YqMI0mu*%uRd4vzfb=!Kk$lLv*-JOmaVHRr5 z^KE_%Y6)hdM!p&=;YL(PKS#~*QB+62N1Y7w9}-&gdd=P4o{#!RWd@eVw^1G0hI+vl zs5Lxn%TJ?5b``aU?%VQeDejUaqGm7?wI>RY{cA?2aQ+99c$0!m^htF`o`b5`9ZNO~ zY6ga(IyMzG6K~l2@1bUF3r64$R7Z}ZPR&D9eP4dj)cZnE0}F4#{HsDD1$uE4)OqiV zUN{wpcrX*F9$#W%b1=N6y96Up9h-()(?Zm_e$VEQVI27zsLfirmD`a-YjcN$Uf32p z;$qau&!KvH6}8sCqSn$k-JQ}%)EYO%D9k`LG#IPk0_2-x)}ls!5;dR;sPD{WtcFft zYqvsu45uIkRk5cn?~B?zLu`H`s@@EnUy16#TGX-Ki`pXxkON{)BHPP^v~hny$--pv zPa!knnDrzy;!mvyP$NBtI+oW^GobIZ>Xk<|P!%-;wNY!|7*#(NwOO-KBkyPPLs4JK z3D&1e?mHY85_-`KsPp|Q>I1V4HL|l9jSp=;x~*HU71pIZAJyOjRL7R1_QYE2E{rB$ zj8*X#s-56=EHUky`Xsbw%}^uHMNRPt>ul8VT8%!q8P(yfs1bjL+RaB%$N37XV^tn= zJJQ~ohuVZ=QP0gmrxuA#p$RHyn>~13+hYvF{*)ss7-XsmdAB) zr??q%)J-4M{iUc6+kVuNJV4E0NJn=D!#Xnm8hH!_TDxS_h|*C@kck>u0hYlz$k*Du zggQR^P*eXiYHB^Q+~XCB>S!uz#E+u}HVHM5g{Tg_?${e!P@C-lvOmnv7>`Mv+)a~* z`T$Kqy>J8i;U27ohp-g>X3HO zR(+*36XB>1q+tW>j#{GGs2Ny<8sQoYz>n!3!4ctXN7udxeNCIl@+o6^?3&UvNTvvB0V^O=jvCZdT5cz!6UKxY6aUI6tVbn}Nz+j#K;BM{+ zYG5GwMpz#+P@8T7YDOH?$mb&;Me`!6gGW#eoJF%p4MaYYW*+LBe+V@ozn*SK zDx;pyM128!_hkOn&{Gs7;08>`lc?hr(aT-4G}PwHKy9L-*c-=UdEAehsqauTbpbQ-w zzKH73MpQ?(VHMns?0Rz=b>GYB>-H=FRWSn9!2XFoWo`U|lVzJ^KoAy!7`3W7^ROx&LoLm1)TRpU z?>?W2Y9Jq@a3VIvC8&lDB2Agg7>w=mOP0Vfy+~+n#-nb`L@mW)R0mer`|B{A{8rSO z9!7QiJJcSyWA%I7JiH=cr}ICXL~{x@S+AnbYwQ4bM!H}u`3b0F zwgPp`)}uD#4%8HXZtovO?V*ddyvjiL!&DpNDes7SZUQFJzL`#9Jbr-PF@BJ{>mAh0 z%tGyrmr*mY6154pVF(tZ_R0n8b<`%ihiWitu-jlJYDRKV^#`C6N@4^FH82wsaK3db zdXoPEJur+P)v+6{#vm1Pu@y{H(mq5TVhnlhc3r(}o!S`V7X9z%Y}zl$Jm6;qVy3<2 zjhk#bkq6t`^p93C(x$IqB=H#0f{3R61?-Av@g|{@bDj8_&{Ao6s}d#cH=?3Hv6Jj{ zB8?bI{Pn6uK`8Z}#eCxOUn(pi?@QDpMi5UDiwMo2t~{RQbec3QPk0iyHU7pVbd^R; zzpnX&ANhTFhbSaoC9(-!+9&#x{eLjlKHr1%QbN~57xR=gi8?RZ^d76$)cJx;1rjx| z7XAZuPEQcSiN!=s%KyA_NIy?T8%S4Y;uS(iw*4dZ$eQJZj%F+3BB3kM#dM)=6A#wE zFNvx|E212sYXT8PIvTeTe_p?nh_Q8k__Gk3*|IkuDbo?_LWFbgacqeH!eK
4>& z`JY5V5uqcMz>N@lGlTqFgsy2WCWCuAf(M9WL<;#zL>94-ypG)tqA`(5*<|dDx(>UT zKkzr=p7L7%HAFC#Dic>p|C7-58F8QZnTQ~CJwyDhB*h;Ttb?!)@eWa!cj)8OfoM&7 zFLuITu_q43mc&nlE=M02U2|Rj@8>ykK19z)O52gv*KZ~90kMu~z>6#48A8`Yq7U&d zkxc9&<`KGX5M`)egE*w|mnE^0!qqhkZapG`_=fyiBAK+VMlK~k zU*cyRk^V?o1Ja+{{6UN*f;9iRyx^q0A-u_di%;9KPq3*?izMPJB9%Bz=xXCq^7B1@ z-X%s8}!K`2Zr2v{Q}5Rw9l}MQo1o#1PWY5uJ#3hC)}h- zCq0Mshr}pipe_H%D(X|G2eF0p6y=FxBAc@61Xr3lQlk66o{pryv-ug=$E{>K;8gN$ zu!=3~rFw-8!pb`^c(=*l57soxEE6SIh0?r%ZvpRY=BvoeLbgs!f{*pd`~^}`p4e-nifk;%lF!tkj1 zg&#yE72S;b&9BfqVOr7bgm5pP%<%;y#}zHFx5KxnpmB>*McY#gy$i>uzh9W#I;m)E t>&^a!**V*bf;&(4@*6XH-0<m;f&cz$k1<&IEj88Bo9H(GIyaOBILX5#jF%n<0^|vsL z`cVwQb66jL#Ae2L%^&tebfPi2oQTJ4oPfG;HR=KDkiHooM&K?~2R=eQ_&BN~=P(d| zLv{2DMq#MS=~x2tN|TNuyx$C_5JbZmbwi0aT+s1BaT z=J>0vMvlnzN`WsYPWXw5`*g zj9QFcQ7_EFU@Sn*Z80iS)3GBiLUnK}l2o%Bm4R=OzM4pSm5JW#DQJY#u`bR>-M9#~ zNS0$geA>DJ1F3I9&9M*b;~^xg=9slkduPhppgNX?+Ev4>(~)iIHB0RU&!XmRJ8IbhFg;tb-cT2x7>%=JbMWF+doN({h7s2ARc`Vy`| z4Zw$9HSD3FR3AaT=topXLRhLwRXFN_jjf$fBkzNH!9A#vEy4!)5QgF^>ju;s+hXhQ zp)&bND)~>RaFPbiQFNL!qI3+WJ{;A-B5Z^;)_af*VpgDDxD)llJ*bW!!p?XYm6=dp z(g@=)3_GIk%So)# zL6TxFqpnM2SXv`_s6|+S*JBN8YF|WUbRVkY=aJ`mO-MH<15p^si8#~^si+s`qdGXk z){Cv>sE*a3=6oLN#S4)^o2OAz@fj-hr?3fz(5nfUh|RVCy%eHoScyv23)mQ6L#>4a zwtf+n8PnbAXawp-Em1ETg}lR*ptk1|=wCyqsr?-N_h&lKkHA>oZ;~l!JLT9DUQDCD z95wQHFa{5y=I)Yhzl!y!huz?;foN1mnxh8L7PZQIpa$3%b^lmfpNd}1#T*J6`IFcb zpF{O@H!8&+V=Nv=b?kT4+_%qiR{dDiADLMgjcZUH*@C+NE!0#VwC#sc13QyN{#QRnke5AKiJ{}mXBOL0;irV!QfKYFos zF*V1TiaDr`J>;dJxm}0a=eunE0=Af< z5*DG(FF;M@gBXa<+xAV!8uOa%wqYOY!q05|2UG{Hp!RoMZ)Y(jAv@8eA{)R=!Vb6w zGw=h{KCg3=lYwT|B-DsIpuRJC7^VF`!d_5{TCLMj8JL4XxEOWAQq-z`1~symY<&l6 z8}7A!WY2$rdd^8qz{{A74f{9)>w+%cZ-(0j59-3@*a>~87oI?M>^sz=xnhm%>-_O) zgIWuHQTMx1bG-mHWlK;a-+;>SF6&YBY9H282*P?dJ3S6VjW`Ci+EY;bz9*_<6{wD^ zvTjDD{5{lt$FMD4M&{TwWsjy}8`Lfvi5gHD1pDVIR~83sGxkCbq}NP|tk}_1*Xs)qzV`A4BrVzdngk`OXVkp%zhJRQoJ+ z;S%hD8}0dvs4t*vfRl-#s0>cRP%KA{d?tqBBGiCZpr&9oYGB*E6hbH*L;gOPGpOy8 zIM7LbE-JMnu{BObWnw96#9L4!+mGt-Db&>bY}-QyIT=Yp)}P5mWo992&3HFc&==|; z>VW}+oz>kObzy7NTn@r|IK!Twje5W$)JWE$QoR=&;ZamaE}~LxhBzOd5Y(EA!z}Ip zbP8If<<^C$2R?)9(7SjY9z#7Se5jL=W*9-e6E?)2sPhA`0ggo7KM}Rv9aIz7ErID|)r~&QJ)$@3AgkMZUTwV5HNrKByNCMs;watyf?gbuV6rn^24M1h&DT zQO=_4hz#0PVJ^OlT`_nx`PU-L9_{>BYbk2P%dsi0#b&qzHL^p<=iOXEefx87aYl3( zsw0b0_ismi3HPC1bRIik;uxm``KVpCWDNP&Ty3I3i*74w@f=3}F{k)ZDznEr+jJ-@ zQw69gn~d7;(^09NZO`A2S~DwAYhWvC_q>js@f~Zemx6klQsCGRW2jHYY@CbQ_q$Nr z?X)#uoYNr}sv{{Fi(OEweULrxK~3EpR0khKUH>F%Al~&9v<9}IQv3#9k7rS-OdRiY zAPv>g5jY8}ZT$!~qy9VU`p8?IsY}8x)VpJIEXO8zFKUgf!d}|{Z&FZC^e^RnRZT;T z$1$imx*fH+R-zuTAGJ14U?Tp8-7#jO^P-_h-_2Ci>VF?w;1N^?enqth6>3Vn^qzt` zkbt_N1L}qwP;)y9_2MGbT9|3QALFR6LEZnlt?xr!e-?HBRa9m}ig+e=wobzo-fuQg zP)ZJ=woNT+&Jv29?UsgGl-Z~h-;6qc3u-Zy+4fcFqW%JER~z6XH+J#P>XUjM&WI!H8bD31e2*hihA+us286_W#&iJ^?#z) zN(c)`&rg~}{yR`ep+Szq0Gx+)u!Vj&z9Qc9m;U}q{kv#l?R6>EMC)R%Ve6Y}qKR!A zghQzBC4SZXU!d?Zp+(n+lf&>j)Z7iTH)-@Y+j0TrV9I%zfQ|7(LIe1o$hOz<7uY;N z=(vX%OnVZcH86;%M|ryDKZV#t=$PpLb>=;v@=4-P;=FBt*V>YswM~cM7(z!cVyrD6 z^tU)a{b7f#yEw1^)jxpvhBm$5tR%wijXBmoXnTv;Kw@J)Cl?^D_V6j&#a5*t&oGGq~U-q9Ki434L4^5L$s+y#d6dL>7@x+eG3w z%6AcMDeD-G<7`>=0|cAO)DRIwAfe-RVh_PPJLBdE8cd_U2e^3S$C)>?+?L{rXrKe3JCRvLC=F7YX$uUiq( zjQ9`n9ib!0!5qa5Vi^%a>?fWfB6-d}OvcTaNfZ(~UL<<@OZ-t%{`CRM;zAwz&Ud5C z2g@uc)(}q+$wV}vV)~KAihBaQf`9XF`5V> zbYxh)|Dw`{%4c{xah14}&~X#(Q}9NdKr|*^pnjMbLFjni;s3uml-3dV*_Qg;GmCO( zTklPMDdmpDHv9eY|3_tCPHd;K3x*Ky*c;ko3*r?bj`nPH5u+&U=#Q6hs=vnnOTv$B zSq!k{*RE+hMEQ!pPX6ao_=)(Pc%S%@_%G3e(DY>57g6*dUHDBS9wO%XTbzGUSxEV5 zTR&mF8Cw(WdB%Kvo5;1#8%lY}U-RFcN)Jv9C!V7mZ!h|SvW~4pJKBnf2KHP4&i0>m zen#5%)3&XywGQpaDF+i52@lbY(4o$m&xt6akt!UMi3B2s8=K>@S@9Xf@fed^US3&T z=yAJ-dn${kx;&MxyqdD|l4U~^R)khpmz7qyh7?wLs+XNk=;~{f7!cZ|(BJAV(WS*T z)t<^}?y6qPLQ@v_7N@uZeXn%d5*#+YrmTu9{CE0FyXMr3x{Zgp%Bo!zl^$1Nv8QZ? z+xK+V%DQdtthwD?R_(4Z0}4ysRYmSB3Jk-OsUS3G5\n" "Language-Team: C \n" @@ -43,7 +43,7 @@ msgstr "" msgid "Unknown barcode format" msgstr "" -#: InvenTree/helpers.py:258 order/models.py:173 order/models.py:224 +#: InvenTree/helpers.py:258 order/models.py:150 order/models.py:224 msgid "Invalid quantity provided" msgstr "Keine gültige Menge" @@ -81,68 +81,83 @@ msgstr "Datei zum Anhängen auswählen" msgid "File comment" msgstr "Datei-Kommentar" -#: InvenTree/settings.py:270 +#: InvenTree/settings.py:274 msgid "English" msgstr "Englisch" -#: InvenTree/settings.py:271 +#: InvenTree/settings.py:275 msgid "German" msgstr "Deutsch" -#: InvenTree/settings.py:272 +#: InvenTree/settings.py:276 msgid "French" msgstr "Französisch" -#: InvenTree/settings.py:273 +#: InvenTree/settings.py:277 msgid "Polish" msgstr "Polnisch" -#: InvenTree/status_codes.py:84 InvenTree/status_codes.py:172 +#: InvenTree/status_codes.py:90 InvenTree/status_codes.py:131 +#: InvenTree/status_codes.py:213 msgid "Pending" msgstr "Ausstehend" -#: InvenTree/status_codes.py:85 +#: InvenTree/status_codes.py:91 msgid "Placed" msgstr "Platziert" -#: InvenTree/status_codes.py:86 InvenTree/status_codes.py:175 +#: InvenTree/status_codes.py:92 InvenTree/status_codes.py:216 msgid "Complete" msgstr "Fertig" -#: InvenTree/status_codes.py:87 InvenTree/status_codes.py:174 +#: InvenTree/status_codes.py:93 InvenTree/status_codes.py:133 +#: InvenTree/status_codes.py:215 msgid "Cancelled" msgstr "Storniert" -#: InvenTree/status_codes.py:88 InvenTree/status_codes.py:135 +#: InvenTree/status_codes.py:94 InvenTree/status_codes.py:134 +#: InvenTree/status_codes.py:169 msgid "Lost" msgstr "Verloren" -#: InvenTree/status_codes.py:89 InvenTree/status_codes.py:137 +#: InvenTree/status_codes.py:95 InvenTree/status_codes.py:135 +#: InvenTree/status_codes.py:170 msgid "Returned" msgstr "Zurückgegeben" -#: InvenTree/status_codes.py:131 -msgid "OK" -msgstr "OK" - -#: InvenTree/status_codes.py:132 -msgid "Attention needed" -msgstr "erfordert Eingriff" - -#: InvenTree/status_codes.py:133 -msgid "Damaged" -msgstr "Beschädigt" - -#: InvenTree/status_codes.py:134 -msgid "Destroyed" -msgstr "Zerstört" - -#: InvenTree/status_codes.py:136 +#: InvenTree/status_codes.py:132 InvenTree/status_codes.py:171 +#: order/templates/order/sales_order_base.html:98 msgid "Shipped" msgstr "" -#: InvenTree/status_codes.py:173 build/templates/build/allocate_edit.html:28 -#: build/templates/build/allocate_view.html:21 +#: InvenTree/status_codes.py:165 +msgid "OK" +msgstr "OK" + +#: InvenTree/status_codes.py:166 +msgid "Attention needed" +msgstr "erfordert Eingriff" + +#: InvenTree/status_codes.py:167 +msgid "Damaged" +msgstr "Beschädigt" + +#: InvenTree/status_codes.py:168 +msgid "Destroyed" +msgstr "Zerstört" + +#: InvenTree/status_codes.py:172 +msgid "Used for Build" +msgstr "" + +#: InvenTree/status_codes.py:173 +#, fuzzy +#| msgid "Edit Stock Item" +msgid "Installed in Stock Item" +msgstr "Lagerobjekt bearbeiten" + +#: InvenTree/status_codes.py:214 build/templates/build/allocate.html:349 +#: order/templates/order/sales_order_detail.html:220 #: part/templates/part/part_base.html:114 part/templates/part/tabs.html:21 msgid "Allocated" msgstr "Zugeordnet" @@ -176,27 +191,70 @@ msgstr "Überschuss muss eine Ganzzahl oder ein Prozentwert sein" msgid "Database Statistics" msgstr "" -#: build/forms.py:35 +#: build/forms.py:37 msgid "Confirm" msgstr "Bestätigen" -#: build/forms.py:52 stock/forms.py:34 +#: build/forms.py:54 stock/forms.py:34 msgid "Enter unique serial numbers (or leave blank)" msgstr "Eindeutige Seriennummern eingeben (oder leer lassen)" -#: build/forms.py:54 +#: build/forms.py:56 msgid "Confirm build completion" msgstr "Bau-Fertigstellung bestätigen" -#: build/models.py:54 +#: build/models.py:57 build/templates/build/build_base.html:65 +#, fuzzy +#| msgid "Build Notes" +msgid "Build Title" +msgstr "Bau-Bemerkungen" + +#: build/models.py:60 msgid "Brief description of the build" msgstr "Kurze Beschreibung des Baus" -#: build/models.py:64 +#: build/models.py:68 build/templates/build/build_base.html:86 +#, fuzzy +#| msgid "Can Build" +msgid "Parent Build" +msgstr "Herstellbar?" + +#: build/models.py:69 +msgid "Parent build to which this build is allocated" +msgstr "" + +#: build/models.py:74 build/templates/build/allocate.html:320 +#: build/templates/build/auto_allocate.html:18 +#: build/templates/build/build_base.html:70 +#: build/templates/build/detail.html:22 order/models.py:462 +#: order/templates/order/order_wizard/select_parts.html:30 +#: order/templates/order/purchase_order_detail.html:145 +#: part/templates/part/part_app_base.html:7 +#: part/templates/part/set_category.html:13 +msgid "Part" +msgstr "Teil" + +#: build/models.py:83 msgid "Select part to build" msgstr "Teil für den Bau wählen" -#: build/models.py:70 +#: build/models.py:88 +#, fuzzy +#| msgid "Order reference" +msgid "Sales Order Reference" +msgstr "Bestell-Referenz" + +#: build/models.py:92 +msgid "SalesOrder to which this build is allocated" +msgstr "" + +#: build/models.py:97 +#, fuzzy +#| msgid "Stock Locations" +msgid "Source Location" +msgstr "Lagerobjekt-Standorte" + +#: build/models.py:101 msgid "" "Select location to take stock from for this build (leave blank to take from " "any stock location)" @@ -204,178 +262,337 @@ msgstr "" "Lager-Entnahmestandort für diesen Bau wählen (oder leer lassen für einen " "beliebigen Lager-Standort)" -#: build/models.py:76 +#: build/models.py:105 +#, fuzzy +#| msgid "Quantity" +msgid "Build Quantity" +msgstr "Anzahl" + +#: build/models.py:108 msgid "Number of parts to build" msgstr "Anzahl der zu bauenden Teile" -#: build/models.py:82 templates/table_filters.html:47 -msgid "Build status" +#: build/models.py:112 part/templates/part/part_base.html:131 +msgid "Build Status" msgstr "Bau-Status" -#: build/models.py:85 +#: build/models.py:116 +#, fuzzy +#| msgid "Build status" +msgid "Build status code" +msgstr "Bau-Status" + +#: build/models.py:120 stock/models.py:374 +#, fuzzy +#| msgid "Batch" +msgid "Batch Code" +msgstr "Los" + +#: build/models.py:124 msgid "Batch code for this build output" msgstr "Chargennummer für diese Bau-Ausgabe" -#: build/models.py:97 stock/models.py:336 +#: build/models.py:139 build/templates/build/detail.html:55 +#: company/templates/company/supplier_part_base.html:57 +#: company/templates/company/supplier_part_detail.html:24 +#: part/templates/part/detail.html:67 part/templates/part/part_base.html:85 +#: stock/models.py:368 stock/templates/stock/item_base.html:190 +msgid "External Link" +msgstr "" + +#: build/models.py:140 stock/models.py:370 msgid "Link to external URL" msgstr "Link zu einer externen URL" -#: build/models.py:99 +#: build/models.py:144 build/templates/build/tabs.html:14 company/models.py:302 +#: company/templates/company/tabs.html:26 order/templates/order/po_tabs.html:15 +#: order/templates/order/purchase_order_detail.html:200 +#: order/templates/order/so_tabs.html:23 part/templates/part/tabs.html:63 +#: stock/models.py:436 stock/templates/stock/tabs.html:17 +msgid "Notes" +msgstr "Notizen" + +#: build/models.py:145 msgid "Extra build notes" msgstr "Notizen für den Bau" -#: build/models.py:388 +#: build/models.py:451 #, python-brace-format msgid "Selected stock item not found in BOM for part '{p}'" msgstr "Ausgewähltes Lagerobjekt nicht in BOM für Teil '{p}' gefunden" -#: build/models.py:391 +#: build/models.py:454 #, python-brace-format msgid "Allocated quantity ({n}) must not exceed available quantity ({q})" msgstr "" "zugewiesene Anzahl ({n}) darf nicht die verfügbare ({q}) Anzahl überschreiten" -#: build/models.py:397 order/models.py:448 +#: build/models.py:460 order/models.py:546 #, fuzzy #| msgid "Stock Item to allocate to build" msgid "StockItem is over-allocated" msgstr "Lagerobjekt dem Bau zuweisen" -#: build/models.py:400 order/models.py:451 +#: build/models.py:463 order/models.py:549 #, fuzzy #| msgid "Quantity must be greater than zero" msgid "Allocation quantity must be greater than zero" msgstr "Anzahl muss größer Null sein" -#: build/models.py:403 +#: build/models.py:466 #, fuzzy #| msgid "Quantity must be 1 for item with a serial number" msgid "Quantity must be 1 for serialized stock" msgstr "Anzahl muss für Objekte mit Seriennummer \"1\" sein" -#: build/models.py:418 +#: build/models.py:496 msgid "Build to allocate parts" msgstr "Bau starten um Teile zuzuweisen" -#: build/models.py:425 +#: build/models.py:503 msgid "Stock Item to allocate to build" msgstr "Lagerobjekt dem Bau zuweisen" -#: build/models.py:433 +#: build/models.py:516 msgid "Stock quantity to allocate to build" msgstr "Lagerobjekt-Anzahl dem Bau zuweisen" -#: build/templates/build/allocate_edit.html:5 -msgid "Allocate Stock to Build" -msgstr "Lagerbestand dem Bau zuweisen" - -#: build/templates/build/allocate_edit.html:10 -msgid "Auto Allocate" -msgstr "Automatisches Zuweisen" - -#: build/templates/build/allocate_edit.html:11 -msgid "Unallocate" -msgstr "Zuweisung aufheben" - -#: build/templates/build/allocate_edit.html:19 -#: build/templates/build/allocate_view.html:17 -#: build/templates/build/detail.html:22 order/models.py:385 -#: order/templates/order/order_wizard/select_parts.html:30 -#: order/templates/order/purchase_order_detail.html:26 -#: part/templates/part/part_app_base.html:7 -msgid "Part" -msgstr "Teil" - -#: build/templates/build/allocate_edit.html:22 -#: build/templates/build/allocate_view.html:19 -msgid "Available" -msgstr "verfügbar" - -#: build/templates/build/allocate_edit.html:25 -#: build/templates/build/allocate_view.html:20 -msgid "Required" -msgstr "benötigt" - -#: build/templates/build/allocate_view.html:4 -msgid "Required Parts" -msgstr "benötigte Teile" - -#: build/templates/build/allocate_view.html:9 -msgid "Allocate" -msgstr "zuweisen" - -#: build/templates/build/allocate_view.html:10 -#: company/templates/company/detail_part.html:18 order/views.py:671 +#: build/templates/build/allocate.html:17 +#: company/templates/company/detail_part.html:18 order/views.py:743 msgid "Order Parts" msgstr "Teile bestellen" -#: build/templates/build/allocate_view.html:18 -#: company/templates/company/supplier_part_base.html:50 -#: company/templates/company/supplier_part_detail.html:27 -#: order/templates/order/purchase_order_detail.html:27 -#: part/templates/part/detail.html:38 -msgid "Description" -msgstr "Beschreibung" - -#: build/templates/build/allocate_view.html:22 -#: part/templates/part/part_base.html:121 -msgid "On Order" -msgstr "bestellt" - -#: build/templates/build/build_base.html:8 -#: build/templates/build/build_base.html:21 part/templates/part/tabs.html:28 -#: stock/templates/stock/item_base.html:159 templates/navbar.html:12 -msgid "Build" -msgstr "Bau" - -#: build/templates/build/build_base.html:48 build/templates/build/detail.html:9 -msgid "Build Details" -msgstr "Bau-Status" - -#: build/templates/build/build_base.html:52 +#: build/templates/build/allocate.html:18 #, fuzzy -#| msgid "Build Notes" -msgid "Build Title" -msgstr "Bau-Bemerkungen" +#| msgid "Allocate Stock to Build" +msgid "Automatically allocate stock" +msgstr "Lagerbestand dem Bau zuweisen" -#: build/templates/build/build_base.html:62 +#: build/templates/build/allocate.html:18 +msgid "Auto Allocate" +msgstr "Automatisches Zuweisen" + +#: build/templates/build/allocate.html:19 +msgid "Unallocate" +msgstr "Zuweisung aufheben" + +#: build/templates/build/allocate.html:78 templates/stock_table.html:8 +#, fuzzy +#| msgid "Stock Item" +msgid "New Stock Item" +msgstr "Lagerobjekt" + +#: build/templates/build/allocate.html:161 +#: order/templates/order/sales_order_detail.html:68 +#: order/templates/order/sales_order_detail.html:150 stock/models.py:362 +#: stock/templates/stock/item_base.html:149 +msgid "Serial Number" +msgstr "Seriennummer" + +#: build/templates/build/allocate.html:163 +#: build/templates/build/auto_allocate.html:19 +#: build/templates/build/build_base.html:75 #: build/templates/build/detail.html:27 #: company/templates/company/supplier_part_pricing.html:27 #: order/templates/order/order_wizard/select_parts.html:32 -#: order/templates/order/purchase_order_detail.html:30 +#: order/templates/order/purchase_order_detail.html:175 +#: order/templates/order/sales_order_detail.html:70 +#: order/templates/order/sales_order_detail.html:152 #: stock/templates/stock/item_base.html:20 #: stock/templates/stock/item_base.html:26 -#: stock/templates/stock/item_base.html:145 +#: stock/templates/stock/item_base.html:155 #: stock/templates/stock/stock_adjust.html:18 msgid "Quantity" msgstr "Anzahl" -#: build/templates/build/build_base.html:67 +#: build/templates/build/allocate.html:177 +#: build/templates/build/auto_allocate.html:20 +#: stock/templates/stock/item_base.html:135 +#: stock/templates/stock/stock_adjust.html:17 +msgid "Location" +msgstr "Standort" + +#: build/templates/build/allocate.html:201 +#: order/templates/order/sales_order_detail.html:92 +#, fuzzy +#| msgid "Edit Stock Location" +msgid "Edit stock allocation" +msgstr "Lagerobjekt-Standort bearbeiten" + +#: build/templates/build/allocate.html:202 +#: order/templates/order/sales_order_detail.html:93 +#, fuzzy +#| msgid "Delete Stock Location" +msgid "Delete stock allocation" +msgstr "Standort löschen" + +#: build/templates/build/allocate.html:229 +#, fuzzy +#| msgid "No serial numbers found" +msgid "No BOM items found" +msgstr "Keine Seriennummern gefunden" + +#: build/templates/build/allocate.html:328 +#: company/templates/company/supplier_part_base.html:50 +#: company/templates/company/supplier_part_detail.html:27 +#: order/templates/order/purchase_order_detail.html:157 +#: part/templates/part/detail.html:38 part/templates/part/set_category.html:14 +msgid "Description" +msgstr "Beschreibung" + +#: build/templates/build/allocate.html:333 +#: order/templates/order/purchase_order_detail.html:170 +msgid "Reference" +msgstr "Referenz" + +#: build/templates/build/allocate.html:338 +msgid "Required" +msgstr "benötigt" + +#: build/templates/build/allocate.html:347 +#, fuzzy +#| msgid "Assign Parts" +msgid "Assigned" +msgstr "Teile zuweisen" + +#: build/templates/build/allocate.html:385 +#: order/templates/order/sales_order_detail.html:270 +#, fuzzy +#| msgid "All parts" +msgid "Buy parts" +msgstr "Alle Teile" + +#: build/templates/build/allocate.html:389 +#: order/templates/order/sales_order_detail.html:274 +#, fuzzy +#| msgid "Build status" +msgid "Build parts" +msgstr "Bau-Status" + +#: build/templates/build/allocate.html:392 +#, fuzzy +#| msgid "Allocate Stock to Build" +msgid "Allocate stock" +msgstr "Lagerbestand dem Bau zuweisen" + +#: build/templates/build/auto_allocate.html:8 +#, fuzzy +#| msgid "Allocate Stock to Build" +msgid "Automatically Allocate Stock" +msgstr "Lagerbestand dem Bau zuweisen" + +#: build/templates/build/auto_allocate.html:9 +msgid "" +"Stock Items are selected for automatic allocation if there is only a single " +"stock item available." +msgstr "" + +#: build/templates/build/auto_allocate.html:10 +#, fuzzy +#| msgid "Stock Item to allocate to build" +msgid "The following stock items will be allocated to the build:" +msgstr "Lagerobjekt dem Bau zuweisen" + +#: build/templates/build/auto_allocate.html:39 +#, fuzzy +#| msgid "Stock Item to allocate to build" +msgid "No stock items found that can be allocated to this build" +msgstr "Lagerobjekt dem Bau zuweisen" + +#: build/templates/build/build_base.html:8 +#: build/templates/build/build_base.html:34 +#: build/templates/build/complete.html:6 +#: stock/templates/stock/item_base.html:169 templates/navbar.html:12 +msgid "Build" +msgstr "Bau" + +#: build/templates/build/build_base.html:14 +#, fuzzy +#| msgid "Stock Item to allocate to build" +msgid "This build is allocated to Sales Order" +msgstr "Lagerobjekt dem Bau zuweisen" + +#: build/templates/build/build_base.html:19 +#, fuzzy +#| msgid "Stock Item to allocate to build" +msgid "This build is a child of Build" +msgstr "Lagerobjekt dem Bau zuweisen" + +#: build/templates/build/build_base.html:61 build/templates/build/detail.html:9 +msgid "Build Details" +msgstr "Bau-Status" + +#: build/templates/build/build_base.html:80 #: build/templates/build/detail.html:42 -#: stock/templates/stock/item_base.html:212 +#: stock/templates/stock/item_base.html:222 msgid "Status" msgstr "Status" -#: build/templates/build/build_base.html:72 +#: build/templates/build/build_base.html:93 order/models.py:460 +#: order/templates/order/sales_order_base.html:9 +#: order/templates/order/sales_order_base.html:33 +#: order/templates/order/sales_order_notes.html:10 +#: order/templates/order/sales_order_ship.html:25 +#: stock/templates/stock/item_base.html:123 +#, fuzzy +#| msgid "Sales Orders" +msgid "Sales Order" +msgstr "Bestellungen" + +#: build/templates/build/build_base.html:99 msgid "BOM Price" msgstr "" -#: build/templates/build/build_base.html:77 +#: build/templates/build/build_base.html:104 msgid "BOM pricing is incomplete" msgstr "" -#: build/templates/build/build_base.html:80 +#: build/templates/build/build_base.html:107 #, fuzzy #| msgid "Show pricing information" msgid "No pricing information" msgstr "Kosteninformationen ansehen" -#: build/templates/build/build_output.html:9 +#: build/templates/build/build_output.html:9 build/templates/build/tabs.html:11 #, fuzzy #| msgid "Build status" msgid "Build Outputs" msgstr "Bau-Status" +#: build/templates/build/complete.html:10 +#, fuzzy +#| msgid "Mark order as complete" +msgid "Build order allocation is complete" +msgstr "Bestellung als vollständig markieren" + +#: build/templates/build/complete.html:14 +msgid "Warning: Build order allocation is not complete" +msgstr "" + +#: build/templates/build/complete.html:15 +msgid "" +"Build Order has not been fully allocated. Ensure that all Stock Items have " +"been allocated to the Build" +msgstr "" + +#: build/templates/build/complete.html:20 +msgid "The following actions will be performed:" +msgstr "" + +#: build/templates/build/complete.html:22 +#, fuzzy +#| msgid "Receive parts to this location" +msgid "Remove allocated items from stock" +msgstr "Teile in diesen Ort empfangen" + +#: build/templates/build/complete.html:23 +msgid "Add completed items to stock" +msgstr "" + +#: build/templates/build/complete.html:29 +msgid "The following items will be created" +msgstr "" + #: build/templates/build/delete_build_item.html:6 #, fuzzy #| msgid "Are you sure you want to delete the following Supplier Parts?" @@ -396,21 +613,13 @@ msgid "Stock can be taken from any available location." msgstr "Bestand kann jedem verfügbaren Lagerort entnommen werden." #: build/templates/build/detail.html:48 -#: stock/templates/stock/item_base.html:152 +#: stock/templates/stock/item_base.html:162 msgid "Batch" msgstr "Los" -#: build/templates/build/detail.html:55 -#: company/templates/company/supplier_part_base.html:57 -#: company/templates/company/supplier_part_detail.html:24 -#: part/templates/part/detail.html:67 part/templates/part/part_base.html:85 -#: stock/templates/stock/item_base.html:180 -msgid "External Link" -msgstr "" - #: build/templates/build/detail.html:61 #: order/templates/order/order_base.html:93 -#: order/templates/order/sales_order_base.html:82 +#: order/templates/order/sales_order_base.html:92 msgid "Created" msgstr "Erstellt" @@ -454,19 +663,10 @@ msgid "Details" msgstr "Details" #: build/templates/build/tabs.html:8 -msgid "Outputs" -msgstr "" - -#: build/templates/build/tabs.html:11 company/models.py:302 -#: company/templates/company/tabs.html:26 order/templates/order/po_tabs.html:15 -#: order/templates/order/so_tabs.html:15 part/templates/part/tabs.html:63 -#: stock/templates/stock/tabs.html:17 -msgid "Notes" -msgstr "Notizen" - -#: build/templates/build/tabs.html:14 -msgid "Assign Parts" -msgstr "Teile zuweisen" +#, fuzzy +#| msgid "All parts" +msgid "Allocated Parts" +msgstr "Alle Teile" #: build/templates/build/unallocate.html:8 msgid "Are you sure you wish to unallocate all stock for this build?" @@ -508,7 +708,7 @@ msgstr "Bestell-Stornierung bestätigen" msgid "Check the confirmation box at the bottom of the list" msgstr "" -#: build/views.py:148 build/views.py:442 +#: build/views.py:148 build/views.py:446 #, fuzzy #| msgid "Unallocate" msgid "Unallocate Stock" @@ -540,60 +740,60 @@ msgstr "Bau-Fertigstellung bestätigen" msgid "Invalid location selected" msgstr "Ungültige Teileauswahl" -#: build/views.py:290 stock/views.py:916 +#: build/views.py:290 stock/views.py:917 #, python-brace-format msgid "The following serial numbers already exist: ({sn})" msgstr "Die folgende Seriennummer existiert bereits: ({sn})" -#: build/views.py:309 +#: build/views.py:311 msgid "Build marked as COMPLETE" msgstr "" -#: build/views.py:385 +#: build/views.py:387 #, fuzzy #| msgid "Can Build" msgid "Start new Build" msgstr "Herstellbar?" -#: build/views.py:408 +#: build/views.py:412 #, fuzzy #| msgid "Created new stock item" msgid "Created new build" msgstr "Neues Lagerobjekt erstellt" -#: build/views.py:418 +#: build/views.py:422 #, fuzzy #| msgid "Build Details" msgid "Edit Build Details" msgstr "Bau-Status" -#: build/views.py:423 +#: build/views.py:427 msgid "Edited build" msgstr "" -#: build/views.py:432 +#: build/views.py:436 msgid "Delete Build" msgstr "" -#: build/views.py:447 +#: build/views.py:451 #, fuzzy #| msgid "Receive parts to this location" msgid "Removed parts from build allocation" msgstr "Teile in diesen Ort empfangen" -#: build/views.py:457 +#: build/views.py:461 #, fuzzy #| msgid "Create new Stock Item" msgid "Allocate new Part" msgstr "Neues Lagerobjekt hinzufügen" -#: build/views.py:573 +#: build/views.py:614 #, fuzzy #| msgid "Edit Stock Location" msgid "Edit Stock Allocation" msgstr "Lagerobjekt-Standort bearbeiten" -#: build/views.py:577 +#: build/views.py:618 msgid "Updated Build Item" msgstr "" @@ -773,16 +973,15 @@ msgstr "Hersteller" #: company/templates/company/detail.html:21 #: company/templates/company/supplier_part_base.html:63 -#: company/templates/company/supplier_part_detail.html:21 order/models.py:138 +#: company/templates/company/supplier_part_detail.html:21 order/models.py:111 #: order/templates/order/order_base.html:74 #: order/templates/order/order_wizard/select_pos.html:30 -#: stock/templates/stock/item_base.html:187 +#: stock/templates/stock/item_base.html:197 msgid "Supplier" msgstr "Zulieferer" #: company/templates/company/detail.html:26 order/models.py:275 -#: order/templates/order/sales_order_base.html:63 -#: stock/templates/stock/item_base.html:173 +#: order/templates/order/sales_order_base.html:73 msgid "Customer" msgstr "Kunde" @@ -791,7 +990,8 @@ msgid "Supplier Parts" msgstr "Zulieferer-Teile" #: company/templates/company/detail_part.html:13 -#: part/templates/part/stock.html:81 +#: order/templates/order/purchase_order_detail.html:67 +#: part/templates/part/stock.html:82 #, fuzzy #| msgid "Supplier Part" msgid "New Supplier Part" @@ -808,7 +1008,7 @@ msgid "Delete Parts" msgstr "Anhang löschen" #: company/templates/company/detail_part.html:43 -#: part/templates/part/stock.html:75 +#: part/templates/part/stock.html:76 #, fuzzy #| msgid "Part" msgid "New Part" @@ -820,25 +1020,25 @@ msgstr "Teil" msgid "Create new Part" msgstr "Neues Lagerobjekt hinzufügen" -#: company/templates/company/detail_part.html:49 company/views.py:52 +#: company/templates/company/detail_part.html:49 company/views.py:51 #, fuzzy #| msgid "Supplier" msgid "New Supplier" msgstr "Zulieferer" -#: company/templates/company/detail_part.html:50 company/views.py:184 +#: company/templates/company/detail_part.html:50 company/views.py:182 #, fuzzy #| msgid "Supplier Part" msgid "Create new Supplier" msgstr "Zulieferer-Teil" -#: company/templates/company/detail_part.html:55 company/views.py:58 +#: company/templates/company/detail_part.html:55 company/views.py:57 #, fuzzy #| msgid "Manufacturer" msgid "New Manufacturer" msgstr "Hersteller" -#: company/templates/company/detail_part.html:56 company/views.py:187 +#: company/templates/company/detail_part.html:56 company/views.py:185 #, fuzzy #| msgid "Manufacturer" msgid "Create new Manufacturer" @@ -852,7 +1052,7 @@ msgstr "Zulieferer-Teil" #: company/templates/company/detail_stock.html:34 #: company/templates/company/supplier_part_stock.html:38 -#: part/templates/part/stock.html:53 templates/stock_table.html:5 +#: part/templates/part/stock.html:54 templates/stock_table.html:5 msgid "Export" msgstr "" @@ -919,11 +1119,23 @@ msgid "New Sales Order" msgstr "Bestellungen" #: company/templates/company/supplier_part_base.html:6 -#: company/templates/company/supplier_part_base.html:19 -#: stock/templates/stock/item_base.html:192 +#: company/templates/company/supplier_part_base.html:19 stock/models.py:341 +#: stock/templates/stock/item_base.html:202 msgid "Supplier Part" msgstr "Zulieferer-Teil" +#: company/templates/company/supplier_part_base.html:23 +#, fuzzy +#| msgid "Supplier Part" +msgid "Edit supplier part" +msgstr "Zulieferer-Teil" + +#: company/templates/company/supplier_part_base.html:26 +#, fuzzy +#| msgid "Supplier Part" +msgid "Delete supplier part" +msgstr "Zulieferer-Teil" + #: company/templates/company/supplier_part_base.html:35 #: company/templates/company/supplier_part_detail.html:11 #, fuzzy @@ -952,7 +1164,6 @@ msgstr "IPN (Interne Produktnummer)" #: company/templates/company/supplier_part_base.html:84 #: company/templates/company/supplier_part_detail.html:34 -#: order/templates/order/purchase_order_detail.html:34 msgid "Note" msgstr "Notiz" @@ -1001,14 +1212,16 @@ msgid "Supplier Part Stock" msgstr "Zulieferer-Teil" #: company/templates/company/supplier_part_stock.html:61 -#: part/templates/part/stock.html:90 +#: order/templates/order/purchase_order_detail.html:38 +#: order/templates/order/purchase_order_detail.html:118 +#: part/templates/part/stock.html:91 #, fuzzy #| msgid "Location" msgid "New Location" msgstr "Standort" #: company/templates/company/supplier_part_stock.html:62 -#: part/templates/part/stock.html:91 +#: part/templates/part/stock.html:92 #, fuzzy #| msgid "Create new Stock Location" msgid "Create New Location" @@ -1022,7 +1235,7 @@ msgstr "Teile-Packaging" #: company/templates/company/supplier_part_tabs.html:8 #: company/templates/company/tabs.html:12 part/templates/part/tabs.html:17 -#: templates/navbar.html:11 +#: stock/templates/stock/location.html:12 templates/navbar.html:11 msgid "Stock" msgstr "Lagerbestand" @@ -1037,120 +1250,120 @@ msgstr "bestellt" msgid "Parts" msgstr "Teile" -#: company/views.py:51 part/templates/part/tabs.html:37 +#: company/views.py:50 part/templates/part/tabs.html:37 #: templates/navbar.html:16 msgid "Suppliers" msgstr "Zulieferer" -#: company/views.py:57 templates/navbar.html:17 +#: company/views.py:56 templates/navbar.html:17 #, fuzzy #| msgid "Manufacturer" msgid "Manufacturers" msgstr "Hersteller" -#: company/views.py:63 templates/navbar.html:24 +#: company/views.py:62 templates/navbar.html:24 #, fuzzy #| msgid "Customer" msgid "Customers" msgstr "Kunde" -#: company/views.py:64 +#: company/views.py:63 #, fuzzy #| msgid "Customer" msgid "New Customer" msgstr "Kunde" -#: company/views.py:71 +#: company/views.py:70 #, fuzzy #| msgid "Company" msgid "Companies" msgstr "Firma" -#: company/views.py:72 +#: company/views.py:71 #, fuzzy #| msgid "Company" msgid "New Company" msgstr "Firma" -#: company/views.py:149 +#: company/views.py:147 #, fuzzy #| msgid "Company name" msgid "Update Company Image" msgstr "Firmenname" -#: company/views.py:154 +#: company/views.py:152 msgid "Updated company image" msgstr "" -#: company/views.py:164 +#: company/views.py:162 #, fuzzy #| msgid "Company" msgid "Edit Company" msgstr "Firma" -#: company/views.py:168 +#: company/views.py:166 #, fuzzy #| msgid "Link to external company information" msgid "Edited company information" msgstr "Link auf externe Firmeninformation" -#: company/views.py:190 +#: company/views.py:188 #, fuzzy #| msgid "Create new Stock Item" msgid "Create new Customer" msgstr "Neues Lagerobjekt hinzufügen" -#: company/views.py:192 +#: company/views.py:190 #, fuzzy #| msgid "Create new Stock Item" msgid "Create new Company" msgstr "Neues Lagerobjekt hinzufügen" -#: company/views.py:219 +#: company/views.py:217 #, fuzzy #| msgid "Created new stock item" msgid "Created new company" msgstr "Neues Lagerobjekt erstellt" -#: company/views.py:229 +#: company/views.py:227 #, fuzzy #| msgid "Company" msgid "Delete Company" msgstr "Firma" -#: company/views.py:234 +#: company/views.py:232 #, fuzzy #| msgid "Company address" msgid "Company was deleted" msgstr "Firmenadresse" -#: company/views.py:259 +#: company/views.py:256 #, fuzzy #| msgid "Supplier Part" msgid "Edit Supplier Part" msgstr "Zulieferer-Teil" -#: company/views.py:268 part/templates/part/stock.html:82 +#: company/views.py:265 part/templates/part/stock.html:83 #, fuzzy #| msgid "Supplier Part" msgid "Create new Supplier Part" msgstr "Zulieferer-Teil" -#: company/views.py:328 +#: company/views.py:325 #, fuzzy #| msgid "Supplier Part" msgid "Delete Supplier Part" msgstr "Zulieferer-Teil" -#: company/views.py:398 +#: company/views.py:395 msgid "Add Price Break" msgstr "" -#: company/views.py:440 +#: company/views.py:437 msgid "Edit Price Break" msgstr "" -#: company/views.py:455 +#: company/views.py:452 #, fuzzy #| msgid "Delete attachment" msgid "Delete Price Break" @@ -1164,11 +1377,16 @@ msgstr "Bestellung aufgeben" msgid "Mark order as complete" msgstr "Bestellung als vollständig markieren" -#: order/forms.py:46 +#: order/forms.py:46 order/forms.py:57 +#: order/templates/order/sales_order_base.html:49 msgid "Cancel order" msgstr "Bestellung stornieren" -#: order/forms.py:57 +#: order/forms.py:68 order/templates/order/sales_order_base.html:46 +msgid "Ship order" +msgstr "" + +#: order/forms.py:79 msgid "Receive parts to this location" msgstr "Teile in diesen Ort empfangen" @@ -1184,22 +1402,22 @@ msgstr "Bestellungs-Beschreibung" msgid "Link to external page" msgstr "Link auf externe Seite" -#: order/models.py:92 +#: order/models.py:85 msgid "Order notes" msgstr "Bestell-Notizen" -#: order/models.py:141 +#: order/models.py:114 #, fuzzy #| msgid "Order reference" msgid "Supplier order reference code" msgstr "Bestell-Referenz" -#: order/models.py:171 order/models.py:222 part/views.py:1119 -#: stock/models.py:519 +#: order/models.py:148 order/models.py:222 part/views.py:1113 +#: stock/models.py:604 msgid "Quantity must be greater than zero" msgstr "Anzahl muss größer Null sein" -#: order/models.py:176 +#: order/models.py:153 msgid "Part supplier must match PO supplier" msgstr "Teile-Zulieferer muss dem Zulieferer des Kaufvertrags entsprechen" @@ -1207,74 +1425,70 @@ msgstr "Teile-Zulieferer muss dem Zulieferer des Kaufvertrags entsprechen" msgid "Lines can only be received against an order marked as 'Placed'" msgstr "Nur Teile aufgegebener Bestllungen können empfangen werden" -#: order/models.py:278 +#: order/models.py:281 #, fuzzy #| msgid "Order reference" msgid "Customer order reference code" msgstr "Bestell-Referenz" -#: order/models.py:324 +#: order/models.py:320 +msgid "SalesOrder cannot be shipped as it is not currently pending" +msgstr "" + +#: order/models.py:397 msgid "Item quantity" msgstr "Anzahl" -#: order/models.py:326 +#: order/models.py:399 msgid "Line item reference" msgstr "Position - Referenz" -#: order/models.py:328 +#: order/models.py:401 msgid "Line item notes" msgstr "Position - Notizen" -#: order/models.py:354 order/templates/order/order_base.html:9 +#: order/models.py:427 order/templates/order/order_base.html:9 #: order/templates/order/order_base.html:23 -#: stock/templates/stock/item_base.html:166 +#: stock/templates/stock/item_base.html:176 msgid "Purchase Order" msgstr "Kaufvertrag" -#: order/models.py:363 +#: order/models.py:440 msgid "Supplier part" msgstr "Zulieferer-Teil" -#: order/models.py:366 +#: order/models.py:443 msgid "Number of items received" msgstr "Empfangene Objekt-Anzahl" -#: order/models.py:383 order/templates/order/sales_order_base.html:9 -#: order/templates/order/sales_order_base.html:31 -#: order/templates/order/sales_order_notes.html:10 -#, fuzzy -#| msgid "Sales Orders" -msgid "Sales Order" -msgstr "Bestellungen" - -#: order/models.py:440 +#: order/models.py:537 msgid "Cannot allocate stock item to a line with a different part" msgstr "" -#: order/models.py:442 +#: order/models.py:539 msgid "Cannot allocate stock to a line without a part" msgstr "" -#: order/models.py:445 +#: order/models.py:542 #, fuzzy #| msgid "Allocated quantity ({n}) must not exceed available quantity ({q})" msgid "Allocation quantity cannot exceed stock quantity" msgstr "" "zugewiesene Anzahl ({n}) darf nicht die verfügbare ({q}) Anzahl überschreiten" -#: order/models.py:454 +#: order/models.py:552 #, fuzzy #| msgid "Quantity must be 1 for item with a serial number" msgid "Quantity must be 1 for serialized stock item" msgstr "Anzahl muss für Objekte mit Seriennummer \"1\" sein" -#: order/models.py:466 +#: order/models.py:569 #, fuzzy #| msgid "Stock Item to allocate to build" msgid "Select stock item to allocate" msgstr "Lagerobjekt dem Bau zuweisen" -#: order/models.py:469 +#: order/models.py:572 #, fuzzy #| msgid "Enter a valid quantity" msgid "Enter stock allocation quantity" @@ -1293,14 +1507,14 @@ msgid "Purchase Order Details" msgstr "Bestelldetails" #: order/templates/order/order_base.html:64 -#: order/templates/order/sales_order_base.html:53 +#: order/templates/order/sales_order_base.html:63 #, fuzzy #| msgid "Order reference" msgid "Order Reference" msgstr "Bestell-Referenz" #: order/templates/order/order_base.html:69 -#: order/templates/order/sales_order_base.html:58 +#: order/templates/order/sales_order_base.html:68 #, fuzzy #| msgid "Order Parts" msgid "Order Status" @@ -1313,16 +1527,20 @@ msgid "Supplier Reference" msgstr "Referenz" #: order/templates/order/order_base.html:99 -#: order/templates/order/sales_order_base.html:88 msgid "Issued" msgstr "Aufgegeben" #: order/templates/order/order_base.html:106 -#: order/templates/order/purchase_order_detail.html:32 -#: order/templates/order/sales_order_base.html:95 +#: order/templates/order/purchase_order_detail.html:180 +#: order/templates/order/sales_order_base.html:105 msgid "Received" msgstr "Empfangen" +#: order/templates/order/order_cancel.html:7 +#: order/templates/order/sales_order_cancel.html:9 +msgid "Cancelling this order means that the order will no longer be editable." +msgstr "" + #: order/templates/order/order_notes.html:13 #: order/templates/order/order_notes.html:29 #: order/templates/order/sales_order_notes.html:18 @@ -1367,7 +1585,7 @@ msgid "Select existing purchase orders, or create new orders." msgstr "" #: order/templates/order/order_wizard/select_pos.html:31 -#: order/templates/order/po_tabs.html:5 order/templates/order/so_tabs.html:5 +#: order/templates/order/po_tabs.html:5 msgid "Items" msgstr "Positionen" @@ -1409,7 +1627,7 @@ msgstr "Kommentar" #: order/templates/order/po_attachments.html:36 #: order/templates/order/so_attachments.html:36 -#: part/templates/part/attachments.html:34 part/views.py:119 +#: part/templates/part/attachments.html:34 part/views.py:118 msgid "Edit attachment" msgstr "Anhang bearbeiten" @@ -1419,14 +1637,14 @@ msgstr "Anhang bearbeiten" msgid "Delete attachment" msgstr "Anhang löschen" -#: order/templates/order/po_tabs.html:8 order/templates/order/so_tabs.html:8 +#: order/templates/order/po_tabs.html:8 order/templates/order/so_tabs.html:16 #: part/templates/part/tabs.html:60 msgid "Attachments" msgstr "Anhänge" #: order/templates/order/purchase_order_detail.html:16 -#: order/templates/order/sales_order_detail.html:17 order/views.py:970 -#: order/views.py:1084 +#: order/templates/order/sales_order_detail.html:17 order/views.py:1042 +#: order/views.py:1156 msgid "Add Line Item" msgstr "Position hinzufügen" @@ -1436,255 +1654,337 @@ msgstr "Position hinzufügen" msgid "Purchase Order Items" msgstr "Bestellungen" -#: order/templates/order/purchase_order_detail.html:25 -msgid "Line" -msgstr "Position" +#: order/templates/order/purchase_order_detail.html:39 +#: order/templates/order/purchase_order_detail.html:119 +#: stock/templates/stock/location.html:17 +#, fuzzy +#| msgid "Create new Stock Location" +msgid "Create new stock location" +msgstr "Neuen Lager-Standort erstellen" -#: order/templates/order/purchase_order_detail.html:28 +#: order/templates/order/purchase_order_detail.html:68 +#, fuzzy +#| msgid "Supplier Part" +msgid "Create new supplier part" +msgstr "Zulieferer-Teil" + +#: order/templates/order/purchase_order_detail.html:130 +#, fuzzy +#| msgid "No serial numbers found" +msgid "No line items found" +msgstr "Keine Seriennummern gefunden" + +#: order/templates/order/purchase_order_detail.html:162 msgid "Order Code" msgstr "Bestellnummer" -#: order/templates/order/purchase_order_detail.html:29 -msgid "Reference" -msgstr "Referenz" +#: order/templates/order/purchase_order_detail.html:211 +#: order/templates/order/sales_order_detail.html:280 +#, fuzzy +#| msgid "Add Line Item" +msgid "Edit line item" +msgstr "Position hinzufügen" + +#: order/templates/order/purchase_order_detail.html:212 +#, fuzzy +#| msgid "Deleted {n} stock items" +msgid "Delete line item" +msgstr "{n} Teile im Lager gelöscht" + +#: order/templates/order/purchase_order_detail.html:217 +#, fuzzy +#| msgid "Deleted {n} stock items" +msgid "Receive line item" +msgstr "{n} Teile im Lager gelöscht" #: order/templates/order/sales_order_base.html:15 msgid "This SalesOrder has not been fully allocated" msgstr "" -#: order/templates/order/sales_order_base.html:40 +#: order/templates/order/sales_order_base.html:42 #, fuzzy #| msgid "Parts" msgid "Packing List" msgstr "Teile" -#: order/templates/order/sales_order_base.html:48 +#: order/templates/order/sales_order_base.html:58 #, fuzzy #| msgid "Purchase Order Details" msgid "Sales Order Details" msgstr "Bestelldetails" -#: order/templates/order/sales_order_base.html:69 +#: order/templates/order/sales_order_base.html:79 #, fuzzy #| msgid "Reference" msgid "Customer Reference" msgstr "Referenz" +#: order/templates/order/sales_order_cancel.html:8 +#: order/templates/order/sales_order_ship.html:9 +msgid "Warning" +msgstr "" + #: order/templates/order/sales_order_detail.html:14 #, fuzzy #| msgid "Sales Orders" msgid "Sales Order Items" msgstr "Bestellungen" -#: order/templates/order/sales_order_detail.html:90 -#, fuzzy -#| msgid "Edit Stock Location" -msgid "Edit stock allocation" -msgstr "Lagerobjekt-Standort bearbeiten" +#: order/templates/order/sales_order_detail.html:222 +msgid "Fulfilled" +msgstr "" -#: order/templates/order/sales_order_detail.html:91 -#, fuzzy -#| msgid "Delete Stock Location" -msgid "Delete stock allocation" -msgstr "Standort löschen" - -#: order/templates/order/sales_order_detail.html:178 -#, fuzzy -#| msgid "All parts" -msgid "Buy parts" -msgstr "Alle Teile" - -#: order/templates/order/sales_order_detail.html:182 -#, fuzzy -#| msgid "Build status" -msgid "Build parts" -msgstr "Bau-Status" - -#: order/templates/order/sales_order_detail.html:185 +#: order/templates/order/sales_order_detail.html:277 #, fuzzy #| msgid "All parts" msgid "Allocate parts" msgstr "Alle Teile" -#: order/templates/order/sales_order_detail.html:189 -#, fuzzy -#| msgid "Add Line Item" -msgid "Edit line item" -msgstr "Position hinzufügen" - -#: order/templates/order/sales_order_detail.html:190 +#: order/templates/order/sales_order_detail.html:281 #, fuzzy #| msgid "Deleted {n} stock items" msgid "Delete line item " msgstr "{n} Teile im Lager gelöscht" +#: order/templates/order/sales_order_ship.html:10 +msgid "" +"This order has not been fully allocated. If the order is marked as shipped, " +"it can no longer be adjusted." +msgstr "" + +#: order/templates/order/sales_order_ship.html:12 +msgid "Ensure that the order allocation is correct before shipping the order." +msgstr "" + +#: order/templates/order/sales_order_ship.html:18 +msgid "Some line items in this order have been over-allocated" +msgstr "" + +#: order/templates/order/sales_order_ship.html:20 +msgid "Ensure that this is correct before shipping the order." +msgstr "" + +#: order/templates/order/sales_order_ship.html:27 +msgid "Shipping this order means that the order will no longer be editable." +msgstr "" + +#: order/templates/order/so_allocation_delete.html:7 +msgid "This action will unallocate the following stock from the Sales Order" +msgstr "" + #: order/templates/order/so_attachments.html:11 #, fuzzy #| msgid "Purchase Order Details" msgid "Sales Order Attachments" msgstr "Bestelldetails" -#: order/views.py:97 +#: order/templates/order/so_builds.html:11 order/templates/order/so_tabs.html:9 +#: part/templates/part/tabs.html:28 +#, fuzzy +#| msgid "Build Notes" +msgid "Build Orders" +msgstr "Bau-Bemerkungen" + +#: order/templates/order/so_lineitem_delete.html:5 +#, fuzzy +#| msgid "Are you sure you want to delete the following Supplier Parts?" +msgid "Are you sure you wish to delete this line item?" +msgstr "" +"Sind Sie sicher, dass sie die folgenden Zulieferer-Teile löschen möchten?" + +#: order/templates/order/so_tabs.html:5 +msgid "Order Items" +msgstr "Bestellungspositionen" + +#: order/views.py:93 #, fuzzy #| msgid "Purchase Order Details" msgid "Add Purchase Order Attachment" msgstr "Bestelldetails" -#: order/views.py:102 order/views.py:142 part/views.py:80 +#: order/views.py:98 order/views.py:138 part/views.py:79 #, fuzzy #| msgid "Add Attachment" msgid "Added attachment" msgstr "Anhang hinzufügen" -#: order/views.py:138 +#: order/views.py:134 #, fuzzy #| msgid "Purchase Order Details" msgid "Add Sales Order Attachment" msgstr "Bestelldetails" -#: order/views.py:166 order/views.py:187 +#: order/views.py:162 order/views.py:183 #, fuzzy #| msgid "Edit attachment" msgid "Edit Attachment" msgstr "Anhang bearbeiten" -#: order/views.py:170 order/views.py:191 +#: order/views.py:166 order/views.py:187 #, fuzzy #| msgid "Part Attachments" msgid "Attachment updated" msgstr "Anhänge" -#: order/views.py:206 order/views.py:220 +#: order/views.py:202 order/views.py:216 #, fuzzy #| msgid "Delete attachment" msgid "Delete Attachment" msgstr "Anhang löschen" -#: order/views.py:212 order/views.py:226 +#: order/views.py:208 order/views.py:222 #, fuzzy #| msgid "Delete attachment" msgid "Deleted attachment" msgstr "Anhang löschen" -#: order/views.py:277 +#: order/views.py:273 #, fuzzy #| msgid "Purchase Order" msgid "Create Purchase Order" msgstr "Kaufvertrag" -#: order/views.py:307 +#: order/views.py:303 #, fuzzy #| msgid "Purchase Order" msgid "Create Sales Order" msgstr "Kaufvertrag" -#: order/views.py:336 +#: order/views.py:332 #, fuzzy #| msgid "Purchase Order" msgid "Edit Purchase Order" msgstr "Kaufvertrag" -#: order/views.py:356 +#: order/views.py:352 #, fuzzy #| msgid "Sales Orders" msgid "Edit Sales Order" msgstr "Bestellungen" -#: order/views.py:372 +#: order/views.py:368 #, fuzzy #| msgid "Cancel order" msgid "Cancel Order" msgstr "Bestellung stornieren" -#: order/views.py:387 +#: order/views.py:383 order/views.py:415 msgid "Confirm order cancellation" msgstr "Bestell-Stornierung bestätigen" -#: order/views.py:405 +#: order/views.py:401 +#, fuzzy +#| msgid "Create new Stock Item" +msgid "Cancel sales order" +msgstr "Neues Lagerobjekt hinzufügen" + +#: order/views.py:421 +#, fuzzy +#| msgid "Cancel order" +msgid "Could not cancel order" +msgstr "Bestellung stornieren" + +#: order/views.py:435 #, fuzzy #| msgid "Issued" msgid "Issue Order" msgstr "Aufgegeben" -#: order/views.py:420 +#: order/views.py:450 msgid "Confirm order placement" msgstr "Bestellungstätigung bestätigen" -#: order/views.py:441 +#: order/views.py:471 #, fuzzy #| msgid "Completed" msgid "Complete Order" msgstr "Fertig" -#: order/views.py:507 +#: order/views.py:506 +#, fuzzy +#| msgid "On Order" +msgid "Ship Order" +msgstr "bestellt" + +#: order/views.py:522 +#, fuzzy +#| msgid "Confirm order placement" +msgid "Confirm order shipment" +msgstr "Bestellungstätigung bestätigen" + +#: order/views.py:528 +msgid "Could not ship order" +msgstr "" + +#: order/views.py:579 #, fuzzy #| msgid "Required Parts" msgid "Receive Parts" msgstr "benötigte Teile" -#: order/views.py:574 +#: order/views.py:646 msgid "Items received" msgstr "Anzahl empfangener Positionen" -#: order/views.py:588 +#: order/views.py:660 msgid "No destination set" msgstr "Kein Ziel gesetzt" -#: order/views.py:619 +#: order/views.py:691 msgid "Error converting quantity to number" msgstr "Fehler beim Konvertieren zu Zahl" -#: order/views.py:625 +#: order/views.py:697 msgid "Receive quantity less than zero" msgstr "Anzahl kleiner null empfangen" -#: order/views.py:631 +#: order/views.py:703 msgid "No lines specified" msgstr "Keine Zeilen angegeben" -#: order/views.py:990 +#: order/views.py:1062 msgid "Invalid Purchase Order" msgstr "Ungültige Bestellung" -#: order/views.py:998 +#: order/views.py:1070 msgid "Supplier must match for Part and Order" msgstr "Zulieferer muss zum Teil und zur Bestellung passen" -#: order/views.py:1003 +#: order/views.py:1075 msgid "Invalid SupplierPart selection" msgstr "Ungültige Wahl des Zulieferer-Teils" -#: order/views.py:1123 order/views.py:1141 +#: order/views.py:1207 order/views.py:1225 #, fuzzy #| msgid "Add Line Item" msgid "Edit Line Item" msgstr "Position hinzufügen" -#: order/views.py:1157 order/views.py:1169 +#: order/views.py:1241 order/views.py:1253 #, fuzzy #| msgid "Delete Stock Item" msgid "Delete Line Item" msgstr "Lagerobjekt löschen" -#: order/views.py:1162 order/views.py:1174 +#: order/views.py:1246 order/views.py:1258 #, fuzzy #| msgid "Deleted {n} stock items" msgid "Deleted line item" msgstr "{n} Teile im Lager gelöscht" -#: order/views.py:1183 +#: order/views.py:1267 #, fuzzy #| msgid "Allocate Stock to Build" msgid "Allocate Stock to Order" msgstr "Lagerbestand dem Bau zuweisen" -#: order/views.py:1252 +#: order/views.py:1336 #, fuzzy #| msgid "Edit Stock Location" msgid "Edit Allocation Quantity" msgstr "Lagerobjekt-Standort bearbeiten" -#: order/views.py:1267 +#: order/views.py:1351 #, fuzzy #| msgid "Receive parts to this location" msgid "Remove allocation" @@ -1749,173 +2049,173 @@ msgstr "Eintragsmenge zur Preisberechnung" msgid "Select currency for price calculation" msgstr "Währung zur Preisberechnung wählen" -#: part/models.py:61 +#: part/models.py:62 msgid "Default location for parts in this category" msgstr "Standard-Standort für Teile dieser Kategorie" -#: part/models.py:64 +#: part/models.py:65 msgid "Default keywords for parts in this category" msgstr "Standard-Stichworte für Teile dieser Kategorie" -#: part/models.py:338 +#: part/models.py:339 msgid "Part must be unique for name, IPN and revision" msgstr "Namen, Teile- und Revisionsnummern müssen eindeutig sein" -#: part/models.py:352 +#: part/models.py:353 msgid "Part cannot be a template part if it is a variant of another part" msgstr "Teil kann keine Vorlage sein wenn es Variante eines anderen Teils ist" -#: part/models.py:353 +#: part/models.py:354 msgid "Part cannot be a variant of another part if it is already a template" msgstr "" "Teil kann keine Variante eines anderen Teils sein wenn es bereits eine " "Vorlage ist" -#: part/models.py:357 part/templates/part/detail.html:19 +#: part/models.py:358 part/templates/part/detail.html:19 msgid "Part name" msgstr "Name des Teils" -#: part/models.py:361 +#: part/models.py:362 msgid "Is this part a template part?" msgstr "Ist dieses Teil eine Vorlage?" -#: part/models.py:370 +#: part/models.py:371 msgid "Is this part a variant of another part?" msgstr "Ist dieses Teil eine Variante eines anderen Teils?" -#: part/models.py:372 +#: part/models.py:373 msgid "Part description" msgstr "Beschreibung des Teils" -#: part/models.py:374 +#: part/models.py:375 msgid "Part keywords to improve visibility in search results" msgstr "Schlüsselworte um die Sichtbarkeit in Suchergebnissen zu verbessern" -#: part/models.py:379 +#: part/models.py:380 msgid "Part category" msgstr "Teile-Kategorie" -#: part/models.py:381 +#: part/models.py:382 msgid "Internal Part Number" msgstr "Interne Teilenummer" -#: part/models.py:383 +#: part/models.py:384 msgid "Part revision or version number" msgstr "Revisions- oder Versionsnummer" -#: part/models.py:385 +#: part/models.py:386 msgid "Link to extenal URL" msgstr "Link zu einer Externen URL" -#: part/models.py:397 +#: part/models.py:398 msgid "Where is this item normally stored?" msgstr "Wo wird dieses Teil normalerweise gelagert?" -#: part/models.py:441 +#: part/models.py:442 msgid "Default supplier part" msgstr "Standard-Zulieferer?" -#: part/models.py:444 +#: part/models.py:445 msgid "Minimum allowed stock level" msgstr "Minimal zulässiger Lagerbestand" -#: part/models.py:446 +#: part/models.py:447 msgid "Stock keeping units for this part" msgstr "Stock Keeping Units (SKU) für dieses Teil" -#: part/models.py:448 +#: part/models.py:449 msgid "Can this part be built from other parts?" msgstr "Kann dieses Teil aus anderen Teilen angefertigt werden?" -#: part/models.py:450 +#: part/models.py:451 msgid "Can this part be used to build other parts?" msgstr "Kann dieses Teil zum Bau von anderen genutzt werden?" -#: part/models.py:452 +#: part/models.py:453 msgid "Does this part have tracking for unique items?" msgstr "Hat dieses Teil Tracking für einzelne Objekte?" -#: part/models.py:454 +#: part/models.py:455 msgid "Can this part be purchased from external suppliers?" msgstr "Kann dieses Teil von externen Zulieferern gekauft werden?" -#: part/models.py:456 +#: part/models.py:457 msgid "Can this part be sold to customers?" msgstr "Kann dieses Teil an Kunden verkauft werden?" -#: part/models.py:458 +#: part/models.py:459 msgid "Is this part active?" msgstr "Ist dieses Teil aktiv?" -#: part/models.py:460 +#: part/models.py:461 msgid "Is this a virtual part, such as a software product or license?" msgstr "Ist dieses Teil virtuell, wie zum Beispiel eine Software oder Lizenz?" -#: part/models.py:462 +#: part/models.py:463 msgid "Part notes - supports Markdown formatting" msgstr "Bemerkungen - unterstüzt Markdown-Formatierung" -#: part/models.py:464 +#: part/models.py:465 msgid "Stored BOM checksum" msgstr "Prüfsumme der Stückliste gespeichert" -#: part/models.py:1065 +#: part/models.py:1067 msgid "Parameter template name must be unique" msgstr "Vorlagen-Name des Parameters muss eindeutig sein" -#: part/models.py:1070 +#: part/models.py:1072 msgid "Parameter Name" msgstr "Name des Parameters" -#: part/models.py:1072 +#: part/models.py:1074 msgid "Parameter Units" msgstr "Parameter Einheit" -#: part/models.py:1098 +#: part/models.py:1100 msgid "Parent Part" msgstr "Ausgangsteil" -#: part/models.py:1100 +#: part/models.py:1102 msgid "Parameter Template" msgstr "Parameter Vorlage" -#: part/models.py:1102 +#: part/models.py:1104 msgid "Parameter Value" msgstr "Parameter Wert" -#: part/models.py:1126 +#: part/models.py:1128 msgid "Select parent part" msgstr "Ausgangsteil auswählen" -#: part/models.py:1135 +#: part/models.py:1137 msgid "Select part to be used in BOM" msgstr "Teil für die Nutzung in der Stückliste auswählen" -#: part/models.py:1142 +#: part/models.py:1144 msgid "BOM quantity for this BOM item" msgstr "Stücklisten-Anzahl für dieses Stücklisten-Teil" -#: part/models.py:1145 +#: part/models.py:1147 msgid "Estimated build wastage quantity (absolute or percentage)" msgstr "Geschätzter Ausschuss (absolut oder prozentual)" -#: part/models.py:1148 +#: part/models.py:1150 msgid "BOM item reference" msgstr "Referenz des Objekts auf der Stückliste" -#: part/models.py:1151 +#: part/models.py:1153 msgid "BOM item notes" msgstr "Notizen zum Stücklisten-Objekt" -#: part/models.py:1153 +#: part/models.py:1155 msgid "BOM line checksum" msgstr "Prüfsumme der Stückliste" -#: part/models.py:1216 +#: part/models.py:1218 msgid "Part cannot be added to its own Bill of Materials" msgstr "Teil kann nicht zu seiner eigenen Stückliste hinzugefügt werden" -#: part/models.py:1223 +#: part/models.py:1225 #, python-brace-format msgid "Part '{p1}' is used in BOM for '{p2}' (recursive)" msgstr "Teil '{p1}' wird in Stückliste für Teil '{p2}' benutzt (rekursiv)" @@ -1924,6 +2224,44 @@ msgstr "Teil '{p1}' wird in Stückliste für Teil '{p2}' benutzt (rekursiv)" msgid "Part Attachments" msgstr "Anhänge" +#: part/templates/part/bom.html:13 +msgid "Bill of Materials" +msgstr "" + +#: part/templates/part/bom.html:37 +#, fuzzy +#| msgid "Removed stock from {n} items" +msgid "Remove selected BOM items" +msgstr "Vorrat von {n} Lagerobjekten entfernt" + +#: part/templates/part/bom.html:38 +msgid "Import BOM data" +msgstr "" + +#: part/templates/part/bom.html:39 +#, fuzzy +#| msgid "Stock Item" +msgid "New BOM Item" +msgstr "Lagerobjekt" + +#: part/templates/part/bom.html:40 +msgid "Finish Editing" +msgstr "" + +#: part/templates/part/bom.html:42 +#, fuzzy +#| msgid "Edit Stock Item" +msgid "Edit BOM" +msgstr "Lagerobjekt bearbeiten" + +#: part/templates/part/bom.html:44 +msgid "Validate Bill of Materials" +msgstr "" + +#: part/templates/part/bom.html:46 part/views.py:1358 +msgid "Export Bill of Materials" +msgstr "" + #: part/templates/part/category.html:13 part/templates/part/category.html:78 #: templates/stats.html:12 msgid "Part Categories" @@ -1977,7 +2315,7 @@ msgstr "Revision" msgid "Variant Of" msgstr "Variante von" -#: part/templates/part/detail.html:57 +#: part/templates/part/detail.html:57 part/templates/part/set_category.html:15 msgid "Category" msgstr "Kategorie" @@ -1985,7 +2323,7 @@ msgstr "Kategorie" msgid "Default Supplier" msgstr "Standard-Zulieferer" -#: part/templates/part/detail.html:89 +#: part/templates/part/detail.html:89 part/templates/part/params.html:22 msgid "Units" msgstr "Einheiten" @@ -2021,7 +2359,7 @@ msgstr "Teil ist virtuell (kein physisches Teil)" msgid "Part is not a virtual part" msgstr "Teil ist nicht virtuell" -#: part/templates/part/detail.html:132 templates/table_filters.html:91 +#: part/templates/part/detail.html:132 templates/table_filters.html:99 msgid "Assembly" msgstr "Baugruppe" @@ -2033,7 +2371,7 @@ msgstr "Teil kann aus anderen Teilen angefertigt werden" msgid "Part cannot be assembled from other parts" msgstr "Teil kann nicht aus anderen Teilen angefertigt werden" -#: part/templates/part/detail.html:141 templates/table_filters.html:95 +#: part/templates/part/detail.html:141 templates/table_filters.html:103 msgid "Component" msgstr "Komponente" @@ -2065,7 +2403,7 @@ msgstr "Kaufbar" msgid "Part can be purchased from external suppliers" msgstr "Teil kann von externen Zulieferern gekauft werden" -#: part/templates/part/detail.html:168 templates/table_filters.html:103 +#: part/templates/part/detail.html:168 templates/table_filters.html:111 #, fuzzy #| msgid "Sellable" msgid "Salable" @@ -2095,6 +2433,42 @@ msgstr "Teile bestellen" msgid "Order Part" msgstr "Teile bestellen" +#: part/templates/part/params.html:8 +#, fuzzy +#| msgid "Edit attachment" +msgid "Part Parameters" +msgstr "Anhang bearbeiten" + +#: part/templates/part/params.html:13 +#, fuzzy +#| msgid "Edit attachment" +msgid "Add new parameter" +msgstr "Anhang bearbeiten" + +#: part/templates/part/params.html:13 templates/InvenTree/settings/part.html:12 +#, fuzzy +#| msgid "Parameters" +msgid "New Parameter" +msgstr "Parameter" + +#: part/templates/part/params.html:20 +msgid "Name" +msgstr "" + +#: part/templates/part/params.html:21 +msgid "Value" +msgstr "" + +#: part/templates/part/params.html:33 +msgid "Edit" +msgstr "" + +#: part/templates/part/params.html:34 +#, fuzzy +#| msgid "Delete attachment" +msgid "Delete" +msgstr "Anhang löschen" + #: part/templates/part/part_app_base.html:9 #, fuzzy #| msgid "Part category" @@ -2108,25 +2482,25 @@ msgid "Part List" msgstr "Teile" #: part/templates/part/part_base.html:11 -msgid "This part is not active" -msgstr "Dieses Teil ist nicht aktiv" - -#: part/templates/part/part_base.html:16 #, fuzzy #| msgid "Is this part a template part?" msgid "This part is a template part." msgstr "Ist dieses Teil eine Vorlage?" -#: part/templates/part/part_base.html:18 +#: part/templates/part/part_base.html:13 msgid "It is not a real part, but real parts can be based on this template." msgstr "" -#: part/templates/part/part_base.html:23 +#: part/templates/part/part_base.html:18 #, fuzzy #| msgid "This part is not active" msgid "This part is a variant of" msgstr "Dieses Teil ist nicht aktiv" +#: part/templates/part/part_base.html:30 +msgid "Inactive" +msgstr "" + #: part/templates/part/part_base.html:38 msgid "Star this part" msgstr "Teil favorisieren" @@ -2143,9 +2517,9 @@ msgstr "Verfügbarer Lagerbestand" msgid "In Stock" msgstr "Auf Lager" -#: part/templates/part/part_base.html:131 -msgid "Build Status" -msgstr "Bau-Status" +#: part/templates/part/part_base.html:121 +msgid "On Order" +msgstr "bestellt" #: part/templates/part/part_base.html:136 msgid "Can Build" @@ -2177,7 +2551,25 @@ msgstr "Bestellungen" msgid "New Order" msgstr "bestellt" -#: part/templates/part/stock.html:76 +#: part/templates/part/set_category.html:9 +#, fuzzy +#| msgid "Set category for {n} parts" +msgid "Set category for the following parts" +msgstr "Kategorie für {n} Teile setzen" + +#: part/templates/part/set_category.html:32 +#, fuzzy +#| msgid "Remove From Stock" +msgid "Remove part" +msgstr "Aus Lagerbestand entfernen" + +#: part/templates/part/stock.html:8 +#, fuzzy +#| msgid "Supplier part" +msgid "Part Stock" +msgstr "Zulieferer-Teil" + +#: part/templates/part/stock.html:77 #, fuzzy #| msgid "Create new Stock Item" msgid "Create New Part" @@ -2215,220 +2607,222 @@ msgstr "Benutzt in" msgid "Tracking" msgstr "Tracking" -#: part/views.py:75 +#: part/templates/part/track.html:8 +#, fuzzy +#| msgid "Part packaging" +msgid "Part Tracking" +msgstr "Teile-Packaging" + +#: part/views.py:74 #, fuzzy #| msgid "Add Attachment" msgid "Add part attachment" msgstr "Anhang hinzufügen" -#: part/views.py:123 +#: part/views.py:122 #, fuzzy #| msgid "Part Attachments" msgid "Part attachment updated" msgstr "Anhänge" -#: part/views.py:138 +#: part/views.py:137 #, fuzzy #| msgid "Delete attachment" msgid "Delete Part Attachment" msgstr "Anhang löschen" -#: part/views.py:144 +#: part/views.py:143 #, fuzzy #| msgid "Delete attachment" msgid "Deleted part attachment" msgstr "Anhang löschen" -#: part/views.py:152 +#: part/views.py:151 #, fuzzy #| msgid "Select part category" msgid "Set Part Category" msgstr "Teilekategorie wählen" -#: part/views.py:200 +#: part/views.py:199 #, python-brace-format msgid "Set category for {n} parts" msgstr "Kategorie für {n} Teile setzen" -#: part/views.py:235 +#: part/views.py:234 #, fuzzy #| msgid "Create new Stock Item" msgid "Create Variant" msgstr "Neues Lagerobjekt hinzufügen" -#: part/views.py:305 +#: part/views.py:304 #, fuzzy #| msgid "Supplier Part" msgid "Duplicate Part" msgstr "Zulieferer-Teil" -#: part/views.py:310 +#: part/views.py:309 #, fuzzy #| msgid "Supplier part" msgid "Copied part" msgstr "Zulieferer-Teil" -#: part/views.py:421 +#: part/views.py:420 #, fuzzy #| msgid "Create new Stock Item" msgid "Create new part" msgstr "Neues Lagerobjekt hinzufügen" -#: part/views.py:426 +#: part/views.py:425 #, fuzzy #| msgid "Created new stock item" msgid "Created new part" msgstr "Neues Lagerobjekt erstellt" -#: part/views.py:605 +#: part/views.py:599 #, fuzzy #| msgid "Part Notes" msgid "Part QR Code" msgstr "Teil-Bemerkungen" -#: part/views.py:622 +#: part/views.py:616 msgid "Upload Part Image" msgstr "" -#: part/views.py:627 part/views.py:662 +#: part/views.py:621 part/views.py:656 msgid "Updated part image" msgstr "" -#: part/views.py:636 +#: part/views.py:630 #, fuzzy #| msgid "Select part" msgid "Select Part Image" msgstr "Teil auswählen" -#: part/views.py:665 +#: part/views.py:659 msgid "Part image not found" msgstr "" -#: part/views.py:676 +#: part/views.py:670 #, fuzzy #| msgid "Edit notes" msgid "Edit Part Properties" msgstr "Bermerkungen bearbeiten" -#: part/views.py:698 +#: part/views.py:692 msgid "Validate BOM" msgstr "" -#: part/views.py:860 +#: part/views.py:854 msgid "No BOM file provided" msgstr "Keine Stückliste angegeben" -#: part/views.py:1121 +#: part/views.py:1115 msgid "Enter a valid quantity" msgstr "Bitte eine gültige Anzahl eingeben" -#: part/views.py:1145 part/views.py:1148 +#: part/views.py:1139 part/views.py:1142 msgid "Select valid part" msgstr "Bitte ein gültiges Teil auswählen" -#: part/views.py:1154 +#: part/views.py:1148 msgid "Duplicate part selected" msgstr "Teil doppelt ausgewählt" -#: part/views.py:1182 +#: part/views.py:1176 msgid "Select a part" msgstr "Teil auswählen" -#: part/views.py:1186 +#: part/views.py:1180 msgid "Specify quantity" msgstr "Anzahl angeben" -#: part/views.py:1364 -msgid "Export Bill of Materials" -msgstr "" - -#: part/views.py:1402 +#: part/views.py:1396 #, fuzzy #| msgid "Confirm part creation" msgid "Confirm Part Deletion" msgstr "Erstellen des Teils bestätigen" -#: part/views.py:1409 +#: part/views.py:1403 msgid "Part was deleted" msgstr "" -#: part/views.py:1418 +#: part/views.py:1412 #, fuzzy #| msgid "Part packaging" msgid "Part Pricing" msgstr "Teile-Packaging" -#: part/views.py:1540 +#: part/views.py:1534 #, fuzzy #| msgid "Parameter Template" msgid "Create Part Parameter Template" msgstr "Parameter Vorlage" -#: part/views.py:1548 +#: part/views.py:1542 #, fuzzy #| msgid "Parameter Template" msgid "Edit Part Parameter Template" msgstr "Parameter Vorlage" -#: part/views.py:1555 +#: part/views.py:1549 #, fuzzy #| msgid "Parameter Template" msgid "Delete Part Parameter Template" msgstr "Parameter Vorlage" -#: part/views.py:1563 +#: part/views.py:1557 msgid "Create Part Parameter" msgstr "" -#: part/views.py:1613 +#: part/views.py:1607 #, fuzzy #| msgid "Edit attachment" msgid "Edit Part Parameter" msgstr "Anhang bearbeiten" -#: part/views.py:1627 +#: part/views.py:1621 #, fuzzy #| msgid "Delete attachment" msgid "Delete Part Parameter" msgstr "Anhang löschen" -#: part/views.py:1643 +#: part/views.py:1637 #, fuzzy #| msgid "Part category" msgid "Edit Part Category" msgstr "Teile-Kategorie" -#: part/views.py:1678 +#: part/views.py:1672 #, fuzzy #| msgid "Select part category" msgid "Delete Part Category" msgstr "Teilekategorie wählen" -#: part/views.py:1684 +#: part/views.py:1678 #, fuzzy #| msgid "Part category" msgid "Part category was deleted" msgstr "Teile-Kategorie" -#: part/views.py:1692 +#: part/views.py:1686 #, fuzzy #| msgid "Select part category" msgid "Create new part category" msgstr "Teilekategorie wählen" -#: part/views.py:1743 +#: part/views.py:1737 #, fuzzy #| msgid "Created new stock item" msgid "Create BOM item" msgstr "Neues Lagerobjekt erstellt" -#: part/views.py:1809 +#: part/views.py:1803 #, fuzzy #| msgid "Edit Stock Item" msgid "Edit BOM item" msgstr "Lagerobjekt bearbeiten" -#: part/views.py:1857 +#: part/views.py:1851 #, fuzzy #| msgid "Confirm build completion" msgid "Confim BOM item deletion" @@ -2472,7 +2866,7 @@ msgstr "Bewegung der Lagerobjekte bestätigen" msgid "Set the destination as the default location for selected parts" msgstr "Setze das Ziel als Standard-Ziel für ausgewählte Teile" -#: stock/models.py:210 +#: stock/models.py:214 #, python-brace-format msgid "" "A stock item with this serial number already exists for template part {part}" @@ -2480,116 +2874,170 @@ msgstr "" "Ein Teil mit dieser Seriennummer existiert bereits für die Teilevorlage " "{part}" -#: stock/models.py:215 +#: stock/models.py:219 msgid "A stock item with this serial number already exists" msgstr "Ein Teil mit dieser Seriennummer existiert bereits" -#: stock/models.py:234 +#: stock/models.py:250 #, python-brace-format msgid "Part type ('{pf}') must be {pe}" msgstr "Teile-Typ ('{pf}') muss {pe} sein" -#: stock/models.py:244 stock/models.py:253 +#: stock/models.py:260 stock/models.py:269 msgid "Quantity must be 1 for item with a serial number" msgstr "Anzahl muss für Objekte mit Seriennummer \"1\" sein" -#: stock/models.py:245 +#: stock/models.py:261 msgid "Serial number cannot be set if quantity greater than 1" msgstr "" "Seriennummer kann nicht gesetzt werden wenn die Anzahl größer als \"1\" ist" -#: stock/models.py:261 +#: stock/models.py:277 msgid "Stock item cannot be created for a template Part" msgstr "Lagerobjekt kann nicht für Vorlagen-Teile angelegt werden" -#: stock/models.py:270 +#: stock/models.py:286 msgid "Item cannot belong to itself" msgstr "Teil kann nicht zu sich selbst gehören" -#: stock/models.py:311 +#: stock/models.py:323 +#, fuzzy +#| msgid "Stock Item" +msgid "Parent Stock Item" +msgstr "Lagerobjekt" + +#: stock/models.py:331 +#, fuzzy +#| msgid "Base part" +msgid "Base Part" +msgstr "Basis-Teil" + +#: stock/models.py:332 msgid "Base part" msgstr "Basis-Teil" -#: stock/models.py:319 +#: stock/models.py:342 msgid "Select a matching supplier part for this stock item" msgstr "Passenden Zulieferer für dieses Lagerobjekt auswählen" -#: stock/models.py:323 +#: stock/models.py:347 stock/templates/stock/stock_app_base.html:7 +#, fuzzy +#| msgid "Stock Locations" +msgid "Stock Location" +msgstr "Lagerobjekt-Standorte" + +#: stock/models.py:350 msgid "Where is this stock item located?" msgstr "Wo wird dieses Teil normalerweise gelagert?" -#: stock/models.py:327 +#: stock/models.py:355 +#, fuzzy +#| msgid "Used In" +msgid "Installed In" +msgstr "Benutzt in" + +#: stock/models.py:358 msgid "Is this item installed in another item?" msgstr "Ist dieses Teil in einem anderen verbaut?" -#: stock/models.py:331 -msgid "Item assigned to customer?" -msgstr "Ist dieses Objekt einem Kunden zugeteilt?" - -#: stock/models.py:334 +#: stock/models.py:364 msgid "Serial number for this item" msgstr "Seriennummer für dieses Teil" -#: stock/models.py:339 +#: stock/models.py:376 msgid "Batch code for this stock item" msgstr "Losnummer für dieses Lagerobjekt" -#: stock/models.py:348 +#: stock/models.py:380 +#, fuzzy +#| msgid "Quantity" +msgid "Stock Quantity" +msgstr "Anzahl" + +#: stock/models.py:389 +#, fuzzy +#| msgid "Can Build" +msgid "Source Build" +msgstr "Herstellbar?" + +#: stock/models.py:391 msgid "Build for this stock item" msgstr "Bau für dieses Lagerobjekt" -#: stock/models.py:357 +#: stock/models.py:398 +#, fuzzy +#| msgid "Purchase Order" +msgid "Source Purchase Order" +msgstr "Kaufvertrag" + +#: stock/models.py:401 msgid "Purchase order for this stock item" msgstr "Bestellung für dieses Teil" -#: stock/models.py:374 +#: stock/models.py:407 +#, fuzzy +#| msgid "Purchase Order" +msgid "Destination Sales Order" +msgstr "Kaufvertrag" + +#: stock/models.py:414 +msgid "Destination Build Order" +msgstr "" + +#: stock/models.py:427 msgid "Delete this Stock Item when stock is depleted" msgstr "Objekt löschen wenn Lagerbestand aufgebraucht" -#: stock/models.py:381 stock/templates/stock/item_notes.html:13 +#: stock/models.py:437 stock/templates/stock/item_notes.html:13 #: stock/templates/stock/item_notes.html:29 msgid "Stock Item Notes" msgstr "Lagerobjekt-Notizen" -#: stock/models.py:516 +#: stock/models.py:601 msgid "Quantity must be integer" msgstr "Anzahl muss eine Ganzzahl sein" -#: stock/models.py:522 +#: stock/models.py:607 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({n})" msgstr "Anzahl darf nicht die verfügbare Anzahl überschreiten ({n})" -#: stock/models.py:525 stock/models.py:528 +#: stock/models.py:610 stock/models.py:613 msgid "Serial numbers must be a list of integers" msgstr "Seriennummern muss eine Liste von Ganzzahlen sein" -#: stock/models.py:531 +#: stock/models.py:616 msgid "Quantity does not match serial numbers" msgstr "Anzahl stimmt nicht mit den Seriennummern überein" -#: stock/models.py:541 +#: stock/models.py:626 msgid "Serial numbers already exist: " msgstr "Seriennummern existieren bereits:" -#: stock/models.py:563 +#: stock/models.py:648 msgid "Add serial number" msgstr "Seriennummer hinzufügen" -#: stock/models.py:566 +#: stock/models.py:651 #, python-brace-format msgid "Serialized {n} items" msgstr "{n} Teile serialisiert" -#: stock/models.py:866 +#: stock/models.py:748 +#, fuzzy +#| msgid "Stock item cannot be created for a template Part" +msgid "StockItem cannot be moved as it is not in stock" +msgstr "Lagerobjekt kann nicht für Vorlagen-Teile angelegt werden" + +#: stock/models.py:957 msgid "Tracking entry title" msgstr "Name des Eintrags-Trackings" -#: stock/models.py:868 +#: stock/models.py:959 msgid "Entry notes" msgstr "Eintrags-Notizen" -#: stock/models.py:870 +#: stock/models.py:961 msgid "Link to external page for further information" msgstr "Link auf externe Seite für weitere Informationen" @@ -2598,7 +3046,8 @@ msgid "Stock Tracking Information" msgstr "Informationen zum Lagerbestands-Tracking" #: stock/templates/stock/item_base.html:8 -#: stock/templates/stock/item_base.html:56 +#: stock/templates/stock/item_base.html:52 +#: stock/templates/stock/item_base.html:184 #: stock/templates/stock/stock_adjust.html:16 msgid "Stock Item" msgstr "Lagerobjekt" @@ -2636,40 +3085,39 @@ msgstr "" "Dieses Lagerobjekt wird automatisch gelöscht wenn der Lagerbestand " "aufgebraucht ist." -#: stock/templates/stock/item_base.html:45 -msgid "This stock item was split from " -msgstr "" - -#: stock/templates/stock/item_base.html:105 +#: stock/templates/stock/item_base.html:103 msgid "Stock Item Details" msgstr "Lagerbestands-Details" -#: stock/templates/stock/item_base.html:119 +#: stock/templates/stock/item_base.html:117 msgid "Belongs To" msgstr "Gehört zu" -#: stock/templates/stock/item_base.html:125 -#: stock/templates/stock/stock_adjust.html:17 -msgid "Location" -msgstr "Standort" +#: stock/templates/stock/item_base.html:129 +#, fuzzy +#| msgid "Build Notes" +msgid "Build Order" +msgstr "Bau-Bemerkungen" -#: stock/templates/stock/item_base.html:132 +#: stock/templates/stock/item_base.html:142 msgid "Unique Identifier" msgstr "" -#: stock/templates/stock/item_base.html:139 -msgid "Serial Number" -msgstr "Seriennummer" +#: stock/templates/stock/item_base.html:183 +#, fuzzy +#| msgid "Parent Part" +msgid "Parent Item" +msgstr "Ausgangsteil" -#: stock/templates/stock/item_base.html:198 +#: stock/templates/stock/item_base.html:208 msgid "Last Updated" msgstr "Zuletzt aktualisiert" -#: stock/templates/stock/item_base.html:203 +#: stock/templates/stock/item_base.html:213 msgid "Last Stocktake" msgstr "Letzte Inventur" -#: stock/templates/stock/item_base.html:207 +#: stock/templates/stock/item_base.html:217 msgid "No stocktake performed" msgstr "Keine Inventur ausgeführt" @@ -2683,6 +3131,30 @@ msgstr "Lagerobjekte hinzufügen" msgid "This stock item does not have any child items" msgstr "" +#: stock/templates/stock/location.html:13 +#, fuzzy +#| msgid "Add Stock Items" +msgid "All stock items" +msgstr "Lagerobjekte hinzufügen" + +#: stock/templates/stock/location.html:22 +#, fuzzy +#| msgid "Count Stock Items" +msgid "Count stock items" +msgstr "Lagerobjekte zählen" + +#: stock/templates/stock/location.html:25 +#, fuzzy +#| msgid "Edit Stock Location" +msgid "Edit stock location" +msgstr "Lagerobjekt-Standort bearbeiten" + +#: stock/templates/stock/location.html:28 +#, fuzzy +#| msgid "Delete Stock Location" +msgid "Delete stock location" +msgstr "Standort löschen" + #: stock/templates/stock/location.html:37 msgid "Location Details" msgstr "Standort-Details" @@ -2714,12 +3186,6 @@ msgstr "Objekt-Details" msgid "Stock Locations" msgstr "Lagerobjekt-Standorte" -#: stock/templates/stock/stock_app_base.html:7 -#, fuzzy -#| msgid "Stock Locations" -msgid "Stock Location" -msgstr "Lagerobjekt-Standorte" - #: stock/templates/stock/tabs.html:8 msgid "Children" msgstr "" @@ -2740,135 +3206,135 @@ msgstr "QR-Code für diesen Standort" msgid "Stock Export Options" msgstr "Lagerbestandsexportoptionen" -#: stock/views.py:278 +#: stock/views.py:276 msgid "Stock Item QR Code" msgstr "Lagerobjekt-QR-Code" -#: stock/views.py:301 +#: stock/views.py:299 msgid "Adjust Stock" msgstr "Lagerbestand anpassen" -#: stock/views.py:410 +#: stock/views.py:408 msgid "Move Stock Items" msgstr "Lagerobjekte bewegen" -#: stock/views.py:411 +#: stock/views.py:409 msgid "Count Stock Items" msgstr "Lagerobjekte zählen" -#: stock/views.py:412 +#: stock/views.py:410 msgid "Remove From Stock" msgstr "Aus Lagerbestand entfernen" -#: stock/views.py:413 +#: stock/views.py:411 msgid "Add Stock Items" msgstr "Lagerobjekte hinzufügen" -#: stock/views.py:414 +#: stock/views.py:412 msgid "Delete Stock Items" msgstr "Lagerobjekte löschen" -#: stock/views.py:442 +#: stock/views.py:440 msgid "Must enter integer value" msgstr "Nur Ganzzahl eingeben" -#: stock/views.py:447 +#: stock/views.py:445 msgid "Quantity must be positive" msgstr "Anzahl muss positiv sein" -#: stock/views.py:454 +#: stock/views.py:452 #, python-brace-format msgid "Quantity must not exceed {x}" msgstr "Anzahl darf {x} nicht überschreiten" -#: stock/views.py:462 +#: stock/views.py:460 msgid "Confirm stock adjustment" msgstr "Bestands-Anpassung bestätigen" -#: stock/views.py:533 +#: stock/views.py:531 #, python-brace-format msgid "Added stock to {n} items" msgstr "Vorrat zu {n} Lagerobjekten hinzugefügt" -#: stock/views.py:548 +#: stock/views.py:546 #, python-brace-format msgid "Removed stock from {n} items" msgstr "Vorrat von {n} Lagerobjekten entfernt" -#: stock/views.py:561 +#: stock/views.py:559 #, python-brace-format msgid "Counted stock for {n} items" msgstr "Bestand für {n} Objekte erfasst" -#: stock/views.py:589 +#: stock/views.py:587 msgid "No items were moved" msgstr "Keine Lagerobjekte wurden bewegt" -#: stock/views.py:592 +#: stock/views.py:590 #, python-brace-format msgid "Moved {n} items to {dest}" msgstr "{n} Teile nach {dest} bewegt" -#: stock/views.py:611 +#: stock/views.py:609 #, python-brace-format msgid "Deleted {n} stock items" msgstr "{n} Teile im Lager gelöscht" -#: stock/views.py:623 +#: stock/views.py:621 msgid "Edit Stock Item" msgstr "Lagerobjekt bearbeiten" -#: stock/views.py:659 +#: stock/views.py:657 msgid "Create new Stock Location" msgstr "Neuen Lager-Standort erstellen" -#: stock/views.py:680 +#: stock/views.py:678 msgid "Serialize Stock" msgstr "Lagerbestand erfassen" -#: stock/views.py:760 +#: stock/views.py:758 msgid "Create new Stock Item" msgstr "Neues Lagerobjekt hinzufügen" -#: stock/views.py:824 +#: stock/views.py:822 msgid "Copy Stock Item" msgstr "Lagerobjekt kopieren" -#: stock/views.py:892 +#: stock/views.py:893 msgid "Invalid quantity" msgstr "Ungültige Menge" -#: stock/views.py:895 +#: stock/views.py:896 msgid "Invalid part selection" msgstr "Ungültige Teileauswahl" -#: stock/views.py:942 +#: stock/views.py:943 #, fuzzy, python-brace-format #| msgid "Created new stock item" msgid "Created {n} new stock items" msgstr "Neues Lagerobjekt erstellt" -#: stock/views.py:959 stock/views.py:972 +#: stock/views.py:960 stock/views.py:973 msgid "Created new stock item" msgstr "Neues Lagerobjekt erstellt" -#: stock/views.py:989 +#: stock/views.py:990 msgid "Delete Stock Location" msgstr "Standort löschen" -#: stock/views.py:1002 +#: stock/views.py:1003 msgid "Delete Stock Item" msgstr "Lagerobjekt löschen" -#: stock/views.py:1013 +#: stock/views.py:1014 msgid "Delete Stock Tracking Entry" msgstr "Lagerbestands-Tracking-Eintrag löschen" -#: stock/views.py:1030 +#: stock/views.py:1031 msgid "Edit Stock Tracking Entry" msgstr "Lagerbestands-Tracking-Eintrag bearbeiten" -#: stock/views.py:1039 +#: stock/views.py:1040 msgid "Add Stock Tracking Entry" msgstr "Lagerbestands-Tracking-Eintrag hinzufügen" @@ -2882,6 +3348,24 @@ msgstr "" msgid "No results found" msgstr "Keine Seriennummern gefunden" +#: templates/InvenTree/settings/part.html:28 +#, fuzzy +#| msgid "Parameter Template" +msgid "No part parameter templates found" +msgstr "Parameter Vorlage" + +#: templates/InvenTree/settings/part.html:47 +#, fuzzy +#| msgid "Parameter Template" +msgid "Edit Template" +msgstr "Parameter Vorlage" + +#: templates/InvenTree/settings/part.html:48 +#, fuzzy +#| msgid "Parameter Template" +msgid "Delete Template" +msgstr "Parameter Vorlage" + #: templates/InvenTree/starred_parts.html:7 #, fuzzy #| msgid "Required Parts" @@ -2970,12 +3454,6 @@ msgstr "Status" msgid "Search" msgstr "" -#: templates/stock_table.html:8 -#, fuzzy -#| msgid "Stock Item" -msgid "New Stock Item" -msgstr "Lagerobjekt" - #: templates/stock_table.html:12 #, fuzzy #| msgid "Add Stock Items" @@ -3012,102 +3490,124 @@ msgstr "bestellt" msgid "Delete Stock" msgstr "Lagerobjekt löschen" -#: templates/table_filters.html:22 +#: templates/table_filters.html:21 #, fuzzy #| msgid "Include stock items in sub locations" msgid "Include sublocations" msgstr "Lagerobjekte in untergeordneten Lagerorten einschließen" -#: templates/table_filters.html:23 +#: templates/table_filters.html:22 #, fuzzy #| msgid "Include stock items in sub locations" msgid "Include stock in sublocations" msgstr "Lagerobjekte in untergeordneten Lagerorten einschließen" -#: templates/table_filters.html:27 +#: templates/table_filters.html:26 #, fuzzy #| msgid "Required Parts" msgid "Active parts" msgstr "benötigte Teile" -#: templates/table_filters.html:28 +#: templates/table_filters.html:27 msgid "Show stock for active parts" msgstr "" -#: templates/table_filters.html:32 templates/table_filters.html:33 +#: templates/table_filters.html:31 templates/table_filters.html:32 #, fuzzy #| msgid "Stock Details" msgid "Stock status" msgstr "Objekt-Details" -#: templates/table_filters.html:37 +#: templates/table_filters.html:36 #, fuzzy #| msgid "Allocated" msgid "Is allocated" msgstr "Zugeordnet" -#: templates/table_filters.html:38 +#: templates/table_filters.html:37 msgid "Item has been alloacted" msgstr "" -#: templates/table_filters.html:58 +#: templates/table_filters.html:46 +msgid "Build status" +msgstr "Bau-Status" + +#: templates/table_filters.html:57 templates/table_filters.html:66 #, fuzzy #| msgid "Order Parts" msgid "Order status" msgstr "Teile bestellen" -#: templates/table_filters.html:69 +#: templates/table_filters.html:77 #, fuzzy #| msgid "Parts (Including subcategories)" msgid "Include subcategories" msgstr "Teile (inklusive Unter-Kategorien)" -#: templates/table_filters.html:70 +#: templates/table_filters.html:78 #, fuzzy #| msgid "Parts (Including subcategories)" msgid "Include parts in subcategories" msgstr "Teile (inklusive Unter-Kategorien)" -#: templates/table_filters.html:74 +#: templates/table_filters.html:82 msgid "Active" msgstr "" -#: templates/table_filters.html:75 +#: templates/table_filters.html:83 #, fuzzy #| msgid "Build to allocate parts" msgid "Show active parts" msgstr "Bau starten um Teile zuzuweisen" -#: templates/table_filters.html:79 +#: templates/table_filters.html:87 #, fuzzy #| msgid "Parameter Template" msgid "Template" msgstr "Parameter Vorlage" -#: templates/table_filters.html:83 +#: templates/table_filters.html:91 #, fuzzy #| msgid "Available" msgid "Stock available" msgstr "verfügbar" -#: templates/table_filters.html:87 +#: templates/table_filters.html:95 #, fuzzy #| msgid "Stock" msgid "Low stock" msgstr "Lagerbestand" -#: templates/table_filters.html:99 +#: templates/table_filters.html:107 msgid "Starred" msgstr "" -#: templates/table_filters.html:107 +#: templates/table_filters.html:115 #, fuzzy #| msgid "Purchaseable" msgid "Purchasable" msgstr "Kaufbar" -#~ msgid "Order Items" -#~ msgstr "Bestellungspositionen" +#~ msgid "Allocate Stock to Build" +#~ msgstr "Lagerbestand dem Bau zuweisen" + +#~ msgid "Available" +#~ msgstr "verfügbar" + +#~ msgid "Required Parts" +#~ msgstr "benötigte Teile" + +#~ msgid "Allocate" +#~ msgstr "zuweisen" + +#~ msgid "Line" +#~ msgstr "Position" + +#~ msgid "This part is not active" +#~ msgstr "Dieses Teil ist nicht aktiv" + +#~ msgid "Item assigned to customer?" +#~ msgstr "Ist dieses Objekt einem Kunden zugeteilt?" #~ msgid "URL" #~ msgstr "URL" diff --git a/InvenTree/locale/en/LC_MESSAGES/django.po b/InvenTree/locale/en/LC_MESSAGES/django.po index ee9168f369..d546eb43b0 100644 --- a/InvenTree/locale/en/LC_MESSAGES/django.po +++ b/InvenTree/locale/en/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-04-22 23:17+0000\n" +"POT-Creation-Date: 2020-04-27 23:32+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -42,7 +42,7 @@ msgstr "" msgid "Unknown barcode format" msgstr "" -#: InvenTree/helpers.py:258 order/models.py:173 order/models.py:224 +#: InvenTree/helpers.py:258 order/models.py:150 order/models.py:224 msgid "Invalid quantity provided" msgstr "" @@ -78,68 +78,81 @@ msgstr "" msgid "File comment" msgstr "" -#: InvenTree/settings.py:270 +#: InvenTree/settings.py:274 msgid "English" msgstr "" -#: InvenTree/settings.py:271 +#: InvenTree/settings.py:275 msgid "German" msgstr "" -#: InvenTree/settings.py:272 +#: InvenTree/settings.py:276 msgid "French" msgstr "" -#: InvenTree/settings.py:273 +#: InvenTree/settings.py:277 msgid "Polish" msgstr "" -#: InvenTree/status_codes.py:84 InvenTree/status_codes.py:172 +#: InvenTree/status_codes.py:90 InvenTree/status_codes.py:131 +#: InvenTree/status_codes.py:213 msgid "Pending" msgstr "" -#: InvenTree/status_codes.py:85 +#: InvenTree/status_codes.py:91 msgid "Placed" msgstr "" -#: InvenTree/status_codes.py:86 InvenTree/status_codes.py:175 +#: InvenTree/status_codes.py:92 InvenTree/status_codes.py:216 msgid "Complete" msgstr "" -#: InvenTree/status_codes.py:87 InvenTree/status_codes.py:174 +#: InvenTree/status_codes.py:93 InvenTree/status_codes.py:133 +#: InvenTree/status_codes.py:215 msgid "Cancelled" msgstr "" -#: InvenTree/status_codes.py:88 InvenTree/status_codes.py:135 +#: InvenTree/status_codes.py:94 InvenTree/status_codes.py:134 +#: InvenTree/status_codes.py:169 msgid "Lost" msgstr "" -#: InvenTree/status_codes.py:89 InvenTree/status_codes.py:137 +#: InvenTree/status_codes.py:95 InvenTree/status_codes.py:135 +#: InvenTree/status_codes.py:170 msgid "Returned" msgstr "" -#: InvenTree/status_codes.py:131 -msgid "OK" -msgstr "" - -#: InvenTree/status_codes.py:132 -msgid "Attention needed" -msgstr "" - -#: InvenTree/status_codes.py:133 -msgid "Damaged" -msgstr "" - -#: InvenTree/status_codes.py:134 -msgid "Destroyed" -msgstr "" - -#: InvenTree/status_codes.py:136 +#: InvenTree/status_codes.py:132 InvenTree/status_codes.py:171 +#: order/templates/order/sales_order_base.html:98 msgid "Shipped" msgstr "" -#: InvenTree/status_codes.py:173 build/templates/build/allocate_edit.html:28 -#: build/templates/build/allocate_view.html:21 +#: InvenTree/status_codes.py:165 +msgid "OK" +msgstr "" + +#: InvenTree/status_codes.py:166 +msgid "Attention needed" +msgstr "" + +#: InvenTree/status_codes.py:167 +msgid "Damaged" +msgstr "" + +#: InvenTree/status_codes.py:168 +msgid "Destroyed" +msgstr "" + +#: InvenTree/status_codes.py:172 +msgid "Used for Build" +msgstr "" + +#: InvenTree/status_codes.py:173 +msgid "Installed in Stock Item" +msgstr "" + +#: InvenTree/status_codes.py:214 build/templates/build/allocate.html:349 +#: order/templates/order/sales_order_detail.html:220 #: part/templates/part/part_base.html:114 part/templates/part/tabs.html:21 msgid "Allocated" msgstr "" @@ -173,191 +186,347 @@ msgstr "" msgid "Database Statistics" msgstr "" -#: build/forms.py:35 +#: build/forms.py:37 msgid "Confirm" msgstr "" -#: build/forms.py:52 stock/forms.py:34 +#: build/forms.py:54 stock/forms.py:34 msgid "Enter unique serial numbers (or leave blank)" msgstr "" -#: build/forms.py:54 +#: build/forms.py:56 msgid "Confirm build completion" msgstr "" -#: build/models.py:54 +#: build/models.py:57 build/templates/build/build_base.html:65 +msgid "Build Title" +msgstr "" + +#: build/models.py:60 msgid "Brief description of the build" msgstr "" -#: build/models.py:64 +#: build/models.py:68 build/templates/build/build_base.html:86 +msgid "Parent Build" +msgstr "" + +#: build/models.py:69 +msgid "Parent build to which this build is allocated" +msgstr "" + +#: build/models.py:74 build/templates/build/allocate.html:320 +#: build/templates/build/auto_allocate.html:18 +#: build/templates/build/build_base.html:70 +#: build/templates/build/detail.html:22 order/models.py:462 +#: order/templates/order/order_wizard/select_parts.html:30 +#: order/templates/order/purchase_order_detail.html:145 +#: part/templates/part/part_app_base.html:7 +#: part/templates/part/set_category.html:13 +msgid "Part" +msgstr "" + +#: build/models.py:83 msgid "Select part to build" msgstr "" -#: build/models.py:70 +#: build/models.py:88 +msgid "Sales Order Reference" +msgstr "" + +#: build/models.py:92 +msgid "SalesOrder to which this build is allocated" +msgstr "" + +#: build/models.py:97 +msgid "Source Location" +msgstr "" + +#: build/models.py:101 msgid "" "Select location to take stock from for this build (leave blank to take from " "any stock location)" msgstr "" -#: build/models.py:76 +#: build/models.py:105 +msgid "Build Quantity" +msgstr "" + +#: build/models.py:108 msgid "Number of parts to build" msgstr "" -#: build/models.py:82 templates/table_filters.html:47 -msgid "Build status" +#: build/models.py:112 part/templates/part/part_base.html:131 +msgid "Build Status" msgstr "" -#: build/models.py:85 +#: build/models.py:116 +msgid "Build status code" +msgstr "" + +#: build/models.py:120 stock/models.py:374 +msgid "Batch Code" +msgstr "" + +#: build/models.py:124 msgid "Batch code for this build output" msgstr "" -#: build/models.py:97 stock/models.py:336 +#: build/models.py:139 build/templates/build/detail.html:55 +#: company/templates/company/supplier_part_base.html:57 +#: company/templates/company/supplier_part_detail.html:24 +#: part/templates/part/detail.html:67 part/templates/part/part_base.html:85 +#: stock/models.py:368 stock/templates/stock/item_base.html:190 +msgid "External Link" +msgstr "" + +#: build/models.py:140 stock/models.py:370 msgid "Link to external URL" msgstr "" -#: build/models.py:99 +#: build/models.py:144 build/templates/build/tabs.html:14 company/models.py:302 +#: company/templates/company/tabs.html:26 order/templates/order/po_tabs.html:15 +#: order/templates/order/purchase_order_detail.html:200 +#: order/templates/order/so_tabs.html:23 part/templates/part/tabs.html:63 +#: stock/models.py:436 stock/templates/stock/tabs.html:17 +msgid "Notes" +msgstr "" + +#: build/models.py:145 msgid "Extra build notes" msgstr "" -#: build/models.py:388 +#: build/models.py:451 #, python-brace-format msgid "Selected stock item not found in BOM for part '{p}'" msgstr "" -#: build/models.py:391 +#: build/models.py:454 #, python-brace-format msgid "Allocated quantity ({n}) must not exceed available quantity ({q})" msgstr "" -#: build/models.py:397 order/models.py:448 +#: build/models.py:460 order/models.py:546 msgid "StockItem is over-allocated" msgstr "" -#: build/models.py:400 order/models.py:451 +#: build/models.py:463 order/models.py:549 msgid "Allocation quantity must be greater than zero" msgstr "" -#: build/models.py:403 +#: build/models.py:466 msgid "Quantity must be 1 for serialized stock" msgstr "" -#: build/models.py:418 +#: build/models.py:496 msgid "Build to allocate parts" msgstr "" -#: build/models.py:425 +#: build/models.py:503 msgid "Stock Item to allocate to build" msgstr "" -#: build/models.py:433 +#: build/models.py:516 msgid "Stock quantity to allocate to build" msgstr "" -#: build/templates/build/allocate_edit.html:5 -msgid "Allocate Stock to Build" -msgstr "" - -#: build/templates/build/allocate_edit.html:10 -msgid "Auto Allocate" -msgstr "" - -#: build/templates/build/allocate_edit.html:11 -msgid "Unallocate" -msgstr "" - -#: build/templates/build/allocate_edit.html:19 -#: build/templates/build/allocate_view.html:17 -#: build/templates/build/detail.html:22 order/models.py:385 -#: order/templates/order/order_wizard/select_parts.html:30 -#: order/templates/order/purchase_order_detail.html:26 -#: part/templates/part/part_app_base.html:7 -msgid "Part" -msgstr "" - -#: build/templates/build/allocate_edit.html:22 -#: build/templates/build/allocate_view.html:19 -msgid "Available" -msgstr "" - -#: build/templates/build/allocate_edit.html:25 -#: build/templates/build/allocate_view.html:20 -msgid "Required" -msgstr "" - -#: build/templates/build/allocate_view.html:4 -msgid "Required Parts" -msgstr "" - -#: build/templates/build/allocate_view.html:9 -msgid "Allocate" -msgstr "" - -#: build/templates/build/allocate_view.html:10 -#: company/templates/company/detail_part.html:18 order/views.py:671 +#: build/templates/build/allocate.html:17 +#: company/templates/company/detail_part.html:18 order/views.py:743 msgid "Order Parts" msgstr "" -#: build/templates/build/allocate_view.html:18 -#: company/templates/company/supplier_part_base.html:50 -#: company/templates/company/supplier_part_detail.html:27 -#: order/templates/order/purchase_order_detail.html:27 -#: part/templates/part/detail.html:38 -msgid "Description" +#: build/templates/build/allocate.html:18 +msgid "Automatically allocate stock" msgstr "" -#: build/templates/build/allocate_view.html:22 -#: part/templates/part/part_base.html:121 -msgid "On Order" +#: build/templates/build/allocate.html:18 +msgid "Auto Allocate" msgstr "" -#: build/templates/build/build_base.html:8 -#: build/templates/build/build_base.html:21 part/templates/part/tabs.html:28 -#: stock/templates/stock/item_base.html:159 templates/navbar.html:12 -msgid "Build" +#: build/templates/build/allocate.html:19 +msgid "Unallocate" msgstr "" -#: build/templates/build/build_base.html:48 build/templates/build/detail.html:9 -msgid "Build Details" +#: build/templates/build/allocate.html:78 templates/stock_table.html:8 +msgid "New Stock Item" msgstr "" -#: build/templates/build/build_base.html:52 -msgid "Build Title" +#: build/templates/build/allocate.html:161 +#: order/templates/order/sales_order_detail.html:68 +#: order/templates/order/sales_order_detail.html:150 stock/models.py:362 +#: stock/templates/stock/item_base.html:149 +msgid "Serial Number" msgstr "" -#: build/templates/build/build_base.html:62 +#: build/templates/build/allocate.html:163 +#: build/templates/build/auto_allocate.html:19 +#: build/templates/build/build_base.html:75 #: build/templates/build/detail.html:27 #: company/templates/company/supplier_part_pricing.html:27 #: order/templates/order/order_wizard/select_parts.html:32 -#: order/templates/order/purchase_order_detail.html:30 +#: order/templates/order/purchase_order_detail.html:175 +#: order/templates/order/sales_order_detail.html:70 +#: order/templates/order/sales_order_detail.html:152 #: stock/templates/stock/item_base.html:20 #: stock/templates/stock/item_base.html:26 -#: stock/templates/stock/item_base.html:145 +#: stock/templates/stock/item_base.html:155 #: stock/templates/stock/stock_adjust.html:18 msgid "Quantity" msgstr "" -#: build/templates/build/build_base.html:67 -#: build/templates/build/detail.html:42 -#: stock/templates/stock/item_base.html:212 -msgid "Status" +#: build/templates/build/allocate.html:177 +#: build/templates/build/auto_allocate.html:20 +#: stock/templates/stock/item_base.html:135 +#: stock/templates/stock/stock_adjust.html:17 +msgid "Location" msgstr "" -#: build/templates/build/build_base.html:72 -msgid "BOM Price" +#: build/templates/build/allocate.html:201 +#: order/templates/order/sales_order_detail.html:92 +msgid "Edit stock allocation" msgstr "" -#: build/templates/build/build_base.html:77 -msgid "BOM pricing is incomplete" +#: build/templates/build/allocate.html:202 +#: order/templates/order/sales_order_detail.html:93 +msgid "Delete stock allocation" +msgstr "" + +#: build/templates/build/allocate.html:229 +msgid "No BOM items found" +msgstr "" + +#: build/templates/build/allocate.html:328 +#: company/templates/company/supplier_part_base.html:50 +#: company/templates/company/supplier_part_detail.html:27 +#: order/templates/order/purchase_order_detail.html:157 +#: part/templates/part/detail.html:38 part/templates/part/set_category.html:14 +msgid "Description" +msgstr "" + +#: build/templates/build/allocate.html:333 +#: order/templates/order/purchase_order_detail.html:170 +msgid "Reference" +msgstr "" + +#: build/templates/build/allocate.html:338 +msgid "Required" +msgstr "" + +#: build/templates/build/allocate.html:347 +msgid "Assigned" +msgstr "" + +#: build/templates/build/allocate.html:385 +#: order/templates/order/sales_order_detail.html:270 +msgid "Buy parts" +msgstr "" + +#: build/templates/build/allocate.html:389 +#: order/templates/order/sales_order_detail.html:274 +msgid "Build parts" +msgstr "" + +#: build/templates/build/allocate.html:392 +msgid "Allocate stock" +msgstr "" + +#: build/templates/build/auto_allocate.html:8 +msgid "Automatically Allocate Stock" +msgstr "" + +#: build/templates/build/auto_allocate.html:9 +msgid "" +"Stock Items are selected for automatic allocation if there is only a single " +"stock item available." +msgstr "" + +#: build/templates/build/auto_allocate.html:10 +msgid "The following stock items will be allocated to the build:" +msgstr "" + +#: build/templates/build/auto_allocate.html:39 +msgid "No stock items found that can be allocated to this build" +msgstr "" + +#: build/templates/build/build_base.html:8 +#: build/templates/build/build_base.html:34 +#: build/templates/build/complete.html:6 +#: stock/templates/stock/item_base.html:169 templates/navbar.html:12 +msgid "Build" +msgstr "" + +#: build/templates/build/build_base.html:14 +msgid "This build is allocated to Sales Order" +msgstr "" + +#: build/templates/build/build_base.html:19 +msgid "This build is a child of Build" +msgstr "" + +#: build/templates/build/build_base.html:61 build/templates/build/detail.html:9 +msgid "Build Details" msgstr "" #: build/templates/build/build_base.html:80 +#: build/templates/build/detail.html:42 +#: stock/templates/stock/item_base.html:222 +msgid "Status" +msgstr "" + +#: build/templates/build/build_base.html:93 order/models.py:460 +#: order/templates/order/sales_order_base.html:9 +#: order/templates/order/sales_order_base.html:33 +#: order/templates/order/sales_order_notes.html:10 +#: order/templates/order/sales_order_ship.html:25 +#: stock/templates/stock/item_base.html:123 +msgid "Sales Order" +msgstr "" + +#: build/templates/build/build_base.html:99 +msgid "BOM Price" +msgstr "" + +#: build/templates/build/build_base.html:104 +msgid "BOM pricing is incomplete" +msgstr "" + +#: build/templates/build/build_base.html:107 msgid "No pricing information" msgstr "" -#: build/templates/build/build_output.html:9 +#: build/templates/build/build_output.html:9 build/templates/build/tabs.html:11 msgid "Build Outputs" msgstr "" +#: build/templates/build/complete.html:10 +msgid "Build order allocation is complete" +msgstr "" + +#: build/templates/build/complete.html:14 +msgid "Warning: Build order allocation is not complete" +msgstr "" + +#: build/templates/build/complete.html:15 +msgid "" +"Build Order has not been fully allocated. Ensure that all Stock Items have " +"been allocated to the Build" +msgstr "" + +#: build/templates/build/complete.html:20 +msgid "The following actions will be performed:" +msgstr "" + +#: build/templates/build/complete.html:22 +msgid "Remove allocated items from stock" +msgstr "" + +#: build/templates/build/complete.html:23 +msgid "Add completed items to stock" +msgstr "" + +#: build/templates/build/complete.html:29 +msgid "The following items will be created" +msgstr "" + #: build/templates/build/delete_build_item.html:6 msgid "Are you sure you want to unallocate these parts?" msgstr "" @@ -375,21 +544,13 @@ msgid "Stock can be taken from any available location." msgstr "" #: build/templates/build/detail.html:48 -#: stock/templates/stock/item_base.html:152 +#: stock/templates/stock/item_base.html:162 msgid "Batch" msgstr "" -#: build/templates/build/detail.html:55 -#: company/templates/company/supplier_part_base.html:57 -#: company/templates/company/supplier_part_detail.html:24 -#: part/templates/part/detail.html:67 part/templates/part/part_base.html:85 -#: stock/templates/stock/item_base.html:180 -msgid "External Link" -msgstr "" - #: build/templates/build/detail.html:61 #: order/templates/order/order_base.html:93 -#: order/templates/order/sales_order_base.html:82 +#: order/templates/order/sales_order_base.html:92 msgid "Created" msgstr "" @@ -433,18 +594,7 @@ msgid "Details" msgstr "" #: build/templates/build/tabs.html:8 -msgid "Outputs" -msgstr "" - -#: build/templates/build/tabs.html:11 company/models.py:302 -#: company/templates/company/tabs.html:26 order/templates/order/po_tabs.html:15 -#: order/templates/order/so_tabs.html:15 part/templates/part/tabs.html:63 -#: stock/templates/stock/tabs.html:17 -msgid "Notes" -msgstr "" - -#: build/templates/build/tabs.html:14 -msgid "Assign Parts" +msgid "Allocated Parts" msgstr "" #: build/templates/build/unallocate.html:8 @@ -479,7 +629,7 @@ msgstr "" msgid "Check the confirmation box at the bottom of the list" msgstr "" -#: build/views.py:148 build/views.py:442 +#: build/views.py:148 build/views.py:446 msgid "Unallocate Stock" msgstr "" @@ -503,48 +653,48 @@ msgstr "" msgid "Invalid location selected" msgstr "" -#: build/views.py:290 stock/views.py:916 +#: build/views.py:290 stock/views.py:917 #, python-brace-format msgid "The following serial numbers already exist: ({sn})" msgstr "" -#: build/views.py:309 +#: build/views.py:311 msgid "Build marked as COMPLETE" msgstr "" -#: build/views.py:385 +#: build/views.py:387 msgid "Start new Build" msgstr "" -#: build/views.py:408 +#: build/views.py:412 msgid "Created new build" msgstr "" -#: build/views.py:418 +#: build/views.py:422 msgid "Edit Build Details" msgstr "" -#: build/views.py:423 +#: build/views.py:427 msgid "Edited build" msgstr "" -#: build/views.py:432 +#: build/views.py:436 msgid "Delete Build" msgstr "" -#: build/views.py:447 +#: build/views.py:451 msgid "Removed parts from build allocation" msgstr "" -#: build/views.py:457 +#: build/views.py:461 msgid "Allocate new Part" msgstr "" -#: build/views.py:573 +#: build/views.py:614 msgid "Edit Stock Allocation" msgstr "" -#: build/views.py:577 +#: build/views.py:618 msgid "Updated Build Item" msgstr "" @@ -714,16 +864,15 @@ msgstr "" #: company/templates/company/detail.html:21 #: company/templates/company/supplier_part_base.html:63 -#: company/templates/company/supplier_part_detail.html:21 order/models.py:138 +#: company/templates/company/supplier_part_detail.html:21 order/models.py:111 #: order/templates/order/order_base.html:74 #: order/templates/order/order_wizard/select_pos.html:30 -#: stock/templates/stock/item_base.html:187 +#: stock/templates/stock/item_base.html:197 msgid "Supplier" msgstr "" #: company/templates/company/detail.html:26 order/models.py:275 -#: order/templates/order/sales_order_base.html:63 -#: stock/templates/stock/item_base.html:173 +#: order/templates/order/sales_order_base.html:73 msgid "Customer" msgstr "" @@ -732,7 +881,8 @@ msgid "Supplier Parts" msgstr "" #: company/templates/company/detail_part.html:13 -#: part/templates/part/stock.html:81 +#: order/templates/order/purchase_order_detail.html:67 +#: part/templates/part/stock.html:82 msgid "New Supplier Part" msgstr "" @@ -745,7 +895,7 @@ msgid "Delete Parts" msgstr "" #: company/templates/company/detail_part.html:43 -#: part/templates/part/stock.html:75 +#: part/templates/part/stock.html:76 msgid "New Part" msgstr "" @@ -753,19 +903,19 @@ msgstr "" msgid "Create new Part" msgstr "" -#: company/templates/company/detail_part.html:49 company/views.py:52 +#: company/templates/company/detail_part.html:49 company/views.py:51 msgid "New Supplier" msgstr "" -#: company/templates/company/detail_part.html:50 company/views.py:184 +#: company/templates/company/detail_part.html:50 company/views.py:182 msgid "Create new Supplier" msgstr "" -#: company/templates/company/detail_part.html:55 company/views.py:58 +#: company/templates/company/detail_part.html:55 company/views.py:57 msgid "New Manufacturer" msgstr "" -#: company/templates/company/detail_part.html:56 company/views.py:187 +#: company/templates/company/detail_part.html:56 company/views.py:185 msgid "Create new Manufacturer" msgstr "" @@ -775,7 +925,7 @@ msgstr "" #: company/templates/company/detail_stock.html:34 #: company/templates/company/supplier_part_stock.html:38 -#: part/templates/part/stock.html:53 templates/stock_table.html:5 +#: part/templates/part/stock.html:54 templates/stock_table.html:5 msgid "Export" msgstr "" @@ -831,11 +981,19 @@ msgid "New Sales Order" msgstr "" #: company/templates/company/supplier_part_base.html:6 -#: company/templates/company/supplier_part_base.html:19 -#: stock/templates/stock/item_base.html:192 +#: company/templates/company/supplier_part_base.html:19 stock/models.py:341 +#: stock/templates/stock/item_base.html:202 msgid "Supplier Part" msgstr "" +#: company/templates/company/supplier_part_base.html:23 +msgid "Edit supplier part" +msgstr "" + +#: company/templates/company/supplier_part_base.html:26 +msgid "Delete supplier part" +msgstr "" + #: company/templates/company/supplier_part_base.html:35 #: company/templates/company/supplier_part_detail.html:11 msgid "Supplier Part Details" @@ -858,7 +1016,6 @@ msgstr "" #: company/templates/company/supplier_part_base.html:84 #: company/templates/company/supplier_part_detail.html:34 -#: order/templates/order/purchase_order_detail.html:34 msgid "Note" msgstr "" @@ -899,12 +1056,14 @@ msgid "Supplier Part Stock" msgstr "" #: company/templates/company/supplier_part_stock.html:61 -#: part/templates/part/stock.html:90 +#: order/templates/order/purchase_order_detail.html:38 +#: order/templates/order/purchase_order_detail.html:118 +#: part/templates/part/stock.html:91 msgid "New Location" msgstr "" #: company/templates/company/supplier_part_stock.html:62 -#: part/templates/part/stock.html:91 +#: part/templates/part/stock.html:92 msgid "Create New Location" msgstr "" @@ -914,7 +1073,7 @@ msgstr "" #: company/templates/company/supplier_part_tabs.html:8 #: company/templates/company/tabs.html:12 part/templates/part/tabs.html:17 -#: templates/navbar.html:11 +#: stock/templates/stock/location.html:12 templates/navbar.html:11 msgid "Stock" msgstr "" @@ -927,88 +1086,88 @@ msgstr "" msgid "Parts" msgstr "" -#: company/views.py:51 part/templates/part/tabs.html:37 +#: company/views.py:50 part/templates/part/tabs.html:37 #: templates/navbar.html:16 msgid "Suppliers" msgstr "" -#: company/views.py:57 templates/navbar.html:17 +#: company/views.py:56 templates/navbar.html:17 msgid "Manufacturers" msgstr "" -#: company/views.py:63 templates/navbar.html:24 +#: company/views.py:62 templates/navbar.html:24 msgid "Customers" msgstr "" -#: company/views.py:64 +#: company/views.py:63 msgid "New Customer" msgstr "" -#: company/views.py:71 +#: company/views.py:70 msgid "Companies" msgstr "" -#: company/views.py:72 +#: company/views.py:71 msgid "New Company" msgstr "" -#: company/views.py:149 +#: company/views.py:147 msgid "Update Company Image" msgstr "" -#: company/views.py:154 +#: company/views.py:152 msgid "Updated company image" msgstr "" -#: company/views.py:164 +#: company/views.py:162 msgid "Edit Company" msgstr "" -#: company/views.py:168 +#: company/views.py:166 msgid "Edited company information" msgstr "" -#: company/views.py:190 +#: company/views.py:188 msgid "Create new Customer" msgstr "" -#: company/views.py:192 +#: company/views.py:190 msgid "Create new Company" msgstr "" -#: company/views.py:219 +#: company/views.py:217 msgid "Created new company" msgstr "" -#: company/views.py:229 +#: company/views.py:227 msgid "Delete Company" msgstr "" -#: company/views.py:234 +#: company/views.py:232 msgid "Company was deleted" msgstr "" -#: company/views.py:259 +#: company/views.py:256 msgid "Edit Supplier Part" msgstr "" -#: company/views.py:268 part/templates/part/stock.html:82 +#: company/views.py:265 part/templates/part/stock.html:83 msgid "Create new Supplier Part" msgstr "" -#: company/views.py:328 +#: company/views.py:325 msgid "Delete Supplier Part" msgstr "" -#: company/views.py:398 +#: company/views.py:395 msgid "Add Price Break" msgstr "" -#: company/views.py:440 +#: company/views.py:437 msgid "Edit Price Break" msgstr "" -#: company/views.py:455 +#: company/views.py:452 msgid "Delete Price Break" msgstr "" @@ -1020,11 +1179,16 @@ msgstr "" msgid "Mark order as complete" msgstr "" -#: order/forms.py:46 +#: order/forms.py:46 order/forms.py:57 +#: order/templates/order/sales_order_base.html:49 msgid "Cancel order" msgstr "" -#: order/forms.py:57 +#: order/forms.py:68 order/templates/order/sales_order_base.html:46 +msgid "Ship order" +msgstr "" + +#: order/forms.py:79 msgid "Receive parts to this location" msgstr "" @@ -1040,20 +1204,20 @@ msgstr "" msgid "Link to external page" msgstr "" -#: order/models.py:92 +#: order/models.py:85 msgid "Order notes" msgstr "" -#: order/models.py:141 +#: order/models.py:114 msgid "Supplier order reference code" msgstr "" -#: order/models.py:171 order/models.py:222 part/views.py:1119 -#: stock/models.py:519 +#: order/models.py:148 order/models.py:222 part/views.py:1113 +#: stock/models.py:604 msgid "Quantity must be greater than zero" msgstr "" -#: order/models.py:176 +#: order/models.py:153 msgid "Part supplier must match PO supplier" msgstr "" @@ -1061,63 +1225,61 @@ msgstr "" msgid "Lines can only be received against an order marked as 'Placed'" msgstr "" -#: order/models.py:278 +#: order/models.py:281 msgid "Customer order reference code" msgstr "" -#: order/models.py:324 +#: order/models.py:320 +msgid "SalesOrder cannot be shipped as it is not currently pending" +msgstr "" + +#: order/models.py:397 msgid "Item quantity" msgstr "" -#: order/models.py:326 +#: order/models.py:399 msgid "Line item reference" msgstr "" -#: order/models.py:328 +#: order/models.py:401 msgid "Line item notes" msgstr "" -#: order/models.py:354 order/templates/order/order_base.html:9 +#: order/models.py:427 order/templates/order/order_base.html:9 #: order/templates/order/order_base.html:23 -#: stock/templates/stock/item_base.html:166 +#: stock/templates/stock/item_base.html:176 msgid "Purchase Order" msgstr "" -#: order/models.py:363 +#: order/models.py:440 msgid "Supplier part" msgstr "" -#: order/models.py:366 +#: order/models.py:443 msgid "Number of items received" msgstr "" -#: order/models.py:383 order/templates/order/sales_order_base.html:9 -#: order/templates/order/sales_order_base.html:31 -#: order/templates/order/sales_order_notes.html:10 -msgid "Sales Order" -msgstr "" - -#: order/models.py:440 +#: order/models.py:537 msgid "Cannot allocate stock item to a line with a different part" msgstr "" -#: order/models.py:442 +#: order/models.py:539 msgid "Cannot allocate stock to a line without a part" msgstr "" -#: order/models.py:445 +#: order/models.py:542 msgid "Allocation quantity cannot exceed stock quantity" msgstr "" -#: order/models.py:454 +#: order/models.py:552 msgid "Quantity must be 1 for serialized stock item" msgstr "" -#: order/models.py:466 +#: order/models.py:569 msgid "Select stock item to allocate" msgstr "" -#: order/models.py:469 +#: order/models.py:572 msgid "Enter stock allocation quantity" msgstr "" @@ -1131,12 +1293,12 @@ msgid "Purchase Order Details" msgstr "" #: order/templates/order/order_base.html:64 -#: order/templates/order/sales_order_base.html:53 +#: order/templates/order/sales_order_base.html:63 msgid "Order Reference" msgstr "" #: order/templates/order/order_base.html:69 -#: order/templates/order/sales_order_base.html:58 +#: order/templates/order/sales_order_base.html:68 msgid "Order Status" msgstr "" @@ -1145,16 +1307,20 @@ msgid "Supplier Reference" msgstr "" #: order/templates/order/order_base.html:99 -#: order/templates/order/sales_order_base.html:88 msgid "Issued" msgstr "" #: order/templates/order/order_base.html:106 -#: order/templates/order/purchase_order_detail.html:32 -#: order/templates/order/sales_order_base.html:95 +#: order/templates/order/purchase_order_detail.html:180 +#: order/templates/order/sales_order_base.html:105 msgid "Received" msgstr "" +#: order/templates/order/order_cancel.html:7 +#: order/templates/order/sales_order_cancel.html:9 +msgid "Cancelling this order means that the order will no longer be editable." +msgstr "" + #: order/templates/order/order_notes.html:13 #: order/templates/order/order_notes.html:29 #: order/templates/order/sales_order_notes.html:18 @@ -1191,7 +1357,7 @@ msgid "Select existing purchase orders, or create new orders." msgstr "" #: order/templates/order/order_wizard/select_pos.html:31 -#: order/templates/order/po_tabs.html:5 order/templates/order/so_tabs.html:5 +#: order/templates/order/po_tabs.html:5 msgid "Items" msgstr "" @@ -1227,7 +1393,7 @@ msgstr "" #: order/templates/order/po_attachments.html:36 #: order/templates/order/so_attachments.html:36 -#: part/templates/part/attachments.html:34 part/views.py:119 +#: part/templates/part/attachments.html:34 part/views.py:118 msgid "Edit attachment" msgstr "" @@ -1237,14 +1403,14 @@ msgstr "" msgid "Delete attachment" msgstr "" -#: order/templates/order/po_tabs.html:8 order/templates/order/so_tabs.html:8 +#: order/templates/order/po_tabs.html:8 order/templates/order/so_tabs.html:16 #: part/templates/part/tabs.html:60 msgid "Attachments" msgstr "" #: order/templates/order/purchase_order_detail.html:16 -#: order/templates/order/sales_order_detail.html:17 order/views.py:970 -#: order/views.py:1084 +#: order/templates/order/sales_order_detail.html:17 order/views.py:1042 +#: order/views.py:1156 msgid "Add Line Item" msgstr "" @@ -1252,191 +1418,258 @@ msgstr "" msgid "Purchase Order Items" msgstr "" -#: order/templates/order/purchase_order_detail.html:25 -msgid "Line" +#: order/templates/order/purchase_order_detail.html:39 +#: order/templates/order/purchase_order_detail.html:119 +#: stock/templates/stock/location.html:17 +msgid "Create new stock location" msgstr "" -#: order/templates/order/purchase_order_detail.html:28 +#: order/templates/order/purchase_order_detail.html:68 +msgid "Create new supplier part" +msgstr "" + +#: order/templates/order/purchase_order_detail.html:130 +msgid "No line items found" +msgstr "" + +#: order/templates/order/purchase_order_detail.html:162 msgid "Order Code" msgstr "" -#: order/templates/order/purchase_order_detail.html:29 -msgid "Reference" +#: order/templates/order/purchase_order_detail.html:211 +#: order/templates/order/sales_order_detail.html:280 +msgid "Edit line item" +msgstr "" + +#: order/templates/order/purchase_order_detail.html:212 +msgid "Delete line item" +msgstr "" + +#: order/templates/order/purchase_order_detail.html:217 +msgid "Receive line item" msgstr "" #: order/templates/order/sales_order_base.html:15 msgid "This SalesOrder has not been fully allocated" msgstr "" -#: order/templates/order/sales_order_base.html:40 +#: order/templates/order/sales_order_base.html:42 msgid "Packing List" msgstr "" -#: order/templates/order/sales_order_base.html:48 +#: order/templates/order/sales_order_base.html:58 msgid "Sales Order Details" msgstr "" -#: order/templates/order/sales_order_base.html:69 +#: order/templates/order/sales_order_base.html:79 msgid "Customer Reference" msgstr "" +#: order/templates/order/sales_order_cancel.html:8 +#: order/templates/order/sales_order_ship.html:9 +msgid "Warning" +msgstr "" + #: order/templates/order/sales_order_detail.html:14 msgid "Sales Order Items" msgstr "" -#: order/templates/order/sales_order_detail.html:90 -msgid "Edit stock allocation" +#: order/templates/order/sales_order_detail.html:222 +msgid "Fulfilled" msgstr "" -#: order/templates/order/sales_order_detail.html:91 -msgid "Delete stock allocation" -msgstr "" - -#: order/templates/order/sales_order_detail.html:178 -msgid "Buy parts" -msgstr "" - -#: order/templates/order/sales_order_detail.html:182 -msgid "Build parts" -msgstr "" - -#: order/templates/order/sales_order_detail.html:185 +#: order/templates/order/sales_order_detail.html:277 msgid "Allocate parts" msgstr "" -#: order/templates/order/sales_order_detail.html:189 -msgid "Edit line item" +#: order/templates/order/sales_order_detail.html:281 +msgid "Delete line item " msgstr "" -#: order/templates/order/sales_order_detail.html:190 -msgid "Delete line item " +#: order/templates/order/sales_order_ship.html:10 +msgid "" +"This order has not been fully allocated. If the order is marked as shipped, " +"it can no longer be adjusted." +msgstr "" + +#: order/templates/order/sales_order_ship.html:12 +msgid "Ensure that the order allocation is correct before shipping the order." +msgstr "" + +#: order/templates/order/sales_order_ship.html:18 +msgid "Some line items in this order have been over-allocated" +msgstr "" + +#: order/templates/order/sales_order_ship.html:20 +msgid "Ensure that this is correct before shipping the order." +msgstr "" + +#: order/templates/order/sales_order_ship.html:27 +msgid "Shipping this order means that the order will no longer be editable." +msgstr "" + +#: order/templates/order/so_allocation_delete.html:7 +msgid "This action will unallocate the following stock from the Sales Order" msgstr "" #: order/templates/order/so_attachments.html:11 msgid "Sales Order Attachments" msgstr "" -#: order/views.py:97 +#: order/templates/order/so_builds.html:11 order/templates/order/so_tabs.html:9 +#: part/templates/part/tabs.html:28 +msgid "Build Orders" +msgstr "" + +#: order/templates/order/so_lineitem_delete.html:5 +msgid "Are you sure you wish to delete this line item?" +msgstr "" + +#: order/templates/order/so_tabs.html:5 +msgid "Order Items" +msgstr "" + +#: order/views.py:93 msgid "Add Purchase Order Attachment" msgstr "" -#: order/views.py:102 order/views.py:142 part/views.py:80 +#: order/views.py:98 order/views.py:138 part/views.py:79 msgid "Added attachment" msgstr "" -#: order/views.py:138 +#: order/views.py:134 msgid "Add Sales Order Attachment" msgstr "" -#: order/views.py:166 order/views.py:187 +#: order/views.py:162 order/views.py:183 msgid "Edit Attachment" msgstr "" -#: order/views.py:170 order/views.py:191 +#: order/views.py:166 order/views.py:187 msgid "Attachment updated" msgstr "" -#: order/views.py:206 order/views.py:220 +#: order/views.py:202 order/views.py:216 msgid "Delete Attachment" msgstr "" -#: order/views.py:212 order/views.py:226 +#: order/views.py:208 order/views.py:222 msgid "Deleted attachment" msgstr "" -#: order/views.py:277 +#: order/views.py:273 msgid "Create Purchase Order" msgstr "" -#: order/views.py:307 +#: order/views.py:303 msgid "Create Sales Order" msgstr "" -#: order/views.py:336 +#: order/views.py:332 msgid "Edit Purchase Order" msgstr "" -#: order/views.py:356 +#: order/views.py:352 msgid "Edit Sales Order" msgstr "" -#: order/views.py:372 +#: order/views.py:368 msgid "Cancel Order" msgstr "" -#: order/views.py:387 +#: order/views.py:383 order/views.py:415 msgid "Confirm order cancellation" msgstr "" -#: order/views.py:405 +#: order/views.py:401 +msgid "Cancel sales order" +msgstr "" + +#: order/views.py:421 +msgid "Could not cancel order" +msgstr "" + +#: order/views.py:435 msgid "Issue Order" msgstr "" -#: order/views.py:420 +#: order/views.py:450 msgid "Confirm order placement" msgstr "" -#: order/views.py:441 +#: order/views.py:471 msgid "Complete Order" msgstr "" -#: order/views.py:507 +#: order/views.py:506 +msgid "Ship Order" +msgstr "" + +#: order/views.py:522 +msgid "Confirm order shipment" +msgstr "" + +#: order/views.py:528 +msgid "Could not ship order" +msgstr "" + +#: order/views.py:579 msgid "Receive Parts" msgstr "" -#: order/views.py:574 +#: order/views.py:646 msgid "Items received" msgstr "" -#: order/views.py:588 +#: order/views.py:660 msgid "No destination set" msgstr "" -#: order/views.py:619 +#: order/views.py:691 msgid "Error converting quantity to number" msgstr "" -#: order/views.py:625 +#: order/views.py:697 msgid "Receive quantity less than zero" msgstr "" -#: order/views.py:631 +#: order/views.py:703 msgid "No lines specified" msgstr "" -#: order/views.py:990 +#: order/views.py:1062 msgid "Invalid Purchase Order" msgstr "" -#: order/views.py:998 +#: order/views.py:1070 msgid "Supplier must match for Part and Order" msgstr "" -#: order/views.py:1003 +#: order/views.py:1075 msgid "Invalid SupplierPart selection" msgstr "" -#: order/views.py:1123 order/views.py:1141 +#: order/views.py:1207 order/views.py:1225 msgid "Edit Line Item" msgstr "" -#: order/views.py:1157 order/views.py:1169 +#: order/views.py:1241 order/views.py:1253 msgid "Delete Line Item" msgstr "" -#: order/views.py:1162 order/views.py:1174 +#: order/views.py:1246 order/views.py:1258 msgid "Deleted line item" msgstr "" -#: order/views.py:1183 +#: order/views.py:1267 msgid "Allocate Stock to Order" msgstr "" -#: order/views.py:1252 +#: order/views.py:1336 msgid "Edit Allocation Quantity" msgstr "" -#: order/views.py:1267 +#: order/views.py:1351 msgid "Remove allocation" msgstr "" @@ -1497,171 +1730,171 @@ msgstr "" msgid "Select currency for price calculation" msgstr "" -#: part/models.py:61 +#: part/models.py:62 msgid "Default location for parts in this category" msgstr "" -#: part/models.py:64 +#: part/models.py:65 msgid "Default keywords for parts in this category" msgstr "" -#: part/models.py:338 +#: part/models.py:339 msgid "Part must be unique for name, IPN and revision" msgstr "" -#: part/models.py:352 +#: part/models.py:353 msgid "Part cannot be a template part if it is a variant of another part" msgstr "" -#: part/models.py:353 +#: part/models.py:354 msgid "Part cannot be a variant of another part if it is already a template" msgstr "" -#: part/models.py:357 part/templates/part/detail.html:19 +#: part/models.py:358 part/templates/part/detail.html:19 msgid "Part name" msgstr "" -#: part/models.py:361 +#: part/models.py:362 msgid "Is this part a template part?" msgstr "" -#: part/models.py:370 +#: part/models.py:371 msgid "Is this part a variant of another part?" msgstr "" -#: part/models.py:372 +#: part/models.py:373 msgid "Part description" msgstr "" -#: part/models.py:374 +#: part/models.py:375 msgid "Part keywords to improve visibility in search results" msgstr "" -#: part/models.py:379 +#: part/models.py:380 msgid "Part category" msgstr "" -#: part/models.py:381 +#: part/models.py:382 msgid "Internal Part Number" msgstr "" -#: part/models.py:383 +#: part/models.py:384 msgid "Part revision or version number" msgstr "" -#: part/models.py:385 +#: part/models.py:386 msgid "Link to extenal URL" msgstr "" -#: part/models.py:397 +#: part/models.py:398 msgid "Where is this item normally stored?" msgstr "" -#: part/models.py:441 +#: part/models.py:442 msgid "Default supplier part" msgstr "" -#: part/models.py:444 +#: part/models.py:445 msgid "Minimum allowed stock level" msgstr "" -#: part/models.py:446 +#: part/models.py:447 msgid "Stock keeping units for this part" msgstr "" -#: part/models.py:448 +#: part/models.py:449 msgid "Can this part be built from other parts?" msgstr "" -#: part/models.py:450 +#: part/models.py:451 msgid "Can this part be used to build other parts?" msgstr "" -#: part/models.py:452 +#: part/models.py:453 msgid "Does this part have tracking for unique items?" msgstr "" -#: part/models.py:454 +#: part/models.py:455 msgid "Can this part be purchased from external suppliers?" msgstr "" -#: part/models.py:456 +#: part/models.py:457 msgid "Can this part be sold to customers?" msgstr "" -#: part/models.py:458 +#: part/models.py:459 msgid "Is this part active?" msgstr "" -#: part/models.py:460 +#: part/models.py:461 msgid "Is this a virtual part, such as a software product or license?" msgstr "" -#: part/models.py:462 +#: part/models.py:463 msgid "Part notes - supports Markdown formatting" msgstr "" -#: part/models.py:464 +#: part/models.py:465 msgid "Stored BOM checksum" msgstr "" -#: part/models.py:1065 +#: part/models.py:1067 msgid "Parameter template name must be unique" msgstr "" -#: part/models.py:1070 +#: part/models.py:1072 msgid "Parameter Name" msgstr "" -#: part/models.py:1072 +#: part/models.py:1074 msgid "Parameter Units" msgstr "" -#: part/models.py:1098 +#: part/models.py:1100 msgid "Parent Part" msgstr "" -#: part/models.py:1100 +#: part/models.py:1102 msgid "Parameter Template" msgstr "" -#: part/models.py:1102 +#: part/models.py:1104 msgid "Parameter Value" msgstr "" -#: part/models.py:1126 +#: part/models.py:1128 msgid "Select parent part" msgstr "" -#: part/models.py:1135 +#: part/models.py:1137 msgid "Select part to be used in BOM" msgstr "" -#: part/models.py:1142 +#: part/models.py:1144 msgid "BOM quantity for this BOM item" msgstr "" -#: part/models.py:1145 +#: part/models.py:1147 msgid "Estimated build wastage quantity (absolute or percentage)" msgstr "" -#: part/models.py:1148 +#: part/models.py:1150 msgid "BOM item reference" msgstr "" -#: part/models.py:1151 +#: part/models.py:1153 msgid "BOM item notes" msgstr "" -#: part/models.py:1153 +#: part/models.py:1155 msgid "BOM line checksum" msgstr "" -#: part/models.py:1216 +#: part/models.py:1218 msgid "Part cannot be added to its own Bill of Materials" msgstr "" -#: part/models.py:1223 +#: part/models.py:1225 #, python-brace-format msgid "Part '{p1}' is used in BOM for '{p2}' (recursive)" msgstr "" @@ -1670,6 +1903,38 @@ msgstr "" msgid "Part Attachments" msgstr "" +#: part/templates/part/bom.html:13 +msgid "Bill of Materials" +msgstr "" + +#: part/templates/part/bom.html:37 +msgid "Remove selected BOM items" +msgstr "" + +#: part/templates/part/bom.html:38 +msgid "Import BOM data" +msgstr "" + +#: part/templates/part/bom.html:39 +msgid "New BOM Item" +msgstr "" + +#: part/templates/part/bom.html:40 +msgid "Finish Editing" +msgstr "" + +#: part/templates/part/bom.html:42 +msgid "Edit BOM" +msgstr "" + +#: part/templates/part/bom.html:44 +msgid "Validate Bill of Materials" +msgstr "" + +#: part/templates/part/bom.html:46 part/views.py:1358 +msgid "Export Bill of Materials" +msgstr "" + #: part/templates/part/category.html:13 part/templates/part/category.html:78 #: templates/stats.html:12 msgid "Part Categories" @@ -1723,7 +1988,7 @@ msgstr "" msgid "Variant Of" msgstr "" -#: part/templates/part/detail.html:57 +#: part/templates/part/detail.html:57 part/templates/part/set_category.html:15 msgid "Category" msgstr "" @@ -1731,7 +1996,7 @@ msgstr "" msgid "Default Supplier" msgstr "" -#: part/templates/part/detail.html:89 +#: part/templates/part/detail.html:89 part/templates/part/params.html:22 msgid "Units" msgstr "" @@ -1763,7 +2028,7 @@ msgstr "" msgid "Part is not a virtual part" msgstr "" -#: part/templates/part/detail.html:132 templates/table_filters.html:91 +#: part/templates/part/detail.html:132 templates/table_filters.html:99 msgid "Assembly" msgstr "" @@ -1775,7 +2040,7 @@ msgstr "" msgid "Part cannot be assembled from other parts" msgstr "" -#: part/templates/part/detail.html:141 templates/table_filters.html:95 +#: part/templates/part/detail.html:141 templates/table_filters.html:103 msgid "Component" msgstr "" @@ -1807,7 +2072,7 @@ msgstr "" msgid "Part can be purchased from external suppliers" msgstr "" -#: part/templates/part/detail.html:168 templates/table_filters.html:103 +#: part/templates/part/detail.html:168 templates/table_filters.html:111 msgid "Salable" msgstr "" @@ -1831,6 +2096,34 @@ msgstr "" msgid "Order Part" msgstr "" +#: part/templates/part/params.html:8 +msgid "Part Parameters" +msgstr "" + +#: part/templates/part/params.html:13 +msgid "Add new parameter" +msgstr "" + +#: part/templates/part/params.html:13 templates/InvenTree/settings/part.html:12 +msgid "New Parameter" +msgstr "" + +#: part/templates/part/params.html:20 +msgid "Name" +msgstr "" + +#: part/templates/part/params.html:21 +msgid "Value" +msgstr "" + +#: part/templates/part/params.html:33 +msgid "Edit" +msgstr "" + +#: part/templates/part/params.html:34 +msgid "Delete" +msgstr "" + #: part/templates/part/part_app_base.html:9 msgid "Part Category" msgstr "" @@ -1840,21 +2133,21 @@ msgid "Part List" msgstr "" #: part/templates/part/part_base.html:11 -msgid "This part is not active" -msgstr "" - -#: part/templates/part/part_base.html:16 msgid "This part is a template part." msgstr "" -#: part/templates/part/part_base.html:18 +#: part/templates/part/part_base.html:13 msgid "It is not a real part, but real parts can be based on this template." msgstr "" -#: part/templates/part/part_base.html:23 +#: part/templates/part/part_base.html:18 msgid "This part is a variant of" msgstr "" +#: part/templates/part/part_base.html:30 +msgid "Inactive" +msgstr "" + #: part/templates/part/part_base.html:38 msgid "Star this part" msgstr "" @@ -1871,8 +2164,8 @@ msgstr "" msgid "In Stock" msgstr "" -#: part/templates/part/part_base.html:131 -msgid "Build Status" +#: part/templates/part/part_base.html:121 +msgid "On Order" msgstr "" #: part/templates/part/part_base.html:136 @@ -1899,7 +2192,19 @@ msgstr "" msgid "New Order" msgstr "" -#: part/templates/part/stock.html:76 +#: part/templates/part/set_category.html:9 +msgid "Set category for the following parts" +msgstr "" + +#: part/templates/part/set_category.html:32 +msgid "Remove part" +msgstr "" + +#: part/templates/part/stock.html:8 +msgid "Part Stock" +msgstr "" + +#: part/templates/part/stock.html:77 msgid "Create New Part" msgstr "" @@ -1931,168 +2236,168 @@ msgstr "" msgid "Tracking" msgstr "" -#: part/views.py:75 +#: part/templates/part/track.html:8 +msgid "Part Tracking" +msgstr "" + +#: part/views.py:74 msgid "Add part attachment" msgstr "" -#: part/views.py:123 +#: part/views.py:122 msgid "Part attachment updated" msgstr "" -#: part/views.py:138 +#: part/views.py:137 msgid "Delete Part Attachment" msgstr "" -#: part/views.py:144 +#: part/views.py:143 msgid "Deleted part attachment" msgstr "" -#: part/views.py:152 +#: part/views.py:151 msgid "Set Part Category" msgstr "" -#: part/views.py:200 +#: part/views.py:199 #, python-brace-format msgid "Set category for {n} parts" msgstr "" -#: part/views.py:235 +#: part/views.py:234 msgid "Create Variant" msgstr "" -#: part/views.py:305 +#: part/views.py:304 msgid "Duplicate Part" msgstr "" -#: part/views.py:310 +#: part/views.py:309 msgid "Copied part" msgstr "" -#: part/views.py:421 +#: part/views.py:420 msgid "Create new part" msgstr "" -#: part/views.py:426 +#: part/views.py:425 msgid "Created new part" msgstr "" -#: part/views.py:605 +#: part/views.py:599 msgid "Part QR Code" msgstr "" -#: part/views.py:622 +#: part/views.py:616 msgid "Upload Part Image" msgstr "" -#: part/views.py:627 part/views.py:662 +#: part/views.py:621 part/views.py:656 msgid "Updated part image" msgstr "" -#: part/views.py:636 +#: part/views.py:630 msgid "Select Part Image" msgstr "" -#: part/views.py:665 +#: part/views.py:659 msgid "Part image not found" msgstr "" -#: part/views.py:676 +#: part/views.py:670 msgid "Edit Part Properties" msgstr "" -#: part/views.py:698 +#: part/views.py:692 msgid "Validate BOM" msgstr "" -#: part/views.py:860 +#: part/views.py:854 msgid "No BOM file provided" msgstr "" -#: part/views.py:1121 +#: part/views.py:1115 msgid "Enter a valid quantity" msgstr "" -#: part/views.py:1145 part/views.py:1148 +#: part/views.py:1139 part/views.py:1142 msgid "Select valid part" msgstr "" -#: part/views.py:1154 +#: part/views.py:1148 msgid "Duplicate part selected" msgstr "" -#: part/views.py:1182 +#: part/views.py:1176 msgid "Select a part" msgstr "" -#: part/views.py:1186 +#: part/views.py:1180 msgid "Specify quantity" msgstr "" -#: part/views.py:1364 -msgid "Export Bill of Materials" -msgstr "" - -#: part/views.py:1402 +#: part/views.py:1396 msgid "Confirm Part Deletion" msgstr "" -#: part/views.py:1409 +#: part/views.py:1403 msgid "Part was deleted" msgstr "" -#: part/views.py:1418 +#: part/views.py:1412 msgid "Part Pricing" msgstr "" -#: part/views.py:1540 +#: part/views.py:1534 msgid "Create Part Parameter Template" msgstr "" -#: part/views.py:1548 +#: part/views.py:1542 msgid "Edit Part Parameter Template" msgstr "" -#: part/views.py:1555 +#: part/views.py:1549 msgid "Delete Part Parameter Template" msgstr "" -#: part/views.py:1563 +#: part/views.py:1557 msgid "Create Part Parameter" msgstr "" -#: part/views.py:1613 +#: part/views.py:1607 msgid "Edit Part Parameter" msgstr "" -#: part/views.py:1627 +#: part/views.py:1621 msgid "Delete Part Parameter" msgstr "" -#: part/views.py:1643 +#: part/views.py:1637 msgid "Edit Part Category" msgstr "" -#: part/views.py:1678 +#: part/views.py:1672 msgid "Delete Part Category" msgstr "" -#: part/views.py:1684 +#: part/views.py:1678 msgid "Part category was deleted" msgstr "" -#: part/views.py:1692 +#: part/views.py:1686 msgid "Create new part category" msgstr "" -#: part/views.py:1743 +#: part/views.py:1737 msgid "Create BOM item" msgstr "" -#: part/views.py:1809 +#: part/views.py:1803 msgid "Edit BOM item" msgstr "" -#: part/views.py:1857 +#: part/views.py:1851 msgid "Confim BOM item deletion" msgstr "" @@ -2128,121 +2433,157 @@ msgstr "" msgid "Set the destination as the default location for selected parts" msgstr "" -#: stock/models.py:210 +#: stock/models.py:214 #, python-brace-format msgid "" "A stock item with this serial number already exists for template part {part}" msgstr "" -#: stock/models.py:215 +#: stock/models.py:219 msgid "A stock item with this serial number already exists" msgstr "" -#: stock/models.py:234 +#: stock/models.py:250 #, python-brace-format msgid "Part type ('{pf}') must be {pe}" msgstr "" -#: stock/models.py:244 stock/models.py:253 +#: stock/models.py:260 stock/models.py:269 msgid "Quantity must be 1 for item with a serial number" msgstr "" -#: stock/models.py:245 +#: stock/models.py:261 msgid "Serial number cannot be set if quantity greater than 1" msgstr "" -#: stock/models.py:261 +#: stock/models.py:277 msgid "Stock item cannot be created for a template Part" msgstr "" -#: stock/models.py:270 +#: stock/models.py:286 msgid "Item cannot belong to itself" msgstr "" -#: stock/models.py:311 -msgid "Base part" -msgstr "" - -#: stock/models.py:319 -msgid "Select a matching supplier part for this stock item" -msgstr "" - #: stock/models.py:323 -msgid "Where is this stock item located?" -msgstr "" - -#: stock/models.py:327 -msgid "Is this item installed in another item?" +msgid "Parent Stock Item" msgstr "" #: stock/models.py:331 -msgid "Item assigned to customer?" +msgid "Base Part" msgstr "" -#: stock/models.py:334 +#: stock/models.py:332 +msgid "Base part" +msgstr "" + +#: stock/models.py:342 +msgid "Select a matching supplier part for this stock item" +msgstr "" + +#: stock/models.py:347 stock/templates/stock/stock_app_base.html:7 +msgid "Stock Location" +msgstr "" + +#: stock/models.py:350 +msgid "Where is this stock item located?" +msgstr "" + +#: stock/models.py:355 +msgid "Installed In" +msgstr "" + +#: stock/models.py:358 +msgid "Is this item installed in another item?" +msgstr "" + +#: stock/models.py:364 msgid "Serial number for this item" msgstr "" -#: stock/models.py:339 +#: stock/models.py:376 msgid "Batch code for this stock item" msgstr "" -#: stock/models.py:348 +#: stock/models.py:380 +msgid "Stock Quantity" +msgstr "" + +#: stock/models.py:389 +msgid "Source Build" +msgstr "" + +#: stock/models.py:391 msgid "Build for this stock item" msgstr "" -#: stock/models.py:357 +#: stock/models.py:398 +msgid "Source Purchase Order" +msgstr "" + +#: stock/models.py:401 msgid "Purchase order for this stock item" msgstr "" -#: stock/models.py:374 +#: stock/models.py:407 +msgid "Destination Sales Order" +msgstr "" + +#: stock/models.py:414 +msgid "Destination Build Order" +msgstr "" + +#: stock/models.py:427 msgid "Delete this Stock Item when stock is depleted" msgstr "" -#: stock/models.py:381 stock/templates/stock/item_notes.html:13 +#: stock/models.py:437 stock/templates/stock/item_notes.html:13 #: stock/templates/stock/item_notes.html:29 msgid "Stock Item Notes" msgstr "" -#: stock/models.py:516 +#: stock/models.py:601 msgid "Quantity must be integer" msgstr "" -#: stock/models.py:522 +#: stock/models.py:607 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({n})" msgstr "" -#: stock/models.py:525 stock/models.py:528 +#: stock/models.py:610 stock/models.py:613 msgid "Serial numbers must be a list of integers" msgstr "" -#: stock/models.py:531 +#: stock/models.py:616 msgid "Quantity does not match serial numbers" msgstr "" -#: stock/models.py:541 +#: stock/models.py:626 msgid "Serial numbers already exist: " msgstr "" -#: stock/models.py:563 +#: stock/models.py:648 msgid "Add serial number" msgstr "" -#: stock/models.py:566 +#: stock/models.py:651 #, python-brace-format msgid "Serialized {n} items" msgstr "" -#: stock/models.py:866 +#: stock/models.py:748 +msgid "StockItem cannot be moved as it is not in stock" +msgstr "" + +#: stock/models.py:957 msgid "Tracking entry title" msgstr "" -#: stock/models.py:868 +#: stock/models.py:959 msgid "Entry notes" msgstr "" -#: stock/models.py:870 +#: stock/models.py:961 msgid "Link to external page for further information" msgstr "" @@ -2251,7 +2592,8 @@ msgid "Stock Tracking Information" msgstr "" #: stock/templates/stock/item_base.html:8 -#: stock/templates/stock/item_base.html:56 +#: stock/templates/stock/item_base.html:52 +#: stock/templates/stock/item_base.html:184 #: stock/templates/stock/stock_adjust.html:16 msgid "Stock Item" msgstr "" @@ -2279,40 +2621,35 @@ msgid "" "This stock item will be automatically deleted when all stock is depleted." msgstr "" -#: stock/templates/stock/item_base.html:45 -msgid "This stock item was split from " -msgstr "" - -#: stock/templates/stock/item_base.html:105 +#: stock/templates/stock/item_base.html:103 msgid "Stock Item Details" msgstr "" -#: stock/templates/stock/item_base.html:119 +#: stock/templates/stock/item_base.html:117 msgid "Belongs To" msgstr "" -#: stock/templates/stock/item_base.html:125 -#: stock/templates/stock/stock_adjust.html:17 -msgid "Location" +#: stock/templates/stock/item_base.html:129 +msgid "Build Order" msgstr "" -#: stock/templates/stock/item_base.html:132 +#: stock/templates/stock/item_base.html:142 msgid "Unique Identifier" msgstr "" -#: stock/templates/stock/item_base.html:139 -msgid "Serial Number" +#: stock/templates/stock/item_base.html:183 +msgid "Parent Item" msgstr "" -#: stock/templates/stock/item_base.html:198 +#: stock/templates/stock/item_base.html:208 msgid "Last Updated" msgstr "" -#: stock/templates/stock/item_base.html:203 +#: stock/templates/stock/item_base.html:213 msgid "Last Stocktake" msgstr "" -#: stock/templates/stock/item_base.html:207 +#: stock/templates/stock/item_base.html:217 msgid "No stocktake performed" msgstr "" @@ -2324,6 +2661,22 @@ msgstr "" msgid "This stock item does not have any child items" msgstr "" +#: stock/templates/stock/location.html:13 +msgid "All stock items" +msgstr "" + +#: stock/templates/stock/location.html:22 +msgid "Count stock items" +msgstr "" + +#: stock/templates/stock/location.html:25 +msgid "Edit stock location" +msgstr "" + +#: stock/templates/stock/location.html:28 +msgid "Delete stock location" +msgstr "" + #: stock/templates/stock/location.html:37 msgid "Location Details" msgstr "" @@ -2355,10 +2708,6 @@ msgstr "" msgid "Stock Locations" msgstr "" -#: stock/templates/stock/stock_app_base.html:7 -msgid "Stock Location" -msgstr "" - #: stock/templates/stock/tabs.html:8 msgid "Children" msgstr "" @@ -2379,134 +2728,134 @@ msgstr "" msgid "Stock Export Options" msgstr "" -#: stock/views.py:278 +#: stock/views.py:276 msgid "Stock Item QR Code" msgstr "" -#: stock/views.py:301 +#: stock/views.py:299 msgid "Adjust Stock" msgstr "" -#: stock/views.py:410 +#: stock/views.py:408 msgid "Move Stock Items" msgstr "" -#: stock/views.py:411 +#: stock/views.py:409 msgid "Count Stock Items" msgstr "" -#: stock/views.py:412 +#: stock/views.py:410 msgid "Remove From Stock" msgstr "" -#: stock/views.py:413 +#: stock/views.py:411 msgid "Add Stock Items" msgstr "" -#: stock/views.py:414 +#: stock/views.py:412 msgid "Delete Stock Items" msgstr "" -#: stock/views.py:442 +#: stock/views.py:440 msgid "Must enter integer value" msgstr "" -#: stock/views.py:447 +#: stock/views.py:445 msgid "Quantity must be positive" msgstr "" -#: stock/views.py:454 +#: stock/views.py:452 #, python-brace-format msgid "Quantity must not exceed {x}" msgstr "" -#: stock/views.py:462 +#: stock/views.py:460 msgid "Confirm stock adjustment" msgstr "" -#: stock/views.py:533 +#: stock/views.py:531 #, python-brace-format msgid "Added stock to {n} items" msgstr "" -#: stock/views.py:548 +#: stock/views.py:546 #, python-brace-format msgid "Removed stock from {n} items" msgstr "" -#: stock/views.py:561 +#: stock/views.py:559 #, python-brace-format msgid "Counted stock for {n} items" msgstr "" -#: stock/views.py:589 +#: stock/views.py:587 msgid "No items were moved" msgstr "" -#: stock/views.py:592 +#: stock/views.py:590 #, python-brace-format msgid "Moved {n} items to {dest}" msgstr "" -#: stock/views.py:611 +#: stock/views.py:609 #, python-brace-format msgid "Deleted {n} stock items" msgstr "" -#: stock/views.py:623 +#: stock/views.py:621 msgid "Edit Stock Item" msgstr "" -#: stock/views.py:659 +#: stock/views.py:657 msgid "Create new Stock Location" msgstr "" -#: stock/views.py:680 +#: stock/views.py:678 msgid "Serialize Stock" msgstr "" -#: stock/views.py:760 +#: stock/views.py:758 msgid "Create new Stock Item" msgstr "" -#: stock/views.py:824 +#: stock/views.py:822 msgid "Copy Stock Item" msgstr "" -#: stock/views.py:892 +#: stock/views.py:893 msgid "Invalid quantity" msgstr "" -#: stock/views.py:895 +#: stock/views.py:896 msgid "Invalid part selection" msgstr "" -#: stock/views.py:942 +#: stock/views.py:943 #, python-brace-format msgid "Created {n} new stock items" msgstr "" -#: stock/views.py:959 stock/views.py:972 +#: stock/views.py:960 stock/views.py:973 msgid "Created new stock item" msgstr "" -#: stock/views.py:989 +#: stock/views.py:990 msgid "Delete Stock Location" msgstr "" -#: stock/views.py:1002 +#: stock/views.py:1003 msgid "Delete Stock Item" msgstr "" -#: stock/views.py:1013 +#: stock/views.py:1014 msgid "Delete Stock Tracking Entry" msgstr "" -#: stock/views.py:1030 +#: stock/views.py:1031 msgid "Edit Stock Tracking Entry" msgstr "" -#: stock/views.py:1039 +#: stock/views.py:1040 msgid "Add Stock Tracking Entry" msgstr "" @@ -2518,6 +2867,18 @@ msgstr "" msgid "No results found" msgstr "" +#: templates/InvenTree/settings/part.html:28 +msgid "No part parameter templates found" +msgstr "" + +#: templates/InvenTree/settings/part.html:47 +msgid "Edit Template" +msgstr "" + +#: templates/InvenTree/settings/part.html:48 +msgid "Delete Template" +msgstr "" + #: templates/InvenTree/starred_parts.html:7 msgid "Starred Parts" msgstr "" @@ -2594,10 +2955,6 @@ msgstr "" msgid "Search" msgstr "" -#: templates/stock_table.html:8 -msgid "New Stock Item" -msgstr "" - #: templates/stock_table.html:12 msgid "Add stock" msgstr "" @@ -2622,70 +2979,74 @@ msgstr "" msgid "Delete Stock" msgstr "" -#: templates/table_filters.html:22 +#: templates/table_filters.html:21 msgid "Include sublocations" msgstr "" -#: templates/table_filters.html:23 +#: templates/table_filters.html:22 msgid "Include stock in sublocations" msgstr "" -#: templates/table_filters.html:27 +#: templates/table_filters.html:26 msgid "Active parts" msgstr "" -#: templates/table_filters.html:28 +#: templates/table_filters.html:27 msgid "Show stock for active parts" msgstr "" -#: templates/table_filters.html:32 templates/table_filters.html:33 +#: templates/table_filters.html:31 templates/table_filters.html:32 msgid "Stock status" msgstr "" -#: templates/table_filters.html:37 +#: templates/table_filters.html:36 msgid "Is allocated" msgstr "" -#: templates/table_filters.html:38 +#: templates/table_filters.html:37 msgid "Item has been alloacted" msgstr "" -#: templates/table_filters.html:58 +#: templates/table_filters.html:46 +msgid "Build status" +msgstr "" + +#: templates/table_filters.html:57 templates/table_filters.html:66 msgid "Order status" msgstr "" -#: templates/table_filters.html:69 +#: templates/table_filters.html:77 msgid "Include subcategories" msgstr "" -#: templates/table_filters.html:70 +#: templates/table_filters.html:78 msgid "Include parts in subcategories" msgstr "" -#: templates/table_filters.html:74 +#: templates/table_filters.html:82 msgid "Active" msgstr "" -#: templates/table_filters.html:75 +#: templates/table_filters.html:83 msgid "Show active parts" msgstr "" -#: templates/table_filters.html:79 +#: templates/table_filters.html:87 msgid "Template" msgstr "" -#: templates/table_filters.html:83 +#: templates/table_filters.html:91 msgid "Stock available" msgstr "" -#: templates/table_filters.html:87 +#: templates/table_filters.html:95 msgid "Low stock" msgstr "" -#: templates/table_filters.html:99 +#: templates/table_filters.html:107 msgid "Starred" msgstr "" -#: templates/table_filters.html:107 +#: templates/table_filters.html:115 msgid "Purchasable" msgstr "" diff --git a/InvenTree/locale/es/LC_MESSAGES/django.po b/InvenTree/locale/es/LC_MESSAGES/django.po index ee9168f369..d546eb43b0 100644 --- a/InvenTree/locale/es/LC_MESSAGES/django.po +++ b/InvenTree/locale/es/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-04-22 23:17+0000\n" +"POT-Creation-Date: 2020-04-27 23:32+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -42,7 +42,7 @@ msgstr "" msgid "Unknown barcode format" msgstr "" -#: InvenTree/helpers.py:258 order/models.py:173 order/models.py:224 +#: InvenTree/helpers.py:258 order/models.py:150 order/models.py:224 msgid "Invalid quantity provided" msgstr "" @@ -78,68 +78,81 @@ msgstr "" msgid "File comment" msgstr "" -#: InvenTree/settings.py:270 +#: InvenTree/settings.py:274 msgid "English" msgstr "" -#: InvenTree/settings.py:271 +#: InvenTree/settings.py:275 msgid "German" msgstr "" -#: InvenTree/settings.py:272 +#: InvenTree/settings.py:276 msgid "French" msgstr "" -#: InvenTree/settings.py:273 +#: InvenTree/settings.py:277 msgid "Polish" msgstr "" -#: InvenTree/status_codes.py:84 InvenTree/status_codes.py:172 +#: InvenTree/status_codes.py:90 InvenTree/status_codes.py:131 +#: InvenTree/status_codes.py:213 msgid "Pending" msgstr "" -#: InvenTree/status_codes.py:85 +#: InvenTree/status_codes.py:91 msgid "Placed" msgstr "" -#: InvenTree/status_codes.py:86 InvenTree/status_codes.py:175 +#: InvenTree/status_codes.py:92 InvenTree/status_codes.py:216 msgid "Complete" msgstr "" -#: InvenTree/status_codes.py:87 InvenTree/status_codes.py:174 +#: InvenTree/status_codes.py:93 InvenTree/status_codes.py:133 +#: InvenTree/status_codes.py:215 msgid "Cancelled" msgstr "" -#: InvenTree/status_codes.py:88 InvenTree/status_codes.py:135 +#: InvenTree/status_codes.py:94 InvenTree/status_codes.py:134 +#: InvenTree/status_codes.py:169 msgid "Lost" msgstr "" -#: InvenTree/status_codes.py:89 InvenTree/status_codes.py:137 +#: InvenTree/status_codes.py:95 InvenTree/status_codes.py:135 +#: InvenTree/status_codes.py:170 msgid "Returned" msgstr "" -#: InvenTree/status_codes.py:131 -msgid "OK" -msgstr "" - -#: InvenTree/status_codes.py:132 -msgid "Attention needed" -msgstr "" - -#: InvenTree/status_codes.py:133 -msgid "Damaged" -msgstr "" - -#: InvenTree/status_codes.py:134 -msgid "Destroyed" -msgstr "" - -#: InvenTree/status_codes.py:136 +#: InvenTree/status_codes.py:132 InvenTree/status_codes.py:171 +#: order/templates/order/sales_order_base.html:98 msgid "Shipped" msgstr "" -#: InvenTree/status_codes.py:173 build/templates/build/allocate_edit.html:28 -#: build/templates/build/allocate_view.html:21 +#: InvenTree/status_codes.py:165 +msgid "OK" +msgstr "" + +#: InvenTree/status_codes.py:166 +msgid "Attention needed" +msgstr "" + +#: InvenTree/status_codes.py:167 +msgid "Damaged" +msgstr "" + +#: InvenTree/status_codes.py:168 +msgid "Destroyed" +msgstr "" + +#: InvenTree/status_codes.py:172 +msgid "Used for Build" +msgstr "" + +#: InvenTree/status_codes.py:173 +msgid "Installed in Stock Item" +msgstr "" + +#: InvenTree/status_codes.py:214 build/templates/build/allocate.html:349 +#: order/templates/order/sales_order_detail.html:220 #: part/templates/part/part_base.html:114 part/templates/part/tabs.html:21 msgid "Allocated" msgstr "" @@ -173,191 +186,347 @@ msgstr "" msgid "Database Statistics" msgstr "" -#: build/forms.py:35 +#: build/forms.py:37 msgid "Confirm" msgstr "" -#: build/forms.py:52 stock/forms.py:34 +#: build/forms.py:54 stock/forms.py:34 msgid "Enter unique serial numbers (or leave blank)" msgstr "" -#: build/forms.py:54 +#: build/forms.py:56 msgid "Confirm build completion" msgstr "" -#: build/models.py:54 +#: build/models.py:57 build/templates/build/build_base.html:65 +msgid "Build Title" +msgstr "" + +#: build/models.py:60 msgid "Brief description of the build" msgstr "" -#: build/models.py:64 +#: build/models.py:68 build/templates/build/build_base.html:86 +msgid "Parent Build" +msgstr "" + +#: build/models.py:69 +msgid "Parent build to which this build is allocated" +msgstr "" + +#: build/models.py:74 build/templates/build/allocate.html:320 +#: build/templates/build/auto_allocate.html:18 +#: build/templates/build/build_base.html:70 +#: build/templates/build/detail.html:22 order/models.py:462 +#: order/templates/order/order_wizard/select_parts.html:30 +#: order/templates/order/purchase_order_detail.html:145 +#: part/templates/part/part_app_base.html:7 +#: part/templates/part/set_category.html:13 +msgid "Part" +msgstr "" + +#: build/models.py:83 msgid "Select part to build" msgstr "" -#: build/models.py:70 +#: build/models.py:88 +msgid "Sales Order Reference" +msgstr "" + +#: build/models.py:92 +msgid "SalesOrder to which this build is allocated" +msgstr "" + +#: build/models.py:97 +msgid "Source Location" +msgstr "" + +#: build/models.py:101 msgid "" "Select location to take stock from for this build (leave blank to take from " "any stock location)" msgstr "" -#: build/models.py:76 +#: build/models.py:105 +msgid "Build Quantity" +msgstr "" + +#: build/models.py:108 msgid "Number of parts to build" msgstr "" -#: build/models.py:82 templates/table_filters.html:47 -msgid "Build status" +#: build/models.py:112 part/templates/part/part_base.html:131 +msgid "Build Status" msgstr "" -#: build/models.py:85 +#: build/models.py:116 +msgid "Build status code" +msgstr "" + +#: build/models.py:120 stock/models.py:374 +msgid "Batch Code" +msgstr "" + +#: build/models.py:124 msgid "Batch code for this build output" msgstr "" -#: build/models.py:97 stock/models.py:336 +#: build/models.py:139 build/templates/build/detail.html:55 +#: company/templates/company/supplier_part_base.html:57 +#: company/templates/company/supplier_part_detail.html:24 +#: part/templates/part/detail.html:67 part/templates/part/part_base.html:85 +#: stock/models.py:368 stock/templates/stock/item_base.html:190 +msgid "External Link" +msgstr "" + +#: build/models.py:140 stock/models.py:370 msgid "Link to external URL" msgstr "" -#: build/models.py:99 +#: build/models.py:144 build/templates/build/tabs.html:14 company/models.py:302 +#: company/templates/company/tabs.html:26 order/templates/order/po_tabs.html:15 +#: order/templates/order/purchase_order_detail.html:200 +#: order/templates/order/so_tabs.html:23 part/templates/part/tabs.html:63 +#: stock/models.py:436 stock/templates/stock/tabs.html:17 +msgid "Notes" +msgstr "" + +#: build/models.py:145 msgid "Extra build notes" msgstr "" -#: build/models.py:388 +#: build/models.py:451 #, python-brace-format msgid "Selected stock item not found in BOM for part '{p}'" msgstr "" -#: build/models.py:391 +#: build/models.py:454 #, python-brace-format msgid "Allocated quantity ({n}) must not exceed available quantity ({q})" msgstr "" -#: build/models.py:397 order/models.py:448 +#: build/models.py:460 order/models.py:546 msgid "StockItem is over-allocated" msgstr "" -#: build/models.py:400 order/models.py:451 +#: build/models.py:463 order/models.py:549 msgid "Allocation quantity must be greater than zero" msgstr "" -#: build/models.py:403 +#: build/models.py:466 msgid "Quantity must be 1 for serialized stock" msgstr "" -#: build/models.py:418 +#: build/models.py:496 msgid "Build to allocate parts" msgstr "" -#: build/models.py:425 +#: build/models.py:503 msgid "Stock Item to allocate to build" msgstr "" -#: build/models.py:433 +#: build/models.py:516 msgid "Stock quantity to allocate to build" msgstr "" -#: build/templates/build/allocate_edit.html:5 -msgid "Allocate Stock to Build" -msgstr "" - -#: build/templates/build/allocate_edit.html:10 -msgid "Auto Allocate" -msgstr "" - -#: build/templates/build/allocate_edit.html:11 -msgid "Unallocate" -msgstr "" - -#: build/templates/build/allocate_edit.html:19 -#: build/templates/build/allocate_view.html:17 -#: build/templates/build/detail.html:22 order/models.py:385 -#: order/templates/order/order_wizard/select_parts.html:30 -#: order/templates/order/purchase_order_detail.html:26 -#: part/templates/part/part_app_base.html:7 -msgid "Part" -msgstr "" - -#: build/templates/build/allocate_edit.html:22 -#: build/templates/build/allocate_view.html:19 -msgid "Available" -msgstr "" - -#: build/templates/build/allocate_edit.html:25 -#: build/templates/build/allocate_view.html:20 -msgid "Required" -msgstr "" - -#: build/templates/build/allocate_view.html:4 -msgid "Required Parts" -msgstr "" - -#: build/templates/build/allocate_view.html:9 -msgid "Allocate" -msgstr "" - -#: build/templates/build/allocate_view.html:10 -#: company/templates/company/detail_part.html:18 order/views.py:671 +#: build/templates/build/allocate.html:17 +#: company/templates/company/detail_part.html:18 order/views.py:743 msgid "Order Parts" msgstr "" -#: build/templates/build/allocate_view.html:18 -#: company/templates/company/supplier_part_base.html:50 -#: company/templates/company/supplier_part_detail.html:27 -#: order/templates/order/purchase_order_detail.html:27 -#: part/templates/part/detail.html:38 -msgid "Description" +#: build/templates/build/allocate.html:18 +msgid "Automatically allocate stock" msgstr "" -#: build/templates/build/allocate_view.html:22 -#: part/templates/part/part_base.html:121 -msgid "On Order" +#: build/templates/build/allocate.html:18 +msgid "Auto Allocate" msgstr "" -#: build/templates/build/build_base.html:8 -#: build/templates/build/build_base.html:21 part/templates/part/tabs.html:28 -#: stock/templates/stock/item_base.html:159 templates/navbar.html:12 -msgid "Build" +#: build/templates/build/allocate.html:19 +msgid "Unallocate" msgstr "" -#: build/templates/build/build_base.html:48 build/templates/build/detail.html:9 -msgid "Build Details" +#: build/templates/build/allocate.html:78 templates/stock_table.html:8 +msgid "New Stock Item" msgstr "" -#: build/templates/build/build_base.html:52 -msgid "Build Title" +#: build/templates/build/allocate.html:161 +#: order/templates/order/sales_order_detail.html:68 +#: order/templates/order/sales_order_detail.html:150 stock/models.py:362 +#: stock/templates/stock/item_base.html:149 +msgid "Serial Number" msgstr "" -#: build/templates/build/build_base.html:62 +#: build/templates/build/allocate.html:163 +#: build/templates/build/auto_allocate.html:19 +#: build/templates/build/build_base.html:75 #: build/templates/build/detail.html:27 #: company/templates/company/supplier_part_pricing.html:27 #: order/templates/order/order_wizard/select_parts.html:32 -#: order/templates/order/purchase_order_detail.html:30 +#: order/templates/order/purchase_order_detail.html:175 +#: order/templates/order/sales_order_detail.html:70 +#: order/templates/order/sales_order_detail.html:152 #: stock/templates/stock/item_base.html:20 #: stock/templates/stock/item_base.html:26 -#: stock/templates/stock/item_base.html:145 +#: stock/templates/stock/item_base.html:155 #: stock/templates/stock/stock_adjust.html:18 msgid "Quantity" msgstr "" -#: build/templates/build/build_base.html:67 -#: build/templates/build/detail.html:42 -#: stock/templates/stock/item_base.html:212 -msgid "Status" +#: build/templates/build/allocate.html:177 +#: build/templates/build/auto_allocate.html:20 +#: stock/templates/stock/item_base.html:135 +#: stock/templates/stock/stock_adjust.html:17 +msgid "Location" msgstr "" -#: build/templates/build/build_base.html:72 -msgid "BOM Price" +#: build/templates/build/allocate.html:201 +#: order/templates/order/sales_order_detail.html:92 +msgid "Edit stock allocation" msgstr "" -#: build/templates/build/build_base.html:77 -msgid "BOM pricing is incomplete" +#: build/templates/build/allocate.html:202 +#: order/templates/order/sales_order_detail.html:93 +msgid "Delete stock allocation" +msgstr "" + +#: build/templates/build/allocate.html:229 +msgid "No BOM items found" +msgstr "" + +#: build/templates/build/allocate.html:328 +#: company/templates/company/supplier_part_base.html:50 +#: company/templates/company/supplier_part_detail.html:27 +#: order/templates/order/purchase_order_detail.html:157 +#: part/templates/part/detail.html:38 part/templates/part/set_category.html:14 +msgid "Description" +msgstr "" + +#: build/templates/build/allocate.html:333 +#: order/templates/order/purchase_order_detail.html:170 +msgid "Reference" +msgstr "" + +#: build/templates/build/allocate.html:338 +msgid "Required" +msgstr "" + +#: build/templates/build/allocate.html:347 +msgid "Assigned" +msgstr "" + +#: build/templates/build/allocate.html:385 +#: order/templates/order/sales_order_detail.html:270 +msgid "Buy parts" +msgstr "" + +#: build/templates/build/allocate.html:389 +#: order/templates/order/sales_order_detail.html:274 +msgid "Build parts" +msgstr "" + +#: build/templates/build/allocate.html:392 +msgid "Allocate stock" +msgstr "" + +#: build/templates/build/auto_allocate.html:8 +msgid "Automatically Allocate Stock" +msgstr "" + +#: build/templates/build/auto_allocate.html:9 +msgid "" +"Stock Items are selected for automatic allocation if there is only a single " +"stock item available." +msgstr "" + +#: build/templates/build/auto_allocate.html:10 +msgid "The following stock items will be allocated to the build:" +msgstr "" + +#: build/templates/build/auto_allocate.html:39 +msgid "No stock items found that can be allocated to this build" +msgstr "" + +#: build/templates/build/build_base.html:8 +#: build/templates/build/build_base.html:34 +#: build/templates/build/complete.html:6 +#: stock/templates/stock/item_base.html:169 templates/navbar.html:12 +msgid "Build" +msgstr "" + +#: build/templates/build/build_base.html:14 +msgid "This build is allocated to Sales Order" +msgstr "" + +#: build/templates/build/build_base.html:19 +msgid "This build is a child of Build" +msgstr "" + +#: build/templates/build/build_base.html:61 build/templates/build/detail.html:9 +msgid "Build Details" msgstr "" #: build/templates/build/build_base.html:80 +#: build/templates/build/detail.html:42 +#: stock/templates/stock/item_base.html:222 +msgid "Status" +msgstr "" + +#: build/templates/build/build_base.html:93 order/models.py:460 +#: order/templates/order/sales_order_base.html:9 +#: order/templates/order/sales_order_base.html:33 +#: order/templates/order/sales_order_notes.html:10 +#: order/templates/order/sales_order_ship.html:25 +#: stock/templates/stock/item_base.html:123 +msgid "Sales Order" +msgstr "" + +#: build/templates/build/build_base.html:99 +msgid "BOM Price" +msgstr "" + +#: build/templates/build/build_base.html:104 +msgid "BOM pricing is incomplete" +msgstr "" + +#: build/templates/build/build_base.html:107 msgid "No pricing information" msgstr "" -#: build/templates/build/build_output.html:9 +#: build/templates/build/build_output.html:9 build/templates/build/tabs.html:11 msgid "Build Outputs" msgstr "" +#: build/templates/build/complete.html:10 +msgid "Build order allocation is complete" +msgstr "" + +#: build/templates/build/complete.html:14 +msgid "Warning: Build order allocation is not complete" +msgstr "" + +#: build/templates/build/complete.html:15 +msgid "" +"Build Order has not been fully allocated. Ensure that all Stock Items have " +"been allocated to the Build" +msgstr "" + +#: build/templates/build/complete.html:20 +msgid "The following actions will be performed:" +msgstr "" + +#: build/templates/build/complete.html:22 +msgid "Remove allocated items from stock" +msgstr "" + +#: build/templates/build/complete.html:23 +msgid "Add completed items to stock" +msgstr "" + +#: build/templates/build/complete.html:29 +msgid "The following items will be created" +msgstr "" + #: build/templates/build/delete_build_item.html:6 msgid "Are you sure you want to unallocate these parts?" msgstr "" @@ -375,21 +544,13 @@ msgid "Stock can be taken from any available location." msgstr "" #: build/templates/build/detail.html:48 -#: stock/templates/stock/item_base.html:152 +#: stock/templates/stock/item_base.html:162 msgid "Batch" msgstr "" -#: build/templates/build/detail.html:55 -#: company/templates/company/supplier_part_base.html:57 -#: company/templates/company/supplier_part_detail.html:24 -#: part/templates/part/detail.html:67 part/templates/part/part_base.html:85 -#: stock/templates/stock/item_base.html:180 -msgid "External Link" -msgstr "" - #: build/templates/build/detail.html:61 #: order/templates/order/order_base.html:93 -#: order/templates/order/sales_order_base.html:82 +#: order/templates/order/sales_order_base.html:92 msgid "Created" msgstr "" @@ -433,18 +594,7 @@ msgid "Details" msgstr "" #: build/templates/build/tabs.html:8 -msgid "Outputs" -msgstr "" - -#: build/templates/build/tabs.html:11 company/models.py:302 -#: company/templates/company/tabs.html:26 order/templates/order/po_tabs.html:15 -#: order/templates/order/so_tabs.html:15 part/templates/part/tabs.html:63 -#: stock/templates/stock/tabs.html:17 -msgid "Notes" -msgstr "" - -#: build/templates/build/tabs.html:14 -msgid "Assign Parts" +msgid "Allocated Parts" msgstr "" #: build/templates/build/unallocate.html:8 @@ -479,7 +629,7 @@ msgstr "" msgid "Check the confirmation box at the bottom of the list" msgstr "" -#: build/views.py:148 build/views.py:442 +#: build/views.py:148 build/views.py:446 msgid "Unallocate Stock" msgstr "" @@ -503,48 +653,48 @@ msgstr "" msgid "Invalid location selected" msgstr "" -#: build/views.py:290 stock/views.py:916 +#: build/views.py:290 stock/views.py:917 #, python-brace-format msgid "The following serial numbers already exist: ({sn})" msgstr "" -#: build/views.py:309 +#: build/views.py:311 msgid "Build marked as COMPLETE" msgstr "" -#: build/views.py:385 +#: build/views.py:387 msgid "Start new Build" msgstr "" -#: build/views.py:408 +#: build/views.py:412 msgid "Created new build" msgstr "" -#: build/views.py:418 +#: build/views.py:422 msgid "Edit Build Details" msgstr "" -#: build/views.py:423 +#: build/views.py:427 msgid "Edited build" msgstr "" -#: build/views.py:432 +#: build/views.py:436 msgid "Delete Build" msgstr "" -#: build/views.py:447 +#: build/views.py:451 msgid "Removed parts from build allocation" msgstr "" -#: build/views.py:457 +#: build/views.py:461 msgid "Allocate new Part" msgstr "" -#: build/views.py:573 +#: build/views.py:614 msgid "Edit Stock Allocation" msgstr "" -#: build/views.py:577 +#: build/views.py:618 msgid "Updated Build Item" msgstr "" @@ -714,16 +864,15 @@ msgstr "" #: company/templates/company/detail.html:21 #: company/templates/company/supplier_part_base.html:63 -#: company/templates/company/supplier_part_detail.html:21 order/models.py:138 +#: company/templates/company/supplier_part_detail.html:21 order/models.py:111 #: order/templates/order/order_base.html:74 #: order/templates/order/order_wizard/select_pos.html:30 -#: stock/templates/stock/item_base.html:187 +#: stock/templates/stock/item_base.html:197 msgid "Supplier" msgstr "" #: company/templates/company/detail.html:26 order/models.py:275 -#: order/templates/order/sales_order_base.html:63 -#: stock/templates/stock/item_base.html:173 +#: order/templates/order/sales_order_base.html:73 msgid "Customer" msgstr "" @@ -732,7 +881,8 @@ msgid "Supplier Parts" msgstr "" #: company/templates/company/detail_part.html:13 -#: part/templates/part/stock.html:81 +#: order/templates/order/purchase_order_detail.html:67 +#: part/templates/part/stock.html:82 msgid "New Supplier Part" msgstr "" @@ -745,7 +895,7 @@ msgid "Delete Parts" msgstr "" #: company/templates/company/detail_part.html:43 -#: part/templates/part/stock.html:75 +#: part/templates/part/stock.html:76 msgid "New Part" msgstr "" @@ -753,19 +903,19 @@ msgstr "" msgid "Create new Part" msgstr "" -#: company/templates/company/detail_part.html:49 company/views.py:52 +#: company/templates/company/detail_part.html:49 company/views.py:51 msgid "New Supplier" msgstr "" -#: company/templates/company/detail_part.html:50 company/views.py:184 +#: company/templates/company/detail_part.html:50 company/views.py:182 msgid "Create new Supplier" msgstr "" -#: company/templates/company/detail_part.html:55 company/views.py:58 +#: company/templates/company/detail_part.html:55 company/views.py:57 msgid "New Manufacturer" msgstr "" -#: company/templates/company/detail_part.html:56 company/views.py:187 +#: company/templates/company/detail_part.html:56 company/views.py:185 msgid "Create new Manufacturer" msgstr "" @@ -775,7 +925,7 @@ msgstr "" #: company/templates/company/detail_stock.html:34 #: company/templates/company/supplier_part_stock.html:38 -#: part/templates/part/stock.html:53 templates/stock_table.html:5 +#: part/templates/part/stock.html:54 templates/stock_table.html:5 msgid "Export" msgstr "" @@ -831,11 +981,19 @@ msgid "New Sales Order" msgstr "" #: company/templates/company/supplier_part_base.html:6 -#: company/templates/company/supplier_part_base.html:19 -#: stock/templates/stock/item_base.html:192 +#: company/templates/company/supplier_part_base.html:19 stock/models.py:341 +#: stock/templates/stock/item_base.html:202 msgid "Supplier Part" msgstr "" +#: company/templates/company/supplier_part_base.html:23 +msgid "Edit supplier part" +msgstr "" + +#: company/templates/company/supplier_part_base.html:26 +msgid "Delete supplier part" +msgstr "" + #: company/templates/company/supplier_part_base.html:35 #: company/templates/company/supplier_part_detail.html:11 msgid "Supplier Part Details" @@ -858,7 +1016,6 @@ msgstr "" #: company/templates/company/supplier_part_base.html:84 #: company/templates/company/supplier_part_detail.html:34 -#: order/templates/order/purchase_order_detail.html:34 msgid "Note" msgstr "" @@ -899,12 +1056,14 @@ msgid "Supplier Part Stock" msgstr "" #: company/templates/company/supplier_part_stock.html:61 -#: part/templates/part/stock.html:90 +#: order/templates/order/purchase_order_detail.html:38 +#: order/templates/order/purchase_order_detail.html:118 +#: part/templates/part/stock.html:91 msgid "New Location" msgstr "" #: company/templates/company/supplier_part_stock.html:62 -#: part/templates/part/stock.html:91 +#: part/templates/part/stock.html:92 msgid "Create New Location" msgstr "" @@ -914,7 +1073,7 @@ msgstr "" #: company/templates/company/supplier_part_tabs.html:8 #: company/templates/company/tabs.html:12 part/templates/part/tabs.html:17 -#: templates/navbar.html:11 +#: stock/templates/stock/location.html:12 templates/navbar.html:11 msgid "Stock" msgstr "" @@ -927,88 +1086,88 @@ msgstr "" msgid "Parts" msgstr "" -#: company/views.py:51 part/templates/part/tabs.html:37 +#: company/views.py:50 part/templates/part/tabs.html:37 #: templates/navbar.html:16 msgid "Suppliers" msgstr "" -#: company/views.py:57 templates/navbar.html:17 +#: company/views.py:56 templates/navbar.html:17 msgid "Manufacturers" msgstr "" -#: company/views.py:63 templates/navbar.html:24 +#: company/views.py:62 templates/navbar.html:24 msgid "Customers" msgstr "" -#: company/views.py:64 +#: company/views.py:63 msgid "New Customer" msgstr "" -#: company/views.py:71 +#: company/views.py:70 msgid "Companies" msgstr "" -#: company/views.py:72 +#: company/views.py:71 msgid "New Company" msgstr "" -#: company/views.py:149 +#: company/views.py:147 msgid "Update Company Image" msgstr "" -#: company/views.py:154 +#: company/views.py:152 msgid "Updated company image" msgstr "" -#: company/views.py:164 +#: company/views.py:162 msgid "Edit Company" msgstr "" -#: company/views.py:168 +#: company/views.py:166 msgid "Edited company information" msgstr "" -#: company/views.py:190 +#: company/views.py:188 msgid "Create new Customer" msgstr "" -#: company/views.py:192 +#: company/views.py:190 msgid "Create new Company" msgstr "" -#: company/views.py:219 +#: company/views.py:217 msgid "Created new company" msgstr "" -#: company/views.py:229 +#: company/views.py:227 msgid "Delete Company" msgstr "" -#: company/views.py:234 +#: company/views.py:232 msgid "Company was deleted" msgstr "" -#: company/views.py:259 +#: company/views.py:256 msgid "Edit Supplier Part" msgstr "" -#: company/views.py:268 part/templates/part/stock.html:82 +#: company/views.py:265 part/templates/part/stock.html:83 msgid "Create new Supplier Part" msgstr "" -#: company/views.py:328 +#: company/views.py:325 msgid "Delete Supplier Part" msgstr "" -#: company/views.py:398 +#: company/views.py:395 msgid "Add Price Break" msgstr "" -#: company/views.py:440 +#: company/views.py:437 msgid "Edit Price Break" msgstr "" -#: company/views.py:455 +#: company/views.py:452 msgid "Delete Price Break" msgstr "" @@ -1020,11 +1179,16 @@ msgstr "" msgid "Mark order as complete" msgstr "" -#: order/forms.py:46 +#: order/forms.py:46 order/forms.py:57 +#: order/templates/order/sales_order_base.html:49 msgid "Cancel order" msgstr "" -#: order/forms.py:57 +#: order/forms.py:68 order/templates/order/sales_order_base.html:46 +msgid "Ship order" +msgstr "" + +#: order/forms.py:79 msgid "Receive parts to this location" msgstr "" @@ -1040,20 +1204,20 @@ msgstr "" msgid "Link to external page" msgstr "" -#: order/models.py:92 +#: order/models.py:85 msgid "Order notes" msgstr "" -#: order/models.py:141 +#: order/models.py:114 msgid "Supplier order reference code" msgstr "" -#: order/models.py:171 order/models.py:222 part/views.py:1119 -#: stock/models.py:519 +#: order/models.py:148 order/models.py:222 part/views.py:1113 +#: stock/models.py:604 msgid "Quantity must be greater than zero" msgstr "" -#: order/models.py:176 +#: order/models.py:153 msgid "Part supplier must match PO supplier" msgstr "" @@ -1061,63 +1225,61 @@ msgstr "" msgid "Lines can only be received against an order marked as 'Placed'" msgstr "" -#: order/models.py:278 +#: order/models.py:281 msgid "Customer order reference code" msgstr "" -#: order/models.py:324 +#: order/models.py:320 +msgid "SalesOrder cannot be shipped as it is not currently pending" +msgstr "" + +#: order/models.py:397 msgid "Item quantity" msgstr "" -#: order/models.py:326 +#: order/models.py:399 msgid "Line item reference" msgstr "" -#: order/models.py:328 +#: order/models.py:401 msgid "Line item notes" msgstr "" -#: order/models.py:354 order/templates/order/order_base.html:9 +#: order/models.py:427 order/templates/order/order_base.html:9 #: order/templates/order/order_base.html:23 -#: stock/templates/stock/item_base.html:166 +#: stock/templates/stock/item_base.html:176 msgid "Purchase Order" msgstr "" -#: order/models.py:363 +#: order/models.py:440 msgid "Supplier part" msgstr "" -#: order/models.py:366 +#: order/models.py:443 msgid "Number of items received" msgstr "" -#: order/models.py:383 order/templates/order/sales_order_base.html:9 -#: order/templates/order/sales_order_base.html:31 -#: order/templates/order/sales_order_notes.html:10 -msgid "Sales Order" -msgstr "" - -#: order/models.py:440 +#: order/models.py:537 msgid "Cannot allocate stock item to a line with a different part" msgstr "" -#: order/models.py:442 +#: order/models.py:539 msgid "Cannot allocate stock to a line without a part" msgstr "" -#: order/models.py:445 +#: order/models.py:542 msgid "Allocation quantity cannot exceed stock quantity" msgstr "" -#: order/models.py:454 +#: order/models.py:552 msgid "Quantity must be 1 for serialized stock item" msgstr "" -#: order/models.py:466 +#: order/models.py:569 msgid "Select stock item to allocate" msgstr "" -#: order/models.py:469 +#: order/models.py:572 msgid "Enter stock allocation quantity" msgstr "" @@ -1131,12 +1293,12 @@ msgid "Purchase Order Details" msgstr "" #: order/templates/order/order_base.html:64 -#: order/templates/order/sales_order_base.html:53 +#: order/templates/order/sales_order_base.html:63 msgid "Order Reference" msgstr "" #: order/templates/order/order_base.html:69 -#: order/templates/order/sales_order_base.html:58 +#: order/templates/order/sales_order_base.html:68 msgid "Order Status" msgstr "" @@ -1145,16 +1307,20 @@ msgid "Supplier Reference" msgstr "" #: order/templates/order/order_base.html:99 -#: order/templates/order/sales_order_base.html:88 msgid "Issued" msgstr "" #: order/templates/order/order_base.html:106 -#: order/templates/order/purchase_order_detail.html:32 -#: order/templates/order/sales_order_base.html:95 +#: order/templates/order/purchase_order_detail.html:180 +#: order/templates/order/sales_order_base.html:105 msgid "Received" msgstr "" +#: order/templates/order/order_cancel.html:7 +#: order/templates/order/sales_order_cancel.html:9 +msgid "Cancelling this order means that the order will no longer be editable." +msgstr "" + #: order/templates/order/order_notes.html:13 #: order/templates/order/order_notes.html:29 #: order/templates/order/sales_order_notes.html:18 @@ -1191,7 +1357,7 @@ msgid "Select existing purchase orders, or create new orders." msgstr "" #: order/templates/order/order_wizard/select_pos.html:31 -#: order/templates/order/po_tabs.html:5 order/templates/order/so_tabs.html:5 +#: order/templates/order/po_tabs.html:5 msgid "Items" msgstr "" @@ -1227,7 +1393,7 @@ msgstr "" #: order/templates/order/po_attachments.html:36 #: order/templates/order/so_attachments.html:36 -#: part/templates/part/attachments.html:34 part/views.py:119 +#: part/templates/part/attachments.html:34 part/views.py:118 msgid "Edit attachment" msgstr "" @@ -1237,14 +1403,14 @@ msgstr "" msgid "Delete attachment" msgstr "" -#: order/templates/order/po_tabs.html:8 order/templates/order/so_tabs.html:8 +#: order/templates/order/po_tabs.html:8 order/templates/order/so_tabs.html:16 #: part/templates/part/tabs.html:60 msgid "Attachments" msgstr "" #: order/templates/order/purchase_order_detail.html:16 -#: order/templates/order/sales_order_detail.html:17 order/views.py:970 -#: order/views.py:1084 +#: order/templates/order/sales_order_detail.html:17 order/views.py:1042 +#: order/views.py:1156 msgid "Add Line Item" msgstr "" @@ -1252,191 +1418,258 @@ msgstr "" msgid "Purchase Order Items" msgstr "" -#: order/templates/order/purchase_order_detail.html:25 -msgid "Line" +#: order/templates/order/purchase_order_detail.html:39 +#: order/templates/order/purchase_order_detail.html:119 +#: stock/templates/stock/location.html:17 +msgid "Create new stock location" msgstr "" -#: order/templates/order/purchase_order_detail.html:28 +#: order/templates/order/purchase_order_detail.html:68 +msgid "Create new supplier part" +msgstr "" + +#: order/templates/order/purchase_order_detail.html:130 +msgid "No line items found" +msgstr "" + +#: order/templates/order/purchase_order_detail.html:162 msgid "Order Code" msgstr "" -#: order/templates/order/purchase_order_detail.html:29 -msgid "Reference" +#: order/templates/order/purchase_order_detail.html:211 +#: order/templates/order/sales_order_detail.html:280 +msgid "Edit line item" +msgstr "" + +#: order/templates/order/purchase_order_detail.html:212 +msgid "Delete line item" +msgstr "" + +#: order/templates/order/purchase_order_detail.html:217 +msgid "Receive line item" msgstr "" #: order/templates/order/sales_order_base.html:15 msgid "This SalesOrder has not been fully allocated" msgstr "" -#: order/templates/order/sales_order_base.html:40 +#: order/templates/order/sales_order_base.html:42 msgid "Packing List" msgstr "" -#: order/templates/order/sales_order_base.html:48 +#: order/templates/order/sales_order_base.html:58 msgid "Sales Order Details" msgstr "" -#: order/templates/order/sales_order_base.html:69 +#: order/templates/order/sales_order_base.html:79 msgid "Customer Reference" msgstr "" +#: order/templates/order/sales_order_cancel.html:8 +#: order/templates/order/sales_order_ship.html:9 +msgid "Warning" +msgstr "" + #: order/templates/order/sales_order_detail.html:14 msgid "Sales Order Items" msgstr "" -#: order/templates/order/sales_order_detail.html:90 -msgid "Edit stock allocation" +#: order/templates/order/sales_order_detail.html:222 +msgid "Fulfilled" msgstr "" -#: order/templates/order/sales_order_detail.html:91 -msgid "Delete stock allocation" -msgstr "" - -#: order/templates/order/sales_order_detail.html:178 -msgid "Buy parts" -msgstr "" - -#: order/templates/order/sales_order_detail.html:182 -msgid "Build parts" -msgstr "" - -#: order/templates/order/sales_order_detail.html:185 +#: order/templates/order/sales_order_detail.html:277 msgid "Allocate parts" msgstr "" -#: order/templates/order/sales_order_detail.html:189 -msgid "Edit line item" +#: order/templates/order/sales_order_detail.html:281 +msgid "Delete line item " msgstr "" -#: order/templates/order/sales_order_detail.html:190 -msgid "Delete line item " +#: order/templates/order/sales_order_ship.html:10 +msgid "" +"This order has not been fully allocated. If the order is marked as shipped, " +"it can no longer be adjusted." +msgstr "" + +#: order/templates/order/sales_order_ship.html:12 +msgid "Ensure that the order allocation is correct before shipping the order." +msgstr "" + +#: order/templates/order/sales_order_ship.html:18 +msgid "Some line items in this order have been over-allocated" +msgstr "" + +#: order/templates/order/sales_order_ship.html:20 +msgid "Ensure that this is correct before shipping the order." +msgstr "" + +#: order/templates/order/sales_order_ship.html:27 +msgid "Shipping this order means that the order will no longer be editable." +msgstr "" + +#: order/templates/order/so_allocation_delete.html:7 +msgid "This action will unallocate the following stock from the Sales Order" msgstr "" #: order/templates/order/so_attachments.html:11 msgid "Sales Order Attachments" msgstr "" -#: order/views.py:97 +#: order/templates/order/so_builds.html:11 order/templates/order/so_tabs.html:9 +#: part/templates/part/tabs.html:28 +msgid "Build Orders" +msgstr "" + +#: order/templates/order/so_lineitem_delete.html:5 +msgid "Are you sure you wish to delete this line item?" +msgstr "" + +#: order/templates/order/so_tabs.html:5 +msgid "Order Items" +msgstr "" + +#: order/views.py:93 msgid "Add Purchase Order Attachment" msgstr "" -#: order/views.py:102 order/views.py:142 part/views.py:80 +#: order/views.py:98 order/views.py:138 part/views.py:79 msgid "Added attachment" msgstr "" -#: order/views.py:138 +#: order/views.py:134 msgid "Add Sales Order Attachment" msgstr "" -#: order/views.py:166 order/views.py:187 +#: order/views.py:162 order/views.py:183 msgid "Edit Attachment" msgstr "" -#: order/views.py:170 order/views.py:191 +#: order/views.py:166 order/views.py:187 msgid "Attachment updated" msgstr "" -#: order/views.py:206 order/views.py:220 +#: order/views.py:202 order/views.py:216 msgid "Delete Attachment" msgstr "" -#: order/views.py:212 order/views.py:226 +#: order/views.py:208 order/views.py:222 msgid "Deleted attachment" msgstr "" -#: order/views.py:277 +#: order/views.py:273 msgid "Create Purchase Order" msgstr "" -#: order/views.py:307 +#: order/views.py:303 msgid "Create Sales Order" msgstr "" -#: order/views.py:336 +#: order/views.py:332 msgid "Edit Purchase Order" msgstr "" -#: order/views.py:356 +#: order/views.py:352 msgid "Edit Sales Order" msgstr "" -#: order/views.py:372 +#: order/views.py:368 msgid "Cancel Order" msgstr "" -#: order/views.py:387 +#: order/views.py:383 order/views.py:415 msgid "Confirm order cancellation" msgstr "" -#: order/views.py:405 +#: order/views.py:401 +msgid "Cancel sales order" +msgstr "" + +#: order/views.py:421 +msgid "Could not cancel order" +msgstr "" + +#: order/views.py:435 msgid "Issue Order" msgstr "" -#: order/views.py:420 +#: order/views.py:450 msgid "Confirm order placement" msgstr "" -#: order/views.py:441 +#: order/views.py:471 msgid "Complete Order" msgstr "" -#: order/views.py:507 +#: order/views.py:506 +msgid "Ship Order" +msgstr "" + +#: order/views.py:522 +msgid "Confirm order shipment" +msgstr "" + +#: order/views.py:528 +msgid "Could not ship order" +msgstr "" + +#: order/views.py:579 msgid "Receive Parts" msgstr "" -#: order/views.py:574 +#: order/views.py:646 msgid "Items received" msgstr "" -#: order/views.py:588 +#: order/views.py:660 msgid "No destination set" msgstr "" -#: order/views.py:619 +#: order/views.py:691 msgid "Error converting quantity to number" msgstr "" -#: order/views.py:625 +#: order/views.py:697 msgid "Receive quantity less than zero" msgstr "" -#: order/views.py:631 +#: order/views.py:703 msgid "No lines specified" msgstr "" -#: order/views.py:990 +#: order/views.py:1062 msgid "Invalid Purchase Order" msgstr "" -#: order/views.py:998 +#: order/views.py:1070 msgid "Supplier must match for Part and Order" msgstr "" -#: order/views.py:1003 +#: order/views.py:1075 msgid "Invalid SupplierPart selection" msgstr "" -#: order/views.py:1123 order/views.py:1141 +#: order/views.py:1207 order/views.py:1225 msgid "Edit Line Item" msgstr "" -#: order/views.py:1157 order/views.py:1169 +#: order/views.py:1241 order/views.py:1253 msgid "Delete Line Item" msgstr "" -#: order/views.py:1162 order/views.py:1174 +#: order/views.py:1246 order/views.py:1258 msgid "Deleted line item" msgstr "" -#: order/views.py:1183 +#: order/views.py:1267 msgid "Allocate Stock to Order" msgstr "" -#: order/views.py:1252 +#: order/views.py:1336 msgid "Edit Allocation Quantity" msgstr "" -#: order/views.py:1267 +#: order/views.py:1351 msgid "Remove allocation" msgstr "" @@ -1497,171 +1730,171 @@ msgstr "" msgid "Select currency for price calculation" msgstr "" -#: part/models.py:61 +#: part/models.py:62 msgid "Default location for parts in this category" msgstr "" -#: part/models.py:64 +#: part/models.py:65 msgid "Default keywords for parts in this category" msgstr "" -#: part/models.py:338 +#: part/models.py:339 msgid "Part must be unique for name, IPN and revision" msgstr "" -#: part/models.py:352 +#: part/models.py:353 msgid "Part cannot be a template part if it is a variant of another part" msgstr "" -#: part/models.py:353 +#: part/models.py:354 msgid "Part cannot be a variant of another part if it is already a template" msgstr "" -#: part/models.py:357 part/templates/part/detail.html:19 +#: part/models.py:358 part/templates/part/detail.html:19 msgid "Part name" msgstr "" -#: part/models.py:361 +#: part/models.py:362 msgid "Is this part a template part?" msgstr "" -#: part/models.py:370 +#: part/models.py:371 msgid "Is this part a variant of another part?" msgstr "" -#: part/models.py:372 +#: part/models.py:373 msgid "Part description" msgstr "" -#: part/models.py:374 +#: part/models.py:375 msgid "Part keywords to improve visibility in search results" msgstr "" -#: part/models.py:379 +#: part/models.py:380 msgid "Part category" msgstr "" -#: part/models.py:381 +#: part/models.py:382 msgid "Internal Part Number" msgstr "" -#: part/models.py:383 +#: part/models.py:384 msgid "Part revision or version number" msgstr "" -#: part/models.py:385 +#: part/models.py:386 msgid "Link to extenal URL" msgstr "" -#: part/models.py:397 +#: part/models.py:398 msgid "Where is this item normally stored?" msgstr "" -#: part/models.py:441 +#: part/models.py:442 msgid "Default supplier part" msgstr "" -#: part/models.py:444 +#: part/models.py:445 msgid "Minimum allowed stock level" msgstr "" -#: part/models.py:446 +#: part/models.py:447 msgid "Stock keeping units for this part" msgstr "" -#: part/models.py:448 +#: part/models.py:449 msgid "Can this part be built from other parts?" msgstr "" -#: part/models.py:450 +#: part/models.py:451 msgid "Can this part be used to build other parts?" msgstr "" -#: part/models.py:452 +#: part/models.py:453 msgid "Does this part have tracking for unique items?" msgstr "" -#: part/models.py:454 +#: part/models.py:455 msgid "Can this part be purchased from external suppliers?" msgstr "" -#: part/models.py:456 +#: part/models.py:457 msgid "Can this part be sold to customers?" msgstr "" -#: part/models.py:458 +#: part/models.py:459 msgid "Is this part active?" msgstr "" -#: part/models.py:460 +#: part/models.py:461 msgid "Is this a virtual part, such as a software product or license?" msgstr "" -#: part/models.py:462 +#: part/models.py:463 msgid "Part notes - supports Markdown formatting" msgstr "" -#: part/models.py:464 +#: part/models.py:465 msgid "Stored BOM checksum" msgstr "" -#: part/models.py:1065 +#: part/models.py:1067 msgid "Parameter template name must be unique" msgstr "" -#: part/models.py:1070 +#: part/models.py:1072 msgid "Parameter Name" msgstr "" -#: part/models.py:1072 +#: part/models.py:1074 msgid "Parameter Units" msgstr "" -#: part/models.py:1098 +#: part/models.py:1100 msgid "Parent Part" msgstr "" -#: part/models.py:1100 +#: part/models.py:1102 msgid "Parameter Template" msgstr "" -#: part/models.py:1102 +#: part/models.py:1104 msgid "Parameter Value" msgstr "" -#: part/models.py:1126 +#: part/models.py:1128 msgid "Select parent part" msgstr "" -#: part/models.py:1135 +#: part/models.py:1137 msgid "Select part to be used in BOM" msgstr "" -#: part/models.py:1142 +#: part/models.py:1144 msgid "BOM quantity for this BOM item" msgstr "" -#: part/models.py:1145 +#: part/models.py:1147 msgid "Estimated build wastage quantity (absolute or percentage)" msgstr "" -#: part/models.py:1148 +#: part/models.py:1150 msgid "BOM item reference" msgstr "" -#: part/models.py:1151 +#: part/models.py:1153 msgid "BOM item notes" msgstr "" -#: part/models.py:1153 +#: part/models.py:1155 msgid "BOM line checksum" msgstr "" -#: part/models.py:1216 +#: part/models.py:1218 msgid "Part cannot be added to its own Bill of Materials" msgstr "" -#: part/models.py:1223 +#: part/models.py:1225 #, python-brace-format msgid "Part '{p1}' is used in BOM for '{p2}' (recursive)" msgstr "" @@ -1670,6 +1903,38 @@ msgstr "" msgid "Part Attachments" msgstr "" +#: part/templates/part/bom.html:13 +msgid "Bill of Materials" +msgstr "" + +#: part/templates/part/bom.html:37 +msgid "Remove selected BOM items" +msgstr "" + +#: part/templates/part/bom.html:38 +msgid "Import BOM data" +msgstr "" + +#: part/templates/part/bom.html:39 +msgid "New BOM Item" +msgstr "" + +#: part/templates/part/bom.html:40 +msgid "Finish Editing" +msgstr "" + +#: part/templates/part/bom.html:42 +msgid "Edit BOM" +msgstr "" + +#: part/templates/part/bom.html:44 +msgid "Validate Bill of Materials" +msgstr "" + +#: part/templates/part/bom.html:46 part/views.py:1358 +msgid "Export Bill of Materials" +msgstr "" + #: part/templates/part/category.html:13 part/templates/part/category.html:78 #: templates/stats.html:12 msgid "Part Categories" @@ -1723,7 +1988,7 @@ msgstr "" msgid "Variant Of" msgstr "" -#: part/templates/part/detail.html:57 +#: part/templates/part/detail.html:57 part/templates/part/set_category.html:15 msgid "Category" msgstr "" @@ -1731,7 +1996,7 @@ msgstr "" msgid "Default Supplier" msgstr "" -#: part/templates/part/detail.html:89 +#: part/templates/part/detail.html:89 part/templates/part/params.html:22 msgid "Units" msgstr "" @@ -1763,7 +2028,7 @@ msgstr "" msgid "Part is not a virtual part" msgstr "" -#: part/templates/part/detail.html:132 templates/table_filters.html:91 +#: part/templates/part/detail.html:132 templates/table_filters.html:99 msgid "Assembly" msgstr "" @@ -1775,7 +2040,7 @@ msgstr "" msgid "Part cannot be assembled from other parts" msgstr "" -#: part/templates/part/detail.html:141 templates/table_filters.html:95 +#: part/templates/part/detail.html:141 templates/table_filters.html:103 msgid "Component" msgstr "" @@ -1807,7 +2072,7 @@ msgstr "" msgid "Part can be purchased from external suppliers" msgstr "" -#: part/templates/part/detail.html:168 templates/table_filters.html:103 +#: part/templates/part/detail.html:168 templates/table_filters.html:111 msgid "Salable" msgstr "" @@ -1831,6 +2096,34 @@ msgstr "" msgid "Order Part" msgstr "" +#: part/templates/part/params.html:8 +msgid "Part Parameters" +msgstr "" + +#: part/templates/part/params.html:13 +msgid "Add new parameter" +msgstr "" + +#: part/templates/part/params.html:13 templates/InvenTree/settings/part.html:12 +msgid "New Parameter" +msgstr "" + +#: part/templates/part/params.html:20 +msgid "Name" +msgstr "" + +#: part/templates/part/params.html:21 +msgid "Value" +msgstr "" + +#: part/templates/part/params.html:33 +msgid "Edit" +msgstr "" + +#: part/templates/part/params.html:34 +msgid "Delete" +msgstr "" + #: part/templates/part/part_app_base.html:9 msgid "Part Category" msgstr "" @@ -1840,21 +2133,21 @@ msgid "Part List" msgstr "" #: part/templates/part/part_base.html:11 -msgid "This part is not active" -msgstr "" - -#: part/templates/part/part_base.html:16 msgid "This part is a template part." msgstr "" -#: part/templates/part/part_base.html:18 +#: part/templates/part/part_base.html:13 msgid "It is not a real part, but real parts can be based on this template." msgstr "" -#: part/templates/part/part_base.html:23 +#: part/templates/part/part_base.html:18 msgid "This part is a variant of" msgstr "" +#: part/templates/part/part_base.html:30 +msgid "Inactive" +msgstr "" + #: part/templates/part/part_base.html:38 msgid "Star this part" msgstr "" @@ -1871,8 +2164,8 @@ msgstr "" msgid "In Stock" msgstr "" -#: part/templates/part/part_base.html:131 -msgid "Build Status" +#: part/templates/part/part_base.html:121 +msgid "On Order" msgstr "" #: part/templates/part/part_base.html:136 @@ -1899,7 +2192,19 @@ msgstr "" msgid "New Order" msgstr "" -#: part/templates/part/stock.html:76 +#: part/templates/part/set_category.html:9 +msgid "Set category for the following parts" +msgstr "" + +#: part/templates/part/set_category.html:32 +msgid "Remove part" +msgstr "" + +#: part/templates/part/stock.html:8 +msgid "Part Stock" +msgstr "" + +#: part/templates/part/stock.html:77 msgid "Create New Part" msgstr "" @@ -1931,168 +2236,168 @@ msgstr "" msgid "Tracking" msgstr "" -#: part/views.py:75 +#: part/templates/part/track.html:8 +msgid "Part Tracking" +msgstr "" + +#: part/views.py:74 msgid "Add part attachment" msgstr "" -#: part/views.py:123 +#: part/views.py:122 msgid "Part attachment updated" msgstr "" -#: part/views.py:138 +#: part/views.py:137 msgid "Delete Part Attachment" msgstr "" -#: part/views.py:144 +#: part/views.py:143 msgid "Deleted part attachment" msgstr "" -#: part/views.py:152 +#: part/views.py:151 msgid "Set Part Category" msgstr "" -#: part/views.py:200 +#: part/views.py:199 #, python-brace-format msgid "Set category for {n} parts" msgstr "" -#: part/views.py:235 +#: part/views.py:234 msgid "Create Variant" msgstr "" -#: part/views.py:305 +#: part/views.py:304 msgid "Duplicate Part" msgstr "" -#: part/views.py:310 +#: part/views.py:309 msgid "Copied part" msgstr "" -#: part/views.py:421 +#: part/views.py:420 msgid "Create new part" msgstr "" -#: part/views.py:426 +#: part/views.py:425 msgid "Created new part" msgstr "" -#: part/views.py:605 +#: part/views.py:599 msgid "Part QR Code" msgstr "" -#: part/views.py:622 +#: part/views.py:616 msgid "Upload Part Image" msgstr "" -#: part/views.py:627 part/views.py:662 +#: part/views.py:621 part/views.py:656 msgid "Updated part image" msgstr "" -#: part/views.py:636 +#: part/views.py:630 msgid "Select Part Image" msgstr "" -#: part/views.py:665 +#: part/views.py:659 msgid "Part image not found" msgstr "" -#: part/views.py:676 +#: part/views.py:670 msgid "Edit Part Properties" msgstr "" -#: part/views.py:698 +#: part/views.py:692 msgid "Validate BOM" msgstr "" -#: part/views.py:860 +#: part/views.py:854 msgid "No BOM file provided" msgstr "" -#: part/views.py:1121 +#: part/views.py:1115 msgid "Enter a valid quantity" msgstr "" -#: part/views.py:1145 part/views.py:1148 +#: part/views.py:1139 part/views.py:1142 msgid "Select valid part" msgstr "" -#: part/views.py:1154 +#: part/views.py:1148 msgid "Duplicate part selected" msgstr "" -#: part/views.py:1182 +#: part/views.py:1176 msgid "Select a part" msgstr "" -#: part/views.py:1186 +#: part/views.py:1180 msgid "Specify quantity" msgstr "" -#: part/views.py:1364 -msgid "Export Bill of Materials" -msgstr "" - -#: part/views.py:1402 +#: part/views.py:1396 msgid "Confirm Part Deletion" msgstr "" -#: part/views.py:1409 +#: part/views.py:1403 msgid "Part was deleted" msgstr "" -#: part/views.py:1418 +#: part/views.py:1412 msgid "Part Pricing" msgstr "" -#: part/views.py:1540 +#: part/views.py:1534 msgid "Create Part Parameter Template" msgstr "" -#: part/views.py:1548 +#: part/views.py:1542 msgid "Edit Part Parameter Template" msgstr "" -#: part/views.py:1555 +#: part/views.py:1549 msgid "Delete Part Parameter Template" msgstr "" -#: part/views.py:1563 +#: part/views.py:1557 msgid "Create Part Parameter" msgstr "" -#: part/views.py:1613 +#: part/views.py:1607 msgid "Edit Part Parameter" msgstr "" -#: part/views.py:1627 +#: part/views.py:1621 msgid "Delete Part Parameter" msgstr "" -#: part/views.py:1643 +#: part/views.py:1637 msgid "Edit Part Category" msgstr "" -#: part/views.py:1678 +#: part/views.py:1672 msgid "Delete Part Category" msgstr "" -#: part/views.py:1684 +#: part/views.py:1678 msgid "Part category was deleted" msgstr "" -#: part/views.py:1692 +#: part/views.py:1686 msgid "Create new part category" msgstr "" -#: part/views.py:1743 +#: part/views.py:1737 msgid "Create BOM item" msgstr "" -#: part/views.py:1809 +#: part/views.py:1803 msgid "Edit BOM item" msgstr "" -#: part/views.py:1857 +#: part/views.py:1851 msgid "Confim BOM item deletion" msgstr "" @@ -2128,121 +2433,157 @@ msgstr "" msgid "Set the destination as the default location for selected parts" msgstr "" -#: stock/models.py:210 +#: stock/models.py:214 #, python-brace-format msgid "" "A stock item with this serial number already exists for template part {part}" msgstr "" -#: stock/models.py:215 +#: stock/models.py:219 msgid "A stock item with this serial number already exists" msgstr "" -#: stock/models.py:234 +#: stock/models.py:250 #, python-brace-format msgid "Part type ('{pf}') must be {pe}" msgstr "" -#: stock/models.py:244 stock/models.py:253 +#: stock/models.py:260 stock/models.py:269 msgid "Quantity must be 1 for item with a serial number" msgstr "" -#: stock/models.py:245 +#: stock/models.py:261 msgid "Serial number cannot be set if quantity greater than 1" msgstr "" -#: stock/models.py:261 +#: stock/models.py:277 msgid "Stock item cannot be created for a template Part" msgstr "" -#: stock/models.py:270 +#: stock/models.py:286 msgid "Item cannot belong to itself" msgstr "" -#: stock/models.py:311 -msgid "Base part" -msgstr "" - -#: stock/models.py:319 -msgid "Select a matching supplier part for this stock item" -msgstr "" - #: stock/models.py:323 -msgid "Where is this stock item located?" -msgstr "" - -#: stock/models.py:327 -msgid "Is this item installed in another item?" +msgid "Parent Stock Item" msgstr "" #: stock/models.py:331 -msgid "Item assigned to customer?" +msgid "Base Part" msgstr "" -#: stock/models.py:334 +#: stock/models.py:332 +msgid "Base part" +msgstr "" + +#: stock/models.py:342 +msgid "Select a matching supplier part for this stock item" +msgstr "" + +#: stock/models.py:347 stock/templates/stock/stock_app_base.html:7 +msgid "Stock Location" +msgstr "" + +#: stock/models.py:350 +msgid "Where is this stock item located?" +msgstr "" + +#: stock/models.py:355 +msgid "Installed In" +msgstr "" + +#: stock/models.py:358 +msgid "Is this item installed in another item?" +msgstr "" + +#: stock/models.py:364 msgid "Serial number for this item" msgstr "" -#: stock/models.py:339 +#: stock/models.py:376 msgid "Batch code for this stock item" msgstr "" -#: stock/models.py:348 +#: stock/models.py:380 +msgid "Stock Quantity" +msgstr "" + +#: stock/models.py:389 +msgid "Source Build" +msgstr "" + +#: stock/models.py:391 msgid "Build for this stock item" msgstr "" -#: stock/models.py:357 +#: stock/models.py:398 +msgid "Source Purchase Order" +msgstr "" + +#: stock/models.py:401 msgid "Purchase order for this stock item" msgstr "" -#: stock/models.py:374 +#: stock/models.py:407 +msgid "Destination Sales Order" +msgstr "" + +#: stock/models.py:414 +msgid "Destination Build Order" +msgstr "" + +#: stock/models.py:427 msgid "Delete this Stock Item when stock is depleted" msgstr "" -#: stock/models.py:381 stock/templates/stock/item_notes.html:13 +#: stock/models.py:437 stock/templates/stock/item_notes.html:13 #: stock/templates/stock/item_notes.html:29 msgid "Stock Item Notes" msgstr "" -#: stock/models.py:516 +#: stock/models.py:601 msgid "Quantity must be integer" msgstr "" -#: stock/models.py:522 +#: stock/models.py:607 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({n})" msgstr "" -#: stock/models.py:525 stock/models.py:528 +#: stock/models.py:610 stock/models.py:613 msgid "Serial numbers must be a list of integers" msgstr "" -#: stock/models.py:531 +#: stock/models.py:616 msgid "Quantity does not match serial numbers" msgstr "" -#: stock/models.py:541 +#: stock/models.py:626 msgid "Serial numbers already exist: " msgstr "" -#: stock/models.py:563 +#: stock/models.py:648 msgid "Add serial number" msgstr "" -#: stock/models.py:566 +#: stock/models.py:651 #, python-brace-format msgid "Serialized {n} items" msgstr "" -#: stock/models.py:866 +#: stock/models.py:748 +msgid "StockItem cannot be moved as it is not in stock" +msgstr "" + +#: stock/models.py:957 msgid "Tracking entry title" msgstr "" -#: stock/models.py:868 +#: stock/models.py:959 msgid "Entry notes" msgstr "" -#: stock/models.py:870 +#: stock/models.py:961 msgid "Link to external page for further information" msgstr "" @@ -2251,7 +2592,8 @@ msgid "Stock Tracking Information" msgstr "" #: stock/templates/stock/item_base.html:8 -#: stock/templates/stock/item_base.html:56 +#: stock/templates/stock/item_base.html:52 +#: stock/templates/stock/item_base.html:184 #: stock/templates/stock/stock_adjust.html:16 msgid "Stock Item" msgstr "" @@ -2279,40 +2621,35 @@ msgid "" "This stock item will be automatically deleted when all stock is depleted." msgstr "" -#: stock/templates/stock/item_base.html:45 -msgid "This stock item was split from " -msgstr "" - -#: stock/templates/stock/item_base.html:105 +#: stock/templates/stock/item_base.html:103 msgid "Stock Item Details" msgstr "" -#: stock/templates/stock/item_base.html:119 +#: stock/templates/stock/item_base.html:117 msgid "Belongs To" msgstr "" -#: stock/templates/stock/item_base.html:125 -#: stock/templates/stock/stock_adjust.html:17 -msgid "Location" +#: stock/templates/stock/item_base.html:129 +msgid "Build Order" msgstr "" -#: stock/templates/stock/item_base.html:132 +#: stock/templates/stock/item_base.html:142 msgid "Unique Identifier" msgstr "" -#: stock/templates/stock/item_base.html:139 -msgid "Serial Number" +#: stock/templates/stock/item_base.html:183 +msgid "Parent Item" msgstr "" -#: stock/templates/stock/item_base.html:198 +#: stock/templates/stock/item_base.html:208 msgid "Last Updated" msgstr "" -#: stock/templates/stock/item_base.html:203 +#: stock/templates/stock/item_base.html:213 msgid "Last Stocktake" msgstr "" -#: stock/templates/stock/item_base.html:207 +#: stock/templates/stock/item_base.html:217 msgid "No stocktake performed" msgstr "" @@ -2324,6 +2661,22 @@ msgstr "" msgid "This stock item does not have any child items" msgstr "" +#: stock/templates/stock/location.html:13 +msgid "All stock items" +msgstr "" + +#: stock/templates/stock/location.html:22 +msgid "Count stock items" +msgstr "" + +#: stock/templates/stock/location.html:25 +msgid "Edit stock location" +msgstr "" + +#: stock/templates/stock/location.html:28 +msgid "Delete stock location" +msgstr "" + #: stock/templates/stock/location.html:37 msgid "Location Details" msgstr "" @@ -2355,10 +2708,6 @@ msgstr "" msgid "Stock Locations" msgstr "" -#: stock/templates/stock/stock_app_base.html:7 -msgid "Stock Location" -msgstr "" - #: stock/templates/stock/tabs.html:8 msgid "Children" msgstr "" @@ -2379,134 +2728,134 @@ msgstr "" msgid "Stock Export Options" msgstr "" -#: stock/views.py:278 +#: stock/views.py:276 msgid "Stock Item QR Code" msgstr "" -#: stock/views.py:301 +#: stock/views.py:299 msgid "Adjust Stock" msgstr "" -#: stock/views.py:410 +#: stock/views.py:408 msgid "Move Stock Items" msgstr "" -#: stock/views.py:411 +#: stock/views.py:409 msgid "Count Stock Items" msgstr "" -#: stock/views.py:412 +#: stock/views.py:410 msgid "Remove From Stock" msgstr "" -#: stock/views.py:413 +#: stock/views.py:411 msgid "Add Stock Items" msgstr "" -#: stock/views.py:414 +#: stock/views.py:412 msgid "Delete Stock Items" msgstr "" -#: stock/views.py:442 +#: stock/views.py:440 msgid "Must enter integer value" msgstr "" -#: stock/views.py:447 +#: stock/views.py:445 msgid "Quantity must be positive" msgstr "" -#: stock/views.py:454 +#: stock/views.py:452 #, python-brace-format msgid "Quantity must not exceed {x}" msgstr "" -#: stock/views.py:462 +#: stock/views.py:460 msgid "Confirm stock adjustment" msgstr "" -#: stock/views.py:533 +#: stock/views.py:531 #, python-brace-format msgid "Added stock to {n} items" msgstr "" -#: stock/views.py:548 +#: stock/views.py:546 #, python-brace-format msgid "Removed stock from {n} items" msgstr "" -#: stock/views.py:561 +#: stock/views.py:559 #, python-brace-format msgid "Counted stock for {n} items" msgstr "" -#: stock/views.py:589 +#: stock/views.py:587 msgid "No items were moved" msgstr "" -#: stock/views.py:592 +#: stock/views.py:590 #, python-brace-format msgid "Moved {n} items to {dest}" msgstr "" -#: stock/views.py:611 +#: stock/views.py:609 #, python-brace-format msgid "Deleted {n} stock items" msgstr "" -#: stock/views.py:623 +#: stock/views.py:621 msgid "Edit Stock Item" msgstr "" -#: stock/views.py:659 +#: stock/views.py:657 msgid "Create new Stock Location" msgstr "" -#: stock/views.py:680 +#: stock/views.py:678 msgid "Serialize Stock" msgstr "" -#: stock/views.py:760 +#: stock/views.py:758 msgid "Create new Stock Item" msgstr "" -#: stock/views.py:824 +#: stock/views.py:822 msgid "Copy Stock Item" msgstr "" -#: stock/views.py:892 +#: stock/views.py:893 msgid "Invalid quantity" msgstr "" -#: stock/views.py:895 +#: stock/views.py:896 msgid "Invalid part selection" msgstr "" -#: stock/views.py:942 +#: stock/views.py:943 #, python-brace-format msgid "Created {n} new stock items" msgstr "" -#: stock/views.py:959 stock/views.py:972 +#: stock/views.py:960 stock/views.py:973 msgid "Created new stock item" msgstr "" -#: stock/views.py:989 +#: stock/views.py:990 msgid "Delete Stock Location" msgstr "" -#: stock/views.py:1002 +#: stock/views.py:1003 msgid "Delete Stock Item" msgstr "" -#: stock/views.py:1013 +#: stock/views.py:1014 msgid "Delete Stock Tracking Entry" msgstr "" -#: stock/views.py:1030 +#: stock/views.py:1031 msgid "Edit Stock Tracking Entry" msgstr "" -#: stock/views.py:1039 +#: stock/views.py:1040 msgid "Add Stock Tracking Entry" msgstr "" @@ -2518,6 +2867,18 @@ msgstr "" msgid "No results found" msgstr "" +#: templates/InvenTree/settings/part.html:28 +msgid "No part parameter templates found" +msgstr "" + +#: templates/InvenTree/settings/part.html:47 +msgid "Edit Template" +msgstr "" + +#: templates/InvenTree/settings/part.html:48 +msgid "Delete Template" +msgstr "" + #: templates/InvenTree/starred_parts.html:7 msgid "Starred Parts" msgstr "" @@ -2594,10 +2955,6 @@ msgstr "" msgid "Search" msgstr "" -#: templates/stock_table.html:8 -msgid "New Stock Item" -msgstr "" - #: templates/stock_table.html:12 msgid "Add stock" msgstr "" @@ -2622,70 +2979,74 @@ msgstr "" msgid "Delete Stock" msgstr "" -#: templates/table_filters.html:22 +#: templates/table_filters.html:21 msgid "Include sublocations" msgstr "" -#: templates/table_filters.html:23 +#: templates/table_filters.html:22 msgid "Include stock in sublocations" msgstr "" -#: templates/table_filters.html:27 +#: templates/table_filters.html:26 msgid "Active parts" msgstr "" -#: templates/table_filters.html:28 +#: templates/table_filters.html:27 msgid "Show stock for active parts" msgstr "" -#: templates/table_filters.html:32 templates/table_filters.html:33 +#: templates/table_filters.html:31 templates/table_filters.html:32 msgid "Stock status" msgstr "" -#: templates/table_filters.html:37 +#: templates/table_filters.html:36 msgid "Is allocated" msgstr "" -#: templates/table_filters.html:38 +#: templates/table_filters.html:37 msgid "Item has been alloacted" msgstr "" -#: templates/table_filters.html:58 +#: templates/table_filters.html:46 +msgid "Build status" +msgstr "" + +#: templates/table_filters.html:57 templates/table_filters.html:66 msgid "Order status" msgstr "" -#: templates/table_filters.html:69 +#: templates/table_filters.html:77 msgid "Include subcategories" msgstr "" -#: templates/table_filters.html:70 +#: templates/table_filters.html:78 msgid "Include parts in subcategories" msgstr "" -#: templates/table_filters.html:74 +#: templates/table_filters.html:82 msgid "Active" msgstr "" -#: templates/table_filters.html:75 +#: templates/table_filters.html:83 msgid "Show active parts" msgstr "" -#: templates/table_filters.html:79 +#: templates/table_filters.html:87 msgid "Template" msgstr "" -#: templates/table_filters.html:83 +#: templates/table_filters.html:91 msgid "Stock available" msgstr "" -#: templates/table_filters.html:87 +#: templates/table_filters.html:95 msgid "Low stock" msgstr "" -#: templates/table_filters.html:99 +#: templates/table_filters.html:107 msgid "Starred" msgstr "" -#: templates/table_filters.html:107 +#: templates/table_filters.html:115 msgid "Purchasable" msgstr "" From bbecc8c9005be21dc2d7c07a96d4bc16fabff114 Mon Sep 17 00:00:00 2001 From: Oliver Walters Date: Tue, 28 Apr 2020 09:35:24 +1000 Subject: [PATCH 06/10] Reverse URL bug fix --- InvenTree/order/views.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/InvenTree/order/views.py b/InvenTree/order/views.py index 476a61b5e3..e68dca16ae 100644 --- a/InvenTree/order/views.py +++ b/InvenTree/order/views.py @@ -234,7 +234,7 @@ class PurchaseOrderNotes(UpdateView): def get_success_url(self): - return reverse('purchase-order-notes', kwargs={'pk': self.get_object().id}) + return reverse('po-notes', kwargs={'pk': self.get_object().id}) def get_context_data(self, **kwargs): From 6bdf371490136ab32b21ed7816cbb56ef910d047 Mon Sep 17 00:00:00 2001 From: Oliver Walters Date: Tue, 28 Apr 2020 09:41:47 +1000 Subject: [PATCH 07/10] Moar UI and translation string fixes --- InvenTree/build/templates/build/index.html | 7 +++--- InvenTree/locale/de/LC_MESSAGES/django.po | 23 ++++++++++++------- InvenTree/locale/en/LC_MESSAGES/django.po | 17 +++++++++----- InvenTree/locale/es/LC_MESSAGES/django.po | 17 +++++++++----- InvenTree/part/templates/part/allocation.html | 6 +++-- 5 files changed, 45 insertions(+), 25 deletions(-) diff --git a/InvenTree/build/templates/build/index.html b/InvenTree/build/templates/build/index.html index 9edfecfc45..d72807f9f1 100644 --- a/InvenTree/build/templates/build/index.html +++ b/InvenTree/build/templates/build/index.html @@ -1,8 +1,9 @@ {% extends "base.html" %} {% load static %} +{% load i18n %} {% block page_title %} -InvenTree | Build List +InvenTree | {% trans "Build Orders" %} {% endblock %} {% block content %} @@ -10,7 +11,7 @@ InvenTree | Build List
-

Part Builds

+

{% trans "Build Orders" %}

@@ -20,7 +21,7 @@ InvenTree | Build List
- +
diff --git a/InvenTree/locale/de/LC_MESSAGES/django.po b/InvenTree/locale/de/LC_MESSAGES/django.po index 852b837b6b..a926a257c1 100644 --- a/InvenTree/locale/de/LC_MESSAGES/django.po +++ b/InvenTree/locale/de/LC_MESSAGES/django.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-04-27 23:32+0000\n" +"POT-Creation-Date: 2020-04-27 23:38+0000\n" "PO-Revision-Date: 2020-02-02 08:07+0100\n" "Last-Translator: Christian Schlüter \n" "Language-Team: C \n" @@ -639,6 +639,20 @@ msgstr "Nein" msgid "Completed" msgstr "Fertig" +#: build/templates/build/index.html:6 build/templates/build/index.html:14 +#: order/templates/order/so_builds.html:11 order/templates/order/so_tabs.html:9 +#: part/templates/part/tabs.html:28 +#, fuzzy +#| msgid "Build Notes" +msgid "Build Orders" +msgstr "Bau-Bemerkungen" + +#: build/templates/build/index.html:24 +#, fuzzy +#| msgid "Build Notes" +msgid "New Build Order" +msgstr "Bau-Bemerkungen" + #: build/templates/build/notes.html:13 build/templates/build/notes.html:30 msgid "Build Notes" msgstr "Bau-Bemerkungen" @@ -1778,13 +1792,6 @@ msgstr "" msgid "Sales Order Attachments" msgstr "Bestelldetails" -#: order/templates/order/so_builds.html:11 order/templates/order/so_tabs.html:9 -#: part/templates/part/tabs.html:28 -#, fuzzy -#| msgid "Build Notes" -msgid "Build Orders" -msgstr "Bau-Bemerkungen" - #: order/templates/order/so_lineitem_delete.html:5 #, fuzzy #| msgid "Are you sure you want to delete the following Supplier Parts?" diff --git a/InvenTree/locale/en/LC_MESSAGES/django.po b/InvenTree/locale/en/LC_MESSAGES/django.po index d546eb43b0..6e6bd170bc 100644 --- a/InvenTree/locale/en/LC_MESSAGES/django.po +++ b/InvenTree/locale/en/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-04-27 23:32+0000\n" +"POT-Creation-Date: 2020-04-27 23:38+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -570,6 +570,16 @@ msgstr "" msgid "Completed" msgstr "" +#: build/templates/build/index.html:6 build/templates/build/index.html:14 +#: order/templates/order/so_builds.html:11 order/templates/order/so_tabs.html:9 +#: part/templates/part/tabs.html:28 +msgid "Build Orders" +msgstr "" + +#: build/templates/build/index.html:24 +msgid "New Build Order" +msgstr "" + #: build/templates/build/notes.html:13 build/templates/build/notes.html:30 msgid "Build Notes" msgstr "" @@ -1516,11 +1526,6 @@ msgstr "" msgid "Sales Order Attachments" msgstr "" -#: order/templates/order/so_builds.html:11 order/templates/order/so_tabs.html:9 -#: part/templates/part/tabs.html:28 -msgid "Build Orders" -msgstr "" - #: order/templates/order/so_lineitem_delete.html:5 msgid "Are you sure you wish to delete this line item?" msgstr "" diff --git a/InvenTree/locale/es/LC_MESSAGES/django.po b/InvenTree/locale/es/LC_MESSAGES/django.po index d546eb43b0..6e6bd170bc 100644 --- a/InvenTree/locale/es/LC_MESSAGES/django.po +++ b/InvenTree/locale/es/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-04-27 23:32+0000\n" +"POT-Creation-Date: 2020-04-27 23:38+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -570,6 +570,16 @@ msgstr "" msgid "Completed" msgstr "" +#: build/templates/build/index.html:6 build/templates/build/index.html:14 +#: order/templates/order/so_builds.html:11 order/templates/order/so_tabs.html:9 +#: part/templates/part/tabs.html:28 +msgid "Build Orders" +msgstr "" + +#: build/templates/build/index.html:24 +msgid "New Build Order" +msgstr "" + #: build/templates/build/notes.html:13 build/templates/build/notes.html:30 msgid "Build Notes" msgstr "" @@ -1516,11 +1526,6 @@ msgstr "" msgid "Sales Order Attachments" msgstr "" -#: order/templates/order/so_builds.html:11 order/templates/order/so_tabs.html:9 -#: part/templates/part/tabs.html:28 -msgid "Build Orders" -msgstr "" - #: order/templates/order/so_lineitem_delete.html:5 msgid "Are you sure you wish to delete this line item?" msgstr "" diff --git a/InvenTree/part/templates/part/allocation.html b/InvenTree/part/templates/part/allocation.html index 77fa720403..3cf9e31bcd 100644 --- a/InvenTree/part/templates/part/allocation.html +++ b/InvenTree/part/templates/part/allocation.html @@ -1,10 +1,12 @@ {% extends "part/part_base.html" %} -{% block details %} {% load status_codes %} +{% load i18n %} + +{% block details %} {% include "part/tabs.html" with tab="allocation" %} -

Part Allocation

+

{% trans "Part Stock Allocations" %}

From fb70da0331e5950f56607c57efcb8e8bae20daa4 Mon Sep 17 00:00:00 2001 From: Oliver Walters Date: Tue, 28 Apr 2020 10:35:19 +1000 Subject: [PATCH 08/10] Cleanup part allocation calculation functions --- InvenTree/build/models.py | 6 ++-- InvenTree/part/models.py | 70 +++++++++++++++++++++------------------ InvenTree/stock/models.py | 13 +++++--- 3 files changed, 49 insertions(+), 40 deletions(-) diff --git a/InvenTree/build/models.py b/InvenTree/build/models.py index f5dd359a0b..aaeb33676d 100644 --- a/InvenTree/build/models.py +++ b/InvenTree/build/models.py @@ -25,8 +25,8 @@ from InvenTree.status_codes import BuildStatus, StockStatus from InvenTree.fields import InvenTreeURLField from InvenTree.helpers import decimal2string -from stock.models import StockItem -from part.models import Part, BomItem +from stock import models as StockModels +from part import models as PartModels class Build(MPTTModel): @@ -465,7 +465,7 @@ class BuildItem(models.Model): if self.stock_item.serial and not self.quantity == 1: errors['quantity'] = _('Quantity must be 1 for serialized stock') - except (StockItem.DoesNotExist, Part.DoesNotExist): + except (StockModels.StockItem.DoesNotExist, PartModels.Part.DoesNotExist): pass if len(errors) > 0: diff --git a/InvenTree/part/models.py b/InvenTree/part/models.py index a03f11cbfa..fb0ee6e1f7 100644 --- a/InvenTree/part/models.py +++ b/InvenTree/part/models.py @@ -13,6 +13,7 @@ from django.urls import reverse from django.db import models, transaction from django.db.models import Sum +from django.db.models.functions import Coalesce from django.db.models import prefetch_related_objects from django.core.validators import MinValueValidator @@ -41,6 +42,8 @@ from InvenTree.helpers import decimal2string, normalize from InvenTree.status_codes import BuildStatus, StockStatus, PurchaseOrderStatus +from build import models as BuildModels +from order import models as OrderModels from company.models import SupplierPart from stock import models as StockModels @@ -502,8 +505,7 @@ class Part(models.Model): """ total = self.total_stock - - total -= self.allocation_count + total -= self.allocation_count() return max(total, 0) @@ -594,46 +596,48 @@ class Part(models.Model): return quantity - @property - def build_allocation(self): - """ Return list of builds to which this part is allocated + def build_order_allocations(self): + """ + Return all 'BuildItem' objects which allocate this part to Build objects """ - builds = [] + return BuildModels.BuildItem.objects.filter(stock_item__part__id=self.id) - for item in self.used_in.all().prefetch_related('part__builds'): - - active = item.part.active_builds - - for build in active: - b = {} - - b['build'] = build - b['quantity'] = item.quantity * build.quantity - - builds.append(b) - - prefetch_related_objects(builds, 'build_items') - - return builds - - @property - def allocated_build_count(self): - """ Return the total number of this part that are allocated for builds + def build_order_allocation_count(self): + """ + Return the total amount of this part allocated to build orders """ - return sum([a['quantity'] for a in self.build_allocation]) + query = self.build_order_allocations().aggregate(total=Coalesce(Sum('quantity'), 0)) + + return query['total'] + + def sales_order_allocations(self): + """ + Return all sales-order-allocation objects which allocate this part to a SalesOrder + """ + + return OrderModels.SalesOrderAllocation.objects.filter(item__part__id=self.id) + + def sales_order_allocation_count(self): + """ + Return the tutal quantity of this part allocated to sales orders + """ + + query = self.sales_order_allocations().aggregate(total=Coalesce(Sum('quantity'), 0)) + + return query['total'] + - @property def allocation_count(self): - """ Return true if any of this part is allocated: - - - To another build - - To a customer order + """ + Return the total quantity of stock allocated for this part, + against both build orders and sales orders. """ return sum([ - self.allocated_build_count, + self.build_order_allocation_count(), + self.sales_order_allocation_count(), ]) @property @@ -645,7 +649,7 @@ class Part(models.Model): - belongs_to is None """ - return self.stock_items.filter(StockModels.StockItem.IN_STOCK_FILTER).exclude(status__in=StockStatus.UNAVAILABLE_CODES) + return self.stock_items.filter(StockModels.StockItem.IN_STOCK_FILTER) @property def total_stock(self): diff --git a/InvenTree/stock/models.py b/InvenTree/stock/models.py index 2261d8ad23..c9e4c75336 100644 --- a/InvenTree/stock/models.py +++ b/InvenTree/stock/models.py @@ -31,7 +31,7 @@ from InvenTree.models import InvenTreeTree from InvenTree.fields import InvenTreeURLField from part import models as PartModels -from order.models import PurchaseOrder, SalesOrder +from order import models as OrderModels class StockLocation(InvenTreeTree): @@ -134,7 +134,12 @@ class StockItem(MPTTModel): """ # A Query filter which will be re-used in multiple places to determine if a StockItem is actually "in stock" - IN_STOCK_FILTER = Q(sales_order=None, build_order=None, belongs_to=None) + IN_STOCK_FILTER = Q( + sales_order=None, + build_order=None, + belongs_to=None, + status__in=StockStatus.AVAILABLE_CODES + ) def save(self, *args, **kwargs): if not self.pk: @@ -393,7 +398,7 @@ class StockItem(MPTTModel): ) purchase_order = models.ForeignKey( - PurchaseOrder, + 'order.PurchaseOrder', on_delete=models.SET_NULL, verbose_name=_('Source Purchase Order'), related_name='stock_items', @@ -402,7 +407,7 @@ class StockItem(MPTTModel): ) sales_order = models.ForeignKey( - SalesOrder, + 'order.SalesOrder', on_delete=models.SET_NULL, verbose_name=_("Destination Sales Order"), related_name='stock_items', From 9add3d4409e8c42c2ca0f0d957c6c8aa305218a5 Mon Sep 17 00:00:00 2001 From: Oliver Walters Date: Tue, 28 Apr 2020 10:43:46 +1000 Subject: [PATCH 09/10] Much better rendering and calculation of part allocations --- InvenTree/build/models.py | 10 +- InvenTree/locale/de/LC_MESSAGES/django.po | 221 ++++++++++-------- InvenTree/locale/en/LC_MESSAGES/django.po | 213 +++++++++-------- InvenTree/locale/es/LC_MESSAGES/django.po | 213 +++++++++-------- InvenTree/part/models.py | 2 - InvenTree/part/templates/part/allocation.html | 39 ++-- InvenTree/stock/models.py | 1 - 7 files changed, 375 insertions(+), 324 deletions(-) diff --git a/InvenTree/build/models.py b/InvenTree/build/models.py index aaeb33676d..54094632c1 100644 --- a/InvenTree/build/models.py +++ b/InvenTree/build/models.py @@ -190,7 +190,7 @@ class Build(MPTTModel): q_required = item.quantity * self.quantity # Grab a list of StockItem objects which are "in stock" - stock = StockItem.objects.filter(StockItem.IN_STOCK_FILTER) + stock = StockModels.StockItem.objects.filter(StockModels.StockItem.IN_STOCK_FILTER) # Filter by part reference stock = stock.filter(part=item.sub_part) @@ -282,7 +282,7 @@ class Build(MPTTModel): if self.part.trackable and serial_numbers: # Add new serial numbers for serial in serial_numbers: - item = StockItem.objects.create( + item = StockModels.StockItem.objects.create( part=self.part, build=self, location=location, @@ -296,7 +296,7 @@ class Build(MPTTModel): else: # Add stock of the newly created item - item = StockItem.objects.create( + item = StockModels.StockItem.objects.create( part=self.part, build=self, location=location, @@ -342,9 +342,9 @@ class Build(MPTTModel): """ try: - item = BomItem.objects.get(part=self.part.id, sub_part=part.id) + item = PartModels.BomItem.objects.get(part=self.part.id, sub_part=part.id) q = item.quantity - except BomItem.DoesNotExist: + except PartModels.BomItem.DoesNotExist: q = 0 return q * self.quantity diff --git a/InvenTree/locale/de/LC_MESSAGES/django.po b/InvenTree/locale/de/LC_MESSAGES/django.po index a926a257c1..988db9375c 100644 --- a/InvenTree/locale/de/LC_MESSAGES/django.po +++ b/InvenTree/locale/de/LC_MESSAGES/django.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-04-27 23:38+0000\n" +"POT-Creation-Date: 2020-04-28 00:43+0000\n" "PO-Revision-Date: 2020-02-02 08:07+0100\n" "Last-Translator: Christian Schlüter \n" "Language-Team: C \n" @@ -282,7 +282,7 @@ msgstr "Bau-Status" msgid "Build status code" msgstr "Bau-Status" -#: build/models.py:120 stock/models.py:374 +#: build/models.py:120 stock/models.py:378 #, fuzzy #| msgid "Batch" msgid "Batch Code" @@ -296,11 +296,11 @@ msgstr "Chargennummer für diese Bau-Ausgabe" #: company/templates/company/supplier_part_base.html:57 #: company/templates/company/supplier_part_detail.html:24 #: part/templates/part/detail.html:67 part/templates/part/part_base.html:85 -#: stock/models.py:368 stock/templates/stock/item_base.html:190 +#: stock/models.py:372 stock/templates/stock/item_base.html:190 msgid "External Link" msgstr "" -#: build/models.py:140 stock/models.py:370 +#: build/models.py:140 stock/models.py:374 msgid "Link to external URL" msgstr "Link zu einer externen URL" @@ -308,7 +308,7 @@ msgstr "Link zu einer externen URL" #: company/templates/company/tabs.html:26 order/templates/order/po_tabs.html:15 #: order/templates/order/purchase_order_detail.html:200 #: order/templates/order/so_tabs.html:23 part/templates/part/tabs.html:63 -#: stock/models.py:436 stock/templates/stock/tabs.html:17 +#: stock/models.py:440 stock/templates/stock/tabs.html:17 msgid "Notes" msgstr "Notizen" @@ -384,7 +384,7 @@ msgstr "Lagerobjekt" #: build/templates/build/allocate.html:161 #: order/templates/order/sales_order_detail.html:68 -#: order/templates/order/sales_order_detail.html:150 stock/models.py:362 +#: order/templates/order/sales_order_detail.html:150 stock/models.py:366 #: stock/templates/stock/item_base.html:149 msgid "Serial Number" msgstr "Seriennummer" @@ -398,6 +398,8 @@ msgstr "Seriennummer" #: order/templates/order/purchase_order_detail.html:175 #: order/templates/order/sales_order_detail.html:70 #: order/templates/order/sales_order_detail.html:152 +#: part/templates/part/allocation.html:16 +#: part/templates/part/allocation.html:49 #: stock/templates/stock/item_base.html:20 #: stock/templates/stock/item_base.html:26 #: stock/templates/stock/item_base.html:155 @@ -533,6 +535,7 @@ msgstr "Status" #: order/templates/order/sales_order_base.html:33 #: order/templates/order/sales_order_notes.html:10 #: order/templates/order/sales_order_ship.html:25 +#: part/templates/part/allocation.html:27 #: stock/templates/stock/item_base.html:123 #, fuzzy #| msgid "Sales Orders" @@ -1133,7 +1136,7 @@ msgid "New Sales Order" msgstr "Bestellungen" #: company/templates/company/supplier_part_base.html:6 -#: company/templates/company/supplier_part_base.html:19 stock/models.py:341 +#: company/templates/company/supplier_part_base.html:19 stock/models.py:345 #: stock/templates/stock/item_base.html:202 msgid "Supplier Part" msgstr "Zulieferer-Teil" @@ -1427,7 +1430,7 @@ msgid "Supplier order reference code" msgstr "Bestell-Referenz" #: order/models.py:148 order/models.py:222 part/views.py:1113 -#: stock/models.py:604 +#: stock/models.py:608 msgid "Quantity must be greater than zero" msgstr "Anzahl muss größer Null sein" @@ -2056,177 +2059,208 @@ msgstr "Eintragsmenge zur Preisberechnung" msgid "Select currency for price calculation" msgstr "Währung zur Preisberechnung wählen" -#: part/models.py:62 +#: part/models.py:64 msgid "Default location for parts in this category" msgstr "Standard-Standort für Teile dieser Kategorie" -#: part/models.py:65 +#: part/models.py:67 msgid "Default keywords for parts in this category" msgstr "Standard-Stichworte für Teile dieser Kategorie" -#: part/models.py:339 +#: part/models.py:341 msgid "Part must be unique for name, IPN and revision" msgstr "Namen, Teile- und Revisionsnummern müssen eindeutig sein" -#: part/models.py:353 +#: part/models.py:355 msgid "Part cannot be a template part if it is a variant of another part" msgstr "Teil kann keine Vorlage sein wenn es Variante eines anderen Teils ist" -#: part/models.py:354 +#: part/models.py:356 msgid "Part cannot be a variant of another part if it is already a template" msgstr "" "Teil kann keine Variante eines anderen Teils sein wenn es bereits eine " "Vorlage ist" -#: part/models.py:358 part/templates/part/detail.html:19 +#: part/models.py:360 part/templates/part/detail.html:19 msgid "Part name" msgstr "Name des Teils" -#: part/models.py:362 +#: part/models.py:364 msgid "Is this part a template part?" msgstr "Ist dieses Teil eine Vorlage?" -#: part/models.py:371 +#: part/models.py:373 msgid "Is this part a variant of another part?" msgstr "Ist dieses Teil eine Variante eines anderen Teils?" -#: part/models.py:373 +#: part/models.py:375 msgid "Part description" msgstr "Beschreibung des Teils" -#: part/models.py:375 +#: part/models.py:377 msgid "Part keywords to improve visibility in search results" msgstr "Schlüsselworte um die Sichtbarkeit in Suchergebnissen zu verbessern" -#: part/models.py:380 +#: part/models.py:382 msgid "Part category" msgstr "Teile-Kategorie" -#: part/models.py:382 +#: part/models.py:384 msgid "Internal Part Number" msgstr "Interne Teilenummer" -#: part/models.py:384 +#: part/models.py:386 msgid "Part revision or version number" msgstr "Revisions- oder Versionsnummer" -#: part/models.py:386 +#: part/models.py:388 msgid "Link to extenal URL" msgstr "Link zu einer Externen URL" -#: part/models.py:398 +#: part/models.py:400 msgid "Where is this item normally stored?" msgstr "Wo wird dieses Teil normalerweise gelagert?" -#: part/models.py:442 +#: part/models.py:444 msgid "Default supplier part" msgstr "Standard-Zulieferer?" -#: part/models.py:445 +#: part/models.py:447 msgid "Minimum allowed stock level" msgstr "Minimal zulässiger Lagerbestand" -#: part/models.py:447 +#: part/models.py:449 msgid "Stock keeping units for this part" msgstr "Stock Keeping Units (SKU) für dieses Teil" -#: part/models.py:449 +#: part/models.py:451 msgid "Can this part be built from other parts?" msgstr "Kann dieses Teil aus anderen Teilen angefertigt werden?" -#: part/models.py:451 +#: part/models.py:453 msgid "Can this part be used to build other parts?" msgstr "Kann dieses Teil zum Bau von anderen genutzt werden?" -#: part/models.py:453 +#: part/models.py:455 msgid "Does this part have tracking for unique items?" msgstr "Hat dieses Teil Tracking für einzelne Objekte?" -#: part/models.py:455 +#: part/models.py:457 msgid "Can this part be purchased from external suppliers?" msgstr "Kann dieses Teil von externen Zulieferern gekauft werden?" -#: part/models.py:457 +#: part/models.py:459 msgid "Can this part be sold to customers?" msgstr "Kann dieses Teil an Kunden verkauft werden?" -#: part/models.py:459 +#: part/models.py:461 msgid "Is this part active?" msgstr "Ist dieses Teil aktiv?" -#: part/models.py:461 +#: part/models.py:463 msgid "Is this a virtual part, such as a software product or license?" msgstr "Ist dieses Teil virtuell, wie zum Beispiel eine Software oder Lizenz?" -#: part/models.py:463 +#: part/models.py:465 msgid "Part notes - supports Markdown formatting" msgstr "Bemerkungen - unterstüzt Markdown-Formatierung" -#: part/models.py:465 +#: part/models.py:467 msgid "Stored BOM checksum" msgstr "Prüfsumme der Stückliste gespeichert" -#: part/models.py:1067 +#: part/models.py:1069 msgid "Parameter template name must be unique" msgstr "Vorlagen-Name des Parameters muss eindeutig sein" -#: part/models.py:1072 +#: part/models.py:1074 msgid "Parameter Name" msgstr "Name des Parameters" -#: part/models.py:1074 +#: part/models.py:1076 msgid "Parameter Units" msgstr "Parameter Einheit" -#: part/models.py:1100 +#: part/models.py:1102 msgid "Parent Part" msgstr "Ausgangsteil" -#: part/models.py:1102 +#: part/models.py:1104 msgid "Parameter Template" msgstr "Parameter Vorlage" -#: part/models.py:1104 +#: part/models.py:1106 msgid "Parameter Value" msgstr "Parameter Wert" -#: part/models.py:1128 +#: part/models.py:1130 msgid "Select parent part" msgstr "Ausgangsteil auswählen" -#: part/models.py:1137 +#: part/models.py:1139 msgid "Select part to be used in BOM" msgstr "Teil für die Nutzung in der Stückliste auswählen" -#: part/models.py:1144 +#: part/models.py:1146 msgid "BOM quantity for this BOM item" msgstr "Stücklisten-Anzahl für dieses Stücklisten-Teil" -#: part/models.py:1147 +#: part/models.py:1149 msgid "Estimated build wastage quantity (absolute or percentage)" msgstr "Geschätzter Ausschuss (absolut oder prozentual)" -#: part/models.py:1150 +#: part/models.py:1152 msgid "BOM item reference" msgstr "Referenz des Objekts auf der Stückliste" -#: part/models.py:1153 +#: part/models.py:1155 msgid "BOM item notes" msgstr "Notizen zum Stücklisten-Objekt" -#: part/models.py:1155 +#: part/models.py:1157 msgid "BOM line checksum" msgstr "Prüfsumme der Stückliste" -#: part/models.py:1218 +#: part/models.py:1220 msgid "Part cannot be added to its own Bill of Materials" msgstr "Teil kann nicht zu seiner eigenen Stückliste hinzugefügt werden" -#: part/models.py:1225 +#: part/models.py:1227 #, python-brace-format msgid "Part '{p1}' is used in BOM for '{p2}' (recursive)" msgstr "Teil '{p1}' wird in Stückliste für Teil '{p2}' benutzt (rekursiv)" +#: part/templates/part/allocation.html:10 +#, fuzzy +#| msgid "Edit Stock Location" +msgid "Part Stock Allocations" +msgstr "Lagerobjekt-Standort bearbeiten" + +#: part/templates/part/allocation.html:14 +#: part/templates/part/allocation.html:41 +#, fuzzy +#| msgid "On Order" +msgid "Order" +msgstr "bestellt" + +#: part/templates/part/allocation.html:15 +#: part/templates/part/allocation.html:21 +#: part/templates/part/allocation.html:28 +#: part/templates/part/allocation.html:45 +#: stock/templates/stock/item_base.html:8 +#: stock/templates/stock/item_base.html:52 +#: stock/templates/stock/item_base.html:184 +#: stock/templates/stock/stock_adjust.html:16 +msgid "Stock Item" +msgstr "Lagerobjekt" + +#: part/templates/part/allocation.html:20 +#: stock/templates/stock/item_base.html:129 +#, fuzzy +#| msgid "Build Notes" +msgid "Build Order" +msgstr "Bau-Bemerkungen" + #: part/templates/part/attachments.html:8 msgid "Part Attachments" msgstr "Anhänge" @@ -2873,7 +2907,7 @@ msgstr "Bewegung der Lagerobjekte bestätigen" msgid "Set the destination as the default location for selected parts" msgstr "Setze das Ziel als Standard-Ziel für ausgewählte Teile" -#: stock/models.py:214 +#: stock/models.py:218 #, python-brace-format msgid "" "A stock item with this serial number already exists for template part {part}" @@ -2881,170 +2915,170 @@ msgstr "" "Ein Teil mit dieser Seriennummer existiert bereits für die Teilevorlage " "{part}" -#: stock/models.py:219 +#: stock/models.py:223 msgid "A stock item with this serial number already exists" msgstr "Ein Teil mit dieser Seriennummer existiert bereits" -#: stock/models.py:250 +#: stock/models.py:254 #, python-brace-format msgid "Part type ('{pf}') must be {pe}" msgstr "Teile-Typ ('{pf}') muss {pe} sein" -#: stock/models.py:260 stock/models.py:269 +#: stock/models.py:264 stock/models.py:273 msgid "Quantity must be 1 for item with a serial number" msgstr "Anzahl muss für Objekte mit Seriennummer \"1\" sein" -#: stock/models.py:261 +#: stock/models.py:265 msgid "Serial number cannot be set if quantity greater than 1" msgstr "" "Seriennummer kann nicht gesetzt werden wenn die Anzahl größer als \"1\" ist" -#: stock/models.py:277 +#: stock/models.py:281 msgid "Stock item cannot be created for a template Part" msgstr "Lagerobjekt kann nicht für Vorlagen-Teile angelegt werden" -#: stock/models.py:286 +#: stock/models.py:290 msgid "Item cannot belong to itself" msgstr "Teil kann nicht zu sich selbst gehören" -#: stock/models.py:323 +#: stock/models.py:327 #, fuzzy #| msgid "Stock Item" msgid "Parent Stock Item" msgstr "Lagerobjekt" -#: stock/models.py:331 +#: stock/models.py:335 #, fuzzy #| msgid "Base part" msgid "Base Part" msgstr "Basis-Teil" -#: stock/models.py:332 +#: stock/models.py:336 msgid "Base part" msgstr "Basis-Teil" -#: stock/models.py:342 +#: stock/models.py:346 msgid "Select a matching supplier part for this stock item" msgstr "Passenden Zulieferer für dieses Lagerobjekt auswählen" -#: stock/models.py:347 stock/templates/stock/stock_app_base.html:7 +#: stock/models.py:351 stock/templates/stock/stock_app_base.html:7 #, fuzzy #| msgid "Stock Locations" msgid "Stock Location" msgstr "Lagerobjekt-Standorte" -#: stock/models.py:350 +#: stock/models.py:354 msgid "Where is this stock item located?" msgstr "Wo wird dieses Teil normalerweise gelagert?" -#: stock/models.py:355 +#: stock/models.py:359 #, fuzzy #| msgid "Used In" msgid "Installed In" msgstr "Benutzt in" -#: stock/models.py:358 +#: stock/models.py:362 msgid "Is this item installed in another item?" msgstr "Ist dieses Teil in einem anderen verbaut?" -#: stock/models.py:364 +#: stock/models.py:368 msgid "Serial number for this item" msgstr "Seriennummer für dieses Teil" -#: stock/models.py:376 +#: stock/models.py:380 msgid "Batch code for this stock item" msgstr "Losnummer für dieses Lagerobjekt" -#: stock/models.py:380 +#: stock/models.py:384 #, fuzzy #| msgid "Quantity" msgid "Stock Quantity" msgstr "Anzahl" -#: stock/models.py:389 +#: stock/models.py:393 #, fuzzy #| msgid "Can Build" msgid "Source Build" msgstr "Herstellbar?" -#: stock/models.py:391 +#: stock/models.py:395 msgid "Build for this stock item" msgstr "Bau für dieses Lagerobjekt" -#: stock/models.py:398 +#: stock/models.py:402 #, fuzzy #| msgid "Purchase Order" msgid "Source Purchase Order" msgstr "Kaufvertrag" -#: stock/models.py:401 +#: stock/models.py:405 msgid "Purchase order for this stock item" msgstr "Bestellung für dieses Teil" -#: stock/models.py:407 +#: stock/models.py:411 #, fuzzy #| msgid "Purchase Order" msgid "Destination Sales Order" msgstr "Kaufvertrag" -#: stock/models.py:414 +#: stock/models.py:418 msgid "Destination Build Order" msgstr "" -#: stock/models.py:427 +#: stock/models.py:431 msgid "Delete this Stock Item when stock is depleted" msgstr "Objekt löschen wenn Lagerbestand aufgebraucht" -#: stock/models.py:437 stock/templates/stock/item_notes.html:13 +#: stock/models.py:441 stock/templates/stock/item_notes.html:13 #: stock/templates/stock/item_notes.html:29 msgid "Stock Item Notes" msgstr "Lagerobjekt-Notizen" -#: stock/models.py:601 +#: stock/models.py:605 msgid "Quantity must be integer" msgstr "Anzahl muss eine Ganzzahl sein" -#: stock/models.py:607 +#: stock/models.py:611 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({n})" msgstr "Anzahl darf nicht die verfügbare Anzahl überschreiten ({n})" -#: stock/models.py:610 stock/models.py:613 +#: stock/models.py:614 stock/models.py:617 msgid "Serial numbers must be a list of integers" msgstr "Seriennummern muss eine Liste von Ganzzahlen sein" -#: stock/models.py:616 +#: stock/models.py:620 msgid "Quantity does not match serial numbers" msgstr "Anzahl stimmt nicht mit den Seriennummern überein" -#: stock/models.py:626 +#: stock/models.py:630 msgid "Serial numbers already exist: " msgstr "Seriennummern existieren bereits:" -#: stock/models.py:648 +#: stock/models.py:652 msgid "Add serial number" msgstr "Seriennummer hinzufügen" -#: stock/models.py:651 +#: stock/models.py:655 #, python-brace-format msgid "Serialized {n} items" msgstr "{n} Teile serialisiert" -#: stock/models.py:748 +#: stock/models.py:752 #, fuzzy #| msgid "Stock item cannot be created for a template Part" msgid "StockItem cannot be moved as it is not in stock" msgstr "Lagerobjekt kann nicht für Vorlagen-Teile angelegt werden" -#: stock/models.py:957 +#: stock/models.py:961 msgid "Tracking entry title" msgstr "Name des Eintrags-Trackings" -#: stock/models.py:959 +#: stock/models.py:963 msgid "Entry notes" msgstr "Eintrags-Notizen" -#: stock/models.py:961 +#: stock/models.py:965 msgid "Link to external page for further information" msgstr "Link auf externe Seite für weitere Informationen" @@ -3052,13 +3086,6 @@ msgstr "Link auf externe Seite für weitere Informationen" msgid "Stock Tracking Information" msgstr "Informationen zum Lagerbestands-Tracking" -#: stock/templates/stock/item_base.html:8 -#: stock/templates/stock/item_base.html:52 -#: stock/templates/stock/item_base.html:184 -#: stock/templates/stock/stock_adjust.html:16 -msgid "Stock Item" -msgstr "Lagerobjekt" - #: stock/templates/stock/item_base.html:20 #, fuzzy #| msgid "Stock Item to allocate to build" @@ -3100,12 +3127,6 @@ msgstr "Lagerbestands-Details" msgid "Belongs To" msgstr "Gehört zu" -#: stock/templates/stock/item_base.html:129 -#, fuzzy -#| msgid "Build Notes" -msgid "Build Order" -msgstr "Bau-Bemerkungen" - #: stock/templates/stock/item_base.html:142 msgid "Unique Identifier" msgstr "" diff --git a/InvenTree/locale/en/LC_MESSAGES/django.po b/InvenTree/locale/en/LC_MESSAGES/django.po index 6e6bd170bc..661f3e1f01 100644 --- a/InvenTree/locale/en/LC_MESSAGES/django.po +++ b/InvenTree/locale/en/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-04-27 23:38+0000\n" +"POT-Creation-Date: 2020-04-28 00:43+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -263,7 +263,7 @@ msgstr "" msgid "Build status code" msgstr "" -#: build/models.py:120 stock/models.py:374 +#: build/models.py:120 stock/models.py:378 msgid "Batch Code" msgstr "" @@ -275,11 +275,11 @@ msgstr "" #: company/templates/company/supplier_part_base.html:57 #: company/templates/company/supplier_part_detail.html:24 #: part/templates/part/detail.html:67 part/templates/part/part_base.html:85 -#: stock/models.py:368 stock/templates/stock/item_base.html:190 +#: stock/models.py:372 stock/templates/stock/item_base.html:190 msgid "External Link" msgstr "" -#: build/models.py:140 stock/models.py:370 +#: build/models.py:140 stock/models.py:374 msgid "Link to external URL" msgstr "" @@ -287,7 +287,7 @@ msgstr "" #: company/templates/company/tabs.html:26 order/templates/order/po_tabs.html:15 #: order/templates/order/purchase_order_detail.html:200 #: order/templates/order/so_tabs.html:23 part/templates/part/tabs.html:63 -#: stock/models.py:436 stock/templates/stock/tabs.html:17 +#: stock/models.py:440 stock/templates/stock/tabs.html:17 msgid "Notes" msgstr "" @@ -352,7 +352,7 @@ msgstr "" #: build/templates/build/allocate.html:161 #: order/templates/order/sales_order_detail.html:68 -#: order/templates/order/sales_order_detail.html:150 stock/models.py:362 +#: order/templates/order/sales_order_detail.html:150 stock/models.py:366 #: stock/templates/stock/item_base.html:149 msgid "Serial Number" msgstr "" @@ -366,6 +366,8 @@ msgstr "" #: order/templates/order/purchase_order_detail.html:175 #: order/templates/order/sales_order_detail.html:70 #: order/templates/order/sales_order_detail.html:152 +#: part/templates/part/allocation.html:16 +#: part/templates/part/allocation.html:49 #: stock/templates/stock/item_base.html:20 #: stock/templates/stock/item_base.html:26 #: stock/templates/stock/item_base.html:155 @@ -477,6 +479,7 @@ msgstr "" #: order/templates/order/sales_order_base.html:33 #: order/templates/order/sales_order_notes.html:10 #: order/templates/order/sales_order_ship.html:25 +#: part/templates/part/allocation.html:27 #: stock/templates/stock/item_base.html:123 msgid "Sales Order" msgstr "" @@ -991,7 +994,7 @@ msgid "New Sales Order" msgstr "" #: company/templates/company/supplier_part_base.html:6 -#: company/templates/company/supplier_part_base.html:19 stock/models.py:341 +#: company/templates/company/supplier_part_base.html:19 stock/models.py:345 #: stock/templates/stock/item_base.html:202 msgid "Supplier Part" msgstr "" @@ -1223,7 +1226,7 @@ msgid "Supplier order reference code" msgstr "" #: order/models.py:148 order/models.py:222 part/views.py:1113 -#: stock/models.py:604 +#: stock/models.py:608 msgid "Quantity must be greater than zero" msgstr "" @@ -1735,175 +1738,200 @@ msgstr "" msgid "Select currency for price calculation" msgstr "" -#: part/models.py:62 +#: part/models.py:64 msgid "Default location for parts in this category" msgstr "" -#: part/models.py:65 +#: part/models.py:67 msgid "Default keywords for parts in this category" msgstr "" -#: part/models.py:339 +#: part/models.py:341 msgid "Part must be unique for name, IPN and revision" msgstr "" -#: part/models.py:353 +#: part/models.py:355 msgid "Part cannot be a template part if it is a variant of another part" msgstr "" -#: part/models.py:354 +#: part/models.py:356 msgid "Part cannot be a variant of another part if it is already a template" msgstr "" -#: part/models.py:358 part/templates/part/detail.html:19 +#: part/models.py:360 part/templates/part/detail.html:19 msgid "Part name" msgstr "" -#: part/models.py:362 +#: part/models.py:364 msgid "Is this part a template part?" msgstr "" -#: part/models.py:371 +#: part/models.py:373 msgid "Is this part a variant of another part?" msgstr "" -#: part/models.py:373 +#: part/models.py:375 msgid "Part description" msgstr "" -#: part/models.py:375 +#: part/models.py:377 msgid "Part keywords to improve visibility in search results" msgstr "" -#: part/models.py:380 +#: part/models.py:382 msgid "Part category" msgstr "" -#: part/models.py:382 +#: part/models.py:384 msgid "Internal Part Number" msgstr "" -#: part/models.py:384 +#: part/models.py:386 msgid "Part revision or version number" msgstr "" -#: part/models.py:386 +#: part/models.py:388 msgid "Link to extenal URL" msgstr "" -#: part/models.py:398 +#: part/models.py:400 msgid "Where is this item normally stored?" msgstr "" -#: part/models.py:442 +#: part/models.py:444 msgid "Default supplier part" msgstr "" -#: part/models.py:445 +#: part/models.py:447 msgid "Minimum allowed stock level" msgstr "" -#: part/models.py:447 +#: part/models.py:449 msgid "Stock keeping units for this part" msgstr "" -#: part/models.py:449 +#: part/models.py:451 msgid "Can this part be built from other parts?" msgstr "" -#: part/models.py:451 +#: part/models.py:453 msgid "Can this part be used to build other parts?" msgstr "" -#: part/models.py:453 +#: part/models.py:455 msgid "Does this part have tracking for unique items?" msgstr "" -#: part/models.py:455 +#: part/models.py:457 msgid "Can this part be purchased from external suppliers?" msgstr "" -#: part/models.py:457 +#: part/models.py:459 msgid "Can this part be sold to customers?" msgstr "" -#: part/models.py:459 +#: part/models.py:461 msgid "Is this part active?" msgstr "" -#: part/models.py:461 +#: part/models.py:463 msgid "Is this a virtual part, such as a software product or license?" msgstr "" -#: part/models.py:463 +#: part/models.py:465 msgid "Part notes - supports Markdown formatting" msgstr "" -#: part/models.py:465 +#: part/models.py:467 msgid "Stored BOM checksum" msgstr "" -#: part/models.py:1067 +#: part/models.py:1069 msgid "Parameter template name must be unique" msgstr "" -#: part/models.py:1072 +#: part/models.py:1074 msgid "Parameter Name" msgstr "" -#: part/models.py:1074 +#: part/models.py:1076 msgid "Parameter Units" msgstr "" -#: part/models.py:1100 +#: part/models.py:1102 msgid "Parent Part" msgstr "" -#: part/models.py:1102 +#: part/models.py:1104 msgid "Parameter Template" msgstr "" -#: part/models.py:1104 +#: part/models.py:1106 msgid "Parameter Value" msgstr "" -#: part/models.py:1128 +#: part/models.py:1130 msgid "Select parent part" msgstr "" -#: part/models.py:1137 +#: part/models.py:1139 msgid "Select part to be used in BOM" msgstr "" -#: part/models.py:1144 +#: part/models.py:1146 msgid "BOM quantity for this BOM item" msgstr "" -#: part/models.py:1147 +#: part/models.py:1149 msgid "Estimated build wastage quantity (absolute or percentage)" msgstr "" -#: part/models.py:1150 +#: part/models.py:1152 msgid "BOM item reference" msgstr "" -#: part/models.py:1153 +#: part/models.py:1155 msgid "BOM item notes" msgstr "" -#: part/models.py:1155 +#: part/models.py:1157 msgid "BOM line checksum" msgstr "" -#: part/models.py:1218 +#: part/models.py:1220 msgid "Part cannot be added to its own Bill of Materials" msgstr "" -#: part/models.py:1225 +#: part/models.py:1227 #, python-brace-format msgid "Part '{p1}' is used in BOM for '{p2}' (recursive)" msgstr "" +#: part/templates/part/allocation.html:10 +msgid "Part Stock Allocations" +msgstr "" + +#: part/templates/part/allocation.html:14 +#: part/templates/part/allocation.html:41 +msgid "Order" +msgstr "" + +#: part/templates/part/allocation.html:15 +#: part/templates/part/allocation.html:21 +#: part/templates/part/allocation.html:28 +#: part/templates/part/allocation.html:45 +#: stock/templates/stock/item_base.html:8 +#: stock/templates/stock/item_base.html:52 +#: stock/templates/stock/item_base.html:184 +#: stock/templates/stock/stock_adjust.html:16 +msgid "Stock Item" +msgstr "" + +#: part/templates/part/allocation.html:20 +#: stock/templates/stock/item_base.html:129 +msgid "Build Order" +msgstr "" + #: part/templates/part/attachments.html:8 msgid "Part Attachments" msgstr "" @@ -2438,157 +2466,157 @@ msgstr "" msgid "Set the destination as the default location for selected parts" msgstr "" -#: stock/models.py:214 +#: stock/models.py:218 #, python-brace-format msgid "" "A stock item with this serial number already exists for template part {part}" msgstr "" -#: stock/models.py:219 +#: stock/models.py:223 msgid "A stock item with this serial number already exists" msgstr "" -#: stock/models.py:250 +#: stock/models.py:254 #, python-brace-format msgid "Part type ('{pf}') must be {pe}" msgstr "" -#: stock/models.py:260 stock/models.py:269 +#: stock/models.py:264 stock/models.py:273 msgid "Quantity must be 1 for item with a serial number" msgstr "" -#: stock/models.py:261 +#: stock/models.py:265 msgid "Serial number cannot be set if quantity greater than 1" msgstr "" -#: stock/models.py:277 +#: stock/models.py:281 msgid "Stock item cannot be created for a template Part" msgstr "" -#: stock/models.py:286 +#: stock/models.py:290 msgid "Item cannot belong to itself" msgstr "" -#: stock/models.py:323 +#: stock/models.py:327 msgid "Parent Stock Item" msgstr "" -#: stock/models.py:331 +#: stock/models.py:335 msgid "Base Part" msgstr "" -#: stock/models.py:332 +#: stock/models.py:336 msgid "Base part" msgstr "" -#: stock/models.py:342 +#: stock/models.py:346 msgid "Select a matching supplier part for this stock item" msgstr "" -#: stock/models.py:347 stock/templates/stock/stock_app_base.html:7 +#: stock/models.py:351 stock/templates/stock/stock_app_base.html:7 msgid "Stock Location" msgstr "" -#: stock/models.py:350 +#: stock/models.py:354 msgid "Where is this stock item located?" msgstr "" -#: stock/models.py:355 +#: stock/models.py:359 msgid "Installed In" msgstr "" -#: stock/models.py:358 +#: stock/models.py:362 msgid "Is this item installed in another item?" msgstr "" -#: stock/models.py:364 +#: stock/models.py:368 msgid "Serial number for this item" msgstr "" -#: stock/models.py:376 +#: stock/models.py:380 msgid "Batch code for this stock item" msgstr "" -#: stock/models.py:380 +#: stock/models.py:384 msgid "Stock Quantity" msgstr "" -#: stock/models.py:389 +#: stock/models.py:393 msgid "Source Build" msgstr "" -#: stock/models.py:391 +#: stock/models.py:395 msgid "Build for this stock item" msgstr "" -#: stock/models.py:398 +#: stock/models.py:402 msgid "Source Purchase Order" msgstr "" -#: stock/models.py:401 +#: stock/models.py:405 msgid "Purchase order for this stock item" msgstr "" -#: stock/models.py:407 +#: stock/models.py:411 msgid "Destination Sales Order" msgstr "" -#: stock/models.py:414 +#: stock/models.py:418 msgid "Destination Build Order" msgstr "" -#: stock/models.py:427 +#: stock/models.py:431 msgid "Delete this Stock Item when stock is depleted" msgstr "" -#: stock/models.py:437 stock/templates/stock/item_notes.html:13 +#: stock/models.py:441 stock/templates/stock/item_notes.html:13 #: stock/templates/stock/item_notes.html:29 msgid "Stock Item Notes" msgstr "" -#: stock/models.py:601 +#: stock/models.py:605 msgid "Quantity must be integer" msgstr "" -#: stock/models.py:607 +#: stock/models.py:611 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({n})" msgstr "" -#: stock/models.py:610 stock/models.py:613 +#: stock/models.py:614 stock/models.py:617 msgid "Serial numbers must be a list of integers" msgstr "" -#: stock/models.py:616 +#: stock/models.py:620 msgid "Quantity does not match serial numbers" msgstr "" -#: stock/models.py:626 +#: stock/models.py:630 msgid "Serial numbers already exist: " msgstr "" -#: stock/models.py:648 +#: stock/models.py:652 msgid "Add serial number" msgstr "" -#: stock/models.py:651 +#: stock/models.py:655 #, python-brace-format msgid "Serialized {n} items" msgstr "" -#: stock/models.py:748 +#: stock/models.py:752 msgid "StockItem cannot be moved as it is not in stock" msgstr "" -#: stock/models.py:957 +#: stock/models.py:961 msgid "Tracking entry title" msgstr "" -#: stock/models.py:959 +#: stock/models.py:963 msgid "Entry notes" msgstr "" -#: stock/models.py:961 +#: stock/models.py:965 msgid "Link to external page for further information" msgstr "" @@ -2596,13 +2624,6 @@ msgstr "" msgid "Stock Tracking Information" msgstr "" -#: stock/templates/stock/item_base.html:8 -#: stock/templates/stock/item_base.html:52 -#: stock/templates/stock/item_base.html:184 -#: stock/templates/stock/stock_adjust.html:16 -msgid "Stock Item" -msgstr "" - #: stock/templates/stock/item_base.html:20 msgid "This stock item is allocated to Sales Order" msgstr "" @@ -2634,10 +2655,6 @@ msgstr "" msgid "Belongs To" msgstr "" -#: stock/templates/stock/item_base.html:129 -msgid "Build Order" -msgstr "" - #: stock/templates/stock/item_base.html:142 msgid "Unique Identifier" msgstr "" diff --git a/InvenTree/locale/es/LC_MESSAGES/django.po b/InvenTree/locale/es/LC_MESSAGES/django.po index 6e6bd170bc..661f3e1f01 100644 --- a/InvenTree/locale/es/LC_MESSAGES/django.po +++ b/InvenTree/locale/es/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-04-27 23:38+0000\n" +"POT-Creation-Date: 2020-04-28 00:43+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -263,7 +263,7 @@ msgstr "" msgid "Build status code" msgstr "" -#: build/models.py:120 stock/models.py:374 +#: build/models.py:120 stock/models.py:378 msgid "Batch Code" msgstr "" @@ -275,11 +275,11 @@ msgstr "" #: company/templates/company/supplier_part_base.html:57 #: company/templates/company/supplier_part_detail.html:24 #: part/templates/part/detail.html:67 part/templates/part/part_base.html:85 -#: stock/models.py:368 stock/templates/stock/item_base.html:190 +#: stock/models.py:372 stock/templates/stock/item_base.html:190 msgid "External Link" msgstr "" -#: build/models.py:140 stock/models.py:370 +#: build/models.py:140 stock/models.py:374 msgid "Link to external URL" msgstr "" @@ -287,7 +287,7 @@ msgstr "" #: company/templates/company/tabs.html:26 order/templates/order/po_tabs.html:15 #: order/templates/order/purchase_order_detail.html:200 #: order/templates/order/so_tabs.html:23 part/templates/part/tabs.html:63 -#: stock/models.py:436 stock/templates/stock/tabs.html:17 +#: stock/models.py:440 stock/templates/stock/tabs.html:17 msgid "Notes" msgstr "" @@ -352,7 +352,7 @@ msgstr "" #: build/templates/build/allocate.html:161 #: order/templates/order/sales_order_detail.html:68 -#: order/templates/order/sales_order_detail.html:150 stock/models.py:362 +#: order/templates/order/sales_order_detail.html:150 stock/models.py:366 #: stock/templates/stock/item_base.html:149 msgid "Serial Number" msgstr "" @@ -366,6 +366,8 @@ msgstr "" #: order/templates/order/purchase_order_detail.html:175 #: order/templates/order/sales_order_detail.html:70 #: order/templates/order/sales_order_detail.html:152 +#: part/templates/part/allocation.html:16 +#: part/templates/part/allocation.html:49 #: stock/templates/stock/item_base.html:20 #: stock/templates/stock/item_base.html:26 #: stock/templates/stock/item_base.html:155 @@ -477,6 +479,7 @@ msgstr "" #: order/templates/order/sales_order_base.html:33 #: order/templates/order/sales_order_notes.html:10 #: order/templates/order/sales_order_ship.html:25 +#: part/templates/part/allocation.html:27 #: stock/templates/stock/item_base.html:123 msgid "Sales Order" msgstr "" @@ -991,7 +994,7 @@ msgid "New Sales Order" msgstr "" #: company/templates/company/supplier_part_base.html:6 -#: company/templates/company/supplier_part_base.html:19 stock/models.py:341 +#: company/templates/company/supplier_part_base.html:19 stock/models.py:345 #: stock/templates/stock/item_base.html:202 msgid "Supplier Part" msgstr "" @@ -1223,7 +1226,7 @@ msgid "Supplier order reference code" msgstr "" #: order/models.py:148 order/models.py:222 part/views.py:1113 -#: stock/models.py:604 +#: stock/models.py:608 msgid "Quantity must be greater than zero" msgstr "" @@ -1735,175 +1738,200 @@ msgstr "" msgid "Select currency for price calculation" msgstr "" -#: part/models.py:62 +#: part/models.py:64 msgid "Default location for parts in this category" msgstr "" -#: part/models.py:65 +#: part/models.py:67 msgid "Default keywords for parts in this category" msgstr "" -#: part/models.py:339 +#: part/models.py:341 msgid "Part must be unique for name, IPN and revision" msgstr "" -#: part/models.py:353 +#: part/models.py:355 msgid "Part cannot be a template part if it is a variant of another part" msgstr "" -#: part/models.py:354 +#: part/models.py:356 msgid "Part cannot be a variant of another part if it is already a template" msgstr "" -#: part/models.py:358 part/templates/part/detail.html:19 +#: part/models.py:360 part/templates/part/detail.html:19 msgid "Part name" msgstr "" -#: part/models.py:362 +#: part/models.py:364 msgid "Is this part a template part?" msgstr "" -#: part/models.py:371 +#: part/models.py:373 msgid "Is this part a variant of another part?" msgstr "" -#: part/models.py:373 +#: part/models.py:375 msgid "Part description" msgstr "" -#: part/models.py:375 +#: part/models.py:377 msgid "Part keywords to improve visibility in search results" msgstr "" -#: part/models.py:380 +#: part/models.py:382 msgid "Part category" msgstr "" -#: part/models.py:382 +#: part/models.py:384 msgid "Internal Part Number" msgstr "" -#: part/models.py:384 +#: part/models.py:386 msgid "Part revision or version number" msgstr "" -#: part/models.py:386 +#: part/models.py:388 msgid "Link to extenal URL" msgstr "" -#: part/models.py:398 +#: part/models.py:400 msgid "Where is this item normally stored?" msgstr "" -#: part/models.py:442 +#: part/models.py:444 msgid "Default supplier part" msgstr "" -#: part/models.py:445 +#: part/models.py:447 msgid "Minimum allowed stock level" msgstr "" -#: part/models.py:447 +#: part/models.py:449 msgid "Stock keeping units for this part" msgstr "" -#: part/models.py:449 +#: part/models.py:451 msgid "Can this part be built from other parts?" msgstr "" -#: part/models.py:451 +#: part/models.py:453 msgid "Can this part be used to build other parts?" msgstr "" -#: part/models.py:453 +#: part/models.py:455 msgid "Does this part have tracking for unique items?" msgstr "" -#: part/models.py:455 +#: part/models.py:457 msgid "Can this part be purchased from external suppliers?" msgstr "" -#: part/models.py:457 +#: part/models.py:459 msgid "Can this part be sold to customers?" msgstr "" -#: part/models.py:459 +#: part/models.py:461 msgid "Is this part active?" msgstr "" -#: part/models.py:461 +#: part/models.py:463 msgid "Is this a virtual part, such as a software product or license?" msgstr "" -#: part/models.py:463 +#: part/models.py:465 msgid "Part notes - supports Markdown formatting" msgstr "" -#: part/models.py:465 +#: part/models.py:467 msgid "Stored BOM checksum" msgstr "" -#: part/models.py:1067 +#: part/models.py:1069 msgid "Parameter template name must be unique" msgstr "" -#: part/models.py:1072 +#: part/models.py:1074 msgid "Parameter Name" msgstr "" -#: part/models.py:1074 +#: part/models.py:1076 msgid "Parameter Units" msgstr "" -#: part/models.py:1100 +#: part/models.py:1102 msgid "Parent Part" msgstr "" -#: part/models.py:1102 +#: part/models.py:1104 msgid "Parameter Template" msgstr "" -#: part/models.py:1104 +#: part/models.py:1106 msgid "Parameter Value" msgstr "" -#: part/models.py:1128 +#: part/models.py:1130 msgid "Select parent part" msgstr "" -#: part/models.py:1137 +#: part/models.py:1139 msgid "Select part to be used in BOM" msgstr "" -#: part/models.py:1144 +#: part/models.py:1146 msgid "BOM quantity for this BOM item" msgstr "" -#: part/models.py:1147 +#: part/models.py:1149 msgid "Estimated build wastage quantity (absolute or percentage)" msgstr "" -#: part/models.py:1150 +#: part/models.py:1152 msgid "BOM item reference" msgstr "" -#: part/models.py:1153 +#: part/models.py:1155 msgid "BOM item notes" msgstr "" -#: part/models.py:1155 +#: part/models.py:1157 msgid "BOM line checksum" msgstr "" -#: part/models.py:1218 +#: part/models.py:1220 msgid "Part cannot be added to its own Bill of Materials" msgstr "" -#: part/models.py:1225 +#: part/models.py:1227 #, python-brace-format msgid "Part '{p1}' is used in BOM for '{p2}' (recursive)" msgstr "" +#: part/templates/part/allocation.html:10 +msgid "Part Stock Allocations" +msgstr "" + +#: part/templates/part/allocation.html:14 +#: part/templates/part/allocation.html:41 +msgid "Order" +msgstr "" + +#: part/templates/part/allocation.html:15 +#: part/templates/part/allocation.html:21 +#: part/templates/part/allocation.html:28 +#: part/templates/part/allocation.html:45 +#: stock/templates/stock/item_base.html:8 +#: stock/templates/stock/item_base.html:52 +#: stock/templates/stock/item_base.html:184 +#: stock/templates/stock/stock_adjust.html:16 +msgid "Stock Item" +msgstr "" + +#: part/templates/part/allocation.html:20 +#: stock/templates/stock/item_base.html:129 +msgid "Build Order" +msgstr "" + #: part/templates/part/attachments.html:8 msgid "Part Attachments" msgstr "" @@ -2438,157 +2466,157 @@ msgstr "" msgid "Set the destination as the default location for selected parts" msgstr "" -#: stock/models.py:214 +#: stock/models.py:218 #, python-brace-format msgid "" "A stock item with this serial number already exists for template part {part}" msgstr "" -#: stock/models.py:219 +#: stock/models.py:223 msgid "A stock item with this serial number already exists" msgstr "" -#: stock/models.py:250 +#: stock/models.py:254 #, python-brace-format msgid "Part type ('{pf}') must be {pe}" msgstr "" -#: stock/models.py:260 stock/models.py:269 +#: stock/models.py:264 stock/models.py:273 msgid "Quantity must be 1 for item with a serial number" msgstr "" -#: stock/models.py:261 +#: stock/models.py:265 msgid "Serial number cannot be set if quantity greater than 1" msgstr "" -#: stock/models.py:277 +#: stock/models.py:281 msgid "Stock item cannot be created for a template Part" msgstr "" -#: stock/models.py:286 +#: stock/models.py:290 msgid "Item cannot belong to itself" msgstr "" -#: stock/models.py:323 +#: stock/models.py:327 msgid "Parent Stock Item" msgstr "" -#: stock/models.py:331 +#: stock/models.py:335 msgid "Base Part" msgstr "" -#: stock/models.py:332 +#: stock/models.py:336 msgid "Base part" msgstr "" -#: stock/models.py:342 +#: stock/models.py:346 msgid "Select a matching supplier part for this stock item" msgstr "" -#: stock/models.py:347 stock/templates/stock/stock_app_base.html:7 +#: stock/models.py:351 stock/templates/stock/stock_app_base.html:7 msgid "Stock Location" msgstr "" -#: stock/models.py:350 +#: stock/models.py:354 msgid "Where is this stock item located?" msgstr "" -#: stock/models.py:355 +#: stock/models.py:359 msgid "Installed In" msgstr "" -#: stock/models.py:358 +#: stock/models.py:362 msgid "Is this item installed in another item?" msgstr "" -#: stock/models.py:364 +#: stock/models.py:368 msgid "Serial number for this item" msgstr "" -#: stock/models.py:376 +#: stock/models.py:380 msgid "Batch code for this stock item" msgstr "" -#: stock/models.py:380 +#: stock/models.py:384 msgid "Stock Quantity" msgstr "" -#: stock/models.py:389 +#: stock/models.py:393 msgid "Source Build" msgstr "" -#: stock/models.py:391 +#: stock/models.py:395 msgid "Build for this stock item" msgstr "" -#: stock/models.py:398 +#: stock/models.py:402 msgid "Source Purchase Order" msgstr "" -#: stock/models.py:401 +#: stock/models.py:405 msgid "Purchase order for this stock item" msgstr "" -#: stock/models.py:407 +#: stock/models.py:411 msgid "Destination Sales Order" msgstr "" -#: stock/models.py:414 +#: stock/models.py:418 msgid "Destination Build Order" msgstr "" -#: stock/models.py:427 +#: stock/models.py:431 msgid "Delete this Stock Item when stock is depleted" msgstr "" -#: stock/models.py:437 stock/templates/stock/item_notes.html:13 +#: stock/models.py:441 stock/templates/stock/item_notes.html:13 #: stock/templates/stock/item_notes.html:29 msgid "Stock Item Notes" msgstr "" -#: stock/models.py:601 +#: stock/models.py:605 msgid "Quantity must be integer" msgstr "" -#: stock/models.py:607 +#: stock/models.py:611 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({n})" msgstr "" -#: stock/models.py:610 stock/models.py:613 +#: stock/models.py:614 stock/models.py:617 msgid "Serial numbers must be a list of integers" msgstr "" -#: stock/models.py:616 +#: stock/models.py:620 msgid "Quantity does not match serial numbers" msgstr "" -#: stock/models.py:626 +#: stock/models.py:630 msgid "Serial numbers already exist: " msgstr "" -#: stock/models.py:648 +#: stock/models.py:652 msgid "Add serial number" msgstr "" -#: stock/models.py:651 +#: stock/models.py:655 #, python-brace-format msgid "Serialized {n} items" msgstr "" -#: stock/models.py:748 +#: stock/models.py:752 msgid "StockItem cannot be moved as it is not in stock" msgstr "" -#: stock/models.py:957 +#: stock/models.py:961 msgid "Tracking entry title" msgstr "" -#: stock/models.py:959 +#: stock/models.py:963 msgid "Entry notes" msgstr "" -#: stock/models.py:961 +#: stock/models.py:965 msgid "Link to external page for further information" msgstr "" @@ -2596,13 +2624,6 @@ msgstr "" msgid "Stock Tracking Information" msgstr "" -#: stock/templates/stock/item_base.html:8 -#: stock/templates/stock/item_base.html:52 -#: stock/templates/stock/item_base.html:184 -#: stock/templates/stock/stock_adjust.html:16 -msgid "Stock Item" -msgstr "" - #: stock/templates/stock/item_base.html:20 msgid "This stock item is allocated to Sales Order" msgstr "" @@ -2634,10 +2655,6 @@ msgstr "" msgid "Belongs To" msgstr "" -#: stock/templates/stock/item_base.html:129 -msgid "Build Order" -msgstr "" - #: stock/templates/stock/item_base.html:142 msgid "Unique Identifier" msgstr "" diff --git a/InvenTree/part/models.py b/InvenTree/part/models.py index fb0ee6e1f7..021695f9bf 100644 --- a/InvenTree/part/models.py +++ b/InvenTree/part/models.py @@ -14,7 +14,6 @@ from django.urls import reverse from django.db import models, transaction from django.db.models import Sum from django.db.models.functions import Coalesce -from django.db.models import prefetch_related_objects from django.core.validators import MinValueValidator from django.contrib.auth.models import User @@ -628,7 +627,6 @@ class Part(models.Model): return query['total'] - def allocation_count(self): """ Return the total quantity of stock allocated for this part, diff --git a/InvenTree/part/templates/part/allocation.html b/InvenTree/part/templates/part/allocation.html index 3cf9e31bcd..7892fe30e5 100644 --- a/InvenTree/part/templates/part/allocation.html +++ b/InvenTree/part/templates/part/allocation.html @@ -1,6 +1,7 @@ {% extends "part/part_base.html" %} {% load status_codes %} {% load i18n %} +{% load inventree_extras %} {% block details %} @@ -10,17 +11,22 @@
- - - - + + + -{% for allocation in part.build_allocation %} +{% for allocation in part.build_order_allocations %} - - - - + + + + +{% endfor %} +{% for allocation in part.sales_order_allocations %} + + + + {% endfor %}
BuildMakingAllocatedStatus{% trans "Order" %}{% trans "Stock Item" %}{% trans "Quantity" %}
{{ allocation.build.title }}{{ allocation.build.quantity }} × {{ allocation.build.part.full_name }}{{ allocation.quantity }}{% build_status_label allocation.build.status %}{% trans "Build Order" %}: {{ allocation.build.pk }}{% trans "Stock Item" %}: {{ allocation.stock_item.id }}{% decimal allocation.quantity %}
{% trans "Sales Order" %}: {{ allocation.line.order.pk }}{% trans "Stock Item" %}: {{ allocation.item.id }}{% decimal allocation.quantity %}
@@ -32,23 +38,16 @@ $("#build-table").inventreeTable({ columns: [ { - title: 'Build', + title: '{% trans "Order" %}', sortable: true, }, { - title: 'Making', + title: '{% trans "Stock Item" %}', sortable: true, }, { - title: 'Allocated', - sortable: false, - formatter: function(value, row, index, field) { - return parseFloat(value); - }, - }, - { - title: 'Status', - sortable: false, + title: '{% trans "Quantity" %}', + sortable: true, } ] }); diff --git a/InvenTree/stock/models.py b/InvenTree/stock/models.py index c9e4c75336..36e8064138 100644 --- a/InvenTree/stock/models.py +++ b/InvenTree/stock/models.py @@ -31,7 +31,6 @@ from InvenTree.models import InvenTreeTree from InvenTree.fields import InvenTreeURLField from part import models as PartModels -from order import models as OrderModels class StockLocation(InvenTreeTree): From ee906fc6e67103eb84fc59c3988b72b377e051fb Mon Sep 17 00:00:00 2001 From: Oliver Walters Date: Tue, 28 Apr 2020 10:46:02 +1000 Subject: [PATCH 10/10] Unit test fixes --- InvenTree/build/tests.py | 4 ---- 1 file changed, 4 deletions(-) diff --git a/InvenTree/build/tests.py b/InvenTree/build/tests.py index 42b953fe20..9b6d51c33a 100644 --- a/InvenTree/build/tests.py +++ b/InvenTree/build/tests.py @@ -141,10 +141,6 @@ class TestBuildViews(TestCase): response = self.client.get(reverse('build-index')) self.assertEqual(response.status_code, 200) - content = str(response.content) - - self.assertIn("Part Builds", content) - def test_build_detail(self): """ Test the detail view for a Build object """