Przedstawiam swoje rozwiązanie problemu:
Do przeprowadzenia zmian potrzebujemy moduł: shiptopay oraz musimy utworzyć kopię modułu cashondelivery.
Tworząc kopię w module cashondelivery dokonujemy zmian wszystkich (bez wyjątku) wystąpień cashondelivery na np. cashondelivery_shop.To samo oczywiście z nazwami plików.
Po tej zamianie mamy niezależny duplikat modułu płatności, co pozwala np. na zmianę ikony dla modułu czy niezależne określenie sposobów płatności przy odbiorze dla kuriera (cashondelivery) i dla odbioru w sklepie (cashondelivery_shop) - czyli np. "Akceptujemy karty, gotówkę itp.."
Korzystając z ship2pay przydzielamy nowy moduł wyłącznie dla odbioru osobistego w sklepie.
Teraz najważniejsza sprawa, czyli mail potwierdzający:
W pliku validation.php zmieniamy:
/* Validate order */
if (Tools::getValue('confirm'))
{
$customer = new Customer((int)$cart->id_customer);
$total = $cart->getOrderTotal(true, Cart::BOTH);
$cashOnDelivery->validateOrder((int)$cart->id, Configuration::get('PS_OS_PREPARATION'), $total, $cashOnDelivery->displayName, NULL, array(), NULL, false, $customer->secure_key);
$order = new Order((int)$cashOnDelivery->currentOrder);
Tools::redirectLink(__PS_BASE_URI__.'order-confirmation.php?key='.$customer->secure_key.'&id_cart='.(int)($cart->id).'&id_module='.(int)$cashOnDelivery->id.'&id_order='.(int)$cashOnDelivery->currentOrder);
}
na:
/* Validate order */
if (Tools::getValue('confirm'))
{
$customer = new Customer((int)$cart->id_customer);
$total = $cart->getOrderTotal(true, Cart::BOTH);
$conf = Configuration::getMultiple(array('PS_SHOP_NAME', 'PS_SHOP_ADDR1', 'PS_SHOP_ADDR2', 'PS_SHOP_CODE', 'PS_SHOP_CITY', 'PS_SHOP_COUNTRY', 'PS_SHOP_STATE', 'PS_SHOP_PHONE'));
$mailVars = array(
'{delivery_company}' => $conf['PS_SHOP_NAME'],
'{delivery_firstname}' => '',
'{delivery_lastname}' => '',
'{delivery_address1}' => $conf['PS_SHOP_ADDR1'],
'{delivery_address2}' => $conf['PS_SHOP_ADDR2'],
'{delivery_city}' => $conf['PS_SHOP_CITY'],
'{delivery_postal_code}' => $conf['PS_SHOP_CODE'],
'{delivery_country}' => $conf['PS_SHOP_COUNTRY'],
'{delivery_state}' => '',
'{delivery_phone}' => $conf['PS_SHOP_PHONE']);
$cashOnDelivery_shop->validateOrder((int)$cart->id, Configuration::get('PS_OS_PREPARATION'), $total, $cashOnDelivery_shop->displayName, NULL, $mailVars , NULL, false, $customer->secure_key);
$order = new Order((int)$cashOnDelivery_shop->currentOrder);
Tools::redirectLink(__PS_BASE_URI__.'order-confirmation.php?key='.$customer->secure_key.'&id_cart='.(int)($cart->id).'&id_module='.(int)$cashOnDelivery_shop->id.'&id_order='.(int)$cashOnDelivery_shop->currentOrder);
}
W ramach kosmetyki poprawiamy plik order_conf.html i .txt zmieniając nieprawidłowe tłumaczenie: "Wysyłka" na "Sposób dostawy". Usuwamy "Dostawca:" oraz zmieniamy "Adres dostawy" na "Adres dostawy/odbioru".
Koniec
W ten sposób uzyskaliśmy prawdziwy moduł "Płatność w sklepie" oraz logiczny mail potwierdzający złożenie zamówienia gdzie jako sposób dostawy pojawi się odbiór w sklepie, a w miejscu adresu dostawy/odbioru pojawi się adres sklepu a nie dane klienta.
Co najważniejsze, rozwiązanie to w żaden sposób nie narusza funkcjonowania dotychczasowych modułów, więc można je wprowadzić z marszu w niemal każdej instalacji.
Pozdrawiam.