Módulo de Integração de ERP - Compatível com a plataforma Magento CE versão 1.6 a 1.9
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
app
Gamuza_ERP-v0.0.1-Ter14Nov2017-1303.tbz2
README.md

README.md

Módulo de Integração ERP

Compatível com a plataforma Magento CE versão 1.6 a 1.9

Agora ficou mais fácil integrar o seu ERP com o Magento.

Estendemos as funções mais importantes do Webservice do Magento para você integrar o seu ERP sem muitos problemas.

Adicionamos várias funcionalidades interessantes como associação automática de categorias e produtos, produtos configuráveis e simples, valores para atributos, listagem completa de pedidos com suporte a criptografia, e muito mais!

Instalação

Instalar usando o modgit:

$ cd /path/to/magento
$ modgit init
$ modgit add gamuza_erp https://github.com/gamuzatech/gamuza_erp-magento.git

Instalação manual dos arquivos

Baixe a ultima versão aqui do pacote Gamuza_ERP-xxx.tbz2 e descompacte o arquivo baixado para dentro do diretório principal do Magento

Após a instalação, limpe os caches, rode a compilação, faça logout e login.

Conhecendo o módulo

1 - Configurando os parâmetros da integração no Painel Administrativo

2 - Configurando os métodos disponíveis para o perfil do usuário no Webservice

Métodos

Obtendo informações da loja

$client = new SoapClient ('http://magento/api/soap?wsdl=1');

$session = $client->login ('user', 'pass');

$result = $client->call ($session, 'erp_info.module_version'); // Versão do módulo

$result = $client->call ($session, 'erp_info.store_name'); // Nome da loja

$result = $client->call ($session, 'erp_info.store_phone'); // Telefone da loja

$result = $client->call ($session, 'erp_info.store_address'); // Endereço da loja

$client->endSession ($session);

Obtendo lista de websites

$client = new SoapClient ('http://magento/api/soap?wsdl=1');

$session = $client->login ('user', 'pass');

$result = $client->call ($session, 'erp_website.list', $params = null);

$client->endSession ($session);

Parâmetros:

Ex: Filtrando listagem por data de criação e atualização, excluindo o website com o ID = 0

$timestamp = '2016-04-30 01:12:56';

$params = array ('main_table.created_at, main_table.updated_at' => array(
    array ('gt' => $timestamp),
    array ('gt' => $timestamp)
  ),
  'website_id' => array ('gt' => 0)
);

Obtendo lista de lojas

$client = new SoapClient ('http://magento/api/soap?wsdl=1');

$session = $client->login ('user', 'pass');

$result = $client->call ($session, 'erp_store_group.list', $params = null);

$client->endSession ($session);

Parâmetros:

Ex: Filtrando listagem por data de criação e atualização, excluindo a loja com o ID = 0

$timestamp = '2016-04-30 01:17:34';

$params = array ('main_table.created_at, main_table.updated_at' => array(
    array ('gt' => $timestamp),
    array ('gt' => $timestamp)
  ),
  'main_table.group_id' => array ('gt' => 0),
);

Obtendo lista de visões

$client = new SoapClient ('http://magento/api/soap?wsdl=1');

$session = $client->login ('user', 'pass');

$result = $client->call ($session, 'erp_store.list', $params = null);

$client->endSession ($session);

Parâmetros:

Ex: Filtrando listagem por data de criação e atualização, excluindo a visão com o ID = 0

$timestamp = '2016-04-30 01:17:34';

$params = array ('main_table.created_at, main_table.updated_at' => array(
    array ('gt' => $timestamp),
    array ('gt' => $timestamp)
  ),
  'store_id' => array ('gt' => 0)
);

Criando um atributo

Os atributos e seus respectivos campos e valores serão automaticamente criados ou atualizados.

$client = new SoapClient ('http://magento/api/soap?wsdl=1');

$session = $client->login ('user', 'pass');

$result = $client->call ($session, 'erp_attribute.create', array(array(
  array(
    'entity_type' => 'catalog_product',
    'attribute_code' => 'color',
    'scope' => 'global',
    'add_option' => array(
      array(
        'default' => 1,
        'order' => 0,
        'label' => array(
          array('store_code' => 'admin', 'value' => 'red')
        )
      ),
      array(
        'order' => 1,
        'label' => array(
          array('store_code' => 'admin', 'value' => 'green')
        )
      ),
      array(
        'order' => 2,
        'label' => array(
          array('store_code' => 'admin', 'value' => 'blue')
        )
      )
    )
  )
)));

