Knowband Blog | Ecommerce Modules

Come copiare il carrello in un altro carrello per cambiare il id_cart?

Obiettivi del blog

Dopo aver letto questo blog, saremo in grado di copiare il carrello in un altro carrello per cambiare l'Id del carrello.

Requisito

Abbiamo bisogno di modificare il file sottostante per risolvere lo stesso. Faremo delle modifiche nel file Core per lo stesso.

Directory principale \ classes \ PaymentModule.php

Procedura

È necessario modificare la funzione di ordine di convalida nel file di classe PaymentModule. Poiché questa funzione viene chiamata una sola volta durante il completamento dell'ordine. Quindi abbiamo aggiunto il codice nella stessa per evitare la creazione di più carrelli.

if (self :: DEBUG_MODE) {PrestaShopLogger :: addLog ('PaymentModule :: validateOrder - Funzione chiamata', 1, null, 'Carrello', (int) $ id_cart, true); } if (! isset ($ this-> context)) {$ this-> context = Context :: getContext (); } $ this-> context-> cart = new Cart ((int) $ id_cart);

Sotto il codice deve essere aggiunto nella funzione di ordine di convalida dopo le righe precedenti.

// modifiche avviate // Per salvare la chiave sicura dell'id del carrello corrente e riassegnare la stessa al nuovo carrello $ old_cart_secure_key = $ this-> context-> cart-> secure_key; // Per salvare l'id cliente dell'id del carrello corrente e riassegnare lo stesso al nuovo carrello $ old_cart_customer_id = (int) $ this-> context-> cart-> id_customer; // Per rimuovere il client dal vecchio carrello $ this-> context-> cart-> id_customer = 0; // Per aggiornare il carrello $ this-> context-> cart-> save (); // Per recuperare i prodotti del carrello corrente $ cart_products = $ this-> context-> cart-> getProducts (); // Creazione di un nuovo oggetto carrello $ this-> context-> cart = new Cart (); $ this-> context-> cart-> id_lang = $ this-> context-> language-> id; $ this-> context-> cart-> id_currency = $ this-> context-> currency-> id; // per aggiungere un nuovo carrello $ this-> context-> cart-> add (); // per aggiornare il nuovo carrello foreach ($ cart_products as $ product) {$ this-> context-> cart-> updateQty ((int) $ product ['quantity'], (int) $ product ['id_product'], (int) $ product ['id_product_attribute']); } if ($ this-> context-> cookie-> id_guest) {$ guest = new Guest ($ this-> context-> cookie-> id_guest); $ this-> context-> cart-> mobile_theme = $ guest-> mobile_theme; } // per mappare il nuovo carrello con il cliente $ this-> context-> cart-> id_customer = $ old_cart_customer_id; // per salvare il nuovo carrello $ this-> context-> cart-> save (); se ($ this-> context-> cart-> id) {$ this-> context-> cookie-> id_cart = (int) $ this-> context-> cart-> id; $ This-> context-> cookie-> write (); } // per aggiornare $ id_cart con quello del nuovo carrello $ id_cart = (int) $ this-> context-> cart-> id; $ this-> context-> cart-> secure_key = $ old_cart_secure_key; // cambia

Dopo aver seguito la procedura di cui sopra, l'elenco del carrello acquisti sarà simile ad esempio avendo un carrello duplicato con gli stessi dettagli del carrello con cui viene effettuato l'ordine.

sommario

Dopo aver seguito la procedura di cui sopra, potrai copiare il carrello in un altro carrello per cambiare il codice id_cart.