Tutorial ensinando a como exportar os pedidos gerados no Magento para um arquivo CSV, personalizado e com filtros.
Você não precisa instalar um módulo ou desenvolver um para exportar os seus pedidos.
Primeiro passo, crie o arquivo export.php no diretório raiz “root” de sua loja (servidor), faça isso utilizando o FTP.
Coloque o seguinte código no arquivo:
ini_set('memory_limit', '-1'); ini_set('display_errors', '1'); error_reporting(E_ALL); require 'app/Mage.php'; $app = Mage::app('default'); set_time_limit(0); $order_collection = Mage::getModel('sales/order')->getCollection(); // $order_collection->getSelect()->where(" vc pode colocar uma condição aqui... "); $order_collection->load(); $array_to_convert = array(); foreach ($order_collection as $obj) { //Exemplo... numero do pedido... $obj->getIncrement_id(); $array_to_convert[] = array("numeropedido" => $obj->getIncrement_id(), "data_criacao" => $obj->getCreated_at()); }
Explicando.
Primeira parte do código é responsável por permitir que acessamos as classes do core do Magento em um arquivo externo.
A segunda irá carregar a collection de pedidos “sales/order”, mecanismo que iremos utilizar para extrair os dados.
Na sequência no foreach iremos percorrer todos os pedidos e montar um array secundário contendo apenas os campos que queremos exportar.
Agora vamos para segunda parte.
Gerando o arquivo CSV
Iremos criar uma funções para gerar o nosso CSV. Dentro dela estaremos utilizando a função nativa fputcsv.
Coloque o código a seguir no mesmo arquivo que foi criado acima.
Função para converter um array em CSV.
function array_to_csv(array &$ar) { if (count($ar) == 0) { return null; } ob_start(); $df = fopen("php://output", 'w'); fputcsv($df, array_keys(reset($ar))); foreach ($ar as $row) { fputcsv($df, $row); } fclose($df); return ob_get_clean(); }
Header que irá forçar o navegador a fazer o download do arquivo CSV
$arquivo = "magento_pedidos_csv_" . date("d-m-Y") . ".csv"; $now = gmdate("D, d M Y H:i:s"); header("Expires: Tue, 03 Jul 2001 06:00:00 GMT"); header("Cache-Control: max-age=0, no-cache, must-revalidate, proxy-revalidate"); header("Last-Modified: {$now} GMT"); header("Content-Type: application/force-download"); header("Content-Type: application/octet-stream"); header("Content-Type: application/download"); header("Content-Disposition: attachment;filename={$arquivo}"); header("Content-Transfer-Encoding: binary");
Coloque na sequência o código que executa a função array_to_csv().
echo array_to_csv($array_to_convert); die();
Pronto, agora basta executar o arquivo pelo navegador e testar se está tudo Ok.
Testado nas versões 1.7 e 1.9.