2015-05-02 2 views
-1

Я ищу php-файл, который может экспортировать заказы magento в формат XML. Все заказы.Magento Order Export XML

Но не в MS-XML, мне нужен простой XML, как показано ниже.

Мне нужно, чтобы он был сгруппирован, с большим количеством уровней. Я застрял с этим, поскольку недель :(Кто-то пожалуйста, помогите мне! Спасибо!

<?xml version="1.0" encoding="iso-8859-2" ?> 
 
<Header> 
 
\t <Order_datas> 
 
\t \t <Order_nr>MR4001</Order_nr> 
 
\t \t <Datum>2014.01.03 13:15:49</Datum> 
 
\t \t <Payment_method>wire_transf</Payment_method> 
 
\t \t <Shipping_method>posta</Szallitasi_mod> 
 
\t \t <Customer_note></Customer_note> 
 
\t \t <Header_Customer> 
 
\t \t \t <Customer_name>Minta Péter</Customer_name> 
 
\t \t \t <Customer_zip>1037</Customer_zip> 
 
\t \t \t <Customer_city>Budapest</Customer_city> 
 
\t \t \t <Customer_address>Duna u. 5.</Customer_address> 
 
\t \t \t <Shipping_name>Minta Péter</Shipping_name> 
 
\t \t \t <Shipping_zip>1037</Shipping_zip> 
 
\t \t \t <Shipping_city>Budapest</Shipping_city> 
 
\t \t \t <Shipping_address>Duna u. 5.</Shipping_address> 
 
\t \t \t <Telefon></Telefon> 
 
\t \t \t <Email>[email protected]</Email> 
 
\t \t \t <VATNR></VATNR> 
 
\t \t </Header_Customer> 
 
\t \t <Items> 
 
\t \t \t <Ordered_Items> 
 
\t \t \t \t <Product_name>Férfi cipő</Product_name> 
 
\t \t \t \t <ID>77866684</ID> 
 
\t \t \t \t <SKU></SKU> 
 
\t \t \t \t <QTY>1</QTY> 
 
\t \t \t \t <QTYINC>pár</QTYINC> 
 
\t \t \t \t <Netto_price>20000</Netto_price> 
 
\t \t \t \t <TAX>27%</TAX> 
 
\t \t \t \t <Discount_percentage>0</Discount_percentage> 
 
\t \t \t </Ordered_Items> 
 
\t \t </Items> 
 
\t </Order_datas> 
 
\t <Order_datas> 
 
\t \t <Order_nr>MR4002</Order_nr> 
 
\t \t <Datum>2014.01.04 12:05:49</Datum> 
 
\t \t <Payment_method>készpénz</Payment_method> 
 
\t \t <Shipping_method>személyes átvétel</Szallitasi_mod> 
 
\t \t <Customer_note></Customer_note> 
 
\t \t <Header_Customer> 
 
\t \t \t <Customer_name>Példa Gábor</Customer_name> 
 
\t \t \t <Customer_zip>5000</Customer_zip> 
 
\t \t \t <Customer_city>Szolnok</Customer_city> 
 
\t \t \t <Customer_address>Somos u. 23.</Customer_address> 
 
\t \t \t <Shipping_name>Példa Gábor</Shipping_name> 
 
\t \t \t <Shipping_zip>5000</Shipping_zip> 
 
\t \t \t <Shipping_city>Szolnok</Shipping_city> 
 
\t \t \t <Shipping_address>Somos u. 23.</Shipping_address> 
 
\t \t \t <Telefon>06-70-999-8888</Telefon> 
 
\t \t \t <Email>[email protected]</Email> 
 
\t \t \t <VATNR></VATNR> 
 
\t \t </Header_Customer> 
 
\t \t <Items> 
 
\t \t \t <Ordered_Items> 
 
\t \t \t \t <Product_name>Villanykapcsoló</Product_name> 
 
\t \t \t \t <ID>12345687</ID> 
 
\t \t \t \t <SKU></SKU> 
 
\t \t \t \t <QTY>2</QTY> 
 
\t \t \t \t <QTYINC>db</QTYINC> 
 
\t \t \t \t <Netto_price>1000</Netto_price> 
 
\t \t \t \t <TAX>27%</TAX> 
 
\t \t \t \t <Discount_percentage>0</Discount_percentage> 
 
\t \t \t </Ordered_Items> 
 
\t \t </Items> 
 
\t </Order_datas> 
 
\t <Order_datas> 
 
\t \t <Order_nr>MR4003</Order_nr> 
 
\t \t <Datum>2014.01.04 16:01:14</Datum> 
 
\t \t <Payment_method>wire_transf</Payment_method> 
 
\t \t <Shipping_method>posta</Szallitasi_mod> 
 
\t \t <Customer_note></Customer_note> 
 
\t \t <Header_Customer> 
 
\t \t \t <Customer_name>Kitalált Cég Bt.</Customer_name> 
 
\t \t \t <Customer_zip>1113</Customer_zip> 
 
\t \t \t <Customer_city>Budapest</Customer_city> 
 
\t \t \t <Customer_address>Gesztenye u. 45.</Customer_address> 
 
\t \t \t <Shipping_name>Fodor Anikó</Shipping_name> 
 
\t \t \t <Shipping_zip>1113</Shipping_zip> 
 
\t \t \t <Shipping_city>Budapest</Shipping_city> 
 
\t \t \t <Shipping_address>Dermák u. 11.</Shipping_address> 
 
\t \t \t <Telefon></Telefon> 
 
\t \t \t <Email>[email protected]</Email> 
 
\t \t \t <VATNR>13781111-2-43</VATNR> 
 
\t \t </Header_Customer> 
 
\t \t <Items> 
 
\t \t \t <Ordered_Items> 
 
\t \t \t \t <Product_name>Férfi cipő</Product_name> 
 
\t \t \t \t <ID>77866684</ID> 
 
\t \t \t \t <SKU></SKU> 
 
\t \t \t \t <QTY>1</QTY> 
 
\t \t \t \t <QTYINC>pár</QTYINC> 
 
\t \t \t \t <Netto_price>20000</Netto_price> 
 
\t \t \t \t <TAX>27%</TAX> 
 
\t \t \t \t <Discount_percentage>0</Discount_percentage> 
 
\t \t \t </Ordered_Items> 
 
\t \t \t <Ordered_Items> 
 
\t \t \t \t <Product_name>Női ruha</Product_name> 
 
\t \t \t \t <ID>12345694</ID> 
 
\t \t \t \t <SKU></SKU> 
 
\t \t \t \t <QTY>1</QTY> 
 
\t \t \t \t <QTYINC>db</QTYINC> 
 
\t \t \t \t <Netto_price>10000</Netto_price> 
 
\t \t \t \t <TAX>27%</TAX> 
 
\t \t \t \t <Discount_percentage>0</Discount_percentage> 
 
\t \t \t </Ordered_Items> 
 
\t \t </Items> 
 
\t </Order_datas> 
 
</Header>

+1

Вы рассматривали API SOAP? Есть конечная точка, которая позволяет вам делать именно это (список заказов). http://www.magentocommerce.com/api/soap/sales/salesOrder/sales_order.list.html –

ответ

1

Почему бы вам не создать свой собственный модуль с моделью, которую можно назвать везде (наблюдатель, скорлупа , хрон ...) и на этой модели добавить функцию, как и выше:

public function send() { 
    $orders = Mage::getModel('sales/order')->getCollection() 
      ->addFieldToFilter('status', array('in' => array('processing', 'paid'))); 

    $dom = new DOMDocument('1.0', 'utf-8'); 
    $ordersElmt = $dom->createElement('header'); 
    foreach ($orders as $order) { /** @var $order Mage_Sales_Model_Order */ 
      $orderElmt = $dom->createElement('Order_datas'); 
      $orderIdElmt = $dom->createElement('Order_nr', $order->getId()); 
// And add your other nodes 
      $ordersElmt->appendChild($orderElmt); 
      } 
    $dom->save("/path/to/your/folder/file.xml"); 
     } 

вы будете должны изменить статус заказа в коде где-то, если вы не хотите, чтобы каждые заказы при каждом запуске $ заказа -> се tStatus ("yourstatus");

+0

Спасибо, я попробую это, но мне немного грустно, я застрял на этом с недель. Здесь есть встроенное решение magento: http://www.magentocommerce.com/api/rest/Resources/Orders/sales_orders.html Этот XML-вывод был бы лучшим для меня. (упорядоченные продукты находятся под друг другом при каждом заказе) Но я думаю, что для этого все еще нужен php-файл, чтобы вызвать API и создать XML-файл в качестве вывода. И этот файл PHP должен быть запрограммирован, вокруг не существует какого-либо шаблона. :(И я не программист. У кого-нибудь есть файл php для этого REST APi, может быть? – AirOPTIX

+0

В этом коде, который вы написали выше, как добавить другие заметки? Как я их называю? $ order- > GetId()); $ order-> getSKU()); $ order-> getbilling_firstname()); что ли, не так ли? – AirOPTIX

