2013-01-22 103 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(); 
相关问题