Passed
Push — master ( 5ba00a...0fd3da )
by Brian
05:48
created
templates/subscriptions/subscription-details.php 1 patch
Indentation   +52 added lines, -52 removed lines patch added patch discarded remove patch
@@ -46,64 +46,64 @@  discard block
 block discarded – undo
46 46
 				<td style="width: 65%">
47 47
 					<?php
48 48
 
49
-						switch ( $key ) {
49
+                        switch ( $key ) {
50 50
 
51
-							case 'status':
52
-								echo sanitize_text_field( $subscription->get_status_label() );
53
-								break;
51
+                            case 'status':
52
+                                echo sanitize_text_field( $subscription->get_status_label() );
53
+                                break;
54 54
 
55
-							case 'start_date':
56
-								echo sanitize_text_field( getpaid_format_date_value( $subscription->get_date_created() ) );
57
-								break;
55
+                            case 'start_date':
56
+                                echo sanitize_text_field( getpaid_format_date_value( $subscription->get_date_created() ) );
57
+                                break;
58 58
 
59
-							case 'expiry_date':
60
-								echo sanitize_text_field( getpaid_format_date_value( $subscription->get_next_renewal_date() ) );
61
-								break;
59
+                            case 'expiry_date':
60
+                                echo sanitize_text_field( getpaid_format_date_value( $subscription->get_next_renewal_date() ) );
61
+                                break;
62 62
 
63
-							case 'initial_amount':
64
-								echo wpinv_price( $subscription->get_initial_amount(), $subscription->get_parent_payment()->get_currency() );
63
+                            case 'initial_amount':
64
+                                echo wpinv_price( $subscription->get_initial_amount(), $subscription->get_parent_payment()->get_currency() );
65 65
 
66
-								if ( $subscription->has_trial_period() ) {
66
+                                if ( $subscription->has_trial_period() ) {
67 67
 
68
-									echo "<small class='text-muted'>&nbsp;";
69
-									printf(
70
-										_x( '( %1$s trial )', 'Subscription trial period. (e.g.: 1 month trial)', 'invoicing' ),
71
-										sanitize_text_field( $subscription->get_trial_period() )
72
-									);
73
-									echo '</small>';
68
+                                    echo "<small class='text-muted'>&nbsp;";
69
+                                    printf(
70
+                                        _x( '( %1$s trial )', 'Subscription trial period. (e.g.: 1 month trial)', 'invoicing' ),
71
+                                        sanitize_text_field( $subscription->get_trial_period() )
72
+                                    );
73
+                                    echo '</small>';
74 74
 
75
-								}
75
+                                }
76 76
 
77
-								break;
77
+                                break;
78 78
 
79
-							case 'recurring_amount':
80
-								$frequency = getpaid_get_subscription_period_label( $subscription->get_period(), $subscription->get_frequency(), '' );
81
-								$amount    = wpinv_price( $subscription->get_recurring_amount(), $subscription->get_parent_payment()->get_currency() );
82
-								echo strtolower( "<strong style='font-weight: 500;'>$amount</strong> / <span class='getpaid-item-recurring-period'>$frequency</span>" );
83
-								break;
79
+                            case 'recurring_amount':
80
+                                $frequency = getpaid_get_subscription_period_label( $subscription->get_period(), $subscription->get_frequency(), '' );
81
+                                $amount    = wpinv_price( $subscription->get_recurring_amount(), $subscription->get_parent_payment()->get_currency() );
82
+                                echo strtolower( "<strong style='font-weight: 500;'>$amount</strong> / <span class='getpaid-item-recurring-period'>$frequency</span>" );
83
+                                break;
84 84
 
85
-							case 'item':
85
+                            case 'item':
86 86
 
87
-								if ( empty( $subscription_group ) ) {
88
-									echo WPInv_Subscriptions_List_Table::generate_item_markup( $subscription->get_product_id() );
89
-								} else {
90
-									$markup = array_map( array( 'WPInv_Subscriptions_List_Table', 'generate_item_markup' ), array_keys( $subscription_group['items'] ) );
91
-									echo implode( ' | ', $markup );
92
-								}
87
+                                if ( empty( $subscription_group ) ) {
88
+                                    echo WPInv_Subscriptions_List_Table::generate_item_markup( $subscription->get_product_id() );
89
+                                } else {
90
+                                    $markup = array_map( array( 'WPInv_Subscriptions_List_Table', 'generate_item_markup' ), array_keys( $subscription_group['items'] ) );
91
+                                    echo implode( ' | ', $markup );
92
+                                }
93 93
 
94
-								break;
94
+                                break;
95 95
 
96
-							case 'payments':
96
+                            case 'payments':
97 97
 
98
-								$max_activations = (int) $subscription->get_bill_times();
99
-								echo (int) $subscription->get_times_billed() . ' / ' . ( empty( $max_activations ) ? "&infin;" : $max_activations );
98
+                                $max_activations = (int) $subscription->get_bill_times();
99
+                                echo (int) $subscription->get_times_billed() . ' / ' . ( empty( $max_activations ) ? "&infin;" : $max_activations );
100 100
 
101
-								break;
101
+                                break;
102 102
 
103
-						}
104
-						do_action( "getpaid_render_single_subscription_column_$key", $subscription );
103
+                        }
104
+                        do_action( "getpaid_render_single_subscription_column_$key", $subscription );
105 105
 
106
-					?>
106
+                    ?>
107 107
 				</td>
108 108
 
109 109
 			</tr>
@@ -130,17 +130,17 @@  discard block
 block discarded – undo
130 130
 <span class="form-text">
131 131
 
132 132
 	<?php
133
-		if ( $subscription->can_cancel() ) {
134
-			printf(
135
-				'<a href="%s" class="btn btn-danger btn-sm" onclick="return confirm(\'%s\')">%s</a>&nbsp;&nbsp;',
136
-				esc_url( $subscription->get_cancel_url() ),
137
-				esc_attr__( 'Are you sure you want to cancel this subscription?', 'invoicing' ),
138
-				__( 'Cancel Subscription', 'invoicing' )
139
-			);
140
-		}
141
-
142
-		do_action( 'getpaid-single-subscription-page-actions', $subscription );
143
-	?>
133
+        if ( $subscription->can_cancel() ) {
134
+            printf(
135
+                '<a href="%s" class="btn btn-danger btn-sm" onclick="return confirm(\'%s\')">%s</a>&nbsp;&nbsp;',
136
+                esc_url( $subscription->get_cancel_url() ),
137
+                esc_attr__( 'Are you sure you want to cancel this subscription?', 'invoicing' ),
138
+                __( 'Cancel Subscription', 'invoicing' )
139
+            );
140
+        }
141
+
142
+        do_action( 'getpaid-single-subscription-page-actions', $subscription );
143
+    ?>
144 144
 
145 145
 	<a href="<?php echo esc_url( getpaid_get_tab_url( 'gp-subscriptions', get_permalink( (int) wpinv_get_option( 'invoice_subscription_page' ) ) ) ); ?>" class="btn btn-secondary btn-sm"><?php _e( 'Go Back', 'invoicing' ); ?></a>
146 146
 </span>
Please login to merge, or discard this patch.
includes/payments/class-getpaid-payment-form-submission.php 1 patch
Indentation   +807 added lines, -807 removed lines patch added patch discarded remove patch
@@ -1,6 +1,6 @@  discard block
 block discarded – undo
1 1
 <?php
2 2
 if ( ! defined( 'ABSPATH' ) ) {
3
-	exit;
3
+    exit;
4 4
 }
5 5
 
6 6
 /**
@@ -10,206 +10,206 @@  discard block
 block discarded – undo
10 10
 class GetPaid_Payment_Form_Submission {
11 11
 
12 12
     /**
13
-	 * Submission ID
14
-	 *
15
-	 * @var string
16
-	 */
17
-	public $id = null;
18
-
19
-	/**
20
-	 * The raw submission data.
21
-	 *
22
-	 * @var array
23
-	 */
24
-	protected $data = null;
25
-
26
-	/**
27
-	 * Submission totals
28
-	 *
29
-	 * @var array
30
-	 */
31
-	protected $totals = array(
32
-
33
-		'subtotal'      => array(
34
-			'initial'   => 0,
35
-			'recurring' => 0,
36
-		),
37
-
38
-		'discount'      => array(
39
-			'initial'   => 0,
40
-			'recurring' => 0,
41
-		),
42
-
43
-		'fees'          => array(
44
-			'initial'   => 0,
45
-			'recurring' => 0,
46
-		),
47
-
48
-		'taxes'         => array(
49
-			'initial'   => 0,
50
-			'recurring' => 0,
51
-		),
52
-
53
-	);
54
-
55
-	/**
56
-	 * Sets the associated payment form.
57
-	 *
58
-	 * @var GetPaid_Payment_Form
59
-	 */
13
+     * Submission ID
14
+     *
15
+     * @var string
16
+     */
17
+    public $id = null;
18
+
19
+    /**
20
+     * The raw submission data.
21
+     *
22
+     * @var array
23
+     */
24
+    protected $data = null;
25
+
26
+    /**
27
+     * Submission totals
28
+     *
29
+     * @var array
30
+     */
31
+    protected $totals = array(
32
+
33
+        'subtotal'      => array(
34
+            'initial'   => 0,
35
+            'recurring' => 0,
36
+        ),
37
+
38
+        'discount'      => array(
39
+            'initial'   => 0,
40
+            'recurring' => 0,
41
+        ),
42
+
43
+        'fees'          => array(
44
+            'initial'   => 0,
45
+            'recurring' => 0,
46
+        ),
47
+
48
+        'taxes'         => array(
49
+            'initial'   => 0,
50
+            'recurring' => 0,
51
+        ),
52
+
53
+    );
54
+
55
+    /**
56
+     * Sets the associated payment form.
57
+     *
58
+     * @var GetPaid_Payment_Form
59
+     */
60 60
     protected $payment_form = null;
61 61
 