+0

Order-> getSomething() будет просто извлекать данные из текущего порядка, вам нужно будет добавить его в XML-дом, например: '$ orderIdElmt = $ dom-> createElement ('Datum', $ order-> getCreatedAt()); ' – Kaes

0

<?php 
 
require_once 'abstract.php'; 
 
class dom_Shell_Import extends Mage_Shell_Abstract { 
 

 

 
public function run() { 
 
    $orders = Mage::getModel('sales/order')->getCollection() 
 
\t 
 
\t ->addFieldToFilter('status', array('in' => array('pending', 'paid'))); 
 
\t #->addFieldToFilter('increment_id', array('in' => array())); 
 
     
 
\t 
 
      
 

 
    $dom = new DOMDocument('1.0', 'UTF-8'); 
 
\t $header = $dom->createElement("header"); 
 
    $header = $dom->appendChild($header); 
 

 
    foreach ($orders as $order) { 
 
    
 
\t $Order_number = $dom->createElement("Order_number", $order->getid()); 
 
    $Order_number = $header->appendChild($Order_number); 
 
\t 
 
\t $Customer_firstname = $dom->createElement("Customer_firstname", $order->getFirstname()); 
 
    $Customer_firstname = $header->appendChild($Customer_firstname); \t \t 
 
\t \t \t 
 
      } 
 
    $dom->save("file.xml"); 
 
     } 
 
\t 
 
\t }$shell = new dom_Shell_Import(); $shell->run();

