Make company notes field markdownable

This commit is contained in:
Oliver Walters 2020-02-01 23:31:45 +11:00
parent 1f71a93d88
commit ca9f9e047c
5 changed files with 533 additions and 226 deletions

View File

@ -0,0 +1,19 @@
# Generated by Django 2.2.9 on 2020-02-01 12:31
from django.db import migrations
import markdownx.models
class Migration(migrations.Migration):
dependencies = [
('company', '0009_auto_20191118_2323'),
]
operations = [
migrations.AlterField(
model_name='company',
name='notes',
field=markdownx.models.MarkdownxField(blank=True),
),
]

View File

@ -10,6 +10,7 @@ import os
import math import math
from decimal import Decimal from decimal import Decimal
from django.utils.translation import gettext_lazy as _
from django.core.validators import MinValueValidator from django.core.validators import MinValueValidator
from django.db import models from django.db import models
from django.db.models import Sum from django.db.models import Sum
@ -18,6 +19,8 @@ from django.apps import apps
from django.urls import reverse from django.urls import reverse
from django.conf import settings from django.conf import settings
from markdownx.models import MarkdownxField
from InvenTree.fields import InvenTreeURLField from InvenTree.fields import InvenTreeURLField
from InvenTree.status_codes import OrderStatus from InvenTree.status_codes import OrderStatus
from common.models import Currency from common.models import Currency
@ -68,32 +71,32 @@ class Company(models.Model):
""" """
name = models.CharField(max_length=100, blank=False, unique=True, name = models.CharField(max_length=100, blank=False, unique=True,
help_text='Company name') help_text=_('Company name'))
description = models.CharField(max_length=500, help_text='Description of the company') description = models.CharField(max_length=500, help_text=_('Description of the company'))
website = models.URLField(blank=True, help_text='Company website URL') website = models.URLField(blank=True, help_text=_('Company website URL'))
address = models.CharField(max_length=200, address = models.CharField(max_length=200,
blank=True, help_text='Company address') blank=True, help_text=_('Company address'))
phone = models.CharField(max_length=50, phone = models.CharField(max_length=50,
blank=True, help_text='Contact phone number') blank=True, help_text=_('Contact phone number'))
email = models.EmailField(blank=True, help_text='Contact email address') email = models.EmailField(blank=True, help_text=_('Contact email address'))
contact = models.CharField(max_length=100, contact = models.CharField(max_length=100,
blank=True, help_text='Point of contact') blank=True, help_text=_('Point of contact'))
URL = InvenTreeURLField(blank=True, help_text='Link to external company information') URL = InvenTreeURLField(blank=True, help_text=_('Link to external company information'))
image = models.ImageField(upload_to=rename_company_image, max_length=255, null=True, blank=True) image = models.ImageField(upload_to=rename_company_image, max_length=255, null=True, blank=True)
notes = models.TextField(blank=True) notes = MarkdownxField(blank=True)
is_customer = models.BooleanField(default=False, help_text='Do you sell items to this company?') is_customer = models.BooleanField(default=False, help_text=_('Do you sell items to this company?'))
is_supplier = models.BooleanField(default=True, help_text='Do you purchase items from this company?') is_supplier = models.BooleanField(default=True, help_text=_('Do you purchase items from this company?'))
def __str__(self): def __str__(self):
""" Get string representation of a Company """ """ Get string representation of a Company """
@ -223,32 +226,32 @@ class SupplierPart(models.Model):
'purchaseable': True, 'purchaseable': True,
'is_template': False, 'is_template': False,
}, },
help_text='Select part', help_text=_('Select part'),
) )
supplier = models.ForeignKey(Company, on_delete=models.CASCADE, supplier = models.ForeignKey(Company, on_delete=models.CASCADE,
related_name='parts', related_name='parts',
limit_choices_to={'is_supplier': True}, limit_choices_to={'is_supplier': True},
help_text='Select supplier', help_text=_('Select supplier'),
) )
SKU = models.CharField(max_length=100, help_text='Supplier stock keeping unit') SKU = models.CharField(max_length=100, help_text=_('Supplier stock keeping unit'))
manufacturer = models.CharField(max_length=100, blank=True, help_text='Manufacturer') manufacturer = models.CharField(max_length=100, blank=True, help_text=_('Manufacturer'))
MPN = models.CharField(max_length=100, blank=True, help_text='Manufacturer part number') MPN = models.CharField(max_length=100, blank=True, help_text=_('Manufacturer part number'))
URL = InvenTreeURLField(blank=True, help_text='URL for external supplier part link') URL = InvenTreeURLField(blank=True, help_text=_('URL for external supplier part link'))
description = models.CharField(max_length=250, blank=True, help_text='Supplier part description') description = models.CharField(max_length=250, blank=True, help_text=_('Supplier part description'))
note = models.CharField(max_length=100, blank=True, help_text='Notes') note = models.CharField(max_length=100, blank=True, help_text=_('Notes'))
base_cost = models.DecimalField(max_digits=10, decimal_places=3, default=0, validators=[MinValueValidator(0)], help_text='Minimum charge (e.g. stocking fee)') base_cost = models.DecimalField(max_digits=10, decimal_places=3, default=0, validators=[MinValueValidator(0)], help_text=_('Minimum charge (e.g. stocking fee)'))
packaging = models.CharField(max_length=50, blank=True, help_text='Part packaging') packaging = models.CharField(max_length=50, blank=True, help_text=_('Part packaging'))
multiple = models.PositiveIntegerField(default=1, validators=[MinValueValidator(1)], help_text='Order multiple') multiple = models.PositiveIntegerField(default=1, validators=[MinValueValidator(1)], help_text=('Order multiple'))
# TODO - Reimplement lead-time as a charfield with special validation (pattern matching). # TODO - Reimplement lead-time as a charfield with special validation (pattern matching).
# lead_time = models.DurationField(blank=True, null=True) # lead_time = models.DurationField(blank=True, null=True)

View File

