2013-03-01 6 views
14

Jeśli pozostawisz ustawienia domyślne, jakie okoliczności musiałoby się zdarzyć, aby Magento 1.7 uznało wózek za porzucony? Gdzie znajduje się kod, który określa to ustalenie?Kiedy Magento uważa wózek za porzucony? Gdzie jest ustawiony ten limit czasu?

Wiem, że prawdopodobnie jest to gdzieś w cudzysłowie, ale nie mogę go znaleźć dla mojego życia.

Zrobiłem trochę Googling, ale tak jak wiele pytań Magento pozostaję z pustymi rękami. Dzięki!

Odpowiedz

11

Jak zapewne wiecie ustawienie znajduje się tutaj:

Admin => System => Konfiguracja => Sprzedaż => Zamówienie => Cytat trwania (dni)

To doda ustawienie baza danych (tabela core_config_data) ze ścieżką:

checkout/koszyk/delete_quote_after

Ta ścieżka jest używana w kodzie na:

app/code/rdzeń/Mage/Sprzedaż/model/Observer.php linii 54

Więc kiedy ktoś jest dodanie czegoś do koszyka zostanie zaktualizowany. Kiedy klient się zaloguje, a jego koszyk będzie dostępny, zostanie zaktualizowany. Gdy koszyk nie jest aktualizowany przez ostatnie 30 dni. Zostanie usunięty.

Dodatkowe informacje:

W przypadku, gdy zastanawiam się, kiedy jest używany ten kod, jest ona wykorzystywana przez cronjob Magento.

check: App/code/rdzeń/Mage/Sprzedaż/etc/config.xml linia 1732

<crontab> 
    <jobs> 
     <sales_clean_quotes> 
      <schedule> 
       <cron_expr>0 0 * * *</cron_expr> 
      </schedule> 
      <run> 
       <model>sales/observer::cleanExpiredQuotes</model> 
      </run> 
     </sales_clean_quotes> 

Nadzieja to pomaga.

+5

Jako często cytowany chory żart, obserwator czyści tylko zakończone zamówienia -> '$ quotes-> addFieldToFilter ('is_active', 0);' a jako porzucone wozy nigdy nie ustawi się 'is_active' od 1 do 0, porzucone wózki gościnne mają nieskończoną moc, a po roku mogą zużywać znaczną przestrzeń do przechowywania danych. –

+0

Dobrze wiedzieć. Dziękuję Ci! – Kale

+0

Przeczytałem, że "Życiorys Kwotowania (dni)" dotyczy tylko (anonimowych) klientów zalogowanych na nogach. Ale wózek od zalogowanego użytkownika * nigdy * nie wygasa. Czy spotkałeś się z tą różnicą w zachowaniu? –

0

Pytanie dotyczyło sytuacji, w której wózek zostaje porzucony, a nie po wygaśnięciu oferty. Ponieważ Magento nie ma funkcji opuszczonego koszyka, jest to dowolne. Różne rozszerzenia, aby je dodać, pozwalają ustawić.

+2

Magento ma "funkcjonalność" porzuconego wózka w tym sensie, że ma wózki, które uważa za opuszczone, po prostu nie ma mechanizmu do robienia czegokolwiek z tymi wózkami. – Kale

0

W naszym e-commerce mamy przesłonięte metody cleanExpiredQuotes wewnątrz app/code/core/Mage/Sprzedaż/model/Observer.php

Nasza zasada biznesu wygląda następująco:

$quotes = Mage::getModel('sales/quote')->getCollection();  
$quotes->addFieldToFilter('created_at', array('to'=>date("Y-m-d", time()-$lifetime))); 

$quotes->addFieldToFilter('is_active', 1); 
foreach ($this->getExpireQuotesAdditionalFilterFields() as $field => $condition) { 
    $quotes->addFieldToFilter($field, $condition); 
} 
$quotes->walk('delete');