62 62
     /**
63
-	 * The country for the submission.
64
-	 *
65
-	 * @var string
66
-	 */
67
-	public $country = null;
68
-
69
-    /**
70
-	 * The state for the submission.
71
-	 *
72
-	 * @since 1.0.19
73
-	 * @var string
74
-	 */
75
-	public $state = null;
76
-
77
-	/**
78
-	 * The invoice associated with the submission.
79
-	 *
80
-	 * @var WPInv_Invoice
81
-	 */
82
-	protected $invoice = null;
83
-
84
-	/**
85
-	 * The recurring item for the submission.
86
-	 *
87
-	 * @var int
88
-	 */
89
-	public $has_recurring = 0;
90
-
91
-	/**
92
-	 * The subscription groups. If more than 2, ensure the gateway
93
-	 * supports multiple subscriptions.
94
-	 *
95
-	 * @var array
96
-	 */
97
-	public $subscription_groups = array();
98
-
99
-	/**
100
-	 * An array of fees for the submission.
101
-	 *
102
-	 * @var array
103
-	 */
104
-	protected $fees = array();
105
-
106
-	/**
107
-	 * An array of discounts for the submission.
108
-	 *
109
-	 * @var array
110
-	 */
111
-	protected $discounts = array();
112
-
113
-	/**
114
-	 * An array of taxes for the submission.
115
-	 *
116
-	 * @var array
117
-	 */
118
-	protected $taxes = array();
119
-
120
-	/**
121
-	 * An array of items for the submission.
122
-	 *
123
-	 * @var GetPaid_Form_Item[]
124
-	 */
125
-	protected $items = array();
126
-
127
-	/**
128
-	 * The last error.
129
-	 *
130
-	 * @var string
131
-	 */
132
-	public $last_error = null;
133
-
134
-	/**
135
-	 * The last error code.
136
-	 *
137
-	 * @var string
138
-	 */
139
-	public $last_error_code = null;
140
-
141
-    /**
142
-	 * Class constructor.
143
-	 *
144
-	 */
145
-	public function __construct() {
146
-
147
-		// Set the state and country to the default state and country.
148
-		$this->country = wpinv_default_billing_country();
149
-		$this->state   = wpinv_get_default_state();
150
-
151
-		// Do we have an actual submission?
152
-		if ( isset( $_POST['getpaid_payment_form_submission'] ) ) {
153
-			$this->load_data( $_POST );
154
-		}
155
-
156
-	}
157
-
158
-	/**
159
-	 * Loads submission data.
160
-	 *
161
-	 * @param array $data
162
-	 */
163
-	public function load_data( $data ) {
164
-
165
-		// Remove slashes from the submitted data...
166
-		$data       = wp_unslash( $data );
167
-
168
-		// Allow plugins to filter the data.
169
-		$data       = apply_filters( 'getpaid_submission_data', $data, $this );
170
-
171
-		// Cache it...
172
-		$this->data = $data;
173
-
174
-		// Then generate a unique id from the data.
175
-		$this->id   = md5( wp_json_encode( $data ) );
176
-
177
-		// Finally, process the submission.
178
-		try {
179
-
180
-			// Each process is passed an instance of the class (with reference)
181
-			// and should throw an Exception whenever it encounters one.
182
-			$processors = apply_filters(
183
-				'getpaid_payment_form_submission_processors',
184
-				array(
185
-					array( $this, 'process_payment_form' ),
186
-					array( $this, 'process_invoice' ),
187
-					array( $this, 'process_fees' ),
188
-					array( $this, 'process_items' ),
189
-					array( $this, 'process_discount' ),
190
-					array( $this, 'process_taxes' ),
191
-				),
192
-				$this		
193
-			);
194
-
195
-			foreach ( $processors as $processor ) {
196
-				call_user_func_array( $processor, array( &$this ) );
197
-			}
198
-
199
-		} catch( GetPaid_Payment_Exception $e ) {
200
-			$this->last_error      = $e->getMessage();
201
-			$this->last_error_code = $e->getErrorCode();
202
-		} catch ( Exception $e ) {
203
-			$this->last_error      = $e->getMessage();
204
-			$this->last_error_code = $e->getCode();
205
-		}
206
-
207
-		// Fired when we are done processing a submission.
208
-		do_action_ref_array( 'getpaid_process_submission', array( &$this ) );
209
-
210
-	}
211
-
212
-	/*
63
+     * The country for the submission.
64
+     *
65
+     * @var string
66
+     */
67
+    public $country = null;
68
+
69
+    /**
70
+     * The state for the submission.
71
+     *
72
+     * @since 1.0.19
73
+     * @var string
74
+     */
75
+    public $state = null;
76
+
77
+    /**
78
+     * The invoice associated with the submission.
79
+     *
80
+     * @var WPInv_Invoice
81
+     */
82
+    protected $invoice = null;
83
+
84
+    /**
85
+     * The recurring item for the submission.
86
+     *
87
+     * @var int
88
+     */
89
+    public $has_recurring = 0;
90
+
91
+    /**
92
+     * The subscription groups. If more than 2, ensure the gateway
93
+     * supports multiple subscriptions.
94
+     *
95
+     * @var array
96
+     */
97
+    public $subscription_groups = array();
98
+
99
+    /**
100
+     * An array of fees for the submission.
101
+     *
102
+     * @var array
103
+     */
104
+    protected $fees = array();
105
+
106
+    /**
107
+     * An array of discounts for the submission.
108
+     *
109
+     * @var array
110
+     */
111
+    protected $discounts = array();
112
+
113
+    /**
114
+     * An array of taxes for the submission.
115
+     *
116
+     * @var array
117
+     */
118
+    protected $taxes = array();
119
+
120
+    /**
121
+     * An array of items for the submission.
122
+     *
123
+     * @var GetPaid_Form_Item[]
124
+     */
125
+    protected $items = array();
126
+
127
+    /**
128
+     * The last error.
129
+     *
130
+     * @var string
131
+     */
132
+    public $last_error = null;
133
+
134
+    /**
135
+     * The last error code.
136
+     *
137
+     * @var string
138
+     */
139
+    public $last_error_code = null;
140
+
141
+    /**
142
+     * Class constructor.
143
+     *
144
+     */
145
+    public function __construct() {
146
+
147
+        // Set the state and country to the default state and country.
148
+        $this->country = wpinv_default_billing_country();
149
+        $this->state   = wpinv_get_default_state();
150
+
151
+        // Do we have an actual submission?
152
+        if ( isset( $_POST['getpaid_payment_form_submission'] ) ) {
153
+            $this->load_data( $_POST );
154
+        }
155
+
156
+    }
157
+
158
+    /**
159
+     * Loads submission data.
160
+     *
161
+     * @param array $data
162
+     */
163
+    public function load_data( $data ) {
164
+
165
+        // Remove slashes from the submitted data...
166
+        $data       = wp_unslash( $data );
167
+
168
+        // Allow plugins to filter the data.
169
+        $data       = apply_filters( 'getpaid_submission_data', $data, $this );
170
+
171
+        // Cache it...
172
+        $this->data = $data;
173
+
174
+        // Then generate a unique id from the data.
175
+        $this->id   = md5( wp_json_encode( $data ) );
176
+
177
+        // Finally, process the submission.
178
+        try {
179
+
180
+            // Each process is passed an instance of the class (with reference)
181
+            // and should throw an Exception whenever it encounters one.
182
+            $processors = apply_filters(
183
+                'getpaid_payment_form_submission_processors',
184
+                array(
185
+                    array( $this, 'process_payment_form' ),
186
+                    array( $this, 'process_invoice' ),
187
+                    array( $this, 'process_fees' ),
188
+                    array( $this, 'process_items' ),
189
+                    array( $this, 'process_discount' ),
190
+                    array( $this, 'process_taxes' ),
191
+                ),
192
+                $this		
193
+            );
194
+
195
+            foreach ( $processors as $processor ) {
196
+                call_user_func_array( $processor, array( &$this ) );
197
+            }
198
+
199
+        } catch( GetPaid_Payment_Exception $e ) {
200
+            $this->last_error      = $e->getMessage();
201
+            $this->last_error_code = $e->getErrorCode();
202
+        } catch ( Exception $e ) {
203
+            $this->last_error      = $e->getMessage();
204
+            $this->last_error_code = $e->getCode();
205
+        }
206
+
207
+        // Fired when we are done processing a submission.
208
+        do_action_ref_array( 'getpaid_process_submission', array( &$this ) );
209
+
210
+    }
211
+
212
+    /*
213 213
 	|--------------------------------------------------------------------------
214 214
 	| Payment Forms.
215 215
 	|--------------------------------------------------------------------------
@@ -218,39 +218,39 @@  discard block
 block discarded – undo
218 218
 	| submission has an active payment form etc.
219 219
     */
220 220
 
221
-	/**
222
-	 * Prepares the submission's payment form.
223
-	 *
224
-	 * @since 1.0.19
225
-	 */
226
-	public function process_payment_form() {
221
+    /**
222
+     * Prepares the submission's payment form.
223
+     *
224
+     * @since 1.0.19
225
+     */
226
+    public function process_payment_form() {
227 227
 
228
-		// Every submission needs an active payment form.
229
-		if ( empty( $this->data['form_id'] ) ) {
230
-			throw new Exception( __( 'Missing payment form', 'invoicing' ) );
231
-		}
228
+        // Every submission needs an active payment form.
229
+        if ( empty( $this->data['form_id'] ) ) {
230
+            throw new Exception( __( 'Missing payment form', 'invoicing' ) );
231
+        }
232 232
 
233
-		// Fetch the payment form.
234
-		$this->payment_form = new GetPaid_Payment_Form( $this->data['form_id'] );
233
+        // Fetch the payment form.
234
+        $this->payment_form = new GetPaid_Payment_Form( $this->data['form_id'] );
235 235
 
236
-		if ( ! $this->payment_form->is_active() ) {
237
-			throw new Exception( __( 'Payment form not active', 'invoicing' ) );
238
-		}
236
+        if ( ! $this->payment_form->is_active() ) {
237
+            throw new Exception( __( 'Payment form not active', 'invoicing' ) );
238
+        }
239 239
 
240
-		do_action_ref_array( 'getpaid_submissions_process_payment_form', array( &$this ) );
241
-	}
240
+        do_action_ref_array( 'getpaid_submissions_process_payment_form', array( &$this ) );
241
+    }
242 242
 
243 243
     /**
244
-	 * Returns the payment form.
245
-	 *
246
-	 * @since 1.0.19
247
-	 * @return GetPaid_Payment_Form
248
-	 */
249
-	public function get_payment_form() {
250
-		return $this->payment_form;
251
-	}
244
+     * Returns the payment form.
245
+     *
246
+     * @since 1.0.19
247
+     * @return GetPaid_Payment_Form
248
+     */
249
+    public function get_payment_form() {
250
+        return $this->payment_form;
251
+    }
252 252
 