@ -7,7 +7,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: \n" "Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-01-31 09:36+0000\n" "POT-Creation-Date: 2020-02-01 12:31+0000\n"
"PO-Revision-Date: 2019-12-19 17:48+0100\n" "PO-Revision-Date: 2019-12-19 17:48+0100\n"
"Last-Translator: \n" "Last-Translator: \n"
"Language-Team: \n" "Language-Team: \n"
@ -48,19 +48,19 @@ msgstr ""
"Anzahl der eindeutigen Seriennummern ({s}) muss mit der Anzahl ({q}) " "Anzahl der eindeutigen Seriennummern ({s}) muss mit der Anzahl ({q}) "
"übereinstimmen" "übereinstimmen"
#: InvenTree/settings.py:236 #: InvenTree/settings.py:270
msgid "English" msgid "English"
msgstr "Englisch" msgstr "Englisch"
#: InvenTree/settings.py:237 #: InvenTree/settings.py:271
msgid "German" msgid "German"
msgstr "Deutsch" msgstr "Deutsch"
#: InvenTree/settings.py:238 #: InvenTree/settings.py:272
msgid "French" msgid "French"
msgstr "Französisch" msgstr "Französisch"
#: InvenTree/settings.py:239 #: InvenTree/settings.py:273
msgid "Polish" msgid "Polish"
msgstr "Polnisch" msgstr "Polnisch"
@ -297,6 +297,109 @@ msgstr "Währungs-Wert"
msgid "Use this currency as the base currency" msgid "Use this currency as the base currency"
msgstr "Benutze diese Währung als Basis-Währung" msgstr "Benutze diese Währung als Basis-Währung"
#: company/models.py:74
#, fuzzy
#| msgid "Company"
msgid "Company name"
msgstr "Firma"
#: company/models.py:76
#, fuzzy
#| msgid "Brief description of the build"
msgid "Description of the company"
msgstr "Kurze Beschreibung des Baus"
#: company/models.py:78
msgid "Company website URL"
msgstr ""
#: company/models.py:81
#, fuzzy
#| msgid "Company"
msgid "Company address"
msgstr "Firma"
#: company/models.py:84
msgid "Contact phone number"
msgstr ""
#: company/models.py:86
msgid "Contact email address"
msgstr ""
#: company/models.py:89
msgid "Point of contact"
msgstr ""
#: company/models.py:91
#, fuzzy
#| msgid "Link to external page for further information"
msgid "Link to external company information"
msgstr "Link auf externe Seite für weitere Informationen"
#: company/models.py:97
msgid "Do you sell items to this company?"
msgstr ""
#: company/models.py:99
msgid "Do you purchase items from this company?"
msgstr ""
#: company/models.py:229
#, fuzzy
#| msgid "Select a part"
msgid "Select part"
msgstr "Teil auswählen"
#: company/models.py:235
#, fuzzy
#| msgid "Default Supplier"
msgid "Select supplier"
msgstr "Standard-Zulieferer"
#: company/models.py:238
#, fuzzy
#| msgid "Stock keeping units for this part"
msgid "Supplier stock keeping unit"
msgstr "Stock Keeping Units (SKU) für dieses Teil"
#: company/models.py:240
msgid "Manufacturer"
msgstr ""
#: company/models.py:242
#, fuzzy
#| msgid "Internal Part Number"
msgid "Manufacturer part number"
msgstr "Interne Teilenummer"
#: company/models.py:244
#, fuzzy
#| msgid "Default supplier part"
msgid "URL for external supplier part link"
msgstr "Standard-Zulieferer?"
#: company/models.py:246
#, fuzzy
#| msgid "Part description"
msgid "Supplier part description"
msgstr "Beschreibung des Teils"
#: company/models.py:248 order/templates/order/purchase_order_detail.html:168
#: part/templates/part/tabs.html:58 stock/templates/stock/item.html:151
msgid "Notes"
msgstr "Notizen"
#: company/models.py:250
#, fuzzy
#| msgid "Minimum allowed stock level"
msgid "Minimum charge (e.g. stocking fee)"
msgstr "Minimal zulässiger Lagerbestand"
#: company/models.py:252
msgid "Part packaging"
msgstr ""
#: company/templates/company/partdelete.html:5 #: company/templates/company/partdelete.html:5
msgid "Are you sure you want to delete the following Supplier Parts?" msgid "Are you sure you want to delete the following Supplier Parts?"
msgstr "" msgstr ""
@ -338,7 +441,7 @@ msgstr "Bestell-Notizen"
msgid "Company" msgid "Company"
msgstr "Firma" msgstr "Firma"
#: order/models.py:157 order/models.py:208 part/views.py:1032 #: order/models.py:157 order/models.py:208 part/views.py:1065
#: stock/models.py:438 #: stock/models.py:438
msgid "Quantity must be greater than zero" msgid "Quantity must be greater than zero"
msgstr "Anzahl muss größer Null sein" msgstr "Anzahl muss größer Null sein"
@ -424,12 +527,6 @@ msgstr "Anzahl"
msgid "Note" msgid "Note"
msgstr "Notiz" msgstr "Notiz"
#: order/templates/order/purchase_order_detail.html:168
#: part/templates/part/detail.html:152 part/templates/part/tabs.html:58
#: stock/templates/stock/item.html:151
msgid "Notes"
msgstr "Notizen"
#: order/views.py:141 #: order/views.py:141
msgid "Confirm order cancellation" msgid "Confirm order cancellation"
msgstr "Bestell-Stornierung bestätigen" msgstr "Bestell-Stornierung bestätigen"
@ -486,207 +583,211 @@ msgstr "Fehler beim Lesen der Stückliste (ungültige Daten)"
msgid "Error reading BOM file (incorrect row size)" msgid "Error reading BOM file (incorrect row size)"
msgstr "Fehler beim Lesen der Stückliste (ungültige Zeilengröße)" msgstr "Fehler beim Lesen der Stückliste (ungültige Zeilengröße)"
#: part/forms.py:53 #: part/forms.py:37
msgid "Confirm that the BOM is correct" msgid "Confirm that the BOM is correct"
msgstr "Bestätigen, dass die Stückliste korrekt ist" msgstr "Bestätigen, dass die Stückliste korrekt ist"
#: part/forms.py:65 #: part/forms.py:49
msgid "Select BOM file to upload" msgid "Select BOM file to upload"
msgstr "Stücklisten-Datei zum Upload auswählen" msgstr "Stücklisten-Datei zum Upload auswählen"
#: part/forms.py:89 #: part/forms.py:73
msgid "Select part category" msgid "Select part category"
msgstr "Teilekategorie wählen" msgstr "Teilekategorie wählen"
#: part/forms.py:97 #: part/forms.py:81
msgid "Perform 'deep copy' which will duplicate all BOM data for this part" msgid "Perform 'deep copy' which will duplicate all BOM data for this part"
msgstr "" msgstr ""
"Tiefe Kopie ausführen. Dies wird alle Daten der Stückliste für dieses Teil " "Tiefe Kopie ausführen. Dies wird alle Daten der Stückliste für dieses Teil "
"duplizieren" "duplizieren"
#: part/forms.py:102 #: part/forms.py:86
msgid "Confirm part creation" msgid "Confirm part creation"
msgstr "Erstellen des Teils bestätigen" msgstr "Erstellen des Teils bestätigen"
#: part/forms.py:189 #: part/forms.py:172
msgid "Input quantity for price calculation" msgid "Input quantity for price calculation"
msgstr "Eintragsmenge zur Preisberechnung" msgstr "Eintragsmenge zur Preisberechnung"
#: part/forms.py:192 #: part/forms.py:175
msgid "Select currency for price calculation" msgid "Select currency for price calculation"
msgstr "Währung zur Preisberechnung wählen" msgstr "Währung zur Preisberechnung wählen"
#: part/models.py:55 #: part/models.py:57
msgid "Default location for parts in this category" msgid "Default location for parts in this category"
msgstr "Standard-Standort für Teile dieser Kategorie" msgstr "Standard-Standort für Teile dieser Kategorie"
#: part/models.py:58 #: part/models.py:60
msgid "Default keywords for parts in this category" msgid "Default keywords for parts in this category"
msgstr "Standard-Stichworte für Teile dieser Kategorie" msgstr "Standard-Stichworte für Teile dieser Kategorie"
#: part/models.py:307 #: part/models.py:309
msgid "Part must be unique for name, IPN and revision" msgid "Part must be unique for name, IPN and revision"
msgstr "Namen, Teile- und Revisionsnummern müssen eindeutig sein" msgstr "Namen, Teile- und Revisionsnummern müssen eindeutig sein"
#: part/models.py:321 #: part/models.py:323
msgid "Part cannot be a template part if it is a variant of another part" 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" msgstr "Teil kann keine Vorlage sein wenn es Variante eines anderen Teils ist"
#: part/models.py:322 #: part/models.py:324
msgid "Part cannot be a variant of another part if it is already a template" msgid "Part cannot be a variant of another part if it is already a template"
msgstr "" msgstr ""
"Teil kann keine Variante eines anderen Teils sein wenn es bereits eine " "Teil kann keine Variante eines anderen Teils sein wenn es bereits eine "
"Vorlage ist" "Vorlage ist"
#: part/models.py:326 part/templates/part/detail.html:17 #: part/models.py:328 part/templates/part/detail.html:17
msgid "Part name" msgid "Part name"
msgstr "Name des Teils" msgstr "Name des Teils"
#: part/models.py:330 #: part/models.py:332
msgid "Is this part a template part?" msgid "Is this part a template part?"
msgstr "Ist dieses Teil eine Vorlage?" msgstr "Ist dieses Teil eine Vorlage?"
#: part/models.py:339 #: part/models.py:341
msgid "Is this part a variant of another part?" msgid "Is this part a variant of another part?"
msgstr "Ist dieses Teil eine Variante eines anderen Teils?" msgstr "Ist dieses Teil eine Variante eines anderen Teils?"
#: part/models.py:341 #: part/models.py:343
msgid "Part description" msgid "Part description"
msgstr "Beschreibung des Teils" msgstr "Beschreibung des Teils"
#: part/models.py:343 #: part/models.py:345
msgid "Part keywords to improve visibility in search results" msgid "Part keywords to improve visibility in search results"
msgstr "Schlüsselworte um die Sichtbarkeit in Suchergebnissen zu verbessern" msgstr "Schlüsselworte um die Sichtbarkeit in Suchergebnissen zu verbessern"
#: part/models.py:348 #: part/models.py:350
msgid "Part category" msgid "Part category"
msgstr "Teile-Kategorie" msgstr "Teile-Kategorie"
#: part/models.py:350 #: part/models.py:352
msgid "Internal Part Number" msgid "Internal Part Number"
msgstr "Interne Teilenummer" msgstr "Interne Teilenummer"
#: part/models.py:352 #: part/models.py:354
msgid "Part revision or version number" msgid "Part revision or version number"
msgstr "Revisions- oder Versionsnummer" msgstr "Revisions- oder Versionsnummer"
#: part/models.py:354 #: part/models.py:356
msgid "Link to extenal URL" msgid "Link to extenal URL"
msgstr "Link zu einer Externen URL" msgstr "Link zu einer Externen URL"
#: part/models.py:360 #: part/models.py:362
msgid "Where is this item normally stored?" msgid "Where is this item normally stored?"
msgstr "Wo wird dieses Teil normalerweise gelagert?" msgstr "Wo wird dieses Teil normalerweise gelagert?"
#: part/models.py:404 #: part/models.py:406
msgid "Default supplier part" msgid "Default supplier part"
msgstr "Standard-Zulieferer?" msgstr "Standard-Zulieferer?"
#: part/models.py:407 #: part/models.py:409
msgid "Minimum allowed stock level" msgid "Minimum allowed stock level"
msgstr "Minimal zulässiger Lagerbestand" msgstr "Minimal zulässiger Lagerbestand"
#: part/models.py:409 #: part/models.py:411
msgid "Stock keeping units for this part" msgid "Stock keeping units for this part"
msgstr "Stock Keeping Units (SKU) für dieses Teil" msgstr "Stock Keeping Units (SKU) für dieses Teil"
#: part/models.py:411 #: part/models.py:413
msgid "Can this part be built from other parts?" msgid "Can this part be built from other parts?"
msgstr "Kann dieses Teil aus anderen Teilen angefertigt werden?" msgstr "Kann dieses Teil aus anderen Teilen angefertigt werden?"
#: part/models.py:413 #: part/models.py:415
msgid "Can this part be used to build other parts?" msgid "Can this part be used to build other parts?"
msgstr "Kann dieses Teil zum Bau von anderen genutzt werden?" msgstr "Kann dieses Teil zum Bau von anderen genutzt werden?"
#: part/models.py:415 #: part/models.py:417
msgid "Does this part have tracking for unique items?" msgid "Does this part have tracking for unique items?"
msgstr "Hat dieses Teil Tracking für einzelne Objekte?" msgstr "Hat dieses Teil Tracking für einzelne Objekte?"
#: part/models.py:417 #: part/models.py:419
msgid "Can this part be purchased from external suppliers?" msgid "Can this part be purchased from external suppliers?"
msgstr "Kann dieses Teil von externen Zulieferern gekauft werden?" msgstr "Kann dieses Teil von externen Zulieferern gekauft werden?"
#: part/models.py:419 #: part/models.py:421
msgid "Can this part be sold to customers?" msgid "Can this part be sold to customers?"
msgstr "Kann dieses Teil an Kunden verkauft werden?" msgstr "Kann dieses Teil an Kunden verkauft werden?"
#: part/models.py:421 #: part/models.py:423
msgid "Is this part active?" msgid "Is this part active?"
msgstr "Ist dieses Teil aktiv?" msgstr "Ist dieses Teil aktiv?"
#: part/models.py:423 #: part/models.py:425
msgid "Is this a virtual part, such as a software product or license?" 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?" msgstr "Ist dieses Teil virtuell, wie zum Beispiel eine Software oder Lizenz?"
#: part/models.py:427 #: part/models.py:427
msgid "Part notes - supports Markdown formatting"
msgstr ""
#: part/models.py:429
msgid "Stored BOM checksum" msgid "Stored BOM checksum"
msgstr "Prüfsumme der Stückliste gespeichert" msgstr "Prüfsumme der Stückliste gespeichert"
#: part/models.py:934 #: part/models.py:936
msgid "Select file to attach" msgid "Select file to attach"
msgstr "Datei zum Anhängen auswählen" msgstr "Datei zum Anhängen auswählen"
#: part/models.py:936 #: part/models.py:938
msgid "File comment" msgid "File comment"
msgstr "Datei-Kommentar" msgstr "Datei-Kommentar"
#: part/models.py:991 #: part/models.py:993
msgid "Parameter template name must be unique" msgid "Parameter template name must be unique"
msgstr "Vorlagen-Name des Parameters muss eindeutig sein" msgstr "Vorlagen-Name des Parameters muss eindeutig sein"
#: part/models.py:996 #: part/models.py:998
msgid "Parameter Name" msgid "Parameter Name"
msgstr "Name des Parameters" msgstr "Name des Parameters"
#: part/models.py:998 #: part/models.py:1000
msgid "Parameter Units" msgid "Parameter Units"
msgstr "Parameter Einheit" msgstr "Parameter Einheit"
#: part/models.py:1024 #: part/models.py:1026
msgid "Parent Part" msgid "Parent Part"
msgstr "Ausgangsteil" msgstr "Ausgangsteil"
#: part/models.py:1026 #: part/models.py:1028
msgid "Parameter Template" msgid "Parameter Template"
msgstr "Parameter Vorlage" msgstr "Parameter Vorlage"
#: part/models.py:1028 #: part/models.py:1030
msgid "Parameter Value" msgid "Parameter Value"
msgstr "Parameter Wert" msgstr "Parameter Wert"
#: part/models.py:1052 #: part/models.py:1054
msgid "Select parent part" msgid "Select parent part"
msgstr "Ausgangsteil auswählen" msgstr "Ausgangsteil auswählen"
#: part/models.py:1060 #: part/models.py:1062
msgid "Select part to be used in BOM" msgid "Select part to be used in BOM"
msgstr "Teil für die Nutzung in der Stückliste auswählen" msgstr "Teil für die Nutzung in der Stückliste auswählen"
#: part/models.py:1066 #: part/models.py:1068
msgid "BOM quantity for this BOM item" msgid "BOM quantity for this BOM item"
msgstr "Stücklisten-Anzahl für dieses Stücklisten-Teil" msgstr "Stücklisten-Anzahl für dieses Stücklisten-Teil"
#: part/models.py:1069 #: part/models.py:1071
msgid "Estimated build wastage quantity (absolute or percentage)" msgid "Estimated build wastage quantity (absolute or percentage)"
msgstr "Geschätzter Ausschuss (absolut oder prozentual)" msgstr "Geschätzter Ausschuss (absolut oder prozentual)"
#: part/models.py:1072 #: part/models.py:1074
msgid "BOM item reference" msgid "BOM item reference"
msgstr "Referenz des Objekts auf der Stückliste" msgstr "Referenz des Objekts auf der Stückliste"
#: part/models.py:1075 #: part/models.py:1077
msgid "BOM item notes" msgid "BOM item notes"
msgstr "Notizen zum Stücklisten-Objekt" msgstr "Notizen zum Stücklisten-Objekt"
#: part/models.py:1077 #: part/models.py:1079
msgid "BOM line checksum" msgid "BOM line checksum"
msgstr "Prüfsumme der Stückliste" msgstr "Prüfsumme der Stückliste"
#: part/models.py:1140 #: part/models.py:1142
msgid "Part cannot be added to its own Bill of Materials" msgid "Part cannot be added to its own Bill of Materials"
msgstr "Teil kann nicht zu seiner eigenen Stückliste hinzugefügt werden" msgstr "Teil kann nicht zu seiner eigenen Stückliste hinzugefügt werden"
#: part/models.py:1147 #: part/models.py:1149
#, python-brace-format #, python-brace-format
msgid "Part '{p1}' is used in BOM for '{p2}' (recursive)" msgid "Part '{p1}' is used in BOM for '{p2}' (recursive)"
msgstr "Teil '{p1}' wird in Stückliste für Teil '{p2}' benutzt (rekursiv)" msgstr "Teil '{p1}' wird in Stückliste für Teil '{p2}' benutzt (rekursiv)"
@ -870,12 +971,22 @@ msgstr "Teil kann an Kunden verkauft werden"
msgid "Part cannot be sold to customers" msgid "Part cannot be sold to customers"
msgstr "Teil kann nicht an Kunden verkauft werden" msgstr "Teil kann nicht an Kunden verkauft werden"
#: part/templates/part/notes.html:9 #: part/templates/part/notes.html:13 part/templates/part/notes.html:28
#, fuzzy #, fuzzy
#| msgid "Notes" #| msgid "Notes"
msgid "Part Notes" msgid "Part Notes"
msgstr "Notizen" msgstr "Notizen"
#: part/templates/part/notes.html:19
msgid "Save"
msgstr ""
#: part/templates/part/notes.html:31
#, fuzzy
#| msgid "Entry notes"
msgid "Edit notes"
msgstr "Eintrags-Notizen"
#: part/templates/part/part_base.html:11 #: part/templates/part/part_base.html:11
msgid "This part is not active" msgid "This part is not active"
msgstr "Dieses Teil ist nicht aktiv" msgstr "Dieses Teil ist nicht aktiv"
@ -957,27 +1068,27 @@ msgstr "Anhänge"
msgid "Set category for {n} parts" msgid "Set category for {n} parts"
msgstr "Kategorie für {n} Teile setzen" msgstr "Kategorie für {n} Teile setzen"
#: part/views.py:773 #: part/views.py:806
msgid "No BOM file provided" msgid "No BOM file provided"
msgstr "Keine Stückliste angegeben" msgstr "Keine Stückliste angegeben"
#: part/views.py:1034 #: part/views.py:1067
msgid "Enter a valid quantity" msgid "Enter a valid quantity"
msgstr "Bitte eine gültige Anzahl eingeben" msgstr "Bitte eine gültige Anzahl eingeben"
#: part/views.py:1058 part/views.py:1061 #: part/views.py:1091 part/views.py:1094
msgid "Select valid part" msgid "Select valid part"
msgstr "Bitte ein gültiges Teil auswählen" msgstr "Bitte ein gültiges Teil auswählen"
#: part/views.py:1067 #: part/views.py:1100
msgid "Duplicate part selected" msgid "Duplicate part selected"
msgstr "Teil doppelt ausgewählt" msgstr "Teil doppelt ausgewählt"
#: part/views.py:1095 #: part/views.py:1128
msgid "Select a part" msgid "Select a part"
msgstr "Teil auswählen" msgstr "Teil auswählen"
#: part/views.py:1099 #: part/views.py:1132
msgid "Specify quantity" msgid "Specify quantity"
msgstr "Anzahl angeben" msgstr "Anzahl angeben"

