Mehrere Artikel einen neuen Verkaufskanal zuweisen

Hallo,

ich möchte über 200 Artikel einen neuen Verkaufskanal zuweisen, gibt es da eine möglichkeit, ohne jeden Artikel einzeln anzuklicken und dort den Verkaufskanal bzw dessen Sichtbarkeit zu ändern ??

Gehe ich richtig davon aus, das dies nicht möglich ist ?

es sind tickets offen auch gibt es schon einige Beiträge jedoch konnte ich bis jetzt keine Lösung finden . Der Support reagiert leider auch nicht auf die Tickts die schon ne weile bestehen. Ist schade eigentlich. 

Die UI ist …verbesserungswürdig…

Wenn Du keine Angst vor einer OP am offenen Herzen hast, hol Dir das Adminer-Plugin und veränder es direkt in der Datenbank. Aber: ohne Gewähr!

 

https://forum.shopware.com/discussion/comment/276257/#Comment_276257

Da sind noch sehr sehr viele Baustellen in Shopware 6 und irgendwie passiert da auch ganz wenig, das ging bei Shopware 5 schneller mit updates und den RC. Der Google Shopping export klappt auch nicht richtig. Kurz gesagt man kann es nicht Produktiv einsetzen, sehr schade aber irgendwie kommt es mir sehr unfertig vor.

Gibts hier schon eine Lösung?

Ich setze die Sichtbarkeit bei mehreren Tausend Produkten per cronjob und Datenbank-Update regelmäßig, um leer gekaufte Artikel in den Kategorien und den Suchergebnissen zu verstecken. Dies scheint aber im Frontend nicht anzukommen, die Artikel sind also weiter sichtbar, was evtl. mit unserer Elastic Suche und dem ewig dauernden Reindex zu tun haben könnte. Hier jedenfalls ein paar Zeilen Code dafür:

    // See constants in vendor/shopware/core/Content/Product/Aggregate/ProductVisibility/ProductVisibilityDefinition.php
    // VISIBILITY_LINK = 10;
    // VISIBILITY_SEARCH = 20;
    // VISIBILITY_ALL = 30;
    // product_visibility.updated_at must be updated with an extra query, as it doesn't have a current_timestamp() default
    $newVisibility = $available ? 30 : 10;
    $DB->query("UPDATE product_visibility SET
            visibility=".$newVisibility."
        WHERE
            product_id = ".$pid."
            -- AND product_version_id = ? -- although version is part of the unique key, it should be safe to ignore it 
            AND sales_channel_id = 0x".$channelId."
        ");

Löse das besser über das DAL. Ansonsten müssten du erstmal herausfinden, was shopware intern alles an den Datenbanken ausführt, wenn du den saleschannel an Produkten änderst

Laut Roadmap ist da ab ca. Mai eventuell mit einer Lösung zu rechnen.

Nach einer Migration möchte ich gerne alle Artikel (~5000) einem anderen Verkaufskanal zuweisen.
Gibt es hierzu inzwischen irgendwie eine Lösung (Batch / Task, etc.)?

Edit: laut Roadmap „Improve product UX - II“ Ende Juli (mit aktuellem Stand von 91%). Hoffen… :crossed_fingers:

Hallo,
gibt es immer noch keine Lösung dafür? Bitte diese essentielle Funktion schnell implementieren.

Man kann doch über einen Produkt-Export-Import den Verkaufskanal ändern. Sonst kann man sich nur mit einem Plugin behelfen.

Dieser Beitrag ist zwar uralt, aber hier ist meine Lösung, um ALLE Artikel einem neuen Saleskanal zuzuordnen per Mysql.

Bitte vorher ein Datenbank Backup machen!

  1. ID des neuen Verkaufskanals ermitteln:
SELECT sc.id
FROM sales_channel sc
INNER JOIN sales_channel_translation sct ON sc.id = sct.sales_channel_id
WHERE sct.name = 'NAME DES NEUEN SALESKANALS';

Als Ergebnis erhaltet Ihr die Datenbank ID des neuen Verkaufskanals.
Kopiert diese ID OHNE die „0x“ am Anfang

  1. Neue Zuordnung in der product_visibility Tabelle einfügen:
INSERT INTO product_visibility (id, product_id, product_version_id, sales_channel_id, visibility, created_at)
SELECT 
    UNHEX(REPLACE(UUID(), '-', '')), -- Generates unique ID for product_visibility
    p.id, 
    p.version_id, 
    UNHEX(KOPIERTE SALES KANAL ID OHNE 0x), -- Actual sales channel ID of "Hochzeitsdeko Ideen"
    30, -- Example visibility level; adjust as needed
    NOW() -- Current date and time for created_at
FROM 
    product p
WHERE 
    NOT EXISTS (
        SELECT 1
        FROM product_visibility pv
        WHERE pv.product_id = p.id
        AND pv.product_version_id = p.version_id
        AND pv.sales_channel_id = UNHEX('KOPIERTE SALES KANAL ID OHNE 0x')
    );

Et voila! Bei mir funktioniert es sehr gut. Ihr könnt diese Anweisung mit meinem Mysql GPT Chatbot leicht anpassen:

Viel Spass,

Jens