As Sobrescritas são configurações que permitem substituir campos e configurações de Produtos dentro de Segmentos específicos no sistema da YOM. Permite ajustar preços e condições de venda para um grupo de Comércios previamente segmentados. Isso facilita a personalização de preços e descontos conforme diferentes critérios e períodos de tempo.
Qual é o objetivo das sobrescritas?
Permitir que um Comércio veja de forma correta e personalizada um catálogo de Produtos. Isso implica que o comércio deve ver apenas os produtos que tem atribuídos, assim como preços e condições comerciais corretas.
Consideração de design importante
Embora o objeto de Produto também contenha informação de preço e se o produto está habilitado ou não, tomou-se a decisão de design de que, para todos os clientes (CPG) e todos os comércios, essas características (preço e habilitado) sempre devem vir de um override. Isso com o objetivo de que o preço e a habilitação sejam responsabilidade de um único modelo.
Por que e como as sobrescritas são usadas?
O problema de um comércio ver o catálogo corretamente é um problema que cada CPG resolve de forma particular e com regras de negócio variadas. A solução de força bruta para este problema é guardar o par (produto, comércio) para cada produto e comércio. Embora esta seja uma solução correta, produz uma quantidade gigantesca de dados, por isso é necessário usar uma solução mais eficiente: as sobrescritas. Neste caso são guardados dois pares de dados críticos (produto, segmento), que corresponde à sobrescrita, e (segmento, comércio), que corresponde ao modelo de usersegments. Dessa forma, se dois comércios compartilham segmentos, verão o mesmo catálogo e não é necessário duplicar a informação de produtos. Isso permite reduzir o tamanho dos dados armazenados em várias ordens de magnitude.
Um detalhe importante é que não é necessário que todos os produtos tenham sobrescritas para um segmento, e que um comércio pode pertencer a vários segmentos. Caso um comércio tenha um produto modificado por dois segmentos, essas sobrescritas são aplicadas em ordem de prioridade mais alta para mais baixa no momento de consultar o catálogo. Aplicar uma sobrescrita consiste em modificar os campos que se encontram em Override, para o valor da sobrescrita que está sendo aplicada. Se a sobrescrita não contiver um campo, ele não é modificado. De forma similar, o campo enabled de overrides determina se um produto está habilitado ou não. Um produto está habilitado se o override de menor prioridade tiver como valor true; se tiver false, o produto não é visto por esse comércio.
Para garantir que todos os produtos estejam habilitados e tenham preço por override, costuma-se criar um segmento base. Este é um segmento ao qual todos os comércios pertencem. Nesse segmento base cria-se uma sobrescrita por produto. Essa sobrescrita se caracteriza por ter o campo enabled com valor false e uma prioridade com valor alto (ou seja, os outros overrides sobrescrevem o base). O valor normalmente usado para isso é 10000. Também costuma-se colocar um preço de 99999, mas isso é algo feito para facilitar encontrar algum erro.
Exemplos de negócio
Caso de lista única de preço:
Se um cliente tem uma lista de preços usada para todos os comércios, haverá dois segmentos: o segmento base e o segmento que corresponde à lista de preço única. Todos os comércios terão esses dois segmentos atribuídos. E no segmento de lista única haverá um override para cada produto (se a lista de preço não incluir um produto, o override base vai desligá-lo).
Casos de múltiplas listas de preço:
Um comércio, uma lista: isso ocorre quando um comércio tem uma única lista de preço. Isso pode ocorrer por preços regionais, por condições comerciais, entre outros. Neste caso, se existem N listas de preços, existem N+1 segmentos: o segmento base e um segmento por lista de preço. Cada comércio tem dois segmentos: o segmento base e um dos outros segmentos. Neste caso pode ser que nem todos os produtos tenham override, pois existem produtos exclusivos de certas regiões.
Um comércio com múltiplas listas de preço: Esta situação ocorre quando a segmentação de preços varia por categoria, ou quando existem restrições para vender certos produtos a um comércio (por exemplo, álcool). A seguir são apresentados vários exemplos.
| --- | --- | --- | --- | --- |
A estrutura pricing permite definir Sobrescritas relacionadas ao preço do Produto dentro do Segmento.
| --- | --- | --- | --- | --- |
Exemplo
"pricing": {
"pricePerUnit": 10000,
"operation": "replace",
"discountType": "percentage",
"discountList": [0.05, 0.10],
}
Neste exemplo:
"replace", substituindo o preço."percentage".A estrutura constraints permite definir sobrescritas sobre o mesmo campo no objeto do Produto. Isso é usado principalmente para alterar as unidades mínimas de compra para certo Segmento.
| --- | --- | --- | --- | --- |
Exemplo
{
"minUnit": 12,
"stepSize": 6
}
Neste exemplo, este segmento passa a ser obrigado a comprar no mínimo 12 unidades do Produto, e a adicioná-las em grupos de 6.
A estrutura tax permite definir sobrescritas sobre o mesmo campo no objeto do Produto. Isso é usado principalmente para alterar o imposto de compra para certo Segmento.
| --- | --- | --- | --- | --- |
Exemplo
{
"taxCode": "IVA-15",
"taxRate": 0.15,
"taxName": "IVA"
}