2016-11-04 4 views
2

Wir führen eine Katalogbereinigung durch und fordern, dass alle Produkte, die keine Super-Kategorie haben, als inaktiv markiert werden. Solche Produkte liegen im PCM direkt unter der Katalogwurzel und nicht unter einer Superkategorie.Hybris: Produkte ohne Super-Kategorie als inaktiv markieren

Ich möchte die Liste aller solcher Produkte und über Impex Ich kann den approvalStatus von allen solchen Produkten wie 'check', so dass sie nicht mehr für den Benutzer im Storefront sichtbar sind.

Jede Hilfe wird sehr geschätzt!

Antwort

4

Lernen Sie Ihre Ziel Produkte

Die Idee ist es, alle Produkte von extrahieren ‚YOUR_CATALOG_ID‘ außer (nicht in) alle Produkte, die mindestens eine Kategorie haben. Sie könnten diese flexible Suche verwenden:

select {p.pk} 
from { Product as p join CatalogVersion as cv on {p.catalogversion}={cv.pk} 
    join Catalog as catalog on {cv.catalog}={catalog.pk} } 
where {catalog.id}='YOUR_CATALOG_ID' 
and {cv.version}='Staged' 
and {p.pk} not in ({{ 
    select {p.pk} 
    from {Product as p join CategoryProductRelation as pc on {p.pk}={pc.target} 
    join Category as c on {pc.source}={c.pk} 
    join CatalogVersion as cv on {p.catalogversion}={cv.pk} 
    join catalog as catalog on {cv.catalog}={catalog.pk}} 
    where {catalog.id}='YOUR_CATALOG_ID' 
    and {cv.version}='Staged' 
}}) 

Sie sollten „Produkt“ mit Ihrem eigenen Produkttyp ersetzen, wenn Ihr Datenmodell angepasst wurde.

aktualisieren Produkte ApprovalStatus

Als zweiten Schritt legen Sie eine impex, um erstellen könnte die ApprovalStatus zu ändern:

viel
INSERT_UPDATE Product;code[unique=true];approvalstatus(code); 
;target_product_pk;check; 
+0

Dank! Es hat perfekt funktioniert. –