Exakte suche in der API

Hallo

Mal so ne Anfängerfrage…   ;-)

Ich habe mir ein Script gebaut, welches nach der Productnummer die neue UID des Produktes holt und in unser WaWi einträgt. Funktiniert wunderbar genau bis ich auf einen migrierten Masterartikel treffe den es nun ‚doppelt‘ gibt.

Wie finde ich über die API den Artikel mit der Produktnummer A-234567 aber ohne das Produkt  A-234567M zu finden?

 

Wir haben doch so kluge Köpfe hier, das weis doch bestimmt jemand…?!?

Hallo,

das sollte eigentlich mit dem EqualsFilter erreicht werden können. Dieser vergleicht auf SQL Ebene mit =

Viele Grüße aus Schöppingen

cool Michael Telgmann

Hallo Michael

Danke für Deine Antwort

/api/v1/product?EqualsFilter[product.manufacturerNumber]=KM-JB71147.00

ergibt mir nicht 2 sondern 10 Produkte zurück

Was mache ich noch falsch?

Hallo,

ich weiß gerade ehrlich gesagt nicht, ob das wichtig ist, aber in unserer Doku nutzen wir nur “filter” https://docs.shopware.com/en/shopware-platform-dev-en/api/filter-search-limit?category=shopware-platform-dev-en/api#filter
Ich werde aber auch noch mal die Kollegen befragen. Du nutzt aber nicht zufällig ElasticSearch oder?

Viele Grüße aus Schöppingen

cool Michael Telgmann

Nicht das ich wüsste    :wink:

Ist ein ganz neuer SW6 ohne Alles und versuche unser WaWi anzubinden…

Das mit dem hinten angehängten M macht wie befürchtet schon die ersten Probleme, finde das einen sehr unschönen/unsauberen Weg.

Naja, irgendwie musst du ja aus einer Artikelnummer zwei machen. Die Struktur hat sich halt grundlegend geändert, sodass das nötig ist. Was wäre denn da deine Wunschlösung gewesen? Das konstrukt ist so ja zwingend notwendig wenn es einen Masterartikel geben soll.

Du hast mich gefragt…  Wearing-Sunglasses

Meine Bedenken gehen dahin was passiert wenn ich einen Artikel 100 und 100M und 100MM bereits habe? Muss ja einen Konflikt geben…

Die Kennzeichnung in der Artikelnummer finde ich nicht nur aus diesem Grung sehr unglücklich.

Wieso braucht ein Masterartikel überhaupt eine Artikelnummer, ist ja gar kein Artikel!

Die Probleme jetzt mit meiner Abfrage wird ja nur die Spitze des Eisberges sein! Und wenn schon so unschön hintenangehängt (wieso nicht vorne?) wieso dann nicht wenigstens irgendwelche Sonderzeichen dazwischen um die Konflikte zu miimieren. Gerade das M ist ein sehr häufig benutzter Buchstabe in den Artikelnummern, M wie Medium, M wie Meterware, M wie Musterartikel, M wie Mondfarbig…

Oder man verwendet das Feld Artikelnummer nicht mehr für die Artikelnummer…

Und da Du mich gefragt hast wie ich mir es wünschen würde, ich würde die Artikelnummer entweder leer lassen (Favorit), oder MMM#- vorne ergänzen, nicht schön, aber sehr unwahrscheinlich für Konflikte. Und meine Abfrage würde funktionieren! :slight_smile:

Das kann man ja ggf. konfigurierbar machen, also eine Art prefix/suffix. Der Masterartikel muss eine Ordernumber haben, daran lässt sich so erstmal nichts ändern und das ist auch das gängigste Konzept.

Hallo @aqula‍

die URL für den Request müsste wie folgt aussehen: /api/v1/product?filter[product.manufacturerNumber]=KM-JB71147.00
„EqualsFilter“ kennt er nicht als Parameter, deswegen wird dieser ignoriert. Da habe ich mich unverständlich ausgedrückt. „EqualsFilter“ ist der Name der PHP Klasse im Code  Wink

Viele Grüße aus Schöppingen

cool Michael Telgmann

Ich gehe mal davon aus, dass Ihr die ganze Struktur über die UID’s macht und dann sollte es ja (eigentlich) keinerlei andere Abhängigkeiten mehr geben…

Solche Zwänge schränken nun halt mal immer ein…

Aber um das auch mal gesagt zu haben, ich bin HELL BEGEISTERT von der SW6, daher seit Ihr sicherlich nicht auf dem falschen Weg! Besten Dank dafür und auch für den erstklassigen Support!

Aber zurück zum Thema, wie mache ich denn jetzt eine exakte Suche über die API?

Hallo, 

hattest du meinen Kommentar schon gelesen?  Smile Damit sollte es eigentlich funktionieren.

Viele Grüße aus Schöppingen

cool Michael Telgmann

die URL für den Request müsste wie folgt aussehen: /api/v1/product?filter[product.manufacturerNumber]=KM-JB71147.00

 

https://neu.shoppet.ch/api/v1/product?filter[product.manufacturerNumber]=ART::Art\_Nr

ART::Art_Nr wird aufglöst vor dem senden

Das gibt mir immer noch beide Produkte zurück, den mit der Ordernumber und der mit dem angehängten M

Hallo,

ich sehe jetzt erst, dass du den Query auf manufacturerNumber machst. Sollte die Artikelnummer nicht in productNumber stehen?

Viele Grüße aus Schöppingen

cool Michael Telgmann

Hallo,

leider können wir das Problem von dir bei unseren Umgebungen so nicht nachvollziehen. Wenn wir „filter“ nutzen, dann bekommen wir genau das zurück, wonach wir gesucht haben. Auch wenn es Produkte gibt, die gleich anfangen und zusätzlich noch was dran stehen haben.
Ich versuche nur eventuelle Edge Cases auszuschließen. 

Viele Grüße aus Schöppingen

cool Michael Telgmann

Gib mir kurz 10 Minuten, ich teste das nochmals ganz sauber von Beginn weg…  Wearing-Sunglasses

Sooooo, Alles gelöscht und nochmals neu geschrieben!

Jetzt geht es bei mir auch, kann sowohl die ohne M einzeln abrufen als auch die mit m.

Sooory für die Umstände, weiss nicht was ich da eingebaut hatte