PluginProbe ʕ •ᴥ•ʔ
SureCart – Ecommerce Made Easy For Selling Physical Products, Digital Downloads, Subscriptions, Donations, & Payments / 2.6.1
SureCart – Ecommerce Made Easy For Selling Physical Products, Digital Downloads, Subscriptions, Donations, & Payments v2.6.1
4.4.2 4.4.1 4.4.0 4.3.3 4.3.2 4.3.1 4.3.0 4.2.3 4.2.2 4.2.1 1.0.3 1.0.4 1.0.5 1.0.6 1.1.0 1.1.1 1.1.10 1.1.11 1.1.12 1.1.13 1.1.14 1.1.15 1.1.16 1.1.17 1.1.18 1.1.19 1.1.2 1.1.3 1.1.4 1.1.5 1.1.6 1.1.7 1.1.8 1.1.9 1.10.0 1.10.1 1.10.2 1.10.3 1.10.4 1.11.0 1.11.1 1.11.2 1.2.0 1.2.1 1.2.2 1.2.3 1.2.4 1.2.5 1.3.0 1.3.1 1.3.2 1.3.3 1.3.4 1.4.0 1.4.1 1.4.2 1.5.0 1.5.1 1.5.2 1.5.3 1.5.4 1.5.5 1.5.6 1.5.7 1.5.8 1.6.0 1.6.1 1.6.2 1.6.3 1.6.4 1.7.0 1.7.1 1.7.2 1.8.0 1.8.1 1.8.2 1.8.3 1.8.4 1.8.5 1.9.0 1.9.1 1.9.2 1.9.3 1.9.4 1.9.5 2.0.0 2.0.1 2.1.0 2.1.1 2.1.2 2.1.3 2.1.4 2.10.0 2.10.1 2.11.0 2.11.1 2.11.2 2.11.3 2.11.4 2.12.0 2.13.0 2.14.0 2.14.1 2.15.0 2.15.1 2.16.0 2.16.1 2.16.2 2.16.3 2.17.0 2.17.1 2.17.2 2.18.0 2.19.0 2.19.2 2.19.3 2.19.4 2.2.0 2.2.1 2.20.0 2.20.1 2.20.2 2.20.3 2.20.4 2.20.5 2.20.6 2.21.0 2.22.0 2.22.1 2.23.0 2.24.0 2.25.0 2.25.1 2.25.2 2.26.0 2.27.0 2.27.1 2.28.0 2.29.0 2.29.1 2.29.2 2.29.3 2.29.4 2.3.0 2.3.1 2.30.0 2.31.0 2.31.1 2.31.2 2.31.3 2.4.0 2.4.1 2.4.2 2.4.3 2.4.4 2.40.0 2.40.1 2.5.0 2.5.1 2.5.2 2.6.0 2.6.1 2.6.2 2.7.0 2.7.1 2.7.2 2.7.3 2.7.4 2.7.5 2.8.0 2.8.1 2.8.2 2.8.3 2.8.4 2.9.0 3.0.0 3.0.0-RC1 3.0.0-RC2 3.0.0-beta1 3.0.0-beta2 3.0.1 3.0.2 3.0.3 3.0.4 3.0.5 3.1.0 3.1.1 3.1.2 3.1.3 3.1.4 3.1.5 3.1.6 3.10.0 3.10.1 3.11.0 3.12.0 3.13.0 3.13.1 3.13.2 3.13.3 3.13.4 3.14.0 3.15.0 3.15.1 3.15.2 3.15.3 3.15.4 3.15.5 3.16.0 3.16.1 3.16.2 3.16.3 3.16.4 3.16.5 3.16.6 3.16.7 3.16.8 3.17.0 3.17.1 3.17.2 3.17.3 3.17.4 3.17.5 3.17.6 3.18.0 3.19.0 3.19.1 3.19.2 3.2.0 3.2.1 3.2.2 3.20.0 3.20.1 3.3.0 3.3.1 3.4.0 3.4.1 3.4.2 3.4.3 3.5.0 3.5.1 3.5.2 3.5.3 3.6.0 3.6.1 3.6.2 3.7.0 3.7.1 3.7.2 3.7.3 3.8.0 3.8.1 3.8.2 3.8.3 3.8.4 3.8.5 3.9.0 4.0.0 4.0.1 4.0.2 4.0.3 trunk 4.1.0 0.2.19.1 4.1.1 1.0.0 4.2.0 1.0.1 1.0.2
surecart / app / src / Controllers / Admin / Invoices / InvoicesListTable.php
surecart / app / src / Controllers / Admin / Invoices Last commit date
InvoiceScriptsController.php 3 years ago InvoicesListTable.php 3 years ago InvoicesViewController.php 3 years ago
InvoicesListTable.php
233 lines
1 <?php
2
3 namespace SureCart\Controllers\Admin\Invoices;
4
5 use SureCart\Support\Currency;
6 use SureCart\Support\TimeDate;
7 use SureCart\Controllers\Admin\Tables\ListTable;
8 use SureCart\Models\Invoice;
9
10 /**
11 * Create a new table class that will extend the WP_List_Table
12 */
13 class InvoicesListTable extends ListTable {
14 public $checkbox = true;
15
16 /**
17 * Prepare the items for the table to process
18 *
19 * @return Void
20 */
21 public function prepare_items() {
22 $columns = $this->get_columns();
23 $hidden = $this->get_hidden_columns();
24 $sortable = $this->get_sortable_columns();
25
26 $this->_column_headers = array( $columns, $hidden, $sortable );
27
28 $query = $this->table_data();
29 if ( is_wp_error( $query ) ) {
30 $this->items = [];
31 return;
32 }
33
34 $this->set_pagination_args(
35 [
36 'total_items' => $query->pagination->count,
37 'per_page' => $this->get_items_per_page( 'orders' ),
38 ]
39 );
40
41 $this->items = $query->data;
42 }
43
44 public function search() {
45 ?>
46 <form class="search-form"
47 method="get">
48 <?php $this->search_box( __( 'Search Invoices', 'surecart' ), 'order' ); ?>
49 <input type="hidden"
50 name="id"
51 value="1" />
52 </form>
53 <?php
54 }
55
56 /**
57 * Override the parent columns method. Defines the columns to use in your listing table
58 *
59 * @return Array
60 */
61 public function get_columns() {
62 return [
63 'invoice' => __( 'Invoice', 'surecart' ),
64 'date' => __( 'Date', 'surecart' ),
65 'status' => __( 'Status', 'surecart' ),
66 'method' => __( 'Method', 'surecart' ),
67 'total' => __( 'Total', 'surecart' ),
68 'mode' => '',
69 ];
70 }
71
72 /**
73 * Displays the checkbox column.
74 *
75 * @param Product $product The product model.
76 */
77 public function column_cb( $product ) {
78 ?>
79 <label class="screen-reader-text" for="cb-select-<?php echo esc_attr( $product['id'] ); ?>"><?php _e( 'Select comment', 'surecart' ); ?></label>
80 <input id="cb-select-<?php echo esc_attr( $product['id'] ); ?>" type="checkbox" name="delete_comments[]" value="<?php echo esc_attr( $product['id'] ); ?>" />
81 <?php
82 }
83
84 /**
85 * Show the payment method for the invoice.
86 *
87 * @param \SureCart\Models\Invoice $invoice Invoice model.
88 *
89 * @return string
90 */
91 public function column_method( $invoice ) {
92 if ( ! empty( $invoice->payment_intent->processor_type ) && 'paypal' === $invoice->payment_intent->processor_type ) {
93 return '<sc-icon name="paypal" style="font-size: 56px; line-height:1; height: 28px;"></sc-icon>';
94 }
95 if ( ! empty( $invoice->payment_intent->payment_method->card->brand ) ) {
96 return '<sc-cc-logo style="font-size: 32px; line-height:1;" brand="' . esc_html( $invoice->payment_intent->payment_method->card->brand ) . '"></sc-cc-logo>';
97 }
98
99 return $invoice->payment_intent->processor_type ?? '-';
100 }
101
102 /**
103 * Define which columns are hidden
104 *
105 * @return Array
106 */
107 public function get_hidden_columns() {
108 return array();
109 }
110
111 /**
112 * Define the sortable columns
113 *
114 * @return Array
115 */
116 public function get_sortable_columns() {
117 return array( 'title' => array( 'title', false ) );
118 }
119
120 /**
121 * Get the table data
122 *
123 * @return Array
124 */
125 protected function table_data() {
126 return Invoice::where(
127 [
128 'status' => $this->getStatus(),
129 ]
130 )->with( [ 'charge', 'customer', 'payment_intent', 'payment_intent.payment_method', 'payment_method.card' ] )
131 ->paginate(
132 [
133 'per_page' => $this->get_items_per_page( 'invoices' ),
134 'page' => $this->get_pagenum(),
135 ]
136 );
137 }
138
139 /**
140 * Get the archive query status.
141 *
142 * @return boolean|null
143 */
144 public function getStatus() {
145 $status = sanitize_text_field( wp_unslash( $_GET['status'] ?? 'paid' ) );
146 if ( 'paid' === $status ) {
147 return [ 'paid', 'completed' ];
148 }
149 if ( 'incomplete' === $status ) {
150 return [ 'finalized' ];
151 }
152 if ( 'all' === $status ) {
153 return [];
154 }
155 return $status ? [ esc_html( $status ) ] : [];
156 }
157
158 /**
159 * Handle the total column
160 *
161 * @param \SureCart\Models\Invoice $invoice Invoice Model.
162 *
163 * @return string
164 */
165 public function column_total( $invoice ) {
166 return '<sc-format-number type="currency" currency="' . strtoupper( esc_html( $invoice->currency ) ) . '" value="' . (float) $invoice->amount_due . '"></sc-format-number>';
167 }
168
169 /**
170 * Handle the total column
171 *
172 * @param \SureCart\Models\Invoice $invoice Invoice model.
173 *
174 * @return string
175 */
176 public function column_date( $invoice ) {
177 return '<sc-format-date date="' . (int) $invoice->updated_at . '" type="timestamp" month="short" day="numeric" year="numeric" hour="numeric" minute="numeric"></sc-format-date>';
178 }
179
180 /**
181 * Render the "Redeem By"
182 *
183 * @param string $timestamp Redeem timestamp.
184 * @return string
185 */
186 public function get_expiration_string( $timestamp = '' ) {
187 if ( ! $timestamp ) {
188 return '';
189 }
190 // translators: coupon expiration date.
191 return sprintf( __( 'Valid until %s', 'surecart' ), date_i18n( get_option( 'date_format' ), $timestamp / 1000 ) );
192 }
193
194 /**
195 * Handle the status
196 *
197 * @param \SureCart\Models\Invoice $invoice Order Model.
198 *
199 * @return string
200 */
201 public function column_status( $invoice ) {
202 if ( ! empty( $invoice->charge->fully_refunded ) ) {
203 return '<sc-tag type="danger">' . __( 'Refunded', 'surecart' ) . '</sc-tag>';
204 }
205 return '<sc-order-status-badge status="' . esc_attr( $invoice->status ) . '"></sc-order-status-badge>';
206 }
207
208 /**
209 * Name of the coupon
210 *
211 * @param \SureCart\Models\Promotion $promotion Promotion model.
212 *
213 * @return string
214 */
215 public function column_invoice( $invoice ) {
216 ob_start();
217 ?>
218 <a class="row-title" aria-label="<?php echo esc_attr__( 'Edit Order', 'surecart' ); ?>" href="<?php echo esc_url( \SureCart::getUrl()->edit( 'invoice', $invoice->id ) ); ?>">
219 <?php echo esc_html( sanitize_text_field( $invoice->number ?? $invoice->id ) ); ?>
220 </a>
221 <br />
222 <a aria-label="<?php echo esc_attr__( 'Edit Order', 'surecart' ); ?>" href="<?php echo esc_url( \SureCart::getUrl()->edit( 'invoice', $invoice->id ) ); ?>">
223 <?php
224 // translators: Customer name.
225 echo esc_html( $invoice->customer->name ?? $invoice->customer->email );
226 ?>
227 </a>
228 <?php
229
230 return ob_get_clean();
231 }
232 }
233