Pim-community-dev: Edição em massa - Atualizado em

Criado em 16 jun. 2016  ·  11Comentários  ·  Fonte: akeneo/pim-community-dev

akeneo-pim-system-info_2016-06-16_14-41.txt

Provavelmente o mesmo que em https://github.com/akeneo/pim-community-dev/issues/2644 (que está fechado sem explicação)

Ao adicionar valores aos atributos do produto por meio da edição em massa, o controle de versão é atualizado com o carimbo de data / hora correto, mas o carimbo de data / hora atualizado dos produtos não é.

Isso pode ser verificado editando em massa um produto e executando o php app/console --env=prod pim:product:query '[{"field":"updated","operator":">= WITH TIME","value":"YYYY-MM-DD HH:mm:ss"}]'

Isso tem um grande impacto em alguns perfis de exportação que usam a opção EnhancedConnectors fromLastExecution .

Observação. MongoDB está em uso -> Edição em massa usará \Pim\Bundle\CatalogBundle\Doctrine\MongoDBODM\Saver\ProductSaver::saveAll

bug to reproduce

Comentários muito úteis

Imo. pode ser fechado. Opiniões?

Todos 11 comentários

Então, isso pode ter a ver com o fato de que \Pim\Bundle\CatalogBundle\EventSubscriber\TimestampableSubscriber está apenas ouvindo Doctrines prePersist e preUpdate eventos. O \Pim\Bundle\CatalogBundle\Doctrine\MongoDBODM\Saver\ProductSaver::saveAll não emite esses eventos de forma alguma.

Depois de examiná-lo, as datas são criadas em \Pim\Bundle\TransformBundle\Normalizer\MongoDB\ProductNormalizer::normalize ao executar o saveAll . Ainda é um mistério porque o EnhancedConnectors fromLastExecution não leva em consideração esses produtos. Existe um erro de correspondência de fuso horário em algum lugar?

Parece que o normalizedData.updated do MondoDB não é atualizado ...

Olá Matias,

O que significa "Ao adicionar valores aos atributos do produto"? Você tentou alterar o valor de um produto comum? Tentei reproduzi-lo em uma nova instalação, mas o campo do produto updated_at foi bem atualizado.
Nas informações do seu sistema, não existe EnhancedConnectors , normal?

O que significa "Ao adicionar valores aos atributos do produto"? Você tentou alterar o valor de um produto comum? Tentei reproduzi-lo em uma nova instalação, mas o campo do produto updated_at foi bem atualizado.

Sim, altere qualquer atributo para que o produto seja marcado para alterações, para assim ser persistido.

Nas informações do seu sistema, não há EnhancedConnectors, normal?

Irrelevante

Ao fazer edições em massa (sejam quais forem os métodos que chamarão \Pim\Bundle\CatalogBundle\Doctrine\MongoDBODM\Saver\ProductSaver::saveAll ) o seguinte será chamado de \Pim\Bundle\TransformBundle\Normalizer\MongoDB\ProductNormalizer::normalize
Como estamos no branch 1.4.x, veremos que o valor dos produtos _atualizado_ é atualizado aqui
https://github.com/akeneo/pim-community-dev/blob/v1.4.25/src/Pim/Bundle/TransformBundle/Normalizer/MongoDB/ProductNormalizer.php#L87
Mas as consultas por meio do manipulador mongo são direcionadas aos produtos normalizedData e não são atualizados com os novos carimbos de data / hora created e updated (https://github.com/akeneo /pim-community-dev/blob/v1.4.25/src/Pim/Bundle/TransformBundle/Normalizer/MongoDB/ProductNormalizer.php#L99).

Como solução alternativa, estamos ouvindo o evento akeneo.storage.pre_save_all e atualizando os carimbos de data / hora dos produtos.

Relacionado / duplicado por # 5006
@ aRn0D isso não é uma pergunta, é um bug; conforme # 5006 funciona no modo ORM, mas não no ODM

Pra cima.
Reproduzi esse bug em nossa instância PIM.

O normalizador atualiza o campo "raiz" atualizado imediatamente, mas não o atualiza para o objeto do produto. Então, como @mathewrapid disse:

  • aqui, o campo raiz atualizado está OK (https://github.com/akeneo/pim-community-dev/blob/v1.4.25/src/Pim/Bundle/TransformBundle/Normalizer/MongoDB/ProductNormalizer.php#L87);
  • e no normalizedData, é a memória do objeto do produto que é normalizada (https://github.com/akeneo/pim-community-dev/blob/v1.4.25/src/Pim/Bundle/TransformBundle/Normalizer/MongoDB/ProductNormalizer .php # L99)

O campo do produto atualizado e normalizedData.updated estão sempre fora de sincronia. NormalizedData está um passo atrasado.

Acho que o normalizador nunca precisa fazer $data['updated'] = $this->mongoFactory->createMongoDate(); se os dados estiverem configurados no modelo do produto. É um normalizador, não um atualizador.

O fato é que o produto tem que ser atualizado (campo então atualizado) antes da normalização.

+1

Oi @mathewrapid, @jlestel, @bmarrot!

Para sua informação, este problema (PIM-6038) foi corrigido nas seguintes versões,

Atenciosamente,

Imo. pode ser fechado. Opiniões?

Como @nidup apontou em https://github.com/akeneo/pim-community-dev/issues/4620#issuecomment -279428030, isso foi corrigido no PIM-6038.

Esta página foi útil?
0 / 5 - 0 avaliações

Questões relacionadas

a2xchip picture a2xchip  ·  5Comentários

gotgelf picture gotgelf  ·  5Comentários

lpxavi picture lpxavi  ·  3Comentários

ronn0 picture ronn0  ·  4Comentários

paulchubatyy picture paulchubatyy  ·  5Comentários