253
-	/*
253
+    /*
254 254
 	|--------------------------------------------------------------------------
255 255
 	| Invoices.
256 256
 	|--------------------------------------------------------------------------
@@ -259,84 +259,84 @@  discard block
 block discarded – undo
259 259
 	| might be for an existing invoice.
260 260
 	*/
261 261
 
262
-	/**
263
-	 * Prepares the submission's invoice.
264
-	 *
265
-	 * @since 1.0.19
266
-	 */
267
-	public function process_invoice() {
262
+    /**
263
+     * Prepares the submission's invoice.
264
+     *
265
+     * @since 1.0.19
266
+     */
267
+    public function process_invoice() {
268 268
 
269
-		// Abort if there is no invoice.
270
-		if ( empty( $this->data['invoice_id'] ) ) {
271
-			return;
272
-		}
269
+        // Abort if there is no invoice.
270
+        if ( empty( $this->data['invoice_id'] ) ) {
271
+            return;
272
+        }
273 273
 
274
-		// If the submission is for an existing invoice, ensure that it exists
275
-		// and that it is not paid for.
276
-		$invoice = wpinv_get_invoice( $this->data['invoice_id'] );
274
+        // If the submission is for an existing invoice, ensure that it exists
275
+        // and that it is not paid for.
276
+        $invoice = wpinv_get_invoice( $this->data['invoice_id'] );
277 277
 
278 278
         if ( empty( $invoice ) ) {
279
-			throw new Exception( __( 'Invalid invoice', 'invoicing' ) );
280
-		}
279
+            throw new Exception( __( 'Invalid invoice', 'invoicing' ) );
280
+        }
281 281
 
282
-		if ( $invoice->is_paid() ) {
283
-			throw new Exception( __( 'This invoice is already paid for.', 'invoicing' ) );
284
-		}
282
+        if ( $invoice->is_paid() ) {
283
+            throw new Exception( __( 'This invoice is already paid for.', 'invoicing' ) );
284
+        }
285 285
 
286
-		$this->payment_form->invoice = $invoice;
287
-		if ( ! $this->payment_form->is_default() ) {
286
+        $this->payment_form->invoice = $invoice;
287
+        if ( ! $this->payment_form->is_default() ) {
288 288
 
289
-			$items    = array();
290
-			$item_ids = array();
289
+            $items    = array();
290
+            $item_ids = array();
291 291
 	
292
-			foreach ( $invoice->get_items() as $item ) {
293
-				if ( ! in_array( $item->get_id(), $item_ids ) ) {
294
-					$item_ids[] = $item->get_id();
295
-					$items[]    = $item;
296
-				}
297
-			}
292
+            foreach ( $invoice->get_items() as $item ) {
293
+                if ( ! in_array( $item->get_id(), $item_ids ) ) {
294
+                    $item_ids[] = $item->get_id();
295
+                    $items[]    = $item;
296
+                }
297
+            }
298 298
 	
299
-			foreach ( $this->payment_form->get_items() as $item ) {
300
-				if ( ! in_array( $item->get_id(), $item_ids ) ) {
301
-					$item_ids[] = $item->get_id();
302
-					$items[]    = $item;
303
-				}
304
-			}
299
+            foreach ( $this->payment_form->get_items() as $item ) {
300
+                if ( ! in_array( $item->get_id(), $item_ids ) ) {
301
+                    $item_ids[] = $item->get_id();
302
+                    $items[]    = $item;
303
+                }
304
+            }
305 305
 	
306
-			$this->payment_form->set_items( $items );
306
+            $this->payment_form->set_items( $items );
307 307
 	
308
-		} else {
309
-			$this->payment_form->set_items( $invoice->get_items() );
310
-		}
311
-
312
-		$this->country = $invoice->get_country();
313
-		$this->state   = $invoice->get_state();
314
-		$this->invoice = $invoice;
315
-
316
-		do_action_ref_array( 'getpaid_submissions_process_invoice', array( &$this ) );
317
-	}
318
-
319
-	/**
320
-	 * Returns the associated invoice.
321
-	 *
322
-	 * @since 1.0.19
323
-	 * @return WPInv_Invoice
324
-	 */
325
-	public function get_invoice() {
326
-		return $this->invoice;
327
-	}
328
-
329
-	/**
330
-	 * Checks whether there is an invoice associated with this submission.
331
-	 *
332
-	 * @since 1.0.19
333
-	 * @return bool
334
-	 */
335
-	public function has_invoice() {
336
-		return ! empty( $this->invoice );
337
-	}
338
-
339
-	/*
308
+        } else {
309
+            $this->payment_form->set_items( $invoice->get_items() );
310
+        }
311
+
312
+        $this->country = $invoice->get_country();
313
+        $this->state   = $invoice->get_state();
314
+        $this->invoice = $invoice;
315
+
316
+        do_action_ref_array( 'getpaid_submissions_process_invoice', array( &$this ) );
317
+    }
318
+
319
+    /**
320
+     * Returns the associated invoice.
321
+     *
322
+     * @since 1.0.19
323
+     * @return WPInv_Invoice
324
+     */
325
+    public function get_invoice() {
326
+        return $this->invoice;
327
+    }
328
+
329
+    /**
330
+     * Checks whether there is an invoice associated with this submission.
331
+     *
332
+     * @since 1.0.19
333
+     * @return bool
334
+     */
335
+    public function has_invoice() {
336
+        return ! empty( $this->invoice );
337
+    }
338
+
339
+    /*
340 340
 	|--------------------------------------------------------------------------
341 341
 	| Items.
342 342
 	|--------------------------------------------------------------------------
@@ -345,110 +345,110 @@  discard block
 block discarded – undo
345 345
 	| recurring item. But can have an unlimited number of non-recurring items.
346 346
 	*/
347 347
 
348
-	/**
349
-	 * Prepares the submission's items.
350
-	 *
351
-	 * @since 1.0.19
352
-	 */
353
-	public function process_items() {
354
-
355
-		$processor = new GetPaid_Payment_Form_Submission_Items( $this );
356
-
357
-		foreach ( $processor->items as $item ) {
358
-			$this->add_item( $item );
359
-		}
360
-
361
-		do_action_ref_array( 'getpaid_submissions_process_items', array( &$this ) );
362
-	}
363
-
364
-	/**
365
-	 * Adds an item to the submission.
366
-	 *
367
-	 * @since 1.0.19
368
-	 * @param GetPaid_Form_Item $item
369
-	 */
370
-	public function add_item( $item ) {
371
-
372
-		// Make sure that it is available for purchase.
373
-		if ( ! $item->can_purchase() || isset( $this->items[ $item->get_id() ] ) ) {
374
-			return;
375
-		}
376
-
377
-		// Each submission can only contain one recurring item.
378
-		if ( $item->is_recurring() ) {
379
-			$this->has_recurring = $item->get_id();
380
-		}
381
-
382
-		// Update the items and totals.
383
-		$this->items[ $item->get_id() ]         = $item;
384
-		$this->totals['subtotal']['initial']   += $item->get_sub_total();
385
-		$this->totals['subtotal']['recurring'] += $item->get_recurring_sub_total();
386
-
387
-		$this->subscription_groups = getpaid_calculate_subscription_totals( $this );
388
-	}
389
-
390
-	/**
391
-	 * Removes a specific item.
392
-	 * 
393
-	 * You should not call this method after the discounts and taxes
394
-	 * have been calculated.
395
-	 *
396
-	 * @since 1.0.19
397
-	 */
398
-	public function remove_item( $item_id ) {
399
-
400
-		if ( isset( $this->items[ $item_id ] ) ) {
401
-			$this->totals['subtotal']['initial']   -= $this->items[ $item_id ]->get_sub_total();
402
-			$this->totals['subtotal']['recurring'] -= $this->items[ $item_id ]->get_recurring_sub_total();
403
-
404
-			if ( $this->items[ $item_id ]->is_recurring() ) {
405
-				$this->has_recurring = 0;
406
-			}
407
-
408
-			unset( $this->items[ $item_id ] );
409
-		}
410
-
411
-	}
412
-
413
-	/**
414
-	 * Returns the subtotal.
415
-	 *
416
-	 * @since 1.0.19
417
-	 */
418
-	public function get_subtotal() {
419
-
420
-		if ( wpinv_prices_include_tax() ) {
421
-			return $this->totals['subtotal']['initial'] - $this->totals['taxes']['initial'];
422
-		}
423
-
424
-		return $this->totals['subtotal']['initial'];
425
-	}
426
-
427
-	/**
428
-	 * Returns the recurring subtotal.
429
-	 *
430
-	 * @since 1.0.19
431
-	 */
432
-	public function get_recurring_subtotal() {
433
-
434
-		if ( wpinv_prices_include_tax() ) {
435
-			return $this->totals['subtotal']['recurring'] - $this->totals['taxes']['recurring'];
436
-		}
437
-
438
-		return $this->totals['subtotal']['recurring'];
439
-	}
440
-
441
-	/**
442
-	 * Returns all items.
443
-	 *
444
-	 * @since 1.0.19
445
-	 * @return GetPaid_Form_Item[]
446
-	 */
447
-	public function get_items() {
448
-		return $this->items;
449
-	}
450
-
451
-	/*
348
+    /**
349
+     * Prepares the submission's items.
350
+     *
351
+     * @since 1.0.19
352
+     */
353
+    public function process_items() {
354
+
355
+        $processor = new GetPaid_Payment_Form_Submission_Items( $this );
356
+
357
+        foreach ( $processor->items as $item ) {
358
+            $this->add_item( $item );
359
+        }
360
+
361
+        do_action_ref_array( 'getpaid_submissions_process_items', array( &$this ) );
362
+    }
363
+
364
+    /**
365
+     * Adds an item to the submission.
366
+     *
367
+     * @since 1.0.19
368
+     * @param GetPaid_Form_Item $item
369
+     */
370
+    public function add_item( $item ) {
371
+
372
+        // Make sure that it is available for purchase.
373
+        if ( ! $item->can_purchase() || isset( $this->items[ $item->get_id() ] ) ) {
374
+            return;
375
+        }
376
+
377
+        // Each submission can only contain one recurring item.
378
+        if ( $item->is_recurring() ) {
379
+            $this->has_recurring = $item->get_id();
380
+        }
381
+
382
+        // Update the items and totals.
383
+        $this->items[ $item->get_id() ]         = $item;
384
+        $this->totals['subtotal']['initial']   += $item->get_sub_total();
385
+        $this->totals['subtotal']['recurring'] += $item->get_recurring_sub_total();
386
+
387
+        $this->subscription_groups = getpaid_calculate_subscription_totals( $this );
388
+    }
389
+
390
+    /**
391
+     * Removes a specific item.
392
+     * 
393
+     * You should not call this method after the discounts and taxes
394
+     * have been calculated.
395
+     *
396
+     * @since 1.0.19
397
+     */
398
+    public function remove_item( $item_id ) {
399
+
400
+        if ( isset( $this->items[ $item_id ] ) ) {
401
+            $this->totals['subtotal']['initial']   -= $this->items[ $item_id ]->get_sub_total();
402
+            $this->totals['subtotal']['recurring'] -= $this->items[ $item_id ]->get_recurring_sub_total();
403
+
404
+            if ( $this->items[ $item_id ]->is_recurring() ) {
405
+                $this->has_recurring = 0;
406
+            }
407
+
408
+            unset( $this->items[ $item_id ] );
409
+        }
410
+
411
+    }
412
+
413
+    /**
414
+     * Returns the subtotal.
415
+     *
416
+     * @since 1.0.19
417
+     */
418
+    public function get_subtotal() {
419
+
420
+        if ( wpinv_prices_include_tax() ) {
421
+            return $this->totals['subtotal']['initial'] - $this->totals['taxes']['initial'];
422
+        }
423
+
424
+        return $this->totals['subtotal']['initial'];
425
+    }
426
+
427
+    /**
428
+     * Returns the recurring subtotal.
429
+     *
430
+     * @since 1.0.19
431
+     */
432
+    public function get_recurring_subtotal() {
433
+
434
+        if ( wpinv_prices_include_tax() ) {
435
+            return $this->totals['subtotal']['recurring'] - $this->totals['taxes']['recurring'];
436
+        }
437
+
438
+        return $this->totals['subtotal']['recurring'];
439
+    }
440
+
441
+    /**
442
+     * Returns all items.
443
+     *
444
+     * @since 1.0.19
445
+     * @return GetPaid_Form_Item[]
446
+     */
447
+    public function get_items() {
448
+        return $this->items;
449
+    }
450
+
451
+    /*
452 452
 	|--------------------------------------------------------------------------
453 453
 	| Taxes
454 454
 	|--------------------------------------------------------------------------
@@ -457,128 +457,128 @@  discard block
 block discarded – undo
457 457
 	| or only one-time.
458 458
     */
459 459
 
460
-	/**
461
-	 * Prepares the submission's taxes.
462
-	 *
463
-	 * @since 1.0.19
464
-	 */
465
-	public function process_taxes() {
466
-
467
-		// Abort if we're not using taxes.
468
-		if ( ! $this->use_taxes() ) {
469
-			return;
470
-		}
471
-
472
-		// If a custom country && state has been passed in, use it to calculate taxes.
473
-		$country = $this->get_field( 'wpinv_country', 'billing' );
474
-		if ( ! empty( $country ) ) {
475
-			$this->country = $country;
476
-		}
477
-
478
-		$state = $this->get_field( 'wpinv_state', 'billing' );
479
-		if ( ! empty( $state ) ) {
480
-			$this->state = $state;
481
-		}
482
-
483
-		// Confirm if the provided country and the ip country are similar.
484
-		$address_confirmed = $this->get_field( 'confirm-address' );
485
-		if ( wpinv_should_validate_vat_number() && getpaid_get_ip_country() != $this->country && empty( $address_confirmed ) ) {
486
-			throw new Exception( __( 'The country of your current location must be the same as the country of your billing location or you must confirm the billing address is your home country.', 'invoicing' ) );
487
-		}
488
-
489
-		// Abort if the country is not taxable.
490
-		if ( ! wpinv_is_country_taxable( $this->country ) ) {
491
-			return;
492
-		}
493
-
494
-		$processor = new GetPaid_Payment_Form_Submission_Taxes( $this );
495
-
496
-		foreach ( $processor->taxes as $tax ) {
497
-			$this->add_tax( $tax );
498
-		}
499
-
500
-		do_action_ref_array( 'getpaid_submissions_process_taxes', array( &$this ) );
501
-	}
502
-
503
-	/**
504
-	 * Adds a tax to the submission.
505
-	 *
506
-	 * @param array $tax An array of tax details. name, initial_tax, and recurring_tax are required.
507
-	 * @since 1.0.19
508
-	 */
509
-	public function add_tax( $tax ) {
510
-
511
-		if ( wpinv_round_tax_per_tax_rate() ) {
512
-			$tax['initial_tax']   = wpinv_round_amount( $tax['initial_tax'] );
513
-			$tax['recurring_tax'] = wpinv_round_amount( $tax['recurring_tax'] );
514
-		}
515
-
516
-		$this->taxes[ $tax['name'] ]         = $tax;
517
-		$this->totals['taxes']['initial']   += wpinv_sanitize_amount( $tax['initial_tax'] );
518
-		$this->totals['taxes']['recurring'] += wpinv_sanitize_amount( $tax['recurring_tax'] );
519
-
520
-	}
521
-
522
-	/**
523
-	 * Removes a specific tax.
524
-	 *
525
-	 * @since 1.0.19
526
-	 */
527
-	public function remove_tax( $tax_name ) {
528
-
529
-		if ( isset( $this->taxes[ $tax_name ] ) ) {
530
-			$this->totals['taxes']['initial']   -= $this->taxes[ $tax_name ]['initial_tax'];
531
-			$this->totals['taxes']['recurring'] -= $this->taxes[ $tax_name ]['recurring_tax'];
532
-			unset( $this->taxes[ $tax_name ] );
533
-		}
534
-
535
-	}
536
-
537
-	/**
538
-	 * Whether or not we'll use taxes for the submission.
539
-	 *
540
-	 * @since 1.0.19
541
-	 */
542
-	public function use_taxes() {
543
-
544
-		$use_taxes = wpinv_use_taxes();
545
-
546
-		if ( $this->has_invoice() && ! $this->invoice->is_taxable() ) {
547
-			$use_taxes = false;
548
-		}
549
-
550
-		return apply_filters( 'getpaid_submission_use_taxes', $use_taxes, $this );
551
-
552
-	}
553
-
554
-	/**
555
-	 * Returns the tax.
556
-	 *
557
-	 * @since 1.0.19
558
-	 */
559
-	public function get_tax() {
560
-		return $this->totals['taxes']['initial'];
561
-	}
562
-
563
-	/**
564
-	 * Returns the recurring tax.
565
-	 *
566
-	 * @since 1.0.19
567
-	 */
568
-	public function get_recurring_tax() {
569
-		return $this->totals['taxes']['recurring'];
570
-	}
571
-
572
-	/**
573
-	 * Returns all taxes.
574
-	 *
575
-	 * @since 1.0.19
576
-	 */
577
-	public function get_taxes() {
578
-		return $this->taxes;
579
-	}
580
-
581
-	/*
460
+    /**
461
+     * Prepares the submission's taxes.
462
+     *
463
+     * @since 1.0.19
464
+     */
465
+    public function process_taxes() {
466
+
467
+        // Abort if we're not using taxes.
468
+        if ( ! $this->use_taxes() ) {
469
+            return;
470
+        }
471
+
472
+        // If a custom country && state has been passed in, use it to calculate taxes.
473
+        $country = $this->get_field( 'wpinv_country', 'billing' );
474
+        if ( ! empty( $country ) ) {
475
+            $this->country = $country;
476
+        }
477
+
478
+        $state = $this->get_field( 'wpinv_state', 'billing' );
479
+        if ( ! empty( $state ) ) {
480
+            $this->state = $state;
481
+        }
482
+
483
+        // Confirm if the provided country and the ip country are similar.
484
+        $address_confirmed = $this->get_field( 'confirm-address' );
485
+        if ( wpinv_should_validate_vat_number() && getpaid_get_ip_country() != $this->country && empty( $address_confirmed ) ) {
486
+            throw new Exception( __( 'The country of your current location must be the same as the country of your billing location or you must confirm the billing address is your home country.', 'invoicing' ) );
487
+        }
488
+
489
+        // Abort if the country is not taxable.
490
+        if ( ! wpinv_is_country_taxable( $this->country ) ) {
491
+            return;
492
+        }
493
+
494
+        $processor = new GetPaid_Payment_Form_Submission_Taxes( $this );
495
+
496
+        foreach ( $processor->taxes as $tax ) {
497
+            $this->add_tax( $tax );
498
+        }
499
+
500
+        do_action_ref_array( 'getpaid_submissions_process_taxes', array( &$this ) );
501
+    }
502
+
503
+    /**
504
+     * Adds a tax to the submission.
505
+     *
506
+     * @param array $tax An array of tax details. name, initial_tax, and recurring_tax are required.
507
+     * @since 1.0.19
508
+     */
509
+    public function add_tax( $tax ) {
510
+
511
+        if ( wpinv_round_tax_per_tax_rate() ) {
512
+            $tax['initial_tax']   = wpinv_round_amount( $tax['initial_tax'] );
513
+            $tax['recurring_tax'] = wpinv_round_amount( $tax['recurring_tax'] );
514
+        }
515
+
516
+        $this->taxes[ $tax['name'] ]         = $tax;
517
+        $this->totals['taxes']['initial']   += wpinv_sanitize_amount( $tax['initial_tax'] );
518
+        $this->totals['taxes']['recurring'] += wpinv_sanitize_amount( $tax['recurring_tax'] );
519
+
520
+    }
521
+
522
+    /**
523
+     * Removes a specific tax.
524
+     *
525
+     * @since 1.0.19
526
+     */
527
+    public function remove_tax( $tax_name ) {
528
+
529
+        if ( isset( $this->taxes[ $tax_name ] ) ) {
530
+            $this->totals['taxes']['initial']   -= $this->taxes[ $tax_name ]['initial_tax'];
531
+            $this->totals['taxes']['recurring'] -= $this->taxes[ $tax_name ]['recurring_tax'];
532
+            unset( $this->taxes[ $tax_name ] );
533
+        }
534
+
535
+    }
536
+
537
+    /**
538
+     * Whether or not we'll use taxes for the submission.
539
+     *
540
+     * @since 1.0.19
541
+     */
542
+    public function use_taxes() {
543
+
544
+        $use_taxes = wpinv_use_taxes();
545
+
546
+        if ( $this->has_invoice() && ! $this->invoice->is_taxable() ) {
547
+            $use_taxes = false;
548
+        }
549
+
550
+        return apply_filters( 'getpaid_submission_use_taxes', $use_taxes, $this );
551
+
552
+    }
553
+
554
+    /**
555
+     * Returns the tax.
556
+     *
557
+     * @since 1.0.19
558
+     */
559
+    public function get_tax() {
560
+        return $this->totals['taxes']['initial'];
561
+    }
562
+
563
+    /**
564
+     * Returns the recurring tax.
565
+     *
566
+     * @since 1.0.19
567
+     */
568
+    public function get_recurring_tax() {
569
+        return $this->totals['taxes']['recurring'];
570
+    }
571
+
572
+    /**
573
+     * Returns all taxes.
574
+     *
575
+     * @since 1.0.19
576
+     */
577
+    public function get_taxes() {
578
+        return $this->taxes;
579
+    }
580
+
581
+    /*
582 582
 	|--------------------------------------------------------------------------
583 583
 	| Discounts
584 584
 	|--------------------------------------------------------------------------
@@ -587,99 +587,99 @@  discard block
 block discarded – undo
587 587
 	| or only one-time. They also do not have to come from a discount code.
588 588
     */
589 589
 
590
-	/**
591
-	 * Prepares the submission's discount.
592
-	 *
593
-	 * @since 1.0.19
594
-	 */
595
-	public function process_discount() {
596
-
597
-		$initial_total    = $this->get_subtotal() + $this->get_fee() + $this->get_tax();
598
-		$recurring_total  = $this->get_recurring_subtotal() + $this->get_recurring_fee() + $this->get_recurring_tax();
599
-		$processor        = new GetPaid_Payment_Form_Submission_Discount( $this, $initial_total, $recurring_total );
600
-
601
-		foreach ( $processor->discounts as $discount ) {
602
-			$this->add_discount( $discount );
603
-		}
604
-
605
-		do_action_ref_array( 'getpaid_submissions_process_discounts', array( &$this ) );
606
-	}
607
-
608
-	/**
609
-	 * Adds a discount to the submission.
610
-	 *
611
-	 * @param array $discount An array of discount details. name, initial_discount, and recurring_discount are required. Include discount_code if the discount is from a discount code.
612
-	 * @since 1.0.19
613
-	 */
614
-	public function add_discount( $discount ) {
615
-		$this->discounts[ $discount['name'] ]   = $discount;
616
-		$this->totals['discount']['initial']   += wpinv_sanitize_amount( $discount['initial_discount'] );
617
-		$this->totals['discount']['recurring'] += wpinv_sanitize_amount( $discount['recurring_discount'] );
618
-	}
619
-
620
-	/**
621
-	 * Removes a discount from the submission.
622
-	 *
623
-	 * @since 1.0.19
624
-	 */
625
-	public function remove_discount( $name ) {
626
-
627
-		if ( isset( $this->discounts[ $name ] ) ) {
628
-			$this->totals['discount']['initial']   -= $this->discounts[ $name ]['initial_discount'];
629
-			$this->totals['discount']['recurring'] -= $this->discounts[ $name ]['recurring_discount'];
630
-			unset( $this->discounts[ $name ] );
631
-		}
632
-
633
-	}
634
-
635
-	/**
636
-	 * Checks whether there is a discount code associated with this submission.
637
-	 *
638
-	 * @since 1.0.19
639
-	 * @return bool
640
-	 */
641
-	public function has_discount_code() {
642
-		return ! empty( $this->discounts['discount_code'] );
643
-	}
644
-
645
-	/**
646
-	 * Returns the discount code.
647
-	 *
648
-	 * @since 1.0.19
649
-	 * @return string
650
-	 */
651
-	public function get_discount_code() {
652
-		return $this->has_discount_code() ? $this->discounts['discount_code']['discount_code'] : '';
653
-	}
654
-
655
-	/**
656
-	 * Returns the discount.
657
-	 *
658
-	 * @since 1.0.19
659
-	 */
660
-	public function get_discount() {
661
-		return $this->totals['discount']['initial'];
662
-	}
663
-
664
-	/**
665
-	 * Returns the recurring discount.
666
-	 *
667
-	 * @since 1.0.19
668
-	 */
669
-	public function get_recurring_discount() {
670
-		return $this->totals['discount']['recurring'];
671
-	}
672
-
673
-	/**
674
-	 * Returns all discounts.
675
-	 *
676
-	 * @since 1.0.19
677
-	 */
678
-	public function get_discounts() {
679
-		return $this->discounts;
680
-	}
681
-
682
-	/*
590
+    /**
591
+     * Prepares the submission's discount.
592
+     *
593
+     * @since 1.0.19
594
+     */
595
+    public function process_discount() {
596
+
597
+        $initial_total    = $this->get_subtotal() + $this->get_fee() + $this->get_tax();
598
+        $recurring_total  = $this->get_recurring_subtotal() + $this->get_recurring_fee() + $this->get_recurring_tax();
599
+        $processor        = new GetPaid_Payment_Form_Submission_Discount( $this, $initial_total, $recurring_total );
600
+
601
+        foreach ( $processor->discounts as $discount ) {
602
+            $this->add_discount( $discount );
603
+        }
604
+
605
+        do_action_ref_array( 'getpaid_submissions_process_discounts', array( &$this ) );
606
+    }
607
+
608
+    /**
609
+     * Adds a discount to the submission.
610
+     *
611
+     * @param array $discount An array of discount details. name, initial_discount, and recurring_discount are required. Include discount_code if the discount is from a discount code.
612
+     * @since 1.0.19
613
+     */
614
+    public function add_discount( $discount ) {
615
+        $this->discounts[ $discount['name'] ]   = $discount;
616
+        $this->totals['discount']['initial']   += wpinv_sanitize_amount( $discount['initial_discount'] );
617
+        $this->totals['discount']['recurring'] += wpinv_sanitize_amount( $discount['recurring_discount'] );
618
+    }
619
+
620
+    /**
621
+     * Removes a discount from the submission.
622
+     *
623
+     * @since 1.0.19
624
+     */
625
+    public function remove_discount( $name ) {
626
+
627
+        if ( isset( $this->discounts[ $name ] ) ) {
628
+            $this->totals['discount']['initial']   -= $this->discounts[ $name ]['initial_discount'];
629
+            $this->totals['discount']['recurring'] -= $this->discounts[ $name ]['recurring_discount'];
630
+            unset( $this->discounts[ $name ] );
631
+        }
632
+
633
+    }
634
+
635
+    /**
636
+     * Checks whether there is a discount code associated with this submission.
637
+     *
638
+     * @since 1.0.19
639
+     * @return bool
640
+     */
641
+    public function has_discount_code() {
642
+        return ! empty( $this->discounts['discount_code'] );
643
+    }
644
+
645
+    /**
646
+     * Returns the discount code.
647
+     *
648
+     * @since 1.0.19
649
+     * @return string
650
+     */
651
+    public function get_discount_code() {
652
+        return $this->has_discount_code() ? $this->discounts['discount_code']['discount_code'] : '';
653
+    }
654
+
655
+    /**
656
+     * Returns the discount.
657
+     *
658
+     * @since 1.0.19
659
+     */
660
+    public function get_discount() {
661
+        return $this->totals['discount']['initial'];
662
+    }
663
+
664
+    /**
665
+     * Returns the recurring discount.
666
+     *
667
+     * @since 1.0.19
668
+     */
669
+    public function get_recurring_discount() {
670
+        return $this->totals['discount']['recurring'];
671
+    }
672
+
673
+    /**
674
+     * Returns all discounts.
675
+     *
676
+     * @since 1.0.19
677
+     */
678
+    public function get_discounts() {
679
+        return $this->discounts;
680
+    }
681
+
682
+    /*
683 683
 	|--------------------------------------------------------------------------
684 684
 	| Fees
685 685
 	|--------------------------------------------------------------------------
@@ -689,89 +689,89 @@  discard block
 block discarded – undo
689 689
 	| fees.
690 690
     */
691 691
 
692
-	/**
693
-	 * Prepares the submission's fees.
694
-	 *
695
-	 * @since 1.0.19
696
-	 */
697
-	public function process_fees() {
698
-
699
-		$fees_processor = new GetPaid_Payment_Form_Submission_Fees( $this );
700
-
701
-		foreach ( $fees_processor->fees as $fee ) {
702
-			$this->add_fee( $fee );
703
-		}
704
-
705
-		do_action_ref_array( 'getpaid_submissions_process_fees', array( &$this ) );
706
-	}
707
-
708
-	/**
709
-	 * Adds a fee to the submission.
710
-	 *
711
-	 * @param array $fee An array of fee details. name, initial_fee, and recurring_fee are required.
712
-	 * @since 1.0.19
713
-	 */
714
-	public function add_fee( $fee ) {
715
-
716
-		$this->fees[ $fee['name'] ]         = $fee;
717
-		$this->totals['fees']['initial']   += wpinv_sanitize_amount( $fee['initial_fee'] );
718
-		$this->totals['fees']['recurring'] += wpinv_sanitize_amount( $fee['recurring_fee'] );
719
-
720
-	}
721
-
722
-	/**
723
-	 * Removes a fee from the submission.
724
-	 *
725
-	 * @since 1.0.19
726
-	 */
727
-	public function remove_fee( $name ) {
728
-
729
-		if ( isset( $this->fees[ $name ] ) ) {
730
-			$this->totals['fees']['initial']   -= $this->fees[ $name ]['initial_fee'];
731
-			$this->totals['fees']['recurring'] -= $this->fees[ $name ]['recurring_fee'];
732
-			unset( $this->fees[ $name ] );
733
-		}
734
-
735
-	}
736
-
737
-	/**
738
-	 * Returns the fees.
739
-	 *
740
-	 * @since 1.0.19
741
-	 */
742
-	public function get_fee() {
743
-		return $this->totals['fees']['initial'];
744
-	}
745
-
746
-	/**
747
-	 * Returns the recurring fees.
748
-	 *
749
-	 * @since 1.0.19
750
-	 */
751
-	public function get_recurring_fee() {
752
-		return $this->totals['fees']['recurring'];
753
-	}
754
-
755
-	/**
756
-	 * Returns all fees.
757
-	 *
758
-	 * @since 1.0.19
759
-	 */
760
-	public function get_fees() {
761
-		return $this->fees;
762
-	}
763
-
764
-	/**
765
-	 * Checks if there are any fees for the form.
766
-	 *
767
-	 * @return bool
768
-	 * @since 1.0.19
769
-	 */
770
-	public function has_fees() {
771
-		return count( $this->fees ) !== 0;
772
-	}
773
-
774
-	/*
692
+    /**
693
+     * Prepares the submission's fees.
694
+     *
695
+     * @since 1.0.19
696
+     */
697
+    public function process_fees() {
698
+
699
+        $fees_processor = new GetPaid_Payment_Form_Submission_Fees( $this );
700
+
701
+        foreach ( $fees_processor->fees as $fee ) {
702
+            $this->add_fee( $fee );
703
+        }
704
+
705
+        do_action_ref_array( 'getpaid_submissions_process_fees', array( &$this ) );
706
+    }
707
+
708
+    /**
709
+     * Adds a fee to the submission.
710
+     *
711
+     * @param array $fee An array of fee details. name, initial_fee, and recurring_fee are required.
712
+     * @since 1.0.19
713
+     */
714
+    public function add_fee( $fee ) {
715
+
716
+        $this->fees[ $fee['name'] ]         = $fee;
717
+        $this->totals['fees']['initial']   += wpinv_sanitize_amount( $fee['initial_fee'] );
718
+        $this->totals['fees']['recurring'] += wpinv_sanitize_amount( $fee['recurring_fee'] );
719
+
720
+    }
721
+
722
+    /**
723
+     * Removes a fee from the submission.
724
+     *
725
+     * @since 1.0.19
726
+     */
727
+    public function remove_fee( $name ) {
728
+
729
+        if ( isset( $this->fees[ $name ] ) ) {
730
+            $this->totals['fees']['initial']   -= $this->fees[ $name ]['initial_fee'];
731
+            $this->totals['fees']['recurring'] -= $this->fees[ $name ]['recurring_fee'];
732
+            unset( $this->fees[ $name ] );
733
+        }
734
+
735
+    }
736
+
737
+    /**
738
+     * Returns the fees.
739
+     *
740
+     * @since 1.0.19
741
+     */
742
+    public function get_fee() {
743
+        return $this->totals['fees']['initial'];
744
+    }
745
+
746
+    /**
747
+     * Returns the recurring fees.
748
+     *
749
+     * @since 1.0.19
750
+     */
751
+    public function get_recurring_fee() {
752
+        return $this->totals['fees']['recurring'];
753
+    }
754
+
755
+    /**
756
+     * Returns all fees.
757
+     *
758
+     * @since 1.0.19
759
+     */
760
+    public function get_fees() {
761
+        return $this->fees;
762
+    }
763
+
764
+    /**
765
+     * Checks if there are any fees for the form.
766
+     *
767
+     * @return bool
768
+     * @since 1.0.19
769
+     */
770
+    public function has_fees() {
771
+        return count( $this->fees ) !== 0;
772
+    }
773
+
774
+    /*
775 775
 	|--------------------------------------------------------------------------
776 776
 	| MISC
777 777
 	|--------------------------------------------------------------------------
@@ -779,119 +779,119 @@  discard block
 block discarded – undo
779 779
 	| Extra submission functions.
780 780
     */
781 781
 
782
-	/**
783
-	 * Checks if this is the initial fetch.
784
-	 *
785
-	 * @return bool
786
-	 * @since 1.0.19
787
-	 */
788
-	public function is_initial_fetch() {
789
-		return empty( $this->data['initial_state'] );
790
-	}
791
-
792
-	/**
793
-	 * Returns the total amount to collect for this submission.
794
-	 *
795
-	 * @since 1.0.19
796
-	 */
797
-	public function get_total() {
798
-		$total = $this->get_subtotal() + $this->get_fee() + $this->get_tax() - $this->get_discount();
799
-		return max( $total, 0 );
800
-	}
801
-
802
-	/**
803
-	 * Returns the recurring total amount to collect for this submission.
804
-	 *
805
-	 * @since 1.0.19
806
-	 */
807
-	public function get_recurring_total() {
808
-		$total = $this->get_recurring_subtotal() + $this->get_recurring_fee() + $this->get_recurring_tax() - $this->get_recurring_discount();
809
-		return max( $total, 0 );
810
-	}
811
-
812
-	/**
813
-	 * Whether payment details should be collected for this submission.
814
-	 *
815
-	 * @since 1.0.19
816
-	 */
817
-	public function should_collect_payment_details() {
818
-		$initial   = $this->get_total();
819
-		$recurring = $this->get_recurring_total();
820
-
821
-		if ( $this->has_recurring == 0 ) {
822
-			$recurring = 0;
823
-		}
824
-
825
-		$collect = $initial > 0 || $recurring > 0;
826
-		return apply_filters( 'getpaid_submission_should_collect_payment_details', $collect, $this  );
827
-	}
828
-
829
-	/**
830
-	 * Returns the billing email of the user.
831
-	 *
832
-	 * @since 1.0.19
833
-	 */
834
-	public function get_billing_email() {
835
-		return apply_filters( 'getpaid_get_submission_billing_email', $this->get_field( 'billing_email' ), $this  );
836
-	}
837
-
838
-	/**
839
-	 * Checks if the submitter has a billing email.
840
-	 *
841
-	 * @since 1.0.19
842
-	 */
843
-	public function has_billing_email() {
844
-		$billing_email = $this->get_billing_email();
845
-		return ! empty( $billing_email ) && is_email( $billing_email );
846
-	}
847
-
848
-	/**
849
-	 * Returns the appropriate currency for the submission.
850
-	 *
851
-	 * @since 1.0.19
852
-	 * @return string
853
-	 */
854
-	public function get_currency() {
855
-		return $this->has_invoice() ? $this->invoice->get_currency() : wpinv_get_currency();
856
-    }
857
-
858
-    /**
859
-	 * Returns the raw submission data.
860
-	 *
861
-	 * @since 1.0.19
862
-	 * @return array
863
-	 */
864
-	public function get_data() {
865
-		return $this->data;
866
-	}
867
-
868
-	/**
869
-	 * Returns a field from the submission data
870
-	 *
871
-	 * @param string $field
872
-	 * @since 1.0.19
873
-	 * @return mixed|null
874
-	 */
875
-	public function get_field( $field, $sub_array_key = null ) {
876
-		return getpaid_get_array_field( $this->data, $field, $sub_array_key );
877
-	}
878
-
879
-	/**
880
-	 * Checks if a required field is set.
881
-	 *
882
-	 * @since 1.0.19
883
-	 */
884
-	public function is_required_field_set( $field ) {
885
-		return empty( $field['required'] ) || ! empty( $this->data[ $field['id'] ] );
886
-	}
887
-
888
-	/**
889
-	 * Formats an amount
890
-	 *
891
-	 * @since 1.0.19
892
-	 */
893
-	public function format_amount( $amount ) {
894
-		return wpinv_price( $amount, $this->get_currency() );
895
-	}
782
+    /**
783
+     * Checks if this is the initial fetch.
784
+     *
785
+     * @return bool
786
+     * @since 1.0.19
787
+     */
788
+    public function is_initial_fetch() {
789
+        return empty( $this->data['initial_state'] );
790
+    }
791
+
792
+    /**
793
+     * Returns the total amount to collect for this submission.
794
+     *
795
+     * @since 1.0.19
796
+     */
797
+    public function get_total() {
798
+        $total = $this->get_subtotal() + $this->get_fee() + $this->get_tax() - $this->get_discount();
799
+        return max( $total, 0 );
800
+    }
801
+
802
+    /**
803
+     * Returns the recurring total amount to collect for this submission.
804
+     *
805
+     * @since 1.0.19
806
+     */
807
+    public function get_recurring_total() {
808
+        $total = $this->get_recurring_subtotal() + $this->get_recurring_fee() + $this->get_recurring_tax() - $this->get_recurring_discount();
809
+        return max( $total, 0 );
810
+    }
811
+
812
+    /**
813
+     * Whether payment details should be collected for this submission.
814
+     *
815
+     * @since 1.0.19
816
+     */
817
+    public function should_collect_payment_details() {
818
+        $initial   = $this->get_total();
819
+        $recurring = $this->get_recurring_total();
820
+
821
+        if ( $this->has_recurring == 0 ) {
822
+            $recurring = 0;
823
+        }
824
+
825
+        $collect = $initial > 0 || $recurring > 0;
826
+        return apply_filters( 'getpaid_submission_should_collect_payment_details', $collect, $this  );
827
+    }
828
+
829
+    /**
830
+     * Returns the billing email of the user.
831
+     *
832
+     * @since 1.0.19
833
+     */
834
+    public function get_billing_email() {
835
+        return apply_filters( 'getpaid_get_submission_billing_email', $this->get_field( 'billing_email' ), $this  );
836
+    }
837
+
838
+    /**
839
+     * Checks if the submitter has a billing email.
840
+     *
841
+     * @since 1.0.19
842
+     */
843
+    public function has_billing_email() {
844
+        $billing_email = $this->get_billing_email();
845
+        return ! empty( $billing_email ) && is_email( $billing_email );
846
+    }
847
+
848
+    /**
849
+     * Returns the appropriate currency for the submission.
850
+     *
851
+     * @since 1.0.19
852
+     * @return string
853
+     */
854
+    public function get_currency() {
855
+        return $this->has_invoice() ? $this->invoice->get_currency() : wpinv_get_currency();
856
+    }
857
+
858
+    /**
859
+     * Returns the raw submission data.
860
+     *
861
+     * @since 1.0.19
862
+     * @return array
863
+     */
864
+    public function get_data() {
865
+        return $this->data;
866
+    }
867
+
868
+    /**
869
+     * Returns a field from the submission data
870
+     *
871
+     * @param string $field
872
+     * @since 1.0.19
873
+     * @return mixed|null
874
+     */
875
+    public function get_field( $field, $sub_array_key = null ) {
876
+        return getpaid_get_array_field( $this->data, $field, $sub_array_key );
877
+    }
878
+
879
+    /**
880
+     * Checks if a required field is set.
881
+     *
882
+     * @since 1.0.19
883
+     */
884
+    public function is_required_field_set( $field ) {
885
+        return empty( $field['required'] ) || ! empty( $this->data[ $field['id'] ] );
886
+    }
887
+
888
+    /**
889
+     * Formats an amount
890
+     *
891
+     * @since 1.0.19
892
+     */
893
+    public function format_amount( $amount ) {
894
+        return wpinv_price( $amount, $this->get_currency() );
895
+    }
896 896
 
897 897
 }
