diff --git a/src/DataTables/Filters/PartFilter.php b/src/DataTables/Filters/PartFilter.php
index cf185dfd..a08293ca 100644
--- a/src/DataTables/Filters/PartFilter.php
+++ b/src/DataTables/Filters/PartFilter.php
@@ -66,6 +66,7 @@ class PartFilter implements FilterInterface
public readonly BooleanConstraint $favorite;
public readonly BooleanConstraint $needsReview;
public readonly NumberConstraint $mass;
+ public readonly TextConstraint $gtin;
public readonly DateTimeConstraint $lastModified;
public readonly DateTimeConstraint $addedDate;
public readonly EntityConstraint $category;
@@ -132,6 +133,7 @@ class PartFilter implements FilterInterface
$this->measurementUnit = new EntityConstraint($nodesListBuilder, MeasurementUnit::class, 'part.partUnit');
$this->partCustomState = new EntityConstraint($nodesListBuilder, PartCustomState::class, 'part.partCustomState');
$this->mass = new NumberConstraint('part.mass');
+ $this->gtin = new TextConstraint('part.gtin');
$this->dbId = new IntConstraint('part.id');
$this->ipn = new TextConstraint('part.ipn');
$this->addedDate = new DateTimeConstraint('part.addedDate');
diff --git a/src/DataTables/PartsDataTable.php b/src/DataTables/PartsDataTable.php
index 0baee630..fbc5211d 100644
--- a/src/DataTables/PartsDataTable.php
+++ b/src/DataTables/PartsDataTable.php
@@ -218,6 +218,10 @@ final class PartsDataTable implements DataTableTypeInterface
'label' => $this->translator->trans('part.table.mass'),
'unit' => 'g'
])
+ ->add('gtin', TextColumn::class, [
+ 'label' => $this->translator->trans('part.table.gtin'),
+ 'orderField' => 'NATSORT(part.gtin)'
+ ])
->add('tags', TagsColumn::class, [
'label' => $this->translator->trans('part.table.tags'),
])
diff --git a/src/Form/Filters/PartFilterType.php b/src/Form/Filters/PartFilterType.php
index e101c635..25fe70b2 100644
--- a/src/Form/Filters/PartFilterType.php
+++ b/src/Form/Filters/PartFilterType.php
@@ -135,6 +135,10 @@ class PartFilterType extends AbstractType
'min' => 0,
]);
+ $builder->add('gtin', TextConstraintType::class, [
+ 'label' => 'part.gtin',
+ ]);
+
$builder->add('measurementUnit', StructuralEntityConstraintType::class, [
'label' => 'part.edit.partUnit',
'entity_class' => MeasurementUnit::class
diff --git a/src/Settings/BehaviorSettings/PartTableColumns.php b/src/Settings/BehaviorSettings/PartTableColumns.php
index c025c952..2ea66525 100644
--- a/src/Settings/BehaviorSettings/PartTableColumns.php
+++ b/src/Settings/BehaviorSettings/PartTableColumns.php
@@ -48,6 +48,7 @@ enum PartTableColumns : string implements TranslatableInterface
case MPN = "manufacturer_product_number";
case CUSTOM_PART_STATE = 'partCustomState';
case MASS = "mass";
+ case GTIN = "gtin";
case TAGS = "tags";
case ATTACHMENTS = "attachments";
case EDIT = "edit";
diff --git a/templates/parts/lists/_filter.html.twig b/templates/parts/lists/_filter.html.twig
index 2fb5bff2..3130f379 100644
--- a/templates/parts/lists/_filter.html.twig
+++ b/templates/parts/lists/_filter.html.twig
@@ -65,6 +65,7 @@
{{ form_row(filterForm.mass) }}
{{ form_row(filterForm.dbId) }}
{{ form_row(filterForm.ipn) }}
+ {{ form_row(filterForm.gtin) }}
{{ form_row(filterForm.lastModified) }}
{{ form_row(filterForm.addedDate) }}
@@ -163,4 +164,4 @@
{{ form_end(filterForm) }}
-
\ No newline at end of file
+
diff --git a/translations/messages.en.xlf b/translations/messages.en.xlf
index f9689089..8953982d 100644
--- a/translations/messages.en.xlf
+++ b/translations/messages.en.xlf
@@ -12413,5 +12413,11 @@ Buerklin-API Authentication server:
GTIN / EAN
+
+
+ part.table.gtin
+ GTIN
+
+