$client->endSession ($session);

Obtendo lista de categorias

Este método retorna uma listagem de categorias com todos os produtos associados, atributos vinculados e seus respectivos valores

$client = new SoapClient ('http://magento/api/soap?wsdl=1');

$session = $client->login ('user', 'pass');

$result = $client->call ($session, 'erp_category.list', $params = null);

$client->endSession ($session);

Parâmetros:

Ex: Filtrando listagem por data de criação e atualização, ordenando por data de criação e atualização, aplicando limite e excluindo categoria com o ID = 0

$timestamp = '2016-04-30 19:34:31';
$limit = 10;

$filters = array(
  'entity_id' => array ('gt' => 1),
  'or' => array(
    array ('attribute' => 'created_at', 'gt' => $gmt_timestamp),
    array ('attribute' => 'updated_at', 'gt' => $gmt_timestamp)
  )
);

$params = array(
  $filters,
  'order' => array ('e.created_at ASC', 'e.updated_at ASC'),
  'limit' => $limit
);

Criando categorias

As categorias e seus respectivos campos, valores, associações e produtos vinculados serão automaticamente criados ou atualizados.

$client = new SoapClient ('http://magento/api/soap?wsdl=1');

$session = $client->login ('user', 'pass');

$result = $client->call($session, 'erp_category.create', array(array(
    array(
        'store_code' => 'default',
        'attribute_set_name' => 'Default',
        'include_in_menu' => true,
        'is_active' => true,
        'name' => 'test',
        'erp_CodigoCategoriaProduto' => 456, // Código ERP
        'parent_erp_CodigoCategoriaProduto' => 123, // Código ERP para cat. pai
        'assigned_products' => array(
            '123' => 0, // Código ERP + ordenação
            '456' => 1 // Código ERP + ordenação
        )
    ),
    array(
        'store_code' => 'default',
        'attribute_set_name' => 'Default',
        'include_in_menu' => true,
        'is_active' => true,
        'name' => 'test2',
        'erp_CodigoCategoriaProduto' => 789, // Código ERP
        'parent_erp_CodigoCategoriaProduto' => 456, // Código ERP para cat. pai
        'assigned_products' => array(
            '123' => 0, // Codigo ERP + ordenação
            '456' => 1 // Codigo ERP + ordenação
        )
    ),
)));

$client->endSession ($session);

Obtendo lista de produtos

Este método retorna uma listagem de produtos com todos os websites, categorias, atributos vinculados e seus respectivos valores

$client = new SoapClient ('http://magento/api/soap?wsdl=1');

$session = $client->login ('user', 'pass');

$result = $client->call ($session, 'erp_product.list', $params = null);

$client->endSession ($session);

Parâmetros:

Ex: Filtrando listagem por data de criação e atualização, ordenando por data de criação e atualização, e aplicando limite.

$timestamp = '2016-04-30 01:22:53';
$limit = 10;

$filters = array(
  'or' => array(
    array ('attribute' => 'created_at', 'gt' => $gmt_timestamp),
    array ('attribute' => 'updated_at', 'gt' => $gmt_timestamp)
  )
);

$params = array(
  $filters,
  'order' => array ('e.created_at ASC', 'e.updated_at ASC'),
  'limit' => $limit
);

Criando produtos

Os produtos e seus respectivos campos, valores, imagens e associações serão automaticamente criados ou atualizados.

$client = new SoapClient ('http://magento/api/soap?wsdl=1');

$session = $client->login ('user', 'pass');

$result = $client->call ($session, 'erp_product.create', array(array(
    array(
        'erp_CodigoProduto' => 123, Codigo ERP
        'type_id' => 'configurable',
        'sku' => 'teste1',
        'name' => 'teste1',
        'price' => 199.99,
        'status' => 2,
        'website_codes' => array ('base'),
        'store_codes' => array ('default'),
        'category_codes' => array(),
    ),
    array(
        'erp_CodigoProduto' => 456, // Codigo ERP
        'type_id' => 'simple',
        'parent_sku' => 'teste1',
        'sku' => 'teste2',
        'name' => 'teste2',
        'price' => 299.99,
        'status' => 2,
        'website_codes' => array ('base'),
        'store_codes' => array ('default'),
        'category_codes' => array (),
        'color' => 'red',
        'media_gallery_upload' => true,
        'media_gallery' => array(
            'images' => array(
                array(
                    'type' => 'thumbnail',
                    'content' => base64_encode(file_get_contents('/home/eneias/Desktop/produto.png')),
                    'mime' => 'image/png',
                ),
            ),
        ),
    ),
)));

