magento's imagine ecommerce conference 2011 - import export in a flash with the new magento...

32
Imagine Conference, Feb. 2011 | Author: Vinai Kopp <[email protected]> Using the new Import Module How to use Magentos new ImportExport module in your custom modules

Upload: magentoimagine

Post on 30-Nov-2014

899 views

Category:

Technology


2 download

DESCRIPTION

 

TRANSCRIPT

Page 1: Magento's Imagine eCommerce Conference 2011 - Import Export in a Flash with the New Magento Module!

Imagine Conference, Feb. 2011 | Author: Vinai Kopp <[email protected]>

Using the new Import ModuleHow to use Magentos new ImportExport module in your custom modules

Page 2: Magento's Imagine eCommerce Conference 2011 - Import Export in a Flash with the New Magento Module!

It's me!Vinai Kopp

Magento Development since March 08

Magento Developer Training

Magento Consulting

Page 3: Magento's Imagine eCommerce Conference 2011 - Import Export in a Flash with the New Magento Module!

Introducing the Players

Overview of the the classes used during the import process

Page 4: Magento's Imagine eCommerce Conference 2011 - Import Export in a Flash with the New Magento Module!

The Controller

Mage_ImportExport_Adminhtml_ImportController

Purpose: Entry Point

Instantiates the Import Model and start Process

Page 5: Magento's Imagine eCommerce Conference 2011 - Import Export in a Flash with the New Magento Module!

The Import Model

Mage_ImportExport_Model_Import

Purpose: Facade to the underlying import classes

Page 6: Magento's Imagine eCommerce Conference 2011 - Import Export in a Flash with the New Magento Module!

The Entity Type Model

Mage_ImportExport_Model_Import_Entity_Product

Mage_ImportExport_Model_Import_Entity_Customer

Purpose: Build and execute SQL for imports, updates and deletes

Page 7: Magento's Imagine eCommerce Conference 2011 - Import Export in a Flash with the New Magento Module!

The Source Adapter

Mage_ImportExport_Model_Import_Adapter_Csv

Purpose: Parse and access input data into arrays as expected by the

entity type model

Page 8: Magento's Imagine eCommerce Conference 2011 - Import Export in a Flash with the New Magento Module!

Import Data Resource Model

Mage_ImportExport_Model_Mysql4_Import_Data

Purpose: Interface to the import data table

Page 9: Magento's Imagine eCommerce Conference 2011 - Import Export in a Flash with the New Magento Module!

Product Type Import Models

Mage_ImportExport_Model_Import_Entity_Product_Type_*

Purpose: Build and execute product type specific SQL

Page 10: Magento's Imagine eCommerce Conference 2011 - Import Export in a Flash with the New Magento Module!

The Import Process

POINT OF ENTRY

MagentoCronJobCLI

AdminhtmlInterface

IMPORT MODEL:validateSource()

SOURCE ADAPTER

ENTITY TYPE ADAPTER

Document

DATA ARRAY

Temporary Table

Page 11: Magento's Imagine eCommerce Conference 2011 - Import Export in a Flash with the New Magento Module!

The Import Process

POINT OF ENTRY

MagentoCronJobCLI

AdminhtmlInterface

ENTITY TYPE ADAPTER

Temporary Table

IMPORT MODEL:importSource()

SQL

PRODUCT TYPEIMPORT MODEL

CATALOGTABLE

Page 12: Magento's Imagine eCommerce Conference 2011 - Import Export in a Flash with the New Magento Module!

How can I use that?

Import, Update or Delete Products and/or Customers

Page 13: Magento's Imagine eCommerce Conference 2011 - Import Export in a Flash with the New Magento Module!

How can I use that?

Example: Cronjob catalog updates via custom CSV files

Custom CSV Fields:

sku, name, description, short_description, store_id, websites, weight, price, qty, color

Page 14: Magento's Imagine eCommerce Conference 2011 - Import Export in a Flash with the New Magento Module!

Why a custom CSV file format?

sku

_store

_attribute_set

_type

_category

_product_websites

color

cost

created_at

custom_design

custom_design_from

custom_design_to

custom_layout_update

description

enable_googlecheckout

gallery

gift_message_available

has_options

image

image_label

is_imported

manufacturer

media_gallery

meta_description

meta_keyword

meta_title

minimal_price

name

news_from_dat

news_to_date

options_container

page_layout

price

required_options

short_description

small_image

small_image_label

special_from_date

special_price

special_to_date

status

tax_class_id

thumbnail

thumbnail_label

updated_at

