Joshua,
Thanks for you input. This actually helped me go down another path. What I ended up having to do is the following...
-
I added a custom field to the PaymentOptions class called IsInternalOnly.
-
I updated my payment methods to have IsInternalOnly set for those that I wanted only displayed internally. This was done through the Modules Application -> E-commerce -> Classes -> Payment Methods -> Fields.
-
I took your advice and cloned the PaymentSelector and added a property to the form control called AllowInternalPaymentMethods and had it default to false. I also updated the where clause to evaluate AllowInternalPaymentMethods and if this was false, I added "IsInternalOnly = 0" to. This was done through the Form Controls -> Payment Selector Custom -> Properties.
-
In order to account for Internal Only Payment methods, I updated the field OrderPaymentOptionID in the Order Application to use my new Form control Payment Selector Custom. This was done by going to Module -> E-commerce -> Classes -> Order -> Alternate Forms -> Update Billing. Once there I selected the OrderPaymentMethodID field and set the form control to my new Payment Selector Custom control.
-
So step 4 allowed users who have access to the Orders Application to now use Cash as an option. For external users I needed to clone the web part PaymentMethodSelector. This was done through the Web Parts application.
-
Once I cloned PaymentSelectorMethod web part to create PaymentSelectorMethodCustom, I was able to set this ascx control to utilize my new PaymentSelectorCustom control created in step 3.
-
Finally, I replaced the standard PaymentMethodSelector web part with my custom web part PaymentMethodSelectorCustom within my checkout step page type that was part of the shopping cart. This was done through the Pages application and selecting my payment method page that is part of the checkout process.
I know this is a lot to digest but this finally got me the solution I needed of having different payment methods for internal users and external users.
My only question on this is if anything I did here would cause issues in an upgrade? I did everything through the UI through cloning and fields so I think I should be good here but thought I would ask.