Se no mundo real as lojas filiais se alastram diariamente pelo Brasil, no mundo virtual este sistema encontra alguns desafios. E eles se devem ao fato de que as plataformas que permitem uma solução de filiais eficiente são muito caras, senão complexas.
Diante deste dilema, precisei desenvolver uma solução que conseguisse utilizar a robustez do magento para atender uma loja matriz, onde a maioria das informações são editadas como: produto, fotos, preço, comissão de venda e lojas filiais com a capacidade de gestão parcial como: valor adicional para mudança no preço final do produto, banners entre outros.
A regra é clara: a loja matriz fornece os produtos, deste modo é a responsável pelo cadastro dos mesmos. As lojas filiais tem direito a uma comissão, diferente para cada produto, e também a possibilidade de adicionar um valor para incrementar seus ganhos, sem com isso diminuir o valor já orientado pela loja matriz.
Para entender como se processa esta solução, preferi dividir em algumas etapas:
- Criação do banco de dados espelho;
- Criação da loja espelho;
- Modificação da loja matriz para cálculo de comissão;
- Clonagem das lojas;
- Script para automatização da atualização de dados.
Embora a Internet seja uma ferramenta muito eficaz na busca por soluções, a procura por como desenvolver o sistema foi um grande desafio, principalmente devido ao fato de não encontrar na mídia algo que me auxiliasse no desenvolvimento. Neste contexto, tive a iniciativa de começar o sistema “do zero”, e gostaria de compartilhar essa experiência para evitar que outros programadores tenham essa mesma dificuldade.
Quero deixar bem claro que este exemplo está sendo executado no mesmo servidor. Fica a seu critério criar novas contas para as sublojas ou instalá-las em pastas diferentes. No exemplo, criaremos diferentes contas no mesmo servidor. Além disso, grande parte do processo já pode ser automatizado, basta utilizar os conhecimentos básicos de php.
Neste artigo, teremos a primeira etapa do trabalho. No próximo, vocês aprenderão a desenvolver o sistema de permissões para as filiais e o sistema de comissionamento.
1. Criação do banco de dados espelho
Essa etapa se constitui na criação do banco de dados que será o banco matriz para as lojas filiais. É um processo normal de criação do banco de dados utilizando Mysql com o gerenciador de banco de dados phpMyadmin. A partir desse banco de dados, as lojas filiais o terão como base.
Passo a passo:
Primeiramente, vamos criar a estrutura do banco de dados. Criaremos o nosso primeiro banco com o nome de multilojas_base, o qual será o espelho das nossas sublojas.

Precisaremos agora criar um usuário e senha, que também serão muito importantes para o funcionamento de nosso sistema multilojas. Dessa forma, vamos criar o usuário multi_lojas e a senha mult123lojas, como mostra o exemplo abaixo:

Depois do banco de dados e do usuário e senha criados, é necessário vincular esse usuário e senha ao banco de dados. Faça isso conforme a imagem:

