Dear Community
I do have a question about a small extension which I wrote. Would be great if anybody could tell me what I was doing wrong, that the Invoice Option still is displayed also when I'm using the checkout as guest.
/app/etc/modules/Shiftmint_Disable_GuestInvoice.xml
<?xml version="1.0"?> <config> <modules> <Shiftmint_Disable_GuestInvoice> <active>true</active> <codePool>local</codePool> <depends> <Mage_Payment/> </depends> </Shiftmint_Disable_GuestInvoice> </modules> </config>
/app/code/local/Shiftmint/Disable_GuestInvoice/etc/config.xml
I<?xml version="1.0"?> <config> <modules> <Shiftmint_Disable_GuestInvoice> <version>0.0.1</version> </Shiftmint_Disable_GuestInvoice> </modules> <global> <models> <Shiftmint_Disable_GuestInvoice> <class>Shiftmint_Disable_GuestInvoice_Model</class> </Shiftmint_Disable_GuestInvoice> </models> <events> <payment_method_is_active> <observers> <Shiftmint_Disable_GuestInvoice> <type>singleton</type> <class>Shiftmint_Disable_GuestInvoice/Observer</class> <method>paymentMethodIsActive</method> </Shiftmint_Disable_GuestInvoice> </observers> </payment_method_is_active> </events> </global> </config>
/app/code/local/Shiftmint/Disable_GuestInvoice/Model/Observer.php
<?php class Shiftmint_Disable_GuestInvoice_Model_Observer { public function paymentMethodIsActive($observer) { $instance = $observer->getMethodInstance(); $result = $observer->getResult(); if ($instance->getCode() == "IsrInvoice") { if (Mage::getSingleton('customer/session')->isLoggedIn()) { $result->isAvailable = false; } else { $result->isAvailable = true; } } } }
Many thanks in advance!
Stefan
Just guessing.. you didn't save the result, nor set new result object (after data modification) into your observer? Try right after:
$result->isAvailable = false;
or
$result->isAvailable = true;
save your result modifications:
$result->save();
and finally reset your observer's result object:
$observer->setResult($result);
hmm.. did not change anything.
thx, anyway.
Dear @shiftmint,
In function paymentMethodIsActive($observer), please try edit: "$result = $observer->getResult();" to $result = $observer->getEvent()->getResult();