Passed
Push — master ( 73f2f1...e7f679 )
by Brian
04:31
created
includes/data-stores/class-getpaid-item-data-store.php 1 patch
Indentation   +210 added lines, -210 removed lines patch added patch discarded remove patch
@@ -4,7 +4,7 @@  discard block
 block discarded – undo
4 4
  *
5 5
  */
6 6
 if ( ! defined( 'ABSPATH' ) ) {
7
-	exit;
7
+    exit;
8 8
 }
9 9
 
10 10
 /**
@@ -14,228 +14,228 @@  discard block
 block discarded – undo
14 14
  */
15 15
 class GetPaid_Item_Data_Store extends GetPaid_Data_Store_WP {
16 16
 
17
-	/**
18
-	 * Data stored in meta keys, but not considered "meta" for an item.
19
-	 *
20
-	 * @since 1.0.19
21
-	 * @var array
22
-	 */
23
-	protected $internal_meta_keys = array(
24
-		'_wpinv_price',
25
-		'_wpinv_vat_rule',
26
-		'_wpinv_vat_class',
27
-		'_wpinv_type',
28
-		'_wpinv_custom_id',
29
-		'_wpinv_custom_name',
30
-		'_wpinv_custom_singular_name',
31
-		'_wpinv_editable',
32
-		'_wpinv_dynamic_pricing',
33
-		'_minimum_price',
34
-		'_wpinv_is_recurring',
35
-		'_wpinv_recurring_period',
36
-		'_wpinv_recurring_interval',
37
-		'_wpinv_recurring_limit',
38
-		'_wpinv_free_trial',
39
-		'_wpinv_trial_period',
40
-		'_wpinv_trial_interval',
41
-	);
42
-
43
-	/**
44
-	 * A map of meta keys to data props.
45
-	 *
46
-	 * @since 1.0.19
47
-	 *
48
-	 * @var array
49
-	 */
50
-	protected $meta_key_to_props = array(
51
-		'_wpinv_price'                => 'price',
52
-		'_wpinv_vat_rule'             => 'vat_rule',
53
-		'_wpinv_vat_class'            => 'vat_class',
54
-		'_wpinv_type'                 => 'type',
55
-		'_wpinv_custom_id'            => 'custom_id',
56
-		'_wpinv_custom_name'          => 'custom_name',
57
-		'_wpinv_custom_singular_name' => 'custom_singular_name',
58
-		'_wpinv_editable'             => 'is_editable',
59
-		'_wpinv_dynamic_pricing'      => 'is_dynamic_pricing',
60
-		'_minimum_price'              => 'minimum_price',
61
-		'_wpinv_custom_name'          => 'custom_name',
62
-		'_wpinv_is_recurring'         => 'is_recurring',
63
-		'_wpinv_recurring_period'     => 'recurring_period',
64
-		'_wpinv_recurring_interval'   => 'recurring_interval',
65
-		'_wpinv_recurring_limit'      => 'recurring_limit',
66
-		'_wpinv_free_trial'           => 'is_free_trial',
67
-		'_wpinv_trial_period'         => 'trial_period',
68
-		'_wpinv_trial_interval'       => 'trial_interval',
69
-		'_wpinv_version'              => 'version',
70
-	);
71
-
72
-	/*
17
+    /**
18
+     * Data stored in meta keys, but not considered "meta" for an item.
19
+     *
20
+     * @since 1.0.19
21
+     * @var array
22
+     */
23
+    protected $internal_meta_keys = array(
24
+        '_wpinv_price',
25
+        '_wpinv_vat_rule',
26
+        '_wpinv_vat_class',
27
+        '_wpinv_type',
28
+        '_wpinv_custom_id',
29
+        '_wpinv_custom_name',
30
+        '_wpinv_custom_singular_name',
31
+        '_wpinv_editable',
32
+        '_wpinv_dynamic_pricing',
33
+        '_minimum_price',
34
+        '_wpinv_is_recurring',
35
+        '_wpinv_recurring_period',
36
+        '_wpinv_recurring_interval',
37
+        '_wpinv_recurring_limit',
38
+        '_wpinv_free_trial',
39
+        '_wpinv_trial_period',
40
+        '_wpinv_trial_interval',
41
+    );
42
+
43
+    /**
44
+     * A map of meta keys to data props.
45
+     *
46
+     * @since 1.0.19
47
+     *
48
+     * @var array
49
+     */
50
+    protected $meta_key_to_props = array(
51
+        '_wpinv_price'                => 'price',
52
+        '_wpinv_vat_rule'             => 'vat_rule',
53
+        '_wpinv_vat_class'            => 'vat_class',
54
+        '_wpinv_type'                 => 'type',
55
+        '_wpinv_custom_id'            => 'custom_id',
56
+        '_wpinv_custom_name'          => 'custom_name',
57
+        '_wpinv_custom_singular_name' => 'custom_singular_name',
58
+        '_wpinv_editable'             => 'is_editable',
59
+        '_wpinv_dynamic_pricing'      => 'is_dynamic_pricing',
60
+        '_minimum_price'              => 'minimum_price',
61
+        '_wpinv_custom_name'          => 'custom_name',
62
+        '_wpinv_is_recurring'         => 'is_recurring',
63
+        '_wpinv_recurring_period'     => 'recurring_period',
64
+        '_wpinv_recurring_interval'   => 'recurring_interval',
65
+        '_wpinv_recurring_limit'      => 'recurring_limit',
66
+        '_wpinv_free_trial'           => 'is_free_trial',
67
+        '_wpinv_trial_period'         => 'trial_period',
68
+        '_wpinv_trial_interval'       => 'trial_interval',
69
+        '_wpinv_version'              => 'version',
70
+    );
71
+
72
+    /*
73 73
 	|--------------------------------------------------------------------------
74 74
 	| CRUD Methods
75 75
 	|--------------------------------------------------------------------------
76 76
 	*/
77 77
 
78
-	/**
79
-	 * Method to create a new item in the database.
80
-	 *
81
-	 * @param WPInv_Item $item Item object.
82
-	 */
83
-	public function create( &$item ) {
84
-		$item->set_version( WPINV_VERSION );
85
-		$item->set_date_created( current_time( 'mysql' ) );
86
-
87
-		// Create a new post.
88
-		$id = wp_insert_post(
89
-			apply_filters(
90
-				'getpaid_new_item_data',
91
-				array(
92
-					'post_date'    => $item->get_date_created( 'edit' ),
93
-					'post_type'    => 'wpi_item',
94
-					'post_status'  => $this->get_post_status( $item ),
95
-					'ping_status'  => 'closed',
96
-					'post_author'  => $item->get_author( 'edit' ),
97
-					'post_title'   => $item->get_name( 'edit' ),
98
-					'post_parent'  => 0,
99
-					'post_excerpt' => $item->get_description( 'edit' ),
100
-				)
101
-			),
102
-			true
103
-		);
104
-
105
-		if ( $id && ! is_wp_error( $id ) ) {
106
-			$item->set_id( $id );
107
-			$this->update_post_meta( $item );
108
-			$item->save_meta_data();
109
-			$item->apply_changes();
110
-			$this->clear_caches( $item );
111
-			do_action( 'getpaid_new_item', $item );
112
-			return true;
113
-		}
114
-
115
-		if ( is_wp_error( $id ) ) {
116
-			$item->last_error = $id->get_error_message();
117
-		}
118
-
119
-		return false;
120
-	}
121
-
122
-	/**
123
-	 * Method to read an item from the database.
124
-	 *
125
-	 * @param WPInv_Item $item Item object.
126
-	 *
127
-	 */
128
-	public function read( &$item ) {
129
-
130
-		$item->set_defaults();
131
-		$item_object = get_post( $item->get_id() );
132
-
133
-		if ( ! $item->get_id() || ! $item_object || $item_object->post_type != 'wpi_item' ) {
134
-			$item->last_error = __( 'Invalid item.', 'invoicing' );
135
-			$item->set_id( 0 );
136
-			return false;
137
-		}
138
-
139
-		$item->set_props(
140
-			array(
141
-				'parent_id'     => $item_object->post_parent,
142
-				'date_created'  => 0 < $item_object->post_date ? $item_object->post_date : null,
143
-				'date_modified' => 0 < $item_object->post_modified ? $item_object->post_modified : null,
144
-				'status'        => $item_object->post_status,
145
-				'name'          => $item_object->post_title,
146
-				'description'   => $item_object->post_excerpt,
147
-				'author'        => $item_object->post_author,
148
-			)
149
-		);
150
-
151
-		$this->read_object_data( $item, $item_object );
152
-		$item->read_meta_data();
153
-		$item->set_object_read( true );
154
-		do_action( 'getpaid_read_item', $item );
155
-
156
-	}
157
-
158
-	/**
159
-	 * Method to update an item in the database.
160
-	 *
161
-	 * @param WPInv_Item $item Item object.
162
-	 */
163
-	public function update( &$item ) {
164
-		$item->save_meta_data();
165
-		$item->set_version( WPINV_VERSION );
166
-
167
-		if ( null === $item->get_date_created( 'edit' ) ) {
168
-			$item->set_date_created( current_time( 'mysql' ) );
169
-		}
170
-
171
-		// Grab the current status so we can compare.
172
-		$previous_status = get_post_status( $item->get_id() );
173
-
174
-		$changes = $item->get_changes();
175
-
176
-		// Only update the post when the post data changes.
177
-		if ( array_intersect( array( 'date_created', 'date_modified', 'status', 'parent_id', 'description', 'name', 'author' ), array_keys( $changes ) ) ) {
178
-			$post_data = array(
179
-				'post_date'     => $item->get_date_created( 'edit' ),
180
-				'post_status'   => $item->get_status( 'edit' ),
181
-				'post_parent'   => $item->get_parent_id( 'edit' ),
182
-				'post_excerpt'  => $item->get_description( 'edit' ),
183
-				'post_modified' => $item->get_date_modified( 'edit' ),
184
-				'post_title'    => $item->get_name( 'edit' ),
185
-				'post_author'   => $item->get_author( 'edit' ),
186
-			);
187
-
188
-			/**
189
-			 * When updating this object, to prevent infinite loops, use $wpdb
190
-			 * to update data, since wp_update_post spawns more calls to the
191
-			 * save_post action.
192
-			 *
193
-			 * This ensures hooks are fired by either WP itself (admin screen save),
194
-			 * or an update purely from CRUD.
195
-			 */
196
-			if ( doing_action( 'save_post' ) ) {
197
-				$GLOBALS['wpdb']->update( $GLOBALS['wpdb']->posts, $post_data, array( 'ID' => $item->get_id() ) );
198
-				clean_post_cache( $item->get_id() );
199
-			} else {
200
-				wp_update_post( array_merge( array( 'ID' => $item->get_id() ), $post_data ) );
201
-			}
202
-			$item->read_meta_data( true ); // Refresh internal meta data, in case things were hooked into `save_post` or another WP hook.
203
-		}
204
-		$this->update_post_meta( $item );
205
-		$item->apply_changes();
206
-		$this->clear_caches( $item );
207
-
208
-		// Fire a hook depending on the status - this should be considered a creation if it was previously draft status.
209
-		$new_status = $item->get_status( 'edit' );
210
-
211
-		if ( $new_status !== $previous_status && in_array( $previous_status, array( 'new', 'auto-draft', 'draft' ), true ) ) {
212
-			do_action( 'getpaid_new_item', $item );
213
-		} else {
214
-			do_action( 'getpaid_update_item', $item );
215
-		}
216
-
217
-	}
218
-
219
-	/*
78
+    /**
79
+     * Method to create a new item in the database.
80
+     *
81
+     * @param WPInv_Item $item Item object.
82
+     */
83
+    public function create( &$item ) {
84
+        $item->set_version( WPINV_VERSION );
85
+        $item->set_date_created( current_time( 'mysql' ) );
86
+
87
+        // Create a new post.
88
+        $id = wp_insert_post(
89
+            apply_filters(
90
+                'getpaid_new_item_data',
91
+                array(
92
+                    'post_date'    => $item->get_date_created( 'edit' ),
93
+                    'post_type'    => 'wpi_item',
94
+                    'post_status'  => $this->get_post_status( $item ),
95
+                    'ping_status'  => 'closed',
96
+                    'post_author'  => $item->get_author( 'edit' ),
97
+                    'post_title'   => $item->get_name( 'edit' ),
98
+                    'post_parent'  => 0,
99
+                    'post_excerpt' => $item->get_description( 'edit' ),
100
+                )
101
+            ),
102
+            true
103
+        );
104
+
105
+        if ( $id && ! is_wp_error( $id ) ) {
106
+            $item->set_id( $id );
107
+            $this->update_post_meta( $item );
108
+            $item->save_meta_data();
109
+            $item->apply_changes();
110
+            $this->clear_caches( $item );
111
+            do_action( 'getpaid_new_item', $item );
112
+            return true;
113
+        }
114
+
115
+        if ( is_wp_error( $id ) ) {
116
+            $item->last_error = $id->get_error_message();
117
+        }
118
+
119
+        return false;
120
+    }
121
+
122
+    /**
123
+     * Method to read an item from the database.
124
+     *
125
+     * @param WPInv_Item $item Item object.
126
+     *
127
+     */
128
+    public function read( &$item ) {
129
+
130
+        $item->set_defaults();
131
+        $item_object = get_post( $item->get_id() );
132
+
133
+        if ( ! $item->get_id() || ! $item_object || $item_object->post_type != 'wpi_item' ) {
134
+            $item->last_error = __( 'Invalid item.', 'invoicing' );
135
+            $item->set_id( 0 );
136
+            return false;
137
+        }
138
+
139
+        $item->set_props(
140
+            array(
141
+                'parent_id'     => $item_object->post_parent,
142
+                'date_created'  => 0 < $item_object->post_date ? $item_object->post_date : null,
143
+                'date_modified' => 0 < $item_object->post_modified ? $item_object->post_modified : null,
144
+                'status'        => $item_object->post_status,
145
+                'name'          => $item_object->post_title,
146
+                'description'   => $item_object->post_excerpt,
147
+                'author'        => $item_object->post_author,
148
+            )
149
+        );
150
+
151
+        $this->read_object_data( $item, $item_object );
152
+        $item->read_meta_data();
153
+        $item->set_object_read( true );
154
+        do_action( 'getpaid_read_item', $item );
155
+
156
+    }
157
+
158
+    /**
159
+     * Method to update an item in the database.
160
+     *
161
+     * @param WPInv_Item $item Item object.
162
+     */
163
+    public function update( &$item ) {
164
+        $item->save_meta_data();
165
+        $item->set_version( WPINV_VERSION );
166
+
167
+        if ( null === $item->get_date_created( 'edit' ) ) {
168
+            $item->set_date_created( current_time( 'mysql' ) );
169
+        }
170
+
171
+        // Grab the current status so we can compare.
172
+        $previous_status = get_post_status( $item->get_id() );
173
+
174
+        $changes = $item->get_changes();
175
+
176
+        // Only update the post when the post data changes.
177
+        if ( array_intersect( array( 'date_created', 'date_modified', 'status', 'parent_id', 'description', 'name', 'author' ), array_keys( $changes ) ) ) {
178
+            $post_data = array(
179
+                'post_date'     => $item->get_date_created( 'edit' ),
180
+                'post_status'   => $item->get_status( 'edit' ),
181
+                'post_parent'   => $item->get_parent_id( 'edit' ),
182
+                'post_excerpt'  => $item->get_description( 'edit' ),
183
+                'post_modified' => $item->get_date_modified( 'edit' ),
184
+                'post_title'    => $item->get_name( 'edit' ),
185
+                'post_author'   => $item->get_author( 'edit' ),
186
+            );
187
+
188
+            /**
189
+             * When updating this object, to prevent infinite loops, use $wpdb
190
+             * to update data, since wp_update_post spawns more calls to the
191
+             * save_post action.
192
+             *
193
+             * This ensures hooks are fired by either WP itself (admin screen save),
194
+             * or an update purely from CRUD.
195
+             */
196
+            if ( doing_action( 'save_post' ) ) {
197
+                $GLOBALS['wpdb']->update( $GLOBALS['wpdb']->posts, $post_data, array( 'ID' => $item->get_id() ) );
198
+                clean_post_cache( $item->get_id() );
199
+            } else {
200
+                wp_update_post( array_merge( array( 'ID' => $item->get_id() ), $post_data ) );
201
+            }
202
+            $item->read_meta_data( true ); // Refresh internal meta data, in case things were hooked into `save_post` or another WP hook.
203
+        }
204
+        $this->update_post_meta( $item );
205
+        $item->apply_changes();
206
+        $this->clear_caches( $item );
207
+
208
+        // Fire a hook depending on the status - this should be considered a creation if it was previously draft status.
209
+        $new_status = $item->get_status( 'edit' );
210
+
211
+        if ( $new_status !== $previous_status && in_array( $previous_status, array( 'new', 'auto-draft', 'draft' ), true ) ) {
212
+            do_action( 'getpaid_new_item', $item );
213
+        } else {
214
+            do_action( 'getpaid_update_item', $item );
215
+        }
216
+
217
+    }
218
+
219
+    /*
220 220
 	|--------------------------------------------------------------------------
221 221
 	| Additional Methods
222 222
 	|--------------------------------------------------------------------------
223 223
 	*/
224 224
 
225
-	/**
226
-	 * Helper method that updates all the post meta for an item based on it's settings in the WPInv_Item class.
227
-	 *
228
-	 * @param WPInv_Item $item WPInv_Item object.
229
-	 * @since 1.0.19
230
-	 */
231
-	protected function update_post_meta( &$item ) {
225
+    /**
226
+     * Helper method that updates all the post meta for an item based on it's settings in the WPInv_Item class.
227
+     *
228
+     * @param WPInv_Item $item WPInv_Item object.
229
+     * @since 1.0.19
230
+     */
231
+    protected function update_post_meta( &$item ) {
232 232
 
233
-		// Ensure that we have a custom id.
233
+        // Ensure that we have a custom id.
234 234
         if ( ! $item->get_custom_id() ) {
235 235
             $item->set_custom_id( $item->get_id() );
236
-		}
236
+        }
237 237
 
238
-		parent::update_post_meta( $item );
239
-	}
238
+        parent::update_post_meta( $item );
239
+    }
240 240
 
241 241
 }
Please login to merge, or discard this patch.
includes/class-wpinv-subscriptions.php 1 patch
Indentation   +4 added lines, -4 removed lines patch added patch discarded remove patch
@@ -12,8 +12,8 @@  discard block
 block discarded – undo
