Version Notes
CloudGento Magento Extension
Download this release
Release Info
| Developer | CloudConversion |
| Extension | cloudgento-extension |
| Version | 1.0.0 |
| Comparing to | |
| See all releases | |
Version 1.0.0
- app/code/local/CloudConversion/CloudGento/Helper/Data.php +14 -0
- app/code/local/CloudConversion/CloudGento/Model/Catalog/Product/Api.php +238 -0
- app/code/local/CloudConversion/CloudGento/Model/Catalog/Product/Api/V2.php +160 -0
- app/code/local/CloudConversion/CloudGento/Model/Order/Api.php +15 -0
- app/code/local/CloudConversion/CloudGento/Model/Order/Api/V2.php +163 -0
- app/code/local/CloudConversion/CloudGento/Model/Order/Shipment/Api.php +41 -0
- app/code/local/CloudConversion/CloudGento/Model/Order/Shipment/Api/V2.php +6 -0
- app/code/local/CloudConversion/CloudGento/Model/Resource/Message.php +19 -0
- app/code/local/CloudConversion/CloudGento/Model/Resource/Order.php +432 -0
- app/code/local/CloudConversion/CloudGento/Model/Resource/Order/Address.php +15 -0
- app/code/local/CloudConversion/CloudGento/Model/Resource/Order/Item.php +43 -0
- app/code/local/CloudConversion/CloudGento/Model/Resource/Order/Payment.php +11 -0
- app/code/local/CloudConversion/CloudGento/Model/Resource/Order/Status/History.php +11 -0
- app/code/local/CloudConversion/CloudGento/etc/api.xml +41 -0
- app/code/local/CloudConversion/CloudGento/etc/config.xml +90 -0
- app/code/local/CloudConversion/CloudGento/etc/wsdl.xml +500 -0
- app/code/local/CloudConversion/CloudGento/etc/wsi.xml +72 -0
- app/etc/modules/CloudConversion_CloudGento.xml +9 -0
- package.xml +18 -0
app/code/local/CloudConversion/CloudGento/Helper/Data.php
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
|
| 3 |
+
class CloudConversion_CloudGento_Helper_Data extends Mage_Core_Helper_Abstract {
|
| 4 |
+
|
| 5 |
+
/**
|
| 6 |
+
* @param string $attrSetName
|
| 7 |
+
* @return string
|
| 8 |
+
*/
|
| 9 |
+
public function getAttributeSetIdByName($attrSetName, $entityType = 'catalog_product')
|
| 10 |
+
{
|
| 11 |
+
return Mage::getSingleton('catalog/config')
|
| 12 |
+
->getAttributeSetId($entityType, $attrSetName);
|
| 13 |
+
}
|
| 14 |
+
}
|
app/code/local/CloudConversion/CloudGento/Model/Catalog/Product/Api.php
ADDED
|
@@ -0,0 +1,238 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
|
| 3 |
+
/**
|
| 4 |
+
* Extension of Magento Soap API V1
|
| 5 |
+
*
|
| 6 |
+
* @package CloudConversion
|
| 7 |
+
* @author Andrea De Pirro <andrea.depirro@yameveo.com>
|
| 8 |
+
* @author Johann Reinke @johannreinke
|
| 9 |
+
* @see Mage_Catalog_Model_Product_Api
|
| 10 |
+
*/
|
| 11 |
+
class CloudConversion_CloudGento_Model_Catalog_Product_Api extends Mage_Catalog_Model_Product_Api
|
| 12 |
+
{
|
| 13 |
+
|
| 14 |
+
public function create($type, $set, $sku, $productData, $store = null)
|
| 15 |
+
{
|
| 16 |
+
// Allow attribute set name instead of id
|
| 17 |
+
if (is_string($set) && !is_numeric($set)) {
|
| 18 |
+
$set = Mage::helper('cloudconversion_cloudgento')->getAttributeSetIdByName($set);
|
| 19 |
+
}
|
| 20 |
+
|
| 21 |
+
return parent::create($type, $set, $sku, $productData, $store);
|
| 22 |
+
}
|
| 23 |
+
|
| 24 |
+
protected function _prepareDataForSave($product, $productData)
|
| 25 |
+
{
|
| 26 |
+
/* @var $product Mage_Catalog_Model_Product */
|
| 27 |
+
|
| 28 |
+
if (isset($productData['categories'])) {
|
| 29 |
+
$categoryIds = Mage::helper('cloudconversion_cloudgento/catalog_product')
|
| 30 |
+
->getCategoryIdsByNames((array) $productData['categories']);
|
| 31 |
+
if (!empty($categoryIds)) {
|
| 32 |
+
$productData['categories'] = array_unique($categoryIds);
|
| 33 |
+
}
|
| 34 |
+
}
|
| 35 |
+
|
| 36 |
+
if (isset($productData['website_ids'])) {
|
| 37 |
+
$websiteIds = $productData['website_ids'];
|
| 38 |
+
foreach ($websiteIds as $i => $websiteId) {
|
| 39 |
+
if (!is_numeric($websiteId)) {
|
| 40 |
+
$website = Mage::app()->getWebsite($websiteId);
|
| 41 |
+
if ($website->getId()) {
|
| 42 |
+
$websiteIds[$i] = $website->getId();
|
| 43 |
+
}
|
| 44 |
+
}
|
| 45 |
+
}
|
| 46 |
+
$product->setWebsiteIds($websiteIds);
|
| 47 |
+
unset($productData['website_ids']);
|
| 48 |
+
}
|
| 49 |
+
|
| 50 |
+
foreach ($productData as $code => $value) {
|
| 51 |
+
$productData[$code] = Mage::helper('cloudconversion_cloudgento/catalog_product')
|
| 52 |
+
->getOptionKeyByLabel($code, $value);
|
| 53 |
+
}
|
| 54 |
+
|
| 55 |
+
parent::_prepareDataForSave($product, $productData);
|
| 56 |
+
|
| 57 |
+
if (isset($productData['associated_skus'])) {
|
| 58 |
+
$simpleSkus = $productData['associated_skus'];
|
| 59 |
+
$priceChanges = isset($productData['price_changes']) ? $productData['price_changes'] : array();
|
| 60 |
+
Mage::helper('cloudconversion_cloudgento/catalog_product')->associateProducts($product, $simpleSkus, $priceChanges);
|
| 61 |
+
}
|
| 62 |
+
}
|
| 63 |
+
|
| 64 |
+
/**
|
| 65 |
+
* Retrieve product info.
|
| 66 |
+
* Optional attributes configurable_attributes_data and configurable_products_data
|
| 67 |
+
* show info on children products and confiurable options
|
| 68 |
+
*
|
| 69 |
+
* @param int|string $productId
|
| 70 |
+
* @param string|int $store
|
| 71 |
+
* @param stdClass $attributes
|
| 72 |
+
* @param string $identifierType (sku or null)
|
| 73 |
+
* @return array
|
| 74 |
+
*/
|
| 75 |
+
public function info($productId, $store = null, $attributes = null, $identifierType = null)
|
| 76 |
+
{
|
| 77 |
+
$product = $this->_getProduct($productId, $store, $identifierType);
|
| 78 |
+
$all_attributes = in_array('*', $attributes);
|
| 79 |
+
|
| 80 |
+
$result = array(// Basic product data
|
| 81 |
+
'product_id' => $product->getId(),
|
| 82 |
+
'sku' => $product->getSku(),
|
| 83 |
+
'set' => $product->getAttributeSetId(),
|
| 84 |
+
'type' => $product->getTypeId(),
|
| 85 |
+
'categories' => $product->getCategoryIds(),
|
| 86 |
+
'websites' => $product->getWebsiteIds()
|
| 87 |
+
);
|
| 88 |
+
|
| 89 |
+
foreach ($product->getTypeInstance(true)->getEditableAttributes($product) as $attribute) {
|
| 90 |
+
if ($this->_isAllowedAttribute($attribute, $attributes) || $all_attributes) {
|
| 91 |
+
$result[$attribute->getAttributeCode()] = $product->getData(
|
| 92 |
+
$attribute->getAttributeCode());
|
| 93 |
+
}
|
| 94 |
+
}
|
| 95 |
+
return $this->infoResult($result, $product, $attributes, $store, $all_attributes);
|
| 96 |
+
}
|
| 97 |
+
|
| 98 |
+
public function infoResult($result, $product, $attributes, $store, $all_attributes)
|
| 99 |
+
{
|
| 100 |
+
$productId = $product->getId();
|
| 101 |
+
if (in_array('url_complete', $attributes) || $all_attributes) {
|
| 102 |
+
$result['url_complete'] = $product->setStoreId($store)->getProductUrl();
|
| 103 |
+
}
|
| 104 |
+
if (in_array('stock_data', $attributes) || $all_attributes) {
|
| 105 |
+
$result['stock_data'] = Mage::getSingleton('Mage_CatalogInventory_Model_Stock_Item_Api')->items($productId);
|
| 106 |
+
}
|
| 107 |
+
if (in_array('images', $attributes) || $all_attributes) {
|
| 108 |
+
$result['images'] = Mage::getSingleton('Mage_Catalog_Model_Product_Attribute_Media_Api')->items($productId, $store);
|
| 109 |
+
}
|
| 110 |
+
if (!$product->isSuper() && (in_array('parent_sku', $attributes) || $all_attributes)) {
|
| 111 |
+
$parentIds = Mage::getModel('catalog/product_type_configurable')->getParentIdsByChild($product->getId());
|
| 112 |
+
if (!$parentIds)
|
| 113 |
+
$parentIds = Mage::getModel('catalog/product_type_grouped')->getParentIdsByChild($product->getId());
|
| 114 |
+
if (isset($parentIds[0])) {
|
| 115 |
+
$parent = Mage::getModel('catalog/product')->load($parentIds[0]);
|
| 116 |
+
$result['parent_sku'] = $parent->getSku();
|
| 117 |
+
}
|
| 118 |
+
} elseif ($product->isConfigurable()) {
|
| 119 |
+
$attributesData = $product->getTypeInstance()->getConfigurableAttributesAsArray();
|
| 120 |
+
// configurable_options
|
| 121 |
+
if (in_array('configurable_attributes_data', $attributes) || $all_attributes) {
|
| 122 |
+
$options = array();
|
| 123 |
+
$k = 0;
|
| 124 |
+
foreach ($attributesData as $attribute) {
|
| 125 |
+
$options[$k]['code'] = $attribute['attribute_code'];
|
| 126 |
+
foreach ($attribute['values'] as $value) {
|
| 127 |
+
$value['attribute_code'] = $attribute['attribute_code'];
|
| 128 |
+
$options[$k]['options'][] = $value;
|
| 129 |
+
}
|
| 130 |
+
$k++;
|
| 131 |
+
}
|
| 132 |
+
$result['configurable_attributes_data'] = $options;
|
| 133 |
+
}
|
| 134 |
+
// children
|
| 135 |
+
if (in_array('configurable_products_data', $attributes) || $all_attributes) {
|
| 136 |
+
// @todo use $childProducts = $product->getTypeInstance()->getUsedProducts();
|
| 137 |
+
$childProducts = Mage::getModel('catalog/product_type_configurable')
|
| 138 |
+
->getUsedProducts(null, $product);
|
| 139 |
+
$skus = array();
|
| 140 |
+
$i = 0;
|
| 141 |
+
foreach ($childProducts as $childProduct) {
|
| 142 |
+
$skus[$i]['sku'] = $childProduct->getSku();
|
| 143 |
+
$j = 0;
|
| 144 |
+
foreach ($attributesData as $attribute) {
|
| 145 |
+
$skus[$i]['options'][$j]['label'] = $attribute['label'];
|
| 146 |
+
$skus[$i]['options'][$j]['attribute_code'] = $attribute['attribute_code'];
|
| 147 |
+
$skus[$i]['options'][$j]['value_index'] = $childProduct[$attribute['attribute_code']];
|
| 148 |
+
$j++;
|
| 149 |
+
}
|
| 150 |
+
$i++;
|
| 151 |
+
}
|
| 152 |
+
$result['configurable_products_data'] = $skus;
|
| 153 |
+
}
|
| 154 |
+
}
|
| 155 |
+
return $result;
|
| 156 |
+
}
|
| 157 |
+
|
| 158 |
+
/**
|
| 159 |
+
|
| 160 |
+
* Retrieve list of products with basic info (id, sku, type, set, name)
|
| 161 |
+
|
| 162 |
+
*
|
| 163 |
+
|
| 164 |
+
* @param null|object|array $filters
|
| 165 |
+
* @param string|int $store
|
| 166 |
+
* @param string productUpdatedAt timestamp to list only products with updated qty
|
| 167 |
+
|
| 168 |
+
* @return array
|
| 169 |
+
|
| 170 |
+
*/
|
| 171 |
+
public function items($filters = null, $store = null)
|
| 172 |
+
{
|
| 173 |
+
|
| 174 |
+
$collection = Mage::getModel('catalog/product')->getCollection()
|
| 175 |
+
->addStoreFilter($this->_getStoreId($store))
|
| 176 |
+
->addAttributeToSelect('name')
|
| 177 |
+
->addAttributeToSelect('price');
|
| 178 |
+
|
| 179 |
+
/** @var $apiHelper Mage_Api_Helper_Data */
|
| 180 |
+
$apiHelper = Mage::helper('api');
|
| 181 |
+
$filters = $apiHelper->parseFilters($filters, $this->_filtersMap);
|
| 182 |
+
if (isset($filters['updated_at'])) {
|
| 183 |
+
$methods = array(
|
| 184 |
+
'lt' => '<',
|
| 185 |
+
'gt' => '>',
|
| 186 |
+
'eq' => '=',
|
| 187 |
+
'lteq' => '<=',
|
| 188 |
+
'gteq' => '>=',
|
| 189 |
+
'neq' => '<>'
|
| 190 |
+
);
|
| 191 |
+
// Find all the products with qty modified after productUpdatedAt OR changed
|
| 192 |
+
$updatedAt = $filters['updated_at'];
|
| 193 |
+
$condition = array_keys($updatedAt);
|
| 194 |
+
$value = array_values($updatedAt);
|
| 195 |
+
$order_item_table = Mage::getSingleton('core/resource')->getTableName('sales/order_item');
|
| 196 |
+
$collection
|
| 197 |
+
->getSelect()
|
| 198 |
+
->joinLeft(
|
| 199 |
+
array('order_item' => $order_item_table), 'order_item.product_id = entity_id', array('item_updated_at' => 'order_item.updated_at')
|
| 200 |
+
)
|
| 201 |
+
->where("order_item.updated_at {$methods[$condition[0]]} '{$value[0]}' OR e.updated_at {$methods[$condition[0]]} '{$value[0]}'")
|
| 202 |
+
->group('sku')
|
| 203 |
+
;
|
| 204 |
+
unset($filters['updated_at']);
|
| 205 |
+
}
|
| 206 |
+
try {
|
| 207 |
+
foreach ($filters as $field => $value) {
|
| 208 |
+
$collection->addFieldToFilter($field, $value);
|
| 209 |
+
}
|
| 210 |
+
} catch (Mage_Core_Exception $e) {
|
| 211 |
+
|
| 212 |
+
$this->_fault('filters_invalid', $e->getMessage());
|
| 213 |
+
}
|
| 214 |
+
|
| 215 |
+
$result = array();
|
| 216 |
+
|
| 217 |
+
foreach ($collection as $product) {
|
| 218 |
+
$stock_item = Mage::getModel('cataloginventory/stock_item')->loadByProduct($product);
|
| 219 |
+
$qty = $stock_item->getQty();
|
| 220 |
+
$details = array(
|
| 221 |
+
'product_id' => $product->getId(),
|
| 222 |
+
'sku' => $product->getSku(),
|
| 223 |
+
'name' => $product->getName(),
|
| 224 |
+
'set' => $product->getAttributeSetId(),
|
| 225 |
+
'type' => $product->getTypeId(),
|
| 226 |
+
'category_ids' => $product->getCategoryIds(),
|
| 227 |
+
'website_ids' => $product->getWebsiteIds(),
|
| 228 |
+
'available_quantity' => $qty,
|
| 229 |
+
'price' => $product->getPrice()
|
| 230 |
+
);
|
| 231 |
+
|
| 232 |
+
$result[] = $details;
|
| 233 |
+
}
|
| 234 |
+
|
| 235 |
+
return $result;
|
| 236 |
+
}
|
| 237 |
+
|
| 238 |
+
}
|
app/code/local/CloudConversion/CloudGento/Model/Catalog/Product/Api/V2.php
ADDED
|
@@ -0,0 +1,160 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
|
| 3 |
+
/**
|
| 4 |
+
* Extension of Magento Soap API V2
|
| 5 |
+
*
|
| 6 |
+
* @package CloudConversion
|
| 7 |
+
* @author Andrea De Pirro <andrea.depirro@yameveo.com>
|
| 8 |
+
* @author Johann Reinke @johannreinke
|
| 9 |
+
* @see Mage_Catalog_Model_Product_Api_V2
|
| 10 |
+
*/
|
| 11 |
+
class CloudConversion_CloudGento_Model_Catalog_Product_Api_V2 extends Mage_Catalog_Model_Product_Api_V2
|
| 12 |
+
{
|
| 13 |
+
|
| 14 |
+
public function create($type, $set, $sku, $productData, $store = null)
|
| 15 |
+
{
|
| 16 |
+
// Allow attribute set name instead of id
|
| 17 |
+
if (is_string($set) && !is_numeric($set)) {
|
| 18 |
+
$set = Mage::helper('cloudconversion_cloudgento')->getAttributeSetIdByName($set);
|
| 19 |
+
}
|
| 20 |
+
|
| 21 |
+
return parent::create($type, $set, $sku, $productData, $store);
|
| 22 |
+
}
|
| 23 |
+
|
| 24 |
+
protected function _prepareDataForSave($product, $productData)
|
| 25 |
+
{
|
| 26 |
+
/* @var $product Mage_Catalog_Model_Product */
|
| 27 |
+
|
| 28 |
+
if (property_exists($productData, 'categories')) {
|
| 29 |
+
$categoryIds = Mage::helper('cloudconversion_cloudgento/catalog_product')
|
| 30 |
+
->getCategoryIdsByNames((array) $productData->categories);
|
| 31 |
+
if (!empty($categoryIds)) {
|
| 32 |
+
$productData->categories = array_unique($categoryIds);
|
| 33 |
+
}
|
| 34 |
+
}
|
| 35 |
+
|
| 36 |
+
if (property_exists($productData, 'additional_attributes')) {
|
| 37 |
+
$singleDataExists = property_exists((object) $productData->additional_attributes, 'single_data');
|
| 38 |
+
$multiDataExists = property_exists((object) $productData->additional_attributes, 'multi_data');
|
| 39 |
+
if ($singleDataExists || $multiDataExists) {
|
| 40 |
+
if ($singleDataExists) {
|
| 41 |
+
foreach ($productData->additional_attributes->single_data as $_attribute) {
|
| 42 |
+
$_attrCode = $_attribute->key;
|
| 43 |
+
$productData->$_attrCode = Mage::helper('cloudconversion_cloudgento/catalog_product')
|
| 44 |
+
->getOptionKeyByLabel($_attrCode, $_attribute->value);
|
| 45 |
+
}
|
| 46 |
+
}
|
| 47 |
+
if ($multiDataExists) {
|
| 48 |
+
foreach ($productData->additional_attributes->multi_data as $_attribute) {
|
| 49 |
+
$_attrCode = $_attribute->key;
|
| 50 |
+
$productData->$_attrCode = Mage::helper('cloudconversion_cloudgento/catalog_product')
|
| 51 |
+
->getOptionKeyByLabel($_attrCode, $_attribute->value);
|
| 52 |
+
}
|
| 53 |
+
}
|
| 54 |
+
} else {
|
| 55 |
+
foreach ($productData->additional_attributes as $_attrCode => $_value) {
|
| 56 |
+
$productData->$_attrCode = Mage::helper('cloudconversion_cloudgento/catalog_product')
|
| 57 |
+
->getOptionKeyByLabel($_attrCode, $_value);
|
| 58 |
+
}
|
| 59 |
+
}
|
| 60 |
+
unset($productData->additional_attributes);
|
| 61 |
+
}
|
| 62 |
+
|
| 63 |
+
if (property_exists($productData, 'website_ids')) {
|
| 64 |
+
$websiteIds = (array) $productData->website_ids;
|
| 65 |
+
foreach ($websiteIds as $i => $websiteId) {
|
| 66 |
+
if (!is_numeric($websiteId)) {
|
| 67 |
+
$website = Mage::app()->getWebsite($websiteId);
|
| 68 |
+
if ($website->getId()) {
|
| 69 |
+
$websiteIds[$i] = $website->getId();
|
| 70 |
+
}
|
| 71 |
+
}
|
| 72 |
+
}
|
| 73 |
+
$product->setWebsiteIds($websiteIds);
|
| 74 |
+
unset($productData->website_ids);
|
| 75 |
+
}
|
| 76 |
+
|
| 77 |
+
parent::_prepareDataForSave($product, $productData);
|
| 78 |
+
|
| 79 |
+
if (property_exists($productData, 'associated_skus')) {
|
| 80 |
+
$simpleSkus = (array) $productData->associated_skus;
|
| 81 |
+
$priceChanges = array();
|
| 82 |
+
if (property_exists($productData, 'price_changes')) {
|
| 83 |
+
if (key($productData->price_changes) === 0) {
|
| 84 |
+
$priceChanges = $productData->price_changes[0];
|
| 85 |
+
} else {
|
| 86 |
+
$priceChanges = $productData->price_changes;
|
| 87 |
+
}
|
| 88 |
+
}
|
| 89 |
+
Mage::helper('cloudconversion_cloudgento/catalog_product')->associateProducts($product, $simpleSkus, $priceChanges);
|
| 90 |
+
}
|
| 91 |
+
}
|
| 92 |
+
|
| 93 |
+
/**
|
| 94 |
+
* Retrieve product info.
|
| 95 |
+
* Optional attributes configurable_attributes_data and configurable_products_data
|
| 96 |
+
* show info on children products and confiurable options
|
| 97 |
+
*
|
| 98 |
+
* @param int|string $productId
|
| 99 |
+
* @param string|int $store
|
| 100 |
+
* @param stdClass $attributes
|
| 101 |
+
* @param string $identifierType (sku or null)
|
| 102 |
+
* @return array
|
| 103 |
+
*/
|
| 104 |
+
public function info($productId, $store = null, $attributes = null, $identifierType = null)
|
| 105 |
+
{
|
| 106 |
+
|
| 107 |
+
$product = $this->_getProduct($productId, $store, $identifierType);
|
| 108 |
+
$all_attributes = in_array('*', $attributes->attributes);
|
| 109 |
+
$result = array(// Basic product data
|
| 110 |
+
'product_id' => $product->getId(),
|
| 111 |
+
'sku' => $product->getSku(),
|
| 112 |
+
'set' => $product->getAttributeSetId(),
|
| 113 |
+
'type' => $product->getTypeId(),
|
| 114 |
+
'categories' => $product->getCategoryIds(),
|
| 115 |
+
'websites' => $product->getWebsiteIds()
|
| 116 |
+
);
|
| 117 |
+
|
| 118 |
+
$allAttributes = array();
|
| 119 |
+
if (!empty($attributes->attributes)) {
|
| 120 |
+
$allAttributes = array_merge($allAttributes, $attributes->attributes);
|
| 121 |
+
} else {
|
| 122 |
+
foreach ($product->getTypeInstance(true)->getEditableAttributes($product) as $attribute) {
|
| 123 |
+
if ($this->_isAllowedAttribute($attribute, $attributes) || $all_attributes) {
|
| 124 |
+
$allAttributes[] = $attribute->getAttributeCode();
|
| 125 |
+
}
|
| 126 |
+
}
|
| 127 |
+
}
|
| 128 |
+
|
| 129 |
+
$_additionalAttributeCodes = array();
|
| 130 |
+
if (!empty($attributes->additional_attributes)) {
|
| 131 |
+
/* @var $_attributeCode string */
|
| 132 |
+
foreach ($attributes->additional_attributes as $_attributeCode) {
|
| 133 |
+
$allAttributes[] = $_attributeCode;
|
| 134 |
+
$_additionalAttributeCodes[] = $_attributeCode;
|
| 135 |
+
}
|
| 136 |
+
}
|
| 137 |
+
|
| 138 |
+
$_additionalAttribute = 0;
|
| 139 |
+
foreach ($product->getTypeInstance(true)->getEditableAttributes($product) as $attribute) {
|
| 140 |
+
if ($this->_isAllowedAttribute($attribute, $allAttributes) || $all_attributes) {
|
| 141 |
+
if (in_array($attribute->getAttributeCode(), $_additionalAttributeCodes) || $all_attributes) {
|
| 142 |
+
$result['additional_attributes'][$_additionalAttribute]['key'] = $attribute->getAttributeCode();
|
| 143 |
+
$result['additional_attributes'][$_additionalAttribute]['value'] = $product
|
| 144 |
+
->getData($attribute->getAttributeCode());
|
| 145 |
+
$_additionalAttribute++;
|
| 146 |
+
} else {
|
| 147 |
+
$result[$attribute->getAttributeCode()] = $product->getData($attribute->getAttributeCode());
|
| 148 |
+
}
|
| 149 |
+
}
|
| 150 |
+
}
|
| 151 |
+
$standard_attributes = $attributes->attributes;
|
| 152 |
+
return Mage::getSingleton('CloudConversion_CloudGento_Model_Catalog_Product_Api')->infoResult($result, $product, $standard_attributes, $store, $all_attributes);
|
| 153 |
+
}
|
| 154 |
+
|
| 155 |
+
public function items($filters = null, $store = null)
|
| 156 |
+
{
|
| 157 |
+
return Mage::getSingleton('CloudConversion_CloudGento_Model_Catalog_Product_Api')->items($filters, $store);
|
| 158 |
+
}
|
| 159 |
+
|
| 160 |
+
}
|
app/code/local/CloudConversion/CloudGento/Model/Order/Api.php
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
|
| 3 |
+
class CloudConversion_CloudGento_Model_Order_Api extends Mage_Sales_Model_Order_Api
|
| 4 |
+
{
|
| 5 |
+
|
| 6 |
+
/**
|
| 7 |
+
* Import orders
|
| 8 |
+
* Available via SOAP v2 only at the moment
|
| 9 |
+
*/
|
| 10 |
+
public function import($orders)
|
| 11 |
+
{
|
| 12 |
+
$this->_fault('invalid_protocol');
|
| 13 |
+
}
|
| 14 |
+
|
| 15 |
+
}
|
app/code/local/CloudConversion/CloudGento/Model/Order/Api/V2.php
ADDED
|
@@ -0,0 +1,163 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
|
| 3 |
+
class CloudConversion_CloudGento_Model_Order_Api_V2 extends Mage_Sales_Model_Order_Api_V2
|
| 4 |
+
{
|
| 5 |
+
|
| 6 |
+
/** @var array $_ordersImported */
|
| 7 |
+
protected $_ordersImported = array();
|
| 8 |
+
|
| 9 |
+
/** @var array $_ordersWithChild orders that have child relations */
|
| 10 |
+
protected $_ordersWithChild = array();
|
| 11 |
+
|
| 12 |
+
/** @var array $_ordersWithParent orders that have parent relation */
|
| 13 |
+
protected $_ordersWithParent = array();
|
| 14 |
+
|
| 15 |
+
/** @var $_orderResource Mage_Sales_Model_Mysql4_Order */
|
| 16 |
+
protected $_orderResource;
|
| 17 |
+
|
| 18 |
+
/** @var array $_fieldsMap */
|
| 19 |
+
protected $_fieldsMap = array();
|
| 20 |
+
|
| 21 |
+
/**
|
| 22 |
+
* Import orders
|
| 23 |
+
*
|
| 24 |
+
* @param array $orders sales orders
|
| 25 |
+
* @param bool $decrementInventory
|
| 26 |
+
* @return bool
|
| 27 |
+
*/
|
| 28 |
+
public function import($orders, $decrementInventory = false)
|
| 29 |
+
{
|
| 30 |
+
Mage::helper('api')->toArray($orders);
|
| 31 |
+
$this->_fieldsMap = array(
|
| 32 |
+
//'forced_shipment_with_invoice' => 'forced_do_shipment_with_invoice',
|
| 33 |
+
//'payment_auth_expiration' => 'payment_authorization_expiration',
|
| 34 |
+
//'base_shipping_hidden_tax_amnt' => 'base_shipping_hidden_tax_amount'
|
| 35 |
+
);
|
| 36 |
+
|
| 37 |
+
if (is_array($orders) && count($orders)) {
|
| 38 |
+
$response = array('status' => 'Success');
|
| 39 |
+
$this->_orderResource = Mage::getResourceModel('sales/order');
|
| 40 |
+
|
| 41 |
+
$fails = 0;
|
| 42 |
+
$warnings = 0;
|
| 43 |
+
foreach ($orders as $order) {
|
| 44 |
+
$this->_mapFieldNames($order);
|
| 45 |
+
try {
|
| 46 |
+
$origOrderId = $order['order_id'];
|
| 47 |
+
if (isset($order['increment_id'])) {
|
| 48 |
+
$origIncrementId = $order['increment_id'];
|
| 49 |
+
if ($this->_orderResource->checkIncrementIdExists($order['increment_id'])) {
|
| 50 |
+
Mage::throwException(sprintf('Order #%s already imported', $order['increment_id']));
|
| 51 |
+
}
|
| 52 |
+
} else {
|
| 53 |
+
$origIncrementId = '';
|
| 54 |
+
$order['increment_id'] = Mage::getSingleton('eav/config')
|
| 55 |
+
->getEntityType('order')
|
| 56 |
+
->fetchNewIncrementId($order['store_id']);
|
| 57 |
+
}
|
| 58 |
+
try {
|
| 59 |
+
$orderId = $this->_orderResource->importOrder($order, $decrementInventory);
|
| 60 |
+
} catch (Exception $e) {
|
| 61 |
+
Mage::logException($e);
|
| 62 |
+
$this->_fault($e->getMessage());
|
| 63 |
+
}
|
| 64 |
+
$this->_ordersImported[$origOrderId] = array(
|
| 65 |
+
'order_id' => $orderId,
|
| 66 |
+
'original_increment_id' => $origIncrementId,
|
| 67 |
+
'imported_increment_id' => $order['increment_id'],
|
| 68 |
+
'warnings' => $this->_orderResource->getImportWarnings($orderId)
|
| 69 |
+
);
|
| 70 |
+
$warnings += count($this->_orderResource->getImportWarnings($orderId));
|
| 71 |
+
|
| 72 |
+
if (!empty($order['relation_child_id'])) {
|
| 73 |
+
$this->_ordersWithChild[$orderId] = $order['relation_child_id'];
|
| 74 |
+
}
|
| 75 |
+
if (!empty($order['relation_parent_id'])) {
|
| 76 |
+
$this->_ordersWithParent[$orderId] = $order['relation_parent_id'];
|
| 77 |
+
}
|
| 78 |
+
Mage::dispatchEvent('cloudconversion_order_import', array('order_id' => $orderId));
|
| 79 |
+
} catch (Exception $e) {
|
| 80 |
+
$this->_ordersImported[$origOrderId] = array(
|
| 81 |
+
'original_increment_id' => $origIncrementId,
|
| 82 |
+
'imported_increment_id' => '',
|
| 83 |
+
'error' => $e->getMessage()
|
| 84 |
+
);
|
| 85 |
+
$fails++;
|
| 86 |
+
}
|
| 87 |
+
}
|
| 88 |
+
|
| 89 |
+
if ($fails > 0) {
|
| 90 |
+
$response['status'] = 'Fail';
|
| 91 |
+
if ($fails < count($orders)) {
|
| 92 |
+
$response['status'] = 'Partial fail';
|
| 93 |
+
}
|
| 94 |
+
} else if ($warnings > 0) {
|
| 95 |
+
$response['status'] = 'Partial fail';
|
| 96 |
+
}
|
| 97 |
+
|
| 98 |
+
// Restore parent/child relations and populate aggregated grid table
|
| 99 |
+
try {
|
| 100 |
+
$this->_restoreRelations();
|
| 101 |
+
|
| 102 |
+
$importedOrderIds = array();
|
| 103 |
+
foreach ($this->_ordersImported as $orderData) {
|
| 104 |
+
if (isset($orderData['order_id'])) {
|
| 105 |
+
$importedOrderIds[] = $orderData['order_id'];
|
| 106 |
+
}
|
| 107 |
+
}
|
| 108 |
+
$this->_orderResource->updateGridRecords($importedOrderIds);
|
| 109 |
+
} catch (Exception $e) {
|
| 110 |
+
$response['status'] = 'Partial Fail';
|
| 111 |
+
}
|
| 112 |
+
|
| 113 |
+
$response['result'] = $this->_ordersImported;
|
| 114 |
+
return $response;
|
| 115 |
+
} else {
|
| 116 |
+
$this->_fault('data_invalid');
|
| 117 |
+
}
|
| 118 |
+
}
|
| 119 |
+
|
| 120 |
+
/**
|
| 121 |
+
* Map field names from newest database structure (Magento CE) to their older aliases (Magento GO)
|
| 122 |
+
*
|
| 123 |
+
* @param array $data
|
| 124 |
+
* @return void
|
| 125 |
+
*/
|
| 126 |
+
protected function _mapFieldNames(&$data)
|
| 127 |
+
{
|
| 128 |
+
foreach ($this->_fieldsMap as $fieldToMap => $alias) {
|
| 129 |
+
$data[$alias] = $data[$fieldToMap];
|
| 130 |
+
unset($data[$fieldToMap]);
|
| 131 |
+
}
|
| 132 |
+
}
|
| 133 |
+
|
| 134 |
+
/**
|
| 135 |
+
* Restore relations between orders
|
| 136 |
+
*/
|
| 137 |
+
protected function _restoreRelations()
|
| 138 |
+
{
|
| 139 |
+
foreach ($this->_ordersWithChild as $orderId => $oldChildOrderId) {
|
| 140 |
+
if (isset($this->_ordersImported[$oldChildOrderId])
|
| 141 |
+
&& !empty($this->_ordersImported[$oldChildOrderId]['imported_increment_id'])) {
|
| 142 |
+
try {
|
| 143 |
+
$this->_orderResource->updateChildRelation($orderId, $this->_ordersImported[$oldChildOrderId]['order_id'], $this->_ordersImported[$oldChildOrderId]['imported_increment_id']);
|
| 144 |
+
} catch (Exception $e) {
|
| 145 |
+
$this->_ordersImported[$oldChildOrderId]['warnings'][] = 'Could not restore order child relation';
|
| 146 |
+
throw $e;
|
| 147 |
+
}
|
| 148 |
+
}
|
| 149 |
+
}
|
| 150 |
+
foreach ($this->_ordersWithParent as $orderId => $oldParentOrderId) {
|
| 151 |
+
if (isset($this->_ordersImported[$oldParentOrderId])
|
| 152 |
+
&& !empty($this->_ordersImported[$oldParentOrderId]['imported_increment_id'])) {
|
| 153 |
+
try {
|
| 154 |
+
$this->_orderResource->updateParentRelation($orderId, $this->_ordersImported[$oldParentOrderId]['order_id'], $this->_ordersImported[$oldParentOrderId]['imported_increment_id']);
|
| 155 |
+
} catch (Exception $e) {
|
| 156 |
+
$this->_ordersImported[$oldParentOrderId]['warnings'][] = 'Could not restore order parent relation';
|
| 157 |
+
throw $e;
|
| 158 |
+
}
|
| 159 |
+
}
|
| 160 |
+
}
|
| 161 |
+
}
|
| 162 |
+
|
| 163 |
+
}
|
app/code/local/CloudConversion/CloudGento/Model/Order/Shipment/Api.php
ADDED
|
@@ -0,0 +1,41 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
|
| 3 |
+
class CloudConversion_CloudGento_Model_Order_Shipment_Api extends Mage_Sales_Model_Order_Shipment_Api
|
| 4 |
+
{
|
| 5 |
+
|
| 6 |
+
public function items($filters = null)
|
| 7 |
+
{
|
| 8 |
+
$shipments = array();
|
| 9 |
+
$shipmentCollection = Mage::getResourceModel('sales/order_shipment_collection')
|
| 10 |
+
->addAttributeToSelect('increment_id')
|
| 11 |
+
->addAttributeToSelect('created_at')
|
| 12 |
+
->addAttributeToSelect('total_qty')
|
| 13 |
+
->addAttributeToSelect('order_id')
|
| 14 |
+
->joinAttribute('shipping_firstname', 'order_address/firstname', 'shipping_address_id', null, 'left')
|
| 15 |
+
->joinAttribute('shipping_lastname', 'order_address/lastname', 'shipping_address_id', null, 'left')
|
| 16 |
+
->joinAttribute('order_increment_id', 'order/increment_id', 'order_id', null, 'left')
|
| 17 |
+
->joinAttribute('order_created_at', 'order/created_at', 'order_id', null, 'left');
|
| 18 |
+
;
|
| 19 |
+
/** @var $apiHelper Mage_Api_Helper_Data */
|
| 20 |
+
$apiHelper = Mage::helper('api');
|
| 21 |
+
try {
|
| 22 |
+
$filters = $apiHelper->parseFilters($filters, $this->_attributesMap['shipment']);
|
| 23 |
+
foreach ($filters as $field => $value) {
|
| 24 |
+
$shipmentCollection->addFieldToFilter($field, $value);
|
| 25 |
+
}
|
| 26 |
+
} catch (Mage_Core_Exception $e) {
|
| 27 |
+
$this->_fault('filters_invalid', $e->getMessage());
|
| 28 |
+
}
|
| 29 |
+
foreach ($shipmentCollection as $shipment) {
|
| 30 |
+
$attributes = $this->_getAttributes($shipment, 'shipment');
|
| 31 |
+
$order = $shipment->getOrder();
|
| 32 |
+
$attributes['order_increment_id'] = $order->getIncrementId();
|
| 33 |
+
$attributes['shipping_description'] = $order->getShippingDescription();
|
| 34 |
+
$shipments[] = $attributes;
|
| 35 |
+
}
|
| 36 |
+
|
| 37 |
+
return $shipments;
|
| 38 |
+
}
|
| 39 |
+
|
| 40 |
+
}
|
| 41 |
+
|
app/code/local/CloudConversion/CloudGento/Model/Order/Shipment/Api/V2.php
ADDED
|
@@ -0,0 +1,6 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
|
| 3 |
+
class CloudConversion_CloudGento_Model_Order_Shipment_Api_V2 extends CloudConversion_CloudGento_Model_Order_Shipment_Api
|
| 4 |
+
{
|
| 5 |
+
|
| 6 |
+
}
|
app/code/local/CloudConversion/CloudGento/Model/Resource/Message.php
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
|
| 3 |
+
class CloudConversion_CloudGento_Model_Resource_Message extends Mage_GiftMessage_Model_Resource_Message
|
| 4 |
+
{
|
| 5 |
+
|
| 6 |
+
/**
|
| 7 |
+
* Import gift message
|
| 8 |
+
*
|
| 9 |
+
* @param array $data columns to import
|
| 10 |
+
* @return inserted id
|
| 11 |
+
*/
|
| 12 |
+
public function import($data)
|
| 13 |
+
{
|
| 14 |
+
$write = $this->_getWriteAdapter();
|
| 15 |
+
$write->insertArray($this->getMainTable(), array_keys($data), array($data));
|
| 16 |
+
return $write->lastInsertId();
|
| 17 |
+
}
|
| 18 |
+
|
| 19 |
+
}
|
app/code/local/CloudConversion/CloudGento/Model/Resource/Order.php
ADDED
|
@@ -0,0 +1,432 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
|
| 3 |
+
class CloudConversion_CloudGento_Model_Resource_Order extends Mage_Sales_Model_Resource_Order
|
| 4 |
+
{
|
| 5 |
+
|
| 6 |
+
/** @var array $_importedItems */
|
| 7 |
+
protected $_importedItems = array();
|
| 8 |
+
|
| 9 |
+
/** @var array $_itemsWithParent order items that have parent items */
|
| 10 |
+
protected $_itemsWithParent = array();
|
| 11 |
+
|
| 12 |
+
/** @var array $_importWarnings */
|
| 13 |
+
protected $_importWarnings = array();
|
| 14 |
+
|
| 15 |
+
/** @var array $_productTypes */
|
| 16 |
+
protected $_productTypes = array();
|
| 17 |
+
|
| 18 |
+
public function import($data)
|
| 19 |
+
{
|
| 20 |
+
$write = $this->_getWriteAdapter();
|
| 21 |
+
$write->insertArray($this->getMainTable(), array_keys($data), array($data));
|
| 22 |
+
return $write->lastInsertId();
|
| 23 |
+
}
|
| 24 |
+
|
| 25 |
+
/**
|
| 26 |
+
* Update shipping address relation
|
| 27 |
+
*
|
| 28 |
+
* @param int $orderId
|
| 29 |
+
* @param int $addressId
|
| 30 |
+
* @return void
|
| 31 |
+
*/
|
| 32 |
+
public function updateShippingAddressId($orderId, $addressId)
|
| 33 |
+
{
|
| 34 |
+
$write = $this->_getWriteAdapter();
|
| 35 |
+
$write->update($this->getMainTable(), array('shipping_address_id' => $addressId), array('entity_id = ? ' => $orderId));
|
| 36 |
+
}
|
| 37 |
+
|
| 38 |
+
/**
|
| 39 |
+
* Update billing address relation
|
| 40 |
+
*
|
| 41 |
+
* @param int $orderId
|
| 42 |
+
* @param int $addressId
|
| 43 |
+
* @return void
|
| 44 |
+
*/
|
| 45 |
+
public function updateBillingAddressId($orderId, $addressId)
|
| 46 |
+
{
|
| 47 |
+
$write = $this->_getWriteAdapter();
|
| 48 |
+
$write->update($this->getMainTable(), array('billing_address_id' => $addressId), array('entity_id = ? ' => $orderId));
|
| 49 |
+
}
|
| 50 |
+
|
| 51 |
+
/**
|
| 52 |
+
* @param int $orderId
|
| 53 |
+
* @param int $childOrderId
|
| 54 |
+
* @param string $childOrderIncrementId
|
| 55 |
+
* @return void
|
| 56 |
+
*/
|
| 57 |
+
public function updateChildRelation($orderId, $childOrderId, $childOrderIncrementId)
|
| 58 |
+
{
|
| 59 |
+
$write = $this->_getWriteAdapter();
|
| 60 |
+
$write->update($this->getMainTable(), array('relation_child_id' => $childOrderId, 'relation_child_real_id' => $childOrderIncrementId), array('entity_id = ? ' => $orderId));
|
| 61 |
+
}
|
| 62 |
+
|
| 63 |
+
/**
|
| 64 |
+
* @param int $orderId
|
| 65 |
+
* @param int $parentOrderId
|
| 66 |
+
* @param string $parentOrderIncrementId
|
| 67 |
+
* @return void
|
| 68 |
+
*/
|
| 69 |
+
public function updateParentRelation($orderId, $parentOrderId, $parentOrderIncrementId)
|
| 70 |
+
{
|
| 71 |
+
$write = $this->_getWriteAdapter();
|
| 72 |
+
$write->update($this->getMainTable(), array('relation_parent_id' => $parentOrderId, 'relation_parent_real_id' => $parentOrderIncrementId), array('entity_id = ? ' => $orderId));
|
| 73 |
+
}
|
| 74 |
+
|
| 75 |
+
/**
|
| 76 |
+
* Check if order with given increment id already exists
|
| 77 |
+
*
|
| 78 |
+
* @param int $incrementId
|
| 79 |
+
* @return bool
|
| 80 |
+
*/
|
| 81 |
+
public function checkIncrementIdExists($incrementId)
|
| 82 |
+
{
|
| 83 |
+
$adapter = $this->getReadConnection();
|
| 84 |
+
$select = $adapter->select()
|
| 85 |
+
->from($this->getMainTable(), array("increment_id"))
|
| 86 |
+
->where('increment_id = ?', $incrementId);
|
| 87 |
+
if ($adapter->fetchOne($select)) {
|
| 88 |
+
return true;
|
| 89 |
+
}
|
| 90 |
+
return false;
|
| 91 |
+
}
|
| 92 |
+
|
| 93 |
+
/**
|
| 94 |
+
* Import order in transaction
|
| 95 |
+
*
|
| 96 |
+
* @throws Exception
|
| 97 |
+
* @param array $order
|
| 98 |
+
* @return int
|
| 99 |
+
*/
|
| 100 |
+
public function importOrder($order, $decrementInventory = false)
|
| 101 |
+
{
|
| 102 |
+
$store = Mage::app()->getDefaultStoreView();
|
| 103 |
+
/** @var $customer Mage_Customer_Model_Customer */
|
| 104 |
+
$customer = Mage::getModel('customer/customer')
|
| 105 |
+
->setWebsiteId($store->getWebsiteId())
|
| 106 |
+
->loadByEmail($order['customer_email']);
|
| 107 |
+
|
| 108 |
+
$order['customer_id'] = $customer->getId();
|
| 109 |
+
$origStoreId = $order['store_id'];
|
| 110 |
+
$order['store_id'] = (!isset($order['store_id']) || $order['store_id'] == 0) ? $store->getId() : $order['store_id'];
|
| 111 |
+
$order['quote_id'] = null;
|
| 112 |
+
|
| 113 |
+
// Try to associate customer group
|
| 114 |
+
$groupModel = Mage::getModel('customer/group');
|
| 115 |
+
$groupModel->load($order['customer_group_code'], 'customer_group_code');
|
| 116 |
+
if ($groupModel->getId()) {
|
| 117 |
+
$order['customer_group_id'] = $groupModel->getId();
|
| 118 |
+
} else {
|
| 119 |
+
$order['customer_group_id'] = -1;
|
| 120 |
+
}
|
| 121 |
+
unset($order['customer_group_code']);
|
| 122 |
+
// Try to associate customer gender
|
| 123 |
+
$order['customer_gender'] = $this->_associateCustomerGender($order['customer_gender_value']);
|
| 124 |
+
unset($order['customer_gender_value']);
|
| 125 |
+
|
| 126 |
+
// If order has custom status - set default status of order state and give warning
|
| 127 |
+
$newStatus = null;
|
| 128 |
+
$oldStatus = null;
|
| 129 |
+
if (!in_array($order['status'], array_keys(Mage::getSingleton('sales/order_config')->getStatuses()))) {
|
| 130 |
+
$newStatus = Mage::getSingleton('sales/order_config')->getStateDefaultStatus($order['state']);
|
| 131 |
+
$oldStatus = $order['status'];
|
| 132 |
+
$order['status'] = $newStatus;
|
| 133 |
+
}
|
| 134 |
+
|
| 135 |
+
$addressData = $order['address'];
|
| 136 |
+
$itemsData = $order['items'];
|
| 137 |
+
$paymentData = $order['payment'];
|
| 138 |
+
$historyData = $order['history'];
|
| 139 |
+
unset($order['address']);
|
| 140 |
+
unset($order['items']);
|
| 141 |
+
unset($order['payment']);
|
| 142 |
+
unset($order['history']);
|
| 143 |
+
unset($order['order_id']);
|
| 144 |
+
|
| 145 |
+
$this->beginTransaction();
|
| 146 |
+
try {
|
| 147 |
+
$this->_importGiftMessage($order);
|
| 148 |
+
$orderId = $this->import($order);
|
| 149 |
+
// todo dispatch the event that updates stats if it exists
|
| 150 |
+
// $orderObject = Mage::getModel('sales/order')->load($orderId);
|
| 151 |
+
// $quoteObject = Mage::getModel('sales/quote')->load($order['quote_id']);
|
| 152 |
+
//Mage::log(var_export($orderObject, true));
|
| 153 |
+
// Mage::dispatchEvent(
|
| 154 |
+
// 'checkout_submit_all_after',
|
| 155 |
+
// array('order' => $orderObject, 'quote' => $quoteObject)
|
| 156 |
+
//);
|
| 157 |
+
if ($newStatus) {
|
| 158 |
+
$this->addImportWarning($orderId, sprintf('Custom status "%s" was not found. Default status "%s" was set instead.', $oldStatus, Mage::getSingleton('sales/order_config')->getStatusLabel($newStatus)));
|
| 159 |
+
}
|
| 160 |
+
|
| 161 |
+
if (!$customer->getId()) {
|
| 162 |
+
$this->addImportWarning($orderId, sprintf('Customer with email "%s" was not found', $order['customer_email']));
|
| 163 |
+
}
|
| 164 |
+
|
| 165 |
+
$this->_importAddress($orderId, $addressData, $customer->getId());
|
| 166 |
+
$this->_importItems($orderId, $itemsData, $order['state'], $store->getId(), $decrementInventory);
|
| 167 |
+
$this->_restoreItemsRelations();
|
| 168 |
+
$this->_importPayments($orderId, $paymentData);
|
| 169 |
+
$this->_importHistory($orderId, $historyData);
|
| 170 |
+
|
| 171 |
+
// Increase or create last_increment_id
|
| 172 |
+
$storeModel = Mage::getModel('core/store')->load($origStoreId);
|
| 173 |
+
if ($storeModel->getId() && is_numeric($order['increment_id'])) {
|
| 174 |
+
$entityType = Mage::getSingleton('eav/config')->getEntityType('order')->getId();
|
| 175 |
+
$entityStoreConfig = Mage::getModel('eav/entity_store')->loadByEntityStore($entityType, $origStoreId);
|
| 176 |
+
if (!$entityStoreConfig->getId()) {
|
| 177 |
+
$entityStoreConfig
|
| 178 |
+
->setEntityTypeId($entityType)
|
| 179 |
+
->setStoreId($origStoreId)
|
| 180 |
+
->setIncrementPrefix($origStoreId)
|
| 181 |
+
->setIncrementLastId($order['increment_id'])
|
| 182 |
+
->save();
|
| 183 |
+
} else if ($entityStoreConfig->getIncrementLastId() < $order['increment_id']) {
|
| 184 |
+
$entityStoreConfig->setIncrementLastId($order['increment_id']);
|
| 185 |
+
$entityStoreConfig->save();
|
| 186 |
+
}
|
| 187 |
+
}
|
| 188 |
+
|
| 189 |
+
$this->commit();
|
| 190 |
+
} catch (Exception $e) {
|
| 191 |
+
$this->rollBack();
|
| 192 |
+
throw $e;
|
| 193 |
+
}
|
| 194 |
+
return $orderId;
|
| 195 |
+
}
|
| 196 |
+
|
| 197 |
+
/**
|
| 198 |
+
* Try to associate customer gender attribute from CE
|
| 199 |
+
*
|
| 200 |
+
* @param string $value text value of gender attribute
|
| 201 |
+
* @return null
|
| 202 |
+
*/
|
| 203 |
+
protected function _associateCustomerGender($value)
|
| 204 |
+
{
|
| 205 |
+
/** @var $attribute Mage_Eav_Model_Entity_Attribute */
|
| 206 |
+
$attribute = Mage::getModel('eav/entity_attribute')
|
| 207 |
+
->loadByCode('customer', 'gender');
|
| 208 |
+
$optionId = null;
|
| 209 |
+
if ($attribute->getId()) {
|
| 210 |
+
$optionId = $attribute->getSource()->getOptionId($value);
|
| 211 |
+
}
|
| 212 |
+
|
| 213 |
+
return $optionId;
|
| 214 |
+
}
|
| 215 |
+
|
| 216 |
+
/**
|
| 217 |
+
* Import gift message for order or order item
|
| 218 |
+
*
|
| 219 |
+
* @param array $data
|
| 220 |
+
*/
|
| 221 |
+
protected function _importGiftMessage(&$data)
|
| 222 |
+
{
|
| 223 |
+
if ($data['gift_message_id']) {
|
| 224 |
+
$giftMessage = array(
|
| 225 |
+
'customer_id' => (int) (isset($data['customer_id']) ? $data['customer_id'] : null),
|
| 226 |
+
'sender' => $data['gift_sender'],
|
| 227 |
+
'recipient' => $data['gift_recipient'],
|
| 228 |
+
'message' => $data['gift_message']
|
| 229 |
+
);
|
| 230 |
+
try {
|
| 231 |
+
$giftMessageId = Mage::getResourceModel('giftmessage/message')->import($giftMessage);
|
| 232 |
+
$data['gift_message_id'] = $giftMessageId;
|
| 233 |
+
} catch (Exception $e) {
|
| 234 |
+
Mage::logException($e);
|
| 235 |
+
}
|
| 236 |
+
}
|
| 237 |
+
unset($data['gift_sender']);
|
| 238 |
+
unset($data['gift_recipient']);
|
| 239 |
+
unset($data['gift_message']);
|
| 240 |
+
}
|
| 241 |
+
|
| 242 |
+
/**
|
| 243 |
+
* Import address data to order
|
| 244 |
+
*
|
| 245 |
+
* @param $orderId
|
| 246 |
+
* @param $data
|
| 247 |
+
* @param int $customerId
|
| 248 |
+
*/
|
| 249 |
+
protected function _importAddress($orderId, $data, $customerId)
|
| 250 |
+
{
|
| 251 |
+
/** @var $addressResource Mage_Sales_Model_Mysql4_Order_Address */
|
| 252 |
+
$addressResource = Mage::getResourceModel('sales/order_address');
|
| 253 |
+
foreach ($data as $address) {
|
| 254 |
+
$address['parent_id'] = $orderId;
|
| 255 |
+
$address['quote_address_id'] = null;
|
| 256 |
+
$address['customer_address_id'] = null;
|
| 257 |
+
$address['customer_id'] = $customerId;
|
| 258 |
+
$addressId = $addressResource->import($address);
|
| 259 |
+
if ($address['address_type'] == 'billing') {
|
| 260 |
+
$this->updateBillingAddressId($orderId, $addressId);
|
| 261 |
+
} else {
|
| 262 |
+
$this->updateShippingAddressId($orderId, $addressId);
|
| 263 |
+
}
|
| 264 |
+
}
|
| 265 |
+
}
|
| 266 |
+
|
| 267 |
+
/**
|
| 268 |
+
* Import order products
|
| 269 |
+
*
|
| 270 |
+
* @param $orderId
|
| 271 |
+
* @param $data
|
| 272 |
+
* @param string $orderState
|
| 273 |
+
* @param int $storeId
|
| 274 |
+
*/
|
| 275 |
+
protected function _importItems($orderId, $data, $orderState, $storeId, $decrementInventory = false)
|
| 276 |
+
{
|
| 277 |
+
/** @var $itemResource Mage_Sales_Model_Mysql4_Order_Item */
|
| 278 |
+
$itemResource = Mage::getResourceModel('sales/order_item');
|
| 279 |
+
foreach ($data as $item) {
|
| 280 |
+
if (!in_array($item['product_type'], $this->_getProductTypes()) && $orderState != 'closed'
|
| 281 |
+
&& $orderState != 'canceled') {
|
| 282 |
+
Mage::throwException('Can not import order because it contains items with unknown product type.');
|
| 283 |
+
}
|
| 284 |
+
|
| 285 |
+
$item['order_id'] = $orderId;
|
| 286 |
+
$item['store_id'] = $storeId;
|
| 287 |
+
$item['quote_item_id'] = null;
|
| 288 |
+
$product = $itemResource->getProductIdBySku($item['sku'], $item['product_type']);
|
| 289 |
+
$productModel = Mage::getModel('catalog/product')->load($product['entity_id']);
|
| 290 |
+
if ($product) {
|
| 291 |
+
$item['product_id'] = $product['entity_id'];
|
| 292 |
+
$item['weight'] = $productModel->getWeight() * $item['qty_ordered'];
|
| 293 |
+
} else {
|
| 294 |
+
$item['product_id'] = null;
|
| 295 |
+
// $this->addImportWarning($orderId, sprintf('Product with SKU "%s" was not found', $item['sku']));
|
| 296 |
+
throw new Mage_Api_Exception('SKU does not exist');
|
| 297 |
+
}
|
| 298 |
+
$origItemId = $item['item_id'];
|
| 299 |
+
unset($item['item_id']);
|
| 300 |
+
unset($item['base_weee_tax_applied_row_amnt']);
|
| 301 |
+
|
| 302 |
+
// Try to import gift message
|
| 303 |
+
$this->_importGiftMessage($item);
|
| 304 |
+
$itemId = $itemResource->import($item);
|
| 305 |
+
$this->_importedItems[$origItemId] = $itemId;
|
| 306 |
+
if ($decrementInventory)
|
| 307 |
+
$this->_updateInventory($item['product_id'], $item['qty_ordered'], $orderId, $item['sku']);
|
| 308 |
+
if (!empty($item['parent_item_id'])) {
|
| 309 |
+
$this->_itemsWithParent[$itemId] = $item['parent_item_id'];
|
| 310 |
+
}
|
| 311 |
+
}
|
| 312 |
+
}
|
| 313 |
+
|
| 314 |
+
/**
|
| 315 |
+
* Restore relations between order items
|
| 316 |
+
*/
|
| 317 |
+
protected function _restoreItemsRelations()
|
| 318 |
+
{
|
| 319 |
+
foreach ($this->_itemsWithParent as $itemId => $oldItemId) {
|
| 320 |
+
if (isset($this->_importedItems[$oldItemId])) {
|
| 321 |
+
try {
|
| 322 |
+
Mage::getResourceModel('sales/order_item')->updateParentRelation($itemId, $this->_importedItems[$oldItemId]);
|
| 323 |
+
} catch (Exception $e) {
|
| 324 |
+
Mage::logException($e);
|
| 325 |
+
}
|
| 326 |
+
}
|
| 327 |
+
}
|
| 328 |
+
}
|
| 329 |
+
|
| 330 |
+
/**
|
| 331 |
+
* Get available product types
|
| 332 |
+
*
|
| 333 |
+
* @return array
|
| 334 |
+
*/
|
| 335 |
+
protected function _getProductTypes()
|
| 336 |
+
{
|
| 337 |
+
if (!count($this->_productTypes)) {
|
| 338 |
+
$productTypeCollection = Mage::getModel('catalog/product_type')
|
| 339 |
+
->getOptionArray();
|
| 340 |
+
|
| 341 |
+
foreach ($productTypeCollection as $id => $type) {
|
| 342 |
+
$this->_productTypes[] = $id;
|
| 343 |
+
}
|
| 344 |
+
}
|
| 345 |
+
|
| 346 |
+
return $this->_productTypes;
|
| 347 |
+
}
|
| 348 |
+
|
| 349 |
+
/**
|
| 350 |
+
* Import order payments
|
| 351 |
+
*
|
| 352 |
+
* @param $orderId
|
| 353 |
+
* @param $data
|
| 354 |
+
*/
|
| 355 |
+
protected function _importPayments($orderId, $data)
|
| 356 |
+
{
|
| 357 |
+
/** @var $paymentResource Mage_Sales_Model_Mysql4_Order_Payment */
|
| 358 |
+
$paymentResource = Mage::getResourceModel('sales/order_payment');
|
| 359 |
+
foreach ($data as $payment) {
|
| 360 |
+
$payment['parent_id'] = $orderId;
|
| 361 |
+
$payment['cc_number_enc'] = null;
|
| 362 |
+
$paymentResource->import($payment);
|
| 363 |
+
}
|
| 364 |
+
}
|
| 365 |
+
|
| 366 |
+
/**
|
| 367 |
+
* Import order status history
|
| 368 |
+
*
|
| 369 |
+
* @param $orderId
|
| 370 |
+
* @param $data
|
| 371 |
+
*/
|
| 372 |
+
protected function _importHistory($orderId, $data)
|
| 373 |
+
{
|
| 374 |
+
/** @var $historyResource Mage_Sales_Model_Mysql4_Order_Status_History */
|
| 375 |
+
$historyResource = Mage::getResourceModel('sales/order_status_history');
|
| 376 |
+
foreach ($data as $history) {
|
| 377 |
+
$history['parent_id'] = $orderId;
|
| 378 |
+
unset($history['entity_name']);
|
| 379 |
+
$historyResource->import($history);
|
| 380 |
+
}
|
| 381 |
+
}
|
| 382 |
+
|
| 383 |
+
/**
|
| 384 |
+
* Add warning message to imported order
|
| 385 |
+
*
|
| 386 |
+
* @param int $orderId
|
| 387 |
+
* @param string $message
|
| 388 |
+
* @return void
|
| 389 |
+
*/
|
| 390 |
+
protected function addImportWarning($orderId, $message)
|
| 391 |
+
{
|
| 392 |
+
$this->_importWarnings[$orderId][] = $message;
|
| 393 |
+
}
|
| 394 |
+
|
| 395 |
+
/**
|
| 396 |
+
* Get warnings for imported order
|
| 397 |
+
*
|
| 398 |
+
* @param $orderId
|
| 399 |
+
* @return array
|
| 400 |
+
*/
|
| 401 |
+
public function getImportWarnings($orderId)
|
| 402 |
+
{
|
| 403 |
+
$result = array();
|
| 404 |
+
if (isset($this->_importWarnings[$orderId])) {
|
| 405 |
+
$result = $this->_importWarnings[$orderId];
|
| 406 |
+
}
|
| 407 |
+
return $result;
|
| 408 |
+
}
|
| 409 |
+
|
| 410 |
+
/**
|
| 411 |
+
* Subtract quantity ordered for inventory
|
| 412 |
+
* @param type $itemId
|
| 413 |
+
* @param type $qtyOrdered
|
| 414 |
+
* @param string $orderId
|
| 415 |
+
*/
|
| 416 |
+
private function _updateInventory($itemId, $qtyOrdered, $orderId, $sku)
|
| 417 |
+
{
|
| 418 |
+
$stockItem = Mage::getModel('cataloginventory/stock_item')->loadByProduct($itemId);
|
| 419 |
+
if ($stockItem->verifyStock()) {
|
| 420 |
+
$stockItem->subtractQty($qtyOrdered);
|
| 421 |
+
if ($stockItem->getQty() < 0) {
|
| 422 |
+
$this->addImportWarning($orderId, "Product $sku is backordered");
|
| 423 |
+
}
|
| 424 |
+
$stockItem->save();
|
| 425 |
+
}
|
| 426 |
+
else {
|
| 427 |
+
throw new Exception("Product $sku can't be backordered");
|
| 428 |
+
}
|
| 429 |
+
|
| 430 |
+
}
|
| 431 |
+
|
| 432 |
+
}
|
app/code/local/CloudConversion/CloudGento/Model/Resource/Order/Address.php
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
|
| 3 |
+
class CloudConversion_CloudGento_Model_Resource_Order_Address extends Mage_Sales_Model_Resource_Order_Address
|
| 4 |
+
{
|
| 5 |
+
public function import($data)
|
| 6 |
+
{
|
| 7 |
+
$write = $this->_getWriteAdapter();
|
| 8 |
+
$region = Mage::getModel('directory/region')->getCollection()->addFieldToFilter('code', $data['region'])->getFirstItem();
|
| 9 |
+
if($region->getRegionId()) {
|
| 10 |
+
$data['region'] = $region->getDefaultName();
|
| 11 |
+
}
|
| 12 |
+
$write->insertArray($this->getMainTable(), array_keys($data), array($data));
|
| 13 |
+
return $write->lastInsertId();
|
| 14 |
+
}
|
| 15 |
+
}
|
app/code/local/CloudConversion/CloudGento/Model/Resource/Order/Item.php
ADDED
|
@@ -0,0 +1,43 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
|
| 3 |
+
class CloudConversion_CloudGento_Model_Resource_Order_Item extends Mage_Sales_Model_Resource_Order_Item
|
| 4 |
+
{
|
| 5 |
+
public function import($data)
|
| 6 |
+
{
|
| 7 |
+
$write = $this->_getWriteAdapter();
|
| 8 |
+
$write->insertArray($this->getMainTable(), array_keys($data), array($data));
|
| 9 |
+
return $write->lastInsertId();
|
| 10 |
+
}
|
| 11 |
+
|
| 12 |
+
/**
|
| 13 |
+
* Load product id by sku and product type
|
| 14 |
+
*
|
| 15 |
+
* @param $sku
|
| 16 |
+
* @param $productType
|
| 17 |
+
* @return array
|
| 18 |
+
*/
|
| 19 |
+
public function getProductIdBySku($sku, $productType)
|
| 20 |
+
{
|
| 21 |
+
$read = $this->_getReadAdapter();
|
| 22 |
+
$select = $read->select()
|
| 23 |
+
->from($this->getTable('catalog/product'), 'entity_id')
|
| 24 |
+
->where('sku = ?', $sku)
|
| 25 |
+
->where('type_id = ?', $productType);
|
| 26 |
+
|
| 27 |
+
return $read->fetchRow($select);
|
| 28 |
+
}
|
| 29 |
+
|
| 30 |
+
/**
|
| 31 |
+
* Update relations between order items
|
| 32 |
+
*
|
| 33 |
+
* @param int $itemId
|
| 34 |
+
* @param int $parentItemId
|
| 35 |
+
* @return void
|
| 36 |
+
*/
|
| 37 |
+
public function updateParentRelation($itemId, $parentItemId)
|
| 38 |
+
{
|
| 39 |
+
$write = $this->_getWriteAdapter();
|
| 40 |
+
$write->update($this->getMainTable(), array('parent_item_id' => $parentItemId), array('item_id = ? ' => $itemId));
|
| 41 |
+
}
|
| 42 |
+
|
| 43 |
+
}
|
app/code/local/CloudConversion/CloudGento/Model/Resource/Order/Payment.php
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
|
| 3 |
+
class CloudConversion_CloudGento_Model_Resource_Order_Payment extends Mage_Sales_Model_Resource_Order_Payment
|
| 4 |
+
{
|
| 5 |
+
public function import($data)
|
| 6 |
+
{
|
| 7 |
+
$write = $this->_getWriteAdapter();
|
| 8 |
+
$write->insertArray($this->getMainTable(), array_keys($data), array($data));
|
| 9 |
+
return $write->lastInsertId();
|
| 10 |
+
}
|
| 11 |
+
}
|
app/code/local/CloudConversion/CloudGento/Model/Resource/Order/Status/History.php
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
|
| 3 |
+
class CloudConversion_CloudGento_Model_Resource_Order_Status_History extends Mage_Sales_Model_Resource_Order_Status_History
|
| 4 |
+
{
|
| 5 |
+
public function import($data)
|
| 6 |
+
{
|
| 7 |
+
$write = $this->_getWriteAdapter();
|
| 8 |
+
$write->insertArray($this->getMainTable(), array_keys($data), array($data));
|
| 9 |
+
return $write->lastInsertId();
|
| 10 |
+
}
|
| 11 |
+
}
|
app/code/local/CloudConversion/CloudGento/etc/api.xml
ADDED
|
@@ -0,0 +1,41 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?xml version="1.0" encoding="UTF-8"?>
|
| 2 |
+
<config>
|
| 3 |
+
<api>
|
| 4 |
+
<resources>
|
| 5 |
+
<sales_order translate="title" module="sales">
|
| 6 |
+
<methods>
|
| 7 |
+
<import translate="title" module="sales">
|
| 8 |
+
<title>Import orders</title>
|
| 9 |
+
<acl>sales/order/import</acl>
|
| 10 |
+
</import>
|
| 11 |
+
</methods>
|
| 12 |
+
<faults module="sales">
|
| 13 |
+
<import_failed>
|
| 14 |
+
<code>105</code>
|
| 15 |
+
<message>Import failed.</message>
|
| 16 |
+
</import_failed>
|
| 17 |
+
<invalid_protocol>
|
| 18 |
+
<code>106</code>
|
| 19 |
+
<message>This operation available through SOAP v2 only.</message>
|
| 20 |
+
</invalid_protocol>
|
| 21 |
+
<unexisting_sku>
|
| 22 |
+
<code>107</code>
|
| 23 |
+
<message>Unexisting sku</message>
|
| 24 |
+
</unexisting_sku>
|
| 25 |
+
</faults>
|
| 26 |
+
</sales_order>
|
| 27 |
+
</resources>
|
| 28 |
+
<acl>
|
| 29 |
+
<resources>
|
| 30 |
+
<sales translate="title" module="sales">
|
| 31 |
+
<order translate="title" module="sales">
|
| 32 |
+
<import translate="title" module="sales">
|
| 33 |
+
<title>Import orders</title>
|
| 34 |
+
</import>
|
| 35 |
+
</order>
|
| 36 |
+
</sales>
|
| 37 |
+
</resources>
|
| 38 |
+
</acl>
|
| 39 |
+
</api>
|
| 40 |
+
</config>
|
| 41 |
+
|
app/code/local/CloudConversion/CloudGento/etc/config.xml
ADDED
|
@@ -0,0 +1,90 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?xml version="1.0" encoding="UTF-8"?>
|
| 2 |
+
<config>
|
| 3 |
+
<modules>
|
| 4 |
+
<CloudConversion_CloudGento>
|
| 5 |
+
<version>0.1.0</version>
|
| 6 |
+
</CloudConversion_CloudGento>
|
| 7 |
+
</modules>
|
| 8 |
+
<global>
|
| 9 |
+
<models>
|
| 10 |
+
<cloudconversion>
|
| 11 |
+
<class>CloudConversion_CloudGento_Model</class>
|
| 12 |
+
</cloudconversion>
|
| 13 |
+
<catalog>
|
| 14 |
+
<rewrite>
|
| 15 |
+
<product_api>CloudConversion_CloudGento_Model_Catalog_Product_Api</product_api>
|
| 16 |
+
<product_api_v2>CloudConversion_CloudGento_Model_Catalog_Product_Api_V2</product_api_v2>
|
| 17 |
+
</rewrite>
|
| 18 |
+
</catalog>
|
| 19 |
+
<sales>
|
| 20 |
+
<rewrite>
|
| 21 |
+
<order_api>CloudConversion_CloudGento_Model_Order_Api</order_api>
|
| 22 |
+
<order_api_v2>CloudConversion_CloudGento_Model_Order_Api_V2</order_api_v2>
|
| 23 |
+
<order_shipment_api>CloudConversion_CloudGento_Model_Order_Shipment_Api</order_shipment_api>
|
| 24 |
+
<order_shipment_api_v2>CloudConversion_CloudGento_Model_Order_Shipment_Api_V2</order_shipment_api_v2>
|
| 25 |
+
</rewrite>
|
| 26 |
+
</sales>
|
| 27 |
+
<sales_resource>
|
| 28 |
+
<rewrite>
|
| 29 |
+
<order>CloudConversion_CloudGento_Model_Resource_Order</order>
|
| 30 |
+
<order_item>CloudConversion_CloudGento_Model_Resource_Order_Item</order_item>
|
| 31 |
+
<order_address>CloudConversion_CloudGento_Model_Resource_Order_Address</order_address>
|
| 32 |
+
<order_payment>CloudConversion_CloudGento_Model_Resource_Order_Payment</order_payment>
|
| 33 |
+
<order_status_history>CloudConversion_CloudGento_Model_Resource_Order_Status_History</order_status_history>
|
| 34 |
+
</rewrite>
|
| 35 |
+
</sales_resource>
|
| 36 |
+
<giftmessage_resource>
|
| 37 |
+
<rewrite>
|
| 38 |
+
<message>CloudConversion_CloudGento_Model_Resource_Message</message>
|
| 39 |
+
</rewrite>
|
| 40 |
+
</giftmessage_resource>
|
| 41 |
+
</models>
|
| 42 |
+
|
| 43 |
+
<blocks>
|
| 44 |
+
<cloudconversion>
|
| 45 |
+
<class>CloudConversion_CloudGento_Block</class>
|
| 46 |
+
</cloudconversion>
|
| 47 |
+
</blocks>
|
| 48 |
+
|
| 49 |
+
<helpers>
|
| 50 |
+
<cloudconversion>
|
| 51 |
+
<class>CloudConversion_CloudGento_Helper</class>
|
| 52 |
+
</cloudconversion>
|
| 53 |
+
</helpers>
|
| 54 |
+
|
| 55 |
+
<resources>
|
| 56 |
+
<cloudconversion_write>
|
| 57 |
+
<connection>
|
| 58 |
+
<use>core_write</use>
|
| 59 |
+
</connection>
|
| 60 |
+
</cloudconversion_write>
|
| 61 |
+
<cloudconversion_read>
|
| 62 |
+
<connection>
|
| 63 |
+
<use>core_read</use>
|
| 64 |
+
</connection>
|
| 65 |
+
</cloudconversion_read>
|
| 66 |
+
</resources>
|
| 67 |
+
</global>
|
| 68 |
+
<admin>
|
| 69 |
+
<routers>
|
| 70 |
+
<cloudconversion>
|
| 71 |
+
<use>admin</use>
|
| 72 |
+
<args>
|
| 73 |
+
<module>CloudConversion_CloudGento</module>
|
| 74 |
+
<frontName>cloudconversion</frontName>
|
| 75 |
+
</args>
|
| 76 |
+
</cloudconversion>
|
| 77 |
+
</routers>
|
| 78 |
+
</admin>
|
| 79 |
+
<frontend>
|
| 80 |
+
<routers>
|
| 81 |
+
<cloudconversion>
|
| 82 |
+
<use>standard</use>
|
| 83 |
+
<args>
|
| 84 |
+
<module>CloudConversion_CloudGento</module>
|
| 85 |
+
<frontName>cloudconversion</frontName>
|
| 86 |
+
</args>
|
| 87 |
+
</cloudconversion>
|
| 88 |
+
</routers>
|
| 89 |
+
</frontend>
|
| 90 |
+
</config>
|
app/code/local/CloudConversion/CloudGento/etc/wsdl.xml
ADDED
|
@@ -0,0 +1,500 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?xml version="1.0" encoding="UTF-8"?>
|
| 2 |
+
<definitions xmlns:typens="urn:{{var wsdl.name}}" xmlns:xsd="http://www.w3.org/2001/XMLSchema"
|
| 3 |
+
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
|
| 4 |
+
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
|
| 5 |
+
xmlns="http://schemas.xmlsoap.org/wsdl/"
|
| 6 |
+
name="{{var wsdl.name}}" targetNamespace="urn:{{var wsdl.name}}">
|
| 7 |
+
<types>
|
| 8 |
+
<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="urn:Magento">
|
| 9 |
+
<complexType name="catalogProductCreateEntity">
|
| 10 |
+
<all>
|
| 11 |
+
<element name="associated_skus" type="typens:ArrayOfString" minOccurs="0"/>
|
| 12 |
+
<element name="price_changes" type="typens:associativeArray" minOccurs="0" />
|
| 13 |
+
</all>
|
| 14 |
+
</complexType>
|
| 15 |
+
<complexType name="catalogProductEntity">
|
| 16 |
+
<all>
|
| 17 |
+
<element name="price" type="xsd:double"/>
|
| 18 |
+
<element name="available_quantity" type="xsd:int"/>
|
| 19 |
+
</all>
|
| 20 |
+
</complexType>
|
| 21 |
+
|
| 22 |
+
<complexType name="catalogProductReturnEntity">
|
| 23 |
+
<all>
|
| 24 |
+
<element name="parent_sku" type="xsd:string" minOccurs="0"/>
|
| 25 |
+
<element name="url_complete" type="xsd:string" minOccurs="0"/>
|
| 26 |
+
<element name="configurable_products_data" type="typens:childrenEntityArray" minOccurs="0"/>
|
| 27 |
+
<element name="configurable_attributes_data" type="typens:configurableOptionsEntityArray" minOccurs="0"/>
|
| 28 |
+
<element name="stock_data" type="typens:catalogInventoryStockItemEntityArray" minOccurs="0"/>
|
| 29 |
+
<element name="images" type="typens:catalogProductImageEntityArray" minOccurs="0"/>
|
| 30 |
+
</all>
|
| 31 |
+
</complexType>
|
| 32 |
+
<complexType name="childrenEntityArray">
|
| 33 |
+
<complexContent>
|
| 34 |
+
<restriction base="soapenc:Array">
|
| 35 |
+
<attribute ref="soapenc:arrayType" wsdl:arrayType="typens:childrenEntity[]"/>
|
| 36 |
+
</restriction>
|
| 37 |
+
</complexContent>
|
| 38 |
+
</complexType>
|
| 39 |
+
<complexType name="childrenEntity">
|
| 40 |
+
<all>
|
| 41 |
+
<element name="sku" type="xsd:string" minOccurs="0"/>
|
| 42 |
+
<element name="options" type="typens:optionsEntityArray" minOccurs="0"/>
|
| 43 |
+
</all>
|
| 44 |
+
</complexType>
|
| 45 |
+
<complexType name="configurableOptionsEntityArray">
|
| 46 |
+
<complexContent>
|
| 47 |
+
<restriction base="soapenc:Array">
|
| 48 |
+
<attribute ref="soapenc:arrayType" wsdl:arrayType="typens:configurableOptionsEntity[]"/>
|
| 49 |
+
</restriction>
|
| 50 |
+
</complexContent>
|
| 51 |
+
</complexType>
|
| 52 |
+
<complexType name="configurableOptionsEntity">
|
| 53 |
+
<all>
|
| 54 |
+
<element name="code" type="xsd:string" minOccurs="0"/>
|
| 55 |
+
<element name="options" type="typens:optionsEntityArray" minOccurs="0"/>
|
| 56 |
+
</all>
|
| 57 |
+
</complexType>
|
| 58 |
+
<complexType name="optionsEntityArray">
|
| 59 |
+
<complexContent>
|
| 60 |
+
<restriction base="soapenc:Array">
|
| 61 |
+
<attribute ref="soapenc:arrayType" wsdl:arrayType="typens:optionsEntity[]"/>
|
| 62 |
+
</restriction>
|
| 63 |
+
</complexContent>
|
| 64 |
+
</complexType>
|
| 65 |
+
<complexType name="optionsEntity">
|
| 66 |
+
<all>
|
| 67 |
+
<element name="product_super_attribute_id" type="xsd:string" minOccurs="0"/>
|
| 68 |
+
<element name="value_index" type="xsd:string" minOccurs="0"/>
|
| 69 |
+
<element name="label" type="xsd:string" minOccurs="0"/>
|
| 70 |
+
<element name="default_label" type="xsd:string" minOccurs="0"/>
|
| 71 |
+
<element name="store_label" type="xsd:string" minOccurs="0"/>
|
| 72 |
+
<element name="is_percent" type="xsd:int" minOccurs="0"/>
|
| 73 |
+
<element name="pricing_value" type="xsd:double" minOccurs="0"/>
|
| 74 |
+
<element name="use_default_value" type="xsd:boolean" minOccurs="0"/>
|
| 75 |
+
<element name="attribute_code" type="xsd:string" minOccurs="0"/>
|
| 76 |
+
</all>
|
| 77 |
+
</complexType>
|
| 78 |
+
<complexType name="salesOrderExportArray">
|
| 79 |
+
<complexContent>
|
| 80 |
+
<restriction base="soapenc:Array">
|
| 81 |
+
<attribute ref="soapenc:arrayType" wsdl:arrayType="typens:salesOrderExportEntity[]"/>
|
| 82 |
+
</restriction>
|
| 83 |
+
</complexContent>
|
| 84 |
+
</complexType>
|
| 85 |
+
<complexType name="salesOrderExportEntity">
|
| 86 |
+
<all>
|
| 87 |
+
<element name="order_id" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 88 |
+
<element name="state" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 89 |
+
<element name="status" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 90 |
+
<element name="coupon_code" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 91 |
+
<element name="protect_code" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 92 |
+
<element name="shipping_description" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 93 |
+
<element name="is_virtual" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 94 |
+
<element name="store_id" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 95 |
+
<element name="customer_id" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 96 |
+
<element name="base_discount_amount" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 97 |
+
<element name="base_discount_canceled" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 98 |
+
<element name="base_discount_invoiced" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 99 |
+
<element name="base_discount_refunded" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 100 |
+
<element name="base_grand_total" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 101 |
+
<element name="base_shipping_amount" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 102 |
+
<element name="base_shipping_canceled" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 103 |
+
<element name="base_shipping_invoiced" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 104 |
+
<element name="base_shipping_refunded" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 105 |
+
<element name="base_shipping_tax_amount" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 106 |
+
<element name="base_shipping_tax_refunded" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 107 |
+
<element name="base_subtotal" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 108 |
+
<element name="base_subtotal_canceled" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 109 |
+
<element name="base_subtotal_invoiced" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 110 |
+
<element name="base_subtotal_refunded" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 111 |
+
<element name="base_tax_amount" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 112 |
+
<element name="base_tax_canceled" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 113 |
+
<element name="base_tax_invoiced" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 114 |
+
<element name="base_tax_refunded" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 115 |
+
<element name="base_to_global_rate" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 116 |
+
<element name="base_to_order_rate" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 117 |
+
<element name="base_total_canceled" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 118 |
+
<element name="base_total_invoiced" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 119 |
+
<element name="base_total_invoiced_cost" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 120 |
+
<element name="base_total_offline_refunded" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 121 |
+
<element name="base_total_online_refunded" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 122 |
+
<element name="base_total_paid" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 123 |
+
<element name="base_total_qty_ordered" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 124 |
+
<element name="base_total_refunded" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 125 |
+
<element name="discount_amount" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 126 |
+
<element name="discount_canceled" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 127 |
+
<element name="discount_invoiced" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 128 |
+
<element name="discount_refunded" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 129 |
+
<element name="grand_total" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 130 |
+
<element name="shipping_amount" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 131 |
+
<element name="shipping_canceled" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 132 |
+
<element name="shipping_invoiced" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 133 |
+
<element name="shipping_refunded" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 134 |
+
<element name="shipping_tax_amount" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 135 |
+
<element name="shipping_tax_refunded" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 136 |
+
<element name="store_to_base_rate" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 137 |
+
<element name="store_to_order_rate" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 138 |
+
<element name="subtotal" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 139 |
+
<element name="subtotal_canceled" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 140 |
+
<element name="subtotal_invoiced" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 141 |
+
<element name="subtotal_refunded" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 142 |
+
<element name="tax_amount" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 143 |
+
<element name="tax_canceled" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 144 |
+
<element name="tax_invoiced" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 145 |
+
<element name="tax_refunded" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 146 |
+
<element name="total_canceled" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 147 |
+
<element name="total_invoiced" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 148 |
+
<element name="total_offline_refunded" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 149 |
+
<element name="total_online_refunded" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 150 |
+
<element name="total_paid" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 151 |
+
<element name="total_qty_ordered" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 152 |
+
<element name="total_refunded" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 153 |
+
<element name="can_ship_partially" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 154 |
+
<element name="can_ship_partially_item" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 155 |
+
<element name="customer_is_guest" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 156 |
+
<element name="customer_note_notify" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 157 |
+
<element name="billing_address_id" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 158 |
+
<element name="customer_group_id" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 159 |
+
<element name="customer_group_code" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 160 |
+
<element name="edit_increment" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 161 |
+
<element name="email_sent" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 162 |
+
<element name="forced_shipment_with_invoice" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 163 |
+
<element name="payment_auth_expiration" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 164 |
+
<element name="quote_address_id" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 165 |
+
<element name="quote_id" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 166 |
+
<element name="shipping_address_id" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 167 |
+
<element name="adjustment_negative" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 168 |
+
<element name="adjustment_positive" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 169 |
+
<element name="base_adjustment_negative" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 170 |
+
<element name="base_adjustment_positive" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 171 |
+
<element name="base_shipping_discount_amount" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 172 |
+
<element name="base_subtotal_incl_tax" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 173 |
+
<element name="base_total_due" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 174 |
+
<element name="payment_authorization_amount" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 175 |
+
<element name="shipping_discount_amount" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 176 |
+
<element name="subtotal_incl_tax" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 177 |
+
<element name="total_due" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 178 |
+
<element name="weight" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 179 |
+
<element name="customer_dob" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 180 |
+
<element name="increment_id" type="xsd:string" minOccurs="0" maxOccurs="1"/>
|
| 181 |
+
<element name="applied_rule_ids" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 182 |
+
<element name="base_currency_code" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 183 |
+
<element name="customer_email" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 184 |
+
<element name="customer_firstname" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 185 |
+
<element name="customer_lastname" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 186 |
+
<element name="customer_middlename" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 187 |
+
<element name="customer_prefix" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 188 |
+
<element name="customer_suffix" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 189 |
+
<element name="customer_taxvat" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 190 |
+
<element name="discount_description" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 191 |
+
<element name="ext_customer_id" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 192 |
+
<element name="ext_order_id" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 193 |
+
<element name="global_currency_code" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 194 |
+
<element name="hold_before_state" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 195 |
+
<element name="hold_before_status" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 196 |
+
<element name="order_currency_code" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 197 |
+
<element name="original_increment_id" type="xsd:string" minOccurs="0" maxOccurs="1"/>
|
| 198 |
+
<element name="relation_child_id" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 199 |
+
<element name="relation_child_real_id" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 200 |
+
<element name="relation_parent_id" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 201 |
+
<element name="relation_parent_real_id" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 202 |
+
<element name="remote_ip" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 203 |
+
<element name="shipping_method" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 204 |
+
<element name="store_currency_code" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 205 |
+
<element name="store_name" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 206 |
+
<element name="x_forwarded_for" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 207 |
+
<element name="customer_note" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 208 |
+
<element name="created_at" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 209 |
+
<element name="updated_at" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 210 |
+
<element name="total_item_count" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 211 |
+
<element name="customer_gender_value" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 212 |
+
<element name="hidden_tax_amount" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 213 |
+
<element name="base_hidden_tax_amount" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 214 |
+
<element name="shipping_hidden_tax_amount" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 215 |
+
<element name="base_shipping_hidden_tax_amnt" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 216 |
+
<element name="hidden_tax_invoiced" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 217 |
+
<element name="base_hidden_tax_invoiced" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 218 |
+
<element name="hidden_tax_refunded" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 219 |
+
<element name="base_hidden_tax_refunded" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 220 |
+
<element name="shipping_incl_tax" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 221 |
+
<element name="base_shipping_incl_tax" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 222 |
+
<element name="paypal_ipn_customer_notified" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 223 |
+
<element name="gift_message_id" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 224 |
+
<element name="gift_sender" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 225 |
+
<element name="gift_recipient" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 226 |
+
<element name="gift_message" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 227 |
+
|
| 228 |
+
<element name="address" type="typens:salesOrderExportAddressArray" minOccurs="1" maxOccurs="1"/>
|
| 229 |
+
<element name="items" type="typens:salesOrderExportItemsArray" minOccurs="1" maxOccurs="1"/>
|
| 230 |
+
<element name="payment" type="typens:salesOrderExportPaymentsArray" minOccurs="1" maxOccurs="1"/>
|
| 231 |
+
<element name="history" type="typens:salesOrderExportHistoryArray" minOccurs="1" maxOccurs="1"/>
|
| 232 |
+
</all>
|
| 233 |
+
</complexType>
|
| 234 |
+
<complexType name="salesOrderExportAddressArray">
|
| 235 |
+
<complexContent>
|
| 236 |
+
<restriction base="soapenc:Array">
|
| 237 |
+
<attribute ref="soapenc:arrayType" wsdl:arrayType="typens:salesOrderExportAddressEntity[]"/>
|
| 238 |
+
</restriction>
|
| 239 |
+
</complexContent>
|
| 240 |
+
</complexType>
|
| 241 |
+
<complexType name="salesOrderExportAddressEntity">
|
| 242 |
+
<all>
|
| 243 |
+
<element name="customer_address_id" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 244 |
+
<element name="quote_address_id" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 245 |
+
<element name="region_id" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 246 |
+
<element name="customer_id" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 247 |
+
<element name="fax" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 248 |
+
<element name="region" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 249 |
+
<element name="postcode" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 250 |
+
<element name="lastname" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 251 |
+
<element name="street" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 252 |
+
<element name="city" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 253 |
+
<element name="email" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 254 |
+
<element name="telephone" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 255 |
+
<element name="country_id" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 256 |
+
<element name="firstname" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 257 |
+
<element name="address_type" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 258 |
+
<element name="prefix" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 259 |
+
<element name="middlename" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 260 |
+
<element name="suffix" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 261 |
+
<element name="company" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 262 |
+
</all>
|
| 263 |
+
</complexType>
|
| 264 |
+
<complexType name="salesOrderExportItemsArray">
|
| 265 |
+
<complexContent>
|
| 266 |
+
<restriction base="soapenc:Array">
|
| 267 |
+
<attribute ref="soapenc:arrayType" wsdl:arrayType="typens:salesOrderExportItemEntity[]"/>
|
| 268 |
+
</restriction>
|
| 269 |
+
</complexContent>
|
| 270 |
+
</complexType>
|
| 271 |
+
<complexType name="salesOrderExportItemEntity">
|
| 272 |
+
<all>
|
| 273 |
+
<element name="item_id" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 274 |
+
<element name="parent_item_id" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 275 |
+
<element name="quote_item_id" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 276 |
+
<element name="store_id" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 277 |
+
<element name="created_at" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 278 |
+
<element name="updated_at" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 279 |
+
<element name="product_id" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 280 |
+
<element name="product_type" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 281 |
+
<element name="product_options" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 282 |
+
<element name="weight" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 283 |
+
<element name="is_virtual" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 284 |
+
<element name="sku" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 285 |
+
<element name="name" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 286 |
+
<element name="description" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 287 |
+
<element name="applied_rule_ids" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 288 |
+
<element name="additional_data" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 289 |
+
<element name="free_shipping" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 290 |
+
<element name="is_qty_decimal" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 291 |
+
<element name="no_discount" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 292 |
+
<element name="qty_backordered" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 293 |
+
<element name="qty_canceled" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 294 |
+
<element name="qty_invoiced" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 295 |
+
<element name="qty_ordered" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 296 |
+
<element name="qty_refunded" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 297 |
+
<element name="qty_shipped" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 298 |
+
<element name="base_cost" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 299 |
+
<element name="price" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 300 |
+
<element name="base_price" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 301 |
+
<element name="original_price" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 302 |
+
<element name="base_original_price" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 303 |
+
<element name="tax_percent" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 304 |
+
<element name="tax_amount" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 305 |
+
<element name="base_tax_amount" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 306 |
+
<element name="tax_invoiced" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 307 |
+
<element name="base_tax_invoiced" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 308 |
+
<element name="discount_percent" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 309 |
+
<element name="discount_amount" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 310 |
+
<element name="base_discount_amount" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 311 |
+
<element name="discount_invoiced" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 312 |
+
<element name="base_discount_invoiced" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 313 |
+
<element name="amount_refunded" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 314 |
+
<element name="base_amount_refunded" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 315 |
+
<element name="row_total" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 316 |
+
<element name="base_row_total" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 317 |
+
<element name="row_invoiced" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 318 |
+
<element name="base_row_invoiced" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 319 |
+
<element name="row_weight" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 320 |
+
<element name="base_tax_before_discount" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 321 |
+
<element name="tax_before_discount" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 322 |
+
<element name="ext_order_item_id" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 323 |
+
<element name="locked_do_invoice" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 324 |
+
<element name="locked_do_ship" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 325 |
+
<element name="price_incl_tax" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 326 |
+
<element name="base_price_incl_tax" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 327 |
+
<element name="row_total_incl_tax" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 328 |
+
<element name="base_row_total_incl_tax" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 329 |
+
<element name="hidden_tax_amount" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 330 |
+
<element name="base_hidden_tax_amount" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 331 |
+
<element name="hidden_tax_invoiced" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 332 |
+
<element name="base_hidden_tax_invoiced" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 333 |
+
<element name="hidden_tax_refunded" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 334 |
+
<element name="base_hidden_tax_refunded" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 335 |
+
<element name="is_nominal" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 336 |
+
<element name="tax_canceled" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 337 |
+
<element name="hidden_tax_canceled" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 338 |
+
<element name="tax_refunded" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 339 |
+
<element name="gift_message_id" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 340 |
+
<element name="gift_message_available" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 341 |
+
<element name="gift_sender" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 342 |
+
<element name="gift_recipient" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 343 |
+
<element name="gift_message" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 344 |
+
<element name="base_weee_tax_applied_amount" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 345 |
+
<element name="base_weee_tax_applied_row_amnt" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 346 |
+
<element name="weee_tax_applied_amount" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 347 |
+
<element name="weee_tax_applied_row_amount" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 348 |
+
<element name="weee_tax_applied" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 349 |
+
<element name="weee_tax_disposition" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 350 |
+
<element name="weee_tax_row_disposition" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 351 |
+
<element name="base_weee_tax_disposition" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 352 |
+
<element name="base_weee_tax_row_disposition" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 353 |
+
</all>
|
| 354 |
+
</complexType>
|
| 355 |
+
<complexType name="salesOrderExportPaymentsArray">
|
| 356 |
+
<complexContent>
|
| 357 |
+
<restriction base="soapenc:Array">
|
| 358 |
+
<attribute ref="soapenc:arrayType" wsdl:arrayType="typens:salesOrderExportPaymentEntity[]"/>
|
| 359 |
+
</restriction>
|
| 360 |
+
</complexContent>
|
| 361 |
+
</complexType>
|
| 362 |
+
<complexType name="salesOrderExportPaymentEntity">
|
| 363 |
+
<all>
|
| 364 |
+
<element name="base_shipping_captured" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 365 |
+
<element name="shipping_captured" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 366 |
+
<element name="amount_refunded" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 367 |
+
<element name="base_amount_paid" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 368 |
+
<element name="amount_canceled" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 369 |
+
<element name="base_amount_authorized" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 370 |
+
<element name="base_amount_paid_online" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 371 |
+
<element name="base_amount_refunded_online" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 372 |
+
<element name="base_shipping_amount" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 373 |
+
<element name="shipping_amount" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 374 |
+
<element name="amount_paid" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 375 |
+
<element name="amount_authorized" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 376 |
+
<element name="base_amount_ordered" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 377 |
+
<element name="base_shipping_refunded" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 378 |
+
<element name="shipping_refunded" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 379 |
+
<element name="base_amount_refunded" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 380 |
+
<element name="amount_ordered" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 381 |
+
<element name="base_amount_canceled" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 382 |
+
<element name="quote_payment_id" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 383 |
+
<element name="additional_data" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 384 |
+
<element name="cc_exp_month" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 385 |
+
<element name="cc_ss_start_year" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 386 |
+
<element name="echeck_bank_name" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 387 |
+
<element name="method" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 388 |
+
<element name="cc_debug_request_body" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 389 |
+
<element name="cc_secure_verify" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 390 |
+
<element name="protection_eligibility" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 391 |
+
<element name="cc_approval" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 392 |
+
<element name="cc_last4" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 393 |
+
<element name="cc_status_description" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 394 |
+
<element name="echeck_type" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 395 |
+
<element name="cc_debug_response_serialized" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 396 |
+
<element name="cc_ss_start_month" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 397 |
+
<element name="echeck_account_type" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 398 |
+
<element name="last_trans_id" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 399 |
+
<element name="cc_cid_status" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 400 |
+
<element name="cc_owner" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 401 |
+
<element name="cc_type" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 402 |
+
<element name="po_number" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 403 |
+
<element name="cc_exp_year" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 404 |
+
<element name="cc_status" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 405 |
+
<element name="echeck_routing_number" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 406 |
+
<element name="account_status" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 407 |
+
<element name="anet_trans_method" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 408 |
+
<element name="cc_debug_response_body" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 409 |
+
<element name="cc_ss_issue" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 410 |
+
<element name="echeck_account_name" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 411 |
+
<element name="cc_avs_status" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 412 |
+
<element name="cc_number_enc" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 413 |
+
<element name="cc_trans_id" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 414 |
+
<element name="paybox_request_number" type="xsd:string" minOccurs="0" maxOccurs="1"/>
|
| 415 |
+
<element name="address_status" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 416 |
+
<element name="additional_information" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 417 |
+
<element name="cybersource_token" type="xsd:string" minOccurs="0" maxOccurs="1"/>
|
| 418 |
+
<element name="flo2cash_account_id" type="xsd:string" minOccurs="0" maxOccurs="1"/>
|
| 419 |
+
<element name="ideal_issuer_id" type="xsd:string" minOccurs="0" maxOccurs="1"/>
|
| 420 |
+
<element name="ideal_issuer_title" type="xsd:string" minOccurs="0" maxOccurs="1"/>
|
| 421 |
+
<element name="ideal_transaction_checked" type="xsd:string" minOccurs="0" maxOccurs="1"/>
|
| 422 |
+
<element name="paybox_question_number" type="xsd:string" minOccurs="0" maxOccurs="1"/>
|
| 423 |
+
</all>
|
| 424 |
+
</complexType>
|
| 425 |
+
<complexType name="salesOrderExportHistoryArray">
|
| 426 |
+
<complexContent>
|
| 427 |
+
<restriction base="soapenc:Array">
|
| 428 |
+
<attribute ref="soapenc:arrayType" wsdl:arrayType="typens:salesOrderExportHistoryEntity[]"/>
|
| 429 |
+
</restriction>
|
| 430 |
+
</complexContent>
|
| 431 |
+
</complexType>
|
| 432 |
+
<complexType name="salesOrderExportHistoryEntity">
|
| 433 |
+
<all>
|
| 434 |
+
<element name="is_customer_notified" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 435 |
+
<element name="is_visible_on_front" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 436 |
+
<element name="comment" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 437 |
+
<element name="status" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 438 |
+
<element name="created_at" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 439 |
+
<element name="entity_name" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 440 |
+
</all>
|
| 441 |
+
</complexType>
|
| 442 |
+
<complexType name="salesOrderImportResult">
|
| 443 |
+
<all>
|
| 444 |
+
<element name="status" type="xsd:string" minOccurs="1" maxOccurs="1" />
|
| 445 |
+
<element name="result" type="typens:salesOrderImportResultResultArray" minOccurs="0"
|
| 446 |
+
maxOccurs="1" />
|
| 447 |
+
</all>
|
| 448 |
+
</complexType>
|
| 449 |
+
<complexType name="salesOrderImportResultResultArray">
|
| 450 |
+
<complexContent>
|
| 451 |
+
<restriction base="soapenc:Array">
|
| 452 |
+
<attribute ref="soapenc:arrayType"
|
| 453 |
+
wsdl:arrayType="typens:salesOrderImportResultResultEntity[]"/>
|
| 454 |
+
</restriction>
|
| 455 |
+
</complexContent>
|
| 456 |
+
</complexType>
|
| 457 |
+
<complexType name="salesOrderImportResultResultEntity">
|
| 458 |
+
<all>
|
| 459 |
+
<element name="original_increment_id" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 460 |
+
<element name="imported_increment_id" type="xsd:string" minOccurs="1" maxOccurs="1"/>
|
| 461 |
+
<element name="error" type="xsd:string" minOccurs="0" maxOccurs="1"/>
|
| 462 |
+
<element name="warnings" type="typens:ArrayOfString" minOccurs="0" maxOccurs="1"/>
|
| 463 |
+
</all>
|
| 464 |
+
</complexType>
|
| 465 |
+
<complexType name="salesOrderShipmentEntity">
|
| 466 |
+
<all>
|
| 467 |
+
<element name="shipping_description" type="xsd:string" minOccurs="0" />
|
| 468 |
+
</all>
|
| 469 |
+
</complexType>
|
| 470 |
+
</schema>
|
| 471 |
+
</types>
|
| 472 |
+
<message name="salesOrderImportRequest">
|
| 473 |
+
<part name="sessionId" type="xsd:string"/>
|
| 474 |
+
<part name="orders" type="typens:salesOrderExportArray"/>
|
| 475 |
+
<part name="decrement_inventory" type="xsd:boolean" />
|
| 476 |
+
</message>
|
| 477 |
+
<message name="salesOrderImportResponse">
|
| 478 |
+
<part name="result" type="typens:salesOrderImportResult"/>
|
| 479 |
+
</message>
|
| 480 |
+
<portType name="{{var wsdl.handler}}PortType">
|
| 481 |
+
<operation name="salesOrderImport">
|
| 482 |
+
<documentation>Import orders</documentation>
|
| 483 |
+
<input message="typens:salesOrderImportRequest"/>
|
| 484 |
+
<output message="typens:salesOrderImportResponse"/>
|
| 485 |
+
</operation>
|
| 486 |
+
</portType>
|
| 487 |
+
<binding name="{{var wsdl.handler}}Binding" type="typens:{{var wsdl.handler}}PortType">
|
| 488 |
+
<operation name="salesOrderImport">
|
| 489 |
+
<soap:operation soapAction="urn:{{var wsdl.handler}}Action"/>
|
| 490 |
+
<input>
|
| 491 |
+
<soap:body namespace="urn:{{var wsdl.name}}" use="encoded"
|
| 492 |
+
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
|
| 493 |
+
</input>
|
| 494 |
+
<output>
|
| 495 |
+
<soap:body namespace="urn:{{var wsdl.name}}" use="encoded"
|
| 496 |
+
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
|
| 497 |
+
</output>
|
| 498 |
+
</operation>
|
| 499 |
+
</binding>
|
| 500 |
+
</definitions>
|
app/code/local/CloudConversion/CloudGento/etc/wsi.xml
ADDED
|
@@ -0,0 +1,72 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?xml version="1.0" encoding="UTF-8"?>
|
| 2 |
+
<wsdl:definitions xmlns:typens="urn:{{var wsdl.name}}"
|
| 3 |
+
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
|
| 4 |
+
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
|
| 5 |
+
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
|
| 6 |
+
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
|
| 7 |
+
name="{{var wsdl.name}}"
|
| 8 |
+
targetNamespace="urn:{{var wsdl.name}}">
|
| 9 |
+
<wsdl:types>
|
| 10 |
+
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" targetNamespace="urn:{{var wsdl.name}}">
|
| 11 |
+
<xsd:complexType name="complexMultiFilter">
|
| 12 |
+
<xsd:sequence>
|
| 13 |
+
<xsd:element name="key" type="xsd:string" />
|
| 14 |
+
<xsd:element name="value" type="typens:associativeArray" />
|
| 15 |
+
</xsd:sequence>
|
| 16 |
+
</xsd:complexType>
|
| 17 |
+
<xsd:complexType name="complexMultiArray">
|
| 18 |
+
<xsd:sequence>
|
| 19 |
+
<xsd:element minOccurs="0" maxOccurs="unbounded" name="complexObjectArray" type="typens:complexMultiFilter" />
|
| 20 |
+
</xsd:sequence>
|
| 21 |
+
</xsd:complexType>
|
| 22 |
+
<xsd:complexType name="catalogProductCreateEntity">
|
| 23 |
+
<xsd:sequence>
|
| 24 |
+
<xsd:element name="associated_skus" type="typens:ArrayOfString" minOccurs="0" />
|
| 25 |
+
<xsd:element name="price_changes" type="typens:complexMultiArray" minOccurs="0" />
|
| 26 |
+
</xsd:sequence>
|
| 27 |
+
</xsd:complexType>
|
| 28 |
+
<xsd:complexType name="catalogProductReturnEntity">
|
| 29 |
+
<xsd:sequence>
|
| 30 |
+
<xsd:element name="parent_sku" type="xsd:string" minOccurs="0" />
|
| 31 |
+
<xsd:element name="configurable_products_data" type="typens:childrenEntityArray" minOccurs="0" />
|
| 32 |
+
<xsd:element name="configurable_attributes_data" type="typens:configurableOptionsEntityArray" minOccurs="0" />
|
| 33 |
+
</xsd:sequence>
|
| 34 |
+
</xsd:complexType>
|
| 35 |
+
<xsd:complexType name="childrenEntityArray">
|
| 36 |
+
<xsd:sequence>
|
| 37 |
+
<xsd:element minOccurs="0" maxOccurs="unbounded" name="complexObjectArray" type="typens:childrenEntity" />
|
| 38 |
+
</xsd:sequence>
|
| 39 |
+
</xsd:complexType>
|
| 40 |
+
<xsd:complexType name="childrenEntity">
|
| 41 |
+
<xsd:sequence>
|
| 42 |
+
<xsd:element name="sku" type="xsd:string" minOccurs="0"/>
|
| 43 |
+
<xsd:element name="options" type="typens:optionsEntityArray" minOccurs="0"/>
|
| 44 |
+
</xsd:sequence>
|
| 45 |
+
</xsd:complexType>
|
| 46 |
+
<xsd:complexType name="configurableOptionsEntityArray">
|
| 47 |
+
<xsd:sequence>
|
| 48 |
+
<xsd:element minOccurs="0" maxOccurs="unbounded" name="complexObjectArray" type="typens:configurableOptionsEntity" />
|
| 49 |
+
</xsd:sequence>
|
| 50 |
+
</xsd:complexType>
|
| 51 |
+
<xsd:complexType name="configurableOptionsEntity">
|
| 52 |
+
<xsd:sequence>
|
| 53 |
+
<xsd:element name="code" type="xsd:string" minOccurs="0"/>
|
| 54 |
+
<xsd:element name="options" type="typens:optionsEntityArray" minOccurs="0"/>
|
| 55 |
+
</xsd:sequence>
|
| 56 |
+
</xsd:complexType>
|
| 57 |
+
<xsd:complexType name="optionsEntityArray">
|
| 58 |
+
<xsd:sequence>
|
| 59 |
+
<xsd:element minOccurs="0" maxOccurs="unbounded" name="complexObjectArray" type="typens:optionsEntity" />
|
| 60 |
+
</xsd:sequence>
|
| 61 |
+
</xsd:complexType>
|
| 62 |
+
<xsd:complexType name="optionsEntity">
|
| 63 |
+
<xsd:sequence>
|
| 64 |
+
<xsd:element name="name" type="xsd:string" minOccurs="0"/>
|
| 65 |
+
<xsd:element name="value" type="xsd:string" minOccurs="0"/>
|
| 66 |
+
<xsd:element name="code" type="xsd:string" minOccurs="0"/>
|
| 67 |
+
<xsd:element name="price" type="xsd:double" minOccurs="0"/>
|
| 68 |
+
</xsd:sequence>
|
| 69 |
+
</xsd:complexType>
|
| 70 |
+
</xsd:schema>
|
| 71 |
+
</wsdl:types>
|
| 72 |
+
</wsdl:definitions>
|
app/etc/modules/CloudConversion_CloudGento.xml
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?xml version="1.0" encoding="UTF-8"?>
|
| 2 |
+
<config>
|
| 3 |
+
<modules>
|
| 4 |
+
<CloudConversion_CloudGento>
|
| 5 |
+
<active>true</active>
|
| 6 |
+
<codePool>local</codePool>
|
| 7 |
+
</CloudConversion_CloudGento>
|
| 8 |
+
</modules>
|
| 9 |
+
</config>
|
package.xml
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?xml version="1.0"?>
|
| 2 |
+
<package>
|
| 3 |
+
<name>cloudgento-extension</name>
|
| 4 |
+
<version>1.0.0</version>
|
| 5 |
+
<stability>stable</stability>
|
| 6 |
+
<license uri="http://opensource.org/licenses/osl-3.0.php">Open Software License (OSL)</license>
|
| 7 |
+
<channel>community</channel>
|
| 8 |
+
<extends/>
|
| 9 |
+
<summary>CloudGento Magento Extension</summary>
|
| 10 |
+
<description>CloudGento Magento Extension</description>
|
| 11 |
+
<notes>CloudGento Magento Extension</notes>
|
| 12 |
+
<authors><author><name>CloudConversion</name><user>cloudconversion</user><email>peter@cloudconversion.com</email></author></authors>
|
| 13 |
+
<date>2013-01-29</date>
|
| 14 |
+
<time>23:13:51</time>
|
| 15 |
+
<contents><target name="magelocal"><dir name="CloudConversion"><dir name="CloudGento"><dir name="Helper"><file name="Data.php" hash="c643c6607d339118fe4acce37aa21e3b"/></dir><dir name="Model"><dir name="Catalog"><dir name="Product"><dir name="Api"><file name="V2.php" hash="c2533fa3fc1b61c616ee364ede6d4563"/></dir><file name="Api.php" hash="acd15e01ad9a250c1fdbc016389b649d"/></dir></dir><dir name="Order"><dir name="Api"><file name="V2.php" hash="e17dc8ac54508499565f6f9732bcbc03"/></dir><file name="Api.php" hash="c2767e75f9c004b49d4a41b54e0e643e"/><dir name="Shipment"><dir name="Api"><file name="V2.php" hash="6cfd0d0e1a9290ffb1a25db8aa2771e1"/></dir><file name="Api.php" hash="bc12ae1e8185253ecc8fe6111e258b5f"/></dir></dir><dir name="Resource"><file name="Message.php" hash="4b75b1086988077e86c219a3f39ef935"/><dir name="Order"><file name="Address.php" hash="738ffc04f63d9bd6f0a51b7c706075df"/><file name="Item.php" hash="5fcdfcc5737ffe2c2cc3d936c250da7f"/><file name="Payment.php" hash="4ed8fc8c74ae928852a584b4b6546b48"/><dir name="Status"><file name="History.php" hash="16d3aacea35cfcc98cbd76bb2194003f"/></dir></dir><file name="Order.php" hash="09b1a92158c2f835b7a743d5f5dc74dd"/></dir></dir><dir name="etc"><file name="api.xml" hash="016a4ceb67f92d1a64afbf9966b43578"/><file name="config.xml" hash="0e8a031b2ab7fadf778d1d218da6e7d1"/><file name="wsdl.xml" hash="54e13bfb57565dc27c94767d8578b0d1"/><file name="wsi.xml" hash="4a689a1a219c320d097ad2de61f9f275"/></dir></dir></dir></target><target name="mageetc"><dir name="modules"><file name="CloudConversion_CloudGento.xml" hash="f63a0ccc652bd82328965940ea315fbd"/></dir></target></contents>
|
| 16 |
+
<compatible/>
|
| 17 |
+
<dependencies><required><php><min>5.1.0</min><max>6.0.0</max></php></required></dependencies>
|
| 18 |
+
</package>
|