url_key

url_path

visibility

weight

qty

min_qty

use_config_min_qty

is_qty_decimal

backorders

use_config_backorders

min_sale_qty

use_config_min_sale_qty

max_sale_qty

use_config_max_sale_qty

is_in_stock

notify_stock_qty

use_config_notify_stock_qty

manage_stock

use_config_manage_stock

use_config_qty_increments

qty_increments

use_config_enable_qty_increments

enable_qty_increments

_links_related_sku

_links_related_position

_links_crosssell_sku

_links_crosssell_position

_links_upsell_sku

_links_upsell_position

_associated_sku

_associated_default_qty

_associated_position

_tier_price_website

_tier_price_customer_group

_tier_price_qty

_tier_price_price

_super_products_sku

_super_attribute_code

_super_attribute_option

_super_attribute_price_corr

Page 15: Magento's Imagine eCommerce Conference 2011 - Import Export in a Flash with the New Magento Module!

Cronjob Catalog Updates

Step One: Build Source Adapter for custom CSV file

Step Two: Create Cron Observer

Page 16: Magento's Imagine eCommerce Conference 2011 - Import Export in a Flash with the New Magento Module!

Specify a Custom Source Adapter

The Source Adapter Class is specified by the File Extension

Mage_ImportExport_Model_Import_Adapter_ . $type;

sourcefile.csv.custom to use Source Adapter

Mage/ImportExport/Model/Import/Adapter/Custom.php

Page 17: Magento's Imagine eCommerce Conference 2011 - Import Export in a Flash with the New Magento Module!

The Source Adapter Interface

Extend Mage_ImportExport_Model_Import_Adapter_Abstract

Implements SeekableIterator Interface

Create rewind(), next() and seek() methods using _init() to setup data

Page 18: Magento's Imagine eCommerce Conference 2011 - Import Export in a Flash with the New Magento Module!

The Source Adapter Interface

protected function _init()

Read source and build the same data structure like the core csv

adapter

The source array format can best be referenced by exporting some

products and looking at the first line in the resulting export file

Page 19: Magento's Imagine eCommerce Conference 2011 - Import Export in a Flash with the New Magento Module!

The Source Array Format

sku

_store

_attribute_set

_type

_category

_product_websites

color

cost

created_at

custom_design

custom_design_from

custom_design_to

custom_layout_update

description

enable_googlecheckout

gallery

gift_message_available

has_options

image

image_label

is_imported

manufacturer

media_gallery

meta_description

meta_keyword

meta_title

minimal_price

name

news_from_dat

news_to_date

options_container

page_layout

price

required_options

short_description

small_image

small_image_label

special_from_date

special_price

special_to_date

status

tax_class_id

thumbnail

thumbnail_label

updated_at

url_key

url_path

visibility

weight

qty

min_qty

use_config_min_qty

is_qty_decimal

backorders

use_config_backorders

min_sale_qty

use_config_min_sale_qty

max_sale_qty

use_config_max_sale_qty

is_in_stock

notify_stock_qty

use_config_notify_stock_qty

manage_stock

use_config_manage_stock

use_config_qty_increments

qty_increments

use_config_enable_qty_increments

enable_qty_increments

_links_related_sku

_links_related_position

_links_crosssell_sku

_links_crosssell_position

_links_upsell_sku

_links_upsell_position

_associated_sku

_associated_default_qty

_associated_position

_tier_price_website

_tier_price_customer_group

_tier_price_qty

_tier_price_price

_super_products_sku

_super_attribute_code

_super_attribute_option

_super_attribute_price_corr

Page 20: Magento's Imagine eCommerce Conference 2011 - Import Export in a Flash with the New Magento Module!

Product Import Source Array

Configurable Products

... 0,1,0.0000,1,1,,1,0,1,1,0.0000,1,0,,,,,,,,,,,,,,sku-Pear-Cyan,manufacturer,Pear,100.0000

... ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,sku-Pear-Indigo,color,Cyan,5.0000

... ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,sku-Pear-Mauve,,,

... ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,sku-Pear-Pink,,,

... ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,sku-Peach-Cyan,,,

_super_products_sku_super_attribute_code_super_attribute_option_super_attribute_price_corr

Page 21: Magento's Imagine eCommerce Conference 2011 - Import Export in a Flash with the New Magento Module!

Product Import Source Array

... 0,1,0.0000,1,1,,1,0,1,1,0.0000,1,0,,,,,,,,,,,,,,sku-Pear-Cyan,manufacturer,Pear,100.0000

... ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,sku-Pear-Indigo,color,Cyan,5.0000

... ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,sku-Pear-Mauve,,,

... ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,sku-Pear-Pink,,,

... ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,sku-Peach-Cyan,,,

_super_products_sku

One row for every associated simple product in addition to record for the simple product itself

Configurable Products

Page 22: Magento's Imagine eCommerce Conference 2011 - Import Export in a Flash with the New Magento Module!

Product Import Source Array

... 0,1,0.0000,1,1,,1,0,1,1,0.0000,1,0,,,,,,,,,,,,,,sku-Pear-Cyan,manufacturer,Pear,100.0000

... ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,sku-Pear-Indigo,color,Cyan,5.0000

... ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,sku-Pear-Mauve,,,

... ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,sku-Pear-Pink,,,

... ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,sku-Peach-Cyan,,,

_super_attribute_code

One row for every associated simple product attribute

Configurable Products

Page 23: Magento's Imagine eCommerce Conference 2011 - Import Export in a Flash with the New Magento Module!

Product Import Source Array

... 0,1,0.0000,1,1,,1,0,1,1,0.0000,1,0,,,,,,,,,,,,,,sku-Pear-Cyan,manufacturer,Pear,100.0000

... ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,sku-Pear-Indigo,color,Cyan,5.0000

... ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,sku-Pear-Mauve,,,

... ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,sku-Pear-Pink,,,

... ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,sku-Peach-Cyan,,,

_super_attribute_option

One row for every attribute with a price update

_super_products_price_corr

Configurable Products

Page 24: Magento's Imagine eCommerce Conference 2011 - Import Export in a Flash with the New Magento Module!

Product Import Source Array

... 0,1,0.0000,1,1,,1,0,1,1,0.0000,1,0,,,,,,,,,,,,,,sku-Pear-Cyan,manufacturer,Pear,100.0000

... ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,sku-Pear-Indigo,color,Cyan,5.0000

... ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,sku-Pear-Mauve,,,

... ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,sku-Pear-Pink,,,

... ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,sku-Peach-Cyan,,,

_super_products_sku and _super_attribute_option do not (have to) correspond

Configurable Products

Page 25: Magento's Imagine eCommerce Conference 2011 - Import Export in a Flash with the New Magento Module!

Product Import Source Array

Custom Options_custom_option_store_custom_option_type_custom_option_title_custom_option_is_required_custom_option_price_custom_option_sku_custom_option_max_characters_custom_option_sort_order_custom_option_row_title_custom_option_row_price_custom_option_row_sku_custom_option_row_sort

Page 26: Magento's Imagine eCommerce Conference 2011 - Import Export in a Flash with the New Magento Module!

Implementation of the Source Adapter

Implement SeekableIterator Interface

seek(), current(), next(), rewind(), key(), valid()

All except next(), rewind() and seek() are implemented in the abstract

class Mage_ImportExport_Model_Import_Adapter_Abstract

The core CSV Adapter is a good implementation reference

Page 27: Magento's Imagine eCommerce Conference 2011 - Import Export in a Flash with the New Magento Module!

Trigger Import

Cron Observer which wrapps the Import Model calls to

validateSource(), importSource() and invalidateIndex()

Page 28: Magento's Imagine eCommerce Conference 2011 - Import Export in a Flash with the New Magento Module!

Trigger Import

Cron Observer which wrapps the Import Model calls to

validateSource(), importSource() and invalidateIndex()

Page 29: Magento's Imagine eCommerce Conference 2011 - Import Export in a Flash with the New Magento Module!

Other possibilities

Anything that gets product data into Magento in bulk operations, e.g.

XML Files

REST Request with product data in payload

Unix domain sockets

Page 30: Magento's Imagine eCommerce Conference 2011 - Import Export in a Flash with the New Magento Module!

Conclusion

Mage_ImportExport fills an important gap!

Usable with technical knowledge because of the complex array

format

Couple of smallish bugs, but it's going places :]

Page 31: Magento's Imagine eCommerce Conference 2011 - Import Export in a Flash with the New Magento Module!

Links

Sample Code: http://bit.ly/haCGWI

PDF of the Slides: http://bit.ly/i0eiI7

uRapidFlow: http://www.unirgy.com/products/urapidflow/

Page 32: Magento's Imagine eCommerce Conference 2011 - Import Export in a Flash with the New Magento Module!

/me is happy to hear from you

[email protected] :: @VinaiKopp

Thank you @riconeitzel for all the time and for making this look good!

Thanks to Magento!