Página 1 de 1

PEDIDOS SEPARADOS NA MULTILOJA [RESOLVIDO]

Enviado: 22 Fev 2024, 11:53
por turcorossi
Olá.
Tenho um OC 3.0.3.0
Com sistema multiloja.

www.dominio.com.br - loja desktop
m.dominio.com.br - versão mobile

Tudo funciona perfeito, layout entre outros, formatei um PWA e agora convertendo para TWA.

Meu único detalhe é que no admin chegam todos os pedidos, informando que são de app ou site.
Mas no lado do usuário frontend, o pedido que vêm do desktop não consegue ver no mobile e vise versa.

No inicio gostaria de unificar os pedidos na tela do usuário, que ele possa ver tanto o pedido do desktop como do mobile e saiba na informação por onde ele fez o pedido.

Gostaria de saber, pois não achei a informação, no sistema Multi loja, o usuário somente consegue ver os pedidos individuais feitos em cada loja?
Ou meu O.C esta com problemas, pois deveria funcionar assim?

Obrigado

Re: PEDIDOS SEPARADOS NA MULTILOJA

Enviado: 23 Fev 2024, 12:09
por turcorossi
Resolvido!

Explicando melhor, se alguém realizar o mesmo processo que o meu.
A multiloja do OC. é para ser 2 lojas distintas em dominios diferentes ou dominio e subdominio com o mesmo painel administrativo.

No meu caso estou desenvolvendo um layout como desktop e outro somente para versão mobile, com a performasse no Google PageSpeed a mais alta, removendo todo o css e javascript desnecessario (Que ainda esta sendo modificado). Deixando o layout o mais leve possível, com isso estou criando dentro de um subdominio https://m.dominio.com.br que será um PWA - aplicação pelo navegador e logo mais um TWA - APP da Playstore, que irá rodar através do navegador.
Se o usuário acessar pelo www.dominio.com.br leva uma loja com outro layout. Se ele acessar através do celular, o script reconhece o modelo do sistema OP sendo Android ou IOS ou outro, e direciona ele ao m.dominio.com.br, quando ele acessa além de ser mais rápido em um layout com experiência mobile, ele tem a possibilidade de instalar que irá rodar pelo navegador, tanto Chrome,Edge ou Safari. E mais tarde quando finalizado o projeto poderá instalar através do PLAYSTORE (Android) ou AAPStore (Apple). Esse é o projeto com 90% conclusão.

No caso da multiloja existem 2 lojas diferentes tratadas diferentes com 1 administração. Função nativa do O.C.

O que fiz foi unificar os pedidos e diferencia-los por Site e APP, mas que tanto no admin e no histórico de pedidos do usuário deverá aparecer todos os pedidos.

Até que foi simples
No arquivo model no caminho do catalog/account/order.php

Busque por
Código: Selecionar todos
$query = $this->db->query("SELECT o.order_id, o.firstname, o.lastname, os.name as status, o.date_added, o.total, o.currency_code, o.currency_value FROM `" . DB_PREFIX . "order` o LEFT JOIN " . DB_PREFIX . "order_status os ON (o.order_status_id = os.order_status_id) WHERE o.customer_id = '" . (int)$this->customer->getId() . "' AND o.order_status_id > '0' AND o.store_id = '" . (int)$this->config->get('config_store_id') . "' AND os.language_id = '" . (int)$this->config->get('config_language_id') . "' ORDER BY o.order_id DESC LIMIT " . (int)$start . "," . (int)$limit);
Substitua por
Código: Selecionar todos
$query = $this->db->query("SELECT o.order_id, o.firstname, o.lastname, os.name as status, o.date_added, o.total, o.currency_code, o.currency_value FROM `" . DB_PREFIX . "order` o LEFT JOIN " . DB_PREFIX . "order_status os ON (o.order_status_id = os.order_status_id) WHERE o.customer_id = '" . (int)$this->customer->getId() . "' AND o.order_status_id > '0' AND os.language_id = '" . (int)$this->config->get('config_language_id') . "' ORDER BY o.order_id DESC LIMIT " . (int)$start . "," . (int)$limit);
Busque no mesmo arquivo:
Código: Selecionar todos
$query = $this->db->query("SELECT COUNT(*) AS total FROM `" . DB_PREFIX . "order` o WHERE customer_id = '" . (int)$this->customer->getId() . "' AND o.order_status_id > '0' AND o.store_id = '" . (int)$this->config->get('config_store_id') . "'");
E substitua por:
Código: Selecionar todos
$query = $this->db->query("SELECT COUNT(*) AS total FROM `" . DB_PREFIX . "order` o WHERE customer_id = '" . (int)$this->customer->getId() . "' AND o.order_status_id > '0'");
Assim o usuário ao acessar sua conta, poderá ver no histórico de pedidos todos os pedidos criados, indiferente da loja onde foi feito o pedido.

Grato e abs