Como copiar o carrinho em outro carrinho para alterar o id_cart?

Objetivos do blog

Depois de ler este blog, poderemos copiar o carrinho em outro carrinho para alterar o código do carrinho.

Exigência

Precisamos modificar o arquivo abaixo para corrigir o mesmo. Nós estaremos fazendo mudanças no arquivo Core para o mesmo.

Diretório raiz \ classes \ PaymentModule.php

Procedimento

Precisamos modificar a função de ordem de validação no arquivo de classe PaymentModule. Como essa função é chamada apenas uma vez ao concluir o pedido. Portanto, adicionamos o código no mesmo para evitar a criação de vários carrinhos.

if (self :: DEBUG_MODE) {PrestaShopLogger :: addLog ('PaymentModule :: validateOrder - Função chamada', 1, nulo, 'Carrinho', (int) $ id_cart, true); } if (! isset ($ this-> contexto)) {$ this-> context = Context :: getContext (); } $ this-> context-> cart = new Carrinho ((int) $ id_cart);

O código abaixo precisa ser adicionado na função de ordem de validação após as linhas acima.

// mudanças iniciadas // Para salvar a chave segura do id do carrinho atual e reatribuir o mesmo para o novo carrinho $ old_cart_secure_key = $ this-> context-> cart-> secure_key; // Para salvar o ID do cliente do ID do carrinho atual e reatribuir o mesmo para o novo carrinho $ old_cart_customer_id = (int) $ this-> context-> cart-> id_customer; // Para desmapear o cliente do carrinho antigo $ this-> context-> cart-> id_customer = 0; // Para atualizar o carrinho $ this-> context-> cart-> save (); // Para buscar os produtos do carrinho atual $ cart_products = $ this-> context-> cart-> getProducts (); // Criando novo objeto de carrinho $ this-> context-> cart = new Cart (); $ this-> context-> cart-> id_lang = $ this-> contexto-> idioma-> id; $ this-> context-> cart-> id_currency = $ this-> contexto-> moeda-> id; // para adicionar novo carrinho $ this-> context-> cart-> add (); // para atualizar o novo cart foreach ($ cart_products as $ product) {$ this-> context-> cart-> updateQty ((int) $ product ['quantidade'], (int) $ product ['id_product'], (int) $ product ['id_product_attribute']); } if ($ this-> context-> cookie-> id_guest) {$ guest = new Convidado ($ this-> contexto-> cookie-> id_guest); $ this-> context-> cart-> mobile_theme = $ guest-> mobile_theme; } // para mapear o novo carrinho com o cliente $ this-> context-> cart-> id_customer = $ old_cart_customer_id; // para salvar o novo carrinho $ this-> context-> cart-> save (); if ($ this-> context-> cart-> id) {$ this-> contexto-> cookie-> id_cart = (int) $ this-> contexto-> cart-> id; $ this-> context-> cookie-> write (); } // para atualizar o $ id_cart com o do novo carrinho $ id_cart = (int) $ this-> context-> cart-> id; $ this-> context-> cart-> secure_key = $ old_cart_secure_key; // muda mais

Depois de seguir o procedimento acima, a lista de carrinho de compras terá esta aparência, ou seja, ter um carrinho duplicado com os mesmos detalhes do carrinho com o qual o pedido foi feito.
lista de carrinho de compras

Resumo

Após seguir o procedimento acima, você poderá copiar o carrinho em outro carrinho para alterar o id_cart.


Leave a Reply

Your email address will not be published. Required fields are marked *