$client->endSession ($session);

Atualizando quantidade em estoque dos produtos

$client = new SoapClient ('http://magento/api/soap?wsdl=1');

$session = $client->login ('user', 'pass');

$result = $client->call($session, 'erp_stock.update', array(array(
    array(
        'erp_CodigoProduto' => 123, // Codigo ERP
        'qty' => 150,
    ),
    array(
        'erp_CodigoProduto' => 456, // Codigo ERP
        'qty' => 250,
    )
)));

$client->endSession ($session);

Obtendo lista de grupos de clientes

$client = new SoapClient ('http://magento/api/soap?wsdl=1');

$session = $client->login ('user', 'pass');

$result = $client->call ($session, 'erp_customer_group.list', $params = null);

$client->endSession ($session);

Parâmetros:

Ex: Filtrando listagem por data de criação e atualização, excluindo o grupo de cliente com o ID = 0

$timestamp = '2016-04-30 20:31:29';

$params = array ('created_at, updated_at' => array(
    array ('gt' => $timestamp),
    array ('gt' => $timestamp)
  ),
  'customer_group_id' => array ('gt' => 0)
);

Obtendo lista de clientes

$client = new SoapClient ('http://magento/api/soap?wsdl=1');

$session = $client->login ('user', 'pass');

$result = $client->call ($session, 'erp_customer.list', $params = null);

$client->endSession ($session);

Parâmetros:

Ex: Filtrando listagem por data de criação e atualização, ordenando por data de criação e atualização, e aplicando limite.

$timestamp = '2016-04-30 20:33:29';

$filters = array(
    'or' => array(
        array ('attribute' => 'created_at', 'gt' => $timestamp),
        array ('attribute' => 'updated_at', 'gt' => $timestamp)
    )
);

$params = array ($filters,
    'order' => array ('e.created_at ASC', 'e.updated_at ASC'),
    'limit' => 100
);

Obtendo lista de endereços de clientes

$client = new SoapClient ('http://magento/api/soap?wsdl=1');

$session = $client->login ('user', 'pass');

$result = $client->call ($session, 'erp_customer_address.list', $params = null);

$client->endSession ($session);

Parâmetros:

Ex: Filtrando listagem por data de criação e atualização, ordenando por data de criação e atualização, e aplicando limite.

$timestamp = '2016-04-30 20:37:29';

$filters = array(
    'or' => array(
        array ('attribute' => 'created_at', 'gt' => $timestamp),
        array ('attribute' => 'updated_at', 'gt' => $timestamp)
    )
);

$params = array ($filters,
    'order' => array ('e.created_at ASC', 'e.updated_at ASC'),
    'limit' => 100
);

Obtendo lista de pedidos

Este método retorna uma listagem de pedidos incluindo informações sobre os itens e pagamento

Obs: As informações de pagamento serão criptografadas utilizando a chave salva no painel administrativo.

$client = new SoapClient ('http://magento/api/soap?wsdl=1');

$session = $client->login ('user', 'pass');

$result = $client->call ($session, 'erp_order.list', $params = null);

$client->endSession ($session);

Parâmetros:

Ex: Filtrando listagem por data de criação e atualização, ordenando por data de criação e atualização, e aplicando limite.

$timestamp = '2016-04-30 20:50:29';
$state = 'new';
$status = 'pending';

$filters = array (
    'state' => $state,
    'status' => $status,
    'created_at, updated_at' => array(
        array ('gt' => $timestamp),
        array ('gt' => $timestamp)
    )
);

$params = array ($filters,
    'order' => array ('main_table.created_at ASC', 'main_table.updated_at ASC'),
    'limit' => 100
);

Adicionando comentário ao status dos pedidos

$client = new SoapClient ('http://magento/api/soap?wsdl=1');

$session = $client->login ('user', 'pass');