View File

@ -8,7 +8,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-01-31 09:36+0000\n" "POT-Creation-Date: 2020-02-01 12:31+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"
@ -46,19 +46,19 @@ msgstr ""
msgid "Number of unique serial number ({s}) must match quantity ({q})" msgid "Number of unique serial number ({s}) must match quantity ({q})"
msgstr "" msgstr ""
#: InvenTree/settings.py:236 #: InvenTree/settings.py:270
msgid "English" msgid "English"
msgstr "" msgstr ""
#: InvenTree/settings.py:237 #: InvenTree/settings.py:271
msgid "German" msgid "German"
msgstr "" msgstr ""
#: InvenTree/settings.py:238 #: InvenTree/settings.py:272
msgid "French" msgid "French"
msgstr "" msgstr ""
#: InvenTree/settings.py:239 #: InvenTree/settings.py:273
msgid "Polish" msgid "Polish"
msgstr "" msgstr ""
@ -289,6 +289,87 @@ msgstr ""
msgid "Use this currency as the base currency" msgid "Use this currency as the base currency"
msgstr "" msgstr ""
#: company/models.py:74
msgid "Company name"
msgstr ""
#: company/models.py:76
msgid "Description of the company"
msgstr ""
#: company/models.py:78
msgid "Company website URL"
msgstr ""
#: company/models.py:81
msgid "Company address"
msgstr ""
#: company/models.py:84
msgid "Contact phone number"
msgstr ""
#: company/models.py:86
msgid "Contact email address"
msgstr ""
#: company/models.py:89
msgid "Point of contact"
msgstr ""
#: company/models.py:91
msgid "Link to external company information"
msgstr ""
#: company/models.py:97
msgid "Do you sell items to this company?"
msgstr ""
#: company/models.py:99
msgid "Do you purchase items from this company?"
msgstr ""
#: company/models.py:229
msgid "Select part"
msgstr ""
#: company/models.py:235
msgid "Select supplier"
msgstr ""
#: company/models.py:238
msgid "Supplier stock keeping unit"
msgstr ""
#: company/models.py:240
msgid "Manufacturer"
msgstr ""
#: company/models.py:242
msgid "Manufacturer part number"
msgstr ""
#: company/models.py:244
msgid "URL for external supplier part link"
msgstr ""
#: company/models.py:246
msgid "Supplier part description"
msgstr ""
#: company/models.py:248 order/templates/order/purchase_order_detail.html:168
#: part/templates/part/tabs.html:58 stock/templates/stock/item.html:151
msgid "Notes"
msgstr ""
#: company/models.py:250
msgid "Minimum charge (e.g. stocking fee)"
msgstr ""
#: company/models.py:252
msgid "Part packaging"
msgstr ""
#: company/templates/company/partdelete.html:5 #: company/templates/company/partdelete.html:5
msgid "Are you sure you want to delete the following Supplier Parts?" msgid "Are you sure you want to delete the following Supplier Parts?"
msgstr "" msgstr ""
@ -329,7 +410,7 @@ msgstr ""
msgid "Company" msgid "Company"
msgstr "" msgstr ""
#: order/models.py:157 order/models.py:208 part/views.py:1032 #: order/models.py:157 order/models.py:208 part/views.py:1065
#: stock/models.py:438 #: stock/models.py:438
msgid "Quantity must be greater than zero" msgid "Quantity must be greater than zero"
msgstr "" msgstr ""
@ -415,12 +496,6 @@ msgstr ""
msgid "Note" msgid "Note"
msgstr "" msgstr ""
#: order/templates/order/purchase_order_detail.html:168
#: part/templates/part/detail.html:152 part/templates/part/tabs.html:58
#: stock/templates/stock/item.html:151
msgid "Notes"
msgstr ""
#: order/views.py:141 #: order/views.py:141
msgid "Confirm order cancellation" msgid "Confirm order cancellation"
msgstr "" msgstr ""
@ -474,203 +549,207 @@ msgstr ""
msgid "Error reading BOM file (incorrect row size)" msgid "Error reading BOM file (incorrect row size)"
msgstr "" msgstr ""
#: part/forms.py:53 #: part/forms.py:37
msgid "Confirm that the BOM is correct" msgid "Confirm that the BOM is correct"
msgstr "" msgstr ""
#: part/forms.py:65 #: part/forms.py:49
msgid "Select BOM file to upload" msgid "Select BOM file to upload"
msgstr "" msgstr ""
#: part/forms.py:89 #: part/forms.py:73
msgid "Select part category" msgid "Select part category"
msgstr "" msgstr ""
#: part/forms.py:97 #: part/forms.py:81
msgid "Perform 'deep copy' which will duplicate all BOM data for this part" msgid "Perform 'deep copy' which will duplicate all BOM data for this part"
msgstr "" msgstr ""
#: part/forms.py:102 #: part/forms.py:86
msgid "Confirm part creation" msgid "Confirm part creation"
msgstr "" msgstr ""
#: part/forms.py:189 #: part/forms.py:172
msgid "Input quantity for price calculation" msgid "Input quantity for price calculation"
msgstr "" msgstr ""
#: part/forms.py:192 #: part/forms.py:175
msgid "Select currency for price calculation" msgid "Select currency for price calculation"
msgstr "" msgstr ""
#: part/models.py:55 #: part/models.py:57
msgid "Default location for parts in this category" msgid "Default location for parts in this category"
msgstr "" msgstr ""
#: part/models.py:58 #: part/models.py:60
msgid "Default keywords for parts in this category" msgid "Default keywords for parts in this category"
msgstr "" msgstr ""
#: part/models.py:307 #: part/models.py:309
msgid "Part must be unique for name, IPN and revision" msgid "Part must be unique for name, IPN and revision"
msgstr "" msgstr ""
#: part/models.py:321 #: part/models.py:323
msgid "Part cannot be a template part if it is a variant of another part" msgid "Part cannot be a template part if it is a variant of another part"
msgstr "" msgstr ""
#: part/models.py:322 #: part/models.py:324
msgid "Part cannot be a variant of another part if it is already a template" msgid "Part cannot be a variant of another part if it is already a template"
msgstr "" msgstr ""
#: part/models.py:326 part/templates/part/detail.html:17 #: part/models.py:328 part/templates/part/detail.html:17
msgid "Part name" msgid "Part name"
msgstr "" msgstr ""
#: part/models.py:330 #: part/models.py:332
msgid "Is this part a template part?" msgid "Is this part a template part?"
msgstr "" msgstr ""
#: part/models.py:339 #: part/models.py:341
msgid "Is this part a variant of another part?" msgid "Is this part a variant of another part?"
msgstr "" msgstr ""
#: part/models.py:341 #: part/models.py:343
msgid "Part description" msgid "Part description"
msgstr "" msgstr ""
#: part/models.py:343 #: part/models.py:345
msgid "Part keywords to improve visibility in search results" msgid "Part keywords to improve visibility in search results"
msgstr "" msgstr ""
#: part/models.py:348 #: part/models.py:350
msgid "Part category" msgid "Part category"
msgstr "" msgstr ""
#: part/models.py:350 #: part/models.py:352
msgid "Internal Part Number" msgid "Internal Part Number"
msgstr "" msgstr ""
#: part/models.py:352 #: part/models.py:354
msgid "Part revision or version number" msgid "Part revision or version number"
msgstr "" msgstr ""
#: part/models.py:354 #: part/models.py:356
msgid "Link to extenal URL" msgid "Link to extenal URL"
msgstr "" msgstr ""
#: part/models.py:360 #: part/models.py:362
msgid "Where is this item normally stored?" msgid "Where is this item normally stored?"
msgstr "" msgstr ""
#: part/models.py:404 #: part/models.py:406
msgid "Default supplier part" msgid "Default supplier part"
msgstr "" msgstr ""
#: part/models.py:407 #: part/models.py:409
msgid "Minimum allowed stock level" msgid "Minimum allowed stock level"
msgstr "" msgstr ""
#: part/models.py:409 #: part/models.py:411
msgid "Stock keeping units for this part" msgid "Stock keeping units for this part"
msgstr "" msgstr ""
#: part/models.py:411 #: part/models.py:413
msgid "Can this part be built from other parts?" msgid "Can this part be built from other parts?"
msgstr "" msgstr ""
#: part/models.py:413 #: part/models.py:415
msgid "Can this part be used to build other parts?" msgid "Can this part be used to build other parts?"
msgstr "" msgstr ""
#: part/models.py:415 #: part/models.py:417
msgid "Does this part have tracking for unique items?" msgid "Does this part have tracking for unique items?"
msgstr "" msgstr ""
#: part/models.py:417 #: part/models.py:419
msgid "Can this part be purchased from external suppliers?" msgid "Can this part be purchased from external suppliers?"
msgstr "" msgstr ""
#: part/models.py:419 #: part/models.py:421
msgid "Can this part be sold to customers?" msgid "Can this part be sold to customers?"
msgstr "" msgstr ""
#: part/models.py:421 #: part/models.py:423
msgid "Is this part active?" msgid "Is this part active?"
msgstr "" msgstr ""
#: part/models.py:423 #: part/models.py:425
msgid "Is this a virtual part, such as a software product or license?" msgid "Is this a virtual part, such as a software product or license?"
msgstr "" msgstr ""
#: part/models.py:427 #: part/models.py:427
msgid "Part notes - supports Markdown formatting"
msgstr ""
#: part/models.py:429
msgid "Stored BOM checksum" msgid "Stored BOM checksum"
msgstr "" msgstr ""
#: part/models.py:934 #: part/models.py:936
msgid "Select file to attach" msgid "Select file to attach"
msgstr "" msgstr ""
#: part/models.py:936 #: part/models.py:938
msgid "File comment" msgid "File comment"
msgstr "" msgstr ""
#: part/models.py:991 #: part/models.py:993
msgid "Parameter template name must be unique" msgid "Parameter template name must be unique"
msgstr "" msgstr ""
#: part/models.py:996 #: part/models.py:998
msgid "Parameter Name" msgid "Parameter Name"
msgstr "" msgstr ""
#: part/models.py:998 #: part/models.py:1000
msgid "Parameter Units" msgid "Parameter Units"
msgstr "" msgstr ""
#: part/models.py:1024 #: part/models.py:1026
msgid "Parent Part" msgid "Parent Part"
msgstr "" msgstr ""
#: part/models.py:1026 #: part/models.py:1028
msgid "Parameter Template" msgid "Parameter Template"
msgstr "" msgstr ""
#: part/models.py:1028 #: part/models.py:1030
msgid "Parameter Value" msgid "Parameter Value"
msgstr "" msgstr ""
#: part/models.py:1052 #: part/models.py:1054
msgid "Select parent part" msgid "Select parent part"
msgstr "" msgstr ""
#: part/models.py:1060 #: part/models.py:1062
msgid "Select part to be used in BOM" msgid "Select part to be used in BOM"
msgstr "" msgstr ""
#: part/models.py:1066 #: part/models.py:1068
msgid "BOM quantity for this BOM item" msgid "BOM quantity for this BOM item"
msgstr "" msgstr ""
#: part/models.py:1069 #: part/models.py:1071
msgid "Estimated build wastage quantity (absolute or percentage)" msgid "Estimated build wastage quantity (absolute or percentage)"
msgstr "" msgstr ""
#: part/models.py:1072 #: part/models.py:1074
msgid "BOM item reference" msgid "BOM item reference"
msgstr "" msgstr ""
#: part/models.py:1075 #: part/models.py:1077
msgid "BOM item notes" msgid "BOM item notes"
msgstr "" msgstr ""
#: part/models.py:1077 #: part/models.py:1079
msgid "BOM line checksum" msgid "BOM line checksum"
msgstr "" msgstr ""
#: part/models.py:1140 #: part/models.py:1142
msgid "Part cannot be added to its own Bill of Materials" msgid "Part cannot be added to its own Bill of Materials"
msgstr "" msgstr ""
#: part/models.py:1147 #: part/models.py:1149
#, python-brace-format #, python-brace-format
msgid "Part '{p1}' is used in BOM for '{p2}' (recursive)" msgid "Part '{p1}' is used in BOM for '{p2}' (recursive)"
msgstr "" msgstr ""
@ -844,10 +923,18 @@ msgstr ""
msgid "Part cannot be sold to customers" msgid "Part cannot be sold to customers"
msgstr "" msgstr ""
#: part/templates/part/notes.html:9 #: part/templates/part/notes.html:13 part/templates/part/notes.html:28
msgid "Part Notes" msgid "Part Notes"
msgstr "" msgstr ""
#: part/templates/part/notes.html:19
msgid "Save"
msgstr ""
#: part/templates/part/notes.html:31
msgid "Edit notes"
msgstr ""
#: part/templates/part/part_base.html:11 #: part/templates/part/part_base.html:11
msgid "This part is not active" msgid "This part is not active"
msgstr "" msgstr ""
@ -929,27 +1016,27 @@ msgstr ""
msgid "Set category for {n} parts" msgid "Set category for {n} parts"
msgstr "" msgstr ""
#: part/views.py:773 #: part/views.py:806
msgid "No BOM file provided" msgid "No BOM file provided"
msgstr "" msgstr ""
#: part/views.py:1034 #: part/views.py:1067
msgid "Enter a valid quantity" msgid "Enter a valid quantity"
msgstr "" msgstr ""
#: part/views.py:1058 part/views.py:1061 #: part/views.py:1091 part/views.py:1094
msgid "Select valid part" msgid "Select valid part"
msgstr "" msgstr ""
#: part/views.py:1067 #: part/views.py:1100
msgid "Duplicate part selected" msgid "Duplicate part selected"
msgstr "" msgstr ""
#: part/views.py:1095 #: part/views.py:1128
msgid "Select a part" msgid "Select a part"
msgstr "" msgstr ""
#: part/views.py:1099 #: part/views.py:1132
msgid "Specify quantity" msgid "Specify quantity"
msgstr "" msgstr ""