Dando continuidade a estrutura do banco, temos que nos lembrar de que os bancos de dados precisam estar sempre atualizados e que para fazer essa atualização é preciso fazer uma simples regra na criação do restante dos bancos da sublojas, para que nosso sistema possa manter sempre os bancos atualizados. A partir de agora, para este exemplo, todo banco criado para uma subloja deverá conter sempre o mesmo usuário e senha, e como início de seu nome, os seguintes dizeres: multilojas_subloja, ou seja, se você quer criar um banco chamado loja1 ele deve ficar no seguinte formato:
multilojas_subloja_loja1
Os nomes aqui citados são para efeito de exemplo. Fique a vontade para nomear suas aplicações conforme preferir.
2. Criação da loja espelho
Nesta etapa, faremos a instalação de nossa loja matriz, que inicialmente segue um processo normal de instalação de lojas magento, mas que deve ser feito com cuidado, já que opções exclusivas de comissionamento dependem desta etapa.
Instalando a loja
Com os bancos de dados criados e vinculados ao usuário e a senha, daremos início à instalação da loja usando o magento. O processo de instalação pode ser executado normalmente em uma pasta com o nome base. Já na configuração, configure a loja de tal forma que ela seja vista como base. Essa loja não efetuará vendas, ela simplesmente servirá como espelho para as sublojas.
Com a loja criada e configurada como base, você agora pode fazer o cadastro de produtos, inserção de textos, imagens e o conteúdo necessário de sua loja. A url de acesso a essa loja base deve ser parecida a: http://www.seudominio.com.br/base.
Loja criada e configurada, é hora de começarmos a replicar o banco de dados. Faremos isso da seguinte maneira:
Primeiramente, acesse o phpmyadmin – estou me referindo ao phpmyadmin, devido ao fato de que, para este exemplo, ele fica muito simples para a clonagem do banco de dados; porém, fique a vontade para usar qualquer outra ferramenta.
Com o phpmyadmin aberto, acesse o banco multilojas_base e clique em operações. Este ícone fica localizado na aba do menu superior ao lado direito da tela. Após abrir o menu Operações, repare na opção a seguir: “Copiar Banco de Dados para”.
Na caixa de texto abaixo, digite o nome do banco de dados de sua subloja. Lembre-se de que o início do nome deve conter “multilojas_subloja”, então, se sua subloja se chamar teste1, nomeie o banco como: multilojas_subloja_teste1. Depois de preencher o nome do banco, certifique-se que a seguintes opções estão marcadas: estrutura e dados; CREATE DATABASE antes de copiar estrutura e dados e adicionar valor AUTO_INCREMENT.
Caso não estejam marcadas, marque-as. No caso de mais alguma, além das citadas acima, estar marcada, desmarque-a. Agora, basta apenas clicar em “executar” e aguardar a mensagem de que o banco foi copiado com sucesso.

Com o banco copiado, você precisa acessar a Base de Dados Mysql no seu administrador para atribuir o usuário correto para aquele banco criado recentemente. Faça isso agora. Atribua o usuário multi_lojas para o banco que você acabou de criar. Feito isso, precisaremos alterar algumas informações no banco de dados. Acesse seu phpmyadmin e lá navegue até o banco da subloja que você acabou de criar. Clique no menu superior PROCURAR, e no campo “Palavra(s) ou valor(es) para procurar (coringa “%”)” preencha da seguinte maneira: %seudominio.com.br/base%.
Vamos procurar pelo domínio onde foi instalada nossa loja base.
- Na opção “Encontrar”, deixe marcada a opção “pelo menos uma das palavras”;
- Na opção “Dentro da(s) tabela(s)”, marque todas as tabelas do banco de dados;
- Na opção “Dentro do campo”, deixe vazio.

Essa busca retornará um resultado com todas as tabelas do banco de dados. As tabelas que obtiverem “seudominio.com.br/base” exibirão na frente de seu nome “Visualizar Remover”.

Selecione a opção “Visualizar” nas seguintes tabelas: core_config_data.
Já na visualização da tabela, selecione a opção “SQL” do menu superior e cole o seguinte código:
UPDATE `core_config_data` SET value = replace (value, 'seudominio.com.br/base', 'outrodominio.com.br/')
Faça o mesmo para as demais:
- log_url_info
UPDATE `log_url_info` SET url= replace (url, 'seudominio.com.br/base', 'outrodominio.com.br/')
UPDATE `log_url_info` SET referer= replace (referer, 'seudominio.com.br/base', 'outrodominio.com.br/')
- log_url_info
UPDATE `log_visitor_info` SET http_referer= replace (http_refere, 'seudominio.com.br/base', 'outrodominio.com.br/')
Nessa etapa estamos substituindo as urls, ou seja, informando o banco que os acessos agora não são mais direcionados a nossa loja base, eles serão direcionados a nossa subloja. Lembre-se que neste exemplo estou criando uma nova conta para cada subloja. Caso alguém esteja criando as sublojas somente em pastas separadas, basta alterar o nome “base” para o nome da pasta da subloja.
Com o processo de banco de dados concluído, já estamos na metade de nosso trabalho. Agora nos falta replicar os arquivos da loja.
3. Clonagem das lojas:
Essa etapa se resume na cópia fiel da loja matriz e na ativação de uma nova loja de maneira simples e rápida. Para isso, acesse o painel de seu servidor ou o painel administrativo e navegue até o gerenciador de arquivos.

