9

Magento プラットフォームでオンライン ストアを作成していますが、大きな障害にぶつかっています。何らかの理由で、現在の注文をエクスポートする方法がわかりません (配送情報/配送タイプなど)。誰か提案はありますか?これは、このようなシステムで行う最も基本的なことの 1 つであるかのように思えますが、その方法を見つけることができませんでした。

よろしくお願いいたします。

アンディ

4

6 に答える 6

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() で使用できます。

編集:craig.michael.morrisの回答に従ってコードを変更

于 2009-03-27T12:32:32.170 に答える
4

私はあなたのソリューションを実装している途中で、請求先住所、配送先住所、支払いなどのすべての外部キーの最初の値のみを返していることに気づきました...

これは変更することで修正できます

$ myOrder-> load($ thisId);

$ myOrder-> reset()-> load($ thisId);

于 2009-04-20T05:35:39.707 に答える
4

この拡張機能も参照してください: http://www.magentocommerce.com/extension/1158/manual-order-export

また、soap 経由で接続することもできます。この例は、localhost 用に設定されており、管理者の system>>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>"; 
?>
于 2009-05-02T13:02:52.030 に答える
2

これが誰かに役立つ場合は、請求書テーブルをキーとして使用できます。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 
于 2011-08-09T14:13:48.200 に答える
0

システムが注文を直接エクスポートする方法をサポートしていない場合は、エクスポートする必要がある注文をリストするビューをデータベースに作成できます。次に、phpMyAdmin などを使用して、ビューからデータを CSV としてエクスポートします。

于 2009-03-26T01:45:55.320 に答える
0

SOAP を使用するための Saho の提案は素晴らしいですが、時間がかかる場合があります (Apache は、その要求を処理するために限られた CPU リソースしか割り当てることができません)。

php スクリプトを作成し、ターミナルで実行することをお勧めします。

ソナム

于 2012-08-20T14:48:17.687 に答える