Jump to content
  • 0

Bestellungen in Multishop übertragen


4ijik

Question

Moin Community,

Wir haben folgendes Problem:

Wir haben einen Prestashop, über den Kunden z.B. Artikel 1 in den Warenkorb hinzufügen können, dieser soll im bestellprozess an den multishop übertragen werden, jedoch als Artikel 2. Also ein ganz anderer Artikel mit einer anderen ID.

Bisher haben wir das auch soweit gelöst bekommen mit einem Override der OrderController.php

Das einzige Problem dabei ist, dass denoch Artikel 1, statt Artikel 2 angezeigt wird.

Wenn man aber im Backend, in der Bestellung auf den Artikel klickt, wird richtigerweise Artikel 2 auch geöffnet.

Unser scheinbar letztes Problem liegt darin, dass Artikel 1 nicht als Artikel 2 angezeigt wird obwohl es sich offensichtlich beim Klick darauf als Artikel 2 öffnet.

Worin könnte unser Problem liegen?

 

Version 8.1.3

PHP 8.1

Theme Classic

 

Code OrderController.php folgt

Link to comment
Share on other sites

1 answer to this question

Recommended Posts

  • 0

Der Code unserer OrderContoller.php aus dem Override Ordner:


<?php
class OrderController extends OrderControllerCore
{
    /*
    * module: yourcustommodule
    * date: 2024-06-10 23:46:42
    * version: 1.0.0
    */
    public function postProcess()
    {
        parent::postProcess();

        // IDs der Shops definieren
        $multiShopId = Shop::getIdByName('multishop');
        $mainShopId = Shop::getIdByName('hauptshop.com');

        // Aktuellen Kontext-Shop überprüfen
        if (Context::getContext()->shop->id == $multiShopId) {
            $cart = Context::getContext()->cart;
            $products = $cart->getProducts();

            // Neuen Kontext für Hauptshop erstellen
            $mainShopContext = Context::getContext();
            $mainShopContext->shop->id = $mainShopId;

            // Neuen Warenkorb für Hauptshop erstellen
            $newCart = new Cart();
            $newCart->id_shop = $mainShopId;
            $newCart->id_currency = $cart->id_currency;
            $newCart->id_customer = $cart->id_customer;

            // Adresse und Zeitstempel setzen
            $newCart->id_address_delivery = $cart->id_address_delivery; // Verwenden Sie die Adresse aus dem Multishop-Warenkorb
            $newCart->id_address_invoice = $cart->id_address_invoice; // Verwenden Sie die Rechnungsadresse aus dem Multishop-Warenkorb
            $newCart->id_carrier = $cart->id_carrier; // Verwenden Sie den Versanddienst aus dem Multishop-Warenkorb
            $newCart->date_add = date('Y-m-d H:i:s'); // Setzen Sie den aktuellen Zeitstempel

            $newCart->add();

            // Produkte aus dem ursprünglichen Warenkorb hinzufügen und ID um 1000 erhöhen
            foreach ($products as $product) {
                $newProductId = $product['id_product'] + 1000;
               
                // Direkte Aktualisierung der Produkt-ID in der Datenbank
                Db::getInstance()->execute('
                    INSERT INTO `'._DB_PREFIX_.'cart_product` (id_cart, id_product, id_product_attribute, quantity, id_shop)
                    VALUES ('.(int)$newCart->id.', '.(int)$newProductId.', '.(int)$product['id_product_attribute'].', '.(int)$product['cart_quantity'].', '.(int)$mainShopId.')
                ');
            }

            $newCart->save();

            // Umleiten zum Hauptshop
            Tools::redirect('https://hauptshop.com/Bestellung');
        }
    }
}

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...