We have two types of customer:
- The general public, who MUST pay by credit card.
- Account holders, who are invoiced later.
Both types of customer must have immediate access to the shop and the ability to checkout, upon registration. (So no deferred authorisation-to-shop).
There is no Zencart Payment Module for "account holders".
3rd party payment modules that facilitate invoicing don't suit our purpose. Scott Wilson's mod requires that the customer is first moved into a group discount category. (Sensible approach if you want the payment option to show ONLY when a customer in that group logs in - but for us no good, as we have to allow a customer to start shopping immediately - see above.)
So... in the ABSENCE of a mod that facilitates Account Holder, we have "hijacked" an existing mod.
All we needed is a radio button on the payment options page (Stage 2 of checkout), that says "Account Holders".
We simply re-named the DEFINES in the COD mod to "Account Holders"
define('MODULE_PAYMENT_COD_TEXT_TITLE', 'Account Holders');
define('MODULE_PAYMENT_COD_TEXT_DESCRIPTION', 'Account Holders');
So... By installing and enabling the COD mod in our zencart, we have a radio button that now appears on stage 2 of the checkout, called "Account Holders". (even though in reality, its the COD mod that's driving it.)
It achieves its purpose magnificently! ... but only if your products are "physical".
We now have a client that sells software, and he too has "Account Holders". So in order for this payment option to show up at stage 2 of the checkout, our "hijacked COD mod" now needs to be ENABLED for virtual products.
All you need to bear in mind is that we are NOT using COD for its intended function - "Cash on Delivery" - We just need an option to show up at stage 2 of checkout that says "Account Holders" and that this option is good for any Product Type - physical or virtual.