$result = $client->call ($session, 'erp_order.add_comment', array(array(
    array(
        'order_increment_id' => 100000476,
        'is_customer_notified' => true,
        'comment' => 'Comentário para o pedido',
        'status' => 'status_para_pedido'
    ),
    array(
        'order_increment_id' => 100000477,
        'is_customer_notified' => true,
        'comment' => 'Comentário para o pedido',
        'status' => 'status_para_pedido'
    )
)));

$client->endSession ($session);

Cancelando pedidos

$client = new SoapClient ('http://magento/api/soap?wsdl=1');

$session = $client->login ('user', 'pass');

$result = $client->call ($session, 'erp_order.cancel', array(array(
    array(
        'order_increment_id' => 100000476,
    ),
    array(
        'order_increment_id' => 100000477,
    )
)));

$client->endSession ($session);

Faturando pedidos

$client = new SoapClient ('http://magento/api/soap?wsdl=1');

$session = $client->login ('user', 'pass');

$result = $client->call ($session, 'erp_invoice.create', array(array(
    array(
        'invoice_order_increment_id' => 100000476,
        'invoice_id' => 123, // Codigo ERP
        'invoice_items_qty' => array(
            array ('order_item_id' => 123, 'qty' => 10),
            array ('order_item_id' => 456, 'qty' => 20),
        ),
        'invoice_comment' => 'Comentario para fatura',
        'invoice_email' => 'E-mail para envio da fatura',
        'invoice_include_comment' => true
    ),
    array(
        'invoice_order_increment_id' => 100000477,
        'invoice_id' => 456, // Codigo ERP
        'invoice_items_qty' => array(
            array ('order_item_id' => 789, 'qty' => 30),
            array ('order_item_id' => 0123, 'qty' => 40),
        ),
        'invoice_comment' => 'Comentario para fatura',
        'invoice_email' => 'E-mail para envio da fatura',
        'invoice_include_comment' => true
    )
)));

$client->endSession ($session);

Enviando pedidos

$client = new SoapClient ('http://magento/api/soap?wsdl=1');

$session = $client->login ('user', 'pass');

$result = $client->call ($session, 'erp_shipment.create', array(array(
    array(
        'shipment_order_increment_id' => 100000476,
        'shipment_id' => 123, // Codigo ERP
        'shipment_items_qty' => array(
            array ('order_item_id' => 123, 'qty' => 10),
            array ('order_item_id' => 456, 'qty' => 20),
        ),
        'shipment_comment' => 'Comentario para envio',
        'shipment_email' => 'E-mail para envio do envio',
        'shipment_include_comment' => true
    ),
    array(
        'shipment_order_increment_id' => 100000477,
        'shipment_id' => 456, // Codigo ERP
        'shipment_items_qty' => array(
            array ('order_item_id' => 789, 'qty' => 30),
            array ('order_item_id' => 0123, 'qty' => 40),
        ),
        'shipment_comment' => 'Comentario para envio',
        'shipment_email' => 'E-mail para envio da envio',
        'shipment_include_comment' => true
    )
)));

$client->endSession ($session);

Devolvendo pedidos

$client = new SoapClient ('http://magento/api/soap?wsdl=1');

$session = $client->login ('user', 'pass');

$result = $client->call ($session, 'erp_credimemo.create', array(array(
    array(
        'creditmemo_order_increment_id' => 100000476,
        'creditmemo_id' => 123, // Codigo ERP
        'creditmemo_items_qty' => array(
            array ('order_item_id' => 123, 'qty' => 10),
            array ('order_item_id' => 456, 'qty' => 20),
        ),
        'creditmemo_comment' => 'Comentario para envio',
        'creditmemo_email' => 'E-mail para envio do envio',
        'creditmemo_include_comment' => true,
        'creditmemo_refund' => 100
    ),
    array(
        'creditmemo_order_increment_id' => 100000477,
        'creditmemo_id' => 456, // Codigo ERP
        'creditmemo_items_qty' => array(
            array ('order_item_id' => 789, 'qty' => 30),
            array ('order_item_id' => 0123, 'qty' => 40),
        ),
        'creditmemo_comment' => 'Comentario para envio',
        'creditmemo_email' => 'E-mail para envio da envio',
        'creditmemo_include_comment' => true,
        'creditmemo_refund' => 200
    )
)));

$client->endSession ($session);