/** * Observes grid records update and depends on data updates records in grid too * * @param Varien_Event_Observer $observer * @return Enterprise_SalesArchive_Model_Observer */ public function salesUpdateGridRecords(Varien_Event_Observer $observer) { if (!$this->_config->isArchiveActive()) { return $this; } $proxy = $observer->getEvent()->getProxy(); $archiveEntity = $this->_archive->detectArchiveEntity($proxy->getResource()); if (!$archiveEntity) { return $this; } $ids = $proxy->getIds(); $idsInArchive = $this->_archive->getIdsInArchive($archiveEntity, $ids); // Exclude archive records from default grid rows update $ids = array_diff($ids, $idsInArchive); // Check for newly created shipments, creditmemos, invoices if ($archiveEntity != Enterprise_SalesArchive_Model_Archive::ORDER && !empty($ids)) { $relatedIds = $this->_archive->getRelatedIds($archiveEntity, $ids); $ids = array_diff($ids, $relatedIds); $idsInArchive = array_merge($idsInArchive, $relatedIds); } $proxy->setIds($ids); if (!empty($idsInArchive)) { $this->_archive->updateGridRecords($archiveEntity, $idsInArchive); } return $this; }