__('Line Item', 'wp-ultimo'), // singular name of the listed records
'plural' => __('Line Items', 'wp-ultimo'), // plural name of the listed records
'ajax' => true // does this table support ajax?
));
} // end __construct;
/**
* Get the payment object.
*
* @since 2.0.0
* @return \WP_Ultimo\Models\Payment
*/
public function get_payment() {
$payment_id = wu_request('id');
return wu_get_payment($payment_id);
} // end get_payment;
/**
* Overrides the parent get_items to add a total line.
*
* @since 2.0.0
*
* @param integer $per_page Items per page. This gets overridden as well.
* @param integer $page_number The page number.
* @param boolean $count Return as count or not.
* @return array
*/
public function get_items($per_page = 5, $page_number = 1, $count = false) {
$payment = $this->get_payment();
$items = $payment->get_line_items();
if ($count) {
return count($items);
} // end if;
return $items;
} // end get_items;
/**
* Displays the name of the product and description being hired.
*
* @since 2.0.0
*
* @param \WP_Ultimo\Checkout\Line_Item $item Payment object.
* @return string
*/
public function column_service($item) {
if (!$item) {
return '--';
} // end if;
$url_atts = array(
'id' => $this->get_payment()->get_id(),
'line_item_id' => $item->get_id(),
);
$actions = array(
'edit' => sprintf('%s', __('Edit Item', 'wp-ultimo'), wu_get_form_url('edit_line_item', $url_atts), __('Edit', 'wp-ultimo')),
'delete' => sprintf('%s', __('Delete Item', 'wp-ultimo'), wu_get_form_url('delete_line_item', $url_atts), __('Delete', 'wp-ultimo')),
);
$html = sprintf('%s', $item->get_title());
$html .= sprintf('%s', $item->get_description());
return $html . $this->row_actions($actions);
} // end column_service;
/**
* Displays the tax rate for the item.
*
* @since 2.0.0
*
* @param \WP_Ultimo\Models\Payment $item Payment object.
* @return string
*/
public function column_unit_price($item) {
$html = wu_format_currency($item->get_unit_price());
$quantity = sprintf(__('Quantity: %s', 'wp-ultimo'), $item->get_quantity()); // phpcs:ignore
return $html . sprintf('%s', $quantity);
} // end column_unit_price;
/**
* Displays the tax rate for the item.
*
* @since 2.0.0
*
* @param \WP_Ultimo\Models\Payment $item Payment object.
* @return string
*/
public function column_tax_total($item) {
$html = wu_format_currency($item->get_tax_total());
$tax_rate = '';
if ($item->get_tax_type() === 'percentage' && $item->get_tax_rate()) {
$tax_rate = $item->get_tax_rate() . '%';
} // end if;
$tax_label = $item->get_tax_rate() ? ($item->get_tax_label() ? $item->get_tax_label() : __('Tax Applied', 'wp-ultimo')) : __('No Taxes Applied', 'wp-ultimo');
return $html . sprintf('%s (%s)', $tax_rate, $tax_label);
} // end column_tax_total;
/**
* Displays the tax rate for the item.
*
* @since 2.0.0
*
* @param \WP_Ultimo\Models\Payment $item Payment object.
* @return string
*/
public function column_discounts_total($item) {
$html = wu_format_currency($item->get_discount_total());
$tax_rate = '';
if ($item->get_discount_type() === 'percentage' && $item->get_discount_rate()) {
$tax_rate = $item->get_discount_rate() . '%';
} // end if;
$tax_label = $item->get_discount_rate() ? ($item->get_discount_label() ? $item->get_discount_label() : __('Discount', 'wp-ultimo')) : __('No discount', 'wp-ultimo');
return $html . sprintf('%s (%s)', $tax_rate, $tax_label);
} // end column_discounts_total;
/**
* Displays the total column.
*
* @since 2.0.0
*
* @param \WP_Ultimo\Models\Payment $item Payment object.
* @return string
*/
public function column_total($item) {
return wu_format_currency($item->get_total());
} // end column_total;
/**
* Displays the subtotal column.
*
* @since 2.0.0
*
* @param \WP_Ultimo\Models\Payment $item Payment object.
* @return string
*/
public function column_subtotal($item) {
return wu_format_currency($item->get_subtotal());
} // end column_subtotal;
/**
* Returns the list of columns for this particular List Table.
*
* @since 2.0.0
* @return array
*/
public function get_columns() {
$columns = array(
'service' => __('Service', 'wp-ultimo'),
'unit_price' => __('Unit Price', 'wp-ultimo'),
'discounts_total' => __('discounts', 'wp-ultimo'),
'subtotal' => __('Subtotal', 'wp-ultimo'),
'tax_total' => __('Taxes', 'wp-ultimo'),
'total' => __('Total', 'wp-ultimo'),
);
return $columns;
} // end get_columns;
/**
* Leaves no sortable items on the columns.
*
* @since 2.0.0
* @return array
*/
public function get_sortable_columns() {
return array();
} // end get_sortable_columns;
} // end class Line_Item_List_Table;