Files
old-new-wiaas/backend/app/plugins/wiaas/includes/admin/admin-supplier/class-wiaas-admin-supplier-orders.php
2018-12-03 00:52:04 +01:00

172 lines
5.4 KiB
PHP

<?php
/**
* Class Wiaas_Admin_Supplier_Orders
*/
class Wiaas_Admin_Supplier_Orders {
/**
* Displays list of orders from supplier
*
* Enables quick preview of each order
*
* This list of orders is achieved with customization of default order list for `shop_order` post
* by using hooks and filters to allow only data that suppliershould be able to see
*
*/
public static function init() {
add_filter('bulk_actions-edit-shop_order', array(__CLASS__, 'remove_bulk_actions_for_list_table_orders'), 999);
add_filter('woocommerce_admin_order_preview_actions', array(__CLASS__, 'remove_actions_from_order_preview'));
add_filter('woocommerce_admin_order_preview_line_items', array(__CLASS__, 'filter_order_items_for_order_preview'), 999, 2);
add_filter( 'woocommerce_admin_order_preview_line_item_columns', array(__CLASS__, 'customize_order_preview_columns'), 999);
add_filter( 'woocommerce_admin_order_preview_line_item_column_wiaas_simple_product_bundle', array(__CLASS__, 'render_bundled_item_bundle'), 10, 4);
add_filter('manage_shop_order_posts_columns', array(__CLASS__, 'columns_for_list_table_orders'), 999);
add_filter('manage_edit-shop_order_sortable_columns', array(__CLASS__, 'define_sortable_columns_for_list_table_orders'), 999);
add_action('manage_shop_order_posts_custom_column', array(__CLASS__, 'render_columns_for_list_table_orders'), 999, 2);
}
/**
* Remove all bulk actions for supplier
*
* @return array
*/
public static function remove_bulk_actions_for_list_table_orders() {
return array();
}
/**
* Remove actions from shop order preview modal so only data info is visible
*
* @return array
*/
public static function remove_actions_from_order_preview() {
return array();
}
/**
* Show only simple products from this supplier on order preview
*
* @param $order_items
* @param WC_Order $order
*
* @return array
*/
public static function filter_order_items_for_order_preview($order_items, $order) {
$user_organisation_id = Wiaas_User_Organization::get_user_organization_id(wp_get_current_user()->ID);
$order_items = $order->get_items();
$items = array();
foreach ($order_items as $key => $order_item) {
if (wc_pb_is_bundled_order_item($order_item)) {
$item_supplier_organization_id = absint($order_item['wiaas_supplier_organization_id']);
if ($item_supplier_organization_id === $user_organisation_id) {
$items[] = $order_item;
}
}
}
return $items;
}
public static function customize_order_preview_columns() {
return array(
'product' => __('Product', 'wiaas'),
'quantity' => __( 'Quantity', 'wiaas' ),
'wiaas_simple_product_bundle' => __( '', 'wiaas' )
);
}
public static function render_bundled_item_bundle($empty, $item, $item_id, $order) {
$html = '';
if (wc_pb_is_bundled_order_item($item) ) {
$container_order_item = wc_pb_get_bundled_order_item_container($item, $order);
if ( ! empty($container_order_item) ) {
return $container_order_item->get_name();
}
}
return $html;
}
/**
* Override default table columns so only supplier specific columns are visible
*
* @param $columns
*
* @return array
*/
public static function columns_for_list_table_orders($columns) {
$show_columns = array();
$show_columns['cb'] = $columns['cb'];
$show_columns['_wiaas_order_number'] = __( 'Order', 'wiaas' );
$show_columns['order_date'] = $columns['order_date'];
$show_columns['wiaas_reference'] = __( 'Location', 'wiaas' );
$show_columns['wiaas_customer'] = __( 'Customer', 'wiaas' );
$show_columns['order_status'] = $columns['order_status'];
$show_columns['shipping_address'] = $columns['shipping_address'];
return $show_columns;
}
/** Append supplier columns to table sortable columns
*
* @param $sortable_columns
*
* @return mixed
*/
public static function define_sortable_columns_for_list_table_orders($sortable_columns) {
$sortable_columns['_wiaas_order_number'] = 'ID';
return $sortable_columns;
}
/**
* Render supplier specific columns
*
* @param $column
* @param $order_id
*/
public static function render_columns_for_list_table_orders($column, $order_id) {
if ($column === '_wiaas_order_number') {
$order = wc_get_order($order_id);
$order_url = $entry_url = admin_url('admin.php?page=wiaas-order-delivery&id=' . $order->get_id());
if ( $order->get_status() !== 'trash' ) {
echo '<strong><a href="' . esc_url($order_url) . '">#' . esc_attr( $order->get_order_number() ) . '</a></strong>';
echo '<a href="#" class="order-preview" data-order-id="' . absint( $order->get_id() ) . '" title="' . esc_attr( __( 'Preview', 'wiaas' ) ) . '">' . esc_html( __( 'Preview', 'wiaas' ) ) . '</a>';
} else {
echo '<strong>#' . esc_attr( $order->get_order_number() ) . '</strong>';
}
}
}
}
Wiaas_Admin_Supplier_Orders::init();