Modificadores de dados
O catálogo de transformações que a importação de produtos pode aplicar a um campo de cada linha da planilha, e quando usar cada uma.
Um modificador de dados é uma pequena regra que a importação de produtos aplica a um campo de todas as linhas do arquivo, antes de gravar. Em vez de editar a planilha do fornecedor, você diz "some 10% ao preço", "coloque o prefixo NOVO no nome" ou "troque Cx por Caixa na descrição". O fornecedor continua mandando o mesmo arquivo todo mês, e a regra continua valendo.
Esta rota apenas lista os tipos de modificador disponíveis (com nome, se pedem valor e a que tipo de campo se aplicam). Quem os aplica é o passo de execução da importação, que recebe a lista em options.data_modifiers.
Quando usar
- Margem sobre a tabela do fornecedor.
percent_markupno campopricecomvalue30. - Desconto de campanha.
percent_discountnopricecomvalue15. - Preço de caixa para unidade.
multiplynopricecom fator0.1. - Padronizar nomes.
text_prefixoutext_suffixnoname. - Corrigir abreviações.
text_replacenadescription. - Forçar um valor em todas as linhas.
set_valueemstatusouvendor_id. - Arredondar.
roundnopricedepois de ummultiply.
Listar os modificadores
/api/v1/admin/data-modifiersAdminListar os tipos de modificador de dados
Exige o privilégio manage_settings. Não tem parâmetros. Devolve uma lista (não um objeto).
Exemplo de requisição
curl "$BASE_URL/api/v1/admin/data-modifiers" \
-H "Authorization: Bearer $TOKEN"Resposta
[
{ "type": "none", "label": "No modifier", "label_pt": "Sem modificador", "needs_value": false, "needs_value2": false, "applies_to": "all" },
{ "type": "percent_markup", "label": "Increase by %", "label_pt": "Aumentar em %", "needs_value": true, "needs_value2": false, "applies_to": "numeric" },
{ "type": "percent_discount", "label": "Decrease by %", "label_pt": "Diminuir em %", "needs_value": true, "needs_value2": false, "applies_to": "numeric" },
{ "type": "fixed_add", "label": "Add fixed amount", "label_pt": "Adicionar valor fixo", "needs_value": true, "needs_value2": false, "applies_to": "numeric" },
{ "type": "fixed_subtract", "label": "Subtract fixed amount", "label_pt": "Subtrair valor fixo", "needs_value": true, "needs_value2": false, "applies_to": "numeric" },
{ "type": "multiply", "label": "Multiply by factor", "label_pt": "Multiplicar por fator", "needs_value": true, "needs_value2": false, "applies_to": "numeric" },
{ "type": "round", "label": "Round to N decimals", "label_pt": "Arredondar para N decimais", "needs_value": true, "needs_value2": false, "applies_to": "numeric" },
{ "type": "text_prefix", "label": "Add text prefix", "label_pt": "Adicionar prefixo de texto", "needs_value": true, "needs_value2": false, "applies_to": "text" },
{ "type": "text_suffix", "label": "Add text suffix", "label_pt": "Adicionar sufixo de texto", "needs_value": true, "needs_value2": false, "applies_to": "text" },
{ "type": "text_replace", "label": "Find and replace", "label_pt": "Localizar e substituir", "needs_value": true, "needs_value2": true, "applies_to": "text" },
{ "type": "set_value", "label": "Set fixed value", "label_pt": "Definir valor fixo", "needs_value": true, "needs_value2": false, "applies_to": "all" }
]Campos da resposta
typestringnonepercent_markuppercent_discountfixed_addfixed_subtractmultiplyroundtext_prefixtext_suffixtext_replaceset_valuedata_modifiers[].type.labelstringlabel_ptstringneeds_valuebooleantrue quando o modificador exige value.needs_value2booleantrue quando exige também value2 (só text_replace).applies_tostringnumerictextallErros
| Status | Quando | Corpo |
|---|---|---|
| 401 | Token ausente ou inválido | {"error":"invalid or expired token"} |
| 403 | Usuário que não é administrador | {"error":"admin access required"} |
| 403 | Falta o privilégio manage_settings | {"error":"insufficient privileges","required":"manage_settings"} |
Como cada modificador transforma o valor
Cada item de data_modifiers tem este formato:
{ "type": "percent_markup", "value": "10", "value2": "", "field_key": "price" }Campos de um item de data_modifiers
typestringobrigatóriovaluestringvalue2stringtext_replace.field_keystringobrigatórioprice, name).type | O que faz com a célula | Exemplo (value, entrada, saída) |
|---|---|---|
none | Não altera. | 49.90 vira 49.90 |
percent_markup | Soma o percentual. | 10, 49.90 vira 54.89 |
percent_discount | Subtrai o percentual. | 10, 49.90 vira 44.91 |
fixed_add | Soma uma quantia. | 5, 49.90 vira 54.90 |
fixed_subtract | Subtrai uma quantia. | 5, 49.90 vira 44.90 |
multiply | Multiplica pelo fator. | 0.1, 499.00 vira 49.90 |
round | Arredonda para N casas (value; se não for um inteiro, usa 2). | 1, 49.96 vira 50.0 |
text_prefix | Escreve o texto antes. | NOVO , Camiseta vira NOVO Camiseta |
text_suffix | Escreve o texto depois. | (importado), Camiseta vira Camiseta (importado) |
text_replace | Troca todas as ocorrências de value por value2. | Cx por Caixa, Cx 12 un vira Caixa 12 un |
set_value | Ignora a célula e grava value. | A, qualquer coisa vira A |
Regras que evitam surpresa:
- Texto de entrada. O modificador trabalha sobre o texto da célula. Os numéricos aceitam o formato brasileiro (
1.234,56) e o prefixoR$. - Saída numérica. Os numéricos devolvem sempre duas casas decimais com ponto (
54.89), excetoround, que usa o número de casas pedido. Como a conversão acontece antes de a plataforma interpretar o preço, informeprice_format(decimaloucents) em vez de deixarauto, para o resultado ser lido do jeito que você espera. - Célula vazia. Os modificadores numéricos deixam a célula vazia como está.
set_valuee os de texto agem mesmo assim. - Ordem. Vários modificadores no mesmo
field_keyrodam na ordem da lista, cada um sobre o resultado do anterior. Façamultiplyantes deround. - Erro. Se a célula não for um número (ou o
valuenão for válido), a linha registra ummodifier errorcom o campo e o motivo, e o valor original é mantido. - Percentuais.
percent_markupepercent_discountrecebem o percentual emvaluecomo número comum:10significa 10%.
Campos aceitos em field_key
sku, name, slug, price, list_price, cost_price, quantity, min_quantity, max_quantity, quantity_step, status, category_id, vendor_id, description, short_description, promo_text, weight, length, width, height, free_shipping, shipping_freight, meta_title, meta_description, meta_keywords, barcode, out_of_stock_actions, zero_price_action. Um field_key fora desta lista é ignorado em silêncio.