Pim-community-dev: Edit massal - Diperbarui Pada

Dibuat pada 16 Jun 2016  ·  11Komentar  ·  Sumber: akeneo/pim-community-dev

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

Mungkin sama seperti di https://github.com/akeneo/pim-community-dev/issues/2644 (yang ditutup tanpa penjelasan)

Saat menambahkan nilai ke daya tarik produk melalui edit massal, pembuatan versi diperbarui dengan stempel waktu yang benar, tetapi stempel waktu yang diperbarui produk tidak.

Ini dapat diverifikasi dengan mengedit massal satu produk dan menjalankan php app/console --env=prod pim:product:query '[{"field":"updated","operator":">= WITH TIME","value":"YYYY-MM-DD HH:mm:ss"}]'

Ini berdampak besar pada beberapa profil ekspor yang menggunakan opsi EnhancedConnectors fromLastExecution .

Catatan. MongoDB sedang digunakan -> Edit massal akan menggunakan \Pim\Bundle\CatalogBundle\Doctrine\MongoDBODM\Saver\ProductSaver::saveAll

bug to reproduce

Komentar yang paling membantu

Imo. bisa ditutup. Opini?

Semua 11 komentar

Jadi, ini mungkin ada hubungannya dengan fakta bahwa \Pim\Bundle\CatalogBundle\EventSubscriber\TimestampableSubscriber hanya mendengarkan acara Doctrines prePersist dan preUpdate . \Pim\Bundle\CatalogBundle\Doctrine\MongoDBODM\Saver\ProductSaver::saveAll sekali tidak mengirimkan acara tersebut.

Setelah memeriksanya, tanggal dibuat di \Pim\Bundle\TransformBundle\Normalizer\MongoDB\ProductNormalizer::normalize saat menjalankan saveAll . Masih menjadi misteri mengapa EnhancedConnectors fromLastExecution tidak memperhitungkan produk ini. Apakah ada kesalahan zona waktu yang tidak cocok di suatu tempat?

Tampaknya MondoDB normalizedData.updated tidak diperbarui ...

Hai Matias,

Apa yang dimaksud dengan "Saat menambahkan nilai ke atribut produk"? Apakah Anda mencoba mengubah nilai produk yang umum? Saya mencoba mereproduksinya pada penginstalan baru tetapi bidang produk updated_at telah diperbarui dengan baik.
Dalam info sistem Anda, tidak ada EnhancedConnectors , normal?

Apa yang dimaksud dengan "Saat menambahkan nilai ke atribut produk"? Apakah Anda mencoba mengubah nilai produk yang umum? Saya mencoba mereproduksinya pada instalasi baru tetapi bidang produk updated_at telah diperbarui dengan baik.

Ya, ubah atribut mana saja sehingga produk tersebut ditandai untuk diubah, sehingga dipertahankan.

Di info sistem Anda, tidak ada EnhancedConnectors, normal?

Tidak relevan

Saat melakukan pengeditan massal (metode apa pun yang akan memanggil \Pim\Bundle\CatalogBundle\Doctrine\MongoDBODM\Saver\ProductSaver::saveAll ), berikut ini akan disebut \Pim\Bundle\TransformBundle\Normalizer\MongoDB\ProductNormalizer::normalize
Karena kita berada di cabang 1.4.x, lihatlah dengan baik bahwa nilai produk _updated_ diperbarui di sini
https://github.com/akeneo/pim-community-dev/blob/v1.4.25/src/Pim/Bundle/TransformBundle/Normalizer/MongoDB/ProductNormalizer.php#L87
Tetapi pertanyaan melalui penangan mongo ditargetkan terhadap produk normalizedData dan itu tidak diperbarui dengan stempel waktu created dan updated (https://github.com/akeneo /pim-community-dev/blob/v1.4.25/src/Pim/Bundle/TransformBundle/Normalizer/MongoDB/ProductNormalizer.php#L99).

Sebagai solusinya, kami mendengarkan acara akeneo.storage.pre_save_all dan memperbarui stempel waktu produk di sana.

Berhubungan / diduplikasi oleh # 5006
@ aRn0D ini bukan pertanyaan, ini bug; sesuai # 5006 berfungsi dalam mode ORM tetapi tidak di ODM

Naik.
Saya mereproduksi bug itu dalam contoh PIM kami.

Normalizer memperbarui bidang "root" yang diperbarui dengan cepat tetapi tidak memperbaruinya ke objek produk. Jadi, seperti yang dikatakan @mathewrapid :

  • di sini, bidang akar yang diperbarui tidak apa-apa (https://github.com/akeneo/pim-community-dev/blob/v1.4.25/src/Pim/Bundle/TransformBundle/Normalizer/MongoDB/ProductNormalizer.php#L87);
  • dan pada NormalizedData, itu adalah memori objek produk yang dinormalisasi (https://github.com/akeneo/pim-community-dev/blob/v1.4.25/src/Pim/Bundle/TransformBundle/Normalizer/MongoDB/ProductNormalizer .php # L99)

Bidang produk diperbarui dan normalizedData.updated selalu tidak sinkron. NormalizedData terlambat satu langkah.

Saya pikir normalizer tidak perlu melakukan $data['updated'] = $this->mongoFactory->createMongoDate(); jika data disetel dalam model produk. Ini adalah normalizer, bukan pembaru.

Faktanya adalah bahwa produk harus diperbarui (bidang jadi diperbarui) sebelum normalisasi.

+1

Hai @mathewrapid , @jlestel , @bmarrot !

FYI, masalah ini (PIM-6038) telah diperbaiki di versi berikut,

Salam Hormat,

Imo. bisa ditutup. Opini?

Seperti yang ditunjukkan @nidup di https://github.com/akeneo/pim-community-dev/issues/4620#issuecomment -279428030, ini telah diperbaiki di PIM-6038.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat