質問
また、オンラインストアをざーとしてヒットの主要な障害を取り除くため:何らかの理由 できないなどの輸出受注(船情報-出荷タイプ/など)。 いたの?このような必要最も基本的なことをシステムのようなこといって調べることができます。
よろしくお願いし、
アンディ
解決
これを出荷用に望むので、適切な出荷モジュールを構築/購入/ダウンロードしてCSVファイルをいじる手間を省くために、出荷の担当者に何らかのAPIがあるかどうかを尋ねることができます。
CSVファイルが本当に必要な場合は、作成方法を示します。このスクリプトがどこで実行されるかは言及しなかったので、外部スクリプトであると仮定します(これにより、cronジョブでの使用が容易になります)。 次のことを行います。
//External script - Load magento framework
require_once("C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\magento\app\Mage.php");
Mage::app('default');
$myOrder=Mage::getModel('sales/order');
$orders=Mage::getModel('sales/mysql4_order_collection');
//Optional filters you might want to use - more available operations in method _getConditionSql in Varien_Data_Collection_Db.
$orders->addFieldToFilter('total_paid',Array('gt'=>0)); //Amount paid larger than 0
$orders->addFieldToFilter('status',Array('eq'=>"processing")); //Status is "processing"
$allIds=$orders->getAllIds();
foreach($allIds as $thisId) {
$myOrder->reset()->load($thisId);
//echo "<pre>";
//print_r($myOrder);
//echo "</pre>";
//Some random fields
echo "'" . $myOrder->getBillingAddress()->getLastname() . "',";
echo "'" . $myOrder->getTotal_paid() . "',";
echo "'" . $myOrder->getShippingAddress()->getTelephone() . "',";
echo "'" . $myOrder->getPayment()->getCc_type() . "',";
echo "'" . $myOrder->getStatus() . "',";
echo "\r\n";
}
簡潔にするため(および健全性のため)、利用可能なすべての注文情報をリストしていません。関連するオブジェクトをダンプし、それらのフィールドを見ると、使用可能なフィールドを確認できます。
たとえば、print_r($ myOrder-&gt; getBillingAddress());を実行する場合&quot; address_type&quot;のようなフィールドが表示されます。および「姓」。これらを使用できます $ myOrder-&gt; getBillingAddress()-&gt; getAddress_type()および それぞれ$ myOrder-&gt; getBillingAddress()-&gt; getLastname()。
編集: craig.michael.morrisの回答に従ってコードを変更しました
他のヒント
ソリューションを実装する過程で、請求先住所、配送先住所、支払いなどのすべての外部キーの最初の値のみを返すことに気づきました
これは変更することで修正できます
$ myOrder-&gt; load($ thisId);
to
$ myOrder-&gt; reset()-&gt; load($ thisId);
またしていくプロセスを可能にします: http://www.magentocommerce.com/extension/1158/manual-order-export
また接続することができsoap経由で:この例では設定のためのlocalhostとを想定してwebサービスのユーザーの役割下でのシステム>>webサービスの管理
<?php
$time = microtime();
$time = explode(' ', $time);
$time = $time[1] + $time[0];
$begintime = $time;
?>
<?php
ini_set('error_reporting', E_ALL);
ini_set('display_errors', 1);
// hostname
$host= '127.0.0.1';
// if store in /magento change /shop, if store in root remove /shop
$client= new SoapClient('http://'.$host.'/magento/index.php/api/soap/?wsdl');
// Can be added in Magento-Admin -> Web Services with role set to admin
$apiuser= 'soap';
// API key is password
$apikey = '******';
$sess_id= $client->login($apiuser, $apikey);
echo "<html>";
echo "<head>";
echo "<LINK REL=StyleSheet HREF=\"style.css\" TYPE=\"text/css\" MEDIA=screen>";
echo "</head>";
echo "<body>";
$result= $client->call($sess_id, 'sales_order.list', array(array('status'=>array('='=>'Pending'))));
echo '<pre>';
print_r($result);
echo '<pre>';
?>
<?php
// Let's see how long this took…
$time = microtime();
$time = explode(" ", $time);
$time = $time[1] + $time[0];
$endtime = $time;
$totaltime = ($endtime - $begintime);
echo '<br /><br /><em>This Magento SOAP API script took ' .$totaltime. ' seconds, precisely.</em>';
// ...and close the HTML document
echo "</body>";
echo "</html>";
?>
これがいずれか1つに役立つ場合、請求書テーブルをキーとして使用できます。 auth + captureクレジットカードのセットアップを使用したmagentoの請求書は、お金が入ってきたことを意味します。この場合、注文番号と請求書番号をエクスポートするphpmyadminで実行するSQLクエリのみが必要でした。 xtentoからの拡張機能が機能していました。これが私たちが使用したものです:
SELECT sales_flat_order.increment_id AS 'order', sales_flat_invoice.increment_id AS 'invoice'
FROM sales_flat_order
RIGHT JOIN sales_flat_invoice ON sales_flat_invoice.order_id = sales_flat_order.entity_id
WHERE sales_flat_invoice.updated_at >= "2011-07-01 00:00:00"
ORDER BY sales_flat_order.increment_id DESC
システムが注文を直接エクスポートする方法をサポートしていない場合は、エクスポートする必要がある注文をリストするデータベースにビューを作成できます。次に、phpMyAdminなどを使用して、ビューからデータをCSVとしてエクスポートします。
SOAPの使用に関するSahoの提案は素晴らしいですが、時間がかかる場合があります(Apacheはそのリクエストを処理するためにトレッドに限られたCPUリソースしか割り当てることができません)
phpスクリプトを作成して、ターミナルで実行することをお勧めします。
ソナム