Fixed problems with payment list on checkout page.
authorChuck Scott <cscott@gaslightmedia.com>
Fri, 15 Dec 2017 20:18:40 +0000 (15:18 -0500)
committerChuck Scott <cscott@gaslightmedia.com>
Fri, 15 Dec 2017 20:18:40 +0000 (15:18 -0500)
Now properly checks for default payment option and tries to display that option.
Now checks for management settings for which payment options are enabled.
Now checks events in the cart to determine which available payment methods are enabled for all events in the cart.
Minor update to admin custom fields page for events to support new fields.

classes/regCartSupport.php
models/front/registrations/checkout.php
views/admin/registrations/eventEditCustomFields.html
views/front/registrations/checkout.html

index cef7cbd..fa61942 100644 (file)
@@ -217,6 +217,10 @@ class GlmRegCartSupport
         if ($this->cart['events']) {
             foreach ($this->cart['events'] as $eventKey => $event) {
 
+                // Get accepted payment methods
+                $e = $RegEvent->getEntry($event['reg_event']);
+                $this->cart['events'][$eventKey]['payment_methods'] = $e['payment_methods'];
+
                 // Get list of event classes requested for this event
                 $this->cart['events'][$eventKey]['classes'] = $RequestClass->getList("T.reg_request_event =  ".$event['id']);
 
index d3049c2..c95c452 100644 (file)
@@ -218,14 +218,6 @@ class GlmMembersFront_registrations_checkout extends GlmRegCartSupport
             $regReq['fieldData']['cc_cvv'] = $actionData['cardData']['cc_cvv'];
         }
 
-        // Set default payment method
-        $payMethod = $this->config['default_payment_method'];
-
-        // Get any payment method specified or selected on checkout attempt
-        if (isset($actionData['payMethod'])) {
-            $payMethod = $actionData['payMethod'];
-        }
-
         // Add credit card and other payment field data to $regAccount['fieldData'] for use on form
         $regAccount['fieldData']['cc_type'] = $regReq['fieldData']['cc_type'];
         $regAccount['fieldRequired']['cc_type'] = true;
@@ -262,6 +254,24 @@ class GlmMembersFront_registrations_checkout extends GlmRegCartSupport
         $Management = new GlmDataRegistrationsManagement($this->wpdb, $this->config);
         $management = $Management->getEntry(1);
 
+        // Get accepted pay methods and block out any not selected for an event
+        $availPaymentMethods = $management['reg_payment_methods']['bitmap'];
+        foreach ($this->cart['events'] as $event) {
+            foreach ($event['payment_methods']['bitmap'] as $payMethodKey=>$payMethodVal) {
+                if (!$payMethodVal['default']) {
+                    $availPaymentMethods[$payMethodKey]['default'] = 0;
+                }
+            }
+        }
+
+        // Set default payment method
+        $payMethod = $this->config['default_payment_method'];
+
+        // Get any payment method specified or selected on checkout attempt
+        if (isset($actionData['payMethod'])) {
+            $payMethod = $actionData['payMethod'];
+        }
+
         // Get misc texts
         require_once GLM_MEMBERS_REGISTRATIONS_PLUGIN_CLASS_PATH.'/data/dataMisc.php';
         $Misc = new GlmDataRegistrationsMisc($this->wpdb, $this->config);
@@ -286,8 +296,8 @@ class GlmMembersFront_registrations_checkout extends GlmRegCartSupport
             'assetUrl'      => GLM_MEMBERS_REGISTRATIONS_PLUGIN_ASSETS_URL,
             'haveMessages'  => count($messages) > 0,
             'messages'      => $messages,
-            'payMethod'     => $payMethod,
-            'payMethods'    => $management['reg_payment_methods']['bitmap'],
+            'defaultPayMethod'     => $payMethod,
+            'payMethods'    => $availPaymentMethods,
             'payMethodsNumb' => $this->config['payment_method_numb'],
             'misc'          => $misc,
             'checkoutPageText'  => $misc['checkout_page_text'],
index a5283fd..3496ac7 100644 (file)
@@ -15,7 +15,6 @@
     <p>These are additional fields of information that will be requested for this event in each submission.</p>
     <p>
         {assign var="eventFid" value="glm_reg_customfields_reg_event_`$regEventID`"}
-{$eventFid}        
         {apply_filters('glm-members-customfields-form-edit', '', $eventFid)}
     </p>
 
@@ -25,7 +24,6 @@
     <p>These are additional fields of information that will be requested for each registrant for this event.</p>
     <p> 
         {assign var="attendeeFid" value="glm_reg_customfields_reg_event_attendee_`$regEventID`"}
-{$attendeeFid}     
         {apply_filters('glm-members-customfields-form-edit', '', $attendeeFid)}
     </p>
 
     <p>These are additional fields of information that will be requested for each registrant for this event.</p>
     <p> 
         {assign var="levelFid" value="glm_reg_customfields_reg_event_`$regEventID`_level_`$class.id`"}
-{$levelFid}  
         {apply_filters('glm-members-customfields-form-edit', '', $levelFid)}
     </p>
     <p><hr></p>
   {/foreach}
 
 {/if}
-   
-    
-    
+       
 </div>
 
 {include file='admin/footer.html'}
index f6e6679..c28260f 100644 (file)
                 <div class="glm-large-6 glm-small-12 glm-columns">
                     <h4>Payment Information</h4>
                     {foreach $payMethods as $payMethod}
-                        
-                        {$pmname = array_search($payMethod.value, $payMethodsNumb)}
-                        {$pm = $payMethodsNumb.{$pmname}}
-                        {if $payMethods.{$pm}.default} 
-                            
-                            <div><input id="payMethodButton_{$pm}" type="radio" name="payMethod" value="{$pm}" class="payMethodSelector" required {if $payMethod == {$pm}} checked{/if}><label for="payMethodButton_{$pm}">  {$payMethods.{$pm}.name}</label></div>
-                            {if $pmname == "CompCode"} 
-                                <div id="payMethod_{$pm}" class="payMethodSelection glm-hidden">
+                      {if $payMethod.default}
+
+                        {$pmName = array_search($payMethod.value, $payMethodsNumb)}
+                        {$pmNumb = $payMethodsNumb.{$pmName}}
+                          <div><input id="payMethodButton_{$pmNumb}" type="radio" name="payMethod" value="{$pmNumb}" class="payMethodSelector" required {if $defaultPayMethod == {$pmNumb}} checked{/if}> <label for="payMethodButton_{$pmNumb}">{$payMethods.{$pmNumb}.name}</label></div>
+                        {if $payMethods.{$payMethod.value}.default} 
+
+                            {if $pmName == "CompCode"} 
+                                <div id="payMethod_{$pmNumb}" class="payMethodSelection glm-hidden">
                                     <div class="glm-reg-row">
                                         <div class="glm-reg-checkout-field-label glm-small-12 glm-large-3 glm-columns glm-reg-nowrap{if $regAccount.fieldRequired.comp_code} glm-reg-required{/if}">Enter code:</div>
                                         <div class="glm-reg-checkout-field-data glm-small-12 glm-large-9 glm-columns{if $regAccount.fieldFail.comp_code} glm-reg-fail{/if}">
-                                            <input type="text" name="comp_code" value="{$regAccount.fieldData.comp_code}"{if $regAccount.fieldRequired.comp_code} required{/if} class="payMethodInput payMethodInput_{$pm}">
+                                            <input type="text" name="comp_code" value="{$regAccount.fieldData.comp_code}"{if $regAccount.fieldRequired.comp_code} required{/if} class="payMethodInput payMethodInput_{$pmNumb}">
                                         </div>
                                     </div>
                                 </div>
-                            {else if $pmname == "CreditCard"} 
+                            {else if $pmName == "CreditCard"} 
                                 
-                                <div id="payMethod_{$pm}" class="payMethodSelection glm-hidden">
+                                <div id="payMethod_{$pmNumb}" class="payMethodSelection glm-hidden">
                                     <div class="glm-reg-row">
                                         <div class="glm-reg-checkout-field-label glm-small-12 glm-large-3 glm-columns glm-reg-nowrap{if $regAccount.fieldRequired.cc_name} glm-reg-required{/if}">Name on Card:</div>
                                         <div class="glm-reg-checkout-field-data glm-small-12 glm-large-9 glm-columns{if $regAccount.fieldFail.cc_name} glm-reg-fail{/if}">
-                                            <input type="text" name="cc_name" value="{$regAccount.fieldData.cc_name}"{if $regAccount.fieldRequired.cc_name} required{/if} class="payMethodInput payMethodInput_{$pm}">
+                                            <input type="text" name="cc_name" value="{$regAccount.fieldData.cc_name}"{if $regAccount.fieldRequired.cc_name} required{/if} class="payMethodInput payMethodInput_{$pmNumb}">
                                         </div>
                                     </div>
                                     <div class="glm-reg-row">
                                         <div class="glm-reg-checkout-field-label glm-small-12 glm-large-3 glm-columns glm-reg-nowrap{if $regAccount.fieldRequired.cc_type} glm-reg-required{/if}">Card Type:</div>
                                         <div class="glm-reg-checkout-field-data glm-small-12 glm-large-9 glm-columns{if $regAccount.fieldFail.cc_type} glm-reg-fail{/if}">
-                                            <select name="cc_type" class="payMethodInput payMethodInput_{$pm}">
+                                            <select name="cc_type" class="payMethodInput payMethodInput_{$pmNumb}">
                                                 <option value=""></option>
                                     {foreach $regAccount.fieldData.cc_type.list as $c}
                                                 <option value="{$c.value}"{if $c.default} selected="selected"{/if}>
                                     <div class="glm-reg-row">
                                         <div class="glm-reg-checkout-field-label glm-small-12 glm-large-3 glm-columns glm-reg-nowrap{if $regAccount.fieldRequired.cc_numb} glm-reg-required{/if}">Card Number:</div>
                                         <div class="glm-reg-checkout-field-data glm-small-12 glm-large-9 glm-columns{if $regAccount.fieldFail.cc_numb} glm-reg-fail{/if}">
-                                            <input type="text" placeholder="Numbers Only" name="cc_numb" value="{$regAccount.fieldData.cc_numb}"{if $regAccount.fieldRequired.cc_numb} required{/if} class="payMethodInput payMethodInput_{$pm} cc-input">
+                                            <input type="text" placeholder="Numbers Only" name="cc_numb" value="{$regAccount.fieldData.cc_numb}"{if $regAccount.fieldRequired.cc_numb} required{/if} class="payMethodInput payMethodInput_{$pmNumb} cc-input">
                                        </div>
                                     </div>
                                     <div class="glm-reg-row">
                                         <div class="glm-reg-checkout-field-label glm-small-12 glm-large-3 glm-columns glm-reg-nowrap{if $regAccount.fieldRequired.cc_exp} glm-reg-required{/if}">Card Expiration:</div>
                                         <div class="glm-reg-checkout-field-data glm-small-12 glm-large-9 glm-columns{if $regAccount.fieldFail.cc_exp} glm-reg-fail{/if}">
-                                            <input type="text" placeholder="MM/YY" name="cc_exp" value="{$regAccount.fieldData.cc_exp}"{if $regAccount.fieldRequired.cc_exp} required{/if} class="payMethodInput payMethodInput_{$pm} expire-input">
+                                            <input type="text" placeholder="MM/YY" name="cc_exp" value="{$regAccount.fieldData.cc_exp}"{if $regAccount.fieldRequired.cc_exp} required{/if} class="payMethodInput payMethodInput_{$pmNumb} expire-input">
                                         </div>
                                     </div>
                                     <div class="glm-reg-row">
                                         <div class="glm-reg-checkout-field-label glm-small-12 glm-large-3 glm-columns glm-reg-nowrap{if $regAccount.fieldRequired.cc_cvv} glm-reg-required{/if}">CVV:</div>
                                         <div class="glm-reg-checkout-field-data glm-small-12 glm-large-9 glm-columns{if $regAccount.fieldFail.cc_cvv} glm-reg-fail{/if}">
-                                            <input type="text" placeholder="3 or 4 digit security code on back of card" name="cc_cvv" value="{$regAccount.fieldData.cc_cvv}"{if $regAccount.fieldRequired.cc_cvv} required{/if} class="payMethodInput payMethodInput_{$pm} cvv-input">
+                                            <input type="text" placeholder="3 or 4 digit security code on back of card" name="cc_cvv" value="{$regAccount.fieldData.cc_cvv}"{if $regAccount.fieldRequired.cc_cvv} required{/if} class="payMethodInput payMethodInput_{$pmNumb} cvv-input">
                                         </div>
                                     </div>
                                 </div>
                             {else}
-                                <div id="payMethod_{$pm}" class="payMethodSelection glm-hidden">
+                                <div id="payMethod_{$pmNumb}" class="payMethodSelection glm-hidden">
 
                                 </div>
                             {/if}
                         {/if}
+                        
+                      {/if} {* default is set *}
                     {/foreach}
                     
                 </div>
         $('.payMethodSelector').on('change', function() {
 
             // Get the value from the selected Payment Method
-            var payMethod = $(this).val();
+            var payMethodNumb = $(this).val();
+            payMethodSelection(payMethodNumb);
+
+        });
+        function payMethodSelection(payMethodNumb) {
 
             // Hide all pay method inputs and dissable them all
             $('.payMethodSelection').addClass('glm-hidden');
             $('.payMethodInput').attr('disabled', true);
 
             // Show the selected pay method inputs and enable just those
-            $('#payMethod_' + payMethod).removeClass('glm-hidden');
-            $('.payMethodInput_' + payMethod).removeAttr('disabled');
-
-        });
+            $('#payMethod_' + payMethodNumb).removeClass('glm-hidden');
+            $('.payMethodInput_' + payMethodNumb).removeAttr('disabled');
+            
+        }
 
         // Dissable checkout button when first clicked to prevent multiple attempts
         $("#checkoutForm").submit(function(e){
             // Start with all payment method sections hidden
             $('.payMethodInput').attr('disabled', true);
 
-            // When a payment method is selected, show that section
-            if ({$payMethod}) {
-                $('#payMethod_' + {$payMethod}).removeClass('glm-hidden');
-                $('.payMethodInput_' + {$payMethod}).removeAttr('disabled');
-            }
+            payMethodSelection({$defaultPayMethod});
 
         });