2013-01-22 102 views
0

爲了將Magento與Moodle(LMS)集成,我需要用戶數據和單個表格中購買的物品的SKU。最接近的表格是sales_flat_quote。如果我只能將購買的SKU分配給那個,那麼Moodle可以在登錄時檢查該表,並將購買的課程添加到用戶配置文件中。在自定義模塊中添加SKU到Magento中的sales_flat_quote

使用Ivan Chepurnyi's tutorial,這個related post和這個similar thread我已經設法創建一個模塊,用於寫入測試服務器上的日誌。現在它不再做任何事情了。

我有這個在\程序\等\模塊\ minerva_moodleConnect.xml:

<?xml version="1.0" encoding="utf-8"?> 
<config> 
    <modules> 
    <minerva_moodleConnect> 
     <active>true</active> 
     <codePool>local</codePool> 
    </minerva_moodleConnect> 
    </modules> 
</config> 

我有這個在\程序\代碼\本地\密涅瓦\ moodleConnect \等\ config.xml中:

<?xml version="1.0" encoding="utf-8"?> 
<config> 
    <modules> 
    <minerva_moodleConnect> 
     <version>0.0.1</version> 
    </minerva_moodleConnect> 
    </modules> 
    <global> 
    <models> 
     <minerva_moodleConnect> 
     <class>minerva_moodleConnect_Model</class> 
     </minerva_moodleConnect> 
    </models> 
    <resources> 
     <minerva_moodleConnect> 
     <setup> 
      <module>minerva_moodleConnect</module> 
      <class>Mage_Sales_Model_Mysql4_Setup</class> 
     </setup> 
     </minerva_moodleConnect> 
    </resources> 
    <events> 
     <sales_order_place_after> 
     <observers> 
      <minerva_moodleConnect> 
      <type>singleton</type> 
      <class>minerva_moodleConnect_Model_observer</class> 
      <method>registerCourse</method> 
      </minerva_moodleConnect> 
     </observers> 
     </sales_order_place_after> 
    </events> 
    </global> 
</config> 

我在\程序\代碼得到這個\本地\密涅瓦\ moodleConnect \型號\ observer.php:

<?php 
class minerva_moodleConnect_Model_Observer 
{ 
    public function __construct() 
    { 

    } 
    public function registerCourse(Varien_Event_Observer $observer) 
    { 


     // Retrieve the product being updated from the event observer 


     Mage::log("register course called"); 
     /* @var $resource Mage_Sales_Model_Mysql4_Order */ 

     /*$resource = $observer->getEvent()->getResource(); 
     $resource->addVirtualGridColumn(
      'sku', 
      'sales/flat_quote', 
      array('sku' => 'sku'), 
      'sku' 
     );*/ 

    } 
} 

,這在\程序\代碼\當地\密涅瓦\ moodleConnect \ SQL \ minerva_moodleConnect_setup \ mysql4安裝-0.1.0.php:

<?php 
/** 
* Setup scripts, add new column and fulfills 
* its values to existing rows 
* 
*/ 
/* @var $this Mage_Sales_Model_Mysql4_Setup */ 
$this->startSetup(); 
// Add column to grid table 
$this->getConnection()->addColumn(
    $this->getTable('sales/flat_quote'), 
    'sku', 
    "varchar(255) not null default ''" 
); 
// Add key to table for this field, 
// it will improve the speed of searching & sorting by the field 
$this->getConnection()->addKey(
    $this->getTable('sales/flat_quote'), 
    'sku', 
    'sku' 
); 
// Now you need to fullfill existing rows with data from address table 
$select = $this->getConnection()->select(); 
$select->join(
    array('sku'=>$this->getTable('sales/flat_quote_item')), 
    $this->getConnection()->quoteInto(
     'sku.sku = flat_quote_item.sku', 
     Mage_Sales_Model_Quote_Address::TYPE_BILLING 
    ), 
    array('sku' => 'sku') 
); 
$this->getConnection()->query(
    $select->crossUpdateFromSelect(
     array('sku' => $this->getTable('sales/flat_quote')) 
    ) 
); 
$this->endSetup(); 

由這點我在很大程度上是猜測有關我的情況的變化。我的想法是,我想複製SKU並呼叫新的行SKU。其他一切都讓人覺得很穩固。

在那裏有一種善良的靈魂,可以拍我的手腕,讓我回到軌道上?

+0

是對Moodle在它在同一個表需要它? sales_flat_quote_item畢竟包含SKU,所以您應該能夠使用查詢或視圖,不是嗎? – JNDPNT

+0

感謝您的回覆。是的,Moodle希望從一張桌子(SKU和用戶信息)得到一切 – nlearnDavid

+0

我得到的一個提示是「它基本上是使用客戶數據,產品數據和訂單數據創建一個查看錶。」將所有這一切整合到一張整潔的表格中「 – nlearnDavid

回答

0

我使用這樣的事情,以添加一些字段的順序和報價表:

<?php 
/* @var $installer Mage_Core_Model_Resource_Setup */ 
$installer = $this; 
$installer->startSetup(); 

Mage::app()->setCurrentStore(Mage::getModel('core/store')->load(Mage_Core_Model_App::ADMIN_STORE_ID)); 

$installer = new Mage_Sales_Model_Mysql4_Setup; 

$attribute = array(
    'type'   => 'text', 
    'backend_type' => 'text', 
    'frontend_input' => 'text', 
    'is_user_defined' => true, 
    'label'   => 'External Reference', 
    'visible'  => true, 
    'required'  => false, 
    'user_defined' => false, 
    'searchable' => false, 
    'filterable' => false, 
    'comparable' => false, 
    'default'  => '' 
); 

$installer->addAttribute('order', 'ext_reference', $attribute); 
$installer->addAttribute('quote', 'ext_reference', $attribute); 

$attribute = array(
    'type'   => 'text', 
    'backend_type' => 'text', 
    'frontend_input' => 'text', 
    'is_user_defined' => true, 
    'label'   => 'License Plate', 
    'visible'  => true, 
    'required'  => false, 
    'user_defined' => false, 
    'searchable' => false, 
    'filterable' => false, 
    'comparable' => false, 
    'default'  => '' 
); 

$installer->addAttribute('order', 'licenseplate', $attribute); 
$installer->addAttribute('quote', 'licenseplate', $attribute); 

$installer->endSetup(); 
相關問題