Frage

Ich arbeite an einem online-Shop auf der Magento-Plattform und verfügen über einen großen hit roadblock:Für einige Grund, Ich kann nicht herausfinden, wie man exportieren der aktuellen Bestellungen (mit Versand information/Versand/etc). Hat jemand irgendwelche Vorschläge?Dies scheint, als sollte es werden, eines der grundlegenden Dinge, die für ein system wie dieses zu tun, aber ich habe nicht in der Lage gewesen, um herauszufinden, wie.

Vielen Dank im Voraus für Eure Hilfe,

Andy

War es hilfreich?

Lösung

Sehen, wie Sie dies wünschen für den Versand möchten Sie vielleicht fragen, wer Ihre Versand Griffe, ob sie irgendeine Art von API haben, so können Sie bauen / kaufen / laden Sie eine entsprechende Versandmodul und ersparen Sie sich den Aufwand der Ausmisten etwa mit CSV-Dateien.

Wenn Sie wirklich eine CSV-Datei wollen aber ich kann Ihnen zeigen, wie es zu erstellen. Sie erwähnte nicht, wo das Skript ausgeführt werden soll, so werde ich nehme an, es ist ein externes Skript (die es einfacher machen, wird mit einem cron-Job zu verwenden). Sie möchten Folgendes tun:

//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";
}

Aus Gründen der Kürze (und geistige Gesundheit) Ich habe nicht alle verfügbaren Informationen zu Ihrer Bestellung aufgelistet. Sie können herausfinden, welche Felder die relevanten Objekte verfügbar sind durch Dumping und einen Blick auf ihre Felder nehmen.

Wenn Sie zum Beispiel sind print_r ($ myOrder-> getBillingAddress ()) zu tun; Sie würden sehen Felder wie „address_type“ und „Nachname“. Sie können diese verwenden, um mit $ MyOrder-> getBillingAddress () -> getAddress_type () und $ MyOrder-> getBillingAddress (.) -> getLastname () bzw.

Bearbeiten : Geänderte Code nach craig.michael.morris Antwort

Andere Tipps

war ich in dem Prozess Ihre Lösung zu implementieren und bemerkte, dass es wurde nur die ersten Werte für alle Fremdschlüssel wie Rechnungsadresse Rückgabe, Versandadresse, Zahlung etc ...

Dies kann durch Änderung festgelegt werden

$ myOrder-> load ($ thisId);

$ myOrder-> Reset () -> Last ($ thisId);

Sie können auch wollen, schauen Sie sich diese Erweiterung: http://www.magentocommerce.com/extension/1158/manual-order-export

Auch Sie können die Verbindung über soap:Dieses Beispiel ist für localhost und vorausgesetzt, Sie haben eine web-services-Benutzer-und Rollen-unter system>> "web services" in der admin.

    <?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>"; 
?>

Für den Fall, hilft dies irgendeine, können Sie die Rechnungstabelle als Schlüssel verwenden können. Eine Rechnung in magento mit einem Auth + Capture Kreditkarte Setup bedeutet, dass das Geld in gekommen ist. In unserem Fall haben wir nur eine SQL-Abfrage in phpMyAdmin ausführen benötigt, die Bestellnummern und Rechnungsnummern für uns exportieren würde in Einklang zu bringen, dass der Auftrag Export zu überprüfen Erweiterung von xtento arbeitet. Dies ist, was wir verwenden:

 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 

Wenn das System keine direkte Art und Weise unterstützt Aufträge zu exportieren, können Sie einen Blick in die Datenbank erstellen, die die Befehle aufgeführt, die Sie exportieren müssen. Dann etwas wie phpMyAdmin verwenden, um die Daten aus der Sicht als CSV exportiert werden.

Saho Vorschlag für SOAP ist groß, aber es kann sehr lange dauern (Apache nur eine begrenzte CPU-Ressourcen zuweisen zu treten, dass die Anfrage bearbeiten)

vorschlagen Sie einen PHP-Skript zu schreiben und sie dann über den Anschluss laufen.

Sonam

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top