Added feature for part IPN suggest with category prefixes (#1054)

* Erweiterungstätigkeiten zur IPN-Vorschlagsliste anhand von Präfixen aus den Kategorien

* Umstellung Migrationen bzgl. Multi-Plattform-Support.
Zunächst MySQL, SQLite Statements integrieren.

* Postgre Statements integrieren

* SQL-Formatierung in Migration verbessern

* Erweitere IPN-Suggest um Bauteilbeschreibung.

Die Implementierung berücksichtigt nun zusätzlich die Bauteilbeschreibung zu maximal 150 Zeichen Länge für die Generierung von IPN-Vorschlägen und Inkrementen.

* Anpassungen aus Analyse vornehmen

* IPN-Validierung für Parts überarbeiten

* IPN-Vorschlagslogik um Konfiguration erweitert

* Anpassungen aus phpstan Analyse

* IPN-Vorschlagslogik erweitert und Bauteil-IPN vereindeutigt

Die IPN-Logik wurde um eine Konfiguration zur automatischen Suffix-Anfügung und die Berücksichtigung von doppelten Beschreibungen bei Bedarf ergänzt. Zudem wurde das Datenmodell angepasst, um eine eindeutige Speicherung der IPN zu gewährleisten.

* Regex-Konfigurationsmöglichkeit für IPN-Vorschläge einführen

Die Einstellungen für die IPN-Vorschlagslogik wurden um eine Regex-Validierung und eine Hilfetext-Konfiguration erweitert. Tests und Änderungen an den Formularoptionen wurden implementiert.

* Match range assert and form limits in suggestPartDigits

* Keep existing behavior with autoAppend suffix by default

* Show the regex hint in the browser validation notice.

* Improved translations

* Removed unnecessary service definition

* Removed german comments

---------

Co-authored-by: Marcel Diegelmann <marcel.diegelmann@gmail.com>
Co-authored-by: Jan Böhmer <mail@jan-boehmer.de>
This commit is contained in:
web-devinition.de 2025-11-03 00:31:47 +01:00 committed by GitHub
parent 14a4f1f437
commit 771857e014
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
34 changed files with 2791 additions and 115 deletions

View file

@ -1826,6 +1826,66 @@ Show/Hide sidebar</target>
<target>Avancé</target>
</segment>
</unit>
<unit id="a1k7Blf" name="part.edit.tab.advanced.ipn.commonSectionHeader">
<segment state="translated">
<source>part.edit.tab.advanced.ipn.commonSectionHeader</source>
<target>Suggestions sans incrément de partie</target>
</segment>
</unit>
<unit id="2achA.b" name="part.edit.tab.advanced.ipn.partIncrementHeader">
<segment state="translated">
<source>part.edit.tab.advanced.ipn.partIncrementHeader</source>
<target>Propositions avec incréments numériques de parties</target>
</segment>
</unit>
<unit id="a7jKe3c" name="part.edit.tab.advanced.ipn.prefix.description.current-increment">
<segment state="translated">
<source>part.edit.tab.advanced.ipn.prefix.description.current-increment</source>
<target>Spécification IPN actuelle pour la pièce</target>
</segment>
</unit>
<unit id="kEco9iX" name="part.edit.tab.advanced.ipn.prefix.description.increment">
<segment state="translated">
<source>part.edit.tab.advanced.ipn.prefix.description.increment</source>
<target>Prochaine spécification IPN possible basée sur une description identique de la pièce</target>
</segment>
</unit>
<unit id="dB1ChKc" name="part.edit.tab.advanced.ipn.prefix_empty.direct_category">
<segment state="translated">
<source>part.edit.tab.advanced.ipn.prefix_empty.direct_category</source>
<target>Le préfixe IPN de la catégorie directe est vide, veuillez le spécifier dans la catégorie "%name%"</target>
</segment>
</unit>
<unit id="ec2DiJd" name="part.edit.tab.advanced.ipn.prefix.direct_category">
<segment state="translated">
<source>part.edit.tab.advanced.ipn.prefix.direct_category</source>
<target>Préfixe IPN de la catégorie directe</target>
</segment>
</unit>
<unit id="2e.kJb4" name="part.edit.tab.advanced.ipn.prefix.direct_category.increment">
<segment state="translated">
<source>part.edit.tab.advanced.ipn.prefix.direct_category.increment</source>
<target>Préfixe IPN de la catégorie directe et d'un incrément spécifique à la partie</target>
</segment>
</unit>
<unit id="ba1GCoq" name="part.edit.tab.advanced.ipn.prefix.hierarchical.no_increment">
<segment state="translated">
<source>part.edit.tab.advanced.ipn.prefix.hierarchical.no_increment</source>
<target>Préfixes IPN avec un ordre hiérarchique des catégories des préfixes parents</target>
</segment>
</unit>
<unit id="d1uVFa3" name="part.edit.tab.advanced.ipn.prefix.hierarchical.increment">
<segment state="translated">
<source>part.edit.tab.advanced.ipn.prefix.hierarchical.increment</source>
<target>Préfixes IPN avec un ordre hiérarchique des catégories des préfixes parents et un incrément spécifique à la pièce</target>
</segment>
</unit>
<unit id="a4rPagW" name="part.edit.tab.advanced.ipn.prefix.not_saved">
<segment state="translated">
<source>part.edit.tab.advanced.ipn.prefix.not_saved</source>
<target>Créez d'abord une pièce et assignez-la à une catégorie : avec les catégories existantes et leurs propres préfixes IPN, l'identifiant IPN pour la pièce peut être proposé automatiquement</target>
</segment>
</unit>
<unit id="uc9NwcF" name="part.edit.tab.part_lots">
<notes>
<note category="file-source" priority="1">Part-DB1\templates\Parts\edit\edit_part_info.html.twig:40</note>
@ -6930,6 +6990,12 @@ Si vous avez fait cela de manière incorrecte ou si un ordinateur n'est plus fia
<target>Filtre de nom</target>
</segment>
</unit>
<unit id="dsG4xTQ" name="category.edit.part_ipn_prefix">
<segment state="translated">
<source>category.edit.part_ipn_prefix</source>
<target>Préfixe de pièce IPN</target>
</segment>
</unit>
<unit id="UH78POJ" name="category.edit.default_description">
<notes>
<note priority="1">obsolete</note>
@ -9151,5 +9217,17 @@ exemple de ville</target>
<target>État personnalisé de la pièce</target>
</segment>
</unit>
<unit id="OXeGz1A" name="category.edit.part_ipn_prefix.placeholder">
<segment state="translated">
<source>category.edit.part_ipn_prefix.placeholder</source>
<target>par ex. "B12A"</target>
</segment>
</unit>
<unit id="a1bUsfJ" name="category.edit.part_ipn_prefix.help">
<segment state="translated">
<source>category.edit.part_ipn_prefix.help</source>
<target>Un préfixe suggéré lors de la saisie de l'IPN d'une pièce.</target>
</segment>
</unit>
</file>
</xliff>