Witam.
Tutaj nie chodzi o to że pomagać nie lubią, ale jak nie wiem to nic nie pisze. A nie pisanie, że mogę pomóc za jakieś wynagrodzenie. To ze za pieniądze łatwo znaleźć wsparcie nie jest niczym nowym i trudnym od wykonania.
Ale wracając do tematu wątku, przedstawiam co ja dokonałem.
Korzystam z dodatkowych modułów multipletablerates i BankPayment (magento-community/BankPayment). W multipletablerates ustawiłem 5 opcji dostawy:
1. Przesyłka pocztowa (przedpłata na konto)
2. Przesyłka pocztowa pobraniowa
3. Przesyłka kurierska (przedpłata na konto)
4. Przesyłka kurierska pobraniowa
5. Odbiór Osobisty
Każda z tych opcji ma różną formę płatności. I w moim przypadku wyglądają następująco:
1. wpłata na konto (korzysta z modułu Bank Payment)
2. płatność przy odbiorze (korzysta z modułu wbudowanego Check/Money Order ustawionego jako Płatność przy odbiorze)
3. wpłata na konto
4. płatność przy odbiorze
5. płatność przy odbiorze, lub wpłata na konto
Następnie w pliku app/code/community/Phoenix/BankPayment/Model/BankPayment.php wkleiłem taki kod:
public function isAvailable($quote=null)
{
$oldAvailable = parent::isAvailable($quote);
// pobieramy kod formy dostawy;
$shipping = Mage::getSingleton('checkout/session')->getQuote()->getShippingAddress()->getShippingMethod();
// tutaj do implementacji według potrzeb
if (eregi("multipletablerates_bestway_75", $shipping))
$available = true;
elseif (eregi("multipletablerates_bestway_79", $shipping))
$available = true;
elseif (eregi("multipletablerates_bestway_77", $shipping))
$available = true;
return $available && $oldAvailable;
}
gdzie multipletablerates_bestway_75/79/77 są wartościami które odczytałem dla każdej z wybranej opcji za pomocą FireBuga.
Aby to lepiej zobrazować, to u mnie te wartości dotyczyły:
multipletablerates_bestway_75 - Przesyłka pocztowa (przedpłata na konto)
multipletablerates_bestway_79 - Odbiór Osobisty
multipletablerates_bestway_77 - Pzesyłka kurierska (przedpłata na konto)
Następnie modyfikacji podlegał drugi plik który stosowany był do wyboru płatności czyli Check/Money Order
znajdujący się app/code/core/Mage/Payment/Model/Method/Checkmo.php
Tam wkleiłem nastepujący kod:
public function isAvailable($quote=null)
{
$oldAvailable = parent::isAvailable($quote);
// pobieramy kod formy dostawy;
$shipping = Mage::getSingleton('checkout/session')->getQuote()->getShippingAddress()->getShippingMethod();
// tutaj do implementacji według potrzeb
if (eregi("multipletablerates_bestway_79", $shipping))
$available = true;
elseif (eregi("multipletablerates_bestway_76", $shipping))
$available = true;
elseif (eregi("multipletablerates_bestway_78", $shipping))
$available = true;
return $available && $oldAvailable;
}
gdzie:
multipletablerates_bestway_79 - Odbiór Osobisty
multipletablerates_bestway_76 - Przesyłka pocztowa pobraniowa
multipletablerates_bestway_78 - Przesyłka kurierska pobraniowa
Tak zmodyfikowane pliki wyświetlają u mnie opcje płatności zgodnie z wcześniejszymi założeniami.
Nie jestem dobrym nauczycielem, ale może w miare zrozumiale opisałem moje rozwiązanie.