Neste, escolha a opção “Web Root (public_html/www)”:

Acesse o diretório onde se encontra instalado sua loja – em nosso caso, base -, e selecione todos os arquivos. Com os arquivos selecionados, clique no botão “compress” para compactá-los. Compacte os arquivos com o nome “loja.zip”.

Depois de compactado, você precisará jogar esse loja.zip para as contas das sublojas. Você pode fazer isso via ssh ou FTP, conforme preferir. Usando ssh, via putty ou terminal, via Linux, você pode usar a seguinte linha de comando: scp loja.zip root@ipdoservidor:/diretório.
Com o loja.zip copiado para a conta da subloja, acesse agora o painel da subloja e navegue novamente até o gerenciador de arquivos. Já no gerenciador de arquivos, escolha a opção “Web Root (public_html/www)” e acesse o diretório onde foi copiado o loja.zip, de preferência que esteja dentro do public_html. Caso não estiver, o coloque. Descompacte o arquivo. Para isso, selecione o loja.zip e clique em “Extrair”. Dessa forma, os arquivos serão extraídos para loja. Caso queira manter a loja como a pasta padrão, tudo bem, o processo está pronto, mas, se preferir deixar os arquivos na raiz da conta, logo após extrair os arquivos para loja, selecione todos os arquivos e clique no botão mover arquivo, selecione /public_html para que eles sejam movidos para o public_html (raiz).