0
<?php 

require_once 'abstract.php'; 

class dom_Shell_Import extends Mage_Shell_Abstract { 

public function run() { 
    $orders = Mage::getModel('sales/order')->getCollection() 
      ->addFieldToFilter('status', array('in' => array('pending', 'paid'))); 
    #->addFieldToFilter('increment_id', array('in' => array())); 

    $dom = new DOMDocument('1.0', 'UTF-8'); 
    $header = $dom->createElement("header"); 
    $dom->appendChild($header); 

    foreach ($orders as $order) { 
     $order_data = $dom->createElement("Order_datas"); 
     $header->appendChild($order_data); 
     /*order Data */ 
     $Order_number = $dom->createElement("Order_number", $order->getIncrementId()); 
     $Order_date = $dom->createElement("Datum", $order->getCreatedAt()); 
     $order_data->appendChild($Order_number); 
     $order_data->appendChild($Order_date); 

     /* Customer Data */ 
     $customer_header = $dom->createElement("Header_Customer"); 
     $order_data->appendChild($customer_header); 

     $Customer_name = $dom->createElement("Customer_name", $order->getCustomerName()); 
     $customer_header->appendChild($Customer_name); 
     /* products data */ 
     $Items = $dom->createElement("Items"); 
     $order_data->appendChild($Items); 
     $ordered_items = $order->getAllItems(); 
     foreach ($ordered_items as $ordered_item) { /*loop throught the ordered item */ 
      $Ordered_Items = $dom->createElement("Ordered_Items"); 
      $Items->appendChild($Ordered_Items); 
      $sku = $dom->createElement("SKU", $ordered_item->getSku()); 
      $Ordered_Items->appendChild($sku); 
      $qty = $dom->createElement("QTY", (int) $ordered_item->getQtyOrdered()); 
      $Ordered_Items->appendChild($qty); 
     } 
    } 
    $dom->save("file.xml"); 
} 

} 

$shell = new dom_Shell_Import(); 
$shell->run(); 

Я добавил некоторые линии более readeable. Теперь с этим вы должны добавить еще несколько строк в свой XML-файл

+0

Приятно, спасибо. Он работает более или менее. Теперь у меня должен быть заголовок для элементов, и в этом заголовке я должен иметь упорядоченные продукты. Product SKU будет достаточно. Нет необходимости в цене или что-то еще. Как получить урок заказа? getSKU не работает .. :( – AirOPTIX

+0

Я отредактировал свой ответ, чтобы получить данные о товаре, вы должны их восстановить и зациклировать на каждом элементе для заказа, тогда вы можете получить каждый SKU. Я добавил QTY в ваш XML, быть полезным – Kaes

+0

Я думаю, что теперь все работает как шарм. :) У меня осталось только один вопрос: как получить способ оплаты? Мне больше ничего не нужно, просто добавьте еще одну строку под order_number и order_date с помощью метода payment_method. Уже сделанный метод доставки, он работает с экземпляром getshppingmethod. Пожалуйста, дайте мне знать этот последний ответ. :) Спасибо – AirOPTIX