Version Notes
This is an initial version of a Magento Putler Connector which will send Magento orders data to Putler and you will get insightful statistics about your store and business
Download this release
Release Info
| Developer | Nirav Mehta |
| Extension | PutlerConnector |
| Version | 1.0.0 |
| Comparing to | |
| See all releases | |
Version 1.0.0
- code/.DS_Store +0 -0
- code/._.DS_Store +0 -0
- code/local/.DS_Store +0 -0
- code/local/._.DS_Store +0 -0
- code/local/._Putler +0 -0
- code/local/Putler/.DS_Store +0 -0
- code/local/Putler/._.DS_Store +0 -0
- code/local/Putler/._PutlerConnector +0 -0
- code/local/Putler/PutlerConnector/.DS_Store +0 -0
- code/local/Putler/PutlerConnector/._.DS_Store +0 -0
- code/local/Putler/PutlerConnector/._Block +0 -0
- code/local/Putler/PutlerConnector/._Helper +0 -0
- code/local/Putler/PutlerConnector/._Model +0 -0
- code/local/Putler/PutlerConnector/._controllers +0 -0
- code/local/Putler/PutlerConnector/._etc +0 -0
- code/local/Putler/PutlerConnector/._scripts +0 -0
- code/local/Putler/PutlerConnector/._sql +0 -0
- code/local/Putler/PutlerConnector/Block/.DS_Store +0 -0
- code/local/Putler/PutlerConnector/Block/._.DS_Store +0 -0
- code/local/Putler/PutlerConnector/Block/Adminhtml/.DS_Store +0 -0
- code/local/Putler/PutlerConnector/Block/Adminhtml/System/.DS_Store +0 -0
- code/local/Putler/PutlerConnector/Block/Adminhtml/System/Config/.DS_Store +0 -0
- code/local/Putler/PutlerConnector/Block/Adminhtml/System/Config/Form/Button.php +70 -0
- code/local/Putler/PutlerConnector/Helper/.DS_Store +0 -0
- code/local/Putler/PutlerConnector/Helper/._.DS_Store +0 -0
- code/local/Putler/PutlerConnector/Model/.DS_Store +0 -0
- code/local/Putler/PutlerConnector/Model/._.DS_Store +0 -0
- code/local/Putler/PutlerConnector/Model/Observer.php +40 -0
- code/local/Putler/PutlerConnector/Model/PutlerConnector.php +312 -0
- code/local/Putler/PutlerConnector/controllers/.DS_Store +0 -0
- code/local/Putler/PutlerConnector/controllers/._.DS_Store +0 -0
- code/local/Putler/PutlerConnector/controllers/._Adminhtml +0 -0
- code/local/Putler/PutlerConnector/controllers/Adminhtml/.DS_Store +0 -0
- code/local/Putler/PutlerConnector/controllers/Adminhtml/._.DS_Store +0 -0
- code/local/Putler/PutlerConnector/controllers/Adminhtml/PutlerConnectorController.php +55 -0
- code/local/Putler/PutlerConnector/etc/.DS_Store +0 -0
- code/local/Putler/PutlerConnector/etc/._.DS_Store +0 -0
- code/local/Putler/PutlerConnector/etc/._config.xml +0 -0
- code/local/Putler/PutlerConnector/etc/adminhtml.xml +23 -0
- code/local/Putler/PutlerConnector/etc/config.xml +43 -0
- code/local/Putler/PutlerConnector/etc/system.xml +59 -0
- code/local/Putler/PutlerConnector/scripts/.DS_Store +0 -0
- code/local/Putler/PutlerConnector/scripts/._.DS_Store +0 -0
- code/local/Putler/PutlerConnector/sql/.DS_Store +0 -0
- code/local/Putler/PutlerConnector/sql/._.DS_Store +0 -0
- design/.DS_Store +0 -0
- design/._.DS_Store +0 -0
- design/adminhtml/.DS_Store +0 -0
- design/adminhtml/._.DS_Store +0 -0
- design/adminhtml/default/.DS_Store +0 -0
- design/adminhtml/default/._.DS_Store +0 -0
- design/adminhtml/default/default/.DS_Store +0 -0
- design/adminhtml/default/default/._.DS_Store +0 -0
- design/adminhtml/default/default/template/.DS_Store +0 -0
- design/adminhtml/default/default/template/._.DS_Store +0 -0
- design/adminhtml/default/default/template/putler_putlerconnector/.DS_Store +0 -0
- design/adminhtml/default/default/template/putler_putlerconnector/system/.DS_Store +0 -0
- design/adminhtml/default/default/template/putler_putlerconnector/system/config/button.phtml +45 -0
- etc/.DS_Store +0 -0
- etc/._.DS_Store +0 -0
- etc/modules/.DS_Store +0 -0
- etc/modules/._.DS_Store +0 -0
- etc/modules/._Putler_PutlerConnector.xml +0 -0
- etc/modules/Putler_PutlerConnector.xml +10 -0
- package.xml +48 -0
code/.DS_Store
ADDED
|
Binary file
|
code/._.DS_Store
ADDED
|
Binary file
|
code/local/.DS_Store
ADDED
|
Binary file
|
code/local/._.DS_Store
ADDED
|
Binary file
|
code/local/._Putler
ADDED
|
Binary file
|
code/local/Putler/.DS_Store
ADDED
|
Binary file
|
code/local/Putler/._.DS_Store
ADDED
|
Binary file
|
code/local/Putler/._PutlerConnector
ADDED
|
Binary file
|
code/local/Putler/PutlerConnector/.DS_Store
ADDED
|
Binary file
|
code/local/Putler/PutlerConnector/._.DS_Store
ADDED
|
Binary file
|
code/local/Putler/PutlerConnector/._Block
ADDED
|
Binary file
|
code/local/Putler/PutlerConnector/._Helper
ADDED
|
Binary file
|
code/local/Putler/PutlerConnector/._Model
ADDED
|
Binary file
|
code/local/Putler/PutlerConnector/._controllers
ADDED
|
Binary file
|
code/local/Putler/PutlerConnector/._etc
ADDED
|
Binary file
|
code/local/Putler/PutlerConnector/._scripts
ADDED
|
Binary file
|
code/local/Putler/PutlerConnector/._sql
ADDED
|
Binary file
|
code/local/Putler/PutlerConnector/Block/.DS_Store
ADDED
|
Binary file
|
code/local/Putler/PutlerConnector/Block/._.DS_Store
ADDED
|
Binary file
|
code/local/Putler/PutlerConnector/Block/Adminhtml/.DS_Store
ADDED
|
Binary file
|
code/local/Putler/PutlerConnector/Block/Adminhtml/System/.DS_Store
ADDED
|
Binary file
|
code/local/Putler/PutlerConnector/Block/Adminhtml/System/Config/.DS_Store
ADDED
|
Binary file
|
code/local/Putler/PutlerConnector/Block/Adminhtml/System/Config/Form/Button.php
ADDED
|
@@ -0,0 +1,70 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
/**
|
| 3 |
+
* Atwix
|
| 4 |
+
*
|
| 5 |
+
* NOTICE OF LICENSE
|
| 6 |
+
*
|
| 7 |
+
* This source file is subject to the Open Software License (OSL 3.0)
|
| 8 |
+
* that is bundled with this package in the file LICENSE.txt.
|
| 9 |
+
* It is also available through the world-wide-web at this URL:
|
| 10 |
+
* http://opensource.org/licenses/osl-3.0.php
|
| 11 |
+
* If you did not receive a copy of the license and are unable to
|
| 12 |
+
* obtain it through the world-wide-web, please send an email
|
| 13 |
+
* to license@magentocommerce.com so we can send you a copy immediately.
|
| 14 |
+
|
| 15 |
+
* @category Atwix Mod
|
| 16 |
+
* @package Atwix_Tweaks
|
| 17 |
+
* @author Atwix Core Team
|
| 18 |
+
* @copyright Copyright (c) 2012 Atwix (http://www.atwix.com)
|
| 19 |
+
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
| 20 |
+
*/
|
| 21 |
+
|
| 22 |
+
class Putler_PutlerConnector_Block_Adminhtml_System_Config_Form_Button extends Mage_Adminhtml_Block_System_Config_Form_Field
|
| 23 |
+
{
|
| 24 |
+
/*
|
| 25 |
+
* Set template
|
| 26 |
+
*/
|
| 27 |
+
protected function _construct()
|
| 28 |
+
{
|
| 29 |
+
parent::_construct();
|
| 30 |
+
$this->setTemplate('Putler_putlerconnector/system/config/button.phtml');
|
| 31 |
+
}
|
| 32 |
+
|
| 33 |
+
/**
|
| 34 |
+
* Return element html
|
| 35 |
+
*
|
| 36 |
+
* @param Varien_Data_Form_Element_Abstract $element
|
| 37 |
+
* @return string
|
| 38 |
+
*/
|
| 39 |
+
protected function _getElementHtml(Varien_Data_Form_Element_Abstract $element)
|
| 40 |
+
{
|
| 41 |
+
return $this->_toHtml();
|
| 42 |
+
}
|
| 43 |
+
|
| 44 |
+
/**
|
| 45 |
+
* Return ajax url for button
|
| 46 |
+
*
|
| 47 |
+
* @return string
|
| 48 |
+
*/
|
| 49 |
+
public function getAjaxCheckUrl()
|
| 50 |
+
{
|
| 51 |
+
return Mage::helper('adminhtml')->getUrl('adminhtml/adminhtml_putlerconnector/check');
|
| 52 |
+
}
|
| 53 |
+
|
| 54 |
+
/**
|
| 55 |
+
* Generate button html
|
| 56 |
+
*
|
| 57 |
+
* @return string
|
| 58 |
+
*/
|
| 59 |
+
public function getButtonHtml()
|
| 60 |
+
{
|
| 61 |
+
|
| 62 |
+
$button = $this->getLayout()->createBlock('adminhtml/widget_button')->setData(array(
|
| 63 |
+
'id' => 'putler_validate_button',
|
| 64 |
+
'label' => $this->helper('adminhtml')->__('Save & Send Past Orders to Putler'),
|
| 65 |
+
'onclick' => 'javascript:check(); return false;'
|
| 66 |
+
));
|
| 67 |
+
|
| 68 |
+
return $button->toHtml();
|
| 69 |
+
}
|
| 70 |
+
}
|
code/local/Putler/PutlerConnector/Helper/.DS_Store
ADDED
|
Binary file
|
code/local/Putler/PutlerConnector/Helper/._.DS_Store
ADDED
|
Binary file
|
code/local/Putler/PutlerConnector/Model/.DS_Store
ADDED
|
Binary file
|
code/local/Putler/PutlerConnector/Model/._.DS_Store
ADDED
|
Binary file
|
code/local/Putler/PutlerConnector/Model/Observer.php
ADDED
|
@@ -0,0 +1,40 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
|
| 3 |
+
|
| 4 |
+
class Putler_PutlerConnector_Model_Observer {
|
| 5 |
+
|
| 6 |
+
/**
|
| 7 |
+
* Subscribw the user, during checkout.
|
| 8 |
+
*
|
| 9 |
+
* @return void
|
| 10 |
+
*/
|
| 11 |
+
public function postOrderDataToPutler($observer)
|
| 12 |
+
{
|
| 13 |
+
|
| 14 |
+
$order = $observer->getOrder();
|
| 15 |
+
if($order->getState() == Mage_Sales_Model_Order::STATE_COMPLETE){
|
| 16 |
+
|
| 17 |
+
$email = Mage::getStoreConfig('putlersettings/general/putler_email');
|
| 18 |
+
$api_token = Mage::getStoreConfig('putlersettings/general/putler_api_token');
|
| 19 |
+
|
| 20 |
+
if($email != '' && $api_token != '') {
|
| 21 |
+
$putler_connector = Mage::getModel ( 'putler_putlerconnector/PutlerConnector');
|
| 22 |
+
$result = $putler_connector->validateApiInfo ($email, $api_token);
|
| 23 |
+
if ($result) {
|
| 24 |
+
|
| 25 |
+
$order = $observer->getEvent ()->getOrder ();
|
| 26 |
+
$orders_data = $putler_connector->preapreOrdersTosend ( array($order) );
|
| 27 |
+
$result = $putler_connector->postOrdersToPutler ( $orders_data );
|
| 28 |
+
if ($result) {
|
| 29 |
+
Mage::log( 'Data have been sent successfully to putler' );
|
| 30 |
+
}
|
| 31 |
+
} else {
|
| 32 |
+
Mage::log( 'Error while sending data to putler' );
|
| 33 |
+
}
|
| 34 |
+
} else {
|
| 35 |
+
Mage::log( 'Putler email and api token are blank' );
|
| 36 |
+
}
|
| 37 |
+
}
|
| 38 |
+
}
|
| 39 |
+
|
| 40 |
+
}
|
code/local/Putler/PutlerConnector/Model/PutlerConnector.php
ADDED
|
@@ -0,0 +1,312 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
|
| 3 |
+
class Putler_PutlerConnector_Model_PutlerConnector {
|
| 4 |
+
|
| 5 |
+
var $api_url = 'http://api.putler.com/inbound/';
|
| 6 |
+
var $email_address = '';
|
| 7 |
+
var $api_token = '';
|
| 8 |
+
|
| 9 |
+
var $text_domain = 'putler_connector';
|
| 10 |
+
|
| 11 |
+
var $version = 1.0;
|
| 12 |
+
private $name = 'magento';
|
| 13 |
+
|
| 14 |
+
function __construct() {
|
| 15 |
+
|
| 16 |
+
}
|
| 17 |
+
function validateApiInfo($email, $token) {
|
| 18 |
+
// Validate with API server
|
| 19 |
+
|
| 20 |
+
$this->api_token = $token;
|
| 21 |
+
$this->email_address = $email;
|
| 22 |
+
$post_data = array ('action' => 'validate', 'headers' => array ('Authorization' => 'Basic ' . base64_encode ( $email . ':' . $token ), 'User-Agent' => 'Putler Connector/' . $this->version ) );
|
| 23 |
+
$result = $this->makeRequest ( $post_data );
|
| 24 |
+
|
| 25 |
+
if ($result ['ACK'] == 'Success') {
|
| 26 |
+
return true;
|
| 27 |
+
}
|
| 28 |
+
|
| 29 |
+
//TODO: Check errors if any
|
| 30 |
+
return false;
|
| 31 |
+
}
|
| 32 |
+
|
| 33 |
+
function postOrdersToPutler($orders) {
|
| 34 |
+
|
| 35 |
+
|
| 36 |
+
if (empty ( $orders )) {
|
| 37 |
+
return true;
|
| 38 |
+
}
|
| 39 |
+
|
| 40 |
+
$oid = ob_start ();
|
| 41 |
+
$fp = fopen ( 'php://output', 'a+' );
|
| 42 |
+
foreach ( ( array ) $orders as $index => $row ) {
|
| 43 |
+
if ($index == 0) {
|
| 44 |
+
fputcsv ( $fp, array_keys ( $row ) );
|
| 45 |
+
}
|
| 46 |
+
fputcsv ( $fp, $row );
|
| 47 |
+
}
|
| 48 |
+
fclose ( $fp );
|
| 49 |
+
$csv_data = ob_get_clean ();
|
| 50 |
+
if (ob_get_clean () > 0) {
|
| 51 |
+
ob_end_clean ();
|
| 52 |
+
}
|
| 53 |
+
|
| 54 |
+
|
| 55 |
+
$post_data = array ('headers' => array ('Content-Type' => 'text/csv', 'Authorization' => 'Basic ' . base64_encode ( $this->email_address . ':' . $this->api_token ), 'User-Agent' => 'Putler Connector/' . $this->version ), 'timeout' => 120, 'body' => $csv_data );
|
| 56 |
+
|
| 57 |
+
$result = $this->makeRequest ( $post_data, true );
|
| 58 |
+
|
| 59 |
+
//TODO: Check if result contains error
|
| 60 |
+
$server_response_default = array ('ACK' => 'Failure', 'MESSAGE' => 'Unknown Response', $this->text_domain );
|
| 61 |
+
$server_response = $result;
|
| 62 |
+
$server_response = array_merge ( $server_response_default, $server_response );
|
| 63 |
+
|
| 64 |
+
if ($server_response ['ACK'] == "Success") {
|
| 65 |
+
return true;
|
| 66 |
+
}
|
| 67 |
+
|
| 68 |
+
return false;
|
| 69 |
+
|
| 70 |
+
//TODO: Throw an error if any
|
| 71 |
+
}
|
| 72 |
+
|
| 73 |
+
function makeRequest($post_data, $raw_data = false) {
|
| 74 |
+
/* Prepare a data to send on klawoo */
|
| 75 |
+
|
| 76 |
+
|
| 77 |
+
$client = new Zend_Http_Client ( $this->api_url );
|
| 78 |
+
if (isset ( $post_data ['headers'] )) {
|
| 79 |
+
$headers = $post_data ['headers'];
|
| 80 |
+
$client->setHeaders ( $headers );
|
| 81 |
+
}
|
| 82 |
+
|
| 83 |
+
$data = array();
|
| 84 |
+
if (isset ( $post_data ['body'] )) {
|
| 85 |
+
$data = $post_data ['body'];
|
| 86 |
+
}
|
| 87 |
+
|
| 88 |
+
if($raw_data) {
|
| 89 |
+
$client->setRawData($data);
|
| 90 |
+
} else {
|
| 91 |
+
$client->setParameterPost ( $data );
|
| 92 |
+
$client->setParameterPost ( 'action', $post_data ['action'] );
|
| 93 |
+
}
|
| 94 |
+
|
| 95 |
+
|
| 96 |
+
$result = $client->request ( Zend_Http_Client::POST );
|
| 97 |
+
$response = json_decode ( $result->getBody (), true );
|
| 98 |
+
|
| 99 |
+
return $response;
|
| 100 |
+
}
|
| 101 |
+
|
| 102 |
+
function getOrders() {
|
| 103 |
+
// Note: Only fetch Completed Orders for now. Other Statuses
|
| 104 |
+
$orders = Mage::getModel ( 'sales/order' )->getCollection ()->addAttributeToSelect ( "*" )->addAttributeToFilter ( 'status', array ('complete') );
|
| 105 |
+
$orders_data = $this->preapreOrdersTosend ( $orders );
|
| 106 |
+
return $orders_data;
|
| 107 |
+
}
|
| 108 |
+
|
| 109 |
+
function preapreOrdersTosend($orders) {
|
| 110 |
+
|
| 111 |
+
foreach ( $orders as $order ) {
|
| 112 |
+
//$order = Mage::getModel ( 'sales/order' );
|
| 113 |
+
|
| 114 |
+
$order_id = $order->getId();
|
| 115 |
+
$order_total = round ( $order->getSubtotal(), 2 );
|
| 116 |
+
|
| 117 |
+
$dateInGMT = date ( 'm/d/Y', ( int ) $order->getCreatedAtStoreDate()->getTimestamp() );
|
| 118 |
+
$timeInGMT = date ( 'h:i:s A', ( int ) $order->getCreatedAtStoreDate()->getTimestamp() );
|
| 119 |
+
|
| 120 |
+
|
| 121 |
+
$order_status = $order->getStatus();
|
| 122 |
+
if(in_array($order_status, array('on-hold', 'pending', 'failed'))) {
|
| 123 |
+
$order_status_display = 'Pending';
|
| 124 |
+
} else if (in_array($order_status, array('complete', 'processing', 'refunded'))) {
|
| 125 |
+
$order_status_display = 'Completed';
|
| 126 |
+
} else if ($order_status == "cancelled") {
|
| 127 |
+
$order_status_display = 'Cancelled';
|
| 128 |
+
}
|
| 129 |
+
|
| 130 |
+
$response ['Date'] = $dateInGMT;
|
| 131 |
+
$response ['Time'] = $timeInGMT;
|
| 132 |
+
$response ['Time_Zone'] = 'GMT';
|
| 133 |
+
|
| 134 |
+
$billing_name = $order->getCustomerFirstname() . ' ' . $order->getCustomerLastname();
|
| 135 |
+
$response ['Source'] = $this->name;
|
| 136 |
+
$response ['Name'] = $billing_name;
|
| 137 |
+
$response ['Type'] = 'Shopping Cart Payment Received';
|
| 138 |
+
|
| 139 |
+
$response ['Status'] = ucfirst ( $order_status_display );
|
| 140 |
+
|
| 141 |
+
$order_curency = $order->getOrderCurrencyCode();
|
| 142 |
+
$response ['Currency'] = $order_curency;
|
| 143 |
+
|
| 144 |
+
$shipping_amount = round ($order->getShippingAmount(), 2);
|
| 145 |
+
$response ['Gross'] = $order->getSubtotal() + $shipping_amount;
|
| 146 |
+
$response ['Fee'] = 0.00;
|
| 147 |
+
$response ['Net'] = $order->getSubtotal() + $shipping_amount;
|
| 148 |
+
|
| 149 |
+
$response ['From_Email_Address'] = $order->getCustomerEmail();
|
| 150 |
+
$response ['To_Email_Address'] = '';
|
| 151 |
+
$response ['Transaction_ID'] = $order_id;
|
| 152 |
+
$response ['Counterparty_Status'] = '';
|
| 153 |
+
$response ['Address_Status'] = '';
|
| 154 |
+
$response ['Item_Title'] = 'Shopping Cart';
|
| 155 |
+
$response ['Item_ID'] = 0; // Set to 0 for main Order Transaction row
|
| 156 |
+
$response ['Shipping_and_Handling_Amount'] = ($shipping_amount > 0) ? $shipping_amount : 0.00;
|
| 157 |
+
$response ['Insurance_Amount'] = '';
|
| 158 |
+
|
| 159 |
+
$discount_amount = $order->getBaseDiscountAmount();
|
| 160 |
+
$response ['Discount'] = ( $discount_amount > 0 ) ? round ( $discount_amount, 2 ) : 0.00;
|
| 161 |
+
|
| 162 |
+
$order_tax = $order->getBaseShippingTaxAmount();
|
| 163 |
+
$response ['Sales_Tax'] = ( $order_tax > 0) ? round ($order_tax, 2 ) : 0.00;
|
| 164 |
+
|
| 165 |
+
$response ['Option_1_Name'] = '';
|
| 166 |
+
$response ['Option_1_Value'] = '';
|
| 167 |
+
$response ['Option_2_Name'] = '';
|
| 168 |
+
$response ['Option_2_Value'] = '';
|
| 169 |
+
|
| 170 |
+
$response ['Auction_Site'] = '';
|
| 171 |
+
$response ['Buyer_ID'] = '';
|
| 172 |
+
$response ['Item_URL'] = '';
|
| 173 |
+
$response ['Closing_Date'] = '';
|
| 174 |
+
$response ['Escrow_ID'] = '';
|
| 175 |
+
$response ['Invoice_ID'] = '';
|
| 176 |
+
$response ['Reference_Txn_ID'] = '';
|
| 177 |
+
$response ['Invoice_Number'] = '';
|
| 178 |
+
$response ['Custom_Number'] = '';
|
| 179 |
+
|
| 180 |
+
|
| 181 |
+
$response ['Quantity'] = (int) $order->getTotalQtyOrdered();
|
| 182 |
+
$response ['Receipt_ID'] = '';
|
| 183 |
+
|
| 184 |
+
$response ['Balance'] = '';
|
| 185 |
+
$response ['Note'] = $order->getCustomerNote();
|
| 186 |
+
|
| 187 |
+
$address_info = $this->getOrderShippingInfo($order);
|
| 188 |
+
|
| 189 |
+
$response ['Address_Line_1'] = $address_info['Address_Line_1'];
|
| 190 |
+
$response ['Address_Line_2'] = $address_info['Address_Line_2'];
|
| 191 |
+
$response ['Town_City'] = $address_info['Town_City'];
|
| 192 |
+
$response ['State_Province'] = $address_info['State_Province'];
|
| 193 |
+
$response ['Zip_Postal_Code'] = $address_info['Zip_Postal_Code'];
|
| 194 |
+
$response ['Country'] = $address_info['Country'];
|
| 195 |
+
$response ['Contact_Phone_Number'] = $address_info['Contact_Phone_Number'];
|
| 196 |
+
$response ['Subscription_ID'] = '';
|
| 197 |
+
|
| 198 |
+
$transactions [] = $response;
|
| 199 |
+
$parent_ids = array();
|
| 200 |
+
|
| 201 |
+
foreach($order->getItemsCollection() as $item) {
|
| 202 |
+
|
| 203 |
+
$item_data = $item->getData();
|
| 204 |
+
|
| 205 |
+
if($item_data['parent_item_id'] != '' && !isset($item_data['has_children'])) {
|
| 206 |
+
continue;
|
| 207 |
+
}
|
| 208 |
+
|
| 209 |
+
|
| 210 |
+
$product_options = unserialize($item_data['product_options']);
|
| 211 |
+
|
| 212 |
+
$order_item = array ();
|
| 213 |
+
$order_item ['Type'] = 'Shopping Cart Item';
|
| 214 |
+
|
| 215 |
+
$order_item ['Item_Title'] = $item_data['name'];
|
| 216 |
+
$order_item ['Item_ID'] = $item_data['sku'];
|
| 217 |
+
|
| 218 |
+
$order_item ['Gross'] = round ( $item_data['row_total'], 2 );
|
| 219 |
+
$order_item['Quantity'] = $item_data['qty_ordered'];
|
| 220 |
+
// / $order_item['Net'] = $item_data['row_total'];
|
| 221 |
+
|
| 222 |
+
//TODO: Handle Variations
|
| 223 |
+
if(isset($product_options['attributes_info']) && count($product_options['attributes_info']) > 0) {
|
| 224 |
+
//$product_id = $product_options['product'];
|
| 225 |
+
//$_product = Mage::getModel('catalog/product')->load($product_id);
|
| 226 |
+
//$attributes = $_product->getTypeInstance(true)->getConfigurableAttributesAsArray($_product);
|
| 227 |
+
$attributes = $product_options['attributes_info'];
|
| 228 |
+
|
| 229 |
+
|
| 230 |
+
if(count($attributes > 0)) {
|
| 231 |
+
if(count($attributes <= 2)) {
|
| 232 |
+
$order_item ['Option_1_Name'] = (isset($attributes[0]['label'])) ? $attributes[0]['label'] : '';
|
| 233 |
+
$order_item ['Option_1_Value'] = (isset($attributes[0]['label'])) ? $attributes[0]['value'] : '';
|
| 234 |
+
$order_item ['Option_2_Name'] = (isset($attributes[1]['label'])) ? $attributes[1]['label'] : '';
|
| 235 |
+
$order_item ['Option_2_Value'] = (isset($attributes[1]['label'])) ? $attributes[1]['value'] : '';
|
| 236 |
+
} else {
|
| 237 |
+
$option_1_value_str = '';
|
| 238 |
+
foreach ($attributes as $attribute) {
|
| 239 |
+
$option_1_value_str .= $attribute['label'] . ':'.$attribute['value'] . ', ';
|
| 240 |
+
}
|
| 241 |
+
$order_item ['Option_1_Name'] = '';
|
| 242 |
+
$order_item ['Option_1_Value'] = rtrim($option_1_value_str, ',');
|
| 243 |
+
}
|
| 244 |
+
}
|
| 245 |
+
}
|
| 246 |
+
|
| 247 |
+
$transactions [] = array_merge ( $response, $order_item );
|
| 248 |
+
|
| 249 |
+
if ($order_status == "refunded") {
|
| 250 |
+
|
| 251 |
+
$modified_timestamp = $order->getUpdatedAtStoreDate()->getTimestamp();
|
| 252 |
+
|
| 253 |
+
$response ['Date'] = date ( 'm/d/Y', ( int ) $modified_timestamp );
|
| 254 |
+
$response ['Time'] = date ( 'h:i:s A', ( int ) $modified_timestamp );
|
| 255 |
+
|
| 256 |
+
$response ['Type'] = 'Refund';
|
| 257 |
+
$response ['Status'] = 'Completed';
|
| 258 |
+
$response ['Gross'] = - $order_total;
|
| 259 |
+
$response ['Net'] = - $order_total;
|
| 260 |
+
$response ['Transaction_ID'] = $order_id . '_R';
|
| 261 |
+
$response ['Reference_Txn_ID'] = $order_id;
|
| 262 |
+
|
| 263 |
+
$transactions [] = $response;
|
| 264 |
+
}
|
| 265 |
+
}
|
| 266 |
+
}
|
| 267 |
+
return $transactions;
|
| 268 |
+
}
|
| 269 |
+
|
| 270 |
+
function getOrderShippingInfo($order) {
|
| 271 |
+
$shippingAddress = !$order->getIsVirtual() ? $order->getShippingAddress() : null;
|
| 272 |
+
$address_line1 = "";
|
| 273 |
+
$district = "";
|
| 274 |
+
// correct for District
|
| 275 |
+
if(strpos($shippingAddress->getData("street"), "\n")){
|
| 276 |
+
$tmp = explode("\n", $shippingAddress->getData("street"));
|
| 277 |
+
$district = $tmp[1];
|
| 278 |
+
$address_line1 = $tmp[0];
|
| 279 |
+
}
|
| 280 |
+
if($address_line1 == ""){
|
| 281 |
+
$address_line1 = $shippingAddress->getData("street");
|
| 282 |
+
}
|
| 283 |
+
|
| 284 |
+
return array(
|
| 285 |
+
"Address_Line_2" => $shippingAddress ? $shippingAddress->getName() : '',
|
| 286 |
+
"Address_Line_1" => $shippingAddress ? $shippingAddress->getData("company") : '',
|
| 287 |
+
"shipping_street" => $shippingAddress ? $address_line1 : '',
|
| 288 |
+
"shipping_district" => $shippingAddress ? $district : '',
|
| 289 |
+
"Zip_Postal_Code" => $shippingAddress ? $shippingAddress->getData("postcode") : '',
|
| 290 |
+
"Town_City" => $shippingAddress ? $shippingAddress->getData("city") : '',
|
| 291 |
+
"State_Province" => $shippingAddress ? $shippingAddress->getRegionCode() : '',
|
| 292 |
+
"Country" => $shippingAddress ? $shippingAddress->getCountry() : '',
|
| 293 |
+
"Contact_Phone_Number" => $shippingAddress ? $shippingAddress->getData("telephone") : ''
|
| 294 |
+
);
|
| 295 |
+
}
|
| 296 |
+
|
| 297 |
+
function getOrderLineDetails($order) {
|
| 298 |
+
$lines = array();
|
| 299 |
+
foreach($order->getItemsCollection() as $prod)
|
| 300 |
+
{
|
| 301 |
+
$line = array();
|
| 302 |
+
$_product = Mage::getModel('catalog/product')->load($prod->getProductId());
|
| 303 |
+
$line['sku'] = $_product->getSku();
|
| 304 |
+
$line['order_quantity'] = (int)$prod->getQtyOrdered();
|
| 305 |
+
$lines[] = $line;
|
| 306 |
+
}
|
| 307 |
+
return $lines;
|
| 308 |
+
}
|
| 309 |
+
|
| 310 |
+
}
|
| 311 |
+
|
| 312 |
+
?>
|
code/local/Putler/PutlerConnector/controllers/.DS_Store
ADDED
|
Binary file
|
code/local/Putler/PutlerConnector/controllers/._.DS_Store
ADDED
|
Binary file
|
code/local/Putler/PutlerConnector/controllers/._Adminhtml
ADDED
|
Binary file
|
code/local/Putler/PutlerConnector/controllers/Adminhtml/.DS_Store
ADDED
|
Binary file
|
code/local/Putler/PutlerConnector/controllers/Adminhtml/._.DS_Store
ADDED
|
Binary file
|
code/local/Putler/PutlerConnector/controllers/Adminhtml/PutlerConnectorController.php
ADDED
|
@@ -0,0 +1,55 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
/**
|
| 3 |
+
* Atwix
|
| 4 |
+
*
|
| 5 |
+
* NOTICE OF LICENSE
|
| 6 |
+
*
|
| 7 |
+
* This source file is subject to the Open Software License (OSL 3.0)
|
| 8 |
+
* that is bundled with this package in the file LICENSE.txt.
|
| 9 |
+
* It is also available through the world-wide-web at this URL:
|
| 10 |
+
* http://opensource.org/licenses/osl-3.0.php
|
| 11 |
+
* If you did not receive a copy of the license and are unable to
|
| 12 |
+
* obtain it through the world-wide-web, please send an email
|
| 13 |
+
* to license@magentocommerce.com so we can send you a copy immediately.
|
| 14 |
+
|
| 15 |
+
* @category Atwix Mod
|
| 16 |
+
* @package Atwix_Tweaks
|
| 17 |
+
* @author Atwix Core Team
|
| 18 |
+
* @copyright Copyright (c) 2012 Atwix (http://www.atwix.com)
|
| 19 |
+
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
| 20 |
+
*/
|
| 21 |
+
|
| 22 |
+
class Putler_PutlerConnector_Adminhtml_PutlerConnectorController extends Mage_Adminhtml_Controller_Action
|
| 23 |
+
{
|
| 24 |
+
/**
|
| 25 |
+
* Return some checking result
|
| 26 |
+
*
|
| 27 |
+
* @return void
|
| 28 |
+
*/
|
| 29 |
+
public function checkAction() {
|
| 30 |
+
$api_token = trim($this->getRequest()->getParam('api_token'));
|
| 31 |
+
$email = trim($this->getRequest()->getParam('email'));
|
| 32 |
+
if($api_token != '' && $email != ''){
|
| 33 |
+
$putler_connector = Mage::getModel('putler_putlerconnector/PutlerConnector', $email, $api_token);
|
| 34 |
+
$putler_connector = Mage::getModel('putler_putlerconnector/PutlerConnector');
|
| 35 |
+
$result = $putler_connector->validateApiInfo($email, $api_token);
|
| 36 |
+
if($result) {
|
| 37 |
+
$config = new Mage_Core_Model_Config();
|
| 38 |
+
$config->saveConfig('putlersettings/general/putler_email', $email);
|
| 39 |
+
$config->saveConfig('putlersettings/general/putler_api_token', $api_token);
|
| 40 |
+
$orders = $putler_connector->getOrders();
|
| 41 |
+
$result = $putler_connector->postOrdersToPutler($orders);
|
| 42 |
+
if($result) {
|
| 43 |
+
$response = array('ACK' => 'SUCCESS', 'MESSAGE' => 'Settings Saved Successfully');
|
| 44 |
+
}
|
| 45 |
+
} else {
|
| 46 |
+
$response = array('ACK(' => 'FAILURE', 'MESSAGE' => 'Validation failed. Please Check Your Putler Email Address And API Token');
|
| 47 |
+
}
|
| 48 |
+
} else {
|
| 49 |
+
$response = array('ACK(' => 'FAILURE', 'MESSAGE' => 'Your Putler Email Address And API Token Should Not Be Blank');
|
| 50 |
+
}
|
| 51 |
+
|
| 52 |
+
$this->getResponse()->setHeader('Content-type', 'application/json');
|
| 53 |
+
$this->getResponse()->setBody(json_encode($response));
|
| 54 |
+
}
|
| 55 |
+
}
|
code/local/Putler/PutlerConnector/etc/.DS_Store
ADDED
|
Binary file
|
code/local/Putler/PutlerConnector/etc/._.DS_Store
ADDED
|
Binary file
|
code/local/Putler/PutlerConnector/etc/._config.xml
ADDED
|
Binary file
|
code/local/Putler/PutlerConnector/etc/adminhtml.xml
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?xml version="1.0" encoding="UTF-8"?>
|
| 2 |
+
|
| 3 |
+
<config>
|
| 4 |
+
<acl>
|
| 5 |
+
<resources>
|
| 6 |
+
<admin>
|
| 7 |
+
<children>
|
| 8 |
+
<system>
|
| 9 |
+
<children>
|
| 10 |
+
<config>
|
| 11 |
+
<children>
|
| 12 |
+
<putlersettings>
|
| 13 |
+
<title>Putler</title>
|
| 14 |
+
</putlersettings>
|
| 15 |
+
</children>
|
| 16 |
+
</config>
|
| 17 |
+
</children>
|
| 18 |
+
</system>
|
| 19 |
+
</children>
|
| 20 |
+
</admin>
|
| 21 |
+
</resources>
|
| 22 |
+
</acl>
|
| 23 |
+
</config>
|
code/local/Putler/PutlerConnector/etc/config.xml
ADDED
|
@@ -0,0 +1,43 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?xml version="1.0"?>
|
| 2 |
+
<config>
|
| 3 |
+
<modules>
|
| 4 |
+
<Putler_PutlerConnector>
|
| 5 |
+
<version>1.0</version>
|
| 6 |
+
</Putler_PutlerConnector>
|
| 7 |
+
</modules>
|
| 8 |
+
<global>
|
| 9 |
+
<models>
|
| 10 |
+
<putler_putlerconnector>
|
| 11 |
+
<class>Putler_PutlerConnector_Model</class>
|
| 12 |
+
<resourceModel>putlerconnector_resource</resourceModel>
|
| 13 |
+
</putler_putlerconnector>
|
| 14 |
+
</models>
|
| 15 |
+
<blocks>
|
| 16 |
+
<putler_putlerconnector>
|
| 17 |
+
<class>Putler_PutlerConnector_Block</class>
|
| 18 |
+
</putler_putlerconnector>
|
| 19 |
+
</blocks>
|
| 20 |
+
<events>
|
| 21 |
+
<sales_order_save_commit_after>
|
| 22 |
+
<observers>
|
| 23 |
+
<post_order_data_to_putler_on_order_complete>
|
| 24 |
+
<type>singleton</type>
|
| 25 |
+
<class>Putler_PutlerConnector_Model_Observer</class>
|
| 26 |
+
<method>postOrderDataToPutler</method>
|
| 27 |
+
</post_order_data_to_putler_on_order_complete>
|
| 28 |
+
</observers>
|
| 29 |
+
</sales_order_save_commit_after>
|
| 30 |
+
</events>
|
| 31 |
+
</global>
|
| 32 |
+
<admin>
|
| 33 |
+
<routers>
|
| 34 |
+
<adminhtml>
|
| 35 |
+
<args>
|
| 36 |
+
<modules>
|
| 37 |
+
<putlerconnecotr after="Mage_Adminhtml">Putler_PutlerConnector</putlerconnecotr>
|
| 38 |
+
</modules>
|
| 39 |
+
</args>
|
| 40 |
+
</adminhtml>
|
| 41 |
+
</routers>
|
| 42 |
+
</admin>
|
| 43 |
+
</config>
|
code/local/Putler/PutlerConnector/etc/system.xml
ADDED
|
@@ -0,0 +1,59 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?xml version="1.0"?>
|
| 2 |
+
|
| 3 |
+
<config>
|
| 4 |
+
<tabs>
|
| 5 |
+
<putler translate="label">
|
| 6 |
+
<label>Putler</label>
|
| 7 |
+
<sort_order>150</sort_order>
|
| 8 |
+
</putler>
|
| 9 |
+
</tabs>
|
| 10 |
+
<sections>
|
| 11 |
+
<putlersettings translate="label" module="adminhtml">
|
| 12 |
+
<label>Settings</label>
|
| 13 |
+
<tab>putler</tab>
|
| 14 |
+
<sort_order>10</sort_order>
|
| 15 |
+
<show_in_default>1</show_in_default>
|
| 16 |
+
<show_in_website>1</show_in_website>
|
| 17 |
+
<show_in_store>1</show_in_store>
|
| 18 |
+
<groups>
|
| 19 |
+
<general translate="label comment">
|
| 20 |
+
<label>Putler Settings</label>
|
| 21 |
+
<sort_order>50</sort_order>
|
| 22 |
+
<show_in_default>1</show_in_default>
|
| 23 |
+
<show_in_website>1</show_in_website>
|
| 24 |
+
<show_in_store>1</show_in_store>
|
| 25 |
+
<comment></comment>
|
| 26 |
+
<fields>
|
| 27 |
+
<putler_email translate="label comment">
|
| 28 |
+
<label>Your Putler Email Address</label>
|
| 29 |
+
<frontend_type>text</frontend_type>
|
| 30 |
+
<sort_order>10</sort_order>
|
| 31 |
+
<show_in_default>1</show_in_default>
|
| 32 |
+
<show_in_website>1</show_in_website>
|
| 33 |
+
<show_in_store>1</show_in_store>
|
| 34 |
+
</putler_email>
|
| 35 |
+
|
| 36 |
+
<putler_api_token translate="label comment">
|
| 37 |
+
<label>Your Putler API Token</label>
|
| 38 |
+
<frontend_type>text</frontend_type>
|
| 39 |
+
<sort_order>11</sort_order>
|
| 40 |
+
<show_in_default>1</show_in_default>
|
| 41 |
+
<show_in_website>1</show_in_website>
|
| 42 |
+
<show_in_store>1</show_in_store>
|
| 43 |
+
</putler_api_token>
|
| 44 |
+
|
| 45 |
+
<putler_validate translate="label">
|
| 46 |
+
<label></label>
|
| 47 |
+
<frontend_type>button</frontend_type>
|
| 48 |
+
<frontend_model>putler_putlerconnector/adminhtml_system_config_form_button</frontend_model>
|
| 49 |
+
<sort_order>20</sort_order>
|
| 50 |
+
<show_in_default>1</show_in_default>
|
| 51 |
+
<show_in_website>1</show_in_website>
|
| 52 |
+
<show_in_store>1</show_in_store>
|
| 53 |
+
</putler_validate>
|
| 54 |
+
</fields>
|
| 55 |
+
</general>
|
| 56 |
+
</groups>
|
| 57 |
+
</putlersettings>
|
| 58 |
+
</sections>
|
| 59 |
+
</config>
|
code/local/Putler/PutlerConnector/scripts/.DS_Store
ADDED
|
Binary file
|
code/local/Putler/PutlerConnector/scripts/._.DS_Store
ADDED
|
Binary file
|
code/local/Putler/PutlerConnector/sql/.DS_Store
ADDED
|
Binary file
|
code/local/Putler/PutlerConnector/sql/._.DS_Store
ADDED
|
Binary file
|
design/.DS_Store
ADDED
|
Binary file
|
design/._.DS_Store
ADDED
|
Binary file
|
design/adminhtml/.DS_Store
ADDED
|
Binary file
|
design/adminhtml/._.DS_Store
ADDED
|
Binary file
|
design/adminhtml/default/.DS_Store
ADDED
|
Binary file
|
design/adminhtml/default/._.DS_Store
ADDED
|
Binary file
|
design/adminhtml/default/default/.DS_Store
ADDED
|
Binary file
|
design/adminhtml/default/default/._.DS_Store
ADDED
|
Binary file
|
design/adminhtml/default/default/template/.DS_Store
ADDED
|
Binary file
|
design/adminhtml/default/default/template/._.DS_Store
ADDED
|
Binary file
|
design/adminhtml/default/default/template/putler_putlerconnector/.DS_Store
ADDED
|
Binary file
|
design/adminhtml/default/default/template/putler_putlerconnector/system/.DS_Store
ADDED
|
Binary file
|
design/adminhtml/default/default/template/putler_putlerconnector/system/config/button.phtml
ADDED
|
@@ -0,0 +1,45 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
/**
|
| 3 |
+
* Atwix
|
| 4 |
+
*
|
| 5 |
+
* NOTICE OF LICENSE
|
| 6 |
+
*
|
| 7 |
+
* This source file is subject to the Open Software License (OSL 3.0)
|
| 8 |
+
* that is bundled with this package in the file LICENSE.txt.
|
| 9 |
+
* It is also available through the world-wide-web at this URL:
|
| 10 |
+
* http://opensource.org/licenses/osl-3.0.php
|
| 11 |
+
* If you did not receive a copy of the license and are unable to
|
| 12 |
+
* obtain it through the world-wide-web, please send an email
|
| 13 |
+
* to license@magentocommerce.com so we can send you a copy immediately.
|
| 14 |
+
|
| 15 |
+
* @category Atwix Mod
|
| 16 |
+
* @package Atwix_Tweaks
|
| 17 |
+
* @author Atwix Core Team
|
| 18 |
+
* @copyright Copyright (c) 2012 Atwix (http://www.atwix.com)
|
| 19 |
+
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
| 20 |
+
* @var $this Atwix_Tweaks_Block_Adminhtml_System_Config_Form_Button
|
| 21 |
+
*/
|
| 22 |
+
?>
|
| 23 |
+
|
| 24 |
+
<script type="text/javascript">
|
| 25 |
+
//<![CDATA[
|
| 26 |
+
function check() {
|
| 27 |
+
var email = document.getElementById('putlersettings_general_putler_email').value;
|
| 28 |
+
var api_token = document.getElementById('putlersettings_general_putler_api_token').value;
|
| 29 |
+
new Ajax.Request('<?php echo $this->getAjaxCheckUrl() ?>', {
|
| 30 |
+
method: 'get',
|
| 31 |
+
parameters: {email: email, api_token: api_token},
|
| 32 |
+
dataType: 'json',
|
| 33 |
+
onSuccess: function(response){
|
| 34 |
+
if (response.responseJSON.ACK == 'SUCCESS'){
|
| 35 |
+
alert(response.responseJSON.MESSAGE);
|
| 36 |
+
} else {
|
| 37 |
+
alert(response.responseJSON.MESSAGE);
|
| 38 |
+
}
|
| 39 |
+
}
|
| 40 |
+
});
|
| 41 |
+
}
|
| 42 |
+
//]]>
|
| 43 |
+
</script>
|
| 44 |
+
|
| 45 |
+
<?php echo $this->getButtonHtml() ?>
|
etc/.DS_Store
ADDED
|
Binary file
|
etc/._.DS_Store
ADDED
|
Binary file
|
etc/modules/.DS_Store
ADDED
|
Binary file
|
etc/modules/._.DS_Store
ADDED
|
Binary file
|
etc/modules/._Putler_PutlerConnector.xml
ADDED
|
Binary file
|
etc/modules/Putler_PutlerConnector.xml
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?xml version="1.0"?>
|
| 2 |
+
|
| 3 |
+
<config>
|
| 4 |
+
<modules>
|
| 5 |
+
<Putler_PutlerConnector>
|
| 6 |
+
<active>true</active>
|
| 7 |
+
<codePool>local</codePool>
|
| 8 |
+
</Putler_PutlerConnector>
|
| 9 |
+
</modules>
|
| 10 |
+
</config>
|
package.xml
ADDED
|
@@ -0,0 +1,48 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?xml version="1.0"?>
|
| 2 |
+
<package>
|
| 3 |
+
<name>PutlerConnector</name>
|
| 4 |
+
<version>1.0.0</version>
|
| 5 |
+
<stability>stable</stability>
|
| 6 |
+
<license>osl</license>
|
| 7 |
+
<channel>community</channel>
|
| 8 |
+
<extends/>
|
| 9 |
+
<summary>Track Magento orders on desktop and mobile with Putler - Insightful reporting that grows your business.
|
| 10 |
+

