2009-03-06 16 views
9

私はMagentoプラットフォームのオンラインストアで作業しており、大きな障害物に当たっています:何らかの理由で私は現在の注文をどのようにエクスポートするかを理解できません(出荷情報/ 。誰にも提案はありますか?これはこのようなシステムのための最も基本的なものの1つでなければならないかのように思われますが、私はどのように見つけられていません。出荷のためMagentoから輸出注文

は、システムが注文をエクスポートする任意の直接的な方法をサポートしていない場合は、必要に注文を一覧表示し、データベース内のビューを作成することができ

+1

現在の注文や保留中の注文をすべてエクスポートしようとしていますか?どこに、どのような目的でエクスポートしますか?これは特定のページで行われるのですか、何かが起きたとき(オーダーが作成されたときなど)ですか? –

+0

完了した注文のスプレッドシート(​​CSV)をMagentoから入手する必要があります。専用のUPS/USPSプログラムで使用するか、Fulfillment Providerに送信してアイテムを出荷することができます。 – theandym

答えて

24

送料のためにこれを見たいと思っているあなたには、あなたが何らかのAPIを持っているかどうかを問うことがありますので、適切な出荷モジュールを購入/購入/ダウンロードして、CSVファイル。

本当に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-> getBillingAddress());を実行する場合は、 「address_type」や「lastname」のようなフィールドが表示されます。これらは、 $ myOrder-> getBillingAddress() - > getAddress_type()および $ myOrder-> getBillingAddress() - > getLastname()でそれぞれ使用できます。

編集:私はあなたのソリューションを実装する過程にあったし、それだけで、このような請求など、すべての外部キーのための最初の値を返していましたことに気づい

0

アンディ、あなたの助けのために事前にありがとうございます輸出する。その後、phpMyAdminのようなものを使って、ビューからCSVとしてデータをエクスポートします。

4

craig.michael.morrisの答えに応じて 変更されたコード住所、配送先住所、支払い等...

これは

$ myOrder->負荷($ thisId)を変更することで固定することができます。

$ myOrder->リセット() - >負荷($ thisId)。

4

ます。また、この拡張機能を見てみたいことがあります。http://www.magentocommerce.com/extension/1158/manual-order-export

また、あなたは石鹸を経由して接続することができます。この例では、ローカルホスト用に設定して、システムの下で、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>"; 
?> 
2

これが役立つ場合は、請求書テーブルをキーとして使用できます。 auth + captureのクレジットカード設定のmagentoでの請求書は、お金が入ってきたことを意味します。私たちの場合、phpmyadminで実行するためには、xtentoからのエクスポートエクスポート拡張機能が機能しているかどうかを確認するために、注文番号と請求書番号をエクスポートするsqlクエリが必要でした。これは、私たちが使用したものである:

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 
0

SOAPを使用するための佐保さんの提案は素晴らしいですが、それは長い時間がかかることがあり

はあなたを提案する(Apacheはのみ、その要求を処理するために踏むために限られたCPUリソースを割り当てることができます) phpスクリプトを書いてから、それをターミナルを通して実行します。

ソナム