Я использую модель Magento Event-Observer в событии sales_order_place_after , чтобы получить идентификатор заказа (инкрементный идентификатор) из Magento, то есть в событии , как только клиент нажмет кнопку PLACEЗАКАЗ .Для этого я создал config.xml & Observer.php .
/ xampp / htdocs / localhost / magento / app / code / local / Sample / Event / etc / config.xml
config.xml
<?xml version="1.0"?>
<config>
<modules>
<Sample_Event>
<version>0.1.0</version>
</Sample_Event>
</modules>
<global>
<events>
<sales_order_place_after>
<observers>
<Sample_Event_Model_Observer>
<type>singleton</type>
<class>Sample_Event_Model_Observer</class>
<method>Mytestmethod</method>
</Sample_Event_Model_Observer>
</observers>
</sales_order_place_after>
</events>
</global>
</config>
/ xampp / htdocs / localhost / magento / app / code / local / Sample / Event / Model / Observer.php Observer.php
<?php
include("connection/Final/Function1.php");
class Sample_Event_Model_Observer
{
public function Mytestmethod($observer)
{
$event = $observer->getEvent();
$eventmsg = "Current Event Triggered : <I>" . $event->getName() . "</I>";
echo Mage::getSingleton('checkout/session')->addSuccess($eventmsg);
$Id = $observer->getEvent()->getOrder()->getId();
$incrementid = $observer->getEvent()->getOrder()->getIncrementId();
$ordermsg1 = "Current order Id : <I>" . $Id . "</I>";
echo Mage::getSingleton('checkout/session')->addSuccess($ordermsg1);
$ordermsg2 = "Current increment Id : <I>" . $incrementid . "</I>";
echo Mage::getSingleton('checkout/session')->addSuccess($ordermsg2);
/* $cURL = curl_init(); //this isn't work for me
curl_setopt($cURL, CURLOPT_URL, "http://localhost/magento/connection/Final/Function1.php?order_id=<?php echo $incrementid ?>");
curl_setopt($cURL, CURLOPT_HEADER, 0);
curl_exec($cURL);
curl_close($cURL);
*/
$p = new testDatabase(); //this isn't work for me
$p -> setId($incrementid);
$p -> dbConnect();
}
}
?>
В Observer.php я получаю номер заказа (инкрементный идентификатор), как только клиент размещает заказ.Теперь моя цель состоит в том, чтобы передать этот номер заказа внешнему php-файлу Function1.php, функция которого зависит от номера заказа (инкрементный идентификатор). Function1.php
<?php
//$orderID = $_GET['incrementid'];
//echo $orderID;
class testDatabase
{
public function setId($getId) //get Order Id i.e. Increment id from Observer.php which is not working for me
{
$incrementid=$getId;
echo **$incrementid**;
}
public function dbConnect() //connect to magento database
{
$db_name = "magento";
$con = mysql_connect("localhost", "magento", "password");
If (!$con)
{
die('Could not connect: ' . mysql_error());
}
$seldb = mysql_select_db($db_name, $con);
If ($seldb)
{
echo "Database Found ";
}
else
{
echo "Database NOT Found ";
}
}
public function dbInsert() //insert into magento's newly created custom table based on **increment id**.
{
echo "<br />";
$query = "INSERT INTO mysql_outbound(po_number , created_at , buyer_customer_firstname , buyer_customer_lastname , buyer_customer_email ,
shipping_description , ship_to_firstname, ship_to_lastname, ship_to_company, ship_to_street, ship_to_city, ship_to_region,
ship_to_country_id, ship_to_postcode, ship_to_telephone, bill_to_firstname, bill_to_lastname, bill_to_company, bill_to_street, bill_to_city,
bill_to_region, bill_to_country_id, bill_to_postcode, bill_to_telephone, dealer_group_code, customer_group_code, dealer_firstname,
dealer_lastname, customer_firstname, customer_lastname, increment_id, order_primary)
SELECT sfop.`po_number`,sfo.`created_at`,sfo.`customer_firstname` , sfo.`customer_lastname` , sfo.`customer_email` , sfo.`shipping_description` ,
sfoa. firstname, sfoa. lastname, sfoa. company, sfoa. street, sfoa. city, sfoa. region, sfoa.country_id, sfoa. postcode, sfoa. telephone, sfoa1. firstname,
sfoa1. lastname, sfoa1. company, sfoa1. street, sfoa1. city, sfoa1. region, sfoa1.country_id, sfoa1. postcode, sfoa1. telephone, cg. customer_group_code,
cg1. customer_group_code, cev. value, cev1. value, cev2. value, cev3. value, sfo.`increment_id`,
(select mo.order_primary from mysql_outbound mo where mo.increment_id = sfo.increment_id)
FROM `sales_flat_order_payment` sfop, `sales_flat_order` sfo, `sales_flat_order_address` sfoa,`sales_flat_order_address` sfoa1,`customer_entity` ce,`customer_entity` ce1,
`customer_group` cg,`customer_group` cg1,`customer_entity_varchar` cev, `customer_entity_varchar` cev1,`customer_entity_varchar` cev2,
`customer_entity_varchar` cev3
WHERE sfo.`entity_id` = sfop.`parent_id`
AND sfo.`shipping_address_id` = sfoa.`entity_id`
AND sfo.`billing_address_id` = sfoa1.`entity_id`
AND sfo. ge_dealer_id = ce. entity_id
AND ce. group_id = cg. customer_group_id
AND sfo. ge_customer_id = ce1. entity_id
AND ce1. group_id = cg1. customer_group_id
AND sfo. ge_dealer_id = cev.entity_id
AND cev. attribute_id = 5
AND sfo. ge_dealer_id = cev1.entity_id
AND cev1. attribute_id = 7
AND sfo. ge_customer_id = cev2.entity_id
AND cev2. attribute_id = 5
AND sfo. ge_customer_id = cev3.entity_id
AND cev3. attribute_id = 7
AND sfo.`increment_id` = **$incrementid**"; //will need to pass increment id here
$result = mysql_query($query);
}
public function dbFetch() //fetch data from magento
{
global $str;
echo "<br />";
$a = mysql_insert_id();
echo $a;
echo "<br />";
$result2 = mysql_query("SELECT * FROM mysql_outbound where order_primary = $a");
while($row = mysql_fetch_array($result2))
{
$str = "'". $row["po_number"] . "',". "'" . $row[created_at] . "'," . "'" . $row["buyer_customer_firstname"] . "',". "'" . $row["buyer_customer_lastname"] . "'," . "'" . $row["buyer_customer_email"] . "'," . "'" . $row["shipping_description"]. "'," . "'" . $row["ship_to_firstname"] . "'," . "'" . $row["ship_to_lastname"] ."'," . "'" . $row["ship_to_company"] . "'," . "'" . $row["ship_to_street"] ."'," ."'" . $row["ship_to_city"] . "'," ."'" . $row["ship_to_region"] . "'," ."'" . $row["ship_to_country_id"] ."'," ."'" . $row["ship_to_postcode"]."'," ."'" . $row["ship_to_telephone"] . "'," ."'" . $row["bill_to_firstname"] . "'," ."'" . $row["bill_to_lastname"] ."'," ."'" . $row["bill_to_company"]."'," ."'" . $row["bill_to_street"] . "'," ."'" . $row["bill_to_city"] ."'," ."'" . $row["bill_to_region"] . "'," ."'" . $row["bill_to_country_id"] ."'," ."'" . $row["bill_to_postcode"] . "'," ."'" . $row["bill_to_telephone"] . "'," ."'" . $row["dealer_group_code"] ."'," ."'" . $row["customer_group_code"]."'," ."'" . $row["dealer_firstname"] . "'," ."'" . $row["dealer_lastname"] ."'," ."'" . $row["customer_firstname"] . "'," ."'" . $row["customer_lastname"] ."'," ."'" . $row["increment_id"] . "'," . $row["order_primary"];
}
}
public function dbDisconnect() //close mysql connection
{
echo "<br />";
If($this->con)
{
If(mysql_close())
{
$this->con = false;
return true;
}
else
{
return false;
}
}
}
}
Теперь я хочу включить этот файл Function1.php в Observer.php, чтобы, как только клиент нажал кнопку PLACE ORDER, вкладка Function1Файл .php получит № заказа и выполнит в нем запросы.Я просто хотел вставить данные в пользовательскую таблицу, которую необходимо отправить во внешнюю систему, т.е. в Oracle.Поскольку мы не хотим прикасаться к основным таблицам Magento, поэтому создали пользовательскую таблицу для этой же ..
Теперь мои вопросы:
- Как передать № заказа из Observer.phpto Function1.php?
- Как включить Function1.php в Observer.php, чтобы после размещения заказа клиент выполнял этот файл, получая № заказа для выполнения работы?
Пожалуйста, предоставьте мне свою помощь или пример кода для того же ...
Я пытался соединиться с созданием объекта и доступом к функциям, но не смог этого сделать.
Также пытался использовать cURLно это также не сработало для меня ...
Ожидание ответов и предложений ...