Please login to merge, or discard this patch.
includes/payments/class-getpaid-payment-form-submission-refresh-prices.php 1 patch
Indentation   +231 added lines, -231 removed lines patch added patch discarded remove patch
@@ -12,280 +12,280 @@
 block discarded – undo
12 12
  */
13 13
 class GetPaid_Payment_Form_Submission_Refresh_Prices {
14 14
 
15
-	/**
16
-	 * Contains the response for refreshing prices.
17
-	 * @var array
18
-	 */
19
-	public $response = array();
15
+    /**
16
+     * Contains the response for refreshing prices.
17
+     * @var array
18
+     */
19
+    public $response = array();
20 20
 
21 21
     /**
22
-	 * Class constructor
23
-	 *
24
-	 * @param GetPaid_Payment_Form_Submission $submission
25
-	 */
26
-	public function __construct( $submission ) {
27
-
28
-		$this->response = array(
29
-			'submission_id' => $submission->id,
22
+     * Class constructor
23
+     *
24
+     * @param GetPaid_Payment_Form_Submission $submission
25
+     */
26
+    public function __construct( $submission ) {
27
+
28
+        $this->response = array(
29
+            'submission_id' => $submission->id,
30 30
             'has_recurring' => $submission->has_recurring,
31 31
             'is_free'       => ! $submission->should_collect_payment_details(),
32
-		);
33
-
34
-		$this->add_totals( $submission );
35
-		$this->add_texts( $submission );
36
-		$this->add_items( $submission );
37
-		$this->add_fees( $submission );
38
-		$this->add_discounts( $submission );
39
-		$this->add_taxes( $submission );
40
-		$this->add_gateways( $submission );
41
-		$this->add_data( $submission );
42
-
43
-	}
44
-
45
-	/**
46
-	 * Adds totals to a response for submission refresh prices.
47
-	 *
48
-	 * @param GetPaid_Payment_Form_Submission $submission
49
-	 */
50
-	public function add_totals( $submission ) {
51
-
52
-		$this->response = array_merge(
53
-			$this->response,
54
-			array(
55
-
56
-				'totals'        => array(
57
-					'subtotal'  => $submission->format_amount( $submission->get_subtotal() ),
58
-					'discount'  => $submission->format_amount( $submission->get_discount() ),
59
-					'fees'      => $submission->format_amount( $submission->get_fee() ),
60
-					'tax'       => $submission->format_amount( $submission->get_tax() ),
61
-					'total'     => $submission->format_amount( $submission->get_total() ),
62
-					'raw_total' => html_entity_decode( sanitize_text_field( $submission->format_amount( $submission->get_total() ) ), ENT_QUOTES ),
63
-				),
64
-
65
-				'recurring'     => array(
66
-					'subtotal'  => $submission->format_amount( $submission->get_recurring_subtotal() ),
67
-					'discount'  => $submission->format_amount( $submission->get_recurring_discount() ),
68
-					'fees'      => $submission->format_amount( $submission->get_recurring_fee() ),
69
-					'tax'       => $submission->format_amount( $submission->get_recurring_tax() ),
70
-					'total'     => $submission->format_amount( $submission->get_recurring_total() ),
71
-				),
72
-
73
-				'initial_amt'   => wpinv_round_amount( $submission->get_total(), null, true ),
74
-				'currency'      => $submission->get_currency(),
75
-
76
-			)
77
-		);
78
-
79
-	}
80
-
81
-	/**
82
-	 * Adds texts to a response for submission refresh prices.
83
-	 *
84
-	 * @param GetPaid_Payment_Form_Submission $submission
85
-	 */
86
-	public function add_texts( $submission ) {
87
-
88
-		$payable = $submission->format_amount( $submission->get_total() );
89
-
90
-		if ( $submission->has_recurring != 0 && ! getpaid_should_group_subscriptions( $submission ) ) {
91
-
92
-			$recurring = new WPInv_Item( $submission->has_recurring );
93
-			$period    = getpaid_get_subscription_period_label( $recurring->get_recurring_period( true ), $recurring->get_recurring_interval(), '' );
94
-
95
-			if ( $submission->get_total() == $submission->get_recurring_total() ) {
96
-				$payable = "$payable / $period";
97
-			} else {
98
-				$payable = sprintf(
99
-					__( '%1$s (renews at %2$s / %3$s)', 'invoicing' ),
100
-					$submission->format_amount( $submission->get_total() ),
101
-					$submission->format_amount( $submission->get_recurring_total() ),
102
-					$period
103
-				);
104
-			}
105
-
106
-		}
107
-
108
-		$texts = array(
109
-			'.getpaid-checkout-total-payable' => $payable,
110
-		);
111
-
112
-		foreach ( $submission->get_items() as $item ) {
113
-			$item_id                                               = $item->get_id();
114
-			$initial_price                                         = $submission->format_amount( $this->standardize_price( $item->get_id(), $item->get_sub_total(), $submission->get_discount_code(), false ) );
115
-			$recurring_price                                       = $submission->format_amount( $this->standardize_price( $item->get_id(), $item->get_recurring_sub_total(), $submission->get_discount_code(), true ) );
116
-			$texts[".item-$item_id .getpaid-form-item-price-desc"] = getpaid_item_recurring_price_help_text( $item, $submission->get_currency(), $initial_price, $recurring_price );
117
-		}
118
-
119
-		$this->response = array_merge( $this->response, array( 'texts' => $texts ) );
120
-
121
-	}
122
-
123
-	/**
124
-	 * Adds items to a response for submission refresh prices.
125
-	 *
126
-	 * @param GetPaid_Payment_Form_Submission $submission
127
-	 */
128
-	public function add_items( $submission ) {
129
-
130
-		// Add items.
131
-		$items = array();
32
+        );
33
+
34
+        $this->add_totals( $submission );
35
+        $this->add_texts( $submission );
36
+        $this->add_items( $submission );
37
+        $this->add_fees( $submission );
38
+        $this->add_discounts( $submission );
39
+        $this->add_taxes( $submission );
40
+        $this->add_gateways( $submission );
41
+        $this->add_data( $submission );
42
+
43
+    }
44
+
45
+    /**
46
+     * Adds totals to a response for submission refresh prices.
47
+     *
48
+     * @param GetPaid_Payment_Form_Submission $submission
49
+     */
50
+    public function add_totals( $submission ) {
51
+
52
+        $this->response = array_merge(
53
+            $this->response,
54
+            array(
55
+
56
+                'totals'        => array(
57
+                    'subtotal'  => $submission->format_amount( $submission->get_subtotal() ),
58
+                    'discount'  => $submission->format_amount( $submission->get_discount() ),
59
+                    'fees'      => $submission->format_amount( $submission->get_fee() ),
60
+                    'tax'       => $submission->format_amount( $submission->get_tax() ),
61
+                    'total'     => $submission->format_amount( $submission->get_total() ),
62
+                    'raw_total' => html_entity_decode( sanitize_text_field( $submission->format_amount( $submission->get_total() ) ), ENT_QUOTES ),
63
+                ),
64
+
65
+                'recurring'     => array(
66
+                    'subtotal'  => $submission->format_amount( $submission->get_recurring_subtotal() ),
67
+                    'discount'  => $submission->format_amount( $submission->get_recurring_discount() ),
68
+                    'fees'      => $submission->format_amount( $submission->get_recurring_fee() ),
69
+                    'tax'       => $submission->format_amount( $submission->get_recurring_tax() ),
70
+                    'total'     => $submission->format_amount( $submission->get_recurring_total() ),
71
+                ),
72
+
73
+                'initial_amt'   => wpinv_round_amount( $submission->get_total(), null, true ),
74
+                'currency'      => $submission->get_currency(),
75
+
76
+            )
77
+        );
78
+
79
+    }
80
+
81
+    /**
82
+     * Adds texts to a response for submission refresh prices.
83
+     *
84
+     * @param GetPaid_Payment_Form_Submission $submission
85
+     */
86
+    public function add_texts( $submission ) {
87
+
88
+        $payable = $submission->format_amount( $submission->get_total() );
89
+
90
+        if ( $submission->has_recurring != 0 && ! getpaid_should_group_subscriptions( $submission ) ) {
91
+
92
+            $recurring = new WPInv_Item( $submission->has_recurring );
93
+            $period    = getpaid_get_subscription_period_label( $recurring->get_recurring_period( true ), $recurring->get_recurring_interval(), '' );
94
+
95
+            if ( $submission->get_total() == $submission->get_recurring_total() ) {
96
+                $payable = "$payable / $period";
97
+            } else {
98
+                $payable = sprintf(
99
+                    __( '%1$s (renews at %2$s / %3$s)', 'invoicing' ),
100
+                    $submission->format_amount( $submission->get_total() ),
101
+                    $submission->format_amount( $submission->get_recurring_total() ),
102
+                    $period
103
+                );
104
+            }
105
+
106
+        }
107
+
108
+        $texts = array(
109
+            '.getpaid-checkout-total-payable' => $payable,
110
+        );
132 111
 
133 112
         foreach ( $submission->get_items() as $item ) {
134
-			$item_id           = $item->get_id();
135
-			$items["$item_id"] = $submission->format_amount( $item->get_sub_total() );
136
-		}
113
+            $item_id                                               = $item->get_id();
114
+            $initial_price                                         = $submission->format_amount( $this->standardize_price( $item->get_id(), $item->get_sub_total(), $submission->get_discount_code(), false ) );
115
+            $recurring_price                                       = $submission->format_amount( $this->standardize_price( $item->get_id(), $item->get_recurring_sub_total(), $submission->get_discount_code(), true ) );
116
+            $texts[".item-$item_id .getpaid-form-item-price-desc"] = getpaid_item_recurring_price_help_text( $item, $submission->get_currency(), $initial_price, $recurring_price );
117
+        }
137 118
 
138
-		$this->response = array_merge(
139
-			$this->response,
140
-			array( 'items' => $items )
141
-		);
119
+        $this->response = array_merge( $this->response, array( 'texts' => $texts ) );
142 120
 
143
-	}
121
+    }
144 122
 