Com os arquivos descompactados, abra o arquivo local.xml que está localizado no seguinte diretório: app->etc->local.xml.
Ao abrir o arquivo, você o encontrará da seguinte maneira:
<?xml version="1.0"?>
<!--
/**
* Magento
*
* NOTICE OF LICENSE
*
* This source file is subject to the Academic Free License (AFL 3.0)
* that is bundled with this package in the file LICENSE_AFL.txt.
* It is also available through the world-wide-web at this URL:
* http://opensource.org/licenses/afl-3.0.php
* If you did not receive a copy of the license and are unable to
* obtain it through the world-wide-web, please send an email
* to license@magentocommerce.com so we can send you a copy immediately.
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade Magento to newer
* versions in the future. If you wish to customize Magento for your
* needs please refer to http://www.magentocommerce.com for more information.
*
* @category Mage
* @package Mage_Core
* @copyright Copyright (c) 2008 Irubin Consulting Inc. DBA Varien (http://www.varien.com)
* @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
-->
<config>
<global>
<install>
<date><![CDATA[Mon, 12 Mar 2012 17:36:30 +0000]]></date>
</install>
<crypt>
<key><![CDATA[teste]]></key>
</crypt>
<disable_local_modules>false</disable_local_modules>
<resources>
<db>
<table_prefix><![CDATA[]]></table_prefix>
</db>
<default_setup>
<connection>
<host><![CDATA[localhost]]></host>
<username><![CDATA[multi_lojas]]></username>
<password><![CDATA[mult123lojas]]></password>
<dbname><![CDATA[multilojas_base]]></dbname>
<initStatements><![CDATA[SET NAMES utf8]]></initStatements>
<model><![CDATA[mysql4]]></model>
<type><![CDATA[pdo_mysql]]></type>
<pdoType><![CDATA[]]></pdoType>
<active>1</active>
</connection>
</default_setup>
</resources>
<session_save><![CDATA[files]]></session_save>
</global>
<admin>
<routers>
<adminhtml>
<args>
<frontName><![CDATA[admin]]></frontName>
</args>
</adminhtml>
</routers>
</admin>
</config>
Neste, precisaremos fazer a alteração do nome do banco de dados. Repare nas seguintes linhas:
<host><![CDATA[localhost]]></host>
<username><![CDATA[multi_lojas]]></username>
<password><![CDATA[mult123lojas]]></password>
<dbname><![CDATA[multilojas_base]]></dbname>
- host: é o servidor no qual está o banco de dados da loja;
- username: é o nome do usuário do banco de dados vinculado à loja;
- password: é a senha do usuário vinculado ao banco de dados da loja;
- dbname: é o nome do banco de dados da loja;
Nessa etapa, como o host, usuário e senha serão sempre os mesmos, para que o sistema funcione, precisaremos alterar apenas o nome do banco de dados. No caso deste exemplo, colocaremos como multi_lojas_eloja_teste1.
<dbname><![CDATA[multi_lojas_eloja_teste1]]></dbname>
Salve o arquivo. Feito isso, você concluiu a clonagem de sua loja base. Está quase tudo pronto. Acesse agora a url de sua subloja exemplo: http://www.teste1.com.br.
4. Modificação da loja matriz para cálculo de comissão
Essa etapa é onde devemos configurar nossa loja franqueada para que a partir dos dados transmitidos por ela, seja possível o cálculo de comissão do franqueado, a distinção de lojas, produtos vendidos e assim por diante.
Ao acessar a url, você deve reparar que sua subloja está idêntica a sua loja base. Você agora precisará fazer as alterações básicas que são:
- Endereço;
- Logo;
- Tema (caso queira);
- E-mails de envio e recebimento de mensagens (caso não for o mesmo da loja base);
- Telefone.
Neste momento, você irá alterar tudo que julgar necessário para que a sua subloja fique com suas respectivas características. Replique quantas vezes precisar.
Nesta etapa você deve estar se perguntando: Repliquei a loja, mas como o banco de dados vai se manter atualizado? É ai que entra todo o cuidado da estruturação do banco de dados mencionada anteriormente. Quando falamos em deixar os bancos de dados sempre atualizados com o da loja base, estamos nos referindo aos produtos. Se você está criando um sistema multilojas para uma franquia ou até mesmo para uma rede de lojas, a única coisa que você precisa manter idêntica nas lojas serão os produtos, certo? Pois cada uma possuirá seus clientes, vendas, pedidos e assim sucessivamente.
5. Script para automatização da atualização de dados
Finalmente a etapa de atualização de banco de dados. Aqui criaremos um belo script que fará um trabalho árduo, mas que nos fará economizar muito tempo e dinheiro. Esse script fará uma varredura em toda estrutura de dados do banco, buscando os bancos de dados relacionados à loja matriz, depois dos bancos capturados. Ele fará a exclusão dos produtos antigos e a inserção dos produtos novos, deixando o banco de dados idêntico ao de nossa loja matriz.
Para atualizar o banco de todas as lojas ao mesmo tempo, vamos criar um script que fará a leitura de todos os bancos de dados que possuírem na frente de seu nome o prefixo multilojas_subloja. Conforme o script faz a busca dos bancos, automaticamente ele dará um TRUNCATE nas tabelas referente aos produtos da loja, um SELECT no banco multilojas_base e também um INSERT nas tabelas, trazendo os dados da multilojas_base.
Crie um arquivo atualizar.php com as seguintes informações:
<?php
/*conexão usando o root do banco*/
$server = 'localhost';
$user = 'root';
$pass = 'senhadoroot';
//Aqui o script usa o root para se conectar ao banco de dados e vai listando todos os bancos que possuam multilojas_subloja na frente
$dbc = mysqli_connect('localhost', 'root', 'senhadoroot') or die ('Erro ao fazer a conexão');
$query = "show databases like 'multilojas_subloja%';";
$result = mysqli_query($dbc, $query) or die ('Erro ao listar bancos');
$row = mysqli_fetch_array($result);
while($row = mysqli_fetch_array($result)){
$db_loja = $row[0];
echo '<h1>'.$db_loja.'</h1><br/>';
$dbc_loja = mysqli_connect('localhost', 'multi_lojas', 'mult123lojas', $db_loja) or die ('Erro ao fazer a conexão');
$define_db = "USE $db_loja";
mysqli_query($dbc, $define_db);
$update="
SET FOREIGN_KEY_CHECKS = 0;
TRUNCATE TABLE $db_loja.catalog_product_bundle_option;
TRUNCATE TABLE $db_loja.catalog_product_bundle_option_value;
TRUNCATE TABLE $db_loja.catalog_product_bundle_selection;
TRUNCATE TABLE $db_loja.catalog_product_entity_datetime;
TRUNCATE TABLE $db_loja.catalog_product_entity_decimal;
TRUNCATE TABLE $db_loja.catalog_product_entity_gallery;
TRUNCATE TABLE $db_loja.catalog_product_entity_int;
TRUNCATE TABLE $db_loja.catalog_product_entity_media_gallery;
TRUNCATE TABLE $db_loja.catalog_product_entity_media_gallery_value;
TRUNCATE TABLE $db_loja.catalog_product_entity_text;
TRUNCATE TABLE $db_loja.catalog_product_entity_tier_price;
TRUNCATE TABLE $db_loja.catalog_product_entity_varchar;
TRUNCATE TABLE $db_loja.catalog_product_link;
TRUNCATE TABLE $db_loja.catalog_product_link_attribute;
TRUNCATE TABLE $db_loja.catalog_product_link_attribute_decimal;
TRUNCATE TABLE $db_loja.catalog_product_link_attribute_int;
TRUNCATE TABLE $db_loja.catalog_product_link_attribute_varchar;
TRUNCATE TABLE $db_loja.catalog_product_link_type;
TRUNCATE TABLE $db_loja.catalog_product_option;
TRUNCATE TABLE $db_loja.catalog_product_option_price;
TRUNCATE TABLE $db_loja.catalog_product_option_title;
TRUNCATE TABLE $db_loja.catalog_product_option_type_price;
TRUNCATE TABLE $db_loja.catalog_product_option_type_title;
TRUNCATE TABLE $db_loja.catalog_product_option_type_value;
TRUNCATE TABLE $db_loja.catalog_product_super_attribute_label;
TRUNCATE TABLE $db_loja.catalog_product_super_attribute_pricing;
TRUNCATE TABLE $db_loja.catalog_product_super_attribute;
TRUNCATE TABLE $db_loja.catalog_product_super_link;
TRUNCATE TABLE $db_loja.catalog_product_enabled_index;
TRUNCATE TABLE $db_loja.catalog_product_website;
TRUNCATE TABLE $db_loja.catalog_category_product_index;
TRUNCATE TABLE $db_loja.catalog_category_product;
TRUNCATE TABLE $db_loja.cataloginventory_stock_item;
TRUNCATE TABLE $db_loja.cataloginventory_stock_status;
TRUNCATE TABLE $db_loja.cataloginventory_stock;
TRUNCATE TABLE $db_loja.catalog_category_entity;
TRUNCATE TABLE $db_loja.catalog_category_entity_datetime;
TRUNCATE TABLE $db_loja.catalog_category_entity_decimal;
TRUNCATE TABLE $db_loja.catalog_category_entity_int;
TRUNCATE TABLE $db_loja.catalog_category_entity_text;
TRUNCATE TABLE $db_loja.catalog_category_entity_varchar;
TRUNCATE TABLE $db_loja.catalog_category_product;
TRUNCATE TABLE $db_loja.catalog_category_product_index;
INSERT INTO $db_loja.cataloginventory_stock
SELECT * FROM multilojas_base.cataloginventory_stock;
INSERT INTO $db_loja.cataloginventory_stock_item
SELECT * FROM multilojas_base.cataloginventory_stock_item;
INSERT INTO $db_loja.cataloginventory_stock_status
SELECT * FROM multilojas_base.cataloginventory_stock_status;
INSERT INTO $db_loja.cataloginventory_stock_status_tmp
SELECT * FROM multilojas_base.cataloginventory_stock_status_tmp;
INSERT INTO $db_loja.catalogrule
SELECT * FROM multilojas_base.catalogrule;
INSERT INTO $db_loja.catalogrule_affected_product
SELECT * FROM multilojas_base.catalogrule_affected_product;
INSERT INTO $db_loja.catalogrule_product
SELECT * FROM multilojas_base.catalogrule_product;
INSERT INTO $db_loja.catalogrule_product_price
SELECT * FROM multilojas_base.catalogrule_product_price;
INSERT INTO $db_loja.catalog_category_anc_categs_index_idx
SELECT * FROM multilojas_base.catalog_category_anc_categs_index_idx;
INSERT INTO $db_loja.catalog_category_anc_categs_index_tmp
SELECT * FROM multilojas_base.catalog_category_anc_categs_index_tmp;
INSERT INTO $db_loja.catalog_category_anc_products_index_idx
SELECT * FROM multilojas_base.catalog_category_anc_products_index_idx;
INSERT INTO $db_loja.catalog_category_anc_products_index_tmp
SELECT * FROM multilojas_base.catalog_category_anc_products_index_tmp;
INSERT INTO $db_loja.catalog_category_entity
SELECT * FROM multilojas_base.catalog_category_entity;
INSERT INTO $db_loja.catalog_category_entity_datetime
SELECT * FROM multilojas_base.catalog_category_entity_datetime;
INSERT INTO $db_loja.catalog_category_entity_decimal
SELECT * FROM multilojas_base.catalog_category_entity_decimal;
INSERT INTO $db_loja.catalog_category_entity_int
SELECT * FROM multilojas_base.catalog_category_entity_int;
INSERT INTO $db_loja.catalog_category_entity_text
SELECT * FROM multilojas_base.catalog_category_entity_text;
INSERT INTO $db_loja.catalog_category_entity_varchar
SELECT * FROM multilojas_base.catalog_category_entity_varchar;
INSERT INTO $db_loja.catalog_category_flat_store_2
SELECT * FROM multilojas_base.catalog_category_flat_store_2;
INSERT INTO $db_loja.catalog_category_product
SELECT * FROM multilojas_base.catalog_category_product;
INSERT INTO $db_loja.catalog_category_product_index
SELECT * FROM multilojas_base.catalog_category_product_index;
INSERT INTO $db_loja.catalog_category_product_index_enbl_idx
SELECT * FROM multilojas_base.catalog_category_product_index_enbl_idx;
INSERT INTO $db_loja.catalog_category_product_index_enbl_tmp
SELECT * FROM multilojas_base.catalog_category_product_index_enbl_tmp;
INSERT INTO $db_loja.catalog_category_product_index_idx
SELECT * FROM multilojas_base.catalog_category_product_index_idx;
INSERT INTO $db_loja.catalog_category_product_index_tmp
SELECT * FROM multilojas_base.catalog_category_product_index_tmp;
INSERT INTO $db_loja.catalog_product_bundle_option
SELECT * FROM multilojas_base.catalog_product_bundle_option;
INSERT INTO $db_loja.catalog_product_bundle_option_value
SELECT * FROM multilojas_base.catalog_product_bundle_option_value;
INSERT INTO $db_loja.catalog_product_bundle_price_index
SELECT * FROM multilojas_base.catalog_product_bundle_price_index;
INSERT INTO $db_loja.catalog_product_bundle_selection
SELECT * FROM multilojas_base.catalog_product_bundle_selection;
INSERT INTO $db_loja.catalog_product_bundle_selection_price
SELECT * FROM multilojas_base.catalog_product_bundle_selection_price;
INSERT INTO $db_loja.catalog_product_bundle_stock_index
SELECT * FROM multilojas_base.catalog_product_bundle_stock_index;
INSERT INTO $db_loja.catalog_product_enabled_index
SELECT * FROM multilojas_base.catalog_product_enabled_index;
INSERT INTO $db_loja.catalog_product_entity_datetime
SELECT * FROM multilojas_base.catalog_product_entity_datetime;
INSERT INTO $db_loja.catalog_product_entity_decimal
SELECT * FROM multilojas_base.catalog_product_entity_decimal;
INSERT INTO $db_loja.catalog_product_entity_gallery
SELECT * FROM multilojas_base.catalog_product_entity_gallery;
INSERT INTO $db_loja.catalog_product_entity_int
SELECT * FROM multilojas_base.catalog_product_entity_int;
INSERT INTO $db_loja.catalog_product_entity_media_gallery
SELECT * FROM multilojas_base.catalog_product_entity_media_gallery;
INSERT INTO $db_loja.catalog_product_entity_media_gallery_value
SELECT * FROM multilojas_base.catalog_product_entity_media_gallery_value;
INSERT INTO $db_loja.catalog_product_entity_text
SELECT * FROM multilojas_base.catalog_product_entity_text;
INSERT INTO $db_loja.catalog_product_entity_tier_price
SELECT * FROM multilojas_base.catalog_product_entity_tier_price;
INSERT INTO $db_loja.catalog_product_entity_varchar
SELECT * FROM multilojas_base.catalog_product_entity_varchar;
INSERT INTO $db_loja.catalog_product_index_eav_decimal
SELECT * FROM multilojas_base.catalog_product_index_eav_decimal;
INSERT INTO $db_loja.catalog_product_index_eav_decimal_idx
SELECT * FROM multilojas_base.catalog_product_index_eav_decimal_idx;
INSERT INTO $db_loja.catalog_product_index_eav_decimal_tmp
SELECT * FROM multilojas_base.catalog_product_index_eav_decimal_tmp;
INSERT INTO $db_loja.catalog_product_index_price_bundle_idx
SELECT * FROM multilojas_base.catalog_product_index_price_bundle_idx;
INSERT INTO $db_loja.catalog_product_index_price_bundle_opt_idx
SELECT * FROM multilojas_base.catalog_product_index_price_bundle_opt_idx;
INSERT INTO $db_loja.catalog_product_index_price_bundle_opt_tmp
SELECT * FROM multilojas_base.catalog_product_index_price_bundle_opt_tmp;
INSERT INTO $db_loja.catalog_product_index_price_bundle_sel_idx
SELECT * FROM multilojas_base.catalog_product_index_price_bundle_sel_idx;
INSERT INTO $db_loja.catalog_product_index_price_bundle_sel_tmp
SELECT * FROM multilojas_base.catalog_product_index_price_bundle_sel_tmp;
INSERT INTO $db_loja.catalog_product_index_price_bundle_tmp
SELECT * FROM multilojas_base.catalog_product_index_price_bundle_tmp;
INSERT INTO $db_loja.catalog_product_index_price_cfg_opt_agr_idx
SELECT * FROM multilojas_base.catalog_product_index_price_cfg_opt_agr_idx;
INSERT INTO $db_loja.catalog_product_index_price_cfg_opt_agr_tmp
SELECT * FROM multilojas_base.catalog_product_index_price_cfg_opt_agr_tmp;
INSERT INTO $db_loja.catalog_product_index_price_cfg_opt_idx
SELECT * FROM multilojas_base.catalog_product_index_price_cfg_opt_idx;
INSERT INTO $db_loja.catalog_product_index_price_cfg_opt_tmp
SELECT * FROM multilojas_base.catalog_product_index_price_cfg_opt_tmp;
INSERT INTO $db_loja.catalog_product_index_price_downlod_idx
SELECT * FROM multilojas_base.catalog_product_index_price_downlod_idx;
INSERT INTO $db_loja.catalog_product_index_price_downlod_tmp
SELECT * FROM multilojas_base.catalog_product_index_price_downlod_tmp;
INSERT INTO $db_loja.catalog_product_index_price_final_idx
SELECT * FROM multilojas_base.catalog_product_index_price_final_idx;
INSERT INTO $db_loja.catalog_product_index_price_final_tmp
SELECT * FROM multilojas_base.catalog_product_index_price_final_tmp;
INSERT INTO $db_loja.catalog_product_index_price_opt_agr_idx
SELECT * FROM multilojas_base.catalog_product_index_price_opt_agr_idx;
INSERT INTO $db_loja.catalog_product_index_price_opt_agr_tmp
SELECT * FROM multilojas_base.catalog_product_index_price_opt_agr_tmp;
INSERT INTO $db_loja.catalog_product_index_price_opt_idx
SELECT * FROM multilojas_base.catalog_product_index_price_opt_idx;
INSERT INTO $db_loja.catalog_product_index_price_opt_tmp
SELECT * FROM multilojas_base.catalog_product_index_price_opt_tmp;
INSERT INTO $db_loja.catalog_product_index_tier_price
SELECT * FROM multilojas_base.catalog_product_index_tier_price;
INSERT INTO $db_loja.catalog_product_link_type
SELECT * FROM multilojas_base.catalog_product_link_type;
INSERT INTO $db_loja.catalog_product_link
SELECT * FROM multilojas_base.catalog_product_link;
INSERT INTO $db_loja.catalog_product_link_attribute
SELECT * FROM multilojas_base.catalog_product_link_attribute;
INSERT INTO $db_loja.catalog_product_link_attribute_decimal
SELECT * FROM multilojas_base.catalog_product_link_attribute_decimal;
INSERT INTO $db_loja.catalog_product_link_attribute_int
SELECT * FROM multilojas_base.catalog_product_link_attribute_int;
INSERT INTO $db_loja.catalog_product_link_attribute_varchar
SELECT * FROM multilojas_base.catalog_product_link_attribute_varchar;
INSERT INTO $db_loja.catalog_product_option
SELECT * FROM multilojas_base.catalog_product_option;
INSERT INTO $db_loja.catalog_product_option_price
SELECT * FROM multilojas_base.catalog_product_option_price;
INSERT INTO $db_loja.catalog_product_option_title
SELECT * FROM multilojas_base.catalog_product_option_title;
INSERT INTO $db_loja.catalog_product_option_type_value
SELECT * FROM multilojas_base.catalog_product_option_type_value;
INSERT INTO $db_loja.catalog_product_option_type_price
SELECT * FROM multilojas_base.catalog_product_option_type_price;
INSERT INTO $db_loja.catalog_product_option_type_title
SELECT * FROM multilojas_base.catalog_product_option_type_title;
INSERT INTO $db_loja.catalog_product_relation
SELECT * FROM multilojas_base.catalog_product_relation;
INSERT INTO $db_loja.catalog_product_super_attribute
SELECT * FROM multilojas_base.catalog_product_super_attribute;
INSERT INTO $db_loja.catalog_product_super_attribute_label
SELECT * FROM multilojas_base.catalog_product_super_attribute_label;
INSERT INTO $db_loja.catalog_product_super_attribute_pricing
SELECT * FROM multilojas_base.catalog_product_super_attribute_pricing;
INSERT INTO $db_loja.catalog_product_super_link
SELECT * FROM multilojas_base.catalog_product_super_link;
INSERT INTO $db_loja.catalog_product_website
SELECT * FROM multilojas_base.catalog_product_website;
";
}
mysqli_close($dbc);
?>
Para atualizar agora seus bancos, suba esse arquivo para seu servidor e execute-o. Você pode executá-lo acessando a url http://www.seudominio.com.br/atualizar.php e ele fará todo o trabalho. Você pode também deixar esse script programado no cron de seu servidor com um horário específico para que ele atualize seus bancos. Nesse caso, depende muito da sua necessidade e criatividade.
Depois dos bancos de dados atualizados, precisaremos fazer a última etapa. Com o cadastro de produtos, as imagens são armazenadas dentro da pasta media que fica localizada na raíz do magento. Essa pasta precisa ser copiada para suas sublojas sempre que houver atualização do banco de dados. Você pode fazer isso manualmente ou criar um script para que execute junto com a atualização no cron. Hoje, estou estudando uma forma de ligar todas as imagens de produtos das sublojas para a loja base, mas ainda estou em fase de testes. Assim que estiver pronto, criarei um artigo demonstrando como fazer tal façanha.
Por enquanto, precisaremos copiar a pasta media para as sublojas. Para que o processo seja mais rápido e eficiente, você pode se conectar ao seu servidor e fazer com o comando a seguir:
rsync -avz /home/www/media/* root@seuip:/pastadeenvio
Assim fechamos nosso sistema de multilojas. Espero ter ajudado a todos com as dicas acima e qualquer dúvida, fico à disposição de toda a comunidade. Assim que terminar o script que interliga todas as imagens dos produtos das sublojas com a loja base, farei um novo artigo com um passo a passo. Desde já agradeço a todos e desejo muito sucesso.