View File

@ -8,7 +8,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-01-31 09:36+0000\n" "POT-Creation-Date: 2020-02-01 12:31+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"
@ -46,19 +46,19 @@ msgstr ""
msgid "Number of unique serial number ({s}) must match quantity ({q})" msgid "Number of unique serial number ({s}) must match quantity ({q})"
msgstr "" msgstr ""
#: InvenTree/settings.py:236 #: InvenTree/settings.py:270
msgid "English" msgid "English"
msgstr "" msgstr ""
#: InvenTree/settings.py:237 #: InvenTree/settings.py:271
msgid "German" msgid "German"
msgstr "" msgstr ""
#: InvenTree/settings.py:238 #: InvenTree/settings.py:272
msgid "French" msgid "French"
msgstr "" msgstr ""
#: InvenTree/settings.py:239 #: InvenTree/settings.py:273
msgid "Polish" msgid "Polish"
msgstr "" msgstr ""
@ -289,6 +289,87 @@ msgstr ""
msgid "Use this currency as the base currency" msgid "Use this currency as the base currency"
msgstr "" msgstr ""
#: company/models.py:74
msgid "Company name"
msgstr ""
#: company/models.py:76
msgid "Description of the company"
msgstr ""
#: company/models.py:78
msgid "Company website URL"
msgstr ""
#: company/models.py:81
msgid "Company address"
msgstr ""
#: company/models.py:84
msgid "Contact phone number"
msgstr ""
#: company/models.py:86
msgid "Contact email address"
msgstr ""
#: company/models.py:89
msgid "Point of contact"
msgstr ""
#: company/models.py:91
msgid "Link to external company information"
msgstr ""
#: company/models.py:97
msgid "Do you sell items to this company?"
msgstr ""
#: company/models.py:99
msgid "Do you purchase items from this company?"
msgstr ""
#: company/models.py:229
msgid "Select part"
msgstr ""
#: company/models.py:235
msgid "Select supplier"
msgstr ""
#: company/models.py:238
msgid "Supplier stock keeping unit"
msgstr ""
#: company/models.py:240
msgid "Manufacturer"
msgstr ""
#: company/models.py:242
msgid "Manufacturer part number"
msgstr ""
#: company/models.py:244
msgid "URL for external supplier part link"
msgstr ""
#: company/models.py:246
msgid "Supplier part description"
msgstr ""
#: company/models.py:248 order/templates/order/purchase_order_detail.html:168
#: part/templates/part/tabs.html:58 stock/templates/stock/item.html:151
msgid "Notes"
msgstr ""
#: company/models.py:250
msgid "Minimum charge (e.g. stocking fee)"
msgstr ""
#: company/models.py:252
msgid "Part packaging"
msgstr ""
#: company/templates/company/partdelete.html:5 #: company/templates/company/partdelete.html:5
msgid "Are you sure you want to delete the following Supplier Parts?" msgid "Are you sure you want to delete the following Supplier Parts?"
msgstr "" msgstr ""
@ -329,7 +410,7 @@ msgstr ""
msgid "Company" msgid "Company"
msgstr "" msgstr ""
#: order/models.py:157 order/models.py:208 part/views.py:1032 #: order/models.py:157 order/models.py:208 part/views.py:1065
#: stock/models.py:438 #: stock/models.py:438
msgid "Quantity must be greater than zero" msgid "Quantity must be greater than zero"
msgstr "" msgstr ""
@ -415,12 +496,6 @@ msgstr ""
msgid "Note" msgid "Note"
msgstr "" msgstr ""
#: order/templates/order/purchase_order_detail.html:168
#: part/templates/part/detail.html:152 part/templates/part/tabs.html:58
#: stock/templates/stock/item.html:151
msgid "Notes"
msgstr ""
#: order/views.py:141 #: order/views.py:141
msgid "Confirm order cancellation" msgid "Confirm order cancellation"
msgstr "" msgstr ""
@ -474,203 +549,207 @@ msgstr ""
msgid "Error reading BOM file (incorrect row size)" msgid "Error reading BOM file (incorrect row size)"
msgstr "" msgstr ""
#: part/forms.py:53 #: part/forms.py:37
msgid "Confirm that the BOM is correct" msgid "Confirm that the BOM is correct"
msgstr "" msgstr ""
#: part/forms.py:65 #: part/forms.py:49
msgid "Select BOM file to upload" msgid "Select BOM file to upload"
msgstr "" msgstr ""
#: part/forms.py:89 #: part/forms.py:73
msgid "Select part category" msgid "Select part category"
msgstr "" msgstr ""
#: part/forms.py:97 #: part/forms.py:81
msgid "Perform 'deep copy' which will duplicate all BOM data for this part" msgid "Perform 'deep copy' which will duplicate all BOM data for this part"
msgstr "" msgstr ""
#: part/forms.py:102 #: part/forms.py:86
msgid "Confirm part creation" msgid "Confirm part creation"
msgstr "" msgstr ""
#: part/forms.py:189 #: part/forms.py:172
msgid "Input quantity for price calculation" msgid "Input quantity for price calculation"
msgstr "" msgstr ""
#: part/forms.py:192 #: part/forms.py:175
msgid "Select currency for price calculation" msgid "Select currency for price calculation"
msgstr "" msgstr ""
#: part/models.py:55 #: part/models.py:57
msgid "Default location for parts in this category" msgid "Default location for parts in this category"
msgstr "" msgstr ""
#: part/models.py:58 #: part/models.py:60
msgid "Default keywords for parts in this category" msgid "Default keywords for parts in this category"
msgstr "" msgstr ""
#: part/models.py:307 #: part/models.py:309
msgid "Part must be unique for name, IPN and revision" msgid "Part must be unique for name, IPN and revision"
msgstr "" msgstr ""
#: part/models.py:321 #: part/models.py:323
msgid "Part cannot be a template part if it is a variant of another part" msgid "Part cannot be a template part if it is a variant of another part"
msgstr "" msgstr ""
#: part/models.py:322 #: part/models.py:324
msgid "Part cannot be a variant of another part if it is already a template" msgid "Part cannot be a variant of another part if it is already a template"
msgstr "" msgstr ""
#: part/models.py:326 part/templates/part/detail.html:17 #: part/models.py:328 part/templates/part/detail.html:17
msgid "Part name" msgid "Part name"
msgstr "" msgstr ""
#: part/models.py:330 #: part/models.py:332
msgid "Is this part a template part?" msgid "Is this part a template part?"
msgstr "" msgstr ""
#: part/models.py:339 #: part/models.py:341
msgid "Is this part a variant of another part?" msgid "Is this part a variant of another part?"
msgstr "" msgstr ""
#: part/models.py:341 #: part/models.py:343
msgid "Part description" msgid "Part description"
msgstr "" msgstr ""
#: part/models.py:343 #: part/models.py:345
msgid "Part keywords to improve visibility in search results" msgid "Part keywords to improve visibility in search results"
msgstr "" msgstr ""
#: part/models.py:348 #: part/models.py:350
msgid "Part category" msgid "Part category"
msgstr "" msgstr ""
#: part/models.py:350 #: part/models.py:352
msgid "Internal Part Number" msgid "Internal Part Number"
msgstr "" msgstr ""
#: part/models.py:352 #: part/models.py:354
msgid "Part revision or version number" msgid "Part revision or version number"
msgstr "" msgstr ""
#: part/models.py:354 #: part/models.py:356
msgid "Link to extenal URL" msgid "Link to extenal URL"
msgstr "" msgstr ""
#: part/models.py:360 #: part/models.py:362
msgid "Where is this item normally stored?" msgid "Where is this item normally stored?"
msgstr "" msgstr ""
#: part/models.py:404 #: part/models.py:406
msgid "Default supplier part" msgid "Default supplier part"
msgstr "" msgstr ""
#: part/models.py:407 #: part/models.py:409
msgid "Minimum allowed stock level" msgid "Minimum allowed stock level"
msgstr "" msgstr ""
#: part/models.py:409 #: part/models.py:411
msgid "Stock keeping units for this part" msgid "Stock keeping units for this part"
msgstr "" msgstr ""
#: part/models.py:411 #: part/models.py:413
msgid "Can this part be built from other parts?" msgid "Can this part be built from other parts?"
msgstr "" msgstr ""
#: part/models.py:413 #: part/models.py:415
msgid "Can this part be used to build other parts?" msgid "Can this part be used to build other parts?"
msgstr "" msgstr ""
#: part/models.py:415 #: part/models.py:417
msgid "Does this part have tracking for unique items?" msgid "Does this part have tracking for unique items?"
msgstr "" msgstr ""
#: part/models.py:417 #: part/models.py:419
msgid "Can this part be purchased from external suppliers?" msgid "Can this part be purchased from external suppliers?"
msgstr "" msgstr ""
#: part/models.py:419 #: part/models.py:421
msgid "Can this part be sold to customers?" msgid "Can this part be sold to customers?"
msgstr "" msgstr ""
#: part/models.py:421 #: part/models.py:423
msgid "Is this part active?" msgid "Is this part active?"
msgstr "" msgstr ""
#: part/models.py:423 #: part/models.py:425
msgid "Is this a virtual part, such as a software product or license?" msgid "Is this a virtual part, such as a software product or license?"
msgstr "" msgstr ""
#: part/models.py:427 #: part/models.py:427
msgid "Part notes - supports Markdown formatting"
msgstr ""
#: part/models.py:429
msgid "Stored BOM checksum" msgid "Stored BOM checksum"
msgstr "" msgstr ""
#: part/models.py:934 #: part/models.py:936
msgid "Select file to attach" msgid "Select file to attach"
msgstr "" msgstr ""
#: part/models.py:936 #: part/models.py:938
msgid "File comment" msgid "File comment"
msgstr "" msgstr ""
#: part/models.py:991 #: part/models.py:993
msgid "Parameter template name must be unique" msgid "Parameter template name must be unique"
msgstr "" msgstr ""
#: part/models.py:996 #: part/models.py:998
msgid "Parameter Name" msgid "Parameter Name"
msgstr "" msgstr ""
#: part/models.py:998 #: part/models.py:1000
msgid "Parameter Units" msgid "Parameter Units"
msgstr "" msgstr ""
#: part/models.py:1024 #: part/models.py:1026
msgid "Parent Part" msgid "Parent Part"
msgstr "" msgstr ""
#: part/models.py:1026 #: part/models.py:1028
msgid "Parameter Template" msgid "Parameter Template"
msgstr "" msgstr ""
#: part/models.py:1028 #: part/models.py:1030
msgid "Parameter Value" msgid "Parameter Value"
msgstr "" msgstr ""
#: part/models.py:1052 #: part/models.py:1054
msgid "Select parent part" msgid "Select parent part"
msgstr "" msgstr ""
#: part/models.py:1060 #: part/models.py:1062
msgid "Select part to be used in BOM" msgid "Select part to be used in BOM"
msgstr "" msgstr ""
#: part/models.py:1066 #: part/models.py:1068
msgid "BOM quantity for this BOM item" msgid "BOM quantity for this BOM item"
msgstr "" msgstr ""
#: part/models.py:1069 #: part/models.py:1071
msgid "Estimated build wastage quantity (absolute or percentage)" msgid "Estimated build wastage quantity (absolute or percentage)"
msgstr "" msgstr ""
#: part/models.py:1072 #: part/models.py:1074
msgid "BOM item reference" msgid "BOM item reference"
msgstr "" msgstr ""
#: part/models.py:1075 #: part/models.py:1077
msgid "BOM item notes" msgid "BOM item notes"
msgstr "" msgstr ""
#: part/models.py:1077 #: part/models.py:1079
msgid "BOM line checksum" msgid "BOM line checksum"
msgstr "" msgstr ""
#: part/models.py:1140 #: part/models.py:1142
msgid "Part cannot be added to its own Bill of Materials" msgid "Part cannot be added to its own Bill of Materials"
msgstr "" msgstr ""
#: part/models.py:1147 #: part/models.py:1149
#, python-brace-format #, python-brace-format
msgid "Part '{p1}' is used in BOM for '{p2}' (recursive)" msgid "Part '{p1}' is used in BOM for '{p2}' (recursive)"
msgstr "" msgstr ""
@ -844,10 +923,18 @@ msgstr ""
msgid "Part cannot be sold to customers" msgid "Part cannot be sold to customers"
msgstr "" msgstr ""
#: part/templates/part/notes.html:9 #: part/templates/part/notes.html:13 part/templates/part/notes.html:28
msgid "Part Notes" msgid "Part Notes"
msgstr "" msgstr ""
#: part/templates/part/notes.html:19
msgid "Save"
msgstr ""
#: part/templates/part/notes.html:31
msgid "Edit notes"
msgstr ""
#: part/templates/part/part_base.html:11 #: part/templates/part/part_base.html:11
msgid "This part is not active" msgid "This part is not active"
msgstr "" msgstr ""
@ -929,27 +1016,27 @@ msgstr ""
msgid "Set category for {n} parts" msgid "Set category for {n} parts"
msgstr "" msgstr ""
#: part/views.py:773 #: part/views.py:806
msgid "No BOM file provided" msgid "No BOM file provided"
msgstr "" msgstr ""
#: part/views.py:1034 #: part/views.py:1067
msgid "Enter a valid quantity" msgid "Enter a valid quantity"
msgstr "" msgstr ""
#: part/views.py:1058 part/views.py:1061 #: part/views.py:1091 part/views.py:1094
msgid "Select valid part" msgid "Select valid part"
msgstr "" msgstr ""
#: part/views.py:1067 #: part/views.py:1100
msgid "Duplicate part selected" msgid "Duplicate part selected"
msgstr "" msgstr ""
#: part/views.py:1095 #: part/views.py:1128
msgid "Select a part" msgid "Select a part"
msgstr "" msgstr ""
#: part/views.py:1099 #: part/views.py:1132
msgid "Specify quantity" msgid "Specify quantity"
msgstr "" msgstr ""