145
-	/**
146
-	 * Adds fees to a response for submission refresh prices.
147
-	 *
148
-	 * @param GetPaid_Payment_Form_Submission $submission
149
-	 */
150
-	public function add_fees( $submission ) {
123
+    /**
124
+     * Adds items to a response for submission refresh prices.
125
+     *
126
+     * @param GetPaid_Payment_Form_Submission $submission
127
+     */
128
+    public function add_items( $submission ) {
151 129
 
152
-		$fees = array();
130
+        // Add items.
131
+        $items = array();
153 132
 
154
-        foreach ( $submission->get_fees() as $name => $data ) {
155
-			$fees[$name] = $submission->format_amount( $data['initial_fee'] );
156
-		}
133
+        foreach ( $submission->get_items() as $item ) {
134
+            $item_id           = $item->get_id();
135
+            $items["$item_id"] = $submission->format_amount( $item->get_sub_total() );
136
+        }
157 137
 
158
-		$this->response = array_merge(
159
-			$this->response,
160
-			array( 'fees' => $fees )
161
-		);
138
+        $this->response = array_merge(
139
+            $this->response,
140
+            array( 'items' => $items )
141
+        );
162 142
 
163
-	}
143
+    }
164 144
 
165
-	/**
166
-	 * Adds discounts to a response for submission refresh prices.
167
-	 *
168
-	 * @param GetPaid_Payment_Form_Submission $submission
169
-	 */
170
-	public function add_discounts( $submission ) {
145
+    /**
146
+     * Adds fees to a response for submission refresh prices.
147
+     *
148
+     * @param GetPaid_Payment_Form_Submission $submission
149
+     */
150
+    public function add_fees( $submission ) {
171 151
 
172
-		$discounts = array();
152
+        $fees = array();
173 153
 
174
-        foreach ( $submission->get_discounts() as $name => $data ) {
175
-			$discounts[$name] = $submission->format_amount( $data['initial_discount'] );
176
-		}
154
+        foreach ( $submission->get_fees() as $name => $data ) {
155
+            $fees[$name] = $submission->format_amount( $data['initial_fee'] );
156
+        }
177 157
 
178
-		$this->response = array_merge(
179
-			$this->response,
180
-			array( 'discounts' => $discounts )
181
-		);
158
+        $this->response = array_merge(
159
+            $this->response,
160
+            array( 'fees' => $fees )
161
+        );
182 162
 
183
-	}
163
+    }
184 164
 
