/**
  * 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;
 }