12 12
 class WPInv_Subscriptions {
13 13
 
14 14
     /**
15
-	 * Class constructor.
16
-	 */
15
+     * Class constructor.
16
+     */
17 17
     public function __construct() {
18 18
 
19 19
         // Fire gateway specific hooks when a subscription changes.
@@ -89,12 +89,12 @@  discard block
 block discarded – undo
89 89
     }
90 90
 
91 91
     /**
92
-	 * Processes subscription status changes.
92
+     * Processes subscription status changes.
93 93
      *
94 94
      * @param WPInv_Subscription $subscription
95 95
      * @param string $from
96 96
      * @param string $to
97
-	 */
97
+     */
98 98
     public function process_subscription_status_change( $subscription, $from, $to ) {
99 99
 
100 100
         $gateway = $subscription->get_gateway();
Please login to merge, or discard this patch.
includes/wpinv-gateway-functions.php 1 patch
Indentation   +28 added lines, -28 removed lines patch added patch discarded remove patch
@@ -271,26 +271,26 @@  discard block
 block discarded – undo
271 271
 }
272 272
 
273 273
 function wpinv_get_chosen_gateway( $invoice_id = 0 ) {
274
-	$gateways = array_keys( wpinv_get_enabled_payment_gateways() );
274
+    $gateways = array_keys( wpinv_get_enabled_payment_gateways() );
275 275
 
276 276
     $chosen = false;
277 277
     if ( $invoice_id > 0 && $invoice = wpinv_get_invoice( $invoice_id ) ) {
278 278
         $chosen = $invoice->get_gateway();
279 279
     }
280 280
 
281
-	$chosen   = isset( $_REQUEST['payment-mode'] ) ? sanitize_text_field( $_REQUEST['payment-mode'] ) : $chosen;
281
+    $chosen   = isset( $_REQUEST['payment-mode'] ) ? sanitize_text_field( $_REQUEST['payment-mode'] ) : $chosen;
282 282
 
283
-	if ( false !== $chosen ) {
284
-		$chosen = preg_replace( '/[^a-zA-Z0-9-_]+/', '', $chosen );
285
-	}
283
+    if ( false !== $chosen ) {
284
+        $chosen = preg_replace( '/[^a-zA-Z0-9-_]+/', '', $chosen );
285
+    }
286 286
 
287
-	if ( ! empty( $chosen ) ) {
288
-		$enabled_gateway = urldecode( $chosen );
289
-	} elseif ( ! empty( $invoice ) && (float)$invoice->get_subtotal() <= 0 ) {
290
-		$enabled_gateway = 'manual';
291
-	} else {
292
-		$enabled_gateway = wpinv_get_default_gateway();
293
-	}
287
+    if ( ! empty( $chosen ) ) {
288
+        $enabled_gateway = urldecode( $chosen );
289
+    } elseif ( ! empty( $invoice ) && (float)$invoice->get_subtotal() <= 0 ) {
290
+        $enabled_gateway = 'manual';
291
+    } else {
292
+        $enabled_gateway = wpinv_get_default_gateway();
293
+    }
294 294
 
295 295
     if ( ! wpinv_is_gateway_active( $enabled_gateway ) && ! empty( $gateways ) ) {
296 296
         if ( wpinv_is_gateway_active( wpinv_get_default_gateway() ) ) {
@@ -300,7 +300,7 @@  discard block
 block discarded – undo
300 300
         }
301 301
 }
302 302
 
303
-	return apply_filters( 'wpinv_chosen_gateway', $enabled_gateway );
303
+    return apply_filters( 'wpinv_chosen_gateway', $enabled_gateway );
304 304
 }
305 305
 
306 306
 function wpinv_record_gateway_error( $title = '', $message = '' ) {
@@ -308,22 +308,22 @@  discard block
 block discarded – undo
308 308
 }
309 309
 
310 310
 function wpinv_count_sales_by_gateway( $gateway_id = 'paypal', $status = 'publish' ) {
311
-	$ret  = 0;
312
-	$args = array(
313
-		'meta_key'    => '_wpinv_gateway',
314
-		'meta_value'  => $gateway_id,
315
-		'nopaging'    => true,
316
-		'post_type'   => 'wpi_invoice',
317
-		'post_status' => $status,
318
-		'fields'      => 'ids',
319
-	);
320
-
321
-	$payments = new WP_Query( $args );
322
-
323
-	if ( $payments ) {
324
-		$ret = $payments->post_count;
311
+    $ret  = 0;
312
+    $args = array(
313
+        'meta_key'    => '_wpinv_gateway',
314
+        'meta_value'  => $gateway_id,
315
+        'nopaging'    => true,
316
+        'post_type'   => 'wpi_invoice',
317
+        'post_status' => $status,
318
+        'fields'      => 'ids',
319
+    );
320
+
321
+    $payments = new WP_Query( $args );
322
+
323
+    if ( $payments ) {
324
+        $ret = $payments->post_count;
325 325
     }
326
-	return $ret;
326
+    return $ret;
327 327
 }
328 328
 
329 329
 /**
Please login to merge, or discard this patch.
includes/data/countries.php 1 patch
Indentation   +252 added lines, -252 removed lines patch added patch discarded remove patch
@@ -12,256 +12,256 @@
 block discarded – undo
12 12
 defined( 'ABSPATH' ) || exit;
13 13
 
14 14
 return array(
15
-	'US' => __( 'United States', 'invoicing' ),
16
-	'CA' => __( 'Canada', 'invoicing' ),
17
-	'GB' => __( 'United Kingdom', 'invoicing' ),
18
-	'AF' => __( 'Afghanistan', 'invoicing' ),
19
-	'AX' => __( 'Aland Islands', 'invoicing' ),
20
-	'AL' => __( 'Albania', 'invoicing' ),
21
-	'DZ' => __( 'Algeria', 'invoicing' ),
22
-	'AS' => __( 'American Samoa', 'invoicing' ),
23
-	'AD' => __( 'Andorra', 'invoicing' ),
24
-	'AO' => __( 'Angola', 'invoicing' ),
25
-	'AI' => __( 'Anguilla', 'invoicing' ),
26
-	'AQ' => __( 'Antarctica', 'invoicing' ),
27
-	'AG' => __( 'Antigua and Barbuda', 'invoicing' ),
28
-	'AR' => __( 'Argentina', 'invoicing' ),
29
-	'AM' => __( 'Armenia', 'invoicing' ),
30
-	'AW' => __( 'Aruba', 'invoicing' ),
31
-	'AU' => __( 'Australia', 'invoicing' ),
32
-	'AT' => __( 'Austria', 'invoicing' ),
33
-	'AZ' => __( 'Azerbaijan', 'invoicing' ),
34
-	'BS' => __( 'Bahamas', 'invoicing' ),
35
-	'BH' => __( 'Bahrain', 'invoicing' ),
36
-	'BD' => __( 'Bangladesh', 'invoicing' ),
37
-	'BB' => __( 'Barbados', 'invoicing' ),
38
-	'BY' => __( 'Belarus', 'invoicing' ),
39
-	'BE' => __( 'Belgium', 'invoicing' ),
40
-	'BZ' => __( 'Belize', 'invoicing' ),
41
-	'BJ' => __( 'Benin', 'invoicing' ),
42
-	'BM' => __( 'Bermuda', 'invoicing' ),
43
-	'BT' => __( 'Bhutan', 'invoicing' ),
44
-	'BO' => __( 'Bolivia', 'invoicing' ),
45
-	'BQ' => __( 'Bonaire, Saint Eustatius and Saba', 'invoicing' ),
46
-	'BA' => __( 'Bosnia and Herzegovina', 'invoicing' ),
47
-	'BW' => __( 'Botswana', 'invoicing' ),
48
-	'BV' => __( 'Bouvet Island', 'invoicing' ),
49
-	'BR' => __( 'Brazil', 'invoicing' ),
50
-	'IO' => __( 'British Indian Ocean Territory', 'invoicing' ),
51
-	'BN' => __( 'Brunei Darrussalam', 'invoicing' ),
52
-	'BG' => __( 'Bulgaria', 'invoicing' ),
53
-	'BF' => __( 'Burkina Faso', 'invoicing' ),
54
-	'BI' => __( 'Burundi', 'invoicing' ),
55
-	'KH' => __( 'Cambodia', 'invoicing' ),
56
-	'CM' => __( 'Cameroon', 'invoicing' ),
57
-	'CV' => __( 'Cape Verde', 'invoicing' ),
58
-	'KY' => __( 'Cayman Islands', 'invoicing' ),
59
-	'CF' => __( 'Central African Republic', 'invoicing' ),
60
-	'TD' => __( 'Chad', 'invoicing' ),
61
-	'CL' => __( 'Chile', 'invoicing' ),
62
-	'CN' => __( 'China', 'invoicing' ),
63
-	'CX' => __( 'Christmas Island', 'invoicing' ),
64
-	'CC' => __( 'Cocos Islands', 'invoicing' ),
65
-	'CO' => __( 'Colombia', 'invoicing' ),
66
-	'KM' => __( 'Comoros', 'invoicing' ),
67
-	'CD' => __( 'Congo, Democratic People\'s Republic', 'invoicing' ),
68
-	'CG' => __( 'Congo, Republic of', 'invoicing' ),
69
-	'CK' => __( 'Cook Islands', 'invoicing' ),
70
-	'CR' => __( 'Costa Rica', 'invoicing' ),
71
-	'CI' => __( 'Cote d\'Ivoire', 'invoicing' ),
72
-	'HR' => __( 'Croatia/Hrvatska', 'invoicing' ),
73
-	'CU' => __( 'Cuba', 'invoicing' ),
74
-	'CW' => __( 'Cura&Ccedil;ao', 'invoicing' ),
75
-	'CY' => __( 'Cyprus', 'invoicing' ),
76
-	'CZ' => __( 'Czech Republic', 'invoicing' ),
77
-	'DK' => __( 'Denmark', 'invoicing' ),
78
-	'DJ' => __( 'Djibouti', 'invoicing' ),
79
-	'DM' => __( 'Dominica', 'invoicing' ),
80
-	'DO' => __( 'Dominican Republic', 'invoicing' ),
81
-	'TP' => __( 'East Timor', 'invoicing' ),
82
-	'EC' => __( 'Ecuador', 'invoicing' ),
83
-	'EG' => __( 'Egypt', 'invoicing' ),
84
-	'GQ' => __( 'Equatorial Guinea', 'invoicing' ),
85
-	'SV' => __( 'El Salvador', 'invoicing' ),
86
-	'ER' => __( 'Eritrea', 'invoicing' ),
87
-	'EE' => __( 'Estonia', 'invoicing' ),
88
-	'ET' => __( 'Ethiopia', 'invoicing' ),
89
-	'FK' => __( 'Falkland Islands', 'invoicing' ),
90
-	'FO' => __( 'Faroe Islands', 'invoicing' ),
91
-	'FJ' => __( 'Fiji', 'invoicing' ),
92
-	'FI' => __( 'Finland', 'invoicing' ),
93
-	'FR' => __( 'France', 'invoicing' ),
94
-	'GF' => __( 'French Guiana', 'invoicing' ),
95
-	'PF' => __( 'French Polynesia', 'invoicing' ),
96
-	'TF' => __( 'French Southern Territories', 'invoicing' ),
97
-	'GA' => __( 'Gabon', 'invoicing' ),
98
-	'GM' => __( 'Gambia', 'invoicing' ),
99
-	'GE' => __( 'Georgia', 'invoicing' ),
100
-	'DE' => __( 'Germany', 'invoicing' ),
101
-	'GR' => __( 'Greece', 'invoicing' ),
102
-	'GH' => __( 'Ghana', 'invoicing' ),
103
-	'GI' => __( 'Gibraltar', 'invoicing' ),
104
-	'GL' => __( 'Greenland', 'invoicing' ),
105
-	'GD' => __( 'Grenada', 'invoicing' ),
106
-	'GP' => __( 'Guadeloupe', 'invoicing' ),
107
-	'GU' => __( 'Guam', 'invoicing' ),
108
-	'GT' => __( 'Guatemala', 'invoicing' ),
109
-	'GG' => __( 'Guernsey', 'invoicing' ),
110
-	'GN' => __( 'Guinea', 'invoicing' ),
111
-	'GW' => __( 'Guinea-Bissau', 'invoicing' ),
112
-	'GY' => __( 'Guyana', 'invoicing' ),
113
-	'HT' => __( 'Haiti', 'invoicing' ),
114
-	'HM' => __( 'Heard and McDonald Islands', 'invoicing' ),
115
-	'VA' => __( 'Holy See (City Vatican State)', 'invoicing' ),
116
-	'HN' => __( 'Honduras', 'invoicing' ),
117
-	'HK' => __( 'Hong Kong', 'invoicing' ),
118
-	'HU' => __( 'Hungary', 'invoicing' ),
119
-	'IS' => __( 'Iceland', 'invoicing' ),
120
-	'IN' => __( 'India', 'invoicing' ),
121
-	'ID' => __( 'Indonesia', 'invoicing' ),
122
-	'IR' => __( 'Iran', 'invoicing' ),
123
-	'IQ' => __( 'Iraq', 'invoicing' ),
124
-	'IE' => __( 'Ireland', 'invoicing' ),
125
-	'IM' => __( 'Isle of Man', 'invoicing' ),
126
-	'IL' => __( 'Israel', 'invoicing' ),
127
-	'IT' => __( 'Italy', 'invoicing' ),
128
-	'JM' => __( 'Jamaica', 'invoicing' ),
129
-	'JP' => __( 'Japan', 'invoicing' ),
130
-	'JE' => __( 'Jersey', 'invoicing' ),
131
-	'JO' => __( 'Jordan', 'invoicing' ),
132
-	'KZ' => __( 'Kazakhstan', 'invoicing' ),
133
-	'KE' => __( 'Kenya', 'invoicing' ),
134
-	'KI' => __( 'Kiribati', 'invoicing' ),
135
-	'KW' => __( 'Kuwait', 'invoicing' ),
136
-	'KG' => __( 'Kyrgyzstan', 'invoicing' ),
137
-	'LA' => __( 'Lao People\'s Democratic Republic', 'invoicing' ),
138
-	'LV' => __( 'Latvia', 'invoicing' ),
139
-	'LB' => __( 'Lebanon', 'invoicing' ),
140
-	'LS' => __( 'Lesotho', 'invoicing' ),
141
-	'LR' => __( 'Liberia', 'invoicing' ),
142
-	'LY' => __( 'Libyan Arab Jamahiriya', 'invoicing' ),
143
-	'LI' => __( 'Liechtenstein', 'invoicing' ),
144
-	'LT' => __( 'Lithuania', 'invoicing' ),
145
-	'LU' => __( 'Luxembourg', 'invoicing' ),
146
-	'MO' => __( 'Macau', 'invoicing' ),
147
-	'MK' => __( 'Macedonia', 'invoicing' ),
148
-	'MG' => __( 'Madagascar', 'invoicing' ),
149
-	'MW' => __( 'Malawi', 'invoicing' ),
150
-	'MY' => __( 'Malaysia', 'invoicing' ),
151
-	'MV' => __( 'Maldives', 'invoicing' ),
152
-	'ML' => __( 'Mali', 'invoicing' ),
153
-	'MT' => __( 'Malta', 'invoicing' ),
154
-	'MH' => __( 'Marshall Islands', 'invoicing' ),
155
-	'MQ' => __( 'Martinique', 'invoicing' ),
156
-	'MR' => __( 'Mauritania', 'invoicing' ),
157
-	'MU' => __( 'Mauritius', 'invoicing' ),
158
-	'YT' => __( 'Mayotte', 'invoicing' ),
159
-	'MX' => __( 'Mexico', 'invoicing' ),
160
-	'FM' => __( 'Micronesia', 'invoicing' ),
161
-	'MD' => __( 'Moldova, Republic of', 'invoicing' ),
162
-	'MC' => __( 'Monaco', 'invoicing' ),
163
-	'MN' => __( 'Mongolia', 'invoicing' ),
164
-	'ME' => __( 'Montenegro', 'invoicing' ),
165
-	'MS' => __( 'Montserrat', 'invoicing' ),
166
-	'MA' => __( 'Morocco', 'invoicing' ),
167
-	'MZ' => __( 'Mozambique', 'invoicing' ),
168
-	'MM' => __( 'Myanmar', 'invoicing' ),
169
-	'NA' => __( 'Namibia', 'invoicing' ),
170
-	'NR' => __( 'Nauru', 'invoicing' ),
171
-	'NP' => __( 'Nepal', 'invoicing' ),
172
-	'NL' => __( 'Netherlands', 'invoicing' ),
173
-	'AN' => __( 'Netherlands Antilles', 'invoicing' ),
174
-	'NC' => __( 'New Caledonia', 'invoicing' ),
175
-	'NZ' => __( 'New Zealand', 'invoicing' ),
176
-	'NI' => __( 'Nicaragua', 'invoicing' ),
177
-	'NE' => __( 'Niger', 'invoicing' ),
178
-	'NG' => __( 'Nigeria', 'invoicing' ),
179
-	'NU' => __( 'Niue', 'invoicing' ),
180
-	'NF' => __( 'Norfolk Island', 'invoicing' ),
181
-	'KP' => __( 'North Korea', 'invoicing' ),
182
-	'MP' => __( 'Northern Mariana Islands', 'invoicing' ),
183
-	'NO' => __( 'Norway', 'invoicing' ),
184
-	'OM' => __( 'Oman', 'invoicing' ),
185
-	'PK' => __( 'Pakistan', 'invoicing' ),
186
-	'PW' => __( 'Palau', 'invoicing' ),
187
-	'PS' => __( 'Palestinian Territories', 'invoicing' ),
188
-	'PA' => __( 'Panama', 'invoicing' ),
189
-	'PG' => __( 'Papua New Guinea', 'invoicing' ),
190
-	'PY' => __( 'Paraguay', 'invoicing' ),
191
-	'PE' => __( 'Peru', 'invoicing' ),
192
-	'PH' => __( 'Philippines', 'invoicing' ),
193
-	'PN' => __( 'Pitcairn Island', 'invoicing' ),
194
-	'PL' => __( 'Poland', 'invoicing' ),
195
-	'PT' => __( 'Portugal', 'invoicing' ),
196
-	'PR' => __( 'Puerto Rico', 'invoicing' ),
197
-	'QA' => __( 'Qatar', 'invoicing' ),
198
-	'XK' => __( 'Republic of Kosovo', 'invoicing' ),
199
-	'RE' => __( 'Reunion Island', 'invoicing' ),
200
-	'RO' => __( 'Romania', 'invoicing' ),
201
-	'RU' => __( 'Russian Federation', 'invoicing' ),
202
-	'RW' => __( 'Rwanda', 'invoicing' ),
203
-	'BL' => __( 'Saint Barth&eacute;lemy', 'invoicing' ),
204
-	'SH' => __( 'Saint Helena', 'invoicing' ),
205
-	'KN' => __( 'Saint Kitts and Nevis', 'invoicing' ),
206
-	'LC' => __( 'Saint Lucia', 'invoicing' ),
207
-	'MF' => __( 'Saint Martin (French)', 'invoicing' ),
208
-	'SX' => __( 'Saint Martin (Dutch)', 'invoicing' ),
209
-	'PM' => __( 'Saint Pierre and Miquelon', 'invoicing' ),
210
-	'VC' => __( 'Saint Vincent and the Grenadines', 'invoicing' ),
211
-	'SM' => __( 'San Marino', 'invoicing' ),
212
-	'ST' => __( 'S&atilde;o Tom&eacute; and Pr&iacute;ncipe', 'invoicing' ),
213
-	'SA' => __( 'Saudi Arabia', 'invoicing' ),
214
-	'SN' => __( 'Senegal', 'invoicing' ),
215
-	'RS' => __( 'Serbia', 'invoicing' ),
216
-	'SC' => __( 'Seychelles', 'invoicing' ),
217
-	'SL' => __( 'Sierra Leone', 'invoicing' ),
218
-	'SG' => __( 'Singapore', 'invoicing' ),
219
-	'SK' => __( 'Slovak Republic', 'invoicing' ),
220
-	'SI' => __( 'Slovenia', 'invoicing' ),
221
-	'SB' => __( 'Solomon Islands', 'invoicing' ),
222
-	'SO' => __( 'Somalia', 'invoicing' ),
223
-	'ZA' => __( 'South Africa', 'invoicing' ),
224
-	'GS' => __( 'South Georgia', 'invoicing' ),
225
-	'KR' => __( 'South Korea', 'invoicing' ),
226
-	'SS' => __( 'South Sudan', 'invoicing' ),
227
-	'ES' => __( 'Spain', 'invoicing' ),
228
-	'LK' => __( 'Sri Lanka', 'invoicing' ),
229
-	'SD' => __( 'Sudan', 'invoicing' ),
230
-	'SR' => __( 'Suriname', 'invoicing' ),
231
-	'SJ' => __( 'Svalbard and Jan Mayen Islands', 'invoicing' ),
232
-	'SZ' => __( 'Swaziland', 'invoicing' ),
233
-	'SE' => __( 'Sweden', 'invoicing' ),
234
-	'CH' => __( 'Switzerland', 'invoicing' ),
235
-	'SY' => __( 'Syrian Arab Republic', 'invoicing' ),
236
-	'TW' => __( 'Taiwan', 'invoicing' ),
237
-	'TJ' => __( 'Tajikistan', 'invoicing' ),
238
-	'TZ' => __( 'Tanzania', 'invoicing' ),
239
-	'TH' => __( 'Thailand', 'invoicing' ),
240
-	'TL' => __( 'Timor-Leste', 'invoicing' ),
241
-	'TG' => __( 'Togo', 'invoicing' ),
242
-	'TK' => __( 'Tokelau', 'invoicing' ),
243
-	'TO' => __( 'Tonga', 'invoicing' ),
244
-	'TT' => __( 'Trinidad and Tobago', 'invoicing' ),
245
-	'TN' => __( 'Tunisia', 'invoicing' ),
246
-	'TR' => __( 'Turkey', 'invoicing' ),
247
-	'TM' => __( 'Turkmenistan', 'invoicing' ),
248
-	'TC' => __( 'Turks and Caicos Islands', 'invoicing' ),
249
-	'TV' => __( 'Tuvalu', 'invoicing' ),
250
-	'UG' => __( 'Uganda', 'invoicing' ),
251
-	'UA' => __( 'Ukraine', 'invoicing' ),
252
-	'AE' => __( 'United Arab Emirates', 'invoicing' ),
253
-	'UY' => __( 'Uruguay', 'invoicing' ),
254
-	'UM' => __( 'US Minor Outlying Islands', 'invoicing' ),
255
-	'UZ' => __( 'Uzbekistan', 'invoicing' ),
256
-	'VU' => __( 'Vanuatu', 'invoicing' ),
257
-	'VE' => __( 'Venezuela', 'invoicing' ),
258
-	'VN' => __( 'Vietnam', 'invoicing' ),
259
-	'VG' => __( 'Virgin Islands (British)', 'invoicing' ),
260
-	'VI' => __( 'Virgin Islands (USA)', 'invoicing' ),
261
-	'WF' => __( 'Wallis and Futuna Islands', 'invoicing' ),
262
-	'EH' => __( 'Western Sahara', 'invoicing' ),
263
-	'WS' => __( 'Western Samoa', 'invoicing' ),
264
-	'YE' => __( 'Yemen', 'invoicing' ),
265
-	'ZM' => __( 'Zambia', 'invoicing' ),
266
-	'ZW' => __( 'Zimbabwe', 'invoicing' ),
15
+    'US' => __( 'United States', 'invoicing' ),
16
+    'CA' => __( 'Canada', 'invoicing' ),
17
+    'GB' => __( 'United Kingdom', 'invoicing' ),
18
+    'AF' => __( 'Afghanistan', 'invoicing' ),
19
+    'AX' => __( 'Aland Islands', 'invoicing' ),
20
+    'AL' => __( 'Albania', 'invoicing' ),
21
+    'DZ' => __( 'Algeria', 'invoicing' ),
22
+    'AS' => __( 'American Samoa', 'invoicing' ),
23
+    'AD' => __( 'Andorra', 'invoicing' ),
24
+    'AO' => __( 'Angola', 'invoicing' ),
25
+    'AI' => __( 'Anguilla', 'invoicing' ),
26
+    'AQ' => __( 'Antarctica', 'invoicing' ),
27
+    'AG' => __( 'Antigua and Barbuda', 'invoicing' ),
28
+    'AR' => __( 'Argentina', 'invoicing' ),
29
+    'AM' => __( 'Armenia', 'invoicing' ),
30
+    'AW' => __( 'Aruba', 'invoicing' ),
31
+    'AU' => __( 'Australia', 'invoicing' ),
32
+    'AT' => __( 'Austria', 'invoicing' ),
33
+    'AZ' => __( 'Azerbaijan', 'invoicing' ),
34
+    'BS' => __( 'Bahamas', 'invoicing' ),
35
+    'BH' => __( 'Bahrain', 'invoicing' ),
36
+    'BD' => __( 'Bangladesh', 'invoicing' ),
37
+    'BB' => __( 'Barbados', 'invoicing' ),
38
+    'BY' => __( 'Belarus', 'invoicing' ),
39
+    'BE' => __( 'Belgium', 'invoicing' ),
40
+    'BZ' => __( 'Belize', 'invoicing' ),
41
+    'BJ' => __( 'Benin', 'invoicing' ),
42
+    'BM' => __( 'Bermuda', 'invoicing' ),
43
+    'BT' => __( 'Bhutan', 'invoicing' ),
44
+    'BO' => __( 'Bolivia', 'invoicing' ),
45
+    'BQ' => __( 'Bonaire, Saint Eustatius and Saba', 'invoicing' ),
46
+    'BA' => __( 'Bosnia and Herzegovina', 'invoicing' ),
47
+    'BW' => __( 'Botswana', 'invoicing' ),
48
+    'BV' => __( 'Bouvet Island', 'invoicing' ),
49
+    'BR' => __( 'Brazil', 'invoicing' ),
50
+    'IO' => __( 'British Indian Ocean Territory', 'invoicing' ),
51
+    'BN' => __( 'Brunei Darrussalam', 'invoicing' ),
52
+    'BG' => __( 'Bulgaria', 'invoicing' ),
53
+    'BF' => __( 'Burkina Faso', 'invoicing' ),
54
+    'BI' => __( 'Burundi', 'invoicing' ),
55
+    'KH' => __( 'Cambodia', 'invoicing' ),
56
+    'CM' => __( 'Cameroon', 'invoicing' ),
57
+    'CV' => __( 'Cape Verde', 'invoicing' ),
58
+    'KY' => __( 'Cayman Islands', 'invoicing' ),
59
+    'CF' => __( 'Central African Republic', 'invoicing' ),
60
+    'TD' => __( 'Chad', 'invoicing' ),
61
+    'CL' => __( 'Chile', 'invoicing' ),
62
+    'CN' => __( 'China', 'invoicing' ),
63
+    'CX' => __( 'Christmas Island', 'invoicing' ),
64
+    'CC' => __( 'Cocos Islands', 'invoicing' ),
65
+    'CO' => __( 'Colombia', 'invoicing' ),
66
+    'KM' => __( 'Comoros', 'invoicing' ),
67
+    'CD' => __( 'Congo, Democratic People\'s Republic', 'invoicing' ),
68
+    'CG' => __( 'Congo, Republic of', 'invoicing' ),
69
+    'CK' => __( 'Cook Islands', 'invoicing' ),
70
+    'CR' => __( 'Costa Rica', 'invoicing' ),
71
+    'CI' => __( 'Cote d\'Ivoire', 'invoicing' ),
72
+    'HR' => __( 'Croatia/Hrvatska', 'invoicing' ),
73
+    'CU' => __( 'Cuba', 'invoicing' ),
74
+    'CW' => __( 'Cura&Ccedil;ao', 'invoicing' ),
75
+    'CY' => __( 'Cyprus', 'invoicing' ),
76
+    'CZ' => __( 'Czech Republic', 'invoicing' ),
77
+    'DK' => __( 'Denmark', 'invoicing' ),
78
+    'DJ' => __( 'Djibouti', 'invoicing' ),
79
+    'DM' => __( 'Dominica', 'invoicing' ),
80
+    'DO' => __( 'Dominican Republic', 'invoicing' ),
81
+    'TP' => __( 'East Timor', 'invoicing' ),
82
+    'EC' => __( 'Ecuador', 'invoicing' ),
83
+    'EG' => __( 'Egypt', 'invoicing' ),
84
+    'GQ' => __( 'Equatorial Guinea', 'invoicing' ),
85
+    'SV' => __( 'El Salvador', 'invoicing' ),
86
+    'ER' => __( 'Eritrea', 'invoicing' ),
87
+    'EE' => __( 'Estonia', 'invoicing' ),
88
+    'ET' => __( 'Ethiopia', 'invoicing' ),
89
+    'FK' => __( 'Falkland Islands', 'invoicing' ),
90
+    'FO' => __( 'Faroe Islands', 'invoicing' ),
91
+    'FJ' => __( 'Fiji', 'invoicing' ),
92
+    'FI' => __( 'Finland', 'invoicing' ),
93
+    'FR' => __( 'France', 'invoicing' ),
94
+    'GF' => __( 'French Guiana', 'invoicing' ),
95
+    'PF' => __( 'French Polynesia', 'invoicing' ),
96
+    'TF' => __( 'French Southern Territories', 'invoicing' ),
97
+    'GA' => __( 'Gabon', 'invoicing' ),
98
+    'GM' => __( 'Gambia', 'invoicing' ),
99
+    'GE' => __( 'Georgia', 'invoicing' ),
100
+    'DE' => __( 'Germany', 'invoicing' ),
101
+    'GR' => __( 'Greece', 'invoicing' ),
102
+    'GH' => __( 'Ghana', 'invoicing' ),
103
+    'GI' => __( 'Gibraltar', 'invoicing' ),
104
+    'GL' => __( 'Greenland', 'invoicing' ),
105
+    'GD' => __( 'Grenada', 'invoicing' ),
106
+    'GP' => __( 'Guadeloupe', 'invoicing' ),
107
+    'GU' => __( 'Guam', 'invoicing' ),
108
+    'GT' => __( 'Guatemala', 'invoicing' ),
109
+    'GG' => __( 'Guernsey', 'invoicing' ),
110
+    'GN' => __( 'Guinea', 'invoicing' ),
111
+    'GW' => __( 'Guinea-Bissau', 'invoicing' ),
112
+    'GY' => __( 'Guyana', 'invoicing' ),
113
+    'HT' => __( 'Haiti', 'invoicing' ),
114
+    'HM' => __( 'Heard and McDonald Islands', 'invoicing' ),
115
+    'VA' => __( 'Holy See (City Vatican State)', 'invoicing' ),
116
+    'HN' => __( 'Honduras', 'invoicing' ),
117
+    'HK' => __( 'Hong Kong', 'invoicing' ),
118
+    'HU' => __( 'Hungary', 'invoicing' ),
119
+    'IS' => __( 'Iceland', 'invoicing' ),
120
+    'IN' => __( 'India', 'invoicing' ),
121
+    'ID' => __( 'Indonesia', 'invoicing' ),
122
+    'IR' => __( 'Iran', 'invoicing' ),
123
+    'IQ' => __( 'Iraq', 'invoicing' ),
124
+    'IE' => __( 'Ireland', 'invoicing' ),
125
+    'IM' => __( 'Isle of Man', 'invoicing' ),
126
+    'IL' => __( 'Israel', 'invoicing' ),
127
+    'IT' => __( 'Italy', 'invoicing' ),
128
+    'JM' => __( 'Jamaica', 'invoicing' ),
129
+    'JP' => __( 'Japan', 'invoicing' ),
130
+    'JE' => __( 'Jersey', 'invoicing' ),
131
+    'JO' => __( 'Jordan', 'invoicing' ),
132
+    'KZ' => __( 'Kazakhstan', 'invoicing' ),
133
+    'KE' => __( 'Kenya', 'invoicing' ),
134
+    'KI' => __( 'Kiribati', 'invoicing' ),
135
+    'KW' => __( 'Kuwait', 'invoicing' ),
136
+    'KG' => __( 'Kyrgyzstan', 'invoicing' ),
137
+    'LA' => __( 'Lao People\'s Democratic Republic', 'invoicing' ),
138
+    'LV' => __( 'Latvia', 'invoicing' ),
139
+    'LB' => __( 'Lebanon', 'invoicing' ),
140
+    'LS' => __( 'Lesotho', 'invoicing' ),
141
+    'LR' => __( 'Liberia', 'invoicing' ),
142
+    'LY' => __( 'Libyan Arab Jamahiriya', 'invoicing' ),
143
+    'LI' => __( 'Liechtenstein', 'invoicing' ),
144
+    'LT' => __( 'Lithuania', 'invoicing' ),
145
+    'LU' => __( 'Luxembourg', 'invoicing' ),
146
+    'MO' => __( 'Macau', 'invoicing' ),
147
+    'MK' => __( 'Macedonia', 'invoicing' ),
148
+    'MG' => __( 'Madagascar', 'invoicing' ),
149
+    'MW' => __( 'Malawi', 'invoicing' ),
150
+    'MY' => __( 'Malaysia', 'invoicing' ),
151
+    'MV' => __( 'Maldives', 'invoicing' ),
152
+    'ML' => __( 'Mali', 'invoicing' ),
153
+    'MT' => __( 'Malta', 'invoicing' ),
154
+    'MH' => __( 'Marshall Islands', 'invoicing' ),
155
+    'MQ' => __( 'Martinique', 'invoicing' ),
156
+    'MR' => __( 'Mauritania', 'invoicing' ),
157
+    'MU' => __( 'Mauritius', 'invoicing' ),
158
+    'YT' => __( 'Mayotte', 'invoicing' ),
159
+    'MX' => __( 'Mexico', 'invoicing' ),
160
+    'FM' => __( 'Micronesia', 'invoicing' ),
161
+    'MD' => __( 'Moldova, Republic of', 'invoicing' ),
162
+    'MC' => __( 'Monaco', 'invoicing' ),
163
+    'MN' => __( 'Mongolia', 'invoicing' ),
164
+    'ME' => __( 'Montenegro', 'invoicing' ),
165
+    'MS' => __( 'Montserrat', 'invoicing' ),
166
+    'MA' => __( 'Morocco', 'invoicing' ),
167
+    'MZ' => __( 'Mozambique', 'invoicing' ),
168
+    'MM' => __( 'Myanmar', 'invoicing' ),
169
+    'NA' => __( 'Namibia', 'invoicing' ),
170
+    'NR' => __( 'Nauru', 'invoicing' ),
171
+    'NP' => __( 'Nepal', 'invoicing' ),
172
+    'NL' => __( 'Netherlands', 'invoicing' ),
173
+    'AN' => __( 'Netherlands Antilles', 'invoicing' ),
174
+    'NC' => __( 'New Caledonia', 'invoicing' ),
175
+    'NZ' => __( 'New Zealand', 'invoicing' ),
176
+    'NI' => __( 'Nicaragua', 'invoicing' ),
177
+    'NE' => __( 'Niger', 'invoicing' ),
178
+    'NG' => __( 'Nigeria', 'invoicing' ),
179
+    'NU' => __( 'Niue', 'invoicing' ),
180
+    'NF' => __( 'Norfolk Island', 'invoicing' ),
181
+    'KP' => __( 'North Korea', 'invoicing' ),
182
+    'MP' => __( 'Northern Mariana Islands', 'invoicing' ),
183
+    'NO' => __( 'Norway', 'invoicing' ),
184
+    'OM' => __( 'Oman', 'invoicing' ),
185
+    'PK' => __( 'Pakistan', 'invoicing' ),
186
+    'PW' => __( 'Palau', 'invoicing' ),
187
+    'PS' => __( 'Palestinian Territories', 'invoicing' ),
188
+    'PA' => __( 'Panama', 'invoicing' ),
189
+    'PG' => __( 'Papua New Guinea', 'invoicing' ),
190
+    'PY' => __( 'Paraguay', 'invoicing' ),
191
+    'PE' => __( 'Peru', 'invoicing' ),
192
+    'PH' => __( 'Philippines', 'invoicing' ),
193
+    'PN' => __( 'Pitcairn Island', 'invoicing' ),
194
+    'PL' => __( 'Poland', 'invoicing' ),
195
+    'PT' => __( 'Portugal', 'invoicing' ),
196
+    'PR' => __( 'Puerto Rico', 'invoicing' ),
197
+    'QA' => __( 'Qatar', 'invoicing' ),
198
+    'XK' => __( 'Republic of Kosovo', 'invoicing' ),
199
+    'RE' => __( 'Reunion Island', 'invoicing' ),
200
+    'RO' => __( 'Romania', 'invoicing' ),
201
+    'RU' => __( 'Russian Federation', 'invoicing' ),
202
+    'RW' => __( 'Rwanda', 'invoicing' ),
203
+    'BL' => __( 'Saint Barth&eacute;lemy', 'invoicing' ),
204
+    'SH' => __( 'Saint Helena', 'invoicing' ),
205
+    'KN' => __( 'Saint Kitts and Nevis', 'invoicing' ),
206
+    'LC' => __( 'Saint Lucia', 'invoicing' ),
207
+    'MF' => __( 'Saint Martin (French)', 'invoicing' ),
208
+    'SX' => __( 'Saint Martin (Dutch)', 'invoicing' ),
209
+    'PM' => __( 'Saint Pierre and Miquelon', 'invoicing' ),
210
+    'VC' => __( 'Saint Vincent and the Grenadines', 'invoicing' ),
211
+    'SM' => __( 'San Marino', 'invoicing' ),
212
+    'ST' => __( 'S&atilde;o Tom&eacute; and Pr&iacute;ncipe', 'invoicing' ),
213
+    'SA' => __( 'Saudi Arabia', 'invoicing' ),
214
+    'SN' => __( 'Senegal', 'invoicing' ),
215
+    'RS' => __( 'Serbia', 'invoicing' ),
216
+    'SC' => __( 'Seychelles', 'invoicing' ),
217
+    'SL' => __( 'Sierra Leone', 'invoicing' ),
218
+    'SG' => __( 'Singapore', 'invoicing' ),
219
+    'SK' => __( 'Slovak Republic', 'invoicing' ),
220
+    'SI' => __( 'Slovenia', 'invoicing' ),
221
+    'SB' => __( 'Solomon Islands', 'invoicing' ),
222
+    'SO' => __( 'Somalia', 'invoicing' ),
223
+    'ZA' => __( 'South Africa', 'invoicing' ),
224
+    'GS' => __( 'South Georgia', 'invoicing' ),
225
+    'KR' => __( 'South Korea', 'invoicing' ),
226
+    'SS' => __( 'South Sudan', 'invoicing' ),
227
+    'ES' => __( 'Spain', 'invoicing' ),
228
+    'LK' => __( 'Sri Lanka', 'invoicing' ),
229
+    'SD' => __( 'Sudan', 'invoicing' ),
230
+    'SR' => __( 'Suriname', 'invoicing' ),
231
+    'SJ' => __( 'Svalbard and Jan Mayen Islands', 'invoicing' ),
232
+    'SZ' => __( 'Swaziland', 'invoicing' ),
233
+    'SE' => __( 'Sweden', 'invoicing' ),
234
+    'CH' => __( 'Switzerland', 'invoicing' ),
235
+    'SY' => __( 'Syrian Arab Republic', 'invoicing' ),
236
+    'TW' => __( 'Taiwan', 'invoicing' ),
237
+    'TJ' => __( 'Tajikistan', 'invoicing' ),
238
+    'TZ' => __( 'Tanzania', 'invoicing' ),
239
+    'TH' => __( 'Thailand', 'invoicing' ),
240
+    'TL' => __( 'Timor-Leste', 'invoicing' ),
241
+    'TG' => __( 'Togo', 'invoicing' ),
242
+    'TK' => __( 'Tokelau', 'invoicing' ),
243
+    'TO' => __( 'Tonga', 'invoicing' ),
244
+    'TT' => __( 'Trinidad and Tobago', 'invoicing' ),
245
+    'TN' => __( 'Tunisia', 'invoicing' ),
246
+    'TR' => __( 'Turkey', 'invoicing' ),
247
+    'TM' => __( 'Turkmenistan', 'invoicing' ),
248
+    'TC' => __( 'Turks and Caicos Islands', 'invoicing' ),
249
+    'TV' => __( 'Tuvalu', 'invoicing' ),
250
+    'UG' => __( 'Uganda', 'invoicing' ),
251
+    'UA' => __( 'Ukraine', 'invoicing' ),
252
+    'AE' => __( 'United Arab Emirates', 'invoicing' ),
253
+    'UY' => __( 'Uruguay', 'invoicing' ),
254
+    'UM' => __( 'US Minor Outlying Islands', 'invoicing' ),
255
+    'UZ' => __( 'Uzbekistan', 'invoicing' ),
256
+    'VU' => __( 'Vanuatu', 'invoicing' ),
257
+    'VE' => __( 'Venezuela', 'invoicing' ),
258
+    'VN' => __( 'Vietnam', 'invoicing' ),
259
+    'VG' => __( 'Virgin Islands (British)', 'invoicing' ),
260
+    'VI' => __( 'Virgin Islands (USA)', 'invoicing' ),
261
+    'WF' => __( 'Wallis and Futuna Islands', 'invoicing' ),
262
+    'EH' => __( 'Western Sahara', 'invoicing' ),
263
+    'WS' => __( 'Western Samoa', 'invoicing' ),
264
+    'YE' => __( 'Yemen', 'invoicing' ),
265
+    'ZM' => __( 'Zambia', 'invoicing' ),
266
+    'ZW' => __( 'Zimbabwe', 'invoicing' ),
267 267
 );
Please login to merge, or discard this patch.
includes/data/admin-settings.php 1 patch
Indentation   +2 added lines, -2 removed lines patch added patch discarded remove patch
@@ -38,8 +38,8 @@
 block discarded – undo
38 38
     $nonce = wp_create_nonce( 'reset_invoice_count' );
39 39
     $reset_number = '<a href="' . add_query_arg(
40 40
         array(
41
-			'reset_invoice_count' => 1,
42
-			'_nonce'              => $nonce,
41
+            'reset_invoice_count' => 1,
42
+            '_nonce'              => $nonce,
43 43
         )
44 44
     ) . '" class="btn button">' . __( 'Force Reset Sequence', 'invoicing' ) . '</a>';
45 45
 }
Please login to merge, or discard this patch.
includes/data/discount-schema.php 1 patch
Indentation   +172 added lines, -172 removed lines patch added patch discarded remove patch
@@ -13,177 +13,177 @@
 block discarded – undo
13 13
 
14 14
 return array(
15 15
 
16
-	'id'                => array(
17
-		'description' => __( 'Unique identifier for the discount.', 'invoicing' ),
18
-		'type'        => 'integer',
19
-		'context'     => array( 'view', 'edit', 'embed' ),
20
-		'readonly'    => true,
21
-	),
22
-
23
-	'status'            => array(
24
-		'description' => __( 'A named status for the discount.', 'invoicing' ),
25
-		'type'        => 'string',
26
-		'enum'        => array( 'publish', 'pending', 'draft', 'expired' ),
27
-		'default'     => 'draft',
28
-		'context'     => array( 'view', 'edit', 'embed' ),
29
-	),
30
-
31
-	'version'           => array(
32
-		'description' => __( 'Plugin version when the discount was created.', 'invoicing' ),
33
-		'type'        => 'string',
34
-		'context'     => array( 'view', 'edit', 'embed' ),
35
-		'readonly'    => true,
36
-	),
37
-
38
-	'date_created'      => array(
39
-		'description' => __( "The date the discount was created, in the site's timezone.", 'invoicing' ),
40
-		'type'        => 'string',
41
-		'context'     => array( 'view', 'edit', 'embed' ),
42
-	),
43
-
44
-	'date_created_gmt'  => array(
45
-		'description' => __( 'The GMT date the discount was created.', 'invoicing' ),
46
-		'type'        => 'string',
47
-		'context'     => array( 'view', 'edit', 'embed' ),
48
-		'readonly'    => true,
49
-	),
50
-
51
-	'date_modified'     => array(
52
-		'description' => __( "The date the discount was last modified, in the site's timezone.", 'invoicing' ),
53
-		'type'        => 'string',
54
-		'context'     => array( 'view', 'edit', 'embed' ),
55
-		'readonly'    => true,
56
-	),
57
-
58
-	'date_modified_gmt' => array(
59
-		'description' => __( 'The GMT date the discount was last modified.', 'invoicing' ),
60
-		'type'        => 'string',
61
-		'context'     => array( 'view', 'edit', 'embed' ),
62
-		'readonly'    => true,
63
-	),
64
-
65
-	'name'              => array(
66
-		'description' => __( 'The discount name.', 'invoicing' ),
67
-		'type'        => 'string',
68
-		'context'     => array( 'view', 'edit', 'embed' ),
69
-	),
70
-
71
-	'description'       => array(
72
-		'description' => __( 'A description of what the discount is all about.', 'invoicing' ),
73
-		'type'        => 'string',
74
-		'context'     => array( 'view', 'edit', 'embed' ),
75
-	),
76
-
77
-	'code'              => array(
78
-		'description' => __( 'The discount code.', 'invoicing' ),
79
-		'type'        => 'string',
80
-		'context'     => array( 'view', 'edit', 'embed' ),
81
-		'required'    => true,
82
-	),
83
-
84
-	'type'              => array(
85
-		'description' => __( 'The type of discount.', 'invoicing' ),
86
-		'type'        => 'string',
87
-		'enum'        => array_keys( wpinv_get_discount_types() ),
88
-		'context'     => array( 'view', 'edit', 'embed' ),
89
-		'default'     => 'percent',
90
-	),
91
-
92
-	'amount'            => array(
93
-		'description' => __( 'The discount value.', 'invoicing' ),
94
-		'type'        => 'number',
95
-		'context'     => array( 'view', 'edit', 'embed' ),
96
-		'required'    => true,
97
-	),
98
-
99
-	'formatted_amount'  => array(
100
-		'description' => __( 'The formatted discount value.', 'invoicing' ),
101
-		'type'        => 'string',
102
-		'context'     => array( 'view', 'edit', 'embed' ),
103
-		'readonly'    => true,
104
-	),
105
-
106
-	'uses'              => array(
107
-		'description' => __( 'The number of times the discount has been used.', 'invoicing' ),
108
-		'type'        => 'integer',
109
-		'context'     => array( 'view', 'embed' ),
110
-		'readonly'    => true,
111
-	),
112
-
113
-	'max_uses'          => array(
114
-		'description' => __( 'The maximum number of times the discount can be used.', 'invoicing' ),
115
-		'type'        => 'integer',
116
-		'context'     => array( 'view', 'edit' ),
117
-	),
118
-
119
-	'usage'             => array(
120
-		'description' => __( "The discount's usage, i.e uses / max uses.", 'invoicing' ),
121
-		'type'        => 'string',
122
-		'context'     => array( 'view', 'embed' ),
123
-		'readonly'    => true,
124
-	),
125
-
126
-	'is_single_use'     => array(
127
-		'description' => __( 'Whether or not the discount can only be used once per user.', 'invoicing' ),
128
-		'type'        => 'boolean',
129
-		'context'     => array( 'view', 'edit' ),
130
-	),
131
-
132
-	'is_recurring'      => array(
133
-		'description' => __( 'Whether or not the discount applies to the initial payment only or all recurring payments.', 'invoicing' ),
134
-		'type'        => 'boolean',
135
-		'context'     => array( 'view', 'edit' ),
136
-	),
137
-
138
-	'start_date'        => array(
139
-		'description' => __( 'The start date for the discount in the format of yyyy-mm-dd hh:mm:ss. If provided, the discount can only be used after or on this date.', 'invoicing' ),
140
-		'type'        => 'string',
141
-		'context'     => array( 'view', 'edit' ),
142
-	),
143
-
144
-	'end_date'          => array(
145
-		'description' => __( 'The expiration date for the discount.', 'invoicing' ),
146
-		'type'        => 'string',
147
-		'context'     => array( 'view', 'edit' ),
148
-	),
149
-
150
-	'allowed_items'     => array(
151
-		'description' => __( 'Items which are allowed to use this discount. Leave blank to enable for all items.', 'invoicing' ),
152
-		'type'        => 'array',
153
-		'context'     => array( 'view', 'edit' ),
154
-		'items'       => array(
155
-			'type' => 'integer',
156
-		),
157
-	),
158
-
159
-	'excluded_items'    => array(
160
-		'description' => __( 'Items which are NOT allowed to use this discount.', 'invoicing' ),
161
-		'type'        => 'array',
162
-		'context'     => array( 'view', 'edit' ),
163
-		'items'       => array(
164
-			'type' => 'integer',
165
-		),
166
-	),
167
-
168
-	'required_items'    => array(
169
-		'description' => __( 'Items which are required to be in the cart before using this discount.', 'invoicing' ),
170
-		'type'        => 'array',
171
-		'context'     => array( 'view', 'edit' ),
172
-		'items'       => array(
173
-			'type' => 'integer',
174
-		),
175
-	),
176
-
177
-	'minimum_total'     => array(
178
-		'description' => __( 'The minimum total needed to use this invoice.', 'invoicing' ),
179
-		'type'        => 'number',
180
-		'context'     => array( 'view', 'edit' ),
181
-	),
182
-
183
-	'maximum_total'     => array(
184
-		'description' => __( 'The maximum total needed to use this invoice.', 'invoicing' ),
185
-		'type'        => 'number',
186
-		'context'     => array( 'view', 'edit' ),
187
-	),
16
+    'id'                => array(
17
+        'description' => __( 'Unique identifier for the discount.', 'invoicing' ),
18
+        'type'        => 'integer',
19
+        'context'     => array( 'view', 'edit', 'embed' ),
20
+        'readonly'    => true,
21
+    ),
22
+
23
+    'status'            => array(
24
+        'description' => __( 'A named status for the discount.', 'invoicing' ),
25
+        'type'        => 'string',
26
+        'enum'        => array( 'publish', 'pending', 'draft', 'expired' ),
27
+        'default'     => 'draft',
28
+        'context'     => array( 'view', 'edit', 'embed' ),
29
+    ),
30
+
31
+    'version'           => array(
32
+        'description' => __( 'Plugin version when the discount was created.', 'invoicing' ),
33
+        'type'        => 'string',
34
+        'context'     => array( 'view', 'edit', 'embed' ),
35
+        'readonly'    => true,
36
+    ),
37
+
38
+    'date_created'      => array(
39
+        'description' => __( "The date the discount was created, in the site's timezone.", 'invoicing' ),
40
+        'type'        => 'string',
41
+        'context'     => array( 'view', 'edit', 'embed' ),
42
+    ),
43
+
44
+    'date_created_gmt'  => array(
45
+        'description' => __( 'The GMT date the discount was created.', 'invoicing' ),
46
+        'type'        => 'string',
47
+        'context'     => array( 'view', 'edit', 'embed' ),
48
+        'readonly'    => true,
49
+    ),
50
+
51
+    'date_modified'     => array(
52
+        'description' => __( "The date the discount was last modified, in the site's timezone.", 'invoicing' ),
53
+        'type'        => 'string',
54
+        'context'     => array( 'view', 'edit', 'embed' ),
55
+        'readonly'    => true,
56
+    ),
57
+
58
+    'date_modified_gmt' => array(
59
+        'description' => __( 'The GMT date the discount was last modified.', 'invoicing' ),
60
+        'type'        => 'string',
61
+        'context'     => array( 'view', 'edit', 'embed' ),
62
+        'readonly'    => true,
63
+    ),
64
+
65
+    'name'              => array(
66
+        'description' => __( 'The discount name.', 'invoicing' ),
67
+        'type'        => 'string',
68
+        'context'     => array( 'view', 'edit', 'embed' ),
69
+    ),
70
+
71
+    'description'       => array(
72
+        'description' => __( 'A description of what the discount is all about.', 'invoicing' ),
73
+        'type'        => 'string',
74
+        'context'     => array( 'view', 'edit', 'embed' ),
75
+    ),
76
+
77
+    'code'              => array(
78
+        'description' => __( 'The discount code.', 'invoicing' ),
79
+        'type'        => 'string',
80
+        'context'     => array( 'view', 'edit', 'embed' ),
81
+        'required'    => true,
82
+    ),
83
+
84
+    'type'              => array(
85
+        'description' => __( 'The type of discount.', 'invoicing' ),
86
+        'type'        => 'string',
87
+        'enum'        => array_keys( wpinv_get_discount_types() ),
88
+        'context'     => array( 'view', 'edit', 'embed' ),
89
+        'default'     => 'percent',
90
+    ),
91
+
92
+    'amount'            => array(
93
+        'description' => __( 'The discount value.', 'invoicing' ),
94
+        'type'        => 'number',
95
+        'context'     => array( 'view', 'edit', 'embed' ),
96
+        'required'    => true,
97
+    ),
98
+
99
+    'formatted_amount'  => array(
100
+        'description' => __( 'The formatted discount value.', 'invoicing' ),
101
+        'type'        => 'string',
102
+        'context'     => array( 'view', 'edit', 'embed' ),
103
+        'readonly'    => true,
104
+    ),
105
+
106
+    'uses'              => array(
107
+        'description' => __( 'The number of times the discount has been used.', 'invoicing' ),
108
+        'type'        => 'integer',
109
+        'context'     => array( 'view', 'embed' ),
110
+        'readonly'    => true,
111
+    ),
112
+
113
+    'max_uses'          => array(
114
+        'description' => __( 'The maximum number of times the discount can be used.', 'invoicing' ),
115
+        'type'        => 'integer',
116
+        'context'     => array( 'view', 'edit' ),
117
+    ),
118
+
119
+    'usage'             => array(
120
+        'description' => __( "The discount's usage, i.e uses / max uses.", 'invoicing' ),
121
+        'type'        => 'string',
122
+        'context'     => array( 'view', 'embed' ),
123
+        'readonly'    => true,
124
+    ),
125
+
126
+    'is_single_use'     => array(
127
+        'description' => __( 'Whether or not the discount can only be used once per user.', 'invoicing' ),
128
+        'type'        => 'boolean',
129
+        'context'     => array( 'view', 'edit' ),
130
+    ),
131
+
132
+    'is_recurring'      => array(
133
+        'description' => __( 'Whether or not the discount applies to the initial payment only or all recurring payments.', 'invoicing' ),
134
+        'type'        => 'boolean',
135
+        'context'     => array( 'view', 'edit' ),
136
+    ),
137
+
138
+    'start_date'        => array(
139
+        'description' => __( 'The start date for the discount in the format of yyyy-mm-dd hh:mm:ss. If provided, the discount can only be used after or on this date.', 'invoicing' ),
140
+        'type'        => 'string',
141
+        'context'     => array( 'view', 'edit' ),
142
+    ),
143
+
144
+    'end_date'          => array(
145
+        'description' => __( 'The expiration date for the discount.', 'invoicing' ),
146
+        'type'        => 'string',
147
+        'context'     => array( 'view', 'edit' ),
148
+    ),
149
+
150
+    'allowed_items'     => array(
151
+        'description' => __( 'Items which are allowed to use this discount. Leave blank to enable for all items.', 'invoicing' ),
152
+        'type'        => 'array',
153
+        'context'     => array( 'view', 'edit' ),
154
+        'items'       => array(
155
+            'type' => 'integer',
156
+        ),
157
+    ),
158
+
159
+    'excluded_items'    => array(
160
+        'description' => __( 'Items which are NOT allowed to use this discount.', 'invoicing' ),
161
+        'type'        => 'array',
162
+        'context'     => array( 'view', 'edit' ),
163
+        'items'       => array(
164
+            'type' => 'integer',
165
+        ),
166
+    ),
167
+
168
+    'required_items'    => array(
169
+        'description' => __( 'Items which are required to be in the cart before using this discount.', 'invoicing' ),
170
+        'type'        => 'array',
171
+        'context'     => array( 'view', 'edit' ),
172
+        'items'       => array(
173
+            'type' => 'integer',
174
+        ),
175
+    ),
176
+
177
+    'minimum_total'     => array(
178
+        'description' => __( 'The minimum total needed to use this invoice.', 'invoicing' ),
179
+        'type'        => 'number',
180
+        'context'     => array( 'view', 'edit' ),
181
+    ),
182
+
183
+    'maximum_total'     => array(
184
+        'description' => __( 'The maximum total needed to use this invoice.', 'invoicing' ),
185
+        'type'        => 'number',
186
+        'context'     => array( 'view', 'edit' ),
187
+    ),
188 188
 
189 189
 );
Please login to merge, or discard this patch.
includes/data/item-schema.php 1 patch
Indentation   +229 added lines, -229 removed lines patch added patch discarded remove patch
@@ -13,233 +13,233 @@
 block discarded – undo
13 13
 
14 14
 return array(
15 15
 
16
-	'id'                   => array(
17
-		'description' => __( 'Unique identifier for the item.', 'invoicing' ),
18
-		'type'        => 'integer',
19
-		'context'     => array( 'view', 'edit', 'embed' ),
20
-		'readonly'    => true,
21
-	),
22
-
23
-	'parent_id'            => array(
24
-		'description' => __( 'Parent item ID.', 'invoicing' ),
25
-		'type'        => 'integer',
26
-		'context'     => array( 'view', 'edit', 'embed' ),
27
-		'default'     => 0,
28
-	),
29
-
30
-	'status'               => array(
31
-		'description' => __( 'A named status for the item.', 'invoicing' ),
32
-		'type'        => 'string',
33
-		'enum'        => array( 'draft', 'pending', 'publish' ),
34
-		'context'     => array( 'view', 'edit', 'embed' ),
35
-		'default'     => 'draft',
36
-	),
37
-
38
-	'version'              => array(
39
-		'description' => __( 'Plugin version when the item was created.', 'invoicing' ),
40
-		'type'        => 'string',
41
-		'context'     => array( 'view', 'edit' ),
42
-		'readonly'    => true,
43
-	),
44
-
45
-	'date_created'         => array(
46
-		'description' => __( "The date the item was created, in the site's timezone.", 'invoicing' ),
47
-		'type'        => 'string',
48
-		'context'     => array( 'view', 'edit', 'embed' ),
49
-	),
50
-
51
-	'date_created_gmt'     => array(
52
-		'description' => __( 'The GMT date the item was created.', 'invoicing' ),
53
-		'type'        => 'string',
54
-		'context'     => array( 'view', 'edit', 'embed' ),
55
-		'readonly'    => true,
56
-	),
57
-
58
-	'date_modified'        => array(
59
-		'description' => __( "The date the item was last modified, in the site's timezone.", 'invoicing' ),
60
-		'type'        => 'string',
61
-		'context'     => array( 'view', 'edit', 'embed' ),
62
-		'readonly'    => true,
63
-	),
64
-
65
-	'date_modified_gmt'    => array(
66
-		'description' => __( 'The GMT date the item was last modified.', 'invoicing' ),
67
-		'type'        => 'string',
68
-		'context'     => array( 'view', 'edit', 'embed' ),
69
-		'readonly'    => true,
70
-	),
71
-
72
-	'name'                 => array(
73
-		'description' => __( "The item's name.", 'invoicing' ),
74
-		'type'        => 'string',
75
-		'context'     => array( 'view', 'edit', 'embed' ),
76
-		'required'    => true,
77
-	),
78
-
79
-	'description'          => array(
80
-		'description' => __( "The item's description.", 'invoicing' ),
81
-		'type'        => 'string',
82
-		'context'     => array( 'view', 'edit', 'embed' ),
83
-	),
84
-
85
-	'owner'                => array(
86
-		'description' => __( 'The owner of the item (user id).', 'invoicing' ),
87
-		'type'        => 'integer',
88
-		'context'     => array( 'view', 'edit', 'embed' ),
89
-	),
90
-
91
-	'price'                => array(
92
-		'description' => __( 'The price of the item.', 'invoicing' ),
93
-		'type'        => 'number',
94
-		'context'     => array( 'view', 'edit', 'embed' ),
95
-		'required'    => true,
96
-	),
97
-
98
-	'the_price'            => array(
99
-		'description' => __( 'The formatted price of the item.', 'invoicing' ),
100
-		'type'        => 'string',
101
-		'context'     => array( 'view', 'edit', 'embed' ),
102
-		'readonly'    => true,
103
-	),
104
-
105
-	'type'                 => array(
106
-		'description' => __( 'The item type.', 'invoicing' ),
107
-		'type'        => 'string',
108
-		'enum'        => wpinv_item_types(),
109
-		'default'     => 'custom',
110
-		'context'     => array( 'view', 'edit', 'embed' ),
111
-	),
112
-
113
-	'vat_rule'             => array(
114
-		'description' => __( 'VAT rule applied to the item.', 'invoicing' ),
115
-		'type'        => 'string',
116
-		'enum'        => array_keys( getpaid_get_tax_rules() ),
117
-		'context'     => array( 'view', 'edit', 'embed' ),
118
-	),
119
-
120
-	'vat_class'            => array(
121
-		'description' => __( 'VAT class for the item.', 'invoicing' ),
122
-		'type'        => 'string',
123
-		'context'     => array( 'view', 'edit', 'embed' ),
124
-		'enum'        => array_keys( getpaid_get_tax_classes() ),
125
-	),
126
-
127
-	'custom_id'            => array(
128
-		'description' => __( 'Custom id for the item.', 'invoicing' ),
129
-		'type'        => 'string',
130
-		'context'     => array( 'view', 'edit', 'embed' ),
131
-	),
132
-
133
-	'custom_name'          => array(
134
-		'description' => __( 'Custom name for the item.', 'invoicing' ),
135
-		'type'        => 'string',
136
-		'context'     => array( 'view', 'edit', 'embed' ),
137
-	),
138
-
139
-	'custom_singular_name' => array(
140
-		'description' => __( 'Custom singular name for the item.', 'invoicing' ),
141
-		'type'        => 'string',
142
-		'context'     => array( 'view', 'edit', 'embed' ),
143
-	),
144
-
145
-	'is_dynamic_pricing'   => array(
146
-		'description' => __( 'Whether or not customers can enter their own prices when checking out.', 'invoicing' ),
147
-		'type'        => 'integer',
148
-		'enum'        => array( 0, 1 ),
149
-		'context'     => array( 'view', 'edit', 'embed' ),
150
-	),
151
-
152
-	'minimum_price'        => array(
153
-		'description' => __( 'For dynamic prices, this is the minimum price that a user can set.', 'invoicing' ),
154
-		'type'        => 'number',
155
-		'context'     => array( 'view', 'edit', 'embed' ),
156
-	),
157
-
158
-	'is_recurring'         => array(
159
-		'description' => __( 'Whether or not this is a subscription item.', 'invoicing' ),
160
-		'type'        => 'integer',
161
-		'enum'        => array( 0, 1 ),
162
-		'context'     => array( 'view', 'edit', 'embed' ),
163
-	),
164
-
165
-	'initial_price'        => array(
166
-		'description' => __( 'The initial price of the item.', 'invoicing' ),
167
-		'type'        => 'number',
168
-		'context'     => array( 'view', 'edit', 'embed' ),
169
-		'readonly'    => true,
170
-	),
171
-
172
-	'the_initial_price'    => array(
173
-		'description' => __( 'The formatted initial price of the item.', 'invoicing' ),
174
-		'type'        => 'string',
175
-		'context'     => array( 'view', 'edit', 'embed' ),
176
-		'readonly'    => true,
177
-	),
178
-
179
-	'recurring_price'      => array(
180
-		'description' => __( 'The recurring price of the item.', 'invoicing' ),
181
-		'type'        => 'number',
182
-		'context'     => array( 'view', 'edit', 'embed' ),
183
-		'readonly'    => true,
184
-	),
185
-
186
-	'the_recurring_price'  => array(
187
-		'description' => __( 'The formatted recurring price of the item.', 'invoicing' ),
188
-		'type'        => 'string',
189
-		'context'     => array( 'view', 'edit', 'embed' ),
190
-		'readonly'    => true,
191
-	),
192
-
193
-	'recurring_period'     => array(
194
-		'description' => __( 'The recurring period for a recurring item.', 'invoicing' ),
195
-		'type'        => 'string',
196
-		'context'     => array( 'view', 'edit', 'embed' ),
197
-		'enum'        => array( 'D', 'W', 'M', 'Y' ),
198
-	),
199
-
200
-	'recurring_interval'   => array(
201
-		'description' => __( 'The recurring interval for a subscription item.', 'invoicing' ),
202
-		'type'        => 'integer',
203
-		'context'     => array( 'view', 'edit', 'embed' ),
204
-	),
205
-
206
-	'recurring_limit'      => array(
207
-		'description' => __( 'The maximum number of renewals for a subscription item.', 'invoicing' ),
208
-		'type'        => 'integer',
209
-		'context'     => array( 'view', 'edit', 'embed' ),
210
-	),
211
-
212
-	'is_free_trial'        => array(
213
-		'description' => __( 'Whether the item has a free trial period.', 'invoicing' ),
214
-		'type'        => 'integer',
215
-		'enum'        => array( 0, 1 ),
216
-		'context'     => array( 'view', 'edit', 'embed' ),
217
-	),
218
-
219
-	'trial_period'         => array(
220
-		'description' => __( 'The trial period.', 'invoicing' ),
221
-		'type'        => 'string',
222
-		'context'     => array( 'view', 'edit', 'embed' ),
223
-		'enum'        => array( 'D', 'W', 'M', 'Y' ),
224
-	),
225
-
226
-	'trial_interval'       => array(
227
-		'description' => __( 'The trial interval.', 'invoicing' ),
228
-		'type'        => 'integer',
229
-		'context'     => array( 'view', 'edit', 'embed' ),
230
-	),
231
-
232
-	'first_renewal_date'   => array(
233
-		'description' => __( 'The first renewal date in case the item was to be bought today.', 'invoicing' ),
234
-		'type'        => 'string',
235
-		'context'     => array( 'view', 'edit', 'embed' ),
236
-		'readonly'    => true,
237
-	),
238
-
239
-	'edit_url'             => array(
240
-		'description' => __( 'The URL to edit an item.', 'invoicing' ),
241
-		'type'        => 'string',
242
-		'context'     => array( 'view', 'edit', 'embed' ),
243
-		'readonly'    => true,
244
-	),
16
+    'id'                   => array(
17
+        'description' => __( 'Unique identifier for the item.', 'invoicing' ),
18
+        'type'        => 'integer',
19
+        'context'     => array( 'view', 'edit', 'embed' ),
20
+        'readonly'    => true,
21
+    ),
22
+
23
+    'parent_id'            => array(
24
+        'description' => __( 'Parent item ID.', 'invoicing' ),
25
+        'type'        => 'integer',
26
+        'context'     => array( 'view', 'edit', 'embed' ),
27
+        'default'     => 0,
28
+    ),
29
+
30
+    'status'               => array(
31
+        'description' => __( 'A named status for the item.', 'invoicing' ),
32
+        'type'        => 'string',
33
+        'enum'        => array( 'draft', 'pending', 'publish' ),
34
+        'context'     => array( 'view', 'edit', 'embed' ),
35
+        'default'     => 'draft',
36
+    ),
37
+
38
+    'version'              => array(
39
+        'description' => __( 'Plugin version when the item was created.', 'invoicing' ),
40
+        'type'        => 'string',
41
+        'context'     => array( 'view', 'edit' ),
42
+        'readonly'    => true,
43
+    ),
44
+
45
+    'date_created'         => array(
46
+        'description' => __( "The date the item was created, in the site's timezone.", 'invoicing' ),
47
+        'type'        => 'string',
48
+        'context'     => array( 'view', 'edit', 'embed' ),
49
+    ),
50
+
51
+    'date_created_gmt'     => array(
52
+        'description' => __( 'The GMT date the item was created.', 'invoicing' ),
53
+        'type'        => 'string',
54
+        'context'     => array( 'view', 'edit', 'embed' ),
55
+        'readonly'    => true,
56
+    ),
57
+
58
+    'date_modified'        => array(
59
+        'description' => __( "The date the item was last modified, in the site's timezone.", 'invoicing' ),
60
+        'type'        => 'string',
61
+        'context'     => array( 'view', 'edit', 'embed' ),
62
+        'readonly'    => true,
63
+    ),
64
+
65
+    'date_modified_gmt'    => array(
66
+        'description' => __( 'The GMT date the item was last modified.', 'invoicing' ),
67
+        'type'        => 'string',
68
+        'context'     => array( 'view', 'edit', 'embed' ),
69
+        'readonly'    => true,
70
+    ),
71
+
72
+    'name'                 => array(
73
+        'description' => __( "The item's name.", 'invoicing' ),
74
+        'type'        => 'string',
75
+        'context'     => array( 'view', 'edit', 'embed' ),
76
+        'required'    => true,
77
+    ),
78
+
79
+    'description'          => array(
80
+        'description' => __( "The item's description.", 'invoicing' ),
81
+        'type'        => 'string',
82
+        'context'     => array( 'view', 'edit', 'embed' ),
83
+    ),
84
+
85
+    'owner'                => array(
86
+        'description' => __( 'The owner of the item (user id).', 'invoicing' ),
87
+        'type'        => 'integer',
88
+        'context'     => array( 'view', 'edit', 'embed' ),
89
+    ),
90
+
91
+    'price'                => array(
92
+        'description' => __( 'The price of the item.', 'invoicing' ),
93
+        'type'        => 'number',
94
+        'context'     => array( 'view', 'edit', 'embed' ),
95
+        'required'    => true,
96
+    ),
97
+
98
+    'the_price'            => array(
99
+        'description' => __( 'The formatted price of the item.', 'invoicing' ),
100
+        'type'        => 'string',
101
+        'context'     => array( 'view', 'edit', 'embed' ),
102
+        'readonly'    => true,
103
+    ),
104
+
105
+    'type'                 => array(
106
+        'description' => __( 'The item type.', 'invoicing' ),
107
+        'type'        => 'string',
108
+        'enum'        => wpinv_item_types(),
109
+        'default'     => 'custom',
110
+        'context'     => array( 'view', 'edit', 'embed' ),
111
+    ),
112
+
113
+    'vat_rule'             => array(
114
+        'description' => __( 'VAT rule applied to the item.', 'invoicing' ),
115
+        'type'        => 'string',
116
+        'enum'        => array_keys( getpaid_get_tax_rules() ),
117
+        'context'     => array( 'view', 'edit', 'embed' ),
118
+    ),
119
+
120
+    'vat_class'            => array(
121
+        'description' => __( 'VAT class for the item.', 'invoicing' ),
122
+        'type'        => 'string',
123
+        'context'     => array( 'view', 'edit', 'embed' ),
124
+        'enum'        => array_keys( getpaid_get_tax_classes() ),
125
+    ),
126
+
127
+    'custom_id'            => array(
128
+        'description' => __( 'Custom id for the item.', 'invoicing' ),
129
+        'type'        => 'string',
130
+        'context'     => array( 'view', 'edit', 'embed' ),
131
+    ),
132
+
133
+    'custom_name'          => array(
134
+        'description' => __( 'Custom name for the item.', 'invoicing' ),
135
+        'type'        => 'string',
136
+        'context'     => array( 'view', 'edit', 'embed' ),
137
+    ),
138
+
139
+    'custom_singular_name' => array(
140
+        'description' => __( 'Custom singular name for the item.', 'invoicing' ),
141
+        'type'        => 'string',
142
+        'context'     => array( 'view', 'edit', 'embed' ),
143
+    ),
144
+
145
+    'is_dynamic_pricing'   => array(
146
+        'description' => __( 'Whether or not customers can enter their own prices when checking out.', 'invoicing' ),
147
+        'type'        => 'integer',
148
+        'enum'        => array( 0, 1 ),
149
+        'context'     => array( 'view', 'edit', 'embed' ),
150
+    ),
151
+
152
+    'minimum_price'        => array(
153
+        'description' => __( 'For dynamic prices, this is the minimum price that a user can set.', 'invoicing' ),
154
+        'type'        => 'number',
155
+        'context'     => array( 'view', 'edit', 'embed' ),
156
+    ),
157
+
158
+    'is_recurring'         => array(
159
+        'description' => __( 'Whether or not this is a subscription item.', 'invoicing' ),
160
+        'type'        => 'integer',
161
+        'enum'        => array( 0, 1 ),
162
+        'context'     => array( 'view', 'edit', 'embed' ),
163
+    ),
164
+
165
+    'initial_price'        => array(
166
+        'description' => __( 'The initial price of the item.', 'invoicing' ),
167
+        'type'        => 'number',
168
+        'context'     => array( 'view', 'edit', 'embed' ),
169
+        'readonly'    => true,
170
+    ),
171
+
172
+    'the_initial_price'    => array(
173
+        'description' => __( 'The formatted initial price of the item.', 'invoicing' ),
174
+        'type'        => 'string',
175
+        'context'     => array( 'view', 'edit', 'embed' ),
176
+        'readonly'    => true,
177
+    ),
178
+
179
+    'recurring_price'      => array(
180
+        'description' => __( 'The recurring price of the item.', 'invoicing' ),
181
+        'type'        => 'number',
182
+        'context'     => array( 'view', 'edit', 'embed' ),
183
+        'readonly'    => true,
184
+    ),
185
+
186
+    'the_recurring_price'  => array(
187
+        'description' => __( 'The formatted recurring price of the item.', 'invoicing' ),
188
+        'type'        => 'string',
189
+        'context'     => array( 'view', 'edit', 'embed' ),
190
+        'readonly'    => true,
191
+    ),
192
+
193
+    'recurring_period'     => array(
194
+        'description' => __( 'The recurring period for a recurring item.', 'invoicing' ),
195
+        'type'        => 'string',
196
+        'context'     => array( 'view', 'edit', 'embed' ),
197
+        'enum'        => array( 'D', 'W', 'M', 'Y' ),
198
+    ),
199
+
200
+    'recurring_interval'   => array(
201
+        'description' => __( 'The recurring interval for a subscription item.', 'invoicing' ),
202
+        'type'        => 'integer',
203
+        'context'     => array( 'view', 'edit', 'embed' ),
204
+    ),
205
+
206
+    'recurring_limit'      => array(
207
+        'description' => __( 'The maximum number of renewals for a subscription item.', 'invoicing' ),
208
+        'type'        => 'integer',
209
+        'context'     => array( 'view', 'edit', 'embed' ),
210
+    ),
211
+
212
+    'is_free_trial'        => array(
213
+        'description' => __( 'Whether the item has a free trial period.', 'invoicing' ),
214
+        'type'        => 'integer',
215
+        'enum'        => array( 0, 1 ),
216
+        'context'     => array( 'view', 'edit', 'embed' ),
217
+    ),
218
+
219
+    'trial_period'         => array(
220
+        'description' => __( 'The trial period.', 'invoicing' ),
221
+        'type'        => 'string',
222
+        'context'     => array( 'view', 'edit', 'embed' ),
223
+        'enum'        => array( 'D', 'W', 'M', 'Y' ),
224
+    ),
225
+
226
+    'trial_interval'       => array(
227
+        'description' => __( 'The trial interval.', 'invoicing' ),
228
+        'type'        => 'integer',
229
+        'context'     => array( 'view', 'edit', 'embed' ),
230
+    ),
231
+
232
+    'first_renewal_date'   => array(
233
+        'description' => __( 'The first renewal date in case the item was to be bought today.', 'invoicing' ),
234
+        'type'        => 'string',
235
+        'context'     => array( 'view', 'edit', 'embed' ),
236
+        'readonly'    => true,
237
+    ),
238
+
239
+    'edit_url'             => array(
240
+        'description' => __( 'The URL to edit an item.', 'invoicing' ),
241
+        'type'        => 'string',
242
+        'context'     => array( 'view', 'edit', 'embed' ),
243
+        'readonly'    => true,
244
+    ),
245 245
 );
Please login to merge, or discard this patch.
includes/data/eu-states.php 1 patch
Indentation   +27 added lines, -27 removed lines patch added patch discarded remove patch
@@ -9,31 +9,31 @@
 block discarded – undo
9 9
 defined( 'ABSPATH' ) || exit;
10 10
 
11 11
 return array(
12
-	'AT',
13
-	'BE',
14
-	'BG',
15
-	'HR',
16
-	'CY',
17
-	'CZ',
18
-	'DK',
19
-	'EE',
20
-	'FI',
21
-	'FR',
22
-	'DE',
23
-	'GR',
24
-	'HU',
25
-	'IE',
26
-	'IT',
27
-	'LV',
28
-	'LT',
29
-	'LU',
30
-	'MT',
31
-	'NL',
32
-	'PL',
33
-	'PT',
34
-	'RO',
35
-	'SK',
36
-	'SI',
37
-	'ES',
38
-	'SE',
12
+    'AT',
13
+    'BE',
14
+    'BG',
15
+    'HR',
16
+    'CY',
17
+    'CZ',
18
+    'DK',
19
+    'EE',
20
+    'FI',
21
+    'FR',
22
+    'DE',
23
+    'GR',
24
+    'HU',
25
+    'IE',
26
+    'IT',
27
+    'LV',
28
+    'LT',
29
+    'LU',
30
+    'MT',
31
+    'NL',
32
+    'PL',
33
+    'PT',
34
+    'RO',
35
+    'SK',
36
+    'SI',
37
+    'ES',
38
+    'SE',
39 39
 );
Please login to merge, or discard this patch.
includes/data/invoice-schema.php 1 patch
Indentation   +624 added lines, -624 removed lines patch added patch discarded remove patch
@@ -13,629 +13,629 @@
 block discarded – undo
13 13
 
14 14
 return array(
15 15
 
16
-	'id'                   => array(
17
-		'description' => __( 'Unique identifier for the invoice.', 'invoicing' ),
18
-		'type'        => 'integer',
19
-		'context'     => array( 'view', 'edit', 'embed' ),
20
-		'readonly'    => true,
21
-	),
22
-
23
-	'parent_id'            => array(
24
-		'description' => __( 'Parent invoice ID.', 'invoicing' ),
25
-		'type'        => 'integer',
26
-		'minimum'     => 0,
27
-		'default'     => 0,
28
-		'context'     => array( 'view', 'edit' ),
29
-	),
30
-
31
-	'key'                  => array(
32
-		'description' => __( 'A unique key for the invoice.', 'invoicing' ),
33
-		'type'        => 'string',
34
-		'context'     => array( 'view', 'edit' ),
35
-		'readonly'    => true,
36
-	),
37
-
38
-	'number'               => array(
39
-		'description' => __( 'A unique number for the invoice.', 'invoicing' ),
40
-		'type'        => 'string',
41
-		'context'     => array( 'view', 'edit', 'embed' ),
42
-	),
43
-
44
-	'type'                 => array(
45
-		'description' => __( 'Get the invoice type (e.g invoice, quote etc).', 'invoicing' ),
46
-		'type'        => 'string',
47
-		'context'     => array( 'view', 'edit', 'embed' ),
48
-		'readonly'    => true,
49
-	),
50
-
51
-	'post_type'            => array(
52
-		'description' => __( 'Get the invoice post type (e.g wpi_invoice, wpi_quote etc).', 'invoicing' ),
53
-		'type'        => 'string',
54
-		'context'     => array( 'view', 'edit', 'embed' ),
55
-		'readonly'    => true,
56
-	),
57
-
58
-	'version'              => array(
59
-		'description' => __( 'Version of GetPaid/Invoicing which last updated the invoice.', 'invoicing' ),
60
-		'type'        => 'integer',
61
-		'context'     => array( 'view', 'edit' ),
62
-		'readonly'    => true,
63
-	),
64
-
65
-	'template'             => array(
66
-		'description' => __( 'The invoice template.', 'invoicing' ),
67
-		'type'        => 'string',
68
-		'default'     => 'quantity',
69
-		'enum'        => array( 'quantity', 'hours', 'amount' ),
70
-		'context'     => array( 'view', 'edit', 'embed' ),
71
-	),
72
-
73
-	'status'               => array(
74
-		'description' => __( 'Invoice status.', 'invoicing' ),
75
-		'type'        => 'string',
76
-		'default'     => 'wpi-pending',
77
-		'enum'        => array_keys( wpinv_get_invoice_statuses( true ) ),
78
-		'context'     => array( 'view', 'edit', 'embed' ),
79
-	),
80
-
81
-	'status_nicename'      => array(
82
-		'description' => __( 'A human readable name for the invoice status.', 'invoicing' ),
83
-		'type'        => 'string',
84
-		'context'     => array( 'view', 'edit', 'embed' ),
85
-		'readonly'    => true,
86
-	),
87
-
88
-	'currency'             => array(
89
-		'description' => __( 'The invoice currency in ISO format.', 'invoicing' ),
90
-		'type'        => 'string',
91
-		'default'     => wpinv_get_currency(),
92
-		'enum'        => array_keys( wpinv_get_currencies() ),
93
-		'context'     => array( 'view', 'edit', 'embed' ),
94
-	),
95
-
96
-	'date_created'         => array(
97
-		'description' => __( "The date the invoice was created, in the site's timezone.", 'invoicing' ),
98
-		'type'        => 'string',
99
-		'context'     => array( 'view', 'edit', 'embed' ),
100
-	),
101
-
102
-	'date_created_gmt'     => array(
103
-		'description' => __( 'The GMT date the invoice was created.', 'invoicing' ),
104
-		'type'        => 'string',
105
-		'context'     => array( 'view', 'edit', 'embed' ),
106
-		'readonly'    => true,
107
-	),
108
-
109
-	'date_modified'        => array(
110
-		'description' => __( "The date the invoice was last modified, in the site's timezone.", 'invoicing' ),
111
-		'type'        => 'string',
112
-		'context'     => array( 'view', 'edit', 'embed' ),
113
-		'readonly'    => true,
114
-	),
115
-
116
-	'date_modified_gmt'    => array(
117
-		'description' => __( 'The GMT date the invoice was last modified.', 'invoicing' ),
118
-		'type'        => 'string',
119
-		'context'     => array( 'view', 'edit', 'embed' ),
120
-		'readonly'    => true,
121
-	),
122
-
123
-	'due_date'             => array(
124
-		'description' => __( "The invoice's due date, in the site's timezone.", 'invoicing' ),
125
-		'type'        => 'string',
126
-		'context'     => array( 'view', 'edit', 'embed' ),
127
-	),
128
-
129
-	'due_date_gmt'         => array(
130
-		'description' => __( 'The GMT date the invoice is/was due.', 'invoicing' ),
131
-		'type'        => 'string',
132
-		'context'     => array( 'view', 'edit', 'embed' ),
133
-		'readonly'    => true,
134
-	),
135
-
136
-	'completed_date'       => array(
137
-		'description' => __( "The date the invoice was paid, in the site's timezone.", 'invoicing' ),
138
-		'type'        => 'string',
139
-		'context'     => array( 'view', 'edit', 'embed' ),
140
-		'readonly'    => true,
141
-	),
142
-
143
-	'completed_date_gmt'   => array(
144
-		'description' => __( 'The GMT date the invoice was paid.', 'invoicing' ),
145
-		'type'        => 'string',
146
-		'context'     => array( 'view', 'edit', 'embed' ),
147
-		'readonly'    => true,
148
-	),
149
-
150
-	'total_discount'       => array(
151
-		'description' => __( 'Total discount amount for the invoice.', 'invoicing' ),
152
-		'type'        => 'number',
153
-		'context'     => array( 'view', 'edit', 'embed' ),
154
-		'readonly'    => true,
155
-	),
156
-
157
-	'total_tax'            => array(
158
-		'description' => __( 'Total tax amount for the invoice.', 'invoicing' ),
159
-		'type'        => 'number',
160
-		'context'     => array( 'view', 'edit', 'embed' ),
161
-		'readonly'    => true,
162
-	),
163
-
164
-	'total_fees'           => array(
165
-		'description' => __( 'Total fees amount for the invoice.', 'invoicing' ),
166
-		'type'        => 'number',
167
-		'context'     => array( 'view', 'edit', 'embed' ),
168
-		'readonly'    => true,
169
-	),
170
-
171
-	'subtotal'             => array(
172
-		'description' => __( 'Invoice subtotal.', 'invoicing' ),
173
-		'type'        => 'number',
174
-		'context'     => array( 'view', 'edit', 'embed' ),
175
-		'readonly'    => true,
176
-	),
177
-
178
-	'total'                => array(
179
-		'description' => __( 'Grand total.', 'invoicing' ),
180
-		'type'        => 'number',
181
-		'context'     => array( 'view', 'edit', 'embed' ),
182
-		'readonly'    => true,
183
-	),
184
-
185
-	'initial_total'        => array(
186
-		'description' => __( 'Initial total (for recurring invoices).', 'invoicing' ),
187
-		'type'        => 'number',
188
-		'context'     => array( 'view', 'edit', 'embed' ),
189
-		'readonly'    => true,
190
-	),
191
-
192
-	'recurring_total'      => array(
193
-		'description' => __( 'Recurring total (for recurring invoices).', 'invoicing' ),
194
-		'type'        => 'number',
195
-		'context'     => array( 'view', 'edit', 'embed' ),
196
-		'readonly'    => true,
197
-	),
198
-
199
-	'totals'               => array(
200
-		'description' => __( 'Invoice totals.', 'invoicing' ),
201
-		'type'        => 'object',
202
-		'context'     => array( 'view', 'edit', 'embed' ),
203
-		'readonly'    => true,
204
-	),
205
-
206
-	'fees'                 => array(
207
-		'description' => __( 'Invoice fees (Name => properties).', 'invoicing' ),
208
-		'type'        => 'object',
209
-		'context'     => array( 'view', 'edit', 'embed' ),
210
-		'items'       => array(
211
-			'type'       => 'object',
212
-			'required'   => array( 'amount' ),
213
-			'properties' => array(
214
-				'amount'    => array(
215
-					'description' => __( 'Fee amount.', 'invoicing' ),
216
-					'type'        => 'string',
217
-					'context'     => array( 'view', 'edit', 'embed' ),
218
-				),
219
-				'recurring' => array(
220
-					'description' => __( 'Whether this is a recurring or one-time fee.', 'invoicing' ),
221
-					'type'        => array( 'boolean', 'integer' ),
222
-					'context'     => array( 'view', 'edit', 'embed' ),
223
-				),
224
-			),
225
-		),
226
-	),
227
-
228
-	'discounts'            => array(
229
-		'description' => __( 'Invoice discounts (Name => properties).', 'invoicing' ),
230
-		'type'        => 'object',
231
-		'context'     => array( 'view', 'edit', 'embed' ),
232
-		'items'       => array(
233
-			'type'       => 'object',
234
-			'required'   => array( 'amount' ),
235
-			'properties' => array(
236
-				'amount'    => array(
237
-					'description' => __( 'Fee amount.', 'invoicing' ),
238
-					'type'        => 'string',
239
-					'context'     => array( 'view', 'edit', 'embed' ),
240
-				),
241
-				'recurring' => array(
242
-					'description' => __( 'Whether this is a recurring or one-time discount.', 'invoicing' ),
243
-					'type'        => array( 'boolean', 'integer' ),
244
-					'context'     => array( 'view', 'edit', 'embed' ),
245
-				),
246
-			),
247
-		),
248
-	),
249
-
250
-	'taxes'                => array(
251
-		'description' => __( 'Invoice taxes (Name => properties).', 'invoicing' ),
252
-		'type'        => 'object',
253
-		'context'     => array( 'view', 'edit', 'embed' ),
254
-		'items'       => array(
255
-			'type'       => 'object',
256
-			'required'   => array( 'amount' ),
257
-			'properties' => array(
258
-				'amount'    => array(
259
-					'description' => __( 'Fee amount.', 'invoicing' ),
260
-					'type'        => 'string',
261
-					'context'     => array( 'view', 'edit', 'embed' ),
262
-				),
263
-				'recurring' => array(
264
-					'description' => __( 'Whether this is a recurring or one-time tax.', 'invoicing' ),
265
-					'type'        => array( 'boolean', 'integer' ),
266
-					'context'     => array( 'view', 'edit', 'embed' ),
267
-				),
268
-			),
269
-		),
270
-	),
271
-
272
-	'items'                => array(
273
-		'description' => __( 'Invoice items.', 'invoicing' ),
274
-		'type'        => 'array',
275
-		'context'     => array( 'view', 'edit', 'embed' ),
276
-		'items'       => array(
277
-			'type'       => 'object',
278
-			'required'   => array( 'item_id' ),
279
-			'properties' => array(
280
-				'item_id'          => array(
281
-					'description' => __( 'Item ID.', 'invoicing' ),
282
-					'type'        => 'integer',
283
-					'context'     => array( 'view', 'edit', 'embed' ),
284
-				),
285
-				'item_name'        => array(
286
-					'description' => __( 'Item Name.', 'invoicing' ),
287
-					'type'        => 'string',
288
-					'context'     => array( 'view', 'edit', 'embed' ),
289
-				),
290
-				'item_description' => array(
291
-					'description' => __( 'Item Description.', 'invoicing' ),
292
-					'type'        => 'string',
293
-					'context'     => array( 'view', 'edit', 'embed' ),
294
-				),
295
-				'item_price'       => array(
296
-					'description' => __( 'Item Price.', 'invoicing' ),
297
-					'type'        => 'number',
298
-					'context'     => array( 'view', 'edit', 'embed' ),
299
-				),
300
-				'quantity'         => array(
301
-					'description' => __( 'Item Quantity.', 'invoicing' ),
302
-					'type'        => 'number',
303
-					'context'     => array( 'view', 'edit', 'embed' ),
304
-				),
305
-				'subtotal'         => array(
306
-					'description' => __( 'Item Subtotal.', 'invoicing' ),
307
-					'type'        => 'number',
308
-					'context'     => array( 'view', 'edit', 'embed' ),
309
-					'readonly'    => true,
310
-				),
311
-				'meta'             => array(
312
-					'description' => __( 'Item Meta.', 'invoicing' ),
313
-					'type'        => 'object',
314
-					'context'     => array( 'view', 'edit', 'embed' ),
315
-				),
316
-			),
317
-		),
318
-	),
319
-
320
-	'mode'                 => array(
321
-		'description' => __( 'The invoice transaction mode.', 'invoicing' ),
322
-		'type'        => 'string',
323
-		'context'     => array( 'view', 'edit', 'embed' ),
324
-		'enum'        => array( 'live', 'test' ),
325
-		'readonly'    => true,
326
-	),
327
-
328
-	'discount_code'        => array(
329
-		'description' => __( 'The discount code used on this invoice.', 'invoicing' ),
330
-		'type'        => 'string',
331
-		'context'     => array( 'view', 'edit', 'embed' ),
332
-	),
333
-
334
-	'gateway'              => array(
335
-		'description' => __( 'The gateway used to pay this invoice.', 'invoicing' ),
336
-		'type'        => 'string',
337
-		'context'     => array( 'view', 'edit', 'embed' ),
338
-	),
339
-
340
-	'gateway_title'        => array(
341
-		'description' => __( 'The title of the gateway used to pay this invoice.', 'invoicing' ),
342
-		'type'        => 'string',
343
-		'context'     => array( 'view', 'edit', 'embed' ),
344
-		'readonly'    => true,
345
-	),
346
-
347
-	'transaction_id'       => array(
348
-		'description' => __( 'The transaction id for this invoice.', 'invoicing' ),
349
-		'type'        => 'string',
350
-		'context'     => array( 'view', 'edit', 'embed' ),
351
-	),
352
-
353
-	'disable_taxes'        => array(
354
-		'description' => __( 'Whether or not taxes should be disabled for this invoice.', 'invoicing' ),
355
-		'type'        => 'boolean ',
356
-		'context'     => array( 'view', 'edit', 'embed' ),
357
-	),
358
-
359
-	'is_viewed'            => array(
360
-		'description' => __( 'Whether or not this invoice has been viewed by the user.', 'invoicing' ),
361
-		'type'        => 'boolean ',
362
-		'context'     => array( 'view', 'edit', 'embed' ),
363
-		'readonly'    => true,
364
-	),
365
-
366
-	'email_cc'             => array(
367
-		'description' => __( 'A comma separated list of other emails that should receive communications for this invoice.', 'invoicing' ),
368
-		'type'        => 'string ',
369
-		'context'     => array( 'view', 'edit' ),
370
-	),
371
-
372
-	'subscription_id'      => array(
373
-		'description' => __( 'The ID of the subscription associated with this invoice.', 'invoicing' ),
374
-		'type'        => 'string ',
375
-		'context'     => array( 'view', 'edit', 'embed' ),
376
-		'readonly'    => true,
377
-	),
378
-
379
-	'subscription_name'    => array(
380
-		'description' => __( 'The name of the subscription associated with this invoice.', 'invoicing' ),
381
-		'type'        => 'string ',
382
-		'context'     => array( 'view', 'edit', 'embed' ),
383
-		'readonly'    => true,
384
-	),
385
-
386
-	'subscription_name'    => array(
387
-		'description' => __( 'The name of the subscription associated with this invoice.', 'invoicing' ),
388
-		'type'        => 'string ',
389
-		'context'     => array( 'view', 'edit', 'embed' ),
390
-		'readonly'    => true,
391
-	),
392
-
393
-	'is_parent'            => array(
394
-		'description' => __( 'Whether or not this is a parent invoice.', 'invoicing' ),
395
-		'type'        => 'boolean',
396
-		'context'     => array( 'view', 'edit', 'embed' ),
397
-		'readonly'    => true,
398
-	),
399
-
400
-	'is_renewal'           => array(
401
-		'description' => __( 'Whether or not this is a renewal invoice.', 'invoicing' ),
402
-		'type'        => 'boolean',
403
-		'context'     => array( 'view', 'edit', 'embed' ),
404
-		'readonly'    => true,
405
-	),
406
-
407
-	'is_recurring'         => array(
408
-		'description' => __( 'Whether or not this is a recurring invoice.', 'invoicing' ),
409
-		'type'        => 'boolean',
410
-		'context'     => array( 'view', 'edit', 'embed' ),
411
-		'readonly'    => true,
412
-	),
413
-
414
-	'is_free'              => array(
415
-		'description' => __( 'Whether or not this invoice is free.', 'invoicing' ),
416
-		'type'        => 'boolean',
417
-		'context'     => array( 'view', 'edit', 'embed' ),
418
-		'readonly'    => true,
419
-	),
420
-
421
-	'is_paid'              => array(
422
-		'description' => __( 'Whether or not this invoice has been paid.', 'invoicing' ),
423
-		'type'        => 'boolean',
424
-		'context'     => array( 'view', 'edit', 'embed' ),
425
-		'readonly'    => true,
426
-	),
427
-
428
-	'needs_payment'        => array(
429
-		'description' => __( 'Whether or not this invoice needs payment.', 'invoicing' ),
430
-		'type'        => 'boolean',
431
-		'context'     => array( 'view', 'edit', 'embed' ),
432
-		'readonly'    => true,
433
-	),
434
-
435
-	'is_refunded'          => array(
436
-		'description' => __( 'Whether or not this invoice was refunded.', 'invoicing' ),
437
-		'type'        => 'boolean',
438
-		'context'     => array( 'view', 'edit', 'embed' ),
439
-		'readonly'    => true,
440
-	),
441
-
442
-	'is_due'               => array(
443
-		'description' => __( 'Whether or not this invoice is due.', 'invoicing' ),
444
-		'type'        => 'boolean',
445
-		'context'     => array( 'view', 'edit', 'embed' ),
446
-		'readonly'    => true,
447
-	),
448
-
449
-	'is_held'              => array(
450
-		'description' => __( 'Whether or not this invoice has been held for payment confirmation.', 'invoicing' ),
451
-		'type'        => 'boolean',
452
-		'context'     => array( 'view', 'edit', 'embed' ),
453
-		'readonly'    => true,
454
-	),
455
-
456
-	'is_draft'             => array(
457
-		'description' => __( 'Whether or not this invoice is marked as draft (cannot be viewed on the frontend).', 'invoicing' ),
458
-		'type'        => 'boolean',
459
-		'context'     => array( 'view', 'edit', 'embed' ),
460
-		'readonly'    => true,
461
-	),
462
-
463
-	'path'                 => array(
464
-		'description' => __( 'The invoice path/slug/name.', 'invoicing' ),
465
-		'type'        => 'string',
466
-		'context'     => array( 'view', 'edit', 'embed' ),
467
-		'readonly'    => true,
468
-	),
469
-
470
-	'description'          => array(
471
-		'description' => __( 'The invoice description.', 'invoicing' ),
472
-		'type'        => 'string',
473
-		'context'     => array( 'view', 'edit', 'embed' ),
474
-	),
475
-
476
-	'payment_form'         => array(
477
-		'description' => __( 'The id of the payment form used to pay for this invoice.', 'invoicing' ),
478
-		'type'        => 'integer',
479
-		'context'     => array( 'view', 'edit' ),
480
-		'readonly'    => true,
481
-	),
482
-
483
-	'submission_id'        => array(
484
-		'description' => __( 'A uniques ID of the submission details used to pay for this invoice.', 'invoicing' ),
485
-		'type'        => 'string',
486
-		'context'     => array( 'view', 'edit' ),
487
-		'readonly'    => true,
488
-	),
489
-
490
-	'customer_id'          => array(
491
-		'description' => __( 'The customer id.', 'invoicing' ),
492
-		'type'        => 'integer',
493
-		'context'     => array( 'view', 'edit', 'embed' ),
494
-	),
495
-
496
-	'customer_ip'          => array(
497
-		'description' => __( "The customer's ip address.", 'invoicing' ),
498
-		'type'        => 'string',
499
-		'format'      => 'ip',
500
-		'context'     => array( 'view', 'edit', 'embed' ),
501
-	),
502
-
503
-	'first_name'           => array(
504
-		'description' => __( "The customer's first name.", 'invoicing' ),
505
-		'type'        => 'string',
506
-		'context'     => array( 'view', 'edit', 'embed' ),
507
-	),
508
-
509
-	'last_name'            => array(
510
-		'description' => __( "The customer's last name.", 'invoicing' ),
511
-		'type'        => 'string',
512
-		'context'     => array( 'view', 'edit', 'embed' ),
513
-	),
514
-
515
-	'full_name'            => array(
516
-		'description' => __( "The customer's full name.", 'invoicing' ),
517
-		'type'        => 'string',
518
-		'context'     => array( 'view', 'edit', 'embed' ),
519
-		'readonly'    => true,
520
-	),
521
-
522
-	'phone_number'         => array(
523
-		'description' => __( "The customer's phone number.", 'invoicing' ),
524
-		'type'        => 'string',
525
-		'context'     => array( 'view', 'edit', 'embed' ),
526
-	),
527
-
528
-	'email_address'        => array(
529
-		'description' => __( "The customer's email address.", 'invoicing' ),
530
-		'type'        => 'string',
531
-		'context'     => array( 'view', 'edit', 'embed' ),
532
-		'readonly'    => true,
533
-	),
534
-
535
-	'customer_country'     => array(
536
-		'description' => __( "The customer's country.", 'invoicing' ),
537
-		'type'        => 'string',
538
-		'context'     => array( 'view', 'edit', 'embed' ),
539
-		'default'     => wpinv_get_default_country(),
540
-	),
541
-
542
-	'customer_state'       => array(
543
-		'description' => __( "The customer's state.", 'invoicing' ),
544
-		'type'        => 'string',
545
-		'context'     => array( 'view', 'edit', 'embed' ),
546
-	),
547
-
548
-	'customer_city'        => array(
549
-		'description' => __( "The customer's city.", 'invoicing' ),
550
-		'type'        => 'string',
551
-		'context'     => array( 'view', 'edit', 'embed' ),
552
-	),
553
-
554
-	'customer_zip'         => array(
555
-		'description' => __( "The customer's zip/postal code.", 'invoicing' ),
556
-		'type'        => 'string',
557
-		'context'     => array( 'view', 'edit', 'embed' ),
558
-	),
559
-
560
-	'customer_company'     => array(
561
-		'description' => __( "The customer's company name.", 'invoicing' ),
562
-		'type'        => 'string',
563
-		'context'     => array( 'view', 'edit', 'embed' ),
564
-	),
565
-
566
-	'vat_number'           => array(
567
-		'description' => __( "The customer's VAT number.", 'invoicing' ),
568
-		'type'        => 'string',
569
-		'context'     => array( 'view', 'edit', 'embed' ),
570
-	),
571
-
572
-	'vat_rate'             => array(
573
-		'description' => __( "The customer's VAT rate.", 'invoicing' ),
574
-		'type'        => 'number',
575
-		'context'     => array( 'view', 'edit', 'embed' ),
576
-		'readonly'    => true,
577
-	),
578
-
579
-	'customer_address'     => array(
580
-		'description' => __( "The customer's address.", 'invoicing' ),
581
-		'type'        => 'string',
582
-		'context'     => array( 'view', 'edit', 'embed' ),
583
-	),
584
-
585
-	'address_confirmed'    => array(
586
-		'description' => __( "Whether or not the customer's address is confirmed.", 'invoicing' ),
587
-		'type'        => 'boolean',
588
-		'context'     => array( 'view', 'edit', 'embed' ),
589
-	),
590
-
591
-	'meta_data'            => array(
592
-		'description' => __( 'Invoice meta data.', 'invoicing' ),
593
-		'type'        => 'array',
594
-		'context'     => array( 'view', 'edit', 'embed' ),
595
-		'items'       => array(
596
-			'type'       => 'object',
597
-			'properties' => array(
598
-				'id'    => array(
599
-					'description' => __( 'Meta ID.', 'invoicing' ),
600
-					'type'        => 'string',
601
-					'context'     => array( 'view', 'edit', 'embed' ),
602
-				),
603
-				'key'   => array(
604
-					'description' => __( 'Meta key.', 'invoicing' ),
605
-					'type'        => 'string',
606
-					'context'     => array( 'view', 'edit', 'embed' ),
607
-				),
608
-				'value' => array(
609
-					'description' => __( 'Meta Value.', 'invoicing' ),
610
-					'type'        => array( 'string', 'array', 'object', 'integer', 'null' ),
611
-					'context'     => array( 'view', 'edit', 'embed' ),
612
-				),
613
-			),
614
-		),
615
-	),
616
-
617
-	'view_url'             => array(
618
-		'description' => __( 'URL to the invoice.', 'invoicing' ),
619
-		'type'        => 'string',
620
-		'format'      => 'uri',
621
-		'context'     => array( 'view', 'edit', 'embed' ),
622
-		'readonly'    => true,
623
-	),
624
-
625
-	'checkout_payment_url' => array(
626
-		'description' => __( 'URL to the invoice checkout page.', 'invoicing' ),
627
-		'type'        => 'string',
628
-		'format'      => 'uri',
629
-		'context'     => array( 'view', 'edit', 'embed' ),
630
-		'readonly'    => true,
631
-	),
632
-
633
-	'receipt_url'          => array(
634
-		'description' => __( 'URL to the invoice receipt page.', 'invoicing' ),
635
-		'type'        => 'string',
636
-		'format'      => 'uri',
637
-		'context'     => array( 'view', 'edit', 'embed' ),
638
-		'readonly'    => true,
639
-	),
16
+    'id'                   => array(
17
+        'description' => __( 'Unique identifier for the invoice.', 'invoicing' ),
18
+        'type'        => 'integer',
19
+        'context'     => array( 'view', 'edit', 'embed' ),
20
+        'readonly'    => true,
21
+    ),
22
+
23
+    'parent_id'            => array(
24
+        'description' => __( 'Parent invoice ID.', 'invoicing' ),
25
+        'type'        => 'integer',
26
+        'minimum'     => 0,
27
+        'default'     => 0,
28
+        'context'     => array( 'view', 'edit' ),
29
+    ),
30
+
31
+    'key'                  => array(
32
+        'description' => __( 'A unique key for the invoice.', 'invoicing' ),
33
+        'type'        => 'string',
34
+        'context'     => array( 'view', 'edit' ),
35
+        'readonly'    => true,
36
+    ),
37
+
38
+    'number'               => array(
39
+        'description' => __( 'A unique number for the invoice.', 'invoicing' ),
40
+        'type'        => 'string',
41
+        'context'     => array( 'view', 'edit', 'embed' ),
42
+    ),
43
+
44
+    'type'                 => array(
45
+        'description' => __( 'Get the invoice type (e.g invoice, quote etc).', 'invoicing' ),
46
+        'type'        => 'string',
47
+        'context'     => array( 'view', 'edit', 'embed' ),
48
+        'readonly'    => true,
49
+    ),
50
+
51
+    'post_type'            => array(
52
+        'description' => __( 'Get the invoice post type (e.g wpi_invoice, wpi_quote etc).', 'invoicing' ),
53
+        'type'        => 'string',
54
+        'context'     => array( 'view', 'edit', 'embed' ),
55
+        'readonly'    => true,
56
+    ),
57
+
58
+    'version'              => array(
59
+        'description' => __( 'Version of GetPaid/Invoicing which last updated the invoice.', 'invoicing' ),
60
+        'type'        => 'integer',
61
+        'context'     => array( 'view', 'edit' ),
62
+        'readonly'    => true,
63
+    ),
64
+
65
+    'template'             => array(
66
+        'description' => __( 'The invoice template.', 'invoicing' ),
67
+        'type'        => 'string',
68
+        'default'     => 'quantity',
69
+        'enum'        => array( 'quantity', 'hours', 'amount' ),
70
+        'context'     => array( 'view', 'edit', 'embed' ),
71
+    ),
72
+
73
+    'status'               => array(
74
+        'description' => __( 'Invoice status.', 'invoicing' ),
75
+        'type'        => 'string',
76
+        'default'     => 'wpi-pending',
77
+        'enum'        => array_keys( wpinv_get_invoice_statuses( true ) ),
78
+        'context'     => array( 'view', 'edit', 'embed' ),
79
+    ),
80
+
81
+    'status_nicename'      => array(
82
+        'description' => __( 'A human readable name for the invoice status.', 'invoicing' ),
83
+        'type'        => 'string',
84
+        'context'     => array( 'view', 'edit', 'embed' ),
85
+        'readonly'    => true,
86
+    ),
87
+
88
+    'currency'             => array(
89
+        'description' => __( 'The invoice currency in ISO format.', 'invoicing' ),
90
+        'type'        => 'string',
91
+        'default'     => wpinv_get_currency(),
92
+        'enum'        => array_keys( wpinv_get_currencies() ),
93
+        'context'     => array( 'view', 'edit', 'embed' ),
94
+    ),
95
+
96
+    'date_created'         => array(
97
+        'description' => __( "The date the invoice was created, in the site's timezone.", 'invoicing' ),
98
+        'type'        => 'string',
99
+        'context'     => array( 'view', 'edit', 'embed' ),
100
+    ),
101
+
102
+    'date_created_gmt'     => array(
103
+        'description' => __( 'The GMT date the invoice was created.', 'invoicing' ),
104
+        'type'        => 'string',
105
+        'context'     => array( 'view', 'edit', 'embed' ),
106
+        'readonly'    => true,
107
+    ),
108
+
109
+    'date_modified'        => array(
110
+        'description' => __( "The date the invoice was last modified, in the site's timezone.", 'invoicing' ),
111
+        'type'        => 'string',
112
+        'context'     => array( 'view', 'edit', 'embed' ),
113
+        'readonly'    => true,
114
+    ),
115
+
116
+    'date_modified_gmt'    => array(
117
+        'description' => __( 'The GMT date the invoice was last modified.', 'invoicing' ),
118
+        'type'        => 'string',
119
+        'context'     => array( 'view', 'edit', 'embed' ),
120
+        'readonly'    => true,
121
+    ),
122
+
123
+    'due_date'             => array(
124
+        'description' => __( "The invoice's due date, in the site's timezone.", 'invoicing' ),
125
+        'type'        => 'string',
126
+        'context'     => array( 'view', 'edit', 'embed' ),
127
+    ),
128
+
129
+    'due_date_gmt'         => array(
130
+        'description' => __( 'The GMT date the invoice is/was due.', 'invoicing' ),
131
+        'type'        => 'string',
132
+        'context'     => array( 'view', 'edit', 'embed' ),
133
+        'readonly'    => true,
134
+    ),
135
+
136
+    'completed_date'       => array(
137
+        'description' => __( "The date the invoice was paid, in the site's timezone.", 'invoicing' ),
138
+        'type'        => 'string',
139
+        'context'     => array( 'view', 'edit', 'embed' ),
140
+        'readonly'    => true,
141
+    ),
142
+
143
+    'completed_date_gmt'   => array(
144
+        'description' => __( 'The GMT date the invoice was paid.', 'invoicing' ),
145
+        'type'        => 'string',
146
+        'context'     => array( 'view', 'edit', 'embed' ),
147
+        'readonly'    => true,
148
+    ),
149
+
150
+    'total_discount'       => array(
151
+        'description' => __( 'Total discount amount for the invoice.', 'invoicing' ),
152
+        'type'        => 'number',
153
+        'context'     => array( 'view', 'edit', 'embed' ),
154
+        'readonly'    => true,
155
+    ),
156
+
157
+    'total_tax'            => array(
158
+        'description' => __( 'Total tax amount for the invoice.', 'invoicing' ),
159
+        'type'        => 'number',
160
+        'context'     => array( 'view', 'edit', 'embed' ),
161
+        'readonly'    => true,
162
+    ),
163
+
164
+    'total_fees'           => array(
165
+        'description' => __( 'Total fees amount for the invoice.', 'invoicing' ),
166
+        'type'        => 'number',
167
+        'context'     => array( 'view', 'edit', 'embed' ),
168
+        'readonly'    => true,
169
+    ),
170
+
171
+    'subtotal'             => array(
172
+        'description' => __( 'Invoice subtotal.', 'invoicing' ),
173
+        'type'        => 'number',
174
+        'context'     => array( 'view', 'edit', 'embed' ),
175
+        'readonly'    => true,
176
+    ),
177
+
178
+    'total'                => array(
179
+        'description' => __( 'Grand total.', 'invoicing' ),
180
+        'type'        => 'number',
181
+        'context'     => array( 'view', 'edit', 'embed' ),
182
+        'readonly'    => true,
183
+    ),
184
+
185
+    'initial_total'        => array(
186
+        'description' => __( 'Initial total (for recurring invoices).', 'invoicing' ),
187
+        'type'        => 'number',
188
+        'context'     => array( 'view', 'edit', 'embed' ),
189
+        'readonly'    => true,
190
+    ),
191
+
192
+    'recurring_total'      => array(
193
+        'description' => __( 'Recurring total (for recurring invoices).', 'invoicing' ),
194
+        'type'        => 'number',
195
+        'context'     => array( 'view', 'edit', 'embed' ),
196
+        'readonly'    => true,
197
+    ),
198
+
199
+    'totals'               => array(
200
+        'description' => __( 'Invoice totals.', 'invoicing' ),
201
+        'type'        => 'object',
202
+        'context'     => array( 'view', 'edit', 'embed' ),
203
+        'readonly'    => true,
204
+    ),
205
+
206
+    'fees'                 => array(
207
+        'description' => __( 'Invoice fees (Name => properties).', 'invoicing' ),
208
+        'type'        => 'object',
209
+        'context'     => array( 'view', 'edit', 'embed' ),
210
+        'items'       => array(
211
+            'type'       => 'object',
212
+            'required'   => array( 'amount' ),
213
+            'properties' => array(
214
+                'amount'    => array(
215
+                    'description' => __( 'Fee amount.', 'invoicing' ),
216
+                    'type'        => 'string',
217
+                    'context'     => array( 'view', 'edit', 'embed' ),
218
+                ),
219
+                'recurring' => array(
220
+                    'description' => __( 'Whether this is a recurring or one-time fee.', 'invoicing' ),
221
+                    'type'        => array( 'boolean', 'integer' ),
222
+                    'context'     => array( 'view', 'edit', 'embed' ),
223
+                ),
224
+            ),
225
+        ),
226
+    ),
227
+
228
+    'discounts'            => array(
229
+        'description' => __( 'Invoice discounts (Name => properties).', 'invoicing' ),
230
+        'type'        => 'object',
231
+        'context'     => array( 'view', 'edit', 'embed' ),
232
+        'items'       => array(
233
+            'type'       => 'object',
234
+            'required'   => array( 'amount' ),
235
+            'properties' => array(
236
+                'amount'    => array(
237
+                    'description' => __( 'Fee amount.', 'invoicing' ),
238
+                    'type'        => 'string',
239
+                    'context'     => array( 'view', 'edit', 'embed' ),
240
+                ),
241
+                'recurring' => array(
242
+                    'description' => __( 'Whether this is a recurring or one-time discount.', 'invoicing' ),
243
+                    'type'        => array( 'boolean', 'integer' ),
244
+                    'context'     => array( 'view', 'edit', 'embed' ),
245
+                ),
246
+            ),
247
+        ),
248
+    ),
249
+
250
+    'taxes'                => array(
251
+        'description' => __( 'Invoice taxes (Name => properties).', 'invoicing' ),
252
+        'type'        => 'object',
253
+        'context'     => array( 'view', 'edit', 'embed' ),
254
+        'items'       => array(
255
+            'type'       => 'object',
256
+            'required'   => array( 'amount' ),
257
+            'properties' => array(
258
+                'amount'    => array(
259
+                    'description' => __( 'Fee amount.', 'invoicing' ),
260
+                    'type'        => 'string',
261
+                    'context'     => array( 'view', 'edit', 'embed' ),
262
+                ),
263
+                'recurring' => array(
264
+                    'description' => __( 'Whether this is a recurring or one-time tax.', 'invoicing' ),
265
+                    'type'        => array( 'boolean', 'integer' ),
266
+                    'context'     => array( 'view', 'edit', 'embed' ),
267
+                ),
268
+            ),
269
+        ),
270
+    ),
271
+
272
+    'items'                => array(
273
+        'description' => __( 'Invoice items.', 'invoicing' ),
274
+        'type'        => 'array',
275
+        'context'     => array( 'view', 'edit', 'embed' ),
276
+        'items'       => array(
277
+            'type'       => 'object',
278
+            'required'   => array( 'item_id' ),
279
+            'properties' => array(
280
+                'item_id'          => array(
281
+                    'description' => __( 'Item ID.', 'invoicing' ),
282
+                    'type'        => 'integer',
283
+                    'context'     => array( 'view', 'edit', 'embed' ),
284
+                ),
285
+                'item_name'        => array(
286
+                    'description' => __( 'Item Name.', 'invoicing' ),
287
+                    'type'        => 'string',
288
+                    'context'     => array( 'view', 'edit', 'embed' ),
289
+                ),
290
+                'item_description' => array(
291
+                    'description' => __( 'Item Description.', 'invoicing' ),
292
+                    'type'        => 'string',
293
+                    'context'     => array( 'view', 'edit', 'embed' ),
294
+                ),
295
+                'item_price'       => array(
296
+                    'description' => __( 'Item Price.', 'invoicing' ),
297
+                    'type'        => 'number',
298
+                    'context'     => array( 'view', 'edit', 'embed' ),
299
+                ),
300
+                'quantity'         => array(
301
+                    'description' => __( 'Item Quantity.', 'invoicing' ),
302
+                    'type'        => 'number',
303
+                    'context'     => array( 'view', 'edit', 'embed' ),
304
+                ),
305
+                'subtotal'         => array(
306
+                    'description' => __( 'Item Subtotal.', 'invoicing' ),
307
+                    'type'        => 'number',
308
+                    'context'     => array( 'view', 'edit', 'embed' ),
309
+                    'readonly'    => true,
310
+                ),
311
+                'meta'             => array(
312
+                    'description' => __( 'Item Meta.', 'invoicing' ),
313
+                    'type'        => 'object',
314
+                    'context'     => array( 'view', 'edit', 'embed' ),
315
+                ),
316
+            ),
317
+        ),
318
+    ),
319
+
320
+    'mode'                 => array(
321
+        'description' => __( 'The invoice transaction mode.', 'invoicing' ),
322
+        'type'        => 'string',
323
+        'context'     => array( 'view', 'edit', 'embed' ),
324
+        'enum'        => array( 'live', 'test' ),
325
+        'readonly'    => true,
326
+    ),
327
+
328
+    'discount_code'        => array(
329
+        'description' => __( 'The discount code used on this invoice.', 'invoicing' ),
330
+        'type'        => 'string',
331
+        'context'     => array( 'view', 'edit', 'embed' ),
332
+    ),
333
+
334
+    'gateway'              => array(
335
+        'description' => __( 'The gateway used to pay this invoice.', 'invoicing' ),
336
+        'type'        => 'string',
337
+        'context'     => array( 'view', 'edit', 'embed' ),
338
+    ),
339
+
340
+    'gateway_title'        => array(
341
+        'description' => __( 'The title of the gateway used to pay this invoice.', 'invoicing' ),
342
+        'type'        => 'string',
343
+        'context'     => array( 'view', 'edit', 'embed' ),
344
+        'readonly'    => true,
345
+    ),
346
+
347
+    'transaction_id'       => array(
348
+        'description' => __( 'The transaction id for this invoice.', 'invoicing' ),
349
+        'type'        => 'string',
350
+        'context'     => array( 'view', 'edit', 'embed' ),
351
+    ),
352
+
353
+    'disable_taxes'        => array(
354
+        'description' => __( 'Whether or not taxes should be disabled for this invoice.', 'invoicing' ),
355
+        'type'        => 'boolean ',
356
+        'context'     => array( 'view', 'edit', 'embed' ),
357
+    ),
358
+
359
+    'is_viewed'            => array(
360
+        'description' => __( 'Whether or not this invoice has been viewed by the user.', 'invoicing' ),
361
+        'type'        => 'boolean ',
362
+        'context'     => array( 'view', 'edit', 'embed' ),
363
+        'readonly'    => true,
364
+    ),
365
+
366
+    'email_cc'             => array(
367
+        'description' => __( 'A comma separated list of other emails that should receive communications for this invoice.', 'invoicing' ),
368
+        'type'        => 'string ',
369
+        'context'     => array( 'view', 'edit' ),
370
+    ),
371
+
372
+    'subscription_id'      => array(
373
+        'description' => __( 'The ID of the subscription associated with this invoice.', 'invoicing' ),
374
+        'type'        => 'string ',
375
+        'context'     => array( 'view', 'edit', 'embed' ),
376
+        'readonly'    => true,
377
+    ),
378
+
379
+    'subscription_name'    => array(
380
+        'description' => __( 'The name of the subscription associated with this invoice.', 'invoicing' ),
381
+        'type'        => 'string ',
382
+        'context'     => array( 'view', 'edit', 'embed' ),
383
+        'readonly'    => true,
384
+    ),
385
+
386
+    'subscription_name'    => array(
387
+        'description' => __( 'The name of the subscription associated with this invoice.', 'invoicing' ),
388
+        'type'        => 'string ',
389
+        'context'     => array( 'view', 'edit', 'embed' ),
390
+        'readonly'    => true,
391
+    ),
392
+
393
+    'is_parent'            => array(
394
+        'description' => __( 'Whether or not this is a parent invoice.', 'invoicing' ),
395
+        'type'        => 'boolean',
396
+        'context'     => array( 'view', 'edit', 'embed' ),
397
+        'readonly'    => true,
398
+    ),
399
+
400
+    'is_renewal'           => array(
401
+        'description' => __( 'Whether or not this is a renewal invoice.', 'invoicing' ),
402
+        'type'        => 'boolean',
403
+        'context'     => array( 'view', 'edit', 'embed' ),
404
+        'readonly'    => true,
405
+    ),
406
+
407
+    'is_recurring'         => array(
408
+        'description' => __( 'Whether or not this is a recurring invoice.', 'invoicing' ),
409
+        'type'        => 'boolean',
410
+        'context'     => array( 'view', 'edit', 'embed' ),
411
+        'readonly'    => true,
412
+    ),
413
+
414
+    'is_free'              => array(
415
+        'description' => __( 'Whether or not this invoice is free.', 'invoicing' ),
416
+        'type'        => 'boolean',
417
+        'context'     => array( 'view', 'edit', 'embed' ),
418
+        'readonly'    => true,
419
+    ),
420
+
421
+    'is_paid'              => array(
422
+        'description' => __( 'Whether or not this invoice has been paid.', 'invoicing' ),
423
+        'type'        => 'boolean',
424
+        'context'     => array( 'view', 'edit', 'embed' ),
425
+        'readonly'    => true,
426
+    ),
427
+
428
+    'needs_payment'        => array(
429
+        'description' => __( 'Whether or not this invoice needs payment.', 'invoicing' ),
430
+        'type'        => 'boolean',
431
+        'context'     => array( 'view', 'edit', 'embed' ),
432
+        'readonly'    => true,
433
+    ),
434
+
435
+    'is_refunded'          => array(
436
+        'description' => __( 'Whether or not this invoice was refunded.', 'invoicing' ),
437
+        'type'        => 'boolean',
438
+        'context'     => array( 'view', 'edit', 'embed' ),
439
+        'readonly'    => true,
440
+    ),
441
+
442
+    'is_due'               => array(
443
+        'description' => __( 'Whether or not this invoice is due.', 'invoicing' ),
444
+        'type'        => 'boolean',
445
+        'context'     => array( 'view', 'edit', 'embed' ),
446
+        'readonly'    => true,
447
+    ),
448
+
449
+    'is_held'              => array(
450
+        'description' => __( 'Whether or not this invoice has been held for payment confirmation.', 'invoicing' ),
451
+        'type'        => 'boolean',
452
+        'context'     => array( 'view', 'edit', 'embed' ),
453
+        'readonly'    => true,
454
+    ),
455
+
456
+    'is_draft'             => array(
457
+        'description' => __( 'Whether or not this invoice is marked as draft (cannot be viewed on the frontend).', 'invoicing' ),
458
+        'type'        => 'boolean',
459
+        'context'     => array( 'view', 'edit', 'embed' ),
460
+        'readonly'    => true,
461
+    ),
462
+
463
+    'path'                 => array(
464
+        'description' => __( 'The invoice path/slug/name.', 'invoicing' ),
465
+        'type'        => 'string',
466
+        'context'     => array( 'view', 'edit', 'embed' ),
467
+        'readonly'    => true,
468
+    ),
469
+
470
+    'description'          => array(
471
+        'description' => __( 'The invoice description.', 'invoicing' ),
472
+        'type'        => 'string',
473
+        'context'     => array( 'view', 'edit', 'embed' ),
474
+    ),
475
+
476
+    'payment_form'         => array(
477
+        'description' => __( 'The id of the payment form used to pay for this invoice.', 'invoicing' ),
478
+        'type'        => 'integer',
479
+        'context'     => array( 'view', 'edit' ),
480
+        'readonly'    => true,
481
+    ),
482
+
483
+    'submission_id'        => array(
484
+        'description' => __( 'A uniques ID of the submission details used to pay for this invoice.', 'invoicing' ),
485
+        'type'        => 'string',
486
+        'context'     => array( 'view', 'edit' ),
487
+        'readonly'    => true,
488
+    ),
489
+
490
+    'customer_id'          => array(
491
+        'description' => __( 'The customer id.', 'invoicing' ),
492
+        'type'        => 'integer',
493
+        'context'     => array( 'view', 'edit', 'embed' ),
494
+    ),
495
+
496
+    'customer_ip'          => array(
497
+        'description' => __( "The customer's ip address.", 'invoicing' ),
498
+        'type'        => 'string',
499
+        'format'      => 'ip',
500
+        'context'     => array( 'view', 'edit', 'embed' ),
501
+    ),
502
+
503
+    'first_name'           => array(
504
+        'description' => __( "The customer's first name.", 'invoicing' ),
505
+        'type'        => 'string',
506
+        'context'     => array( 'view', 'edit', 'embed' ),
507
+    ),
508
+
509
+    'last_name'            => array(
510
+        'description' => __( "The customer's last name.", 'invoicing' ),
511
+        'type'        => 'string',
512
+        'context'     => array( 'view', 'edit', 'embed' ),
513
+    ),
514
+
515
+    'full_name'            => array(
516
+        'description' => __( "The customer's full name.", 'invoicing' ),
517
+        'type'        => 'string',
518
+        'context'     => array( 'view', 'edit', 'embed' ),
519
+        'readonly'    => true,
520
+    ),
521
+
522
+    'phone_number'         => array(
523
+        'description' => __( "The customer's phone number.", 'invoicing' ),
524
+        'type'        => 'string',
525
+        'context'     => array( 'view', 'edit', 'embed' ),
526
+    ),
527
+
528
+    'email_address'        => array(
529
+        'description' => __( "The customer's email address.", 'invoicing' ),
530
+        'type'        => 'string',
531
+        'context'     => array( 'view', 'edit', 'embed' ),
532
+        'readonly'    => true,
533
+    ),
534
+
535
+    'customer_country'     => array(
536
+        'description' => __( "The customer's country.", 'invoicing' ),
537
+        'type'        => 'string',
538
+        'context'     => array( 'view', 'edit', 'embed' ),
539
+        'default'     => wpinv_get_default_country(),
540
+    ),
541
+
542
+    'customer_state'       => array(
543
+        'description' => __( "The customer's state.", 'invoicing' ),
544
+        'type'        => 'string',
545
+        'context'     => array( 'view', 'edit', 'embed' ),
546
+    ),
547
+
548
+    'customer_city'        => array(
549
+        'description' => __( "The customer's city.", 'invoicing' ),
550
+        'type'        => 'string',
551
+        'context'     => array( 'view', 'edit', 'embed' ),
552
+    ),
553
+
554
+    'customer_zip'         => array(
555
+        'description' => __( "The customer's zip/postal code.", 'invoicing' ),
556
+        'type'        => 'string',
557
+        'context'     => array( 'view', 'edit', 'embed' ),
558
+    ),
559
+
560
+    'customer_company'     => array(
561
+        'description' => __( "The customer's company name.", 'invoicing' ),
562
+        'type'        => 'string',
563
+        'context'     => array( 'view', 'edit', 'embed' ),
564
+    ),
565
+
566
+    'vat_number'           => array(
567
+        'description' => __( "The customer's VAT number.", 'invoicing' ),
568
+        'type'        => 'string',
569
+        'context'     => array( 'view', 'edit', 'embed' ),
570
+    ),
571
+
572
+    'vat_rate'             => array(
573
+        'description' => __( "The customer's VAT rate.", 'invoicing' ),
574
+        'type'        => 'number',
575
+        'context'     => array( 'view', 'edit', 'embed' ),
576
+        'readonly'    => true,
577
+    ),
578
+
579
+    'customer_address'     => array(
580
+        'description' => __( "The customer's address.", 'invoicing' ),
581
+        'type'        => 'string',
582
+        'context'     => array( 'view', 'edit', 'embed' ),
583
+    ),
584
+
585
+    'address_confirmed'    => array(
586
+        'description' => __( "Whether or not the customer's address is confirmed.", 'invoicing' ),
587
+        'type'        => 'boolean',
588
+        'context'     => array( 'view', 'edit', 'embed' ),
589
+    ),
590
+
591
+    'meta_data'            => array(
592
+        'description' => __( 'Invoice meta data.', 'invoicing' ),
593
+        'type'        => 'array',
594
+        'context'     => array( 'view', 'edit', 'embed' ),
595
+        'items'       => array(
596
+            'type'       => 'object',
597
+            'properties' => array(
598
+                'id'    => array(
599
+                    'description' => __( 'Meta ID.', 'invoicing' ),
600
+                    'type'        => 'string',
601
+                    'context'     => array( 'view', 'edit', 'embed' ),
602
+                ),
603
+                'key'   => array(
604
+                    'description' => __( 'Meta key.', 'invoicing' ),
605
+                    'type'        => 'string',
606
+                    'context'     => array( 'view', 'edit', 'embed' ),
607
+                ),
608
+                'value' => array(
609
+                    'description' => __( 'Meta Value.', 'invoicing' ),
610
+                    'type'        => array( 'string', 'array', 'object', 'integer', 'null' ),
611
+                    'context'     => array( 'view', 'edit', 'embed' ),
612
+                ),
613
+            ),
614
+        ),
615
+    ),
616
+
617
+    'view_url'             => array(
618
+        'description' => __( 'URL to the invoice.', 'invoicing' ),
619
+        'type'        => 'string',
620
+        'format'      => 'uri',
621
+        'context'     => array( 'view', 'edit', 'embed' ),
622
+        'readonly'    => true,
623
+    ),
624
+
625
+    'checkout_payment_url' => array(
626
+        'description' => __( 'URL to the invoice checkout page.', 'invoicing' ),
627
+        'type'        => 'string',
628
+        'format'      => 'uri',
629
+        'context'     => array( 'view', 'edit', 'embed' ),
630
+        'readonly'    => true,
631
+    ),
632
+
633
+    'receipt_url'          => array(
634
+        'description' => __( 'URL to the invoice receipt page.', 'invoicing' ),
635
+        'type'        => 'string',
636
+        'format'      => 'uri',
637
+        'context'     => array( 'view', 'edit', 'embed' ),
638
+        'readonly'    => true,
639
+    ),
640 640
 
641 641
 );
Please login to merge, or discard this patch.