185
-	/**
186
-	 * Adds taxes to a response for submission refresh prices.
187
-	 *
188
-	 * @param GetPaid_Payment_Form_Submission $submission
189
-	 */
190
-	public function add_taxes( $submission ) {
165
+    /**
166
+     * Adds discounts to a response for submission refresh prices.
167
+     *
168
+     * @param GetPaid_Payment_Form_Submission $submission
169
+     */
170
+    public function add_discounts( $submission ) {
191 171
 
192
-		$taxes  = array();
193
-		$markup = '';
194
-        foreach ( $submission->get_taxes() as $name => $data ) {
195
-			$name          = sanitize_text_field( $name );
196
-			$amount        = $submission->format_amount( $data['initial_tax'] );
197
-			$taxes[$name]  = $amount;
198
-			$markup       .= "<small class='form-text'>$name : $amount</small>";
199
-		}
172
+        $discounts = array();
173
+
174
+        foreach ( $submission->get_discounts() as $name => $data ) {
175
+            $discounts[$name] = $submission->format_amount( $data['initial_discount'] );
176
+        }
200 177
 
201
-		if ( wpinv_display_individual_tax_rates() && ! empty( $taxes ) ) {
202
-			$this->response['texts']['.getpaid-form-cart-totals-total-tax'] = $markup;
203
-		}
178
+        $this->response = array_merge(
179
+            $this->response,
180
+            array( 'discounts' => $discounts )
181
+        );
204 182
 
205
-		$this->response = array_merge(
206
-			$this->response,
207
-			array( 'taxes' => $taxes )
208
-		);
183
+    }
209 184
 
210
-	}
185
+    /**
186
+     * Adds taxes to a response for submission refresh prices.
187
+     *
188
+     * @param GetPaid_Payment_Form_Submission $submission
189
+     */
190
+    public function add_taxes( $submission ) {
191
+
192
+        $taxes  = array();
193
+        $markup = '';
194
+        foreach ( $submission->get_taxes() as $name => $data ) {
195
+            $name          = sanitize_text_field( $name );
196
+            $amount        = $submission->format_amount( $data['initial_tax'] );
197
+            $taxes[$name]  = $amount;
198
+            $markup       .= "<small class='form-text'>$name : $amount</small>";
199
+        }
211 200
 
212
-	/**
213
-	 * Adds gateways to a response for submission refresh prices.
214
-	 *
215
-	 * @param GetPaid_Payment_Form_Submission $submission
216
-	 */
217
-	public function add_gateways( $submission ) {
201
+        if ( wpinv_display_individual_tax_rates() && ! empty( $taxes ) ) {
202
+            $this->response['texts']['.getpaid-form-cart-totals-total-tax'] = $markup;
203
+        }
218 204
 
219
-		$gateways = array_keys( wpinv_get_enabled_payment_gateways() );
205
+        $this->response = array_merge(
206
+            $this->response,
207
+            array( 'taxes' => $taxes )
208
+        );
220 209
 
221
-		if ( $this->response['has_recurring'] ) {
210
+    }
222 211
 
223
-			foreach ( $gateways as $i => $gateway ) {
212
+    /**
213
+     * Adds gateways to a response for submission refresh prices.
214
+     *
215
+     * @param GetPaid_Payment_Form_Submission $submission
216
+     */
217
+    public function add_gateways( $submission ) {
224 218
 
225
-				if ( ! wpinv_gateway_support_subscription( $gateway ) ) {
226
-					unset( $gateways[ $i ] );
227
-				}
219
+        $gateways = array_keys( wpinv_get_enabled_payment_gateways() );
228 220
 
229
-			}
221
+        if ( $this->response['has_recurring'] ) {
230 222
 
231
-		}
223
+            foreach ( $gateways as $i => $gateway ) {
232 224
 
225
+                if ( ! wpinv_gateway_support_subscription( $gateway ) ) {
226
+                    unset( $gateways[ $i ] );
227
+                }
233 228
 
234
-		$gateways = apply_filters( 'getpaid_submission_gateways', $gateways, $submission );
235
-		$this->response = array_merge(
236
-			$this->response,
237
-			array( 'gateways' => $gateways )
238
-		);
229
+            }
239 230
 
240
-	}
231
+        }
241 232
 
242
-	/**
243
-	 * Standardizes prices.
244
-	 *
245
-	 * @param int $item_id
246
-	 * @param float $item_total
247
-	 * @param string $discount_code
248
-	 * @param bool $recurring
249
-	 */
250
-	public function standardize_price( $item_id, $item_total, $discount_code, $recurring = false ) {
251 233
 
252
-		$standardadized_price = $item_total;
234
+        $gateways = apply_filters( 'getpaid_submission_gateways', $gateways, $submission );
235
+        $this->response = array_merge(
236
+            $this->response,
237
+            array( 'gateways' => $gateways )
238
+        );
253 239
 
254
-		// Do we have a $discount_code?
255
-		if ( ! empty( $discount_code ) ) {
240
+    }
256 241
 
257
-			$discount = new WPInv_Discount( $discount_code );
242
+    /**
243
+     * Standardizes prices.
244
+     *
245
+     * @param int $item_id
246
+     * @param float $item_total
247
+     * @param string $discount_code
248
+     * @param bool $recurring
249
+     */
250
+    public function standardize_price( $item_id, $item_total, $discount_code, $recurring = false ) {
251
+
252
+        $standardadized_price = $item_total;
258 253
 
259
-			if ( $discount->exists() && $discount->is_valid_for_items( $item_id ) && ( ! $recurring || $discount->is_recurring() ) ) {
260
-				$standardadized_price = $item_total - $discount->get_discounted_amount( $item_total );
261
-			}
254
+        // Do we have a $discount_code?
255
+        if ( ! empty( $discount_code ) ) {
262 256
 
263
-		}
257
+            $discount = new WPInv_Discount( $discount_code );
264 258
 
265
-    	return max( 0, $standardadized_price );
259
+            if ( $discount->exists() && $discount->is_valid_for_items( $item_id ) && ( ! $recurring || $discount->is_recurring() ) ) {
260
+                $standardadized_price = $item_total - $discount->get_discounted_amount( $item_total );
261
+            }
266 262
 
267
-	}
263
+        }
268 264
 
269
-	/**
270
-	 * Adds data to a response for submission refresh prices.
271
-	 *
272
-	 * @param GetPaid_Payment_Form_Submission $submission
273
-	 */
274
-	public function add_data( $submission ) {
265
+        return max( 0, $standardadized_price );
275 266
 
276
-		$this->response = array_merge(
277
-			$this->response,
278
-			array(
279
-				'js_data' => apply_filters(
280
-					'getpaid_submission_js_data',
281
-					array(
282
-						'is_recurring' => $this->response['has_recurring'],
283
-					),
284
-					$submission
285
-				)
286
-			)
287
-		);
267
+    }
288 268
 
289
-	}
269
+    /**
270
+     * Adds data to a response for submission refresh prices.
271
+     *
272
+     * @param GetPaid_Payment_Form_Submission $submission
273
+     */
274
+    public function add_data( $submission ) {
275
+
276
+        $this->response = array_merge(
277
+            $this->response,
278
+            array(
279
+                'js_data' => apply_filters(
280
+                    'getpaid_submission_js_data',
281
+                    array(
282
+                        'is_recurring' => $this->response['has_recurring'],
283
+                    ),
284
+                    $submission
285
+                )
286
+            )
287
+        );
288
+
289
+    }
290 290
 
291 291
 }
Please login to merge, or discard this patch.