|
| 11 |
+
Magento Putler Connector sends transactions to Putler using Putler's Inbound API. All past orders are sent when you first configure this extension. Future orders will be sent to Putler automatically.
|
| 12 |
+

|
| 13 |
+
You need a Putler account (Free or Paid), and a Magento based store to use this extension.
|
| 14 |
+
</summary>
|
| 15 |
+
<description>Installation
|
| 16 |
+

|
| 17 |
+
Ensure you have latest version of Magento extension installed
|
| 18 |
+
Unzip and upload contents of the extension to your magento root directory
|
| 19 |
+
Activate the extension through Administration > System > Configuration > Advance menu in Magento
|
| 20 |
+
Make sure 'Putler_PutlerConnector' is listed on this page.
|
| 21 |
+

|
| 22 |
+
Configuration
|
| 23 |
+

|
| 24 |
+
Go to Administration > System > Configuration > Putler > Settings
|
| 25 |
+

|
| 26 |
+
This is where you need to enter Putler API Token and Putler Email Address to sync your past Magento transactions to Putler and start tracking Magento transactions with Putler.
|
| 27 |
+

|
| 28 |
+
Enter your Putler Email Address.
|
| 29 |
+
Enter your Putler API Token which you will get once you add a new account "Putler Inbound API" in Putler
|
| 30 |
+
Click on "Save & Send Past Orders to Putler" to send all the Magento past orders to Putler.
|
| 31 |
+

|
| 32 |
+
All past orders will be sent to Putler. New orders will be automatically synced.
|
| 33 |
+

|
| 34 |
+
Where to find your Putler API Token?
|
| 35 |
+

|
| 36 |
+
Sign up for a free account at: Putler
|
| 37 |
+
Download and install Putler on your desktop
|
| 38 |
+
Add a new account - select "Putler Inbound API" as the account type
|
| 39 |
+
Note down the API Token and copy the same API Token in Putler Connector Settings
|
| 40 |
+
</description>
|
| 41 |
+
<notes>This is an initial version of a Magento Putler Connector which will send Magento orders data to Putler and you will get insightful statistics about your store and business</notes>
|
| 42 |
+
<authors><author><name>Nirav Mehta</name><user>putler</user><email>support@putler.com</email></author></authors>
|
| 43 |
+
<date>2014-03-12</date>
|
| 44 |
+
<time>10:26:55</time>
|
| 45 |
+
<contents></contents>
|
| 46 |
+
<compatible/>
|
| 47 |
+
<dependencies><required><php><min>5.2.0</min><max>5.5.0</max></php></required></dependencies>
|
| 48 |
+
</package>
|
