discovery-tecnologia/dsc-mercado-livre

Inserir Atributos de Categoria

Closed this issue · 7 comments

@dilowagner, tudo bem.
Poderia dar um exemplo de como adicionar os atributos de uma categoria no momento da publicação do produto. Encontrei apenas para variação.

$attributeCombination = new AttributeCombination();
// E necessario selecionar os atributos da Categoria e setar no AttributeCombination

// Primeira variacao
$variation = new Variation();
$variation->setPrice(120);
$variation->setAvailableQuantity(10);
$variation->addAttributeCombination($attributeCombination);
$variation->setPictureIds([
    'http://mla-s2-p.mlstatic.com/968521-MLA20805195516_072016-O.jpg'
]);

$item->addVariation($variation);

Originally posted by @ombrodrigo in #16 (comment)

Opa @ombrodrigo
Abri outra Issue aqui...
Vou criar um exemplo...

@ombrodrigo basicamente, vc precisa consultar antes os atributos da Categoria (com o ID da Categoria)

<?php
// Consideramos que já existe um autoloader compatível com a PSR-4 registrado

// DEMAIS use`s
use Dsc\MercadoLivre\Requests\Category\CategoryService;

// E NECESSARIO ESTAR AUTENTICADO...

$meli = new Meli('APP-ID', 'SECRET-ID');

$item = new Item();
$item->setTitle('Test item - no offer')
     ->setCategoryId('ID-CATEGORIA');

// Consulta os atributos de uma determinada categoria
$service = new CategoryService();
$attributes = $service->findCategoryAttributes('ID-CATEGORIA');

$item->setAttributes($attributes);

Muito obrigado.

Olá, sobre os attributes como eu deveria preenche-los no caso do erro abaixo?

"Couldn't obtain a valid item condition mapping from ITEM_CONDITION attribute. Please provide a value_id.",
"error":"item.attributes.condition.invalid"

Alguns atributos são obrigatórios para determinadas categorias, eu deveria buscá-los antes, correto? E com essa informação em mãos montar inputs dinamicamente para que seja preenchidos e na hora da criação do anúncio suprir com o que foi informado?

Isso mesmo @diegodario88
Talvez, vc precise exibir as Categorias para o seu usuário...
E depois que ele selecionar determinada Categoria...
Vc exibiria outro Input Select para ele selecionar os Atributos de acordo com a Categoria selecionada

@dilowagner Estou um pouco confuso com relação ao attributes ainda, por exemplo os attributes que são do tipo string eu apenas seto o valueName dele e os que são do tipo Lista eu preciso setar o valueName e o valueId?

Eh bem complexo essa parte de Atributos mesmo kkkkk
Pela DOC quando o value_type for list, vc pode enviar na chave values, que aqui na lib esta mapeado por uma Collection da classe AtributeValue

https://github.com/discovery-tecnologia/dsc-mercado-livre/blob/master/src/Requests/Category/Attribute.php#L67

Exemplo da DOC

{
   "id": "COLOR",
   "name": "Color",
   "tags": {
     "allow_variations": true,
     "hidden": true
   },
   "type": "color",
   "value_type": "list",
   "values": [
     {
       "id": "52049",
       "name": "Negro",
       "metadata": {
         "rgb": "000000"
       }
     },
     {
       "id": "51993",
       "name": "Rojo",
       "metadata": {
         "rgb": "FF0000"
       }
     }
   ],
   "attribute_group_id": "DFLT",
   "attribute_group_name": "Otros"
 },

https://developers.mercadolivre.com.br/pt_br/atributos