__('Payment', 'wp-multisite-waas'),
'plural' => __('Payments', 'wp-multisite-waas'),
'ajax' => true,
'add_new' => [
'url' => wu_get_form_url('add_new_payment'),
'classes' => 'wubox',
],
]
);
}
/**
* Adds the extra search field when the search element is present.
*
* @since 2.0.0
* @return array
*/
public function get_extra_query_fields() {
$_filter_fields = parent::get_extra_query_fields();
$_filter_fields['membership_id'] = wu_request('membership_id', false);
$_filter_fields['customer_id'] = wu_request('customer_id', false);
$_filter_fields['parent_id__in'] = ['0', 0, '', null];
return $_filter_fields;
}
/**
* Displays the payment reference code.
*
* @since 2.0.0
*
* @param \WP_Ultimo\Models\Payment $item Payment object.
* @return string
*/
public function column_hash($item) {
$url_atts = [
'id' => $item->get_id(),
];
$code = sprintf('%s', wu_network_admin_url('wp-ultimo-edit-payment', $url_atts), $item->get_hash());
$actions = [
'edit' => sprintf('%s', wu_network_admin_url('wp-ultimo-edit-payment', $url_atts), __('Edit', 'wp-multisite-waas')),
'delete' => sprintf(
'%s',
__('Delete', 'wp-multisite-waas'),
wu_get_form_url(
'delete_modal',
[
'model' => 'payment',
'id' => $item->get_id(),
]
),
__('Delete', 'wp-multisite-waas')
),
];
$html = "{$code}";
return $html . $this->row_actions($actions);
}
/**
* Displays the membership photo and special status.
*
* @since 2.0.0
*
* @param WP_Ultimo\Models\Payment $item Payment object.
* @return string
*/
public function column_status($item) {
$label = $item->get_status_label();
$class = $item->get_status_class();
return "{$label}";
}
/**
* Returns the number of subscriptions owned by this membership.
*
* @since 2.0.0
*
* @param \WP_Ultimo\Models\Payment $item Payment object.
* @return string
*/
public function column_product($item) {
$product = $item->get_product();
if ( ! $product) {
return __('No product found', 'wp-multisite-waas');
}
$url_atts = [
'product_id' => $product->get_id(),
];
$actions = [
'view' => sprintf('%s', wu_network_admin_url('wp-ultimo-edit-product', $url_atts), __('View', 'wp-multisite-waas')),
];
$html = $product->get_name();
return $html . $this->row_actions($actions);
}
/**
* Displays the column for the total amount of the payment.
*
* @since 2.0.0
*
* @param \WP_Ultimo\Models\Payment $item Payment object.
* @return string
*/
public function column_total($item) {
$gateway = wu_slug_to_name($item->get_gateway());
return wu_format_currency($item->get_total()) . "{$gateway}";
}
/**
* Returns the list of columns for this particular List Table.
*
* @since 2.0.0
* @return array
*/
public function get_columns() {
$columns = [
'cb' => '',
'hash' => wu_tooltip(__('Reference Code', 'wp-multisite-waas'), 'dashicons-wu-hash wu-text-xs'),
'status' => __('Status', 'wp-multisite-waas'),
'customer' => __('Customer', 'wp-multisite-waas'),
'membership' => __('Membership', 'wp-multisite-waas'),
'total' => __('Total', 'wp-multisite-waas'),
'date_created' => __('Created at', 'wp-multisite-waas'),
'id' => __('ID', 'wp-multisite-waas'),
];
return $columns;
}
/**
* Returns the filters for this page.
*
* @since 2.0.0
*/
public function get_filters(): array {
return [
'filters' => [
/**
* Status
*/
'status' => [
'label' => __('Status', 'wp-multisite-waas'),
'options' => [
'pending' => __('Pending', 'wp-multisite-waas'),
'completed' => __('Completed', 'wp-multisite-waas'),
'refund' => __('Refund', 'wp-multisite-waas'),
'partial' => __('Partial', 'wp-multisite-waas'),
'failed' => __('Failed', 'wp-multisite-waas'),
],
],
/**
* Gateway
*/
'gateway' => [
'label' => __('Gateway', 'wp-multisite-waas'),
'options' => [
'free' => __('Free', 'wp-multisite-waas'),
'manual' => __('Manual', 'wp-multisite-waas'),
'paypal' => __('Paypal', 'wp-multisite-waas'),
'stripe' => __('Stripe', 'wp-multisite-waas'),
],
],
],
'date_filters' => [
/**
* Created At
*/
'date_created' => [
'label' => __('Created At', 'wp-multisite-waas'),
'options' => $this->get_default_date_filter_options(),
],
],
];
}
/**
* Returns the pre-selected filters on the filter bar.
*
* @since 2.0.0
* @return array
*/
public function get_views() {
return [
'all' => [
'field' => 'status',
'url' => add_query_arg('status', 'all'),
'label' => __('All Payments', 'wp-multisite-waas'),
'count' => 0,
],
Payment_Status::COMPLETED => [
'field' => 'status',
'url' => add_query_arg('status', Payment_Status::COMPLETED),
'label' => __('Completed', 'wp-multisite-waas'),
'count' => 0,
],
Payment_Status::PENDING => [
'field' => 'status',
'url' => add_query_arg('status', Payment_Status::PENDING),
'label' => __('Pending', 'wp-multisite-waas'),
'count' => 0,
],
Payment_Status::PARTIAL_REFUND => [
'field' => 'status',
'url' => add_query_arg('status', Payment_Status::PARTIAL_REFUND),
'label' => __('Partially Refunded', 'wp-multisite-waas'),
'count' => 0,
],
Payment_Status::REFUND => [
'field' => 'status',
'url' => add_query_arg('status', Payment_Status::REFUND),
'label' => __('Refunded', 'wp-multisite-waas'),
'count' => 0,
],
Payment_Status::FAILED => [
'field' => 'status',
'url' => add_query_arg('status', Payment_Status::FAILED),
'label' => __('Failed', 'wp-multisite-waas'),
'count' => 0,
],
];
}
}