Allow to order and filter by GTIN in part tables

This commit is contained in:
Jan Böhmer 2026-02-08 15:51:39 +01:00
parent 1130f71075
commit a962e5e019
6 changed files with 19 additions and 1 deletions

View file

@ -66,6 +66,7 @@ class PartFilter implements FilterInterface
public readonly BooleanConstraint $favorite; public readonly BooleanConstraint $favorite;
public readonly BooleanConstraint $needsReview; public readonly BooleanConstraint $needsReview;
public readonly NumberConstraint $mass; public readonly NumberConstraint $mass;
public readonly TextConstraint $gtin;
public readonly DateTimeConstraint $lastModified; public readonly DateTimeConstraint $lastModified;
public readonly DateTimeConstraint $addedDate; public readonly DateTimeConstraint $addedDate;
public readonly EntityConstraint $category; public readonly EntityConstraint $category;
@ -132,6 +133,7 @@ class PartFilter implements FilterInterface
$this->measurementUnit = new EntityConstraint($nodesListBuilder, MeasurementUnit::class, 'part.partUnit'); $this->measurementUnit = new EntityConstraint($nodesListBuilder, MeasurementUnit::class, 'part.partUnit');
$this->partCustomState = new EntityConstraint($nodesListBuilder, PartCustomState::class, 'part.partCustomState'); $this->partCustomState = new EntityConstraint($nodesListBuilder, PartCustomState::class, 'part.partCustomState');
$this->mass = new NumberConstraint('part.mass'); $this->mass = new NumberConstraint('part.mass');
$this->gtin = new TextConstraint('part.gtin');
$this->dbId = new IntConstraint('part.id'); $this->dbId = new IntConstraint('part.id');
$this->ipn = new TextConstraint('part.ipn'); $this->ipn = new TextConstraint('part.ipn');
$this->addedDate = new DateTimeConstraint('part.addedDate'); $this->addedDate = new DateTimeConstraint('part.addedDate');

View file

@ -218,6 +218,10 @@ final class PartsDataTable implements DataTableTypeInterface
'label' => $this->translator->trans('part.table.mass'), 'label' => $this->translator->trans('part.table.mass'),
'unit' => 'g' 'unit' => 'g'
]) ])
->add('gtin', TextColumn::class, [
'label' => $this->translator->trans('part.table.gtin'),
'orderField' => 'NATSORT(part.gtin)'
])
->add('tags', TagsColumn::class, [ ->add('tags', TagsColumn::class, [
'label' => $this->translator->trans('part.table.tags'), 'label' => $this->translator->trans('part.table.tags'),
]) ])

View file

@ -135,6 +135,10 @@ class PartFilterType extends AbstractType
'min' => 0, 'min' => 0,
]); ]);
$builder->add('gtin', TextConstraintType::class, [
'label' => 'part.gtin',
]);
$builder->add('measurementUnit', StructuralEntityConstraintType::class, [ $builder->add('measurementUnit', StructuralEntityConstraintType::class, [
'label' => 'part.edit.partUnit', 'label' => 'part.edit.partUnit',
'entity_class' => MeasurementUnit::class 'entity_class' => MeasurementUnit::class

View file

@ -48,6 +48,7 @@ enum PartTableColumns : string implements TranslatableInterface
case MPN = "manufacturer_product_number"; case MPN = "manufacturer_product_number";
case CUSTOM_PART_STATE = 'partCustomState'; case CUSTOM_PART_STATE = 'partCustomState';
case MASS = "mass"; case MASS = "mass";
case GTIN = "gtin";
case TAGS = "tags"; case TAGS = "tags";
case ATTACHMENTS = "attachments"; case ATTACHMENTS = "attachments";
case EDIT = "edit"; case EDIT = "edit";

View file

@ -65,6 +65,7 @@
{{ form_row(filterForm.mass) }} {{ form_row(filterForm.mass) }}
{{ form_row(filterForm.dbId) }} {{ form_row(filterForm.dbId) }}
{{ form_row(filterForm.ipn) }} {{ form_row(filterForm.ipn) }}
{{ form_row(filterForm.gtin) }}
{{ form_row(filterForm.lastModified) }} {{ form_row(filterForm.lastModified) }}
{{ form_row(filterForm.addedDate) }} {{ form_row(filterForm.addedDate) }}
</div> </div>
@ -163,4 +164,4 @@
{{ form_end(filterForm) }} {{ form_end(filterForm) }}
</div> </div>
</div> </div>
</div> </div>

View file

@ -12413,5 +12413,11 @@ Buerklin-API Authentication server:
<target>GTIN / EAN</target> <target>GTIN / EAN</target>
</segment> </segment>
</unit> </unit>
<unit id="JBGly8p" name="part.table.gtin">
<segment>
<source>part.table.gtin</source>
<target>GTIN</target>
</segment>
</unit>
</file> </file>